// ==UserScript== // @name 全网影视收藏助手 // @namespace FBin001-JVideoCollector // @version 2.0.1 // @description 跨站点影视追剧收藏工具:追剧片单、想看/已看标记,自动记录观看集数与播放进度,海报墙浏览,豆瓣评分,全网搜索与跨站直达,站点换域名也能照常跳转。支持低端影视(低调影视/ddrk)、厂长资源(czzy)、嘀嗒影视、韩剧TV(hanjuc)、LIBVIO、毒舌电影、注视影视、片库、开心影院、追影、太乙电影、极速追剧、懂片帝、韩剧网等站点 video watchlist drama tracker // @author FBin001 // @match *://*/* // @match *://*.didahd.xyz/* // @match *://*.4kcz.com/* // @match *://*.czzy.top/* // @match *://*.cz4k.com/* // @match *://*.hanjuc.com/* // @match *://*.hantv.net/* // @match *://*.hantvz.com/* // @match *://*.ddys.app/* // @match *://*.ddys.ai/* // @match *://*.libvio.host/* // @match *://*.libvio.mov/* // @match *://*.libvios.com/* // @match *://*.libhd.com/* // @match *://*.libviobd.com/* // @match *://*.libvio.in/* // @match *://*.libvio.io/* // @match *://*.duse2.com/* // @match *://*.duse3.com/* // @match *://*.duse4.com/* // @match *://*.dushe3.app/* // @match *://*.dushe05.com/* // @match *://*.dushe06.com/* // @match *://*.gaze.red/* // @match *://*.gazes.store/* // @match *://*.gazes.top/* // @match *://*.gaze.show/* // @match *://*.gazes.host/* // @include /^https?:\/\/([^/]*\.)?didahd\./ // @include /^https?:\/\/([^/]*\.)?(4kcz|czzy|cz4k)\./ // @include /^https?:\/\/([^/]*\.)?(hantv[a-z]?|hanju[a-z])\./ // @include /^https?:\/\/([^/]*\.)?ddys\./ // @include /^https?:\/\/([^/]*\.)?(libvio|libvios|libviobd|libhd)\./ // @include /^https?:\/\/([^/]*\.)?dush?e\d+\./ // @include /^https?:\/\/([^/]*\.)?gazes?\d*\./ // @connect * // @connect www.didahd.xyz // @connect www.4kcz.com // @connect czzy.top // @connect www.cz4k.com // @connect hanjuc.com // @connect hantv.net // @connect www.hantv.net // @connect hantvz.com // @connect www.hantvz.com // @connect ddys.app // @connect ddys.ai // @connect libvio.host // @connect www.libvio.mov // @connect www.libvios.com // @connect www.libhd.com // @connect libviobd.com // @connect www.libvio.in // @connect www.libvio.io // @connect www.duse2.com // @connect www.duse3.com // @connect www.duse4.com // @connect www.dushe3.app // @connect www.dushe05.com // @connect www.dushe06.com // @connect gaze.red // @connect gazes.store // @connect gazes.top // @connect gaze.show // @connect gazes.host // @connect 4k01.pianku.online // @connect 4k.pianku.online // @connect 4k02.pianku.online // @connect 4k03.pianku.online // @connect tv.time1080.xyz // @connect zndy.top // @connect zhuiying3.cc // @connect www.vv3nwjk.com // @connect jisuzhuiju.com // @connect www.kankanya.me // @connect www.kxyy1.cc // @connect dmxq30.com // @connect gitee.com // @connect raw.giteeusercontent.com // @connect api.douban.com // @connect movie.douban.com // @connect frodo.douban.com // @license MIT // @grant GM_setValue // @grant GM_getValue // @grant GM_addValueChangeListener // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @run-at document-start // ==/UserScript== (()=>{var gf=Object.defineProperty; var o=(t,e)=>gf(t,"name",{value:e,configurable:true}); function ar(t,e){return t.replace(/\{\{(\w+)\}\}/g,(n,r)=>e[r]??"")} o(ar,"interpolate"); var bf={"&":"&","<":"<",">":">",'"':""","'":"'"}; function ht(t){if(t===void 0||t===null)return"";return String(t).replace(/[&<>"']/g,e=>bf[e])} o(ht,"escapeHtml"); function xn(t){const e=String(t||"").trim();return/^(https?:\/\/|data:image\/|blob:)/i.test(e)?e:""} o(xn,"safeUrl"); function en(t){const e=typeof t==="string"?t:t?JSON.stringify(t)||"":"";try{return new TextEncoder().encode(e).length}catch(n){return e.length}} o(en,"utf8Bytes"); function Ht(t){const e=Number(t)||0;if(e>=1024*1024)return(e/1024/1024).toFixed(2)+"MB";return(e/1024).toFixed(1)+"KB"} o(Ht,"formatBytes"); function Tc(t){if(!t)return"";const e=new Date(t);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${n(e.getMonth()+1)}-${n(e.getDate())} ${n(e.getHours())}:${n(e.getMinutes())}`} o(Tc,"formatDateShort"); function Ac(t){if(!t)return"";const e=new Date(t);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${e.getFullYear()}-${n(e.getMonth()+1)}-${n(e.getDate())} ${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}`} o(Ac,"formatDateFull"); function xe(t){if(!t||t<=0)return"";const e=Math.floor(t);const n=o(r=>String(r).padStart(2,"0"),"pad");return`${n(Math.floor(e/3600))}:${n(Math.floor(e%3600/60))}:${n(e%60)}`} o(xe,"formatDuration"); function nn(t){return(t||"").replace(/\s*[((][^))]*[))]\s*/g,"").trim()} o(nn,"stripParens"); function sr(t){if(t===null||t===void 0)return"";return typeof t==="string"?t:String(t)} o(sr,"asText"); var kc={\u96F6:0,\u4E00:1,\u4E8C:2,\u4E24:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9}; function yf(t){let e=0,n=0,r=false;for(const i of String(t)){if(i in kc){n=kc[i];r=true}else if(i==="\u5341"){e+=(n||1)*10;n=0;r=true}else if(i==="\u767E"){e+=(n||1)*100;n=0;r=true}else return NaN}return r?e+n:NaN} o(yf,"cnToNumber"); function Lo(t){const e=String(t==null?"":t);if(/^[0-9]+$/.test(e))return Number(e);return yf(e)} o(Lo,"epNumber"); var cr="0-9\u96F6\u4E00\u4E8C\u4E24\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u767E"; function wn(t){const e=sr(t).trim().match(new RegExp(`^\u7B2C?\\s*([${cr}]+)\\s*\u96C6?$`));if(!e)return"";const n=Lo(e[1]);return n>0?`\u7B2C${n}\u96C6`:""} o(wn,"numberToEpisode"); function lr(t){const e=sr(t).trim();return wn(e)||e} o(lr,"episodeLabel"); function Sn(t){const e=sr(t).trim();return new RegExp(`^\u7B2C\\s*[${cr}]+\\s*\u96C6$`).test(e)||/^S\d+E\d+$/i.test(e)||/^S\d+\s*第\s*\d+\s*集$/i.test(e)} o(Sn,"isEpisodeLabel"); function qt(t){const e=sr(t).trim();const n=o(d=>String(d).padStart(2,"0"),"pad");const r=e.match(/^S(\d{1,2})\s*第\s*(\d{1,3})\s*集$/i)||e.match(/^S(\d{1,2})E(\d{1,3})$/i);if(r)return`S${n(r[1])}E${n(r[2])}`;const i=e.match(/^S(\d{1,2})$/i);if(i)return`S${n(i[1])}`;const c=e.match(new RegExp(`^\u7B2C?\\s*([${cr}]+)\\s*\u96C6?$`));if(c){const d=Lo(c[1]);return d>0?`E${n(d)}`:e}const a=e.match(new RegExp(`\u7B2C\\s*([${cr}]+)\\s*\u96C6\\s*$`));if(!a)return e;const s=Lo(a[1]);if(!(s>0))return e;const l=Co(J(e));if(l)return`S${n(l)}E${n(s)}`;const p=e.slice(0,a.index).trim();return p?`${p} E${n(s)}`:`E${n(s)}`} o(qt,"formatEpisodeShort"); function Lc(t){const e=(t||"").match(/background-image:\s*url\(["']?([^"')]+)["']?\)/i);return e?e[1]:""} o(Lc,"parseBgImage"); function Et(t){if(!t)return true;if(/load\.gif|loading\.gif|placeholder|^data:image|\.svg$/i.test(t))return true;if(/favicon|(?:^|[/_.-])(?:site[-_]?)?(?:logo|ico|icon|default|blank|loading|placeholder|spacer|avatar|no-?(?:img|pic|poster|cover|image))\d*[.\-_/]/i.test(t))return true;if(/(?:^|[/_.-])(?:banner|ads?|adv)\//i.test(t))return true;return false} o(Et,"isPlaceholderImage"); var Rt={OK:"ok",MISSING:"missing",BROKEN:"broken",ABANDONED:"abandoned"}; var ur={PAGE:"page"}; function xf(t){const e=t&&t.coverState;return e===Rt.BROKEN||e===Rt.MISSING||e===Rt.ABANDONED} o(xf,"isCoverUnusable"); function En(t){return!!(t&&t.cover&&!Et(t.cover)&&!xf(t))} o(En,"isCoverUsable"); var wf=/更新至|更新到|全集|完结|在线观看|在线播放|免费观看|抢先版|正版资源|未删减|高清片|中字/g; var Sf=/(4k|8k|1080p?|2160p?|720p?|hdr10?|hdr|dv|杜比视界|杜比全景声|atmos|remux|blu-?ray|bdrip|web-?dl|webrip|hdts|hdtv|hdrip|x26[45]|h\.?26[45])/gi; var Ef=/[\u4e00-\u9fff0-9][::||]+/; var _f=/[\u4e00-\u9fff][\s\-()()【】\[\]]+/; var kf=2; var Tf=/[!?!?]+\s*[0-9]{1,2}$/; function Af(t){return t.replace(Tf,"").trim()} o(Af,"stripSequelSuffix"); function Lf(t){const e=Ef.exec(t);const n=_f.exec(t);let r=null;if(e&&n)r=e.index<=n.index?e:n;else r=e||n;if(!r)return t;const i=t.slice(0,r.index+1).trim();return i.length>=kf?i:t} o(Lf,"headOfName"); function dr(t){const e=String(t||"").replace(/\s+/g," ").trim();if(!e)return[];const n=Af(Lf(e));return[e,n,n.replace(wf," ").replace(Sf," ")].map(r=>r.replace(/\s+/g," ").trim()).filter((r,i,c)=>r.length>=2&&c.indexOf(r)===i)} o(dr,"searchVariants"); var Cf={"\u2160":"1","\u2161":"2","\u2162":"3","\u2163":"4","\u2164":"5","\u2165":"6","\u2166":"7","\u2167":"8","\u2168":"9","\u2169":"10","\u216A":"11","\u216B":"12","\u2170":"1","\u2171":"2","\u2172":"3","\u2173":"4","\u2174":"5","\u2175":"6","\u2176":"7","\u2177":"8","\u2178":"9","\u2179":"10","\u217A":"11","\u217B":"12"}; var yn={"\u3007":0,"\u4E00":1,"\u4E8C":2,"\u4E09":3,"\u56DB":4,"\u4E94":5,"\u516D":6,"\u4E03":7,"\u516B":8,"\u4E5D":9}; function Mf(t){if(t==="\u5341")return 10;const e=/^([一二三四五六七八九])?十([一二三四五六七八九])?$/.exec(t);if(e)return(e[1]?yn[e[1]]:1)*10+(e[2]?yn[e[2]]:0);if(/^[〇一二三四五六七八九]+$/.test(t)){return Number(Array.from(t).map(n=>yn[n]).join(""))}return yn[t]!=null?yn[t]:null} o(Mf,"cnNumToInt"); var If=/[\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e\u2018\u2019\u201c\u201d\u2020-\u2027\u3000-\u3006\u3008-\u303f\uffe5]/g; function J(t){if(!t)return"";let e=String(t);e=e.replace(/[!-~]/g,n=>String.fromCharCode(n.charCodeAt(0)-65248));e=e.replace(/[Ⅰ-Ⅻⅰ-ⅻ]/g,n=>Cf[n]||n);e=e.replace(/第([〇一二三四五六七八九十]+)(季|集)/g,(n,r,i)=>{const c=Mf(r);return c?"\u7B2C"+c+i:n});e=e.replace(If,"").toLowerCase();e=e.replace(/([\u4e00-\u9fff])0*(\d{1,2})$/,(n,r,i)=>r+"s"+Number(i));e=e.replace(/第0*(\d{1,2})季/g,(n,r)=>"s"+Number(r));e=e.replace(/season0*(\d{1,2})/g,(n,r)=>"s"+Number(r));e=e.replace(/(^|[^a-z])s0*(\d{1,2})(?![a-z0-9])/g,(n,r,i)=>r+"s"+Number(i));return e} o(J,"normalizeName"); function Co(t){const e=t.match(/(^|[^a-z])s(\d{1,2})(?![a-z0-9])/);return e?Number(e[2]):null} o(Co,"seasonOf"); var Pf=6; function Mo(t){return t.replace(/(^|[^a-z])s\d{1,2}(?![a-z0-9])/g,"$1")} o(Mo,"stripSeason"); var Of=["\u7279\u522B\u7BC7","\u7279\u522B\u7248","\u7279\u522B\u5B63","\u756A\u5916\u7BC7","\u756A\u5916","\u5916\u4F20","\u524D\u4F20","\u540E\u4F20","\u5267\u573A\u7248","\u7535\u5F71\u7248","\u771F\u4EBA\u7248","\u91CD\u5236\u7248","ova","oad","sp"]; function Io(t){for(const e of Of){if(t.length>e.length&&t.endsWith(e)){return{base:t.slice(0,t.length-e.length),tag:e}}}return{base:t,tag:""}} o(Io,"splitSuffix"); function je(t,e){return Po(J(t),J(e))} o(je,"isSameName"); function Po(t,e){if(!t||!e)return false;if(t===e)return true;const n=Io(t);const r=Io(e);if(n.tag!==r.tag)return false;const i=n.base;const c=r.base;if(i===c)return true;const a=Co(i);const s=Co(c);const l=a===null&&s===1||a===1&&s===null;if(a!==s&&!l)return false;if(Mo(i)===Mo(c))return true;const p=i.length<=c.length?i:c;const d=p===i?c:i;return p.length>=Pf&&d.startsWith(p)} o(Po,"sameNormalizedName"); function Oo(){const t=new Map;function e(c){const a=c||"";let s=t.get(a);if(s)return s;const l=J(a);s={norm:l,stripped:l?Mo(Io(l).base):""};t.set(a,s);return s}o(e,"compile");function n(c,a){if(!c.norm||!a.norm)return false;if(c.norm===a.norm)return true;const s=c.stripped.length<=a.stripped.length?c.stripped:a.stripped;const l=s===c.stripped?a.stripped:c.stripped;return l.startsWith(s)}o(n,"mayMatch");function r(c,a){const s=e(a);if(!s.norm)return-1;for(let l=0;l{};if(we.some(r=>r.node===t))return()=>{};we.push({node:t,parent:e});if(!Ro){Ro=new MutationObserver(()=>{if(we.some(r=>!r.node.isConnected))Rf()});Ro.observe(document.body,{childList:true})}const n=we[we.length-1];return()=>{const r=we.indexOf(n);if(r>=0)we.splice(r,1)}} o(Se,"keepMounted"); function Rf(){we.forEach(({node:t,parent:e})=>{if(t.isConnected)return;const n=e&&e.isConnected?e:document.body;if(n&&n.isConnected)n.appendChild(t)})} o(Rf,"remountAll"); function Q(t){if(!t||!t.getAttribute)return"";const e=[t.getAttribute("data-original"),t.getAttribute("data-src"),t.getAttribute("data-lazy-src")];if(t.tagName==="IMG")e.push(t.getAttribute("src"),t.src);return e.find(n=>!Et(n))||""} o(Q,"pickImageSrc"); var Mc=".vc-preview-img"; var Cc="vc-preview-enter"; var _n=0; function Df(t){let e=document.querySelector(".vc-image-preview");if(!e){e=document.createElement("div");e.className="vc-image-preview";e.addEventListener("click",Do);document.body.appendChild(e)}if(t||!e.querySelector(Mc)){e.replaceChildren();[0,1].forEach(()=>{const n=document.createElement("img");n.className="vc-preview-img";n.alt="\u5C01\u9762\u9884\u89C8";e.appendChild(n)})}return e} o(Df,"ensurePreviewEl"); function Ic(t){return Array.from(t.querySelectorAll(Mc))} o(Ic,"previewLayers"); function Do(){const t=document.querySelector(".vc-image-preview");if(t)t.classList.remove("vc-show");_n++} o(Do,"closeImagePreview"); function No(t){const e=Df(true);_n++;if(t){const n=Ic(e);if(n[0]){n[0].classList.add("vc-active");n[0].src=t}}void e.offsetWidth;e.classList.add("vc-show")} o(No,"openImagePreview"); function qo(t){const e=document.querySelector(".vc-image-preview");if(!t||!e||!e.classList.contains("vc-show"))return;const n=Ic(e);const r=n.find(l=>l.classList.contains("vc-active"))||n[0];const i=n.find(l=>l!==r);if(!r||!i||r.getAttribute("src")===t)return;const c=++_n;const a=o(()=>{if(c!==_n)return;if(!e.classList.contains("vc-show"))return;i.classList.add(Cc);i.addEventListener("animationend",()=>i.classList.remove(Cc),{once:true});i.classList.add("vc-active");r.classList.remove("vc-active")},"swap");const s=new Image;s.onload=()=>{i.src=t;const l=typeof i.decode==="function"?i.decode().catch(()=>{}):Promise.resolve();l.then(()=>{if(c!==_n)return;requestAnimationFrame(()=>requestAnimationFrame(a))})};s.src=t} o(qo,"updateImagePreview"); var Nf=/^(?:豆瓣\s*[::]?\s*)?(\d+(?:\.\d+)?)\s*分?$/; var qf=/^豆瓣\s*[::]?\s*(\d+(?:\.\d+)?)\s*分?$/; function Pc(t){if(!t)return"";const e=Number(t[1]);if(!(e>0&&e<=10))return"";return String(e)} o(Pc,"scoreOf"); function pr(t){return Pc(Nf.exec(String(t||"").trim()))} o(pr,"parseDoubanScore"); function Fo(t){return Pc(qf.exec(String(t||"").trim()))} o(Fo,"parseDoubanLabeledScore"); function Bo(t){const e=/movie\.douban\.com\/subject\/(\d+)/.exec(String(t||""));return e?e[1]:""} o(Bo,"doubanSubjectId"); function jo(t){const e=Bo(t);return e?"https://movie.douban.com/subject/"+e+"/":""} o(jo,"doubanSubjectUrl"); function Ff(t){const e=t&&t.querySelector?t.querySelector('a[href*="movie.douban.com/subject/"]'):null;if(!e)return null;const n=jo(e.getAttribute("href"));if(!n)return null;return{score:pr(e.textContent),url:n}} o(Ff,"findDoubanLink"); function Bf(t){if(!t||!t.querySelectorAll)return null;const e=t.querySelectorAll("span, div, a, em, p, h1, h2, h3, h4, h5");for(const n of e){if(n.children.length)continue;const r=Fo(n.textContent);if(r)return{score:r}}return null} o(Bf,"findByDoubanText"); function Ut(t,e,n){if(!t)return null;let r=t;if(t===document){if(!n)return null;r=document.querySelector(n);if(!r)return null}const i=Ff(r);if(i&&i.score)return i;if(Array.isArray(e)){for(const a of e){const s=r.querySelector(a);const l=pr(s&&s.textContent);if(l)return{score:l,url:i?i.url:""}}}const c=Bf(r);if(c)return{score:c.score,url:i?i.url:""};return null} o(Ut,"readDoubanRating"); var jf=60; var fr=2; function rn(t,e,n){const r=e.getBoundingClientRect();const i=t.getBoundingClientRect();let c=0;t.querySelectorAll(n).forEach(a=>{const s=a.getBoundingClientRect();if(!s.width||!s.height)return;if(s.bottom-i.top>jf)return;const l=s.leftr.left-fr&&s.topr.top-fr;if(l)c=Math.max(c,s.bottom)});return c?Math.round(c-i.top):0} o(rn,"overlappingTagBottom"); function Oc(t){if(!t)return false;const e=o(()=>{const n=document.createElement("textarea");n.value=t;n.style.position="fixed";n.style.opacity="0";document.body.appendChild(n);n.select();let r=false;try{r=document.execCommand("copy")}catch(i){r=false}document.body.removeChild(n);return r},"fallback");if(navigator.clipboard&&window.isSecureContext){navigator.clipboard.writeText(t).catch(()=>e());return true}return e()} o(Oc,"copyText"); var Rc={id:"dida",name:"\u5600\u55D2\u5F71\u89C6",domains:["www.didahd.xyz"],matches:["*://*.didahd.xyz/*"],include:["/^https?:\\/\\/([^/]*\\.)?didahd\\./"],searchPath:o(t=>"/search/-------------.html?wd="+encodeURIComponent(t),"searchPath"),pageType(){const t=location.pathname;if(t.startsWith("/detail/"))return"detail";if(t.startsWith("/play/"))return"play";if(t.startsWith("/search/"))return"search";if(document.querySelector(".myui-vodlist"))return"list";return"other"},listCardSelector:".myui-vodlist__box, #searchList li",getListCards(){const t=[];const e=new Set;document.querySelectorAll(".myui-vodlist__box").forEach(n=>{if(e.has(n))return;const r=n.querySelector("a.myui-vodlist__thumb");if(!r)return;const i=(r.getAttribute("title")||"").trim();const c=Q(r)||Q(r.querySelector("img"));if(i){e.add(n);t.push({element:n,name:i,cover:c,path:r.pathname})}});document.querySelectorAll("#searchList li").forEach(n=>{if(e.has(n))return;const r=n.querySelector("a.myui-vodlist__thumb");if(!r)return;const i=n.querySelector("a.searchkey");const c=((i==null?void 0:i.textContent)||r.getAttribute("title")||"").trim();const a=Q(r)||Q(r.querySelector("img"));if(c){e.add(n);t.push({element:n,name:c,cover:a,path:r.pathname})}});return t},getDetailInfo(){const t=document.querySelector(".myui-content__thumb img");const e=document.querySelector(".myui-content__detail .title");const n=document.querySelector(".myui-content__thumb a");const r=((e==null?void 0:e.textContent)||"").trim();if(!r)return null;const i=Q(t);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getSiteRating(t){if(!t||t===document){return Ut(document,["#rating .branch",".branch"],".myui-content__detail, #desc")}return Ut(t,[".pic-tag-right",".pic-tag"])},getPlayInfo(){const t=document.querySelector("#player-sidebar .myui-panel__head h3.title");let e="";if(t){const n=t.cloneNode(true);n.querySelectorAll("small").forEach(r=>r.remove());e=n.textContent.trim()}if(!e)return null;return{name:e,path:location.pathname}}}; var Dc={id:"czzy",name:"\u5382\u957F\u8D44\u6E90",domains:["www.4kcz.com","czzy.top","www.cz4k.com"],matches:["*://*.4kcz.com/*","*://*.czzy.top/*","*://*.cz4k.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?(4kcz|czzy|cz4k)\\./"],searchPath:o(t=>"/#vc-search="+encodeURIComponent(t),"searchPath"),onPageReady(){const t=location.hash.match(/vc-search=([^&]+)/);if(!t)return;const e=decodeURIComponent(t[1]);let n=0;const r=o(()=>{if(n++>10)return;const i=document.querySelector("#sosuobox form, form.w-search-form");const c=i==null?void 0:i.querySelector("input[name]");const a=i==null?void 0:i.getAttribute("action");if(i&&c&&a){const s=new URL(a,location.href);s.searchParams.set(c.getAttribute("name"),e);location.href=s.href;return}setTimeout(r,300)},"trySearch");r()},pageType(){const t=location.pathname;if(t.startsWith("/movie/"))return"detail";if(t.startsWith("/v_play/"))return"play";if(/^\/(boss1O1|nimasile)\b/.test(t))return"search";if(document.querySelector(".bt_img, .bt_image"))return"list";return"other"},listCardSelector:".bt_img li, .bt_image li",statusOffset(t,e){const n=rn(t,e,".furk, .jidi");return n?{top:n+6,left:8}:null},getSiteRating(t){if(!t||t===document){return Ut(document,[".dbpingfen"],".mi_ne_kd.dypre")}return Ut(t,[".rating"])},getListCards(){const t=[];const e=new Set;document.querySelectorAll(".bt_img li, .bt_image li").forEach(n=>{if(e.has(n))return;const r=n.querySelector("a");const i=n.querySelector("img");const c=n.querySelector(".dytit");if(!r)return;const a=((c==null?void 0:c.textContent)||(i==null?void 0:i.alt)||"").trim();const s=Q(i);if(a){e.add(n);t.push({element:n,name:a,cover:s,path:r.pathname})}});return t},getDetailInfo(){const t=document.querySelector(".dyimg img");const e=document.querySelector(".dytext h1");const n=document.querySelector(".paly_list_btn a");const r=((e==null?void 0:e.textContent)||"").trim();if(!r)return null;const i=Q(t);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getPlayInfo(){const t=document.querySelector(".ptit a");if(!t)return null;const e=(t.textContent||"").trim();if(!e)return null;return{name:e,path:t.pathname}}}; var $o=".myui-vodbox-content"; var Nc={id:"hantv",name:"\u97E9\u5267tv",domains:["hanjuc.com","hantv.net","www.hantv.net","hantvz.com","www.hantvz.com"],matches:["*://*.hanjuc.com/*","*://*.hantv.net/*","*://*.hantvz.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?(hantv[a-z]?|hanju[a-z])\\./"],searchPath:o(t=>"/vodsearch.html?wd="+encodeURIComponent(t),"searchPath"),pageType(){const t=location.pathname;if(t.startsWith("/nf-detail/"))return"detail";if(t.startsWith("/nf-play/"))return"play";if(t.startsWith("/vodsearch"))return"search";if(document.querySelector($o))return"list";return"other"},listCardSelector:$o,getListCards(){const t=[];document.querySelectorAll($o).forEach(e=>{var i;const n=e.querySelector('a[href*="/nf-detail/"]');if(!n)return;const r=(((i=n.querySelector(".card-info .title"))==null?void 0:i.textContent)||"").trim();if(!r)return;t.push({element:e.querySelector(".content-card")||n,name:r,cover:Q(n.querySelector(".myui-vodlist__thumb img")),path:n.pathname})});return t},statusOffset(t,e){const n=rn(t,e,".tag-box");return n?{top:n+6,left:8}:null},getDetailInfo(){var n;const t=document.querySelector(".vod-detail-box");if(!t)return null;const e=(((n=t.querySelector(".title-box h1.title"))==null?void 0:n.textContent)||"").trim();if(!e)return null;return{name:e,cover:Q(t.querySelector(".img-box img")),path:location.pathname}},getPlayInfo(){var r;const t=document.querySelector("h1.title_name");const e=t==null?void 0:t.closest('a[href*="/nf-detail/"]');const n=((t==null?void 0:t.textContent)||"").trim()||(((r=document.querySelector(".player-head .video_title"))==null?void 0:r.textContent)||"").trim();if(!n)return null;return{name:n,path:e?e.pathname:$f()}}}; function $f(){var e;const t=(e=location.pathname.match(/^\/nf-play\/(\d+)/))==null?void 0:e[1];return t?`/nf-detail/${t}.html`:location.pathname} o($f,"detailPathFromPlay"); var zo=15; var qc=200; var Fc=3e3; var Bc=120; var jc=400; var $c=300; var zc=120; var Hc="vc_debug_log"; var Uc=["javbus.com","www.javbus.com","javlibrary.com","www.javlibrary.com"]; var Vc="video_collector_drama_data"; var Gc="video_collector_drama_position"; var Ho="video_collector_drama_fab_pos"; var kn="video_collector_drama_xjump_pos"; var Tn="video_collector_drama_img_cache"; var An="vc_drama_play_tabs_alive"; var Kc="video_collector_drama_domain_alive"; var Yc="video_collector_drama_last_domain"; var $e="video_collector_drama_playback"; var Uo="video_collector_drama_playback_bak"; var on="video_collector_drama_meta"; var vr="video_collector_drama_meta_hits"; var Vo="video_collector_drama_meta_block"; var Wc="https://frodo.douban.com/api/v2/search/movie?q="; var Xc="0ac44ae016490db2204ce0a042db2916"; var Jc="MicroMessenger/"; var Zc="https://servicewechat.com/wx2f9b06c1de1ccfca"; var Qc="https://movie.douban.com/j/subject_abstract?subject_id="; var ta=/异常请求|检测到有异常请求|登录豆瓣|验证码|安全验证|人机验证|滑动验证/i; var Go=10; var Ko=.05; var ea=3e4; var na=5; var ra=30; var mr="video_collector_drama_player_probe"; var Yo="https://raw.giteeusercontent.com/xiaobin90/jVideoCollector/raw/main/sites-domains.json"; var hr="video_collector_drama_domain_list"; var Ln="video_collector_drama_web_search_excluded"; var Cn=[{id:"pianku",name:"\u7247\u5E93",domains:["4k01.pianku.online","4k.pianku.online","4k02.pianku.online","4k03.pianku.online"],searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath")},{id:"shiguang",name:"\u62FE\u5149\u5F71\u89C6",domains:["tv.time1080.xyz"],fold:true,searchPath:o(t=>"/search.php?wd="+encodeURIComponent(t),"searchPath")},{id:"zndy",name:"\u5B85\u7537\u5F71\u89C6",domains:["zndy.top"],fold:true,searchPath:o(t=>"/index.php?wd="+encodeURIComponent(t)+"&source=official","searchPath")},{id:"zhuiying",name:"\u8FFD\u5F71",domains:["zhuiying3.cc"],fold:true,searchPath:o(t=>"/vod/search/wd/"+encodeURIComponent(t)+".html","searchPath")},{id:"jinpai",name:"\u91D1\u724C\u5F71\u9662",domains:["www.vv3nwjk.com"],fold:true,searchPath:o(t=>"/vod/search/"+encodeURIComponent(t),"searchPath")},{id:"jisu",name:"\u6781\u901F\u8FFD\u5267",domains:["jisuzhuiju.com"],fold:true,searchPath:o(t=>"/search?keyword="+encodeURIComponent(t),"searchPath")},{id:"kankanya",name:"\u770B\u770B\u9E2D",domains:["www.kankanya.me"],fold:true,searchPath:o(t=>"/search/-------------.html?wd="+encodeURIComponent(t),"searchPath")},{id:"kxyy",name:"\u5F00\u5FC3\u5F71\u9662",domains:["www.kxyy1.cc"],fold:true,searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath")},{id:"dmxq",name:"\u5927\u7C73\u661F\u7403",domains:["dmxq30.com"],fold:true,searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath")}]; var ge="video_collector_drama_engine_enabled"; var gr="video_collector_drama_site_names"; var Wo="video_collector_drama_video_hosts"; var Jo=/第\s*(\d{1,2})\s*季/; var zf="v2"; var Xo="ddys_auto_node"; var Hf=/(ova|oad|特别篇|特别版|剧场版|番外|外传)/; function Mn(t){const e=String(t||"").match(/[((][^))]*[))]/g)||[];for(const n of e){const r=Jo.exec(n);if(r)return Number(r[1])}return 0} o(Mn,"seasonFromTitle"); function br(){const t=document.querySelector(".ddys-season-menu .ddys-season-tab.is-active");const e=t?Jo.exec(t.textContent||""):null;return e?Number(e[1]):0} o(br,"seasonFromTab"); function yr(t,e){const n=nn(t);return e?n+" \u7B2C"+e+"\u5B63":n} o(yr,"nameWithSeason"); function Uf(t,e){const n=t.querySelector(".title");const r=n?n.textContent||"":"";const i=J(r);if(!i||!e)return 0;if(Hf.test(i))return 0;if(i.indexOf(e)!==0)return 0;const c=/^(?:s(\d{1,2})|(\d{1,2}))(?!\d)/.exec(i.slice(e.length));return c?Number(c[1]||c[2]):1} o(Uf,"seasonOfBlock"); function oa(t,e,n){const r=t.filter(c=>Uf(c,n)===e);if(!r.length)return null;const i=r.filter(c=>!/part/.test(J((c.querySelector(".title")||{}).textContent||"")));return i[0]||r[0]} o(oa,"pickSeasonBlock"); var ia=["ddys.app","ddys.ai"]; function la(){try{const t=JSON.parse(GM_getValue($e,"{}"));return t&&typeof t==="object"?t:{}}catch(t){return{}}} o(la,"readRecords"); function Vf(t){const e=String(t||"");const n=/[Ss]\d{1,2}[Ee](\d{1,3})/.exec(e)||/第\s*(\d{1,3})\s*集/.exec(e);return n?Number(n[1]):0} o(Vf,"episodeNo"); function Gf(){const t=document.querySelector("script.ddys-playlist-data");if(!t)return[];try{return(JSON.parse(t.textContent||"{}").seasons||[]).map(e=>{const n=Jo.exec(String(e.title||""));return n?Number(n[1]):0}).filter(e=>e>0)}catch(e){return[]}} o(Gf,"allSeasons"); function Kf(t,e){const n=la();let r=null;for(const i of Gf()){if(i===t)continue;const c=n[yr(e,i)];if(!c)continue;const a=Vf(c[0]);if(!a)continue;const s=Number(c[5])||0;if(!r||s>r.at)r={season:i,episode:a,at:s}}return r} o(Kf,"seasonWithRecord"); function ca(){var i;if(new URLSearchParams(location.search).has("ep"))return"";const t=((i=document.querySelector(".post-title"))==null?void 0:i.textContent)||"";if(!t)return"";const e=br()||Mn(t);if(la()[yr(t,e)])return"";const n=Kf(e,t);if(!n)return"";const r="S"+String(n.season).padStart(2,"0")+"E"+String(n.episode).padStart(2,"0");return location.pathname+"?ep="+r} o(ca,"planSeasonSwitch"); function ua(t){const e=document.querySelector('.ddys-node-menu button[data-node-id="'+t+'"]');if(!e||e.disabled||e.classList.contains("is-active"))return;e.click()} o(ua,"clickNode"); function aa(){try{sessionStorage.setItem(Xo,zf)}catch(t){}} o(aa,"markAutoNode"); function sa(){let t="";try{t=sessionStorage.getItem(Xo)||"";sessionStorage.removeItem(Xo)}catch(e){return}if(!t)return;[0,300,800,1500,3e3].forEach(e=>setTimeout(()=>ua(t),e))} o(sa,"consumeAutoNode"); var da={id:"ddys",name:"\u4F4E\u7AEF\u5F71\u89C6",domains:ia,matches:["*://*.ddys.app/*","*://*.ddys.ai/*"],include:["/^https?:\\/\\/([^/]*\\.)?ddys\\./"],searchPath:o(t=>"/?s="+encodeURIComponent(t)+"&post_type=post","searchPath"),coverReferer:o((t,e)=>(e||"https://"+ia[0])+(t||"/"),"coverReferer"),trackPlaybackOnDetail:true,pageType(){if(new URLSearchParams(location.search).has("s"))return"search";if(document.querySelector(".post-title"))return"detail";if(document.querySelector(".post-box"))return"list";return"other"},listCardSelector:".post-box",getListCards(){const t=[];document.querySelectorAll(".post-box").forEach(e=>{const n=e.querySelector(".post-box-title a")||e.querySelector("a");if(!n)return;const r=e.querySelector(".post-box-title");const i=(r==null?void 0:r.textContent)||"";const c=yr(i,Mn(i));const a=e.querySelector(".post-box-image");const s=Lc((a==null?void 0:a.getAttribute("style"))||"")||Q(a==null?void 0:a.querySelector("img"));if(c){t.push({element:e,name:c,cover:s,path:n.pathname});if(s&&!e.dataset.vcDdysCoverBound){e.dataset.vcDdysCoverBound="1";e.addEventListener("click",()=>{try{sessionStorage.setItem("ddys_cover_"+nn(i),s)}catch(l){}})}}});return t},getDetailInfo(){var r;const t=((r=document.querySelector(".post-title"))==null?void 0:r.textContent)||"";const e=yr(t,br()||Mn(t));if(!e)return null;let n="";try{n=sessionStorage.getItem("ddys_cover_"+nn(t))||""}catch(i){}if(!n){const i=Array.from(document.querySelectorAll(".doulist-item"));const c=J(nn(t));const a=oa(i,br()||Mn(t)||1,c);const s=a||i[i.length-1];if(s)n=Q(s.querySelector("img"))}return{name:e,cover:n,path:location.pathname}},getSiteRating(t){var e;if(!t||t===document){const n=Array.from(document.querySelectorAll(".doulist-item"));if(!n.length)return null;const r=((e=document.querySelector(".post-title"))==null?void 0:e.textContent)||"";const i=br()||Mn(r);const c=oa(n,i||1,J(nn(r)));if(!c)return null;const a=c.querySelector('a.wpd-rating-source[href*="movie.douban.com"]');if(!a)return null;const s=a.parentElement?a.parentElement.querySelector(".rating_nums"):null;const l=pr(s&&s.textContent);const p=jo(a.getAttribute("href"));if(!l&&!p)return null;return{score:l,url:p}}return null},onPageReady(){sa();const t=ca();if(!t)return;aa();location.href=t},planSeasonSwitch:ca,markAutoNode:aa,consumeAutoNode:sa,clickNode:ua}; var fa={id:"libvio",name:"LIBVIO",domains:["libvio.host","www.libvio.mov","www.libvios.com","www.libhd.com","libviobd.com","www.libvio.in","www.libvio.io"],matches:["*://*.libvio.host/*","*://*.libvio.mov/*","*://*.libvios.com/*","*://*.libhd.com/*","*://*.libviobd.com/*","*://*.libvio.in/*","*://*.libvio.io/*"],include:["/^https?:\\/\\/([^/]*\\.)?(libvio|libvios|libviobd|libhd)\\./"],searchPath:o(t=>"/search/-------------.html?wd="+encodeURIComponent(t),"searchPath"),pageType(){const t=location.pathname;if(t.startsWith("/detail/"))return"detail";if(t.startsWith("/w/"))return"play";if(t.startsWith("/search/"))return"search";if(document.querySelector(".stui-vodlist"))return"list";return"other"},listCardSelector:".stui-vodlist__box",getListCards(){const t=[];document.querySelectorAll(".stui-vodlist__box").forEach(e=>{const n=e.querySelector("a.stui-vodlist__thumb");const r=e.querySelector(".stui-vodlist__detail .title");if(!n)return;const i=((r==null?void 0:r.textContent)||n.getAttribute("title")||"").trim();const c=Q(n)||Q(n.querySelector("img"));if(i)t.push({element:e,name:i,cover:c,path:n.pathname})});return t},getDetailInfo(){const t=document.querySelector(".vod-poster img");const e=document.querySelector(".vod-info .title");const n=document.querySelector(".vod-info a");const r=((e==null?void 0:e.textContent)||"").trim();if(!r)return null;const i=Q(t);const c=(n==null?void 0:n.getAttribute("href"))||location.pathname;return{name:r,cover:i,path:c}},getPlayInfo(){const t=document.querySelector(".stui-player__detail .title");const e=((t==null?void 0:t.textContent)||"").trim();if(!e)return null;return{name:e,path:location.pathname}},getSiteRating(t){if(!t||t===document){return Ut(document,[".vod-rating-mobile"],".vod-hero__inner, .stui-player__detail")}return Ut(t,[".pic-tag-top",".pic-tag"])}}; function Yf(t){if(!t.length)return"";const e=t.filter(r=>r.id!=="noneCoverImg"&&!Et(Q(r)));const n=e.length?e[e.length-1]:t[t.length-1];return n.id==="noneCoverImg"?"":Q(n)} o(Yf,"pickCover"); var pa={id:"duse",name:"\u6BD2\u820C\u7535\u5F71",domains:["www.duse2.com","www.duse3.com","www.duse4.com","www.dushe3.app","www.dushe05.com","www.dushe06.com"],matches:["*://*.duse2.com/*","*://*.duse3.com/*","*://*.duse4.com/*","*://*.dushe3.app/*","*://*.dushe05.com/*","*://*.dushe06.com/*"],include:["/^https?:\\/\\/([^/]*\\.)?dush?e\\d+\\./"],searchPath:o(t=>"/#vc-search="+encodeURIComponent(t),"searchPath"),isPlayUrl(t){return/\/play\//.test(t||"")},onPageReady(){const t=location.hash.match(/vc-search=([^&]+)/);if(!t)return;const e=decodeURIComponent(t[1]);let n=0;const r=o(()=>{if(n++>30)return;const i=document.querySelector('input[name="t"], input#t');if(i&&i.value){location.href="/search?t="+encodeURIComponent(i.value)+"&k="+encodeURIComponent(e);return}const c=document.querySelectorAll("script:not([src])");for(const l of c){const p=l.textContent.match(/["']?t["']?\s*[:=]\s*["']([A-Za-z0-9+/=]{16,})["']/);if(p){location.href="/search?t="+encodeURIComponent(p[1])+"&k="+encodeURIComponent(e);return}}let a=document.querySelector('input[type="search"], input[placeholder*="\u641C"], input[placeholder*="Search" i], input[name="wd"], input[name="search"], input[name="q"], input[name="k"]');if(!a){a=Array.from(document.querySelectorAll('input[type="text"]')).find(l=>/search|搜索|搜|片名/.test(l.placeholder||"")||/search|wd|keyword|q|k/.test(l.name||""))}if(!a){const l=document.querySelector('[class*="search" i] i, [class*="search" i] svg, .search-icon, .icon-search, [aria-label*="search" i]');if(l)l.click();setTimeout(r,300);return}const s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value").set;s.call(a,e);a.dispatchEvent(new Event("input",{bubbles:true}));a.dispatchEvent(new Event("change",{bubbles:true}));a.focus();setTimeout(()=>{a.dispatchEvent(new KeyboardEvent("keydown",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:true}));a.dispatchEvent(new KeyboardEvent("keyup",{key:"Enter",code:"Enter",keyCode:13,which:13,bubbles:true}));const l=document.querySelector('button[type="submit"], .search-btn, [class*="search" i] button');if(l)l.click();const p=a.closest("form");if(p)p.dispatchEvent(new Event("submit",{bubbles:true,cancelable:true}))},200)},"trySearch");r()},pageType(){const t=location.pathname;if(t.startsWith("/detail/"))return"detail";if(t.startsWith("/play/"))return"play";if(t.startsWith("/search"))return"search";if(document.querySelector("a.v-item"))return"list";return"other"},listCardSelector:"a.v-item",statusOffset(t,e){const n=rn(t,e,".v-item-top");return n?{top:n+6}:null},getSiteRating(t){if(!t||t===document)return null;return Ut(t,[".v-item-top-left"])},getListCards(){const t=[];document.querySelectorAll("a.v-item").forEach(e=>{let n="";e.querySelectorAll(".v-item-footer .v-item-title").forEach(c=>{if(n)return;if(c.style.display!=="none")n=c.textContent.trim()});if(!n)return;const r=Array.from(e.querySelectorAll(".v-item-cover img"));const i=Yf(r);t.push({element:e,name:n,cover:i,path:e.pathname})});return t},getDetailInfo(){const t=document.querySelector(".detail-pic img");const e=((t==null?void 0:t.getAttribute("alt"))||"").trim();if(!e)return null;return{name:e,cover:Q(t),path:location.pathname}},getPlayInfo(){const t=document.querySelector(".detail-title a");if(!t)return null;const e=(t.textContent||"").trim();if(!e)return null;return{name:e,path:t.pathname}}}; function Wf(){const t=Array.from(document.querySelectorAll("h5")).find(e=>!/^豆瓣/.test(e.textContent.trim()));return((t==null?void 0:t.textContent)||"").trim()} o(Wf,"titleFromPage"); function Xf(){const t=Array.from(document.querySelectorAll("h5")).find(n=>/^豆瓣/.test(n.textContent.trim()));const e=Fo(t&&t.textContent);return e?{score:e}:null} o(Xf,"ratingFromPage"); function Jf(){var e;const t=((e=document.querySelector("video-player"))==null?void 0:e.getAttribute("content-title"))||"";return t.replace(/第\s*\d+\s*集\s*$/,"").trim()} o(Jf,"titleFromPlayer"); function Zf(t,e){var c;const n=t.querySelector("h3, h2, h1");const r=((n==null?void 0:n.textContent)||"").trim();if(r)return r;const i=(e.getAttribute("aria-label")||"").trim().replace(/^播放\s*/,"");if(i)return i;return(((c=t.querySelector("img"))==null?void 0:c.getAttribute("alt"))||"").trim()} o(Zf,"cardName"); function Qf(t){const e=t.getAttribute("href")||"";if(!e)return"";if(/^https?:/i.test(e)){try{return new URL(e).pathname}catch(n){return""}}return e.startsWith("/")?e:"/"+e} o(Qf,"playPath"); function tp(t){if(t){const n=Array.from(document.querySelectorAll("img")).find(i=>(i.getAttribute("alt")||"").trim()===t);const r=Q(n);if(r)return r}const e=Q(document.querySelector("img.jN, img.jO"));if(e)return e;for(const n of document.querySelectorAll("img")){if(n.closest("article"))continue;const r=Q(n);if(r)return r}return""} o(tp,"pickPlayCover"); function ep(t){const e=Array.from(t.querySelectorAll("div, span")).find(c=>!c.children.length&&/^豆瓣/.test((c.textContent||"").trim()));const n=e&&e.parentElement;if(!n)return 0;const r=n.getBoundingClientRect();const i=t.getBoundingClientRect();return Math.max(0,Math.round(r.bottom-i.top))} o(ep,"badgeRowBottom"); var va={id:"gaze",name:"\u6CE8\u89C6\u5F71\u89C6",domains:["gaze.red","gazes.store","gazes.top","gaze.show","gazes.host"],matches:["*://*.gaze.red/*","*://*.gazes.store/*","*://*.gazes.top/*","*://*.gaze.show/*","*://*.gazes.host/*"],include:["/^https?:\\/\\/([^/]*\\.)?gazes?\\d*\\./"],searchPath:o(t=>"/filter?search="+encodeURIComponent(t),"searchPath"),pageType(){if(location.pathname.startsWith("/play/")||document.querySelector("video-player"))return"play";if(document.querySelector('a[href*="play/"]'))return"list";return"other"},listCardSelector:"article",statusOffset(t){const e=ep(t);return e?{top:e+6,left:0}:null},getSiteRating(t){if(!t||t===document)return Xf();return Ut(t,[])},getListCards(){const t=[];document.querySelectorAll("article").forEach(e=>{const n=e.querySelector('a[href*="play/"]');if(!n)return;const r=Zf(e,n);if(!r)return;t.push({element:e,name:r,cover:Q(e.querySelector("img")),path:Qf(n)})});return t},getPlayInfo(){const t=Wf()||Jf();if(!t)return null;return{name:t,cover:tp(t),path:location.pathname}}}; function lt(t){return(t||"").replace(/^www\./,"")} o(lt,"normalizeHost"); var np=800; var rp=6*60*60*1e3; function ma({lastDomainKey:t,aliveCacheKey:e,probeDeadline:n=np,ttl:r=rp,isProbeable:i=o(()=>true,"isProbeable")}){let c=null;function a(){if(c===null){try{c=JSON.parse(GM_getValue(t,"{}"))}catch(h){c={}}}return c}o(a,"loadMap");function s(h,A){if(!h||!A)return;const D=a();if(D[h]===A)return;D[h]=A;GM_setValue(t,JSON.stringify(D))}o(s,"recordWorkingDomain");function l(h){return a()[h]||""}o(l,"getLastWorking");function p(h){if(!h||!h.domains||!h.domains.length)return"";const A=l(h.id);if(A&&h.domains.some(D=>lt(D)===lt(A)))return A;return h.domains[0]}o(p,"pickDomain");let d=null;const E=new Map;function x(){if(d)return d;try{d=GM_getValue(e,{})||{}}catch(h){d={}}return d}o(x,"loadAliveCache");function _(){try{GM_setValue(e,d)}catch(h){}}o(_,"saveAliveCache");try{if(typeof GM_addValueChangeListener==="function"){GM_addValueChangeListener(e,(h,A,D)=>{d=D||{}})}}catch(h){}function y(h){const A=x()[h];if(!A||Date.now()-A.ts>=r)return void 0;return!!A.alive}o(y,"cachedAlive");function P(h){const A=y(h);if(A!==void 0)return Promise.resolve(A);if(E.has(h))return E.get(h);const D=new Promise(O=>{const T=x();let q=false;const j=o(F=>{if(q)return;q=true;T[h]={alive:F,ts:Date.now()};_();O(F)},"finish");try{GM_xmlhttpRequest({method:"HEAD",url:"https://"+h+"/",timeout:3e3,onload:o(()=>j(true),"onload"),onerror:o(()=>j(false),"onerror"),ontimeout:o(()=>j(false),"ontimeout")})}catch(F){j(false)}}).then(O=>{E.delete(h);return O});E.set(h,D);return D}o(P,"probeDomain");function b(h){const A=l(h.id);if(A&&h.domains.some(D=>lt(D)===lt(A))){return[A,...h.domains.filter(D=>lt(D)!==lt(A))]}return h.domains}o(b,"candidateDomains");function L(h){if(!h||!h.domains||!h.domains.length)return Promise.resolve("");const A=b(h);const D=A.find(q=>y(q)===true);if(D)return Promise.resolve(D);const O=A.filter(q=>i(h,q)&&y(q)===void 0);const T=A.find(q=>!i(h,q));if(!O.length)return Promise.resolve(T||A[0]);return new Promise(q=>{let j=null;let F=false;let H=O.length;const N=o((S,f)=>{if(F)return;F=true;clearTimeout(j);q(S);if(!f)return;try{if(l(h.id)!==S)s(h.id,S)}catch(g){}},"settle");j=setTimeout(()=>N(p(h)||A[0],false),n);O.forEach(S=>{P(S).then(f=>{if(f){N(S,true)}else if(--H===0){N(T||A[0],false)}})})})}o(L,"findAliveDomain");return{recordWorkingDomain:s,getLastWorking:l,pickDomain:p,findAliveDomain:L}} o(ma,"createDomainResolver"); var Zo=new Map; function op(t,e){if(t&&t.__fallback)return true;const n=Zo.get(t.id);return!n||n.has(lt(e))} o(op,"isProbeable"); var ip=ma({lastDomainKey:Yc,aliveCacheKey:Kc,isProbeable:op}); var{recordWorkingDomain:ha,getLastWorking:ob,pickDomain:Ee,findAliveDomain:cn} =ip; var cp=200; var In=null; function ga(){if(In)return In;try{const t=JSON.parse(GM_getValue(Wo,"[]"));In=Array.isArray(t)?t:[]}catch(t){In=[]}return In} o(ga,"readVideoHosts"); function ba(t){const e=lt(t);return!!e&&ga().includes(e)} o(ba,"isKnownVideoHost"); function ya(t){const e=lt(t);if(!e)return;const n=ga();if(n.includes(e))return;if(n.length>=cp)return;n.push(e);try{GM_setValue(Wo,JSON.stringify(n))}catch(r){}} o(ya,"rememberVideoHost"); var ap=24*60*60*1e3; function sp(){try{const t=JSON.parse(GM_getValue(hr,"{}"));return t&&t.sites||{}}catch(t){return{}}} o(sp,"loadRemoteDomains"); var lp=30; function up(t){return typeof t==="string"&&t.length>0&&t.length<=253&&t.includes(".")&&/^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/i.test(t)} o(up,"isDomainLike"); function Qo(t){if(!Zo.has(t.id))Zo.set(t.id,new Set(t.domains.map(lt)));const e=sp()[t.id];if(!Array.isArray(e)||!e.length)return;const n=new Set(t.domains.map(i=>lt(i)));const r=e.filter(i=>up(i)&&!n.has(lt(i))).slice(0,lp);if(r.length)t.domains.push(...r)} o(Qo,"mergeRemoteDomains"); function xa(){if(!Yo)return Promise.resolve();try{const t=JSON.parse(GM_getValue(hr,"{}"));if(t&&t.ts&&Date.now()-t.ts{try{GM_xmlhttpRequest({method:"GET",url:Yo,timeout:1e4,onload:o(e=>{try{const n=JSON.parse(e.responseText);if(n&&typeof n.sites==="object"){GM_setValue(hr,JSON.stringify({ts:Date.now(),sites:n.sites}))}}catch(n){}t()},"onload"),onerror:o(()=>t(),"onerror"),ontimeout:o(()=>t(),"ontimeout")})}catch(e){t()}})} o(xa,"refreshDomainList"); var wa=/hls\.js|dplayer|ckplayer|artplayer|xgplayer|video\.js|videojs|player\.js|playerconfig/i; var Sa=/id=["']player["']|class=["'][^"']*player[^"']*["']|player-loading|player-wrapper|player-container|player-episodes/i; var Ea=/\/vodplay\/|\/vod\/play\/|play\.php|\/play\/|\/w\/[\w]+-[\d]+-[\d]+/i; var _a=/\/voddetail\/|\/detail\/|\/vod\/detail\/|\/movie\/|\/series\/|\/vod\/\d+\.html|\/video\/[\w-]+\.html|\/\w*detail\//i; var ka=/\/vodsearch\/|\/search\/|\?s=|\/index\.php\/vod\/search/i; var Ta=/\/voddetail\/|\/detail\/|\/vod\/|\/video\/[\w-]+\.html|\b(?:play|detail|vod|show|video|movie|view)[\w-]*\.php\?[^"'#<>\s]*\b(?:id|vid)=\d+|\/movie\/[\w-]+|\/tv\/[\w-]+|\/watch\/\d+|\/neirong\/\d+|\/20\d{6}\/?(?:[?#]|$)/i; var Aa='[class*="poster"], [class*="Poster"]'; var La=6; var ti=6; var Ca=6; var Ma=2; var Ia=100; var Pa=.25; var Oa=/影视|电影|电视剧|剧集|动漫|综艺|在线观看|追剧|美剧|韩剧|日剧|港剧|番剧/g; var dp=/^[A-Za-z0-9_]{10,}$/; function xr(t){return String(t||"").replace(/^https?:\/\/[^/]+/i,"").replace(/[?#].*$/,"").split("/").map(e=>dp.test(e)?"#":e.replace(/\d+/g,"#")).join("/").slice(0,60)} o(xr,"shapeKeyOf"); function wr(t){return String(t||"").indexOf("#")>=0||/\.(?:html?|php|aspx?)(?:\/|$)/i.test(String(t||""))} o(wr,"isContentShape"); function Sr(t,e){const n=o(c=>String(c||"").toLowerCase().replace(/^www\./,"").split(".").slice(-2).join("."),"tail");let r="";let i="";try{r=new URL(String(t||""),e).hostname}catch(c){return false}try{i=new URL(String(e||""),e).hostname}catch(c){i=""}if(!i)return true;return!!r&&n(r)===n(i)} o(Sr,"isSameSite"); var Er=/\/(?:tag|tags|category|categories|page|pages|search|login|logout|register|user|users|member|account|author|news|article|blog|archive|archives|sitemap|about|help|faq|privacy|contact|rss|feed|comment|guestbook)(?:\/|$)|^\/?(?:#|javascript|mailto|\?)/i; var _r=[".vod-item",".stui-vodlist__box",".myui-vodlist__box",".module-item",".public-list-box",".movie-card",".video-item",".fed-list-item",".content-card",".home-feed-card",".br-card"]; var Ra=["h1",".vod-info .title",".vod-title",".video-title",".video-name"]; var Da=[".title",".name"]; var Na=[".detail-pic img",".vod-pic img",".vod-img img",".poster img",".thumb img",".cover img"]; var qa=[".vod-poster__wrap img",".stui-player__detail img",".myui-content__thumb img",".module-info-poster img",".movie-poster img",".detail-pic img",".dyimg img",".detail-poster-card img",".play-poster img",".poster img","#detail-poster"]; var Fa=/^vc-/; var ei=/(?:^|[\s_-])(?:recommend|related|similar|guess|like|hot|rank|tj|more|swiper|carousel|slider|public-r)(?:[\s_-]|$)/i; var Ba=/相关推荐|相关影片|猜你喜欢|热门推荐|为你推荐|相似影片|更多推荐|推荐影片|本周热门|热门榜单|同类推荐|精选推荐/; var ja=[[/nid\/(\d+)/i,"url:nid"],[/\/vodplay\/[\d]+-[\d]+-(\d+)/i,"url:vodplay"],[/\/ep(\d+)/i,"url:ep"],[/\/episode[_\-/](\d+)/i,"url:episode"],[/[/_-]e(\d{1,4})(?:[/_-]|$)/i,"url:e"]]; var $a=[[/第\s*(\d+)\s*[集话回]/,"\u7B2CN\u96C6"],[/E[Pp]?\.?\s*(\d+)/i,"EP"],[/S\d+E(\d+)/i,"S01E02"],[/【(\d+)】/,"\u3010N\u3011"],[/\[(\d+)\]/,"[N]"],[/((\d+))/,"\uFF08N\uFF09"],[/\((\d+)\)/,"(N)"],[/#\s*(\d+)/,"#N"],[/_(\d+)_/,"_N_"],[/-(\d+)-/,"-N-"],[/(\d+)\s*[集话]/,"N\u96C6"]]; var za={}; var Ha=[{id:"movie-episode-kit",probe:".movie-episode-desktop-grid, .movie-episode-quick-tab",selectors:[".movie-episode-desktop-grid .movie-button-primary",".movie-episode-quick-tab.movie-button-primary"]}]; var kr=[{id:"maccms-voddetail",name:"MacCMS(voddetail)",detail:/\/voddetail\/\d+/i,play:/\/vodplay\/[\d]+-[\d]+-[\d]+/i,struct:/\bvod-item\b|\bvod-pic\b|\/vodtype\/|\/vodsearch\//i,cardSelector:".vod-item",searchPath:o(t=>"/vodsearch/-------------.html?wd="+encodeURIComponent(t),"searchPath"),detailFromPlay:o(t=>{const e=String(t||"").match(/^\/vodplay\/(\d+)/i);return e?`/voddetail/${e[1]}.html`:""},"detailFromPlay")},{id:"maccms-indexphp",name:"MacCMS(index.php)",detail:/\/index\.php\/vod\/detail\//i,play:/\/index\.php\/vod\/play\//i,struct:/\/index\.php\/vod\//i,cardSelector:".public-list-box, .module-item",searchPath:null,detailFromPlay:o(t=>{const e=String(t||"").match(/\/vod\/play\/id\/(\d+)/i);return e?`/index.php/vod/detail/id/${e[1]}.html`:""},"detailFromPlay")}]; var ni="\u6B63\u7247"; var ri="spa"; var oi=[[/防火墙正在检查|正在检查您的访问|安全检查中|访问验证|Just a moment|Checking your browser|cf-browser-verification/i,"waf"],[/^加载中\.*$|^Loading\.*$|正在加载中/i,ri],[/Access Denied|403 Forbidden|网站维护|站点维护中|暂停访问|域名暂时停止/i,"denied"]]; var Ua=[/\byoutube\.com$/,/\bbilibili\.com$/,/\bb23\.tv$/,/\bdouyin\.com$/,/\bixigua\.com$/,/\biqiyi\.com$/,/\bv\.qq\.com$/,/\byouku\.com$/,/\bmgtv\.com$/,/\bsohu\.com$/,/\bnetflix\.com$/,/\bdisneyplus\.com$/,/\bprimevideo\.com$/,/\bhbomax\.com$/,/\bhulu\.com$/,/\btwitter\.com$/,/\bx\.com$/,/\bfacebook\.com$/,/\binstagram\.com$/,/\bweibo\.com$/,/\bzhihu\.com$/,/\bbaidu\.com$/,/\btaobao\.com$/,/\bjd\.com$/,/\btmall\.com$/,/\bgoogle\.com$/,/\bbing\.com$/,/\bgithub\.com$/,/\bgreasyfork\.org$/,/\bdouban\.com$/,/\byinghezhinan\.com$/,/\bcodepen\.io$/,/\blink3\.cc$/]; var Va=Uc.map(t=>new RegExp(`\\b${t.replace(/^www\./,"").replace(/\./g,"\\.")}$`)); function Ga(t,e){const n=String(e||"");for(const i of kr){if(i.detail&&i.detail.test(n)||i.play&&i.play.test(n))return i}for(const i of kr){try{if(i.cardSelector&&t.querySelector(i.cardSelector))return i}catch(c){}}let r="";for(const i of kr){if(!i.struct)continue;if(!r){try{r=t.body?t.body.innerHTML.slice(0,4e4):""}catch(c){r=""}}if(r&&i.struct.test(r))return i}return null} o(Ga,"detectFamily"); function ze(t,e){const n=String(e||"");if(ka.test(n))return"search";if(Ea.test(n))return"play";if(_a.test(n))return"detail";let r=false;try{r=Sa.test(t.body?t.body.innerHTML.slice(0,4e4):"")}catch(i){}if(!r){try{r=[...t.querySelectorAll("script[src]")].some(i=>wa.test(i.src||""))}catch(i){}}if(r&&/play/i.test(n))return"play";return"other"} o(ze,"detectPageType"); function Pn(t,e,n){try{const r=String(e||t.location&&t.location.href||"");const i=n&&n.minLinks||6;const c=o(P=>Sr(P,r),"inSite");let a=0;for(const P of t.querySelectorAll("a[href]")){const b=P.getAttribute("href")||"";if(Ta.test(b)&&c(b)){a++;if(a>=i)return true}}if(_r.some(P=>{try{return t.querySelectorAll(P).length>=6}catch(b){return false}}))return true;let s=0;for(const P of t.querySelectorAll(Aa)){if(P.querySelector("img")){s++;if(s>=La)return true}}const l=new Map;let p=0;let d=0;let E=0;for(const P of t.querySelectorAll("a[href]")){const b=P.getAttribute("href")||"";if(!b||Er.test(b))continue;if(!c(b))continue;const L=xr(b);if(!L||L==="/"||L==="#"||L==="/#")continue;if(!wr(L))continue;const h=P.parentElement;const A=!!P.querySelector("img")||!!(h&&h.querySelector("img"));const D=l.get(L)||{n:0,img:0};const O={n:D.n+1,img:D.img+(A?1:0)};l.set(L,O);if(O.img>p)p=O.img;if(O.n>d){d=O.n;E=O.img}}if(pi!==ri):oi;const r=[];try{if(t.title)r.push(t.title);const i=t.querySelector("h1");if(i)r.push(i.textContent||"");if(t.body)r.push((t.body.textContent||"").slice(0,1500))}catch(i){}for(const i of r){const c=String(i||"").trim();if(!c)continue;for(const[a,s]of n){if(a.test(c))return s}}return""} o(Tr,"detectBlocked"); var fp=/\/vodsearch\/|\/search\/|search\.php|[?&](?:wd|q|kw|keyword)=/i; function ii(t){return fp.test(String(t||""))} o(ii,"isSearchUrl"); var pp=/\.(json|png|jpe?g|gif|svg|css|js|mjs|ico|woff2?|ttf|txt|xml|pdf|zip|rar|mp4|m3u8)$/i; function vp(t){return String(t||"").toLowerCase().replace(/^www\./,"")} o(vp,"normHost"); function Ar({ignoreEngineSwitch:t=false}={}){try{if(!/^https?:$/.test(location.protocol))return false;if(pp.test(location.pathname))return false;const e=vp(location.hostname);if(!e||!e.includes("."))return false;if(Va.some(n=>n.test(e)))return false;if(Ua.some(n=>n.test(e)))return false;if(!t&&GM_getValue(ge,true)===false)return false;return true}catch(e){return false}} o(Ar,"quickPass"); function Ka(t){try{if(!t||!t.body)return false;const e=ze(t,location.href);if(Tr(t,{ignoreSpa:e!=="other"}))return false;if(e!=="other")return true;if(Pn(t,location.href))return true;if(ii(location.href)&&ba(location.hostname)&&Pn(t,location.href,{minLinks:1}))return true;return false}catch(e){return false}} o(Ka,"deepPass"); function He(t,e){let n=e;for(let r=0;r<12&&n&&n.parentElement;r++){if(n.parentElement.tagName==="BODY"&&Fa.test(String(n.className||"")))return true;n=n.parentElement}return false} o(He,"isOwnUi"); function Ja(t,e){let n=e;for(let r=0;r<8&&n&&n!==t.body;r++){if(ei.test(String(n.className||""))||ei.test(String(n.id||"")))return true;const i=n.previousElementSibling;if(i&&Ba.test(String(i.textContent||"").replace(/\s+/g,"").slice(0,30)))return true;n=n.parentElement}return false} o(Ja,"inRecommendBlock"); function Lr(t,e){if(!e)return false;if(He(t,e))return false;if(Ja(t,e))return false;return true} o(Lr,"usableImgNode"); var On=o(t=>/^(19|20)\d{2}$/.test(String(t)),"isYear"); var ci=/^(简介|剧情|剧情介绍|返回|返回详情|返回列表|返回首页|返回上页|查看详情|详情页|首页|主页|评论|网友评论|相关推荐|猜你喜欢|热门推荐|最新|最新电影|播放列表|选集|下载|收藏|登录|注册|搜索|更多|详情|影片参数|在线播放|观看历史|推荐|资源|资源列表|播放记录|剧情简介|温馨提示|影片介绍|播放地址|线路|线路选择|片源|加载中|正在加载中|Loading)$/; var mp=/(?:\s*(?:\d+\s*集全|全剧集|共\s*\d+\s*集|更新至\s*\d+\s*[集期话]|更新第\s*\d+\s*[集期话]|更新至|更新到|第\s*\d+\s*期|已完结|完结|全集|全季|正片|高清完整版|完整版|在线观看|播放列表|超清|蓝光|标清|原画|抢先版|清晰版|修复版|4K|8K|1080[Pp]?|720[Pp]?|H[Dd]|HDR|杜比视界))*$/; var hp=/\s*[-_·|]?\s*(?:第\s*\d+\s*[集话回期]|E[Pp]?\s*\d{1,4}|S\d+\s*E\d+)\s*$/; var gp=/^(?:正在播放|在线播放|播放中|播放|观看)\s*/; var bp=/\s*\d*\s*[A-Za-z\u4e00-\u9fa5]{0,6}源线路\s*/g; var yp=/^(?:官方中字|中文字幕|双语字幕|高清中字|内嵌字幕|外挂字幕|无字幕|免费|在线观看|在线看|高清|超清|完整版|正片|详情|详情介绍|动作|冒险|科幻|恐怖|喜剧|爱情|剧情|悬疑|犯罪|战争|奇幻|动画|纪录片|综艺|电影|电视剧|动漫|美剧|韩剧|日剧|港剧|台剧|短片|预告)$/; function Cr(t,e,n){try{const r=t.querySelector(`meta[${e}="${n}"]`);return r?String(r.getAttribute("content")||"").trim():""}catch(r){return""}} o(Cr,"metaContent"); function de(t,e){let n=String(t||"").replace(/\s+/g," ").trim();const r=o(x=>{const _=/^《([^》]{2,40})》/.exec(String(x).trim());return _?_[1]:null},"takeQuoted");const i=r(n);if(i)n=i;if(ci.test(n.replace(/[《》]/g,"")))return"";n=n.replace(gp,"").replace(bp," ");const c=r(n);if(c)n=c;n=n.replace(/[《》]/g,"");const a=n.split(/[-_|·]/).map(x=>x.trim()).filter(Boolean);const s=a.filter(x=>{if(!x)return false;if(e&&x===e)return false;if(a.length>1&&/^\d{1,4}$/.test(x))return false;if(/^(最新|热门|全集|高清|蓝光|秒播|无广告|免费|在线观看|电影|电视剧|影片|动漫|综艺|纪录片|影视大全|详情介绍|高清完整版)$/.test(x))return false;return true});const l=new Set;const p=(s.length?s:a).filter(x=>{const _=x.replace(/\s/g,"");if(l.has(_))return false;l.add(_);return true});n=p.join(" ").trim();n=n.replace(/[((【\[]\s*(?:19|20)\d{2}\s*[))】\]]/g," ");const d=n.split(/\s+/).filter(Boolean).filter(x=>!/^(?:19|20)\d{2}$/.test(x));if(d.length)n=d.join(" ");n=n.replace(/在线观看|高清完整版|免费观看|全集免费|迅雷下载|详情介绍|在线播放|手机观看|剧情介绍|高清|完整版|免费在线/g,"");n=n.replace(/在线看|官方中字|中文字幕|双语字幕|高清中字|内嵌字幕|详情/g,"");n=n.replace(hp,"").replace(mp,"");n=n.replace(/\s*[-_|·]\s*\d{1,4}\s*$/g,"");n=n.replace(/^(?:电影|电视剧|影片|动漫|综艺|纪录片)\s*/,"").replace(/\s*(?:电影|电视剧|影片|动漫|综艺|纪录片)$/,"");const E=o(x=>{const _=String(x||"").split(/[/、,,|]/).map(y=>y.trim()).filter(Boolean);return _.length>0&&_.every(y=>yp.test(y))},"isTagNoise");n=n.replace(/^[【\[]\s*([^【\[\]】]{1,20})\s*[】\]]\s*/,(x,_)=>E(_)?"":x);n=n.replace(/\s*[【\[]\s*([^【\[\]】]{1,20})\s*[】\]]\s*$/,(x,_)=>E(_)?"":x);n=n.replace(/[((]\s*[))]/g,"").replace(/[【\[]\s*[】\]]/g,"");n=n.replace(/^[\s\-_|·、,,::.。]+|[\s\-_|·、,,::.。&\s]+$/g,"");return n.trim()} o(de,"cleanTitle"); function Rn(t){if(!t)return true;if(ci.test(t))return true;const e=String(t).split(/[\s::]/)[0];return!!e&&ci.test(e)} o(Rn,"isUiHeading"); function Za(t){const e=String(t||"");const n=e.match(/\/vodplay\/(\d+)/i)||e.match(/\/vod\/play\/id\/(\d+)/i)||e.match(/\/play\/(\d+)/i)||e.match(/[?&](?:id|vid)=(\d+)/i);return n?n[1]:""} o(Za,"showIdFromUrl"); function xp(t){const e=o(a=>String(a||"").replace(/\s+/g," ").trim(),"clean");const n=o(a=>a.length>=2&&a.length<=60&&!Rn(a),"usable");let r="";for(const a of["h1","h2","h3",'[class*="title" i]']){const s=t.querySelector(a);const l=e(s&&s.textContent);if(n(l)){r=l;break}}const i=e(t.textContent);const c=e(t.getAttribute("title"));if(n(r))return{name:r,src:"inner"};if(n(i))return{name:i,src:"text"};if(n(c))return{name:c,src:"title-attr"};return{name:i||c,src:"fallback"}} o(xp,"selfLinkName"); var wp=/更多信息|详细信息|详情|简介|介绍|上映|主演|导演|评分|更新至|全集|完结|播放列表/; function Sp(t,e,n){let r=0;if(e==="inner")r+=3;else if(e==="text"||e==="title-attr")r+=1;if(n&&t.replace(/\s/g,"")===n.replace(/\s/g,""))r+=10;if(/^\d/.test(t))r-=5;if(/[::,,。;;!!??]/.test(t))r-=3;if(t.length>30)r-=3;if(wp.test(t))r-=3;return r} o(Sp,"scoreSelfLink"); function ai(t,e){if(!e)return null;const n=new RegExp("(?:^|[^0-9])"+e+"(?:[^0-9]|$)");let r="";try{r=de(String(t.title||"").split(/[-_|]/)[0],"")}catch(c){r=""}let i=null;try{for(const c of t.querySelectorAll("a[href]")){const a=c.getAttribute("href")||"";if(!/\/voddetail\/|\/detail\/|\/vod\/detail\//i.test(a))continue;if(!n.test(a))continue;const{name:s,src:l}=xp(c);if(!s||s.length<2||s.length>60)continue;const p=Sp(de(s,"")||s,l,r);if(!i||p>i.score)i={name:s,href:a,score:p}}}catch(c){}return i&&i.score>0?{name:i.name,href:i.href}:null} o(ai,"findSelfDetailLink"); var Ya=/[\uAC00-\uD7AF\u1100-\u11FF\u3040-\u30FF\u0400-\u04FF]|[A-Za-z]/; function Ep(t,e){const n=String(t.title||"").replace(/\s+/g," ").trim();if(!n)return"";const r=de(n.split(/[-_|]/)[0].trim(),e);return r&&!Rn(r)?r:""} o(Ep,"nameFromDocTitle"); function Mr(t,e,n){const r=Za(n);const i=ai(t,r);if(i){const d=de(i.name,e);if(d&&!Rn(d))return{name:d,src:"detail-link"}}const c=Ep(t,e);const a=o(d=>{for(const E of d){try{for(const x of t.querySelectorAll(E)){if(He(t,x))continue;const _=String(x.textContent||"").replace(/\s+/g," ").trim();if(_.length<2||_.length>60)continue;const y=de(_,e);if(y&&!Rn(y))return{name:y,src:E}}}catch(x){}}return null},"bySelectors");const s=a(Ra);if(s&&c&&s.name!==c&&Ya.test(s.name)&&!Ya.test(c)){return{name:c,src:"title(\u6536\u655B\u5916\u6587\u526F\u6807\u9898)"}}if(s)return s;if(c)return{name:c,src:"title"};const l=Cr(t,"property","og:title");if(l){const d=de(l,e);if(d&&!Rn(d))return{name:d,src:"og:title"}}const p=a(Da);if(p)return p;return{name:"",src:""}} o(Mr,"extractTitle"); function Qa(t){const e=Number(t.getAttribute("width"))||t.naturalWidth||0;const n=Number(t.getAttribute("height"))||t.naturalHeight||0;if(e&&n)return e<100||n<100;if(e)return e<100;if(n)return n<100;return false} o(Qa,"tooSmallImage"); var _p=150; var kp=/[?&,/_=-](?:w|width)[_=]?(\d{2,4})\b/i; var Tp=/[?&,/_=-](?:h|height)[_=]?(\d{2,4})\b/i; function ts(t){const e=Number(t.getAttribute("width"))||t.naturalWidth||0;const n=Number(t.getAttribute("height"))||t.naturalHeight||0;if(e||n)return[e,n];const r=t.currentSrc||t.getAttribute("src")||t.getAttribute("data-src")||t.getAttribute("data-original")||"";const i=kp.exec(r);const c=Tp.exec(r);return[i?Number(i[1]):0,c?Number(c[1]):0]} o(ts,"imgSizeOf"); function Ap(t,e){const[n,r]=ts(t);return!!n&&nr){r=p;n=a}}return n||i} o(es,"pickRepairCover"); function ns(t,e){const n=Cr(t,"property","og:image");if(n&&!Et(n))return{cover:n,src:"og:image"};const r=Cr(t,"name","twitter:image");if(r&&!Et(r))return{cover:r,src:"twitter:image"};if(e){try{for(const i of t.querySelectorAll("img")){if(!String(i.getAttribute("alt")||"").includes(e))continue;if(!Lr(t,i))continue;const c=Q(i);if(c)return{cover:c,src:"img[alt*=name]"}}}catch(i){}}for(const i of Na){try{for(const c of t.querySelectorAll(i)){if(!Lr(t,c))continue;const a=Q(c);if(a)return{cover:a,src:i}}}catch(c){}}try{for(const i of t.querySelectorAll("img")){if(Qa(i))continue;if(!Lr(t,i))continue;const c=Q(i);if(c)return{cover:c,src:"img(any)"}}}catch(i){}try{const i=t.querySelector("video[poster]");const c=i?i.getAttribute("poster"):"";if(c&&!Et(c))return{cover:c,src:"video[poster]"}}catch(i){}return{cover:"",src:""}} o(ns,"extractCover"); function Ir(t){for(const e of qa){try{for(const n of t.querySelectorAll(e)){if(!n||n.tagName!=="IMG")continue;if(Qa(n))continue;if(!Lr(t,n))continue;const r=Q(n);if(r&&!Et(r))return{cover:r,src:e}}}catch(n){}}return{cover:"",src:""}} o(Ir,"extractPlayCover"); function Lp(t){const e=String(t||"");let n=e.match(/nid\/(\d+)/i);if(n&&!On(n[1]))return{ep:n[1],src:"url:nid"};n=e.match(/\/vodplay\/\d+-(\d+)-(\d+)/i);if(n&&!On(n[2]))return{ep:n[2],src:"url:vodplay"};for(const[r,i]of ja){const c=r.exec(e);if(c&&c[1]&&!On(c[1]))return{ep:c[1],src:i}}return null} o(Lp,"episodeFromUrl"); var Cp=/^(?:第\s*(\d{1,4})\s*[集话回期]|(\d{1,4}))$/; function Dn(t){const e=Cp.exec(String(t||"").replace(/\s+/g," ").trim());if(!e)return"";const n=e[1]||e[2];return n&&!On(n)?n:""} o(Dn,"epFromLabel"); function Mp(t){let e=0;for(const n of t.children){if(Dn(n.textContent)&&++e>=2)return true}return false} o(Mp,"episodeListAt"); function Pr(t){let e=t.parentElement;for(let n=0;n<3&&e;n++,e=e.parentElement){if(Mp(e))return true}return false} o(Pr,"inEpisodeList"); function Ip(t){try{for(const e of t.querySelectorAll("a, button, li")){if(Dn(e.textContent)&&Pr(e))return true}}catch(e){}return false} o(Ip,"hasEpisodeList"); function Pp(t){const e=String(t||"").match(/^[a-z][a-z0-9+.-]*:\/\/([^/?#]+)/i);return e?e[1].toLowerCase().replace(/^www\./,""):""} o(Pp,"hostOf"); function Op(t,e){const n=Pp(e);if(!n)return"";for(const[r,i]of Object.entries(za)){if(!r.split("|").some(c=>n===c||n.endsWith("."+c)))continue;for(const c of i){let a=null;try{a=t.querySelector(c)}catch(l){a=null}if(!a)continue;const s=Dn(a.textContent);if(s&&Pr(a))return s}}return""} o(Op,"episodeByHostSelector"); function Rp(t){for(const e of Ha){let n=false;try{n=!!t.querySelector(e.probe)}catch(r){n=false}if(!n)continue;for(const r of e.selectors){let i=null;try{i=t.querySelector(r)}catch(a){i=null}if(!i)continue;const c=Dn(i.textContent);if(c&&Pr(i))return c}}return""} o(Rp,"episodeByComponentSelector"); function Wa(t,e,n){if(Number(n)>1)return false;const r=e?new RegExp("(?:^|[^0-9])"+e+"(?:[^0-9]|$)"):null;const i=new Set;let c=0;try{for(const a of t.querySelectorAll("a[href]")){const s=a.getAttribute("href")||"";if(r&&!r.test(s))continue;let l="";const p=s.match(/nid\/(\d+)/i);if(p)l=p[1];else{const E=s.match(/\/vodplay\/\d+-\d+-(\d+)/i);if(E)l=E[1]}if(!l)continue;i.add(l);const d=String(a.textContent||"").replace(/\s+/g," ").trim();if(/^0?\d{1,4}$/.test(d)||/第\s*\d+\s*[集话回期]/.test(d))c++}}catch(a){}if(i.size>=2||c>=2)return false;if(i.size)return true;return!Ip(t)} o(Wa,"looksLikeMovie"); function rs(t,e,n){const r=Za(e);const i=Lp(e);if(i){const l=Wa(t,r,i.ep);return l?{ep:"",label:ni,movie:true,src:"movie"}:{ep:i.ep,label:`\u7B2C${i.ep}\u96C6`,movie:false,src:i.src}}const c=[Mr(t,n,e).name,String(t.title||""),Cr(t,"name","keywords")];for(const l of c){if(!l)continue;for(const[p,d]of $a){const E=p.exec(String(l));if(E&&E[1]&&!On(E[1]))return{ep:E[1],label:`\u7B2C${E[1]}\u96C6`,movie:false,src:`text:${d}`}}}const a=Op(t,e);if(a)return{ep:a,label:`\u7B2C${a}\u96C6`,movie:false,src:"ep-active(\u7AD9\u70B9\u7EA7)"};const s=Rp(t);if(s)return{ep:s,label:`\u7B2C${s}\u96C6`,movie:false,src:"ep-active(\u7EC4\u4EF6\u7EA7)"};try{const l=t.querySelectorAll('[class*="active"], [class*="current"], [class*="selected"], [aria-current="true"]');for(const p of l){const d=Dn(p.textContent);if(!d||!Pr(p))continue;return{ep:d,label:`\u7B2C${d}\u96C6`,movie:false,src:"active-ep"}}}catch(l){}if(Wa(t,r,""))return{ep:"",label:ni,movie:true,src:"movie(\u515C\u5E95)"};return{ep:"",label:"",movie:false,src:""}} o(rs,"extractEpisode"); var Dp=/favicon|(?:^|[/_.-])(?:site[-_]?)?(?:logo|ico|icon|default|loading|blank|placeholder|spacer|avatar|no-?(?:img|pic|poster|cover|image))\d*[.\-_/]|(?:^|[/_.-])(?:banner|ads?|adv)\//i; var Np=[".card-title",".title",".vod-info .title",'[class*="-title"]:not([class*="sub-"])','[class*="_title"]:not([class*="sub_"])',".name","h3","h2"]; function Or(t,e){for(const c of Np){const a=t.querySelector(c);const s=a?String(a.textContent||"").replace(/\s+/g," ").trim():"";if(s&&s.length>=2&&s.length<=60)return s}const n=String(e.getAttribute("title")||"").trim();if(n)return n;const r=t.querySelector("img");const i=r?String(r.getAttribute("alt")||"").trim():"";if(i)return i;return String(e.textContent||"").replace(/\s+/g," ").trim().slice(0,60)} o(Or,"cardName"); function os(t,e){try{const n=new URL(t,e);return n.pathname+n.search}catch(n){return t}} o(os,"pathFromHref"); function si(t,e){return os(t.getAttribute("href")||"",e)} o(si,"pathOf"); function qp(t,e,n){const r=[];let i;try{i=t.querySelectorAll(e)}catch(c){return r}for(const c of i){if(He(t,c))continue;const a=c.matches&&c.matches("a[href]")?c:c.querySelector("a[href]");if(!a)continue;const s=de(Or(c,a));if(!s)continue;r.push({element:c,name:s,cover:Q(c.querySelector("img")),path:si(a,n)});if(r.length>=200)break}return r} o(qp,"cardsFromSelector"); var Fp='.title, [class*="-title"]:not([class*="sub-"]), [class*="_title"]:not([class*="sub_"])'; var is=/\/voddetail\/|\/detail\/[\w-]|\/vod\/detail\/|\/movie\/[\w-]|\/vod\/\d+\.html|\/video\/[\w-]+\.html|\b(?:play|detail|vod|show|video|movie|view)[\w-]*\.php\?[^"'#<>\s]*\b(?:id|vid)=\d+/i; function cs(t){let e=t;for(let n=0;n<5&&e&&e.tagName!=="BODY";n++){if(e.querySelector("img")){try{if(e.querySelector(Fp))return e}catch(i){}const r=String(e.textContent||"").replace(/\s+/g," ").trim();if(r.length<=140)return e}e=e.parentElement}return null} o(cs,"cardBoxOf"); function Bp(t,e){const n=[];const r=new Set;let i;try{i=t.querySelectorAll("a[href]")}catch(c){return n}for(const c of i){if(He(t,c))continue;const a=c.getAttribute("href")||"";if(!is.test(a))continue;const s=cs(c);if(!s||r.has(s))continue;r.add(s);const l=de(Or(s,c));if(!l)continue;n.push({element:s,name:l,cover:Q(s.querySelector("img")),path:si(c,e)});if(n.length>=200)break}return n} o(Bp,"cardsFromLinks"); function jp(t,e){const n=new Map;let r;try{r=t.querySelectorAll("a[href]")}catch(a){return[]}for(const a of r){if(He(t,a))continue;const s=a.getAttribute("href")||"";if(!s||Er.test(s))continue;if(!Sr(s,e))continue;const l=xr(s);if(!l||l==="/"||l==="#"||l==="/#")continue;if(!wr(l))continue;if(!n.has(l))n.set(l,[]);n.get(l).push(a)}const i=[];const c=new Set;for(const a of n.values()){if(a.length=200)return i}}return i} o(jp,"cardsFromShapeGroups"); var Xa=["data-detail","data-href","data-url","data-link","data-play"]; function $p(t,e){const n=[];let r;try{r=t.querySelectorAll(Xa.map(i=>"["+i+"]").join(","))}catch(i){return n}for(const i of r){if(He(t,i))continue;let c="";for(const l of Xa){const p=String(i.getAttribute(l)||"").trim();if(p){c=p;break}}if(!c||!/^(?:\/|https?:)/i.test(c))continue;if(!is.test(c))continue;const a=String(i.getAttribute("data-title")||"").replace(/\s+/g," ").trim();const s=de(a||Or(i,i));if(!s)continue;n.push({element:i,name:s,cover:Q(i.querySelector("img")),path:os(c,e)});if(n.length>=200)break}return n} o($p,"cardsFromDataAttrs"); function as(t,e,{contentPage:n=false}={}){const r=t.location?t.location.href:"";let i=e;if(!i){i=_r.find(d=>{try{return t.querySelector(d)}catch(E){return false}})}let c=i?qp(t,i,r):[];const a=!n;if(a){const d=Bp(t,r);if(d.length){const E=o(x=>c.some(_=>_.element===x||_.element.contains(x)||x.contains(_.element)),"dup");for(const x of d)if(!E(x.element))c.push(x)}}if(a){const d=$p(t,r);if(d.length){const E=new Set(c.map(x=>x.element));for(const x of d)if(!E.has(x.element))c.push(x)}}if(a&&c.length<6){const d=jp(t,r);if(d.length>c.length){const E=new Set(c.map(x=>x.element));for(const x of d)if(!E.has(x.element))c.push(x)}}const s=new Set(c.map(d=>d.element));const l=o(d=>d===t.body||d===t.documentElement,"isRoot");const p=new Set;for(const d of c){let E=d.element.parentElement;while(E&&!l(E)){if(s.has(E)){p.add(d.element);break}E=E.parentElement}}if(p.size)c=c.filter(d=>!p.has(d.element));for(const d of c){if(d.cover&&Dp.test(d.cover))d.cover=""}return c} o(as,"extractListCards"); var _e="fb:"; var li=/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i; var Rr=/(?:版|版本)$|推荐$|^(?:极简|纯净|简洁|无广告|免广告|免费|高清|超清|蓝光|秒播|在线观看|全集|最新|热播)$/i; function zp(t,e,n){const r=o(d=>!!d&&d.length<=20&&!li.test(d)&&!/^\d+$/.test(d),"ok");const i=String(t||"").split(/[-–—·・]/).map(d=>d.trim()).filter(Boolean);if(!i.length)return"";const c=i[i.length-1];const a=c.split(/_/).map(d=>d.trim()).filter(Boolean);if(i.length<2&&a.length<2)return"";if(e&&a.length>1){const d=a.find(E=>E===e&&r(E));if(d)return d}let s=a.length>1?a[0]:c;if(Rr.test(s)){for(let d=i.length-2;d>=0;d--){const E=i[d].trim();if(!E||Rr.test(E))continue;s=E;break}}if(n&&s===n)return"";if(r(s))return s;const l=i[0]||"";if(l.indexOf("_")>=0)return"";const p=l.trim();return r(p)?p:""} o(zp,"siteNameFromTitle"); var Hp=['header a[class*="logo"]','header [class*="logo"]',".logo","#logo",'a[class*="logo"]',"header img[alt]"]; var Up=/^(tabler|bootstrap|tailwind|element|ant design|layui|vue|react|next\.?js|nuxt)$/i; function Vp(t){for(const e of Hp){let n;try{n=t.querySelector(e)}catch(a){continue}if(!n)continue;const r=n.querySelector?n.querySelector("img[alt]"):null;const i=String(n.getAttribute&&n.getAttribute("alt")||r&&r.getAttribute("alt")||n.textContent||"").replace(/\s+/g," ").trim();if(!i)continue;const c=i.split(/[-–—|·]/)[0].trim();if(!c||c.length>20||li.test(c)||Up.test(c))continue;return c}return""} o(Vp,"logoNameOf"); function Gp(t,e){let n="";try{const c=t.querySelector('meta[property="og:site_name"]');n=c?String(c.getAttribute("content")||"").trim():""}catch(c){n=""}n=n.replace(/[((][^))]*[))]\s*$/,"").trim();if(n&&n.length<=20&&!li.test(n))return n;const r=Vp(t);const i=String(t.title||"").replace(/\s+/g," ").trim();if(i){let c="";try{const s=ze(t,String(location.href||""));if(s==="detail"||s==="play"){const l=t.querySelector("h1");const p=l?String(l.textContent||"").replace(/\s+/g," ").trim():"";if(p&&p.length>=2&&p.length<=60)c=p}}catch(s){}const a=zp(i,r,c);if(a)return a}if(r&&i&&(r===i||i.indexOf(r)===0||r.indexOf(i)===0)){return r.length<=i.length?r:i}return e} o(Gp,"siteNameOf"); function ss(){let t="";try{t=String(location.hostname||"").replace(/^www\./,"")}catch(h){return null}if(!t)return null;const e=document;if(!e||!e.body)return null;const n=location.href;const r=o(()=>{try{return location.href}catch(h){return n}},"nowUrl");if(Tr(e,{ignoreSpa:ze(e,n)!=="other"}))return null;const i=o(()=>{const h=r();return(h.match(/\/vodplay\/(\d+)/i)||h.match(/\/vod\/play\/id\/(\d+)/i)||h.match(/\/play\/(\d+)/i)||h.match(/[?&](?:id|vid)=(\d+)/i)||[])[1]||""},"showIdOf");let c=null;let a=false;let s="";let l=null;let p=0;const d=o(()=>{try{return e.querySelectorAll("a[href]").length}catch(h){return 0}},"countAnchors");const E=o(()=>!!l.length&&l.every(h=>h.element&&h.element.isConnected)&&d()===p,"cardsStillValid");const x=Gp(e,t);const _=o(h=>!h||h===x,"badName");const y=o(()=>{try{return ai(e,i())}catch(h){return null}},"selfLink");const P=o(()=>{const h=y();if(h&&h.href){try{return new URL(h.href,n).pathname}catch(D){}}const A=b.__family?b.__family():null;if(A&&typeof A.detailFromPlay==="function"){const D=A.detailFromPlay(location.pathname);if(D)return D}return location.pathname+location.search},"playPath");const b={id:_e+t,name:x,domains:[location.hostname],matches:[],include:[],__fallback:true,crossSiteTarget:false,pageType(){const h=r();let A=ze(e,h);if(A==="other"&&Pn(e,h))A="list";return A==="list"&&/\/vodsearch\/|\/search\//i.test(h)?"search":A},getDetailInfo(){const h=Mr(e,x,r());if(_(h.name))return null;return{name:h.name,cover:ns(e,h.name).cover,path:location.pathname+location.search}},getPlayInfo(){const h=Mr(e,x,r());if(_(h.name))return null;return{name:h.name,cover:Ir(e).cover,path:P()}},getListCards(){if(l&&E())return l;const h=this.__family();const A=ze(e,r());l=as(e,h?h.cardSelector:null,{contentPage:A==="play"||A==="detail"});p=d();return l},getPlaybackInfo(){const h=rs(e,r(),x);return h.label?{episode:h.label}:null},__family(){const h=r();if(!a||s!==h){c=Ga(e,h);a=true;s=h}return c}};const L=b.__family();if(L&&typeof L.searchPath==="function"){b.searchPath=L.searchPath;delete b.crossSiteTarget}return b} o(ss,"createFallbackAdapter"); var re=[Rc,Dc,Nc,da,fa,pa,va]; var ke=void 0; function Kp(t){const e=location.href;return(t.include||[]).some(n=>{const r=/^\/(.*)\/$/.exec(n);if(!r)return false;try{return new RegExp(r[1]).test(e)}catch(i){return false}})} o(Kp,"matchInclude"); var Yp=200; var an=null; function sn(){if(an)return an;try{const t=JSON.parse(GM_getValue(gr,"{}"));an=t&&typeof t==="object"?t:{}}catch(t){an={}}return an} o(sn,"readSiteNames"); var Ue=null; function Wp(){if(!Ue){Ue=new Map;for(const[t,e]of Object.entries(sn())){if(typeof t!=="string"||t.indexOf(_e)!==0)continue;const n=t.slice(_e.length);if(!n)continue;const r=Ue.get(e);if(r)r.push(n);else Ue.set(e,[n])}}return Ue} o(Wp,"readFamilyBySiteName"); function Xp(t,e){if(!e||e===t)return[t];const n=Wp().get(e);if(!n||n.length<=1)return[t];return[t,...n.filter(r=>r!==t)]} o(Xp,"familyDomains"); function Jp(t,e){if(!t||!e||e===t.slice(_e.length))return;const n=sn();if(n[t]===e)return;if(n[t]===void 0&&Object.keys(n).length>=Yp)return;n[t]=e;Ue=null;try{GM_setValue(gr,JSON.stringify(n))}catch(r){}} o(Jp,"rememberSiteName"); function ls(){return{...sn()}} o(ls,"exportSiteNames"); function us(t){if(!t||typeof t!=="object")return;const e=sn();let n=false;Object.keys(t).forEach(r=>{const i=t[r];if(typeof i!=="string"||!i||e[r]===i)return;e[r]=i;n=true});if(!n)return;try{GM_setValue(gr,JSON.stringify(e))}catch(r){}an=e;Ue=null;re.forEach(r=>{if(r&&r.__fallback&&e[r.id]&&r.name!==e[r.id])r.name=e[r.id]})} o(us,"importSiteNames"); function Ve(t){if(!t)return null;const e=re.find(i=>i.id===t);if(e)return e;if(typeof t!=="string"||t.indexOf(_e)!==0)return null;const n=t.slice(_e.length);if(!n)return null;const r=sn()[t]||n;return{id:t,name:r,domains:Xp(n,r),__fallback:true}} o(Ve,"findSiteById"); function Zp(){try{if(!Ar()||!Ka(document))return null;const t=ss();if(!t)return null;const e=sn()[t.id];const n=t.id.slice(_e.length);const r=!e||e===n||Rr.test(e);if(e&&!r)t.name=e;re.push(t);Jp(t.id,t.name);if(!ii(location.href))ya(n);return t}catch(t){return null}} o(Zp,"resolveFallback"); function ds(){if(!ke)ke=void 0} o(ds,"resetCurrentSite"); function xt(){if(ke!==void 0)return ke;const t=location.hostname;const e=re.find(n=>n.domains.some(r=>lt(r)===lt(t))||Kp(n))||null;if(e){ke=e;ha(e.id,t);return ke}ke=Zp();return ke} o(xt,"getCurrentSite"); var It={currentTab:"want",currentPage:{want:1,watched:1,history:1},renderedTabs:new Set,searchKeyword:"",siteFilter:""}; var Qp=location.hostname==="127.0.0.1"||location.hostname==="localhost"; var tv=typeof __VC_DEV_BUILD__!=="undefined"&&__VC_DEV_BUILD__===true; var Dr=null; function ui(){if(Dr!==null)return Dr;let t=null;try{t=GM_getValue(Hc,null)}catch(e){t=null}Dr=t===null?Qp||tv:t===true;return Dr} o(ui,"isDebugLogEnabled"); function Nn(...t){if(ui())console.debug(...t)} o(Nn,"debug"); function U(...t){if(ui())console.log(...t)} o(U,"log"); function fs(...t){if(ui())console.warn(...t)} o(fs,"warn"); function Nr(...t){console.error(...t)} o(Nr,"error"); var ev={jav:"JAV \u89C6\u9891",drama:"\u5F71\u89C6"}; var ps=3*1024*1024; var nv=.9; var rv=30*1e3; var ov=["element"]; var iv=["addTime"]; function hs(t){return typeof t==="function"||t&&typeof t==="object"&&typeof t.nodeType==="number"} o(hs,"isRuntimeValue"); function fi(t){return ov.indexOf(t)>=0||iv.indexOf(t)>=0} o(fi,"isDroppedField"); function di(t){if(!t||typeof t!=="object")return t;let e=false;const n={};Object.keys(t).forEach(r=>{const i=t[r];if(fi(r)){e=true;return}if(hs(i)){e=true;return}n[r]=i});return e?n:t} o(di,"sanitizeItem"); function vs(t,e){const n=e.map(i=>t[i]===void 0?"":t[i]);const r={};Object.keys(t).forEach(i=>{if(e.indexOf(i)>=0||fi(i))return;if(hs(t[i]))return;r[i]=t[i]});if(Object.keys(r).length)n.push(r);return n} o(vs,"encodeItem"); function ms(t,e){if(!Array.isArray(t))return di(t);const n={};e.forEach((i,c)=>{const a=t[c];if(a!==""&&a!==void 0&&a!==null)n[i]=a});const r=t[e.length];if(r&&typeof r==="object"){Object.keys(r).forEach(i=>{if(!fi(i))n[i]=r[i]})}return n} o(ms,"decodeItem"); function ln(t){try{return en(t)}catch(e){return 0}} o(ln,"jsonBytes"); function gs({storageKey:t,backupFileName:e,moduleId:n,itemIdField:r,itemFields:i,showAlert:c,confirmExport:a,chooseImportStrategy:s,playbackLoadFn:l,playbackSaveFn:p,ratingsLoadFn:d,ratingsSaveFn:E,prefsLoadFn:x,prefsSaveFn:_,siteNamesLoadFn:y,siteNamesSaveFn:P,budgetKeys:b,reclaimRatingsFn:L,onBudgetNotice:h}){const A=300;let D=null;let O=0;let T=0;let q=0;function j(w){return{want:[...w.want||[]],watched:[...w.watched||[]]}}o(j,"snapshot");function F(w){return{want:(w.want||[]).map(I=>vs(I,i)),watched:(w.watched||[]).map(I=>vs(I,i))}}o(F,"packLists");function H(w){return{want:(w&&w.want||[]).map(I=>ms(I,i)),watched:(w&&w.watched||[]).map(I=>ms(I,i))}}o(H,"unpackLists");function N(){const w=Date.now();if(D&&w-D.atG+w[V],0);O=I;T=w.\u6536\u85CF||0;q=Date.now();return{parts:w,total:I,budget:ps}}o(S,"usage");const f=["\u8BC4\u5206\u7F13\u5B58","\u56FE\u7247\u7F13\u5B58"];function g(){return Object.keys(S().parts).filter(w=>f.indexOf(w)<0)}o(g,"keptNames");function M(){const w=S();if(w.total<=w.budget)return w;if(L){const I=L(Math.floor(w.budget*nv))||{};if(I.removed>0){const G=S();U("[\u5B58\u50A8] \u6570\u636E "+Ht(w.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(w.budget)+"\uFF0C\u5DF2\u56DE\u6536 "+I.removed+" \u6761\u8BC4\u5206\u7F13\u5B58\uFF08\u6309\u91CD\u5EFA\u6210\u672C\u4ECE\u4F4E\u5230\u9AD8\uFF1A\u67E5\u4E0D\u5230 \u2192 \u7AD9\u70B9\u76F4\u8BFB \u2192 \u63A5\u53E3\uFF09\uFF0C\u73B0\u5728 "+Ht(G.total)+"\uFF1B"+g().join("\u4E0E")+"\u672A\u52A8");if(h)h("\u5B58\u50A8\u63A5\u8FD1\u4E0A\u9650\uFF0C\u5DF2\u56DE\u6536 "+I.removed+" \u6761\u8BC4\u5206\u7F13\u5B58\uFF08"+g().join("\u4E0E")+"\u672A\u52A8\uFF09");if(G.total<=w.budget)return G}}U("[\u5B58\u50A8] \u6570\u636E "+Ht(w.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(w.budget)+"\uFF1A"+(L?"\u8BC4\u5206\u7F13\u5B58\u5DF2\u5C3D\u91CF\u56DE\u6536\uFF0C":"")+g().join("\u4E0E")+"\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406");if(h)h("\u5B58\u50A8\u5DF2\u8D85\u4E0A\u9650\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406\u90E8\u5206\u5185\u5BB9\uFF08"+g().join("\u4E0E")+"\u4E0D\u4F1A\u88AB\u81EA\u52A8\u5220\u9664\uFF09");return S()}o(M,"enforceBudget");function z(w){const I=S();if(I.total<=I.budget)return I;U("[\u5B58\u50A8] "+w+"\u540E\u6570\u636E "+Ht(I.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(I.budget)+"\uFF1A\u8D85\u51FA\u90E8\u5206\u4E0D\u4F1A\u81EA\u52A8\u5220\u9664\uFF08"+g().join("\u4E0E")+"\u59CB\u7EC8\u4FDD\u7559\uFF09\uFF0C\u53EF\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406");if(h)h(w+"\u540E\u6570\u636E "+Ht(I.total)+" \u8D85\u8FC7\u9884\u7B97 "+Ht(I.budget)+"\uFF0C"+g().join("\u4E0E")+"\u4E0D\u4F1A\u88AB\u81EA\u52A8\u5220\u9664");return I}o(z,"reportBudget");function K(w,I){const G={want:(w.want||[]).map(di),watched:(w.watched||[]).map(di)};let V="";try{V=JSON.stringify(F(G))}catch(it){D=null;c("\u4FDD\u5B58\u5931\u8D25\uFF1A\u6570\u636E\u4E2D\u5B58\u5728\u65E0\u6CD5\u5E8F\u5217\u5316\u7684\u5185\u5BB9");return false}try{GM_setValue(t,V);D={data:G,at:Date.now()}}catch(it){D=null;c("\u4FDD\u5B58\u5931\u8D25\uFF1A\u5B58\u50A8\u7A7A\u95F4\u4E0D\u8DB3\uFF0C\u8BF7\u5148\u5BFC\u51FA\u5907\u4EFD\u5E76\u6E05\u7406\u90E8\u5206\u6536\u85CF");return false}if(!(I&&I.skipBudget))at(ln(V));return true}o(K,"saveData");function at(w){const I=O-T+w;if(I{const et=it[st];if(!et||typeof et!=="object"||!et.score)return;if(G!=="local"||!V[st])V[st]=et});return V}o(vt,"mergeRatings");function Dt(w){if(Array.isArray(w.playback))return w.playback;return Array.isArray(w.history)?w.history:null}o(Dt,"readPlaybackOf");function dt(w){return w.ratings&&typeof w.ratings==="object"?w.ratings:null}o(dt,"readRatingsOf");function se(w){return w.prefs&&typeof w.prefs==="object"?w.prefs:null}o(se,"readPrefsOf");function Yt(w){return w.siteNames&&typeof w.siteNames==="object"?w.siteNames:null}o(Yt,"readSiteNamesOf");function Nt(w,I,G){if(G==="replace")return{...I||{}};const V={...w||{}};Object.keys(I||{}).forEach(it=>{if(G==="local"&&Object.prototype.hasOwnProperty.call(V,it))return;V[it]=I[it]});return V}o(Nt,"mergePrefs");async function Wt(){const w=N();const I={module:n,schema:3,want:w.want,watched:w.watched};if(l)I.playback=l();if(d)I.ratings=d();if(x)I.prefs=x();if(y)I.siteNames=y();const G=I.want.length+I.watched.length;const V=I.playback?I.playback.length:0;const it=I.ratings?Object.keys(I.ratings).length:0;if(!G&&!V){c("\u6682\u65E0\u53EF\u5BFC\u51FA\u7684\u6536\u85CF\u6570\u636E");return}const st=[`\u5171 ${G} \u6761\u6536\u85CF`,V?`${V} \u6761\u89C2\u770B\u8BB0\u5F55`:"",it?`${it} \u6761\u8BC4\u5206\u7F13\u5B58`:""].filter(Boolean).join("\u3001");if(a&&!await a(`\u786E\u5B9A\u5BFC\u51FA\u6536\u85CF\u5907\u4EFD\u5417\uFF1F${st}\uFF0C\u5C06\u4E0B\u8F7D\u4E3A JSON \u6587\u4EF6`))return;const et=new Blob([JSON.stringify(I,null,2)],{type:"application/json"});const ft=URL.createObjectURL(et);const ut=document.createElement("a");ut.href=ft;ut.download=`${e}_${new Date().toLocaleDateString().replace(/\//g,"-")}.json`;ut.click();URL.revokeObjectURL(ft)}o(Wt,"exportData");function At(w){return!!w&&typeof w==="object"&&w[r]!==void 0&&w[r]!==null&&w[r]!==""}o(At,"isValidItem");function le(w){if(!w||!Array.isArray(w.want)||!Array.isArray(w.watched)){return"\u6587\u4EF6\u683C\u5F0F\u4E0D\u6B63\u786E"}if(w.module&&w.module!==n){return`\u8BE5\u5907\u4EFD\u5C5E\u4E8E\u300C${ev[w.module]||w.module}\u300D\u6A21\u5757\uFF0C\u4E0D\u80FD\u5BFC\u5165\u5230\u5F53\u524D\u6A21\u5757`}const I=w.want[0]||w.watched[0];if(I&&!(r in I)){return"\u5907\u4EFD\u6570\u636E\u4E0E\u5F53\u524D\u6A21\u5757\u4E0D\u5339\u914D\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6"}return""}o(le,"validateImported");function B(w,I,G){const V=[...w];const it=new Map(V.map((st,et)=>[st[r],et]));for(const st of I){if(!At(st))continue;const et=st[r];if(it.has(et)){if(G==="import")V[it.get(et)]=st}else{V.push(st);it.set(et,V.length-1)}}return V}o(B,"mergeList");function _t(w,I,G){const V={added:0,duplicates:0,errors:0};if(G==="replace"){const st=o(et=>et.filter(ft=>At(ft)?(V.added++,true):(V.errors++,false)),"clean");return{data:{want:st(I.want),watched:st(I.watched)},stats:V}}const it=o((st,et)=>{const ft=[];for(const k of et){if(At(k))ft.push(k);else V.errors++}const ut=B(st,ft,G);const bt=ut.length-st.length;V.added+=bt;V.duplicates+=ft.length-bt;return ut},"mergeOne");return{data:{want:it(w.want,I.want),watched:it(w.watched,I.watched)},stats:V}}o(_t,"buildMergedData");function Lt(w,I){const G=[I==="replace"?`\u5BFC\u5165 ${w.added} \u6761\u6536\u85CF`:`\u65B0\u589E ${w.added} \u6761\uFF0C\u91CD\u590D ${w.duplicates} \u6761`];if(w.errors)G.push(`\u8DF3\u8FC7\u9519\u8BEF ${w.errors} \u6761`);if(w.playback!=null)G.push(`${w.playback} \u6761\u89C2\u770B\u8BB0\u5F55`);if(w.ratings!=null)G.push(`${w.ratings} \u6761\u8BC4\u5206\u7F13\u5B58`);if(w.prefs!=null)G.push(`${w.prefs} \u9879\u8BBE\u7F6E`);if(w.siteNames!=null)G.push(`${w.siteNames} \u4E2A\u7AD9\u540D`);return`\u5BFC\u5165\u5B8C\u6210\uFF1A${G.join("\uFF0C")}`}o(Lt,"formatResult");function Xt(w){const I=document.createElement("input");I.type="file";I.accept="application/json";I.onchange=G=>{const V=G.target.files[0];if(!V)return;const it=new FileReader;it.onload=async st=>{try{const et=JSON.parse(st.target.result);const ft=le(et);if(ft){c(ft);return}const ut=await s();if(!ut)return;const bt=N();const{data:k,stats:X}=_t(bt,et,ut);K(k,{skipBudget:true});const Y=Dt(et);if(l&&p&&Y){const mt=ut==="replace"?Y.filter(At):B(l(),Y,ut);p(mt);X.playback=mt.length}const tt=dt(et);if(d&&E&&tt){const mt=vt(d(),tt,ut);E(mt);X.ratings=Object.keys(mt).length}const kt=se(et);if(x&&_&&kt){const mt=Nt(x(),kt,ut);_(mt);X.prefs=Object.keys(mt).length}const ct=Yt(et);if(y&&P&&ct){const mt={...ct,...y()||{}};P(mt);X.siteNames=Object.keys(mt).length}z("\u5BFC\u5165");if(w)w();c(Lt(X,ut))}catch(et){c("\u6587\u4EF6\u89E3\u6790\u5931\u8D25")}};it.readAsText(V)};I.click()}o(Xt,"importData");return{loadData:N,saveData:K,exportData:Wt,importData:Xt,usageInfo:S,enforceBudget:M}} o(gs,"createStorageHelper"); var xs=new Set(["video","audio"]); var cv=1e3; var qr=null; var bs=0; function qn(t){const e=[];if(!t||typeof t.querySelectorAll!=="function")return e;t.querySelectorAll("*").forEach(n=>{if(n.tagName.indexOf("-")<0)return;const r=n.shadowRoot;if(!r)return;xs.forEach(i=>r.querySelectorAll(i).forEach(c=>e.push(c)))});return e} o(qn,"queryShadowMediaIn"); function av(t,e){const n=o(c=>e==="video"?c.filter(a=>a.tagName==="VIDEO"):e==="audio"?c.filter(a=>a.tagName==="AUDIO"):c,"pick");const r=qr?qr.filter(c=>c.isConnected):[];if(r.length)return n(r);if(Date.now()e.push(a));c.querySelectorAll("iframe").forEach(a=>{try{const s=a.contentDocument;if(s&&!i.has(s)){i.add(s);r.push(s)}}catch(s){}})}if(!e.length&&xs.has(t))return av(n,t);return e} o(oe,"queryAllInFrames"); function ws(){const t=[window];const e=new Set([document]);const n=[document];while(n.length){const r=n.shift();r.querySelectorAll("iframe").forEach(i=>{try{const c=i.contentDocument;if(c&&!e.has(c)){e.add(c);if(c.defaultView)t.push(c.defaultView);n.push(c)}}catch(c){}})}return t} o(ws,"listSameOriginWindows"); function Fr(){const t=oe("video")[0]||null;if(!t)return{video:null,frame:null};let e=null;try{e=t.ownerDocument.defaultView.frameElement||null}catch(n){e=null}return{video:t,frame:e}} o(Fr,"findPlayerVideo"); function Ss(t){if(!t||typeof t.focus!=="function")return false;if(t.tabIndex<0&&!t.hasAttribute("tabindex"))t.tabIndex=-1;try{t.focus({preventScroll:true})}catch(e){return false}return t.ownerDocument.activeElement===t} o(Ss,"focusEl"); function sv(t){const e=t.getBoundingClientRect();return e.width>=200&&e.height>=120} o(sv,"isVisibleFrame"); function lv(t){try{return!t.contentDocument}catch(e){return true}} o(lv,"isCrossOriginFrame"); function pi(t){let e=null;let n=0;t.forEach(r=>{const i=r.getBoundingClientRect();const c=i.width*i.height;if(c>n){n=c;e=r}});return e} o(pi,"largestOf"); function un(t){const e=Array.from(document.querySelectorAll("iframe")).filter(sv);if(!e.length)return null;if(t){const i=e.filter(c=>{try{return c.matches(t)}catch(a){return false}});if(i.length)return pi(i)}const n=e.filter(i=>/player|play\.php|\/vod\//i.test(i.getAttribute("src")||""));if(n.length)return pi(n);const r=e.filter(lv);return pi(r.length?r:e)} o(un,"pickPlayerFrame"); function ys(t){if(!t)return false;const e=Ss(t);try{t.contentWindow.focus()}catch(n){}return e||document.activeElement===t} o(ys,"focusFrame"); function Fn(t,{force:e=false}={}){const n=document.activeElement;if(n&&n!==document.body&&n!==document.documentElement){if(!e||n.tagName!=="IFRAME")return false}const{video:r,frame:i}=Fr();if(i)return ys(i);if(r)return Ss(r);return ys(un(t))} o(Fn,"focusPlayer"); var vi=false; function Es(){vi=true} o(Es,"markVolumeTouched"); function _s(){vi=false} o(_s,"resetVolumeTouched"); function Br(){return vi} o(Br,"isVolumeTouched"); function Ge(t,e,{unmute:n=false}={}){const r=Math.max(0,Math.min(1,Math.round(Number(e)*100)/100));t.volume=r;if(n&&t.muted)t.muted=false;return r} o(Ge,"setVideoVolume"); var uv=500; var dv=24; var Bn=null; function ks(t){Bn=typeof t==="function"?t:null} o(ks,"setRemoteVolume"); function Ts(t){if(Br())return 0;const e=oe("video");let n=0;e.forEach(r=>{try{Ge(r,t,{unmute:false});n++}catch(i){}});if(Bn){try{if(Bn(t)!==false)n++}catch(r){}}return n} o(Ts,"applyVolumeNow"); function As({getVolume:t}){let e=null;let n=0;let r=false;let i=false;const c=new Set;const a=o(()=>s(i),"onPlay");function s(E){const x=t();if(!(x>=0))return 0;const _=oe("video");let y=0;_.forEach(P=>{if(!c.has(P)){c.add(P);try{P.addEventListener("play",a)}catch(b){}}try{Ge(P,x,{unmute:E});y++}catch(b){}});if(Bn){try{if(Bn(x)!==false)y++}catch(P){}}return y}o(s,"apply");function l(){if(i)return;i=true;if(!Br())s(true);p()}o(l,"onGesture");function p(){window.removeEventListener("pointerdown",l,true);window.removeEventListener("keydown",l,true)}o(p,"removeGestureListeners");function d(){if(!e)return;clearInterval(e);e=null}o(d,"stopPolling");return{start(){if(r)return;r=true;n=0;window.addEventListener("pointerdown",l,true);window.addEventListener("keydown",l,true);s(false);d();e=setInterval(()=>{n++;if(Br()){d();return}s(i);if(n>=dv)d()},uv)},stop(){if(!r)return;r=false;d();p();c.forEach(E=>{try{E.removeEventListener("play",a)}catch(x){}});c.clear()}}} o(As,"createVolumeSync"); var Qt={favPeekOpacity:{key:"video_collector_ui_fav_peek_opacity",def:55,min:10,max:100,step:5},favSize:{key:"video_collector_ui_fav_size",def:"small"},favMark:{key:"video_collector_ui_fav_mark",def:true},ratingRemote:{key:"video_collector_ui_rating_remote",def:true},xjumpOpacity:{key:"video_collector_ui_xjump_opacity",def:100,min:0,max:100,step:5},xjumpSize:{key:"video_collector_ui_xjump_size",def:"large"},volume:{key:"video_collector_ui_volume",def:100,min:0,max:100,step:5}}; var Ls="vc-ui-style"; function jt(t){const e=Qt[t];const n=GM_getValue(e.key,e.def);if(typeof e.def==="boolean")return n===true;if(e.min!=null){const r=Number(n);return Number.isFinite(r)?Math.min(e.max,Math.max(e.min,r)):e.def}return n==="small"?"small":"large"} o(jt,"getUiSetting"); function Te(){const t=Number(jt("favPeekOpacity"))/100;const e=Number(jt("xjumpOpacity"))/100;let n=document.getElementById(Ls);if(!n){n=document.createElement("style");n.id=Ls;(document.head||document.documentElement).appendChild(n)}n.textContent=`:root{--vc-fav-peek-opacity:${t};--vc-xjump-opacity:${e};}`;document.documentElement.classList.toggle("vc-fav-sm",jt("favSize")==="small");document.documentElement.classList.toggle("vc-fav-nomark",jt("favMark")===false);document.documentElement.classList.toggle("vc-xjump-sm",jt("xjumpSize")==="small")} o(Te,"applyUiStyles"); function Cs(t){GM_setValue(Qt.favPeekOpacity.key,Number(t));Te()} o(Cs,"setFavPeekOpacity"); function Ms(t){GM_setValue(Qt.favSize.key,t);Te()} o(Ms,"setFavSize"); function Is(t){GM_setValue(Qt.favMark.key,t===true);Te()} o(Is,"setFavMark"); function mi(){return jt("ratingRemote")!==false} o(mi,"getRatingRemote"); function Ps(t){GM_setValue(Qt.ratingRemote.key,t===true)} o(Ps,"setRatingRemote"); function Os(t){GM_setValue(Qt.xjumpOpacity.key,Number(t));Te()} o(Os,"setXjumpOpacity"); function Rs(t){GM_setValue(Qt.xjumpSize.key,t);Te()} o(Rs,"setXjumpSize"); function jr(t){const e=Math.round(Number(t));GM_setValue(Qt.volume.key,e);_s();Ts(e/100)} o(jr,"setVolume"); function Ds(){const t={};Object.keys(Qt).forEach(e=>{t[Qt[e].key]=jt(e)});return t} o(Ds,"exportUiSettings"); function Ns(t){if(!t||typeof t!=="object")return;let e=false;Object.keys(Qt).forEach(n=>{const r=Qt[n].key;if(!Object.prototype.hasOwnProperty.call(t,r))return;GM_setValue(r,t[r]);e=true});if(e)Te()} o(Ns,"importUiSettings"); var qs=`.ad-box, .bcpic2 { display: none !important; } iframe[src*="jads.co"], iframe[src*="adshow.php"] { display: none !important; } .topbanner1, #topbanner11 { display: none !important; } .sidebanner1, #sidebanner11 { display: none !important; } #middlebanner11, #middletextbanner { display: none !important; } #float-ad { display: none !important; } #fuck-u { display: none !important; } .artplayer-plugin-ads { display: none !important; } .t-img-box, #iaujwnefhw { display: none !important; } .mi_btcon.ad, .module-adslist, .ads_w, .footerad, .right-ad, .close-ads, .gg-icon { display: none !important; } a[data-gaze-ad-banner], a[href*="ad.wyspg.com"] { display: none !important; } [class*="video-ad-pause__Container"], .play-ad, .ad-row, .ec-ad, .ec-ad-double, .small-icon-container, a[href*="mitnpkwxvfr.com"], a[href*="taiee.xyz"] { display: none !important; } .site-promo-card, a[href*="mitnpkwxvfr.com"] { display: none !important; }`; var Ae="video_collector_adblock"; var pv="adBlockEnabled"; var Fs=false; function vv(){if(Fs)return;Fs=true;try{if(GM_getValue(Ae,null)!==null)return;const t=GM_getValue(pv,null);if(t!==null)GM_setValue(Ae,!!t)}catch(t){}} o(vv,"migrateLegacyKey"); function $r(){vv();return GM_getValue(Ae,true)} o($r,"isAdBlockEnabled"); function zr(){const t="vc-adblock-style";if(!$r()){const r=document.getElementById(t);if(r)r.remove();return}if(document.getElementById(t))return;const e=document.createElement("style");e.id=t;e.textContent=qs;const n=o(()=>{const r=document.head||document.documentElement;if(r){r.appendChild(e);return true}return false},"tryInject");if(!n()){const r=new MutationObserver(()=>{if(n())r.disconnect()});try{r.observe(document,{childList:true,subtree:true})}catch(i){requestAnimationFrame(n)}setTimeout(()=>r.disconnect(),3e3)}} o(zr,"applyAdBlock"); function Bs(t){GM_setValue(Ae,!!t);zr()} o(Bs,"setAdBlockEnabled"); function js(){return{[Ae]:$r()}} o(js,"exportAdblock"); function $s(t){if(!t||typeof t!=="object")return;if(!Object.prototype.hasOwnProperty.call(t,Ae))return;GM_setValue(Ae,!!t[Ae]);zr()} o($s,"importAdblock"); var mv=15e3; function zs(t,e){return new Promise(n=>{const r=o(i=>{fs("[\u5F71\u89C6\u6536\u85CF] \u5C01\u9762\u6293\u53D6\u5931\u8D25\uFF1A",i,t);n(null)},"fail");try{GM_xmlhttpRequest({method:"GET",url:t,headers:e?{Referer:e}:{},responseType:"arraybuffer",timeout:mv,onload:o(i=>{const c=i.response;if(!c||i.status&&i.status>=400){r(i.status);return}try{n(new Blob([c]))}catch(a){r("Blob \u6784\u9020\u5931\u8D25")}},"onload"),onerror:o(()=>r("\u7F51\u7EDC\u9519\u8BEF"),"onerror"),ontimeout:o(()=>r("\u8D85\u65F6"),"ontimeout")})}catch(i){n(null)}})} o(zs,"fetchImageBlob"); function Hr(t){return(t||"").replace(/^http:\/\//i,"https://")} o(Hr,"toHttps"); function Vt(t,e){const n=t||"";if(!n||/^[a-z][a-z0-9+.-]*:/i.test(n))return n;try{return new URL(n,e||location.href).href}catch(r){return n}} o(Vt,"toAbsoluteUrl"); var Hs=`
`; var Us=`
选择导入方式
`; function Vs(){const t=document.createElement("div");t.className="vc-confirm-mask";t.innerHTML=Hs;document.body.appendChild(t);requestAnimationFrame(()=>t.classList.add("vc-show"));function e(){t.classList.remove("vc-show");setTimeout(()=>t.remove(),150)}o(e,"close");return{mask:t,close:e}} o(Vs,"createModal"); function Le(t,{danger:e=false}={}){return new Promise(n=>{const{mask:r,close:i}=Vs();r.querySelector(".vc-confirm-text").textContent=t;if(e)r.querySelector(".vc-confirm-ok").classList.add("vc-danger");function c(a){i();n(a)}o(c,"finish");r.querySelector(".vc-confirm-cancel").onclick=()=>c(false);r.querySelector(".vc-confirm-ok").onclick=()=>c(true);r.onclick=a=>{if(a.target===r)c(false)}})} o(Le,"showConfirm"); function Gs(t){return new Promise(e=>{const{mask:n,close:r}=Vs();n.querySelector(".vc-confirm-text").textContent=t;n.querySelector(".vc-confirm-cancel").style.display="none";n.querySelector(".vc-confirm-ok").onclick=()=>{r();e()};n.onclick=i=>{if(i.target===n){r();e()}}})} o(Gs,"showAlert"); function Ks(){return new Promise(t=>{const e=document.createElement("div");e.className="vc-confirm-mask";e.innerHTML=Us;document.body.appendChild(e);requestAnimationFrame(()=>e.classList.add("vc-show"));function n(r){e.classList.remove("vc-show");setTimeout(()=>e.remove(),150);t(r)}o(n,"close");e.querySelectorAll(".vc-import-option").forEach(r=>{r.onclick=()=>n(r.dataset.vcStrategy)});e.querySelector(".vc-confirm-cancel").onclick=()=>n(null);e.onclick=r=>{if(r.target===e)n(null)}})} o(Ks,"showImportStrategyDialog"); var Ys=2e3; var Ws=2e3; var Xs=4e3; var Js=8e3; var Zs=60; var Qs=8; var tl=1e4; var el=1e4; var bv=''; function yv(t){let e=0;for(const n of String(t||"")){const r=n.codePointAt(0);const i=r>=11904&&r<=40959||r>=63744&&r<=64255||r>=65280&&r<=65376||r>=12288&&r<=12351;e+=i?1:.5}return Math.ceil(e)} o(yv,"readableLength"); function xv(t,{tone:e="info",duration:n=0,clickable:r=false}={}){const i=Number(n);if(Number.isFinite(i)&&i>0)return i;const c=e==="error"?Js:e==="warn"?Xs:e==="ok"?Ws:Ys;const a=Math.max(0,yv(t)-Qs)*Zs;const s=Math.min(tl,c+a);return r?Math.max(s,el):s} o(xv,"toastDuration"); function rt(t,{tone:e="info",duration:n=0,icon:r="",variant:i="",emphasis:c="",onClick:a=null,linkText:s=""}={}){let l=document.querySelector(".vc-toast");if(!l){l=document.createElement("div");l.className="vc-toast";l.innerHTML=` ${bv} `;l.querySelector(".vc-toast-close").addEventListener("click",()=>{l.classList.remove("vc-show")});l.addEventListener("click",_=>{if(_.target.closest(".vc-toast-close"))return;if(typeof l._onClick!=="function")return;const y=l._onClick;l._onClick=null;l.classList.remove("vc-toast-clickable");l.classList.remove("vc-show");y()});document.body.appendChild(l)}l._onClick=typeof a==="function"?a:null;l.classList.toggle("vc-toast-clickable",!!l._onClick);l.classList.remove("vc-show");void l.offsetWidth;l.classList.toggle("vc-toast-primary",i==="primary");l.querySelector(".vc-toast-icon").style.display=r==="play"?"":"none";const p=l.querySelector(".vc-toast-text");const d=[];const E=o((_,y)=>{const P=_?t.indexOf(_):-1;if(P>=0)d.push({at:P,len:_.length,cls:y})},"mark");E(c,"vc-toast-emph");E(s,"vc-toast-link");d.sort((_,y)=>_.at-y.at);p.textContent="";if(!d.length){p.textContent=t}else{let _=0;d.forEach(y=>{if(y.at<_)return;if(y.at>_)p.append(document.createTextNode(t.slice(_,y.at)));const P=document.createElement("span");P.className=y.cls;P.textContent=t.slice(y.at,y.at+y.len);p.append(P);_=y.at+y.len});if(_l.classList.remove("vc-show"),x)} o(rt,"showToast"); var Ce=24*60*60*1e3; var nl=[30*Ce,60*Ce]; var Vr=Infinity; var dl=90*Ce; var wv=3; var xi=2*Ce; var Sv=3*Ce; var Ev=1*Ce; var _v=45*1e3; var hi=5*60*1e3; var rl=3; var ol=[20*60*1e3,2*60*60*1e3,6*60*60*1e3,24*60*60*1e3]; var kv=24*60*60*1e3; var Tv=3; var Hn=24; var wi=10*60*1e3; var Gr=30; var Av=1; var Lv=8e3; var Cv=4e3; var fl=1e4; var dn=3; var il=24; var te=null; var gt=[]; var Un=new Map; var gi=new Set; var Pt=new Set; var $n=0; var zn=null; var Ur=0; var fn=0; var cl=false; var bi=null; function pl(t){bi=t} o(pl,"setBudgetGuard"); function Me(){let t=null;try{t=JSON.parse(GM_getValue(Vo,""))||null}catch(e){t=null}if(!t||typeof t.until!=="number"){return{until:0,kind:"soft",level:0,reason:"",at:0}}if(t.level&&Date.now()-(t.at||0)>kv){t={until:0,kind:t.kind,level:0,reason:t.reason,at:t.at}}return t} o(Me,"loadBlock"); function Si(t){try{GM_setValue(Vo,JSON.stringify(t))}catch(e){}} o(Si,"commitBlock"); function yi(t,e,n,r){const i=Date.now();Si({until:i+n,kind:t,level:e,reason:r,at:i});if(t==="soft")El()} o(yi,"applyBlock"); function vl(t){const e=Me();return e.kind===t?e.level:0} o(vl,"baseLevel"); function ml(t){return typeof t==="string"&&t.length>0&&ta.test(t)} o(ml,"isBlockPage"); function Gt(){if(te)return te;try{te=JSON.parse(GM_getValue(on,"{}"))||{}}catch(t){te={}}if(!cl){cl=true;let t=0,e=0;const n=Date.now();Object.keys(te).forEach(r=>{const i=te[r];if(!i||!i.miss)return;if(i.v!==dn){delete te[r];t++;return}if(n-(i.ts||0)>=xi){delete te[r];e++}});if(t){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6E05\u7406 "+t+' \u6761\u65E7\u6570\u636E\u6E90\u7559\u4E0B\u7684"\u672A\u547D\u4E2D"\u7F13\u5B58\uFF0C\u4F1A\u91CD\u65B0\u67E5\u4E00\u6B21')}if(e){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6E05\u7406 "+e+' \u6761\u5DF2\u8FC7\u51B7\u5374\u671F\u7684"\u672A\u547D\u4E2D"\u7F13\u5B58')}if(t||e)be(te)}return te} o(Gt,"load"); function be(t){te=t;try{GM_setValue(on,JSON.stringify(t))}catch(e){}if(bi)bi()} o(be,"commit"); var al=500; function Mv(t){try{return en(JSON.stringify(t))}catch(e){return 0}} o(Mv,"storeBytes"); function hl(t){const e=Gt();let n=Mv(e);if(n<=t)return{removed:0,bytes:n};const r=Date.now();const i=[],c=[],a=[];Object.keys(e).forEach(p=>{const d=e[p];if(!d)return;if(d.miss){if(r-(d.ts||0)>=xi)i.push(p);return}if(d.src==="dom")c.push(p);else a.push(p)});const s=o((p,d)=>(e[p].ts||0)-(e[d].ts||0),"byOldest");i.sort(s);c.sort(s);a.sort(s);let l=0;for(const p of[i,c,a]){for(const d of p){if(n<=t||l>=al)break;try{n-=en(d)+en(JSON.stringify(e[d]))+3}catch(E){n-=60}delete e[d];l++}if(n<=t||l>=al)break}if(l)be(e);return{removed:l,bytes:n}} o(hl,"reclaimRatings"); function gl(t,e){const n=Number(t),r=Number(e);return n>0&&n===r} o(gl,"sameScore"); function Vn(t){if(!t)return 0;if(t.norate)return Sv;if(!t.score)return 0;if(t.src==="dom")return(t.n||0)>=wv?Vr:dl;const e=(t.n||1)-1;return e=Vn(e)} o(bl,"isStale"); function yl(){return Gt()} o(yl,"loadRatingMap"); function xl(t){be(t||{})} o(xl,"saveRatingMap"); function _i(t){return"https://search.douban.com/movie/subject_search?search_text="+encodeURIComponent(t||"")} o(_i,"searchUrlOf"); function Yr(t){return t?"https://movie.douban.com/subject/"+t+"/":""} o(Yr,"subjectUrlOf"); var Iv=/^https?:\/\/movie\.douban\.com\/(?:subject|movie|tv)\/(\d+)\/?$/; var Pv=/\/(?:subject|movie|tv)\/(\d{4,})/; function Wr(t,e){const n=String(t||"").trim();if(/^https:\/\/movie\.douban\.com\/subject\/\d+\/?$/.test(n))return n;const r=n.match(Iv)||n.match(/^(\d{4,})$/)||n.match(Pv);return Yr(r&&r[1]||e)} o(Wr,"sanitizeDoubanUrl"); function wl(){te={};const t=Me();if(t.until>Date.now()&&t.kind==="hard"){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u673A\u6B63\u88AB\u8C46\u74E3\u62E6\u4E0B\uFF08"+(t.reason||"HTTP 403")+"\uFF09\uFF0C\u8FD8\u6709 "+Math.ceil((t.until-Date.now())/6e4)+" \u5206\u949F\u81EA\u52A8\u6062\u590D \u2014\u2014 \u6E05\u9664\u7F13\u5B58\u4E0D\u4F1A\u63D0\u524D\u653E\u884C")}else{Si({until:0,kind:"soft",level:0,reason:"",at:t.at})}clearTimeout(zn);zn=null;Pt.clear();fn=0;try{GM_setValue(vr,"[]")}catch(e){}try{GM_setValue(on,"{}")}catch(e){}} o(wl,"clearRatingCache"); function Ov(t){const e=Gt();e[J(t)]={miss:true,ts:Date.now(),v:dn};be(e);$t(t,null)} o(Ov,"markMiss"); function Rv(t,e){const n=Gt();const r=J(t);const i=n[r];const c=e&&e.id?String(e.id):"";const a={score:"",title:e&&e.title||t,url:Wr(e&&e.url,c)||Yr(c)||_i(t),ts:Date.now(),miss:false,norate:true,v:dn,src:"api"};if(c)a.did=c;else if(i&&i.did)a.did=i.did;n[r]=a;be(n);$t(t,n[r])} o(Rv,"markNoRate"); function Sl(t,e){return ki([{name:t,rating:e}])} o(Sl,"putSiteRating"); function ki(t){const e=(t||[]).filter(s=>s&&s.name&&s.rating);if(!e.length)return 0;const n=Gt();let r=0;let i=0;let c=0;const a=[];e.forEach(s=>{const l=Dv(n,s.name,s.rating);if(l==="score"){r++;a.push(s.name)}else if(l==="flag"){i++}else if(l==="id"){c++}});if(!r&&!i&&!c)return 0;be(n);if(r){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u7AD9\u70B9\u81EA\u5E26 "+r+" \u6761\uFF1A"+a.slice(0,6).map(s=>s+" \u2192 "+n[J(s)].score).join("\uFF0C")+(a.length>6?" \u7B49":""))}if(c){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+c+" \u6761\u7AD9\u70B9\u9875\u9762\u6CA1\u5370\u5206\uFF0C\u4F46\u7ED9\u4E86\u8C46\u74E3\u6761\u76EE \u2014\u2014 \u6253\u5F00\u9762\u677F\u65F6\u6309\u6761\u76EE\u7CBE\u786E\u67E5\u4E00\u6B21\uFF08\u4E0D\u9760\u7247\u540D\u731C\uFF09")}a.forEach(s=>$t(s,n[J(s)]));return r} o(ki,"putSiteRatings"); function Dv(t,e,n){const r=String(n&&n.score||"");const i=Bo(n&&n.url);const c=J(e);const a=t[c];if(!(Number(r)>0)){if(!i)return"";if(a&&!a.miss&&(a.score||a.did===i))return"";t[c]={score:"",did:i,ts:Date.now(),miss:false,v:dn,src:"dom"};return"id"}if(a&&!a.miss){if(gl(a.score,r))return"";if(a.src==="api"){if(Vn(a)===Vr)return"";const l=Date.now();if(a.conflict&&l-a.conflictrl){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u8FDE\u7EED "+rl+" \u8F6E\u88AB\u6321\uFF0C\u672C\u8F6E\u653E\u5F03\u5269\u4E0B\u7684 "+gt.length+" \u90E8\uFF0C"+Math.round(hi/1e3)+" \u79D2\u540E\u91CD\u65B0\u8D77\u7B97");while(gt.length)$t(gt.shift(),null);yi("soft",0,hi,t);return}const r=Math.min(_v*Math.pow(2,n-1),hi);yi("soft",n,r,t);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+t+"\uFF08"+e+"\uFF09\u2014\u2014 \u7B2C "+n+" \u8F6E\u88AB\u6321\uFF0C"+Math.round(r/1e3)+" \u79D2\u540E\u7EE7\u7EED\u67E5\u961F\u5217\u91CC\u5269\u4E0B\u7684 "+gt.length+' \u90E8\u3002\u8FD9\u662F\u8C46\u74E3\u63A5\u53E3\u4E34\u65F6\u4E0D\u53EF\u7528\uFF0C\u4E0D\u662F"\u8FD9\u90E8\u7247\u67E5\u4E0D\u5230"')} o(fe,"markBlocked"); function Kr(t,e){const n=vl("hard")+1;const r=ol[Math.min(n-1,ol.length-1)];yi("hard",n,r,t);const i=Math.round(r/6e4);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+t+"\uFF08"+e+"\uFF09\u2014\u2014 \u8C46\u74E3\u63A5\u53E3\u5DF2\u62E6\u4E0B\u672C\u673A\u7684\u67E5\u8BE2\uFF0C\u7B2C "+n+" \u6B21\uFF0C\u6682\u505C "+(i>=60?Math.round(i/60)+" \u5C0F\u65F6":i+" \u5206\u949F")+'\u540E\u81EA\u52A8\u91CD\u8BD5\uFF08\u5237\u65B0\u9875\u9762\u4E5F\u4E0D\u4F1A\u63D0\u524D\u653E\u884C\uFF0C\u5426\u5219\u8D8A\u6253\u5C01\u5F97\u8D8A\u4E45\uFF09\u3002\u8FD9\u4E0D\u662F"\u8FD9\u90E8\u7247\u67E5\u4E0D\u5230"\uFF0C\u4E5F\u4E0D\u4F1A\u5199\u8FDB\u7F13\u5B58');$t(e,null);while(gt.length)$t(gt.shift(),null)} o(Kr,"markHardBlocked"); function El(){clearTimeout(zn);zn=setTimeout(()=>{zn=null;Xr()},Math.max(1e3,Me().until-Date.now()+150))} o(El,"ensureResume"); function _l(){Ur=0;const t=Me();if(t.level||t.until)Si({until:0,kind:"soft",level:0,reason:"",at:t.at})} o(_l,"resetBackoff"); var sl={\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9}; function Nv(t){if(/^\d+$/.test(t))return Number(t);if(t==="\u5341")return 10;const e=t.match(/^十([一二三四五六七八九])$/);if(e)return 10+sl[e[1]];return sl[t]||0} o(Nv,"cnToInt"); function jn(t){const e=String(t||"");const n=e.match(/s(\d{1,2})(?![a-z0-9])/)||e.match(/第\s*([0-9]{1,2}|[一二三四五六七八九十]{1,3})\s*(?:季|部|期|篇)/);return n?String(Nv(n[1])):""} o(jn,"seasonOf"); function ll(t){return String(t||"").replace(/(^|[^a-z])s\d{1,2}(?![a-z0-9])/g,"$1").replace(/第\s*[0-9一二三四五六七八九十]{1,3}\s*(?:季|部|期|篇)/g,"").replace(/\s+/g," ").trim()} o(ll,"stripSeasonTag"); function qv(t,e,n){const r=J(n||e);if(!r)return null;const i=t.filter(x=>J(x.title||"")===r);const c=i.find(x=>x.rate);if(c)return c;const a=o(x=>x.rate?0:50,"ratePenalty");const s=ll(r);if(s){const x=t.filter(_=>{const y=J(_.title||"");if(ll(y)!==s)return false;const P=jn(y);const b=jn(r);return!(P&&b&&P!==b)});if(x.length){x.sort((_,y)=>a(_)-a(y)||J(_.title||"").length-J(y.title||"").length);return x[0]}}const l=jn(J(e))||jn(r);const p=Math.max(3,Math.round(r.length*.6));const d=100;let E=null;t.forEach(x=>{const _=J(x.title||"");if(!_)return;if(_.indexOf(r)===-1&&r.indexOf(_)===-1)return;const y=jn(_);if(l&&y&&l!==y)return;const P=Math.abs(_.length-r.length);if(P>p)return;const b=P+a(x)+(Boolean(l)!==Boolean(y)?d:0);if(!E||b{const r=n&&n.target;if(!r||!r.id)return;if(n.target_type!=="movie"&&n.target_type!=="tv")return;e.push({title:r.title||"",rate:r.rating&&r.rating.value?String(r.rating.value):"",id:String(r.id),url:Yr(r.id)})});return e} o(Fv,"mapSearchItems"); function Bv(t){const e=J(t);const n=Gt()[e];if(!n||n.miss||n.src!=="dom")return false;const r=Gt();r[e]={...n,ts:Date.now(),n:(n.n||0)+1};be(r);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+t+"\u300D\u63A5\u53E3\u6CA1\u5BF9\u4E0A\uFF0C\u4FDD\u7559\u7AD9\u70B9\u9875\u9762\u7684 "+n.score+" \u5206\uFF08\u5DF2\u6838\u5BF9 "+r[e].n+" \u6B21\uFF09");$t(t,r[e]);return true} o(Bv,"keepSiteScore"); function kl(t){const e=[];dr(t).forEach(n=>{let r=n.length>il?n.slice(0,il).trim():n;if(r.length>=2&&e.indexOf(r)===-1)e.push(r)});return e} o(kl,"buildQueries"); function jv(t,e){const n=kl(t).find(r=>r.length{$n--;setTimeout(Xr,Ml())});return"sent"} o(jv,"retryShorter"); function $v(t,e,n,r){if(e===403||e===429){Kr("HTTP "+e,t);return null}if(e!==200){fe("HTTP "+e,t);return null}let i=null;try{i=JSON.parse(n)}catch(l){i=null}const c=i&&Array.isArray(i.items)?i.items:null;if(!c){if(ml(n)){Kr("\u8C46\u74E3\u8FD4\u56DE\u9A8C\u8BC1\u9875",t);return null}fe(i&&(i.msg||"code "+i.code)||"\u54CD\u5E94\u683C\u5F0F\u5F02\u5E38",t);return null}const a=Fv(c);if(a.length){_l()}else{Ur++;if(Ur>=Tv){fe("\u8FDE\u7EED "+Ur+" \u6B21\u7A7A\u7ED3\u679C\uFF08\u8C46\u74E3\u591A\u534A\u5728\u8F6F\u9650\u6D41\u6216\u62D2\u7EDD\u672C\u673A\uFF09",t);return null}}const s=qv(a,t,r);if(s&&s.rate){Tl(t,s,"");return null}if(!a.length){const l=jv(t,r);if(l==="sent")return null;if(l==="gated"){$t(t,null);return null}}if(Bv(t))return null;if(s){U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+t+"\u300D\u547D\u4E2D\u6761\u76EE "+s.id+"\uFF08"+(s.title||"")+"\uFF09\u4F46\u8C46\u74E3\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09");Rv(t,s);return null}U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672A\u547D\u4E2D\u300C"+t+"\u300D\uFF0C\u8FD4\u56DE "+a.length+" \u6761\u5019\u9009\uFF1A"+a.slice(0,6).map(l=>l.title).join(" / "));Ov(t);return null} o($v,"applyResult"); function Tl(t,e,n,r){const i=Gt();const c=J(t);const a=i[c];const s=a&&!a.miss&&a.src==="api"&&gl(a.score,e.rate);const l={score:String(e.rate),title:e.title||t,url:Wr(e.url,e.id)||_i(t),ts:Date.now(),miss:false,v:dn,src:"api",n:s?(a.n||1)+1:1};if(n)l.did=String(n);else if(a&&a.did)l.did=a.did;i[c]=l;be(i);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A"+t+" \u2192 "+e.rate+"\uFF08"+e.title+(r?"\uFF0C\u6309\u8C46\u74E3\u6761\u76EE "+r+" \u53D6\u5230":"")+"\uFF0C\u7B2C "+i[c].n+" \u6B21\u786E\u8BA4"+(s?"\uFF0C\u6709\u6548\u671F\u5347\u5230 "+(Vn(i[c])===Vr?"\u4E0D\u8FC7\u671F":Math.round(Vn(i[c])/Ce)+" \u5929"):"")+"\uFF09");$t(t,i[c])} o(Tl,"commitHit"); function zv(t,e){const n=Gt();const r=J(t);const i=n[r];if(!i||i.miss)return;if(i.did&&String(i.did)!==String(e))return;if(i.score)delete i.did;else delete n[r];be(n)} o(zv,"dropDid"); function $t(t,e){const n=Un.get(J(t));if(!n)return;Un.delete(J(t));n.forEach(r=>{try{r(e)}catch(i){}})} o($t,"fire"); function Al(t,e){const n=e?"":Hv(t);return n?Uv(t,n):Gv(t,e)} o(Al,"run"); function Hv(t){const e=Gt()[J(t)];return e&&!e.miss&&e.did?String(e.did):""} o(Hv,"didOf"); function Uv(t,e){return new Promise(n=>{let r=false;const i=o(()=>{if(r)return;r=true;n()},"done");try{fn++;Ll();GM_xmlhttpRequest({method:"GET",url:Qc+encodeURIComponent(e),timeout:fl,onload:o(c=>{const a=Vv(t,c.status,c.responseText,e);if(a)a.then(i);else i()},"onload"),onerror:o(c=>{fe("\u8BF7\u6C42\u5931\u8D25 "+(c&&c.error||""),t);i()},"onerror"),ontimeout:o(()=>{fe("\u8BF7\u6C42\u8D85\u65F6",t);i()},"ontimeout")})}catch(c){fe("\u65E0\u6CD5\u53D1\u8D77\u8BF7\u6C42\uFF08"+(c&&c.message)+"\uFF09",t);i()}})} o(Uv,"runById"); function Vv(t,e,n,r){if(e===403||e===429){Kr("HTTP "+e,t);return}if(e!==200){fe("HTTP "+e,t);return}if(ml(n)){Kr("\u8C46\u74E3\u8FD4\u56DE\u9A8C\u8BC1\u9875",t);return}_l();let i=null;try{i=JSON.parse(n)}catch(s){i=null}const c=i&&i.r===0&&i.subject?i.subject:null;const a=c?String(c.rate||"").trim():"";if(!(Number(a)>0)){zv(t,r);U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u300C"+t+"\u300D\u7684\u8C46\u74E3\u6761\u76EE "+r+" \u53D6\u4E0D\u5230\u8BC4\u5206\uFF08"+(c?"\u8BE5\u6761\u76EE\u6682\u65E0\u8BC4\u5206":"\u6761\u76EE\u4E0D\u5B58\u5728\u6216\u5DF2\u5408\u5E76")+"\uFF09\uFF0C\u6539\u7528\u7247\u540D\u641C\u7D22");if(gt.indexOf(t)===-1)gt.push(t);return}Tl(t,{rate:a,title:c.title||t,url:Wr(c.url,r)||Yr(r),id:r},r,r)} o(Vv,"applyIdResult"); function Gv(t,e){return new Promise(n=>{let r=false;const i=o(()=>{if(r)return;r=true;n()},"done");const c=e||kl(t)[0]||t;try{fn++;Ll();GM_xmlhttpRequest({method:"GET",headers:{"User-Agent":Jc,Referer:Zc},url:Wc+encodeURIComponent(c)+"&apikey="+encodeURIComponent(Xc),timeout:fl,onload:o(a=>{$v(t,a.status,a.responseText,c);i()},"onload"),onerror:o(a=>{fe("\u8BF7\u6C42\u5931\u8D25 "+(a&&a.error||""),t);i()},"onerror"),ontimeout:o(()=>{fe("\u8BF7\u6C42\u8D85\u65F6",t);i()},"ontimeout")})}catch(a){fe("\u65E0\u6CD5\u53D1\u8D77\u8BF7\u6C42\uFF08"+(a&&a.message)+"\uFF09",t);i()}})} o(Gv,"runSearch"); function Ti(){let t=[];try{t=JSON.parse(GM_getValue(vr,"[]"))||[]}catch(n){t=[]}const e=Date.now();return t.filter(n=>typeof n==="number"&&e-n=Hn){if(!Pt.has("session-max")){Pt.add("session-max");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u6B21\u4F1A\u8BDD\u5DF2\u53D1\u51FA "+Hn+" \u6B21\u8BF7\u6C42\uFF0C\u5269\u4E0B\u7684\u5237\u65B0\u9875\u9762\u540E\u63A5\u7740\u67E5\uFF08\u4E00\u6B21\u6253\u592A\u591A\u4F1A\u62DB\u6765\u8C46\u74E3\u7684\u9650\u6D41\u4E0E\u5C01\u7981\uFF09")}return false}if(Ti().length>=Gr){if(!Pt.has("window-max")){Pt.add("window-max");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6700\u8FD1 "+Math.round(wi/6e4)+" \u5206\u949F\u5DF2\u7D2F\u8BA1\u53D1\u51FA "+Gr+" \u6B21\u8BF7\u6C42\uFF08\u8DE8\u5237\u65B0\u4E00\u8D77\u7B97\uFF1B\u6309\u540D\u5B57\u67E5\u4E00\u90E8\u6700\u591A\u4E24\u53D1\uFF09\uFF0C\u5148\u6B47\u4E00\u4F1A\u513F \u2014\u2014 \u7A97\u53E3\u6ED1\u8FC7\u53BB\u540E\u5F00\u9762\u677F\u4F1A\u81EA\u52A8\u63A5\u7740\u67E5")}return false}return true} o(Ai,"budgetLeft"); function Cl(){const t=Date.now();const e=Me();let n=0;if(e.until>t)n=e.kind==="hard"?-1:Math.ceil((e.until-t)/1e3);const r=Gt()||{};let i=0;Object.keys(r).forEach(c=>{const a=r[c];if(a&&!a.miss&&Number(a.score)>0)i++});return{sessionLeft:Math.max(0,Hn-fn),sessionMax:Hn,windowLeft:Math.max(0,Gr-Ti().length),windowMax:Gr,windowMinutes:Math.round(wi/6e4),pausedSec:n,cached:Object.keys(r).length,scored:i}} o(Cl,"budgetStatus"); function Kv(){return Date.now()>=Me().until&&Ai()} o(Kv,"canSendMore"); function Ml(){return Lv+Math.random()*Cv} o(Ml,"gapDelay"); function Xr(){if(Date.now(){$n--;gi.delete(J(t));const e=Ml();U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u95F4\u9694 "+(e/1e3).toFixed(1)+"s \u540E\u7EE7\u7EED\uFF08\u961F\u5217\u8FD8\u5269 "+gt.length+" \u90E8\uFF0C\u672C\u4F1A\u8BDD\u5DF2\u53D1 "+fn+"/"+Hn+"\uFF09");setTimeout(Xr,e)})}} o(Xr,"pump"); var ul=0; function Il(){if(!gt.length)return;const t=gt.length;gt.forEach(n=>Un.delete(J(n)));gt.length=0;const e=Date.now();if(e-ul>1e4){ul=e;U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u91CD\u7ED8\uFF0C\u4E22\u5F03\u8FD8\u6CA1\u53D1\u51FA\u7684 "+t+" \u4E2A\u4EFB\u52A1\uFF08\u4E0B\u6B21\u6E32\u67D3\u4F1A\u91CD\u65B0\u6392\uFF09")}} o(Il,"dropPending"); function Pl(t,e,{force:n=false}={}){if(!t)return;const r=J(t);if(e){const a=Un.get(r)||[];a.push(e);Un.set(r,a)}if(!Ai()){$t(t,null);return}const i=Me();if(i.until>Date.now()){if(i.kind==="hard"){if(!Pt.has("403")){Pt.add("403");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u672C\u673A\u6B63\u88AB\u8C46\u74E3\u62E6\u4E0B\uFF08"+(i.reason||"HTTP 403")+"\uFF09\uFF0C\u8FD8\u6709 "+Math.ceil((i.until-Date.now())/6e4)+" \u5206\u949F\u81EA\u52A8\u6062\u590D\uFF1B\u5237\u65B0\u9875\u9762\u4E5F\u4E0D\u4F1A\u63D0\u524D\u653E\u884C\uFF0C\u5426\u5219\u8D8A\u6253\u5C01\u5F97\u8D8A\u4E45")}$t(t,null);return}if(gt.indexOf(t)===-1)gt.push(t);if(!Pt.has("blocked")){Pt.add("blocked");U("[\u5F71\u89C6\u6536\u85CF] \u8C46\u74E3\u8BC4\u5206\uFF1A\u6B63\u5904\u5728\u88AB\u6321\u540E\u7684\u6682\u505C\u671F\uFF0C\u5269\u4E0B\u7684\u7247\u540D\u4F1A\u9694\u4E00\u4F1A\u513F\u81EA\u52A8\u63A5\u7740\u67E5")}El();return}const c=Gt()[r];if(!n){if(c&&c.miss&&Date.now()-(c.ts||0)-1||gi.has(r))return;gt.push(t);Xr()} o(Pl,"requestRating"); var Yv=["name","cover","path","siteId","createTime","updateTime"]; var Rl=[ge]; var Dl=[Ln]; function Wv(t,e){try{const n=GM_getValue(t,null);if(n==null)return e;const r=JSON.parse(n);return Array.isArray(r)?r:e}catch(n){return e}} o(Wv,"readJsonKey"); function Xv(){const t={...Ds(),...js()};Rl.forEach(e=>{t[e]=GM_getValue(e,true)!==false});Dl.forEach(e=>{t[e]=Wv(e,[])});return t} o(Xv,"loadPrefs"); function Jv(t){if(!t||typeof t!=="object")return;Ns(t);$s(t);Rl.forEach(e=>{if(Object.prototype.hasOwnProperty.call(t,e))GM_setValue(e,t[e]!==false)});Dl.forEach(e=>{if(!Object.prototype.hasOwnProperty.call(t,e))return;const n=Array.isArray(t[e])?t[e]:[];GM_setValue(e,JSON.stringify(n))})} o(Jv,"savePrefs"); var Li=gs({storageKey:Vc,backupFileName:"\u5168\u7F51\u5F71\u89C6\u6536\u85CF\u5907\u4EFD",moduleId:"drama",itemIdField:"name",itemFields:Yv,showAlert:Gs,confirmExport:Le,chooseImportStrategy:Ks,playbackLoadFn:em,playbackSaveFn:nm,ratingsLoadFn:yl,ratingsSaveFn:xl,prefsLoadFn:Xv,prefsSaveFn:Jv,siteNamesLoadFn:ls,siteNamesSaveFn:us,budgetKeys:{playback:$e,ratings:on,images:Tn,imageTabs:An},reclaimRatingsFn:hl,onBudgetNotice:o(t=>{rt(t,{tone:"error"});It.renderedTabs.clear()},"onBudgetNotice")}); pl(()=>Li.enforceBudget()); var{loadData:Tt,saveData:Kt,exportData:Nl,importData:ql} =Li; var Fl=Li.usageInfo; function Gn(t,e,n){try{GM_setValue(t,e);return true}catch(r){Nr("[\u5F71\u89C6\u6536\u85CF] "+n+"\u5199\u5165\u5931\u8D25",r);rt("\u5B58\u50A8\u5199\u5165\u5931\u8D25\uFF08"+n+"\uFF09\uFF0C\u8BF7\u5BFC\u51FA\u5907\u4EFD\u540E\u6E05\u7406\u90E8\u5206\u5185\u5BB9",{tone:"error"});return false}} o(Gn,"safeSetValue"); function Ft(t,e){return e.findIndex(n=>je(n.name,t))} o(Ft,"findItem"); function Ci(){try{return JSON.parse(GM_getValue(Tn,"{}"))}catch(t){return{}}} o(Ci,"loadImageCache"); function Ie(t,e){if(!t||Et(e))return;const n=Ci();n[t]=Vt(e);Gn(Tn,JSON.stringify(n),"\u56FE\u7247\u7F13\u5B58")} o(Ie,"setImageCache"); function Kn(t){const e=Ci();const n=e[t]?t:Object.keys(e).find(i=>je(i,t));const r=n?e[n]:"";if(!r)return"";return typeof r==="string"?r:r.cover||""} o(Kn,"readImageCache"); function Yn(t){const e=Tt();for(const r of["want","watched"]){const i=Ft(t,e[r]);if(i>-1&&En(e[r][i]))return e[r][i].cover}const n=ie(t);return En(n)?n.cover:""} o(Yn,"getCoverFromExisting"); function Mi(){try{return JSON.parse(GM_getValue(An,"{}"))}catch(t){return{}}} o(Mi,"loadPlayTabsAlive"); function Ii(t){if(!t)return;const e=Mi();e[t]=Date.now();Gn(An,JSON.stringify(e),"\u64AD\u653E\u72B6\u6001")} o(Ii,"markPlayTabAlive"); function Bl(t){if(!t)return;const e=Mi();e[t]=0;Gn(An,JSON.stringify(e),"\u64AD\u653E\u72B6\u6001")} o(Bl,"expirePlayTabAlive"); function jl(t=""){const e=Mi();const n=Ci();let r=false;Object.keys(n).forEach(i=>{if(je(i,t))return;if(e[i]===0){delete n[i];r=true}});if(r)Gn(Tn,JSON.stringify(n),"\u56FE\u7247\u7F13\u5B58")} o(jl,"handlePageCache"); var Jr=["episode","time","cover","path","siteId","updateTime"]; function Zv(t){const e=Jr.map(r=>t[r]===void 0?"":t[r]);const n={};Object.keys(t).forEach(r=>{if(Jr.indexOf(r)>=0||r==="name")return;n[r]=t[r]});if(Object.keys(n).length)e.push(n);return e} o(Zv,"encodeRecord"); function Qv(t,e){if(!Array.isArray(e))return{name:t,...e};const n={name:t};Jr.forEach((i,c)=>{const a=e[c];if(a!==""&&a!==void 0&&a!==null)n[i]=a});const r=e[Jr.length];if(r&&typeof r==="object")Object.keys(r).forEach(i=>{n[i]=r[i]});return n} o(Qv,"decodeRecord"); var $l=false; var Ol=false; function tm(){try{if(GM_getValue(Uo,""))return false;const t=String(GM_getValue($e,"")||"");if(!t)return false;GM_setValue(Uo,t);return true}catch(t){Nr("[\u5F71\u89C6\u6536\u85CF] \u89C2\u770B\u8BB0\u5F55\u539F\u6587\u5907\u4EFD\u5931\u8D25",t);return false}} o(tm,"backupBrokenPlayback"); function Wn(t){if($l&&tm()&&!Ol){Ol=true;rt("\u89C2\u770B\u8BB0\u5F55\u8BFB\u53D6\u5F02\u5E38\uFF1A\u539F\u6587\u5DF2\u5907\u4EFD\uFF0C\u65B0\u8FDB\u5EA6\u7167\u5E38\u8BB0\u5F55\uFF08\u5EFA\u8BAE\u5BFC\u51FA\u5907\u4EFD\u540E\u6392\u67E5\uFF09",{tone:"error"})}const e={};Object.keys(t).forEach(n=>{e[n]=Zv(t[n])});Gn($e,JSON.stringify(e),"\u64AD\u653E\u8BB0\u5F55");It.renderedTabs.clear()} o(Wn,"writeRecords"); function ye(){let t=null;try{t=JSON.parse(GM_getValue($e,"{}"))}catch(n){$l=true;Nr("[\u5F71\u89C6\u6536\u85CF] \u89C2\u770B\u8BB0\u5F55\u89E3\u6790\u5931\u8D25\uFF08\u539F\u6587\u5DF2\u7559\u7ED9 writeRecords \u5907\u4EFD\uFF09",n);return{}}if(!t||typeof t!=="object")return{};const e={};Object.keys(t).forEach(n=>{e[n]=Qv(n,t[n])});return e} o(ye,"loadPlaybackRecords"); function Zr(t,e){if(!e||!t)return"";if(t[e])return e;return Object.keys(t).find(n=>je(n,e))||""} o(Zr,"findRecordKey"); function ie(t){const e=ye();const n=Zr(e,t);return n?e[n]:null} o(ie,"getPlaybackRecord"); function zl(t,{episode:e="",time:n=0,cover:r="",path:i="",siteId:c=""}={}){if(!t)return;const a=ye();const s=Zr(a,t)||t;a[s]={name:s,episode:e,time:n,cover:r,path:i,siteId:c,updateTime:Date.now()};Wn(a)} o(zl,"savePlaybackRecord"); function Hl(t){Wn(t)} o(Hl,"savePlaybackRecords"); function Pi(t,e={}){if(!t)return;const n=ye();const r=Zr(n,t);if(!r)return;n[r]={...n[r],...e};Wn(n)} o(Pi,"patchPlaybackRecord"); function Oi(t){const e=ye();const n=Zr(e,t);if(!n)return;delete e[n];Wn(e)} o(Oi,"deletePlaybackRecord"); function Ul(){const t=ye();const e=Tt();const n=new Map;const r=new Map;e.want.forEach(c=>{const a=J(c.name);n.set(a,c.cover);r.set(a,"want")});e.watched.forEach(c=>{const a=J(c.name);if(!n.has(a))n.set(a,c.cover);if(!r.has(a))r.set(a,"watched")});const i=new Map;Object.entries(t).forEach(([c,a])=>{const s=a.name||c;const l=J(s);const p=i.get(l);if(p&&(p.updateTime||0)>=(a.updateTime||0))return;i.set(l,{name:s,...a,cover:a.cover||n.get(l)||"",category:r.get(l)||""})});return Array.from(i.values()).sort((c,a)=>(a.updateTime||0)-(c.updateTime||0))} o(Ul,"loadPlaybackList"); function em(){return Object.entries(ye()).map(([t,e])=>({name:t,...e}))} o(em,"loadPlaybackExportList"); function nm(t=[]){const e={};t.forEach(n=>{if(!n||!n.name)return;const r={...n};delete r.category;r.episode=r.episode||"";r.time=r.time||0;r.cover=r.cover||"";r.path=r.path||"";r.siteId=r.siteId||"";r.updateTime=r.updateTime||Date.now();e[n.name]=r});Wn(e)} o(nm,"savePlaybackList"); var Ri=[0,5*60*1e3,30*60*1e3,2*60*60*1e3,6*60*60*1e3]; var Yl=Ri.length; var rm=7*24*60*60*1e3; var Pe=new Set; function Qr(t){const e={state:"",fail:0,ts:0,cover:"",siteId:"",coverFrom:"",coverSrc:""};if(!t)return e;const n=Tt();for(const i of["want","watched"]){const c=Ft(t,n[i]);if(c>-1){const a=n[i][c];return{state:a.coverState||"",fail:a.coverFail||0,ts:a.coverTs||0,cover:a.cover||"",siteId:a.siteId||"",coverFrom:a.coverFrom||"",coverSrc:a.coverSrc||""}}}const r=ie(t);if(!r)return e;return{state:r.coverState||"",fail:r.coverFail||0,ts:r.coverTs||0,cover:r.cover||"",siteId:r.siteId||"",coverFrom:r.coverFrom||"",coverSrc:r.coverSrc||""}} o(Qr,"readHealth"); function Wl(t,e){if(!t)return false;const n=t.state||"";const r=t.cover||"";if(!n)return!r||Et(r);if(n===Rt.OK)return false;if(n===Rt.ABANDONED)return e-(t.ts||0)>=rm;const i=Math.min(Math.max((t.fail||0)-1,0),Ri.length-1);return e-(t.ts||0)>=Ri[i]} o(Wl,"canRepair"); var om=/^fb:/; function Xl(t){if(!t)return false;if(!t.cover||Et(t.cover))return true;if(t.coverSrc===ur.PAGE)return false;return om.test(String(t.coverFrom||""))} o(Xl,"isGuessedCover"); function Vl(t,e){if(!t)return false;if(Xl(t))return true;return Wl({state:t.coverState||"",fail:t.coverFail||0,ts:t.coverTs||0,cover:t.cover||""},e)} o(Vl,"isRepairable"); var Jn=new Set; function Jl(){Jn=im();return Jn} o(Jl,"refreshRepairNames"); function Zl(t){if(t)Jn.add(t)} o(Zl,"addRepairName"); function Ql(t){if(!t)return"";if(Jn.has(t))return t;for(const e of Jn){if(je(e,t))return e}return""} o(Ql,"findRepairName"); function im(){const t=new Set;const e=Date.now();const n=Tt();["want","watched"].forEach(r=>{(n[r]||[]).forEach(i=>{if(i&&i.name&&Vl(i,e))t.add(i.name)})});Object.values(ye()).forEach(r=>{const i=r&&r.name;if(i&&Vl(r,e))t.add(i)});return t} o(im,"listRepairNames"); var Di=null; var Xn=new Map; function to(t,e){Xn.set(t,{...Xn.get(t)||{},...e});if(Di)return;Di=setTimeout(cm,300)} o(to,"enqueue"); function cm(){Di=null;if(!Xn.size)return;const t=Tt();let e=false;Xn.forEach((n,r)=>{["want","watched"].forEach(i=>{const c=Ft(r,t[i]);if(c>-1){t[i][c]={...t[i][c],...n};e=true}});Pi(r,n)});Xn.clear();if(e)Kt(t)} o(cm,"flushPending"); function tu(t,e,n=""){const r={cover:t,coverState:Rt.OK,coverFail:0,coverTs:Date.now()};if(e)r.coverFrom=e;if(n)r.coverSrc=n;return r} o(tu,"coverPatch"); var am=10*60*1e3; function eu(t,e=false){if(!t||e)return;const n="broken:"+t;if(Pe.has(n))return;Pe.add(n);const r=Qr(t);const i=Date.now();if((r.state===Rt.BROKEN||r.state===Rt.ABANDONED)&&i-(r.ts||0)Yl?Rt.ABANDONED:Rt.BROKEN,coverFail:c,coverTs:i})} o(eu,"markBroken"); function nu(){const t=o(c=>{if(!c)return false;const a=(c.coverFail||0)>Yl;if(c.coverState!==Rt.ABANDONED&&!a)return false;c.coverState=Rt.BROKEN;c.coverFail=1;c.coverTs=Date.now();return true},"fix");const e=Tt();let n=false;["want","watched"].forEach(c=>{(e[c]||[]).forEach(a=>{if(t(a))n=true})});if(n)Kt(e);const r=ye();let i=false;Object.keys(r).forEach(c=>{if(t(r[c]))i=true});if(i)Hl(r)} o(nu,"healOvercountedCovers"); function ru(t){if(!t)return;const e="missing:"+t;if(Pe.has(e))return;Pe.add(e);const n=Qr(t);if(n.state)return;to(t,{coverState:Rt.MISSING,coverFail:0,coverTs:Date.now()})} o(ru,"markMissing"); function ou(t){if(!t)return;const e="ok:"+t;if(Pe.has(e))return;Pe.add(e);const n=Qr(t);if(n.state===Rt.OK)return;to(t,{coverState:Rt.OK,coverFail:0,coverTs:Date.now()})} o(ou,"markOk"); function Gl(t,e,n="",r=""){if(!t||!e||Et(e))return false;const i=Vt(e);const c="ok:"+t;Pe.add(c);to(t,tu(i,n,r));Ie(t,i);return true} o(Gl,"applyRepair"); function Ni(t,e,n=""){if(!t||!e||Et(e))return;const r=Vt(e);Pi(t,tu(r,n));Ie(t,r);Pe.add("ok:"+t)} o(Ni,"syncCover"); function Kl(t,e,n=""){Nn("[\u5F71\u89C6\u6536\u85CF] \u5C01\u9762\u672A\u66F4\u65B0\uFF1A"+e,t,n||"")} o(Kl,"debugSkip"); function pn(t,e,n="",r=false){if(!t)return false;if(!e||Et(e)){Kl(t,"\u5F53\u524D\u9875\u9762\u7ED9\u7684\u5C01\u9762\u662F\u5360\u4F4D\u56FE");return false}const i=Qr(t);if(!Wl(i,Date.now())){if(!r||!Xl(i)){Kl(t,"\u8BE5\u5267\u4E0D\u5728\u5F85\u4FEE\u72B6\u6001",`state=${i.state||"unknown"} fail=${i.fail}`);return false}Nn("[\u5F71\u89C6\u6536\u85CF] \u901A\u7528\u7AD9\u70B9\u731C\u7684\u5C01\u9762\u5DF2\u6362\u6210\u9875\u9762\u81EA\u8EAB\u7684\u5C01\u9762\uFF1A",t);return Gl(t,e,n,ur.PAGE)}return Gl(t,e,n,ur.PAGE)} o(pn,"tryRepair"); var sm=12; var au=3; var lm=6; function Fi(t){const e=String(t==null?"":t).replace(/\s+/g," ").trim();if(!e||e.length>sm)return"";if(!wn(e)&&!Sn(e))return"";return qt(e)} o(Fi,"epKey"); function um(t){if(!t||t.disabled)return false;return!/(^|\s)vc-/.test(String(t.className||""))} o(um,"usable"); function qi(t){if(!t)return false;if(typeof t.getClientRects==="function"&&t.getClientRects().length)return true;try{const e=t.ownerDocument&&t.ownerDocument.defaultView;if(e&&e.getComputedStyle){let n=t;while(n&&n.nodeType===1){const r=e.getComputedStyle(n);if(r&&(r.display==="none"||r.visibility==="hidden"))return false;n=n.parentElement}}}catch(e){}return true} o(qi,"visible"); function dm(){const t=[];document.querySelectorAll("*").forEach(e=>{if(e.children.length)return;if(!um(e))return;const n=Fi(e.textContent);if(n)t.push({el:e,key:n})});return t} o(dm,"collectAll"); function fm(t){const e=new Map;t.forEach(r=>{let i=r.el.parentElement,c=0;while(i&&c{let i=r.el.parentElement;while(i){if((e.get(i)||0)>=au){if(!n.has(i))n.set(i,[]);n.get(i).push(r);return}i=i.parentElement}});return[...n.values()]} o(fm,"groupByList"); function pm(t){const e=/^S(\d+)E(\d+)$/.exec(t);if(e)return{season:e[1],ep:Number(e[2])};const n=/^E(\d+)$/.exec(t);if(n)return{season:"0",ep:Number(n[1])};return null} o(pm,"parseKey"); function vm(t){const e=new Map;t.forEach(n=>{const r=pm(n.key);if(!r||!(r.ep>0))return;if(!e.has(r.season))e.set(r.season,[]);e.get(r.season).push(r.ep)});for(const n of e.values()){const r=[...new Set(n)].sort((i,c)=>i-c);if(r.length>=au&&r[r.length-1]-r[0]+1===r.length)return true}return false} o(vm,"looksLikeEpisodeList"); var iu=/drawer|modal|popup|sheet|overlay|dialog|panel/i; function mm(){try{return(location.pathname||"").replace(/[-/]\d+(?=\.[a-z]+$|$)/i,"").replace(/\/+$/,"")}catch(t){return""}} o(mm,"currentShowKey"); function hm(t){return String(t||"").replace(/[-/]\d+(?=\.[a-z]+$|$)/i,"").replace(/\/+$/,"")} o(hm,"pathKey"); function gm(t){const e=t&&t.closest&&t.closest("a[href]");if(!e)return false;const n=e.getAttribute("href")||"";if(!n||n==="#"||n.startsWith("javascript:"))return false;const r=mm();if(!r)return false;let i;try{i=new URL(n,location.href).pathname}catch(c){return false}return hm(i)===r} o(gm,"sameShowHref"); function bm(t){let e=t;for(let n=0;n<10&&e&&e!==document.body;n++){if(iu.test(String(e.className||""))||iu.test(String(e.id||"")))return true;e=e.parentElement}return false} o(bm,"inDrawer"); function ym(t){const e=Math.ceil(t.length/2);let n=0;for(const r of t){if(gm(r.el)||bm(r.el))n++;if(n>=e)return true}return false} o(ym,"groupClickable"); function cu(t,e){const n=o(c=>{const a=/第\s*(\d{1,2})\s*季/.exec(c)||/^S(\d{1,2})E/i.exec(c);const s=/第\s*(\d{1,3})\s*集/.exec(c)||/E(\d{1,3})$/i.exec(c);return{season:a?Number(a[1]):0,ep:s?Number(s[1]):0}},"pick");const r=n(String(t||""));const i=n(String(e||""));if(r.season&&r.ep&&i.season&&r.season===i.season)return`\u7B2C${r.ep}\u96C6`;return t} o(cu,"withinSeason"); function su({target:t,current:e}={}){const n=Fi(cu(t,e));if(!n)return null;const r=Fi(cu(e,e));if(r&&r===n)return null;const i=fm(dm()).filter(p=>vm(p));if(!i.length)return null;const c=i.filter(p=>ym(p));const a=c.length?c.slice().sort((p,d)=>Number(qi(d[0].el))-Number(qi(p[0].el))):i.filter(p=>qi(p[0].el));if(!a.length)return null;const s=r?a.filter(p=>p.some(d=>d.key===r)):[];const l=s.concat(a.filter(p=>s.indexOf(p)<0));for(const p of l){const d=p.find(E=>E.key===n&&(!r||E.key!==r));if(d)return{el:d.el,via:"list"}}return null} o(su,"findEpisodeControl"); function Ke(t){const e=document.querySelector(t);return e?e.textContent.trim():""} o(Ke,"text"); function xm(t){const e=(t||"").match(/第\s*\d+\s*集/);return e?e[0].replace(/\s+/g,""):""} o(xm,"episodeFromText"); var $i="\u6B63\u7247"; var wm={czzy:o(()=>{const t=Array.from(document.querySelectorAll(".juji_list a"));if(t.length){const e=t.find(r=>r.classList.contains("pbplay"))||(t.length===1?t[0]:null);const n=((e==null?void 0:e.textContent)||"").trim();if(n)return lr(n)}return wn(Ke(".mikd .ptit span"))||$i},"czzy"),duse:o(()=>Ke(".episode-list .episode-item-active span"),"duse"),dida:o(()=>lr(Ke(".myui-content__list.playlist li.active a")),"dida"),ddys:o(()=>{let t=[];const e=Ke("script.ddys-playlist-data");if(e){try{t=JSON.parse(e).seasons||[]}catch(p){}}const n=Ke(".ddys-season-tab.is-active");const r=/第\s*(\d{1,2})\s*季/.exec(n);const i=r?Number(r[1]):0;const c=i?t.find(p=>Number(p.season)===i):null;const a=c?c.tracks||[]:t.flatMap(p=>p.tracks||[]);const s=Array.from(document.querySelectorAll(".ddys-playlist-item"));let l=0;if(s.length){const p=s.findIndex(d=>d.classList.contains("ddys-playlist-playing"));l=p>=0&&a[p]?Number(a[p].episode):0}else if(a.length===1){l=Number(a[0].episode)||0}if(l<=0)return"";return n?`${n} \u7B2C${l}\u96C6`:`\u7B2C${l}\u96C6`},"ddys"),hantv:o(()=>Ke(".player-list-body .listitem.active a"),"hantv"),libvio:o(()=>Ke(".stui-play__list li.active a"),"libvio"),gaze:o(()=>{var n;const t=document.querySelector(".fJ.bB.dE .playbtn.ji");const e=lr(((t==null?void 0:t.textContent)||"").trim());if(e&&Sn(e))return e;return xm((n=document.querySelector("video-player"))==null?void 0:n.getAttribute("content-title"))},"gaze")}; var Sm={ddys:o(()=>new URLSearchParams(location.search).get("ep")||"","ddys"),dida:o(()=>Bi(location.pathname),"dida"),hantv:o(()=>Bi(location.pathname),"hantv"),libvio:o(()=>Bi(location.pathname),"libvio")}; function Bi(t){const e=t.match(/(\d+)(?:\.html?)?$/);return e?`\u7B2C${e[1]}\u96C6`:""} o(Bi,"lastEpisodeFromPath"); function Ye(t){if(typeof t.getPlaybackInfo==="function"){const r=t.getPlaybackInfo();if(r&&r.episode)return r.episode}const e=wm[t.id];if(e){const r=e();if(r)return r}const n=Sm[t.id];if(n){const r=n();if(r)return r}return""} o(Ye,"resolveEpisode"); function Em(){return oe("video")[0]||null} o(Em,"findPlayerEl"); var tr=null; function vu(t){tr=typeof t==="function"?t:null} o(vu,"setRemoteTimeSource"); var zi=null; function mu(t){zi=typeof t==="function"?t:null} o(mu,"setRemoteSeek"); var Hi=null; function hu(t){Hi=typeof t==="function"?t:null} o(hu,"setBeforeNavigate"); var ro="vc_drama_resume_intent"; var _m=5*60*1e3; function km(t,e,n){try{sessionStorage.setItem(ro,JSON.stringify({name:t,time:e,episode:n||"",ts:Date.now()}))}catch(r){}} o(km,"writeResumeIntent"); function Tm(){try{sessionStorage.removeItem(ro)}catch(t){}} o(Tm,"clearResumeIntent"); function Am(t,e){let n="";try{n=sessionStorage.getItem(ro)||""}catch(r){return 0}if(!n)return 0;try{sessionStorage.removeItem(ro)}catch(r){}try{const r=JSON.parse(n);if(!r||r.name!==t){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u610F\u56FE\u4E0D\u662F\u8FD9\u90E8\u5267\uFF08"+(r&&r.name||"?")+" \u2260 "+t+"\uFF09\uFF0C\u4E22\u5F03");return 0}if(!(Date.now()-Number(r.ts)<_m)){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u610F\u56FE\u5DF2\u8D85\u65F6\uFF0C\u4E22\u5F03");return 0}if(r.episode){const c=qt(r.episode);const a=qt(e||"");if(c&&a&&a!==c){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u5F53\u524D\u662F "+a+"\u3001\u76EE\u6807\u662F "+c+"\uFF08\u5207\u96C6\u6CA1\u751F\u6548\uFF09\uFF0C\u4E22\u5F03");return 0}}const i=Number(r.time)>0?Number(r.time):0;if(i)U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u63A5\u529B\uFF1A\u63A5\u5230\u8DF3\u8F6C\u610F\u56FE \u2192 "+xe(i)+"\uFF08"+(r.episode||"\u65E0\u96C6\u6570")+"\uFF09");return i}catch(r){return 0}} o(Am,"consumeResumeIntent"); var Lm=8e3; var Zn=null; function vn(){const t=oe("video");if(!t.length)return null;const e=t.find(r=>{try{return!r.paused&&r.currentTime>0}catch(i){return false}});if(e)return e;let n=null;t.forEach(r=>{const i=(r.videoWidth||0)*(r.videoHeight||0);if(i>0&&(!n||i>n.area))n={v:r,area:i}});return n?n.v:t[0]} o(vn,"pickSeekTarget"); function Ui(t){const e=Number(t);if(!(e>0))return"fail";const n=o(s=>{try{s.currentTime=e;return"done"}catch(l){return"fail"}},"apply");const r=vn();if(!r){return zi&&zi(e)!==false?"wait":"fail"}if(r.readyState>=1)return n(r);if(Zn)clearTimeout(Zn);let i=false;const c=o(s=>{if(i)return;i=true;clearTimeout(Zn);Zn=null;r.removeEventListener("loadedmetadata",a);r.removeEventListener("canplay",a);if(s==="done")rt(`\u5DF2\u8DF3\u5230 ${xe(e)}`,{tone:"ok",icon:"play"});else if(s==="wait")rt("\u64AD\u653E\u5668\u6B63\u5728\u52A0\u8F7D\uFF0C\u7A0D\u540E\u81EA\u52A8\u8DF3\u8F6C\u2026",{tone:"warn",icon:"play"});else rt("\u64AD\u653E\u5668\u4E00\u76F4\u6CA1\u52A0\u8F7D\u597D\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",{tone:"warn",icon:"play"})},"finish");const a=o(()=>c(n(r)),"onReady");r.addEventListener("loadedmetadata",a);r.addEventListener("canplay",a);Zn=setTimeout(()=>c("fail"),Lm);return"wait"} o(Ui,"seekTo"); var Cm=60*1e3; var Mm=2e3; function Im(t,e){return!!t&&Number(t.deadline)>Number(e)} o(Im,"pendingAlive"); function Pm(t,e){if(!t)return false;const n=qt(t.episode||"");if(!n)return true;const r=qt(e||"");if(!r)return true;return n===r} o(Pm,"stillTargetEpisode"); function Om(t,e){const n=Number(t)||0;const r=Number(e)||0;if(n<=0)return false;return r=1)return true;return Rm()} o(uu,"canSettleNow"); function ji(){const t=vn();if(!t){if(Vi){try{Vi()}catch(e){}}return false}if(t.readyState<1)return false;if(!t.paused)return true;try{const e=t.play();if(e&&typeof e.then==="function")e.catch(()=>lu(t));return true}catch(e){return lu(t)}} o(ji,"tryStartPlayback"); function du(t){const e=vn();if(!e)return;const n=o(()=>{e.removeEventListener("play",n);setTimeout(()=>{try{if(Om(t,e.currentTime))e.currentTime=t}catch(r){}},350)},"onPlay");e.addEventListener("play",n)} o(du,"guardAfterPlay"); function bu(t,e,n){if(uu()){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5C31\u7EEA\uFF0C\u843D\u5230 "+xe(t)+"\uFF08\u8D77\u64AD\u7559\u7ED9\u7528\u6237\u70B9\uFF1A\u8DE8\u57DF\u6846\u67B6\u91CC\u811A\u672C\u7684 play() \u4F1A\u88AB\u6D4F\u89C8\u5668\u62D2\u7EDD\uFF0C\u8FD9\u662F\u9884\u671F\u5185\uFF09");Ui(t);ji();du(t);return"done"}Qn();eo={time:t,episode:e,site:n,deadline:Date.now()+Cm};U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u89C6\u9891\u8FD8\u6CA1\u5C31\u7EEA\uFF08"+(e||"\u65E0\u96C6\u6570")+"\uFF09\uFF0C\u767B\u8BB0\u5F85\u5151\u73B0 "+xe(t)+"\uFF081 \u5206\u949F\u5185\u5C31\u7EEA\u5C31\u843D\uFF09");no=setInterval(()=>{if(!Im(eo,Date.now())){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u7B49\u4E86 1 \u5206\u949F\u89C6\u9891\u4ECD\u672A\u5C31\u7EEA\uFF0C\u653E\u5F03");Qn();return}ji();const r=eo;if(!r)return;if(!Pm(r,Ye(r.site))){U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5F53\u524D\u96C6\u5DF2\u4E0D\u662F\u76EE\u6807\u96C6\uFF0C\u653E\u5F03");Qn();return}if(!uu())return;Qn();U("[\u5F71\u89C6\u6536\u85CF] \u7EED\u64AD\u843D\u70B9\uFF1A\u5C31\u7EEA\uFF0C\u843D\u5230 "+xe(r.time)+"\uFF08\u8D77\u64AD\u7559\u7ED9\u7528\u6237\u70B9\uFF1A\u8DE8\u57DF\u6846\u67B6\u91CC\u811A\u672C\u7684 play() \u4F1A\u88AB\u6D4F\u89C8\u5668\u62D2\u7EDD\uFF0C\u8FD9\u662F\u9884\u671F\u5185\uFF09");Ui(r.time);ji();du(r.time)},Mm);return"pending"} o(bu,"requestSettle"); var Dm=250; var Nm=1e4; function qm(t,e,n,r,i){const c=vn();const a=c?String(c.currentSrc||""):"";if(Hi)Hi();km(n,e,r);try{t.click()}catch(p){return Promise.resolve("fail")}const s=qt(r);const l=o(()=>{if(!s)return false;const p=qt(Ye(i)||"");return!!p&&p===s},"switchedByEpisode");return new Promise(p=>{const d=Date.now();const E=o(()=>{const x=vn();const _=x?String(x.currentSrc||""):"";const y=l()||!!(x&&(x!==c||_&&_!==a));if(y){p(bu(e,r,i));return}if(Date.now()-d>=Nm){p("timeout");return}setTimeout(E,Dm)},"tick");E()})} o(qm,"clickEpisode"); function Fm(t){try{const e=String(t||"");if(!e)return false;return e.includes("?")?location.pathname+location.search===e:location.pathname===e}catch(e){return false}} o(Fm,"isSamePath"); function Bm(t,e){if(!t)return false;const n=qt(Ye(e));const r=qt(t.episode||"");if(n&&r)return n===r||jm(n,r);return Fm(t.path)} o(Bm,"isSameSpot"); function jm(t,e){const n=qt("\u7B2C1\u96C6");return t===$i&&e===n||e===$i&&t===n} o(jm,"isMoviePlaceholderPair"); function $m(t){const e=String(t==null?"":t).trim();if(!e)return false;return/第\s*\d{1,3}\s*集/.test(e)||/^S\d{1,2}E\d{1,3}$/i.test(e)||/^S\d{1,2}\s*第\s*\d{1,3}\s*集$/i.test(e)||/^\d{1,3}$/.test(e)} o($m,"hasEpisodeNumber"); function zm(t,e){if(!t)return true;const n=qt(t.episode||"");const r=qt(e||"");if(n&&r&&n!==r)return true;return!(t.time>0)} o(zm,"shouldResetToZero"); function Hm(){const t=Em();if(t)return{time:t.currentTime,ended:!!t.ended};if(tr){const e=tr();if(e)return e}return null} o(Hm,"readPlayerTime"); function Um(t){try{if(t&&t.__fallback&&typeof t.getPlayInfo==="function"){const e=t.getPlayInfo();if(e&&e.path)return e.path}}catch(e){}return location.pathname} o(Um,"playbackPath"); function fu(){try{const t=Ir(document).cover;return t?Vt(t):""}catch(t){return""}} o(fu,"coverFromPage"); var Gi="vc_drama_watching_context"; function Ki(){try{sessionStorage.removeItem(Gi)}catch(t){}} o(Ki,"markWatchingLeft"); function Vm(t){try{const e=sessionStorage.getItem(Gi)===t;sessionStorage.setItem(Gi,t);return e}catch(e){return false}} o(Vm,"isSameWatchingContext"); function pu(t){if(!t)return"";for(const e of document.querySelectorAll("img")){if((e.getAttribute("alt")||"").trim()!==t)continue;const n=e.getAttribute("data-src")||e.getAttribute("data-original")||e.src||"";if(!Et(n))return Vt(n)}return""} o(pu,"coverFromAlt"); function yu(t,e){if(!e)return()=>{};Ii(e);const n=o(()=>{Bl(e);Ki()},"onPageHide");const r=o(()=>{if(!document.hidden)Ii(e)},"onVisibilityChange");document.addEventListener("pagehide",n);document.addEventListener("visibilitychange",r);let i=Ye(t);const c=ie(e);const a=En(c)?c.cover:"";const s=a||Yn(e)||Kn(e)||fu()||pu(e);const l=fu()||pu(e);if(l&&l!==a)pn(e,l,t.id);const p=Am(e,Ye(t));const d=Vm(e);if(!p&&!d&&c){const y=c.episode||"";const P=Sn(y)?y:"";if(c.time>ra){const b=xe(c.time);const L=y?`\u4E0A\u6B21\u64AD\u653E\u5230 ${y} \xB7 ${b}`:`\u4E0A\u6B21\u64AD\u653E\u5230 ${b}`;rt(L,{tone:"warn",icon:"play",variant:"primary",linkText:y?`${y} \xB7 ${b}`:b,onClick:o(()=>{if(Bm(c,t)){Ui(c.time);return}const h=su({target:y,current:Ye(t)});if(!h){if(!y){rt("\u8FD9\u6761\u89C2\u770B\u8BB0\u5F55\u91CC\u6CA1\u6709\u96C6\u6570\u4FE1\u606F\uFF0C\u8BF7\u624B\u52A8\u5207\u6362",{tone:"warn",icon:"play",variant:"primary"})}else if(!$m(y)){rt(`\u4E0A\u6B21\u662F\u5728\u300C${y}\u300D\u4E0A\u770B\u7684\uFF0C\u8BF7\u624B\u52A8\u5207\u6362`,{tone:"warn",icon:"play",variant:"primary"})}else{rt(`\u6CA1\u627E\u5230 ${y} \u7684\u5165\u53E3\uFF1B\u82E5\u9009\u96C6\u9762\u677F\u6536\u7740\uFF0C\u8BF7\u5148\u5C55\u5F00\u5B83`,{tone:"warn",icon:"play",variant:"primary"})}return}rt(`\u6B63\u5728\u5207\u6362 ${y}\u2026`,{tone:"info",icon:"play",variant:"primary"});qm(h.el,c.time,e,y,t).then(A=>{Tm();if(A==="pending"){rt(`\u5DF2\u5207\u6362\u5230 ${y}\uFF0C\u70B9\u64AD\u653E\u540E\u4F1A\u4ECE\u4E0A\u6B21\u4F4D\u7F6E\u7EE7\u7EED`,{tone:"warn",icon:"play",variant:"primary"})}else if(A==="timeout"){rt("\u70B9\u4E86\u6CA1\u5207\u8FC7\u53BB\uFF1B\u82E5\u9009\u96C6\u9762\u677F\u6536\u7740\uFF0C\u8BF7\u5148\u5C55\u5F00\u5B83\u518D\u5207",{tone:"warn",icon:"play",variant:"primary"})}})},"onClick")})}else if(y){rt(`\u4E0A\u6B21\u89C2\u770B\u5230 ${y}`,{tone:"warn",icon:"play",variant:"primary",emphasis:P})}}if(p)bu(p,c&&c.episode||"",t);const E=o((y,P)=>{const b=ie(e);zl(e,{episode:P||i,time:y,cover:b&&b.cover||s,path:Um(t),siteId:t.id})},"saveNow");let x=false;const _=setInterval(()=>{const y=Ye(t)||i;if(y&&y!==i){i=y;x=false}const P=Hm();if(P&&P.ended)return;if(P&&P.time>na){x=true;E(P.time,i)}else if(!P&&!x&&i){if(document.hidden)return;x=true;if(!zm(ie(e),i))return;E(0,i)}},ea);return()=>{clearInterval(_);Qn();document.removeEventListener("pagehide",n);document.removeEventListener("visibilitychange",r)}} o(yu,"initPlayback"); function xu(t){if(!t)return"";const e=xe(t.time);return[qt(t.episode),e].filter(Boolean).join(" \xB7 ")} o(xu,"formatPlayback"); var Gm={"same-origin":"\u540C\u6E90 video\uFF08\u7236\u6587\u6863\u76F4\u8FDE\uFF09","cross-origin":"iframe \u64AD\u653E\u5668\uFF08\u8D70\u6865\u63A5\uFF09",none:"\u6CA1\u627E\u5230 video"}; var Su=""; var wu=0; var Km=3; function Eu(){try{const t=JSON.parse(GM_getValue(mr,"{}"));return t&&typeof t==="object"?t:{}}catch(t){return{}}} o(Eu,"readMap"); function Ym(t){if(!t)return"";try{return new URL(t.getAttribute("src")||"",location.href).origin}catch(e){return""}} o(Ym,"originOf"); function Wm(t){if(oe("video").length)return"same-origin";const e=un(t&&t.playerFrameSelector);if(e)return"cross-origin";return"none"} o(Wm,"detectKind"); function Xm(t,e,n){Su=e;const r=Eu();r[t.id]={host:location.hostname,kind:e,origin:n,ts:Date.now()};try{GM_setValue(mr,JSON.stringify(r))}catch(i){}U("[\u5F71\u89C6\u6536\u85CF] \u64AD\u653E\u9875\u63A2\u9488\uFF1A"+t.id+"\uFF08"+location.hostname+"\uFF09= "+(Gm[e]||e)+(n?"\uFF0C\u64AD\u653E\u5668\u6E90 "+n:""))} o(Xm,"settle"); function _u(t,e){if(!t)return;const n=Number(e)||0;const r=Eu();const i=r[t]||{};if(i.depth===n)return;r[t]=Object.assign({host:location.hostname,kind:"cross-origin"},i,{depth:n,ts:Date.now()});try{GM_setValue(mr,JSON.stringify(r))}catch(c){}U("[\u5F71\u89C6\u6536\u85CF] \u64AD\u653E\u9875\u63A2\u9488\uFF1A"+t+" \u7684\u64AD\u653E\u5668"+(n?"\u5D4C\u5728\u7B2C "+(n+1)+" \u5C42\uFF08\u4E2D\u7EE7\u8F6C\u53D1\uFF09":"\u5C31\u5728\u7B2C\u4E00\u5C42"))} o(_u,"notePlayerDepth"); function Yi(t){if(!t||!t.id||Su)return;wu++;const e=Wm(t);if(e!=="none"||wu>=Km){const n=e==="cross-origin"?un(t.playerFrameSelector):null;Xm(t,e,Ym(n))}} o(Yi,"probePlayer"); var ku="__vc_bridge__"; var pt={BOOT:"boot",READY:"ready",STATE:"state",HELLO:"hello",CMD:"cmd",KEY:"key"}; var ee={VOLUME:"volume",SEEK:"seek",PLAY:"play",PAUSE:"pause",STATE:"state"}; function ce(t,e){return Object.assign({[ku]:1,t},e||{})} o(ce,"pack"); function oo(t){if(!t||typeof t!=="object"||t[ku]!==1)return null;return t} o(oo,"unpack"); function Wi(){return"vc"+Date.now().toString(36)+Math.random().toString(36).slice(2,8)} o(Wi,"makeNonce"); var Jm=60; var Zm=2e3; var Qm=15; var Tu=new Set; function er(t,e){if(Tu.has(t))return;Tu.add(t);U(e)} o(er,"logOnce"); function th(t){try{const e=String(t.getAttribute("src")||"");return new URL(e,location.href).origin||e}catch(e){return String(t.getAttribute("src")||"")}} o(th,"originOf"); var eh=8; function Au(){let t=null;let e="";let n=null;let r=false;let i=null;let c=null;let a=null;let s="";const l=[];function p(b,L){try{t.contentWindow.postMessage(ce(b,Object.assign({nonce:e},L||{})),"*");return true}catch(h){return false}}o(p,"post");function d(b,L,{queue:h=false}={}){if(!t||!e){if(h){const A=l[l.length-1];if(A&&A.t===b&&A.data&&L&&A.data.op===L.op){l[l.length-1]={t:b,data:L}}else if(l.length{if(n){y();return}b++;if(b>Qm){y();er("no-reply","[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u591A\u6B21\u8BA4\u9886\u90FD\u6CA1\u6709\u56DE\u5E94 \u2014\u2014 \u5B50\u9875\u9762\u91CC\u6CA1\u6709\u811A\u672C\u5728\u8DD1\u3002\u5148\u5237\u65B0\u9875\u9762\u8BA9 iframe \u91CD\u65B0\u52A0\u8F7D\uFF1B\u4ECD\u65E0\u6548\u518D\u68C0\u67E5\u6CB9\u7334\u662F\u5426\u5141\u8BB8\u811A\u672C\u5728\u6846\u67B6\u4E2D\u8FD0\u884C");return}x()},Zm)}o(_,"startHelloRetry");function y(){if(!a)return;clearInterval(a);a=null}o(y,"stopHelloRetry");function P(){if(r)return;r=true;window.addEventListener("message",b=>{const L=oo(b.data);if(!L||!t)return;if(b.source!==t.contentWindow)return;if(L.t===pt.BOOT){er("boot","[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u5B50\u9875\u9762\u811A\u672C\u5DF2\u542F\u52A8\uFF08"+(L.host||"")+"\uFF09\uFF0C\u7B49\u5B83\u627E video");x();return}if(L.t===pt.READY){if(L.dur&&L.dur!!n,"ready"),time:o(()=>n?n.time:0,"time"),duration:o(()=>n?n.dur:0,"duration"),paused:o(()=>n?n.paused:true,"paused"),volume:o(()=>n?n.vol:1,"volume"),onState(b){i=b},onKey(b){c=b},applyVolume(b){return d(pt.CMD,{op:ee.VOLUME,v:b},{queue:true})},seek(b){return d(pt.CMD,{op:ee.SEEK,to:b},{queue:true})},play(){return d(pt.CMD,{op:ee.PLAY})},pause(){return d(pt.CMD,{op:ee.PAUSE})},requestState(){return d(pt.CMD,{op:ee.STATE})}}} o(Au,"createPlayerBridge"); function Xi(){const t=lt(location.hostname);return[...re,...Cn].filter(e=>e.crossSiteTarget!==false&&typeof e.searchPath==="function").filter(e=>!(e.domains||[]).some(n=>lt(n)===t))} o(Xi,"jumpableSites"); var io=null; function Lu(){if(io)return io;let t=null;try{t=JSON.parse(GM_getValue(Ln,"[]"))}catch(e){t=null}io=Array.isArray(t)?t:[];return io} o(Lu,"excludedList"); function nh(t){return Lu().indexOf(t)<0} o(nh,"isEnabled"); function Cu(t,e){const n=Lu();const r=n.indexOf(t);if(e&&r>=0)n.splice(r,1);else if(!e&&r<0)n.push(t);else return;GM_setValue(Ln,JSON.stringify(n))} o(Cu,"setEnabled"); function Mu(t){const e=(t||"").trim();return Xi().map(n=>{const r=Ee(n);return{id:n.id,name:n.name,domain:r,url:e?"https://"+r+n.searchPath(e):"",enabled:nh(n.id),fold:!!n.fold}})} o(Mu,"listTargets"); function Iu(t){const e=Xi().find(n=>n.id===t);return e?Promise.resolve(cn(e)).catch(()=>""):Promise.resolve("")} o(Iu,"warmDomain"); function Pu(t,e){const n=Xi().find(c=>c.id===t);const r=(e||"").trim();if(!n||!r)return Promise.resolve("");const i="https://"+Ee(n)+n.searchPath(r);return Promise.resolve(cn(n)).then(c=>c?"https://"+c+n.searchPath(r):i).catch(()=>i)} o(Pu,"resolveUrl"); function pe(){const t=xt();if(!t)return"";const e=t.pageType();if(e==="detail"&&t.getDetailInfo)return(t.getDetailInfo()||{}).name||"";if(e==="play"&&t.getPlayInfo)return(t.getPlayInfo()||{}).name||"";return""} o(pe,"getCurrentName"); function so(){const t=xt();if(!t||t.pageType()!=="detail"||!t.getDetailInfo)return;const e=t.getDetailInfo();if(!e||!e.name)return;if(e.cover){Ie(e.name,e.cover);pn(e.name,e.cover,t.id,true);return}ru(e.name)} o(so,"cacheCurrentDetailImage"); function lo(t,e){const n=Tt();return Ft(t,n[e])>-1} o(lo,"isFavorited"); function Ru(t,e){const n=Tt();const r=e==="want"?"watched":"want";const i=Ft(t.name,n[e]);const c=Ft(t.name,n[r]);if(c>-1)n[r].splice(c,1);if(i>-1){n[e].splice(i,1)}else{t.updateTime=Date.now();n[e].unshift(t);if(t.cover)Ni(t.name,t.cover,t.siteId)}Kt(n);It.renderedTabs.clear()} o(Ru,"toggleFavorite"); function co(t){const e=xt();if(!e)return;const n=e.pageType();let r=null;if(n==="detail")r=e.getDetailInfo?e.getDetailInfo():null;else if(n==="play")r=e.getPlayInfo?e.getPlayInfo():null;if(!r||!r.name)return;const i=r.name;const c=Tt();const a=Ft(i,c[t]);if(a>-1){c[t].splice(a,1);Kt(c)}else{let s="";const l=Vt(r.cover);if(n==="detail"){s=l||Yn(i)||Kn(i);Ie(i,s)}else if(n==="play"){s=Yn(i)||Kn(i)||l}const p=t==="want"?"watched":"want";const d=Ft(i,c[p]);if(d>-1)c[p].splice(d,1);c[t].unshift({name:i,cover:s,path:r.path||location.pathname,siteId:e.id,createTime:Date.now(),updateTime:Date.now()});Kt(c);Ni(i,s,e.id);Du(i,e)}It.renderedTabs.clear();Bt()} o(co,"toggleDrama"); var Ou=[1500,5e3]; function Du(t,e,n=0){if(!e||typeof e.getSiteRating!=="function")return;const r=e.getSiteRating(document);if(r){Sl(t,r);return}if(n>=Ou.length)return;setTimeout(()=>Du(t,e,n+1),Ou[n])} o(Du,"adoptSiteRating"); function Nu(){co("want")} o(Nu,"toggleWant"); function qu(){co("watched")} o(qu,"toggleWatched"); var Oe={name:"",type:""}; function Fu(){const t=pe();if(!t)return;const e=nr(t);if(e){Oe={name:t,type:e};co(e);return}const n=Oe.name===t&&Oe.type?Oe.type:"want";co(n);Oe={name:"",type:""}} o(Fu,"togglePrimary"); function Bu(){const t=pe();if(!t||nr(t))return"";return Oe.name===t&&Oe.type?Oe.type:"want"} o(Bu,"primaryIntent"); function ju(t,e){if(e==="history"){Oi(t);It.renderedTabs.clear();Bt();return}const n=Tt();const r=Ft(t,n[e]);if(r>-1){n[e].splice(r,1);Kt(n);It.renderedTabs.clear();Bt()}} o(ju,"deleteItem"); function nr(t){if(!t)return null;const e=Tt();if(Ft(t,e.want)>-1)return"want";if(Ft(t,e.watched)>-1)return"watched";return null} o(nr,"statusOfName"); function ao(t,e,n){return n?n.findIndex(e,t):Ft(t,e)} o(ao,"indexOf"); function $u(t,e,n){if(!t)return null;if(ao(t,e.want,n)>-1)return"want";if(ao(t,e.watched,n)>-1)return"watched";return null} o($u,"statusOf"); function ne(t,e,n,r){if(!n)return null;const i=ao(t,e[n],r);return i>-1?e[n].splice(i,1)[0]:null} o(ne,"removeFrom"); function zu(t){const e=ie(t);if(!e)return null;return{name:t,cover:e.cover||"",path:e.path||"",siteId:e.siteId||"",createTime:Date.now(),updateTime:Date.now()}} o(zu,"buildFromPlayback"); function rh(t,e,n){if(!n)return null;const r=Ft(t,e[n]);if(r===-1)return null;return{index:r,prevId:r>0?e[n][r-1].name||"":"",item:{...e[n][r]}}} o(rh,"capture"); function oh(t,e){if(e.prevId){const n=t.findIndex(r=>r.name===e.prevId);if(n>-1)return n+1}return Math.max(0,Math.min(e.index,t.length))} o(oh,"restoreIndex"); function Hu(t,e){const n=Tt();const r=$u(t,n);if(r===e)return{ok:false,from:r};const i=rh(t,n,r);if(!e){ne(t,n,"want");ne(t,n,"watched");Kt(n);It.renderedTabs.clear();Bt();return{ok:true,from:r,snapshot:i}}const c=ne(t,n,r)||zu(t);if(!c)return{ok:false,from:r};ne(t,n,"want");ne(t,n,"watched");c.updateTime=Date.now();n[e].unshift(c);Kt(n);It.renderedTabs.clear();Bt();return{ok:true,from:r,snapshot:i}} o(Hu,"setStatus"); function Uu(t,e,n){if(!e||!n)return false;const r=Tt();ne(t,r,"want");ne(t,r,"watched");r[e].splice(oh(r[e],n),0,{...n.item});Kt(r);It.renderedTabs.clear();Bt();return true} o(Uu,"restoreStatus"); function Vu(t,e){const n=Tt();const r=Oo();let i=0;for(const c of t){const a=$u(c,n,r);if(a===e)continue;if(!e){ne(c,n,"want",r);ne(c,n,"watched",r);i++;continue}const s=ne(c,n,a,r)||zu(c);if(!s)continue;ne(c,n,"want",r);ne(c,n,"watched",r);s.updateTime=Date.now();n[e].unshift(s);i++}if(i>0){Kt(n);It.renderedTabs.clear();Bt()}return i} o(Vu,"batchSetStatus"); function Ji(){const t=xt();if(!t)return false;const e=t.pageType();return e==="detail"||e==="play"} o(Ji,"isDetailOrPlay"); function Gu(t,e){if(e==="history"){t.forEach(i=>Oi(i));It.renderedTabs.clear();Bt();return}const n=Tt();const r=Oo();for(const i of t){const c=ao(i,n[e],r);if(c>-1)n[e].splice(c,1)}Kt(n);It.renderedTabs.clear();Bt()} o(Gu,"batchDeleteItems"); var ih=/^(input|textarea|select)$/i; var ch=/^(button|a|summary)$/i; var Zi=[" ","Spacebar"]; var ah="media-controls, media-container, video-player, video-skin"; var Ku=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"," ","Spacebar"]; var sh=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"]; function Qi({getVideo:t,step:e=5,volumeStep:n=.05,onAction:r,onNoVideo:i,remote:c,win:a=window}){const s=a&&a.document||document;let l=false;const p=o(()=>!!(c&&typeof c.ready==="function"&&c.ready()),"remoteReady");function d(f){if(f==="ArrowRight"){c.seek(e);return`\u5FEB\u8FDB ${e} \u79D2`}if(f==="ArrowLeft"){c.seek(-e);return`\u5FEB\u9000 ${e} \u79D2`}if(f==="ArrowUp")return`\u97F3\u91CF ${Math.round(c.volume(n)*100)}%`;if(f==="ArrowDown")return`\u97F3\u91CF ${Math.round(c.volume(-n)*100)}%`;if(f===" "||f==="Spacebar"){c.toggle();return"\u64AD\u653E / \u6682\u505C"}return null}o(d,"remoteAction");function E(f){if(!f||!f.tagName)return false;return ih.test(f.tagName)||f.isContentEditable===true}o(E,"isEditable");function x(f){if(!f||!f.tagName)return false;return ch.test(f.tagName)}o(x,"isActivatable");function _(f){if(!f||!f.tagName)return false;if(typeof f.closest==="function"&&f.closest('[class*="vc-"], [id^="vc-"]'))return false;if(f.tagName.toLowerCase()==="input")return String(f.type||"").toLowerCase()==="range";return typeof f.getAttribute==="function"&&f.getAttribute("role")==="slider"}o(_,"isSlider");function y(f){if(!f||typeof f.closest!=="function")return false;return!!f.closest(ah)}o(y,"isPlayerControl");function P(f){const g=typeof f.composedPath==="function"?f.composedPath():null;return(g&&g.length?g[0]:f.target)||null}o(P,"realTarget");function b(f){if(f.tabIndex<0&&!f.hasAttribute("tabindex"))f.tabIndex=-1;try{f.focus({preventScroll:true})}catch(g){}}o(b,"focusVideo");function L(f){if(f.paused){Promise.resolve(f.play()).catch(()=>{});return"\u64AD\u653E"}f.pause();return"\u6682\u505C"}o(L,"togglePaused");function h(f,g){const M=f.muted;const z=Ge(f,g,{unmute:true});Es();const K=`\u97F3\u91CF ${Math.round(z*100)}%`;return M?`\u5DF2\u53D6\u6D88\u9759\u97F3 \xB7 ${K}`:K}o(h,"setVolume");function A(f,g){switch(f){case"ArrowRight":return()=>{g.currentTime+=e;return`\u5FEB\u8FDB ${e} \u79D2`};case"ArrowLeft":return()=>{g.currentTime=Math.max(0,g.currentTime-e);return`\u5FEB\u9000 ${e} \u79D2`};case"ArrowUp":return()=>h(g,g.volume+n);case"ArrowDown":return()=>h(g,g.volume-n);case" ":case"Spacebar":return()=>L(g);default:return null}}o(A,"actionFor");function D(f){if(f.defaultPrevented)return;if(f.ctrlKey||f.altKey||f.metaKey)return;const g=P(f)||f.target;if(E(g))return;if(Zi.includes(f.key)&&x(g)&&!y(g))return;if(!Ku.includes(f.key))return;const M=t();if(!M||!M.isConnected){if(p()){const at=d(f.key);f.preventDefault();if(at&&r)r(at);return}f.preventDefault();if(i)i();return}const z=A(f.key,M);if(!z)return;const K=z();f.preventDefault();if(K&&r)r(K)}o(D,"onKeyDown");function O(f){if(!f)return false;if(_(f))return true;if(E(f))return false;return y(f)}o(O,"shouldTakeOverSpace");function T(f,g){if(!f)return false;if(_(f))return true;return!!(g&&g.controls&&f===g)}o(T,"shouldTakeOverEarly");function q(f){if(f.ctrlKey||f.altKey||f.metaKey)return;if(!Ku.includes(f.key))return;const g=P(f)||s.activeElement;const M=t();if(Zi.includes(f.key)){if(!O(g)&&!T(g,M))return;f.preventDefault();f.stopPropagation();if(!M||!M.isConnected)return;b(M);L(M);return}if(!sh.includes(f.key)||!T(g,M))return;f.preventDefault();f.stopPropagation();if(!M||!M.isConnected){if(i)i();return}const z=A(f.key,M);if(!z)return;const K=z();if(K&&r)r(K)}o(q,"onKeyDownCapture");function j(f){if(!Zi.includes(f.key)||f.ctrlKey||f.altKey||f.metaKey)return;const g=P(f)||s.activeElement;if(!O(g))return;f.preventDefault();f.stopPropagation()}o(j,"onKeyUpCapture");let F=0;function H(){F=Date.now()}o(H,"onPointerDown");function N(f){try{if(f.matches(":hover"))return true}catch(g){}return Date.now()-F<800}o(N,"pointerLikelyOn");function S(f){const g=P(f)||f.target;if(!g||!g.tagName||g.tagName.toLowerCase()!=="video")return;const M=t();if(!M||g!==M)return;if(!N(g))return;try{g.blur()}catch(z){}}o(S,"onFocusIn");return{handleRemoteKey(f){if(!p())return;const g=d(f);if(g&&r)r(g)},enable(){if(l)return;l=true;s.addEventListener("pointerdown",H,true);s.addEventListener("focusin",S,true);a.addEventListener("keydown",q,true);a.addEventListener("keyup",j,true);a.addEventListener("keydown",D)},disable(){if(!l)return;l=false;s.removeEventListener("pointerdown",H,true);s.removeEventListener("focusin",S,true);a.removeEventListener("keydown",q,true);a.removeEventListener("keyup",j,true);a.removeEventListener("keydown",D)}}} o(Qi,"createPlayerKeyboard"); var lh=.6; function Xu(){const t=uh();if(t!==null)return t>lh;return vh()} o(Xu,"isLightPage"); function uh(){const t=dh();if(t!==null)return t;for(const e of[document.body,document.documentElement]){if(!e)continue;const n=Ju(e);if(n!==null)return n}return fh()} o(uh,"pageBrightness"); function dh(){let t=null;try{t=document.elementFromPoint(window.innerWidth/2,window.innerHeight/2)}catch{}const e=window.innerWidth*window.innerHeight*.5;for(let n=t;n;n=n.parentElement){const r=Ju(n);if(r===null)continue;const i=n.getBoundingClientRect();if(i.width*i.height>=e)return r}return null} o(dh,"backgroundAtPanelSpot"); function Ju(t){const e=uo(getComputedStyle(t).backgroundColor);if(e!==null)return e;const n=Yu(getComputedStyle(t).backgroundImage);if(n!==null)return n;for(const r of["::before","::after"]){const i=getComputedStyle(t,r);if(!i||i.content==="none"||i.display==="none")continue;const c=uo(i.backgroundColor);if(c!==null)return c;const a=Yu(i.backgroundImage);if(a!==null)return a}return null} o(Ju,"nodeBrightness"); function Yu(t){const e=String(t||"");if(!e||e==="none")return null;const n=/#[0-9a-f]{3,8}\b|rgba?\([^)]*\)|(?:lab|lch|oklab|oklch|hsla?|color)\([^)]*\)/i.exec(e);return n?uo(n[0]):null} o(Yu,"gradientBrightness"); function fh(){const t=document.body||document.documentElement;if(!t)return null;const e=uo(getComputedStyle(t).color);if(e===null)return null;if(e>.75)return .2;if(e<.35)return .9;return null} o(fh,"textBrightnessHint"); function uo(t){const e=String(t||"").trim().toLowerCase();if(!e||e==="transparent"||e==="currentcolor"||e==="none")return null;const n=/^([a-z-]+)\(([^)]*)\)$/.exec(e);if(!n)return ph(e);const r=n[1];const i=n[2].split("/");if(i[1]!==void 0&&Wu(i[1])<.5)return null;if(i[0].indexOf("var(")>=0)return null;const c=i[0].match(/-?[\d.]+%?/g)||[];const a=o(l=>{const p=c[l];if(p===void 0)return null;return p.indexOf("%")>=0?parseFloat(p)/100:parseFloat(p)},"num");const s=o(l=>c.length>=l&&c.slice(0,l).every(p=>p!==""),"has");switch(r){case"rgb":case"rgba":{if(!s(3))return null;if(c.length>=4&&Wu(c[3])<.5)return null;const l=c.slice(0,3).map(p=>p.indexOf("%")>=0?parseFloat(p)*2.55:parseFloat(p));return tc(l)}case"hsl":case"hsla":return s(3)?a(2):null;case"lab":case"lch":{if(!s(1))return null;return c[0].indexOf("%")>=0?a(0):a(0)/100}case"oklab":case"oklch":{const l=a(0);return l===null?null:l>1?l/100:l}case"color":{if(c.length<3)return null;return tc([a(0)*255,a(1)*255,a(2)*255])}default:return null}} o(uo,"brightnessOf"); function ph(t){const e=/^#([0-9a-f]{3}|[0-9a-f]{6})$/.exec(t);if(!e)return null;let n=e[1];if(n.length===3)n=n.split("").map(r=>r+r).join("");return tc([parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)])} o(ph,"hexBrightness"); function Wu(t){const e=String(t).trim();return e.indexOf("%")>=0?parseFloat(e)/100:parseFloat(e)} o(Wu,"alphaOf"); function tc([t,e,n]){return(.299*t+.587*e+.114*n)/255} o(tc,"luminance"); function vh(){if(!window.matchMedia)return false;return!window.matchMedia("(prefers-color-scheme: dark)").matches} o(vh,"prefersLight"); var wt={openDuration:600,closeDuration:500,openEase:"outCubic",closeEase:"inCubic",panelRadius:16,buttonRadius:14,slices:200,cornerSlices:32,genieSpread:1.6,verticalThresholdRatio:.18,fallbackPad:260,zIndex:100002,closeHandoffRatio:.55,canvasPad:8,maxDpr:2,fill:"rgba(30, 32, 44, 0.72)",highlight:"rgba(255, 255, 255, 0.14)",highlightHeight:2,stroke:"rgba(255, 255, 255, 0.16)"}; var Zu={outCubic:o(t=>1-Math.pow(1-t,3),"outCubic"),inCubic:o(t=>t*t*t,"inCubic"),linear:o(t=>t,"linear")}; function mh(){return!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches)} o(mh,"prefersReducedMotion"); function ec({panelRect:t,buttonRect:e,reverse:n,canvasZ:r,fill:i,highlight:c,stroke:a,onHandoff:s,onDone:l}){const p=n?wt.openDuration:wt.closeDuration;const d=Zu[n?wt.openEase:wt.closeEase]||Zu.linear;const E=i||wt.fill;const x=c||wt.highlight;const _=a||wt.stroke;const y=t&&e&&t.width>0&&t.height>0&&e.width>0&&e.height>0;if(!y||mh()||p<=0){if(l)l();return}const P=wt.canvasPad;const b=Math.floor(Math.min(t.left,e.left)-P);const L=Math.floor(Math.min(t.top,e.top)-P);const h=Math.ceil(Math.max(t.right,e.right)+P-b);const A=Math.ceil(Math.max(t.bottom,e.bottom)+P-L);const D=Math.min(wt.maxDpr,Math.max(1,window.devicePixelRatio||1));const O=document.createElement("canvas");O.width=Math.round(h*D);O.height=Math.round(A*D);O.style.cssText=`position:fixed;left:${b}px;top:${L}px;width:${h}px;height:${A}px;pointer-events:none;z-index:${r||wt.zIndex};`;document.body.appendChild(O);const T=O.getContext("2d");T.setTransform(D,0,0,D,-b*D,-L*D);T.lineJoin="round";const q=t.left;const j=t.top;const F=t.width;const H=t.height;const N=q+F/2;const S=j+H/2;const f=e.left;const g=e.top;const M=e.width;const z=e.height;const K=f+M/2;const at=g+z/2;const vt=K-N;const Dt=at-S;const dt=Math.abs(Dt)>H*wt.verticalThresholdRatio;const se=dt?Dt>=0:vt>=0;const Yt=wt.slices;const Nt=wt.cornerSlices;const Wt=Yt-2*Nt;const At=Yt+1;const le=new Float32Array(At);const B=new Float32Array(At);const _t=new Float32Array(At);let Lt=null;function Xt(ft){const ut=H+(z-H)*ft;const bt=F+(M-F)*ft;const k=wt.panelRadius+(wt.buttonRadius-wt.panelRadius)*ft;const X=dt?ut:bt;const Y=X>0?Math.min(.45,k/X):0;let tt=Infinity,kt=-Infinity,ct=Infinity,mt=-Infinity;for(let Z=0;Z=Yt-Nt)yt=1-(Yt-Z)/Nt*Y;else yt=Y+(Z-Nt)/Wt*(1-2*Y);const yo=se?yt:1-yt;let Jt=ft*(1+yo*wt.genieSpread);if(Jt>1)Jt=1;const qe=F+(M-F)*Jt;const gn=H+(z-H)*Jt;let Mt=0;let ue,ve,zt;if(dt){const Fe=j+yt*H;const Qe=g+yt*z;const bn=Fe+(Qe-Fe)*Jt;const Be=N+(K-N)*Jt;if(yt1-Y){const St=(yt-(1-Y))*ut;Mt=k-Math.sqrt(Math.max(0,k*k-St*St))}const me=qe/2-.5;if(Mt>me)Mt=me>0?me:0;ue=Be-qe/2+Mt;ve=Be+qe/2-Mt;zt=bn;if(uekt)kt=ve;if(ztmt)mt=zt}else{const Fe=q+yt*F;const Qe=f+yt*M;const bn=Fe+(Qe-Fe)*Jt;const Be=S+(at-S)*Jt;if(yt1-Y){const St=(yt-(1-Y))*bt;Mt=k-Math.sqrt(Math.max(0,k*k-St*St))}const me=gn/2-.5;if(Mt>me)Mt=me>0?me:0;ue=Be-gn/2+Mt;ve=Be+gn/2-Mt;zt=bn;if(ztkt)kt=zt;if(uemt)mt=ve}le[Z]=ue;B[Z]=ve;_t[Z]=zt}if(Lt){T.clearRect(Lt.x0-2,Lt.y0-2,Lt.x1-Lt.x0+4,Lt.y1-Lt.y0+4)}else{T.clearRect(b,L,h,A)}Lt={x0:tt,x1:kt,y0:ct,y1:mt};T.beginPath();if(dt){T.moveTo(B[0],_t[0]);for(let Z=1;Z=0;Z--)T.lineTo(le[Z],_t[Z])}else{T.moveTo(_t[0],le[0]);for(let Z=1;Z=0;Z--)T.lineTo(_t[Z],B[Z])}T.closePath();T.fillStyle=E;T.fill();if(x&&wt.highlightHeight>0){const Z=T.createLinearGradient(0,ct,0,ct+wt.highlightHeight);Z.addColorStop(0,x);Z.addColorStop(1,"rgba(255, 255, 255, 0)");T.save();T.globalCompositeOperation="source-atop";T.fillStyle=Z;T.fillRect(tt,ct,kt-tt,wt.highlightHeight);T.restore()}if(_){T.lineWidth=1;T.strokeStyle=_;T.stroke()}}o(Xt,"drawFrame");let w=false;let I=0;let G=0;function V(){if(w)return;w=true;cancelAnimationFrame(I);clearTimeout(G);O.remove();if(l)l()}o(V,"finish");Xt(n?1:0);const it=performance.now();let st=false;function et(ft){if(w)return;const ut=Math.min(1,(ft-it)/p);const bt=d(ut);if(!n&&!st&&ut>=wt.closeHandoffRatio){st=true;if(s)s()}Xt(n?1-bt:bt);if(ut<1)I=requestAnimationFrame(et);else V()}o(et,"frame");I=requestAnimationFrame(et);G=setTimeout(V,p+wt.fallbackPad)} o(ec,"runGenie"); var fo=[{set:"want",icon:"\u2B50",label:"\u60F3\u770B"},{set:"watched",icon:"\u2713",label:"\u5DF2\u770B"}]; var We=fo.reduce((t,e)=>{t[e.set]=e.label;return t},{}); function Qu(t){return fo.map(e=>{const n=t?"vc-status-btn "+t:"vc-status-btn";return``}).join("")} o(Qu,"statusButtonsHtml"); function td(t){const e=getComputedStyle(t);return{fill:e.backgroundColor,highlight:e.getPropertyValue("--vc-top-highlight").trim(),stroke:e.borderTopColor}} o(td,"panelShapeColors"); var hh=1e3; function ed(t){const{state:e,pageSize:n,loadFn:r,filterFn:i,getId:c,getTitle:a,getTitleHintFn:s,getUrl:l,resolveUrlFn:p,getSiteName:d,getTime:E,getAvcode:x,getStatus:_,setStatusFn:y,restoreStatusFn:P,deleteFn:b,batchSetStatusFn:L,batchDeleteFn:h,exportFn:A,importFn:D,updateButtonStateFn:O,openSettingsFn:T,openWebSearchFn:q,getExtraInfo:j,resolveSiteIdFn:F,resolveCoverFn:H,resolveCoverFallbackFn:N,onCoverFailed:S,onCoverLoaded:f,resolveCoverClassFn:g,getCoverFitFn:M,resolvePreviewFn:z,hasHistory:K,emptyText:at,templates:vt,getOriginRectFn:Dt,setFloatPanelFn:dt,getMetaFn:se,metaStaleFn:Yt,requestMetaFn:Nt,metaEnabledFn:Wt,resetRatingQueueFn:At}=t;const le={want:"\u60F3\u770B",watched:"\u5DF2\u770B",history:"\u89C2\u770B\u8BB0\u5F55"};let B=null;let _t=false;let Lt=false;let Xt=null;let w=false;const I=new Set;const G=new Map;function V(){const u=document.createElement("div");u.className="vc-mask";u.onclick=C=>{if(C.target===u)To()};const v=document.createElement("div");v.className="vc-panel";v.innerHTML=vt.panelTemplate;if(!K){const C=v.querySelector('.vc-tab[data-vc-type="history"]');const R=v.querySelector('.vc-list-wrap[data-vc-type="history"]');if(C)C.style.display="none";if(R)R.style.display="none"}u.appendChild(v);document.body.appendChild(u);B=u;Se(u,document.body);Ao();it(v);let m=null;window.addEventListener("resize",()=>{clearTimeout(m);m=setTimeout(()=>bc(B),200)})}o(V,"createPanel");function it(u){u.querySelector(".vc-close").onclick=To;st(u);et(u);ut(u);X(u);Y(u)}o(it,"bindPanelEvents");function st(u){u.querySelectorAll(".vc-tab").forEach(v=>{v.onclick=()=>{if(_t)tn();u.querySelectorAll(".vc-tab").forEach(m=>m.classList.remove("vc-active"));v.classList.add("vc-active");St();e.currentTab=v.dataset.vcType;kt(v.dataset.vcType)}})}o(st,"bindTabEvents");function et(u){const v=u.querySelector(".vc-search");const m=o(()=>{e.searchKeyword=v.value.trim();e.currentPage[e.currentTab]=1;e.renderedTabs.clear();St();ct()},"runSearch");let C=null;v.oninput=()=>{clearTimeout(C);C=setTimeout(m,qc)};const R=u.querySelector(".vc-search-clear");if(R){R.onclick=()=>{if(!v.value)return;v.value="";m();v.focus()}}}o(et,"bindSearchEvents");let ft=null;function ut(u){const v=u.querySelector("#vc-refresh");v.onclick=()=>{e.renderedTabs.clear();St();ct();k(v);rt("\u5217\u8868\u5DF2\u5237\u65B0",{tone:"ok"})};const m=u.querySelector(".vc-header-menu-wrap");u.querySelector("#vc-more").onclick=()=>{bt(!u.querySelector("#vc-header-menu").classList.contains("vc-show"))};const C=!!(window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches);if(C){m.addEventListener("mouseenter",()=>{clearTimeout(ft);bt(true)});m.addEventListener("mouseleave",()=>{clearTimeout(ft);ft=setTimeout(()=>bt(false),$c)})}const R=o(W=>()=>{bt(false);W()},"runFromMenu");u.querySelector("#vc-export").onclick=R(A);u.querySelector("#vc-import").onclick=R(()=>{D(()=>{e.renderedTabs.clear();St();ct();if(O)O()})});u.querySelector("#vc-settings").onclick=()=>{if(T)T()};const $=u.querySelector("#vc-web-search");if(q)$.onclick=R(()=>q());else $.style.display="none";document.addEventListener("click",W=>{if(!m.contains(W.target))bt(false)})}o(ut,"bindHeaderActions");function bt(u){const v=B&&B.querySelector("#vc-header-menu");if(!v)return;if(v.classList.contains("vc-show")===u)return;v.classList.toggle("vc-show",u);B.querySelector("#vc-more").setAttribute("aria-expanded",u?"true":"false")}o(bt,"setHeaderMenu");function k(u){u.classList.remove("vc-spin");void u.offsetWidth;u.classList.add("vc-spin");u.addEventListener("animationend",()=>u.classList.remove("vc-spin"),{once:true})}o(k,"playRefreshSpin");function X(u){u.querySelector("#vc-first").onclick=()=>Mt(1);u.querySelector("#vc-prev").onclick=()=>Mt(e.currentPage[e.currentTab]-1);u.querySelector("#vc-next").onclick=()=>Mt(e.currentPage[e.currentTab]+1);u.querySelector("#vc-last").onclick=()=>Mt(qe(e.currentTab));const v=u.querySelector("#vc-site-select");v.addEventListener("change",()=>{e.siteFilter=v.value;e.currentPage[e.currentTab]=1;e.renderedTabs.clear();St();ct()})}o(X,"bindPagerEvents");function Y(u){u.querySelector("#vc-batch-toggle").onclick=()=>{if(_t)tn();else lf()};u.querySelector("#vc-batch-selectall").onchange=v=>{const m=u.querySelector(`#vc-grid-${e.currentTab}`);const C=m?m.querySelectorAll(".vc-card"):[];C.forEach(R=>{const $=R.dataset.vcId;const W=R.querySelector(".vc-card-check");if(v.target.checked){I.add($);R.classList.add("vc-selected");if(W)W.checked=true}else{I.delete($);R.classList.remove("vc-selected");if(W)W.checked=false}});_o()};u.querySelector("#vc-batch-move-want").onclick=()=>tt("want");u.querySelector("#vc-batch-move-watched").onclick=()=>tt("watched");u.querySelector("#vc-batch-delete").onclick=async()=>{if(I.size===0)return;const v=e.currentTab;const m=v==="history"?"\u89C2\u770B\u8BB0\u5F55":"\u6536\u85CF";const C=await Le(`\u786E\u5B9A\u5220\u9664\u9009\u4E2D\u7684 ${I.size} \u6761${m}\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002`,{danger:true});if(!C)return;h(Array.from(I),v);tn()};u.querySelector("#vc-batch-cancel").onclick=()=>tn()}o(Y,"bindBatchEvents");async function tt(u){if(I.size===0)return;const v=u?`\u79FB\u5230${We[u]}`:"\u53D6\u6D88\u6536\u85CF";const m=await Le(`\u786E\u5B9A\u5C06\u9009\u4E2D\u7684 ${I.size} \u6761${v}\u5417\uFF1F`);if(!m)return;const C=L?L(Array.from(I),u):0;St();tn();rt(`\u5DF2${v} ${C} \u6761`,{tone:"ok"})}o(tt,"runBatchStatus");function kt(u){B.querySelectorAll(".vc-list-wrap").forEach(v=>{v.classList.toggle("vc-active",v.dataset.vcType===u)});if(!e.renderedTabs.has(u)){gc(u);e.renderedTabs.add(u)}ko()}o(kt,"switchTab");function ct(){gn();gc(e.currentTab);e.renderedTabs.add(e.currentTab);ko();if(_t)_o();if(w){w=false;Z()}}o(ct,"renderActiveList");function mt(u){const v=F?F(u):u.siteId||"";return v||""}o(mt,"siteIdOf");function Z(){const u=B.querySelector(".vc-panel");if(!u)return;u.classList.add("vc-content-enter");void u.offsetWidth;u.classList.remove("vc-content-enter")}o(Z,"playContentEnter");function yt(u){const v=new Map;u.forEach(m=>{const C=mt(m);if(!C||v.has(C))return;v.set(C,d(m)||C)});return Array.from(v,([m,C])=>({id:m,name:C}))}o(yt,"collectSiteFilters");function yo(u){const v=B.querySelector("#vc-site-select");if(!v)return;const m=[{id:"",name:"\u5168\u90E8"},...u];v.innerHTML=m.map(C=>``).join("");if(!u.some(C=>C.id===e.siteFilter))e.siteFilter="";v.value=e.siteFilter}o(yo,"renderSiteSelect");function Jt(u){let v=i(u,e.searchKeyword);if(e.siteFilter)v=v.filter(m=>mt(m)===e.siteFilter);return v}o(Jt,"applyFilters");function qe(u){const v=r();const m=Jt(v[u]||[]);return Math.ceil(m.length/n)||1}o(qe,"getTotalPages");function gn(){const u=qe(e.currentTab);const v=e.currentPage[e.currentTab]||1;const m=Math.max(1,Math.min(v,u));if(m!==v)e.currentPage[e.currentTab]=m}o(gn,"clampCurrentPage");function Mt(u){const v=qe(e.currentTab);const m=Math.max(1,Math.min(u,v));if(m===e.currentPage[e.currentTab])return;e.currentPage[e.currentTab]=m;e.renderedTabs.clear();St();ct()}o(Mt,"jumpToPage");function ue(u){return u==="want"||u==="watched"?u:null}o(ue,"normalizeStatus");function ve(u){const v=u.querySelector(".vc-card-status");return v?ue(v.dataset.vcStatus):null}o(ve,"getCardStatus");function zt(u,v){const m=u.querySelector(".vc-card-status");if(m)m.dataset.vcStatus=v||"none"}o(zt,"applyCardStatus");function Fe(u,v,m){const C=ve(u);const R=C===m?null:m;const $=y?y(v,R):null;if(!$||!$.ok)return;e.renderedTabs.clear();if(O)O();if(e.currentTab==="history"){zt(u,R);rt(R?`\u5DF2\u52A0\u5165${We[R]}`:"\u5DF2\u53D6\u6D88\u6536\u85CF",{tone:"ok"});return}G.set(v,{from:$.from,to:R,snapshot:$.snapshot});Qe(u,R)}o(Fe,"changeCardStatus");function Qe(u,v){u.classList.add("vc-pending");const m=u.querySelector(".vc-card-actions");if(m)m.remove();if(u.querySelector(".vc-card-pending"))return;const C=document.createElement("div");C.className="vc-card-pending";const R=document.createElement("span");R.className="vc-card-pending-text";R.textContent=v?`\u5DF2\u79FB\u5230${We[v]}`:"\u5DF2\u53D6\u6D88\u6536\u85CF";const $=document.createElement("button");$.className="vc-card-undo";$.type="button";$.textContent="\u64A4\u9500";$.addEventListener("click",W=>{W.stopPropagation();Be(u.dataset.vcId)});C.appendChild(R);C.appendChild($);u.appendChild(C)}o(Qe,"applyPendingCard");function bn(u){if(G.size===0)return;u.querySelectorAll(".vc-card").forEach(v=>{const m=G.get(v.dataset.vcId);if(m)Qe(v,m.to)})}o(bn,"restorePendingCards");function Be(u){const v=G.get(u);if(!v)return;if(P)P(u,v.from,v.snapshot);G.delete(u);e.renderedTabs.clear();if(O)O();ct()}o(Be,"undoPendingChange");function me(u,v,m){b(v,m);e.renderedTabs.clear();if(O)O();const C=u.parentElement;u.remove();ko();if(C&&!C.querySelector(".vc-card")){const R=document.createElement("div");R.className="vc-empty";R.textContent=at;C.appendChild(R)}}o(me,"removeCard");function St(){G.clear()}o(St,"invalidatePending");const xo=new Set;function mc(u,v){return[u,v?"vc-cover-ready":""].filter(Boolean).join(" ")}o(mc,"joinCoverClass");function hc(u,v){return typeof g==="function"?g(u,!!v)||"":""}o(hc,"coverClassOf");function gc(u){const v=r();const m=v[u]||[];yo(yt(m));const C=Jt(m);const R=e.currentPage[u];const $=(R-1)*n;const W=C.slice($,$+n);const ot=B.querySelector(`#vc-grid-${u}`);if(C.length===0){ot.innerHTML="";const nt=document.createElement("div");nt.className="vc-empty";nt.textContent=at;ot.appendChild(nt);return}ot.innerHTML=W.map(nt=>{const he=H?H(nt):nt.cover||"";const Zt=xn(he);const vf=Zt?ar(vt.coverImageTemplate,{cover:ht(Zt),title:ht(a(nt)),coverClass:ht(mc(hc(nt),xo.has(he)))}):vt.defaultCoverTemplate;const Ec=x?x(nt):nt.avcode||"";const mf=Ec?``:"";const hf=ue(_?_(nt):null);const _c=a(nt);return ar(vt.cardTemplate,{id:ht(c(nt)),title:ht(_c),titleHint:ht(ef(nt,_c)),url:ht(l(nt)),siteName:ht(d(nt)),dateStr:ht(Tc(E(nt))),dateFull:ht(Ac(E(nt))),lastPlayed:ht(j?j(nt):""),status:ht(hf||"none"),statusButtons:Qu("vc-card-status-btn"),rateHtml:ir(Vd(nt))||Gd(nt),coverHtml:vf,copyBtnHtml:mf})}).join("");Xd(ot,v,u);bn(ot);Kd(ot,W)}o(gc,"renderList");function Vd(u){if(!se||!Wt||!Wt())return null;return se(u)||null}o(Vd,"metaOf");function ir(u){if(!u||u.miss)return"";if(!u.score&&u.norate){const C=xn(u.url);const R="\u8C46\u74E3\u5DF2\u6536\u5F55\u8FD9\u4E00\u90E8\uFF0C\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09";return C?`\u8C46\u74E3 --`:`\u8C46\u74E3 --`}if(!u.score)return"";const v=ht(u.score);const m=xn(u.url);return m?`\u8C46\u74E3 ${v}`:`\u8C46\u74E3 ${v}`}o(ir,"rateHtmlOf");function Gd(u){if(!Nt||!Wt||!Wt())return"";const v=String(c(u)??"");if(!v)return"";return``}o(Gd,"rateFetchHtml");function Kd(u,v){if(!Nt||!Wt||!Wt())return;if(At)At();v.forEach(m=>{if(se&&se(m)&&!(Yt&&Yt(m)))return;const C=String(c(m)??"");if(!C)return;Nt(C,R=>{if(!R||R.miss)return;const $=Array.prototype.filter.call(u.children,ot=>ot.dataset.vcId===C)[0];const W=$&&$.querySelector(".vc-card-rate");if(W)W.innerHTML=ir(R)})})}o(Kd,"primeRatings");function Yd(u,v){const m=u.parentElement;if(!m)return;const C=u.closest(".vc-card");const R=C?v.find($=>String(c($))===C.dataset.vcId):null;if(m.dataset.vcCoverTried){m.innerHTML=vt.defaultCoverTemplate;if(R&&S)S(R,So(u));return}m.dataset.vcCoverTried="1";m.innerHTML=vt.defaultCoverTemplate;if(R&&S)S(R,So(u));if(!N||!R){wo(u,m,v);return}Promise.resolve(N(R)).then($=>{if(!m.isConnected)return;if(!$){wo(u,m,v);return}const W=xn($);if(!W)return;m.innerHTML=ar(vt.coverImageTemplate,{cover:ht(W),title:ht(a(R)),coverClass:ht(mc(hc(R,true),xo.has(W)))});Eo(m,v)}).catch(()=>{wo(u,m,v)})}o(Yd,"handleCoverError");function wo(u,v,m){if(!v.isConnected)return;const C=So(u);if(!C)return;const R=document.createElement("img");R.referrerPolicy="no-referrer";R.alt=u.getAttribute("alt")||"";R.className=u.className.replace(/\bvc-cover-ready\b/g,"").trim();R.src=C;v.innerHTML="";v.appendChild(R);Eo(v,m)}o(wo,"retryWithoutReferer");function So(u){return u.currentSrc||u.src||""}o(So,"imgSrc");function Eo(u,v){u.querySelectorAll(".vc-card-cover img").forEach(m=>{if(m.dataset.vcCoverBound)return;m.dataset.vcCoverBound="1";const C=o(()=>{if(m.classList.contains("vc-cover-ready"))return;void m.offsetWidth;m.classList.add("vc-cover-ready");const ot=m.getAttribute("src");if(ot&&m.naturalWidth)xo.add(ot)},"fadeIn");const R=400;const $=o(()=>{if(typeof m.decode!=="function"){C();return}let ot=false;const nt=o(()=>{if(ot)return;ot=true;C()},"done");const he=setTimeout(nt,R);const Zt=o(()=>{clearTimeout(he);nt()},"finish");m.decode().then(Zt).catch(Zt)},"fadeInWhenDecoded");if(m.complete&&m.naturalWidth){$()}else{m.addEventListener("load",$,{once:true})}m.addEventListener("error",()=>Yd(m,v));if(!f)return;const W=o(()=>{if(!m.naturalWidth)return;const ot=m.closest(".vc-card");const nt=ot?v.find(he=>String(c(he))===ot.dataset.vcId):null;if(nt)f(nt)},"reportLoaded");m.addEventListener("load",W);if(m.complete)W()})}o(Eo,"bindCoverEvents");function bc(u){if(!u||typeof u.querySelectorAll!=="function")return;u.querySelectorAll(".vc-card-title").forEach(v=>{const m=v.scrollHeight;if(m)v.style.setProperty("--vc-title-full",`${m}px`)})}o(bc,"measureTitles");function Wd(u,v,m){if(u.detail===0)return false;return Math.abs(u.clientX-v)>3||Math.abs(u.clientY-m)>3}o(Wd,"isTextSelect");function Xd(u,v,m){bc(u);u.querySelectorAll(".vc-card").forEach(C=>{const R=C.dataset.vcId;const $=C.dataset.vcUrl;const W=v[m].find(Zt=>c(Zt)===R);let ot=0,nt=0;C.addEventListener("mousedown",Zt=>{ot=Zt.clientX;nt=Zt.clientY});const he=o(Zt=>Wd(Zt,ot,nt),"isDownSelect");if(_t)Jd(C,R,he);else Zd(C,R,W,$,m,he)});Eo(u,v[m]||[])}o(Xd,"bindCardEvents");function Jd(u,v,m){const C=u.querySelector(".vc-card-check");u.addEventListener("click",R=>{if(R.target.closest(".vc-card-checkbox"))return;if(m(R))return;wc(u,v)});if(C){C.addEventListener("change",()=>{wc(u,v,C.checked)})}if(I.has(v)){u.classList.add("vc-selected");if(C)C.checked=true}}o(Jd,"bindBatchCardEvents");function Zd(u,v,m,C,R,$){if(p){u.addEventListener("mouseenter",()=>{Promise.resolve(p(m,C)).catch(()=>{})},{once:true})}u.addEventListener("click",async W=>{if($(W))return;if(W.target.closest(".vc-card-actions, .vc-card-status, .vc-card-rate"))return;if(W.target.closest(".vc-card-cover")){nf(W.target,m);return}yc(m,C)});rf(u,v);of(u);af(u,m,C,$);Qd(u,m);sf(u,v,R)}o(Zd,"bindNormalCardEvents");function Qd(u,v){const m=u.querySelector(".vc-card-rate-fetch");if(!m)return;m.addEventListener("click",C=>{C.stopPropagation();if(m.dataset.vcBusy==="1")return;m.dataset.vcBusy="1";m.textContent="\u67E5\u8BE2\u4E2D\u2026";const R=m.dataset.vcId||String(c(v)??"");Nt(R,$=>{m.dataset.vcBusy="";if($&&!$.miss&&$.score){const ot=m.parentElement;if(ot)ot.innerHTML=ir($);return}if($&&$.norate){const ot=m.parentElement;if(ot)ot.innerHTML=ir($);rt("\u8C46\u74E3\u5DF2\u6536\u5F55\u8FD9\u4E00\u90E8\uFF0C\u6682\u65E0\u8BC4\u5206\uFF08\u5C1A\u672A\u5F00\u5206\uFF09",{tone:"warn"});return}m.textContent="\u8C46\u74E3 ?";const W=!!($&&$.miss);m.title=W?"\u8C46\u74E3\u6CA1\u6709\u8FD9\u4E00\u90E8\u7684\u8BC4\u5206\uFF08\u53EF\u518D\u70B9\u4E00\u6B21\u91CD\u8BD5\uFF09":"\u6CA1\u67E5\u5230\u8C46\u74E3\u8BC4\u5206\uFF08\u53EF\u518D\u70B9\u4E00\u6B21\u91CD\u8BD5\uFF09";rt(W?"\u8C46\u74E3\u6CA1\u6709\u8FD9\u4E00\u90E8\u7684\u8BC4\u5206":"\u6CA1\u67E5\u5230\u8C46\u74E3\u8BC4\u5206\uFF1A\u989D\u5EA6\u7528\u5C3D\u6216\u88AB\u98CE\u63A7\u65F6\u4F1A\u67E5\u4E0D\u52A8\uFF08\u72B6\u6001\u89C1\u8BBE\u7F6E \u2192\u300C\u5F71\u89C6\u4FE1\u606F\u300D\uFF09",{tone:W?"warn":"error"})},{force:true})})}o(Qd,"bindRatingFetch");async function yc(u,v){let m=v;if(p){try{m=await p(u,v)||v}catch(C){m=v}}if(m)window.open(m,"_blank","noopener,noreferrer")}o(yc,"openItem");function tf(u){const v=x?x(u):u.avcode||"";return v||a(u)||""}o(tf,"copyTextOf");function ef(u,v){const m=typeof s==="function"?s(u):v;const C=x?x(u):u.avcode||"";return`${m}\uFF08\u53CC\u51FB\u590D\u5236${C?"\u756A\u53F7":""}\uFF09`}o(ef,"titleHintOf");function nf(u,v){if(!(u&&u.tagName==="IMG"&&(v==null?void 0:v.cover)))return;const m=u.src||v.cover;if(!z){No(m);return}No();const C=Promise.resolve(z(v)).catch(()=>"");const R=new Promise($=>setTimeout(()=>$(""),hh));Promise.race([C,R]).then($=>qo($||m));C.then($=>{if($)qo($)})}o(nf,"openCoverPreview");function rf(u,v){u.querySelectorAll(".vc-card-status-btn").forEach(m=>{m.addEventListener("click",C=>{C.stopPropagation();Fe(u,v,m.dataset.vcSet)})})}o(rf,"bindStatusButtons");function of(u){const v=u.querySelector(".vc-card-copy");if(!v)return;v.addEventListener("click",m=>{m.stopPropagation();xc(u,v.dataset.vcAvcode||"")})}o(of,"bindCopyButton");const cf=250;function af(u,v,m,C){const R=u.querySelector(".vc-card-title");if(!R)return;const $=tf(v);if(!$)return;let W=null;R.addEventListener("click",ot=>{if(C(ot))return;ot.stopPropagation();if(W)return;W=setTimeout(()=>{W=null;yc(v,m)},cf)});R.addEventListener("dblclick",ot=>{ot.stopPropagation();if(W){clearTimeout(W);W=null}const nt=window.getSelection();if(nt)nt.removeAllRanges();xc(u,$)})}o(af,"bindTitleDblClick");function xc(u,v){if(!Oc(v))return;const m=u.querySelector(".vc-card-copy");if(!m){rt("\u5DF2\u590D\u5236\uFF1A"+v,{tone:"ok"});return}m.textContent="\u2705";clearTimeout(m._copyTimer);m._copyTimer=setTimeout(()=>{m.textContent="\u{1F4CB}"},Fc)}o(xc,"copyAndFeedback");function sf(u,v,m){const C=m==="history"?"\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u89C2\u770B\u8BB0\u5F55\u5417\uFF1F":"\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u6536\u85CF\u5417\uFF1F";u.querySelector(".vc-card-delete-btn").addEventListener("click",R=>{R.stopPropagation();Le(C,{danger:true}).then($=>{if($)me(u,v,m)})})}o(sf,"bindDeleteButton");function wc(u,v,m){const C=u.querySelector(".vc-card-check");const R=m!==void 0?m:!I.has(v);if(R){I.add(v);u.classList.add("vc-selected");if(C)C.checked=true}else{I.delete(v);u.classList.remove("vc-selected");if(C)C.checked=false}_o()}o(wc,"toggleCardSelected");function lf(){_t=true;I.clear();B.querySelector(".vc-panel").classList.add("vc-batch-mode");B.querySelector("#vc-batch-bar").style.display="";Sc(true);e.renderedTabs.clear();St();ct()}o(lf,"enterBatchMode");function tn(){_t=false;I.clear();B.querySelector(".vc-panel").classList.remove("vc-batch-mode");B.querySelector("#vc-batch-bar").style.display="none";B.querySelector("#vc-batch-selectall").checked=false;Sc(false);e.renderedTabs.clear();ct()}o(tn,"exitBatchMode");function Sc(u){const v=B.querySelector("#vc-batch-toggle");const m=u?"\u9000\u51FA\u6279\u91CF":"\u6279\u91CF\u9009\u62E9";v.title=m;v.setAttribute("aria-label",m);v.setAttribute("aria-pressed",u?"true":"false")}o(Sc,"setBatchToggleLabel");function _o(){const u=e.currentTab;const v=B.querySelector(`#vc-grid-${u}`);const m=v?v.querySelectorAll(".vc-card"):[];const C=m.length;let R=0;m.forEach(W=>{if(I.has(W.dataset.vcId))R++});B.querySelector("#vc-batch-count").textContent=`\u5DF2\u9009 ${I.size} \u6761`;B.querySelector("#vc-batch-selectall").checked=C>0&&R===C;const $=I.size>0;B.querySelector("#vc-batch-delete").disabled=!$;B.querySelector("#vc-batch-move-want").disabled=!$||u==="want";B.querySelector("#vc-batch-move-watched").disabled=!$||u==="watched"}o(_o,"updateBatchUI");function ko(){const u=r();const v=Jt(u[e.currentTab]||[]);const m=v.length;const C=Math.max(1,Math.ceil(m/n));const R=e.currentPage[e.currentTab];const $=le[e.currentTab]||"";B.querySelector("#vc-count-info").textContent=`\u5171 ${m} \u6761${$}`;B.querySelector("#vc-page-info").textContent=`${R} / ${C}`;B.querySelector("#vc-first").disabled=R<=1;B.querySelector("#vc-prev").disabled=R<=1;B.querySelector("#vc-next").disabled=R>=C;B.querySelector("#vc-last").disabled=R>=C}o(ko,"updatePagination");function uf(){if(Lt||B&&B.classList.contains("vc-show"))return;if(!B)V();Lt=true;bt(false);const u=B.querySelector(".vc-panel");u.classList.toggle("vc-panel-light",Xu());Ao();B.classList.remove("vc-scrim-out");B.classList.add("vc-show");B.classList.add("vc-scrim-in");u.classList.add("vc-genie-hidden");const v=u.getBoundingClientRect();const m=typeof Dt==="function"?Dt():null;if(m)Xt=m;if(typeof dt==="function")dt(true);ec({panelRect:v,buttonRect:Xt,reverse:true,...td(u),onDone(){St();w=true;ct();B.querySelector(".vc-panel").classList.remove("vc-genie-hidden");B.classList.remove("vc-scrim-in");Lt=false}})}o(uf,"openPanel");function To(){if(Lt||!B||!B.classList.contains("vc-show"))return;Lt=true;if(_t)tn();bt(false);const u=B.querySelector(".vc-panel");const v=u.getBoundingClientRect();const m=td(u);u.classList.add("vc-genie-hidden");B.classList.remove("vc-scrim-in");B.classList.add("vc-scrim-out");B.style.zIndex="99997";ec({panelRect:v,buttonRect:Xt,reverse:false,...m,canvasZ:99998,onHandoff(){if(typeof dt==="function")dt(false)},onDone(){B.classList.remove("vc-show");B.classList.remove("vc-scrim-out");B.querySelector(".vc-panel").classList.remove("vc-genie-hidden");B.style.zIndex="";if(typeof dt==="function")dt(false);Lt=false}})}o(To,"closePanel");function Ao(){if(!B)return;const u=B.querySelector(".vc-panel");if(u)u.classList.toggle("vc-cover-fit-off",typeof M==="function"&&!M())}o(Ao,"applyCoverFit");function df(){return B}o(df,"getPanelEl");function ff(){return!!B&&B.classList.contains("vc-show")}o(ff,"isPanelOpen");function pf(){const u=B&&B.querySelector(".vc-search");return u?u.value.trim():""}o(pf,"getSearchKeyword");return{createPanel:V,openPanel:uf,closePanel:To,renderActiveList:ct,getPanelEl:df,isPanelOpen:ff,applyCoverFit:Ao,getSearchKeyword:pf}} o(ed,"createPanelController"); var gh=5; function nd(t,e,n){const{size:r,getPos:i,setPos:c,layout:a,onStart:s,onEnd:l}=n;let p=false,d=false,E=null;let x=0,_=0,y=0,P=0;let b=null,L=0,h=0;function A(T){if(p)return;if(T.pointerType==="mouse"&&T.button!==0)return;const q=a(i());p=true;d=false;E=T.pointerId;x=T.clientX;_=T.clientY;y=T.clientX-q.left;P=T.clientY-q.top;L=q.left;h=q.top;e.classList.add("vc-fab-dragging");e.style.left=q.left+"px";e.style.top=q.top+"px";if(s)s();window.addEventListener("pointermove",D);window.addEventListener("pointerup",O);window.addEventListener("pointercancel",O);T.preventDefault()}o(A,"onDown");function D(T){if(!p||E!==null&&T.pointerId!==E)return;const q=T.clientX-x;const j=T.clientY-_;if(!d&&Math.abs(q)+Math.abs(j){b=null;e.style.left=L+"px";e.style.top=h+"px"})}}o(D,"onMove");function O(){if(!p)return;p=false;E=null;window.removeEventListener("pointermove",D);window.removeEventListener("pointerup",O);window.removeEventListener("pointercancel",O);if(b!==null){cancelAnimationFrame(b);b=null}e.style.left=L+"px";e.style.top=h+"px";e.classList.remove("vc-fab-dragging");if(d){const T=document.documentElement.clientWidth||window.innerWidth;const q=L+r/2;c({side:qp,"isDragging")}} o(nd,"initSnapDrag"); function rd(t,e,n){let r=false,i=false,c,a,s,l;let p=0,d=0,E=null,x=0,_=0;function y(b){if(!r)return;const L=b.clientX-c,h=b.clientY-a;if(Math.abs(L)>3||Math.abs(h)>3)i=true;x=Math.max(0,Math.min(window.innerWidth-p,s-L));_=Math.max(0,Math.min(window.innerHeight-d,l+h));if(E===null){E=requestAnimationFrame(()=>{E=null;e.style.right=x+"px";e.style.top=_+"px"})}}o(y,"onMove");function P(){if(!r)return;r=false;document.removeEventListener("mousemove",y);document.removeEventListener("mouseup",P);document.body.style.cursor="";if(E!==null){cancelAnimationFrame(E);E=null;e.style.right=x+"px";e.style.top=_+"px"}e.classList.remove("vc-dragging");GM_setValue(n(),{right:parseFloat(e.style.right)||0,top:parseFloat(e.style.top)||0})}o(P,"onUp");t.addEventListener("mousedown",b=>{if(!e)return;r=true;i=false;c=b.clientX;a=b.clientY;s=parseFloat(e.style.right)||0;l=parseFloat(e.style.top)||0;p=e.offsetWidth;d=e.offsetHeight;e.classList.add("vc-dragging");document.body.style.cursor="grabbing";document.addEventListener("mousemove",y);document.addEventListener("mouseup",P);b.preventDefault()});t.addEventListener("click",b=>{if(i){b.preventDefault();b.stopPropagation();i=false}},true)} o(rd,"initXjumpDrag"); var Re=48; var bh=38; var yh=9; var nc=9; var De=14; var xh=26; var ax=De+Re-xh; var mn=12; var wh=Bc; var rc=jc; var Sh={side:"right",top:280}; var rr={starOutline:'',starSolid:'',check:'',list:'',search:''}; var Eh=o((t,e,n)=>tn?n:t,"clamp"); function od(t){const{positionKeyFn:e,legacyPositionKeysFn:n,onWant:r,onWatched:i,onOpenPanel:c,onTogglePanel:a,onPrimaryClick:s,getPrimaryStateFn:l,getPrimaryIntentFn:p,isDetailPageFn:d,updateButtonStateFn:E,onVisibilityChange:x,onWebSearch:_}=t;let y,P,b,L,h,A,D,O,T;let q=null;let j=false,F=false,H=false,N=false;let S=false;let f=-1,g=-1;let M=null,z=false,K=null;let at="";const vt=!!(window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches);function Dt(){return document.documentElement.clientWidth||window.innerWidth}o(Dt,"viewportWidth");function dt(k){const X=Dt();const Y=window.innerHeight;const tt=Math.max(De,Y-De-Re);const kt=Eh(k.top,De,tt);const ct=k.side==="right"?Math.max(De,X-De-Re):De;return{left:ct,top:kt}}o(dt,"layoutOf");function se(){if(!h)return 0;return Array.prototype.filter.call(h.children,k=>!k.hidden).length}o(se,"visibleSubCount");function Yt(){const k=se();if(!k)return 0;return k*bh+(k-1)*yh+nc}o(Yt,"subsHeight");function Nt(k){return!!k&&(k.side==="left"||k.side==="right")&&typeof k.top==="number"&&isFinite(k.top)}o(Nt,"isPos");function Wt(k){if(!k)return null;const X=window.innerHeight;if((k.side==="left"||k.side==="right")&&typeof k.y==="number"&&isFinite(k.y)){return{side:k.side,top:Math.round(k.y*X)}}if(typeof k.right==="number"&&typeof k.bottom==="number"){const Y=Dt();return{side:k.right<=Y-k.right?"right":"left",top:Math.round(X-k.bottom-Re)}}return null}o(Wt,"convertLegacy");function At(){const k=GM_getValue(e(),null);if(Nt(k))return{side:k.side,top:k.top};const X=n?n():[];for(const Y of X){const tt=Wt(GM_getValue(Y,null));if(tt){GM_setValue(e(),tt);return tt}}return{...Sh}}o(At,"loadPos");function le(k){q={side:k.side,top:Math.round(k.top)};GM_setValue(e(),q)}o(le,"savePos");function B(k){const{left:X,top:Y}=dt(q);if(!k)y.style.transition="none";y.style.left=X+"px";y.style.top=Y+"px";if(!k){void y.offsetWidth;y.style.transition=""}y.dataset.vcSide=q.side;y.dataset.vcDir=Y>=Yt()+De?"up":"down"}o(B,"applyPosition");function _t(k,X){if(k<0||X<0)return false;const{left:Y,top:tt}=dt(q);let kt=tt-mn;let ct=tt+Re+mn;let mt=Y-mn;let Z=Y+Re+mn;if(F){const yt=Yt();if(y.dataset.vcDir==="up")kt=Math.min(kt,tt-nc-yt-mn);else ct=Math.max(ct,tt+Re+nc+yt+mn)}if(q.side==="right")Z=window.innerWidth;else mt=0;return k>=mt&&k<=Z&&X>=kt&&X<=ct}o(_t,"inHotZone");function Lt(){const k=document.activeElement;if(!k||!y.contains(k))return false;try{return k.matches(":focus-visible")}catch(X){return false}}o(Lt,"focusInside");function Xt(k){clearTimeout(M);if(k>0)M=setTimeout(w,k);else w()}o(Xt,"schedule");function w(){const k=H||N||Lt();const X=vt?S:d();const Y=X&&!k;I(Y);G(vt&&!k&&!Y&&!S)}o(w,"render");function I(k){if(F===k)return;F=k;y.classList.toggle("vc-fab-open",k);b.setAttribute("aria-expanded",String(k))}o(I,"setSubsOpen");function G(k){if(j===k)return;j=k;y.classList.toggle("vc-peek",k)}o(G,"setPeeked");function V(){if(!b)return;const k=d();const X=k?l()||"none":"none";b.dataset.vcState=X;const Y=typeof p==="function"?p()||"":"";const tt=!k?"list":X==="watched"?"check":X==="want"?"starSolid":Y==="watched"?"check":"starOutline";if(tt!==at){at=tt;L.innerHTML=rr[tt]}const kt=!k?"\u6536\u85CF\u5217\u8868":X==="watched"?"\u5DF2\u770B\uFF0C\u70B9\u51FB\u53D6\u6D88":X==="want"?"\u60F3\u770B\uFF0C\u70B9\u51FB\u53D6\u6D88":Y==="watched"?"\u70B9\u51FB\u6807\u4E3A\u5DF2\u770B":"\u70B9\u51FB\u6807\u4E3A\u60F3\u770B";b.title=kt;b.setAttribute("aria-label",kt)}o(V,"refreshPrimary");function it(){b.classList.remove("vc-fab-pop","vc-fab-ripple");void b.offsetWidth;b.classList.add("vc-fab-pop","vc-fab-ripple");clearTimeout(K);K=setTimeout(()=>b.classList.remove("vc-fab-pop","vc-fab-ripple"),600)}o(it,"pulse");function st(){y=document.createElement("div");y.className="vc-fab-zone";y.dataset.vcSide="right";y.dataset.vcDir="up";P=document.createElement("div");P.className="vc-fab-inner";h=document.createElement("div");h.className="vc-fab-subs";h.setAttribute("role","menu");if(typeof _==="function")T=et("search",rr.search,"\u5168\u7F51\u641C\u7D22");A=et("want",rr.starOutline,We.want);D=et("watched",rr.check,We.watched);O=et("list",rr.list,"\u6536\u85CF\u5217\u8868");if(T)h.appendChild(T);h.appendChild(A);h.appendChild(D);h.appendChild(O);b=document.createElement("button");b.className="vc-fab";b.type="button";b.dataset.vcState="none";b.setAttribute("aria-expanded","false");L=document.createElement("span");L.className="vc-fab-scale";b.appendChild(L);P.appendChild(h);P.appendChild(b);y.appendChild(P)}o(st,"build");function et(k,X,Y){const tt=document.createElement("button");tt.type="button";tt.className="vc-fab-sub vc-btn-"+k;tt.dataset.vcAct=k;tt.dataset.vcTip=Y;tt.setAttribute("aria-label",Y);tt.innerHTML=X;return tt}o(et,"makeSub");function ft(k){if(!y)return;N=!!k;y.classList.toggle("vc-fab-dim",N);w()}o(ft,"setPanelOpen");function ut(){q=At();st();B(false);document.body.appendChild(y);Se(y,document.body);if(E)E();V();nd(b,y,{size:Re,getPos:o(()=>q,"getPos"),setPos:le,layout:dt,onStart(){H=true;z=false;G(false);I(false)},onEnd(k){H=false;if(k){z=true;B(true)}S=_t(f,g);Xt(k?0:rc)}});b.addEventListener("click",()=>{if(z){z=false;return}if(N){if(a)a();return}if(s)s();it()});h.addEventListener("click",k=>{const X=k.target.closest?k.target.closest(".vc-fab-sub"):null;if(!X)return;const Y=X.dataset.vcAct;if(Y==="want"&&r)r();else if(Y==="watched"&&i)i();else if(Y==="list"&&c)c();else if(Y==="search"&&_)_();it()});if(vt){document.addEventListener("pointermove",k=>{f=k.clientX;g=k.clientY;if(H)return;const X=_t(k.clientX,k.clientY);if(X===S)return;S=X;Xt(X?wh:rc)},{passive:true});document.addEventListener("pointerleave",()=>{if(!S)return;S=false;Xt(rc)})}document.addEventListener("visibilitychange",()=>{if(document.hidden)return;if(E)E();q=At();B(false);V();w();if(x)x()});window.addEventListener("resize",()=>{if(H)return;B(false)});bt();w()}o(ut,"create");function bt(){if(!y)return;const k=d();h.hidden=!k&&typeof _!=="function";A.hidden=!k;D.hidden=!k;O.hidden=!k;if(T)T.hidden=false;B(false);V();w()}o(bt,"updateVisibility");return{create:ut,updateVisibility:bt,setPanelOpen:ft,refreshPrimary:V,getOriginRect:o(()=>y?y.getBoundingClientRect():null,"getOriginRect"),getWantBtn:o(()=>A,"getWantBtn"),getWatchedBtn:o(()=>D,"getWatchedBtn")}} o(od,"createFloatButtonGroup"); function id(t){const{getSiteFn:e,buildItemFn:n,getIdFn:r,isFavoritedFn:i,buildFavIndexFn:c,toggleFavoriteFn:a,refreshItemFn:s,afterToggleFn:l,afterInjectFn:p}=t;let d=null;let E=null;let x=false;const _=new WeakMap;function y(){P();[500,1500,3e3].forEach(O=>setTimeout(P,O));if(!d){d=new MutationObserver(()=>{if(E)return;E=setTimeout(()=>{E=null;P()},150)});d.observe(document.body,{childList:true,subtree:true})}if(!x){x=true;document.addEventListener("mouseover",O=>{const T=e();if(!T||!T.listCardSelector)return;const q=O.target.closest(T.listCardSelector);if(!q||q.querySelector(".vc-status"))return;P()})}}o(y,"inject");function P(){const O=e();if(!O||!O.getListCards)return;const T=O.getListCards();const q=[];T.forEach(j=>{const{element:F}=j;if(!F)return;const H=F.querySelector(".vc-status");if(H){if(O.statusOffset)h(F,H,O);return}const N=n(j,O);if(!N)return;q.push({element:F,item:N})});if(q.length){const j=c?c(q.map(F=>r(F.item))):null;q.forEach(({element:F,item:H})=>{if(getComputedStyle(F).position==="static"){F.style.position="relative"}F.classList.add("vc-fav-host");const N=b(H,j);F.appendChild(N);h(F,N,O)})}if(q.length)D();if(p)p(T)}o(P,"injectCards");function b(O,T){const q=document.createElement("div");q.className="vc-status";q.dataset.vcId=r(O);fo.forEach(j=>{const F=document.createElement("button");F.type="button";F.className="vc-status-btn";F.dataset.vcSet=j.set;F.title=j.label;F.textContent=j.icon;F.addEventListener("click",H=>{H.preventDefault();H.stopPropagation();if(s)s(O,e(),F);a(O,j.set);D();if(l)l()});q.appendChild(F)});L(q,A(r(O),T));return q}o(b,"makeStatus");function L(O,T){O.dataset.vcStatus=T||"none";O.classList.toggle("vc-status--pinned",!!T)}o(L,"applyStatus");function h(O,T,q){if(typeof q.statusOffset!=="function")return;let j=null;try{j=q.statusOffset(O,T)}catch(S){j=null}const F=_.get(T);let H=F?F.top:null;let N=F?F.left:null;if(j&&j.top!=null&&(H==null||j.top>H))H=j.top;if(j&&j.left!=null)N=j.left;if(H==null&&N==null)return;_.set(T,{top:H,left:N});T.style.top=H!=null?H+"px":"";T.style.left=N!=null?N+"px":""}o(h,"applyStatusOffset");function A(O,T){if(T)return T.get(O)||"";if(i(O,"want"))return"want";if(i(O,"watched"))return"watched";return""}o(A,"statusOf");function D(){const O=document.querySelectorAll(".vc-status[data-vc-id]");const T=[];O.forEach(j=>{if(j.dataset.vcId&&T.indexOf(j.dataset.vcId)===-1)T.push(j.dataset.vcId)});const q=c?c(T):null;O.forEach(j=>{const F=j.dataset.vcId;if(F)L(j,A(F,q))})}o(D,"refreshAll");return{inject:y,refreshAll:D}} o(id,"createMiniButtonInjector"); function cd(t){const{getSiteFn:e,getKeywordFn:n,getPositionKeyFn:r,getAllSitesFn:i,pickDomainFn:c,findAliveDomainFn:a,siteIdField:s}=t;let l=null;let p=null;let d=null;function E(){if(!l)return;const b=l.offsetWidth;const L=l.offsetHeight;if(!b||!L)return;let h=parseFloat(l.style.right)||0;let A=parseFloat(l.style.top)||0;h=Math.max(0,Math.min(h,window.innerWidth-b));A=Math.max(0,Math.min(A,window.innerHeight-L));l.style.right=h+"px";l.style.top=A+"px";const D=GM_getValue(r(),null);if(D&&D.right===h&&D.top===A)return;GM_setValue(r(),{right:h,top:A})}o(E,"clampInViewport");if(!window.__vcXjumpResizeBound){window.__vcXjumpResizeBound=true;window.addEventListener("resize",()=>{clearTimeout(p);p=setTimeout(E,200)})}function x(b,L,h){const A=window.open(h,"_blank");if(A)A.opener=null;if(typeof a!=="function")return;Promise.resolve(a(b)).then(D=>{if(!D)return;const O="https://"+D+b.searchPath(L);if(A&&O!==h)A.location=O}).catch(()=>{})}o(x,"openTarget");function _(b,L){const h="https://"+c(b)+b.searchPath(L);const A=document.createElement("button");A.type="button";A.className="vc-xjump-btn";A.textContent=b.name;A.dataset.vcHref=h;A.addEventListener("mouseenter",()=>{if(typeof a!=="function")return;Promise.resolve(a(b)).catch(()=>{})},{once:true});A.addEventListener("click",()=>x(b,L,h));A.addEventListener("mousedown",D=>{if(D.button===1)D.preventDefault()});A.addEventListener("auxclick",D=>{if(D.button===1)x(b,L,h)});return A}o(_,"createEntry");function y(){const b=e();if(!b)return;const L=n();if(!L)return;if(l&&l.dataset.vcKeyword===L)return;if(l){if(d){d();d=null}l.remove()}l=document.createElement("div");l.className="vc-xjump";l.dataset.vcKeyword=L;const h=GM_getValue(r(),null);if(h){l.style.right=h.right+"px";l.style.top=h.top+"px"}else{l.style.right="16px";l.style.top="16px"}const A=document.createElement("button");A.className="vc-xjump-toggle";A.innerHTML='\u{1F517}\u8DE8\u7AD9\u76F4\u8FBE';const D=document.createElement("div");D.className="vc-xjump-menu";const O=lt(location.hostname);i().filter(j=>j[s]!==b[s]&&j.crossSiteTarget!==false).filter(j=>!(j.domains||[]).some(F=>lt(F)===O)).forEach(j=>D.appendChild(_(j,L)));l.appendChild(A);l.appendChild(D);document.body.appendChild(l);d=Se(l,document.body);rd(A,l,r);E();const T=l;let q=null;T.addEventListener("mouseenter",()=>{if(T.classList.contains("vc-dragging"))return;if(q){clearTimeout(q);q=null}T.classList.add("vc-show");requestAnimationFrame(()=>{const j=A.getBoundingClientRect();const F=window.innerHeight-j.bottom;const H=D.offsetHeight;T.classList.toggle("vc-up",F{if(T.classList.contains("vc-dragging"))return;if(q)clearTimeout(q);q=setTimeout(()=>T.classList.remove("vc-show"),150)})}o(y,"inject");function P(){return l}o(P,"getXjumpEl");return{inject:y,getXjumpEl:P}} o(cd,"createCrossSiteJump"); function ad(t,e){if(!t)return;t.querySelectorAll(".vc-settings-seg-btn").forEach(n=>{n.addEventListener("click",()=>{t.querySelectorAll(".vc-settings-seg-btn").forEach(r=>r.classList.remove("vc-active"));n.classList.add("vc-active");e(n.dataset.vcVal)})})} o(ad,"bindSeg"); function Xe(t,e){return`
${t}
${e}
`} o(Xe,"section"); function hn(t,e,n,r=""){return` `} o(hn,"switchItem"); function _h(t,e){if(!t)return;t.querySelectorAll(".vc-settings-seg-btn").forEach(n=>{n.classList.toggle("vc-active",n.dataset.vcVal===e)})} o(_h,"syncSeg"); function sd(t={}){const{coverFit:e,translatedTitle:n,rating:r,usage:i,engine:c,volume:a}=t;let s=null;let l=null;function p(){if(!s)A();clearTimeout(l);s.removeEventListener("animationend",E);s.classList.remove("vc-closing");x();s.classList.add("vc-show")}o(p,"open");function d(){if(!s||!s.classList.contains("vc-show"))return;s.classList.add("vc-closing");s.addEventListener("animationend",E);l=setTimeout(E,6e4)}o(d,"close");function E(g){if(!s)return;const M=g&&g.animationName;if(M&&M!=="vcSettingsOut"&&M!=="vcScrimOut")return;clearTimeout(l);s.removeEventListener("animationend",E);s.classList.remove("vc-show");s.classList.remove("vc-closing")}o(E,"onExitEnd");function x(){s.querySelector("#vc-settings-adblock").checked=$r();s.querySelector("#vc-settings-fav-mark").checked=jt("favMark");L("favPeekOpacity","favSize","vc-settings-fav-opacity","vc-settings-fav-size");L("xjumpOpacity","xjumpSize","vc-settings-xjump-opacity","vc-settings-xjump-size");h();if(e)s.querySelector("#vc-settings-cover-fit").checked=e.get();if(n)s.querySelector("#vc-settings-translated-title").checked=n.get();if(c)b();if(r){y();P()}_()}o(x,"syncControls");function _(){if(!i)return;const g=s.querySelector("#vc-settings-storage-usage");const M=s.querySelector("#vc-settings-storage-parts");if(!g)return;const z=i()||{};const K=Math.round((z.budget||0)/1024/1024);if(!z.total){g.textContent=K?"\u5DF2\u7528 0.00MB / "+K+"MB":"";if(M)M.textContent="";return}g.textContent="\u5DF2\u7528 "+Ht(z.total)+" / "+K+"MB"+(z.total>z.budget?"\uFF08\u8D85\u9650\u4F1A\u81EA\u52A8\u56DE\u6536\u8BC4\u5206\u7F13\u5B58\uFF09":"");if(M){const at=z.parts||{};const vt=Object.keys(at);M.textContent="";if(vt.length>1){vt.forEach(Dt=>{const dt=document.createElement("span");dt.className="vc-settings-storage-part";dt.textContent=Dt+" "+Ht(at[Dt]);M.appendChild(dt)})}}}o(_,"syncStorageUsage");function y(){const g=s.querySelector("#vc-settings-rating-clear-desc");const M=s.querySelector("#vc-settings-rating-remote");if(!g||!M)return;g.textContent=M.checked?"\u6E05\u9664\u540E\u4E0B\u6B21\u6253\u5F00\u6536\u85CF\u9762\u677F\u4F1A\u91CD\u65B0\u67E5\u8BE2":"\u6E05\u9664\u540E\u4E0D\u4F1A\u81EA\u52A8\u67E5\u8BE2\uFF0C\u6D4F\u89C8\u5230\u8BE5\u5267\u9875\u9762\u65F6\u8BFB\u56DE"}o(y,"syncRatingClearDesc");function P(){const g=s.querySelector("#vc-settings-rating-status");if(!g||!r||typeof r.status!=="function")return;const M=r.status();if(!M){g.textContent="";return}let z;if(M.pausedSec<0){z="\u8C46\u74E3\u5DF2\u62E6\u4E0B\u672C\u673A\u67E5\u8BE2\uFF0C\u5237\u65B0\u9875\u9762\u540E\u81EA\u52A8\u91CD\u8BD5"}else if(M.pausedSec>0){z="\u8C46\u74E3\u63A5\u53E3\u6682\u65F6\u4E0D\u53EF\u7528\uFF0C"+M.pausedSec+" \u79D2\u540E\u81EA\u52A8\u7EE7\u7EED"}else if(M.sessionLeft<=0){z="\u672C\u6B21\u4F1A\u8BDD\u5DF2\u53D1\u6EE1 "+M.sessionMax+" \u6B21\u8BF7\u6C42\uFF0C\u5237\u65B0\u9875\u9762\u540E\u63A5\u7740\u67E5"}else if(M.windowLeft<=0){z="\u8FD1 "+M.windowMinutes+" \u5206\u949F\u5DF2\u53D1\u6EE1 "+M.windowMax+" \u6B21\u8BF7\u6C42\uFF0C\u7A0D\u540E\u81EA\u52A8\u63A5\u7740\u67E5"}else{z="\u5269\u4F59\u989D\u5EA6\uFF1A\u672C\u6B21 "+M.sessionLeft+"/"+M.sessionMax+"\uFF0C\u8FD1 "+M.windowMinutes+" \u5206\u949F "+M.windowLeft+"/"+M.windowMax}if(M.cached)z+="\uFF1B\u5DF2\u8BB0 "+M.scored+" \u90E8\uFF08\u5171 "+M.cached+" \u6761\uFF09";g.textContent=z}o(P,"syncRatingStatus");function b(){const g=s.querySelector("#vc-settings-engine-on");if(!g)return;g.checked=c.get()!==false}o(b,"syncEngineSection");function L(g,M,z,K){const at=s.querySelector("#"+z);const vt=s.querySelector("."+z+"-val");const Dt=s.querySelector("#"+K);const dt=jt(g);if(at)at.value=dt;if(vt)vt.textContent=dt+"%";_h(Dt,jt(M))}o(L,"syncSettingGroup");function h(){const g=s.querySelector("#vc-settings-volume");const M=s.querySelector(".vc-settings-volume-val");const z=Math.round(Number(jt("volume"))||0);if(g)g.value=z;if(M)M.textContent=z+"%"}o(h,"syncVolume");function A(){s=document.createElement("div");s.className="vc-settings-mask";s.innerHTML=D();document.body.appendChild(s);Se(s,document.body);S()}o(A,"build");function D(){const g=[Xe("\u6D4F\u89C8\u4E0E\u64AD\u653E",hn("vc-settings-adblock","\u9690\u85CF\u5E7F\u544A","\u5C4F\u853D\u5404\u7AD9\u70B9\u5E7F\u544A")+(a?j():""))];if(r)g.push(Xe("\u5F71\u89C6\u4FE1\u606F",q()));if(c)g.push(Xe("\u901A\u7528\u7AD9\u70B9",T()));g.push(Xe("\u5361\u7247\u663E\u793A",O()));g.push(Xe("\u6536\u85CF\u6309\u94AE",F()));g.push(Xe("\u8DE8\u7AD9\u76F4\u8FBE",H()));if(i)g.push(Xe("\u5B58\u50A8",N()));return` `}o(D,"panelTemplate");function O(){let g="";if(e)g+=hn("vc-settings-cover-fit","\u5C01\u9762\u667A\u80FD\u53D6\u666F","\u6A2A\u7248\u5927\u56FE\u81EA\u52A8\u4F18\u5316\u53D6\u666F");if(n)g+=hn("vc-settings-translated-title","\u4F18\u5148\u663E\u793A\u7FFB\u8BD1\u6807\u9898","\u6709\u8BD1\u6587\u65F6\u4F18\u5148\u663E\u793A\u8BD1\u6587");return g+hn("vc-settings-fav-mark","\u5217\u8868\u9875\u6807\u8BB0\u5DF2\u6536\u85CF","\u5DF2\u6536\u85CF\u7684\u5361\u7247\u4E0A\u5E38\u663E\u60F3\u770B / \u5DF2\u770B")}o(O,"cardDisplaySection");function T(){return hn("vc-settings-engine-on","\u901A\u7528\u7AD9\u70B9\u652F\u6301","\u5728\u672A\u9002\u914D\u7684\u5F71\u89C6\u7AD9\u4E5F\u542F\u7528\u6536\u85CF\u4E0E\u89C2\u770B\u8BB0\u5F55")}o(T,"engineSection");function q(){return hn("vc-settings-rating-remote","\u5141\u8BB8\u8054\u7F51\u67E5\u8BE2\u8C46\u74E3","\u5173\u6389\u540E\u4E0D\u518D\u8054\u7F51\u67E5\u8BE2\u8BC4\u5206\uFF0C\u5DF2\u7ECF\u62FF\u5230\u7684\u5206\u7167\u5E38\u663E\u793A",'')+`
\u8C46\u74E3\u8BC4\u5206\u7F13\u5B58
`}o(q,"ratingSection");function j(){return`
\u64AD\u653E\u97F3\u91CF \u5404\u7AD9\u70B9\u7EDF\u4E00\u4F7F\u7528\u8FD9\u4E2A\u97F3\u91CF 100%
`}o(j,"volumeItem");function F(){return`
\u534A\u9690\u85CF\u900F\u660E\u5EA6 \u8D34\u8FB9\u672A\u5C55\u5F00\u65F6\u7684\u6DF1\u6D45 55%
\u6309\u94AE\u5927\u5C0F \u4E3B\u6309\u94AE\u4E0E\u5B50\u6309\u94AE\u4E00\u8D77\u7F29\u653E
`}o(F,"favButtonSection");function H(){return`
\u900F\u660E\u5EA6 \u9F20\u6807\u9760\u8FD1\u65F6\u81EA\u52A8 100% 60%
\u6309\u94AE\u5927\u5C0F \u5C55\u5F00\u540E\u7684\u663E\u793A\u6837\u5F0F
`}o(H,"xjumpSection");function N(){return`
\u5B58\u50A8\u5360\u7528
`}o(N,"storageSection");function S(){s.querySelector(".vc-settings-close").addEventListener("click",d);s.addEventListener("click",g=>{if(g.target===s)d()});document.addEventListener("keydown",g=>{if(g.key==="Escape"&&s.classList.contains("vc-show"))d()});s.querySelector("#vc-settings-adblock").addEventListener("change",g=>{Bs(g.target.checked)});if(e){s.querySelector("#vc-settings-cover-fit").addEventListener("change",g=>{e.set(g.target.checked)})}if(n){s.querySelector("#vc-settings-translated-title").addEventListener("change",g=>{n.set(g.target.checked)})}if(c){s.querySelector("#vc-settings-engine-on").addEventListener("change",g=>{c.set(g.target.checked)})}f("vc-settings-volume","vc-settings-volume-val",jr);f("vc-settings-fav-opacity","vc-settings-fav-opacity-val",Cs);s.querySelector("#vc-settings-fav-mark").addEventListener("change",g=>{Is(g.target.checked)});if(r){const g=s.querySelector("#vc-settings-rating-remote");if(g){if(typeof r.get==="function")g.checked=r.get()!==false;g.addEventListener("change",M=>{if(typeof r.set==="function")r.set(M.target.checked);y();P()})}s.querySelector("#vc-settings-rating-clear").addEventListener("click",async()=>{const M=await r.confirm("\u6E05\u9664\u5168\u90E8\u8BC4\u5206\u7F13\u5B58\uFF1F\n\n\u4F1A\u5220\u6389\u6240\u6709\u5267\u7684\u8BC4\u5206\u8BB0\u5F55\uFF1A\u7AD9\u70B9\u9875\u9762\u8BFB\u5230\u7684\u3001\u8054\u7F51\u67E5\u5230\u7684\u3001\u67E5\u4E0D\u5230\u7684\n\u6536\u85CF\u4E0E\u89C2\u770B\u8BB0\u5F55\u4E0D\u53D7\u5F71\u54CD\uFF0C\u4E4B\u540E\u91CD\u65B0\u67E5\u8BE2",{danger:true});if(!M)return;r.clear();P();rt("\u8BC4\u5206\u7F13\u5B58\u5DF2\u6E05\u9664",{tone:"ok"})})}ad(s.querySelector("#vc-settings-fav-size"),Ms);f("vc-settings-xjump-opacity","vc-settings-xjump-opacity-val",Os);ad(s.querySelector("#vc-settings-xjump-size"),Rs)}o(S,"bindEvents");function f(g,M,z){const K=s.querySelector("#"+g);const at=s.querySelector("."+M);if(!K)return;K.addEventListener("input",()=>{if(at)at.textContent=K.value+"%";z(K.value)})}o(f,"bindRange");return{open:p,close:d}} o(sd,"createSettingsPanel"); function ld(t){const{listTargetsFn:e,resolveUrlFn:n,warmDomainFn:r,setEnabledFn:i}=t;let c=false;let a=null;let s=null;let l=null;let p=null;let d=null;let E=null;let x=[];let _=[];let y=new Set;function P(){a=document.createElement("div");a.className="vc-ws-mask";a.innerHTML=` `;document.body.appendChild(a);s=a.querySelector(".vc-ws-input");l=a.querySelector(".vc-ws-grid");p=a.querySelector(".vc-ws-hint");d=a.querySelector(".vc-ws-btn");E=a.querySelector(".vc-ws-count");a.querySelector(".vc-ws-close").addEventListener("click",H);a.addEventListener("click",S=>{if(S.target===a)H()});document.addEventListener("keydown",S=>{if(S.key==="Escape"&&a.classList.contains("vc-show"))H()});const N=o(()=>{y.clear();q();b()},"syncInput");s.addEventListener("input",N);a.querySelector(".vc-ws-clear").addEventListener("click",()=>{if(!s.value)return;s.value="";N();s.focus()});d.addEventListener("click",j)}o(P,"build");function b(){const N=s.value.trim();_=e(N);l.textContent="";_.filter(f=>!f.fold).forEach(f=>l.appendChild(A(f,N)));const S=_.filter(f=>f.fold);if(S.length)l.appendChild(h(S,N));if(p){p.textContent=N?"\u70B9\u51FB\u7AD9\u70B9\u540D\u76F4\u63A5\u8DF3\u8F6C\uFF08\u4E2D\u952E / Ctrl+\u70B9\u51FB\u53EF\u6279\u91CF\uFF09\uFF1B\u52FE\u9009\u51B3\u5B9A\u300C\u9010\u4E2A\u6253\u5F00\u300D\u7684\u8303\u56F4":"\u8F93\u5165\u5267\u540D\u540E\uFF0C\u70B9\u7AD9\u70B9\u540D\u5373\u53EF\u8DF3\u8F6C\uFF08\u4E2D\u952E / Ctrl+\u70B9\u51FB\u53EF\u6279\u91CF\uFF09"}D()}o(b,"renderTargets");function L(){if(!s)return;s.classList.remove("vc-ws-input-attn");void s.offsetWidth;s.classList.add("vc-ws-input-attn")}o(L,"flashInput");function h(N,S){const f=document.createElement("div");f.className="vc-ws-fold";f.classList.toggle("vc-show",c);const g=document.createElement("button");g.type="button";g.className="vc-ws-fold-toggle";g.setAttribute("aria-expanded",String(c));const M=o(()=>{const at=N.filter(vt=>vt.enabled).length;g.textContent="\u66F4\u591A\u7AD9\u70B9\uFF08"+N.length+(at?" \xB7 \u5DF2\u9009 "+at:"")+"\uFF09"},"syncLabel");M();const z=document.createElement("div");z.className="vc-ws-fold-anim";const K=document.createElement("div");K.className="vc-ws-fold-list";N.forEach(at=>K.appendChild(A(at,S)));K.addEventListener("change",M);z.appendChild(K);g.addEventListener("click",()=>{c=!c;f.classList.toggle("vc-show",c);g.setAttribute("aria-expanded",String(c))});f.appendChild(g);f.appendChild(z);return f}o(h,"buildFoldBlock");function A(N,S){const f=document.createElement("div");f.className="vc-ws-item";f.dataset.vcSite=N.id;if(y.has(N.id))f.classList.add("vc-ws-item-visited");if(!S)f.title="\u5148\u8F93\u5165\u5267\u540D\uFF0C\u518D\u70B9\u300C"+N.name+"\u300D\u8DF3\u8F6C\u641C\u7D22";const g=document.createElement("input");g.type="checkbox";g.className="vc-ws-check";g.checked=N.enabled;g.title="\u662F\u5426\u53C2\u4E0E\u300C\u9010\u4E2A\u6253\u5F00\u300D";g.addEventListener("change",()=>{i(N.id,g.checked);N.enabled=g.checked;q();D()});const M=document.createElement("a");M.className="vc-ws-link"+(S?"":" vc-ws-link-off");M.textContent=N.name;M.href=S?N.url:"#";M.target="_blank";M.rel="noopener noreferrer";M.title=S?y.has(N.id)?"\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+N.name+"\u300D\u641C\u7D22\uFF08\u5DF2\u6253\u5F00\u8FC7\uFF0C\u53EF\u518D\u6B21\u8DF3\u8F6C\uFF09":"\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+N.name+"\u300D\u641C\u7D22":"";if(S){M.addEventListener("mouseenter",()=>{if(M.dataset.vcWarmed)return;M.dataset.vcWarmed="1";r(N.id)},{once:true});M.addEventListener("click",K=>{if(K.button!==0||K.metaKey||K.ctrlKey||K.shiftKey||K.altKey)return;K.preventDefault();O(N.id,s.value.trim())})}else{M.addEventListener("click",K=>K.preventDefault());M.setAttribute("aria-disabled","true");f.classList.add("vc-ws-item-off");f.addEventListener("click",K=>{if(K.target.closest(".vc-ws-check"))return;rt("\u5148\u8F93\u5165\u8981\u641C\u7D22\u7684\u5267\u540D",{tone:"warn"});s.focus();L()})}const z=document.createElement("span");z.className="vc-ws-domain";z.textContent=N.domain;z.title=N.domain;f.appendChild(g);f.appendChild(M);f.appendChild(z);return f}o(A,"buildItem");function D(){const N=Array.from(l.querySelectorAll(".vc-ws-check"));const S=N.filter(g=>g.checked).length;E.textContent=N.length?"\u5DF2\u9009 "+S+" / "+N.length+" \u4E2A\u7AD9\u70B9"+(S?" \xB7 \u6BCF\u70B9\u4E00\u6B21\u5F00\u4E00\u4E2A":""):"\u6CA1\u6709\u53EF\u8DF3\u8F6C\u7684\u7AD9\u70B9";if(x.length){d.textContent="\u7EE7\u7EED\u6253\u5F00\uFF08\u8FD8\u5269 "+x.length+" \u4E2A\uFF09";return}if(!S){d.textContent="\u6253\u5F00\u9009\u4E2D";return}const f=_.filter(g=>g.enabled&&!y.has(g.id)).length;d.textContent=f?"\u9010\u4E2A\u6253\u5F00\uFF08\u8FD8\u5269 "+f+" \u4E2A\uFF09":"\u5DF2\u5168\u90E8\u6253\u5F00"}o(D,"syncCount");function O(N,S){T(N);const f=_.find(z=>z.id===N);const g=f?f.url:"";const M=g?window.open(g,"_blank"):null;if(M)M.opener=null;Promise.resolve(n(N,S)).then(z=>{if(!z)return;if(!M){window.open(z,"_blank");return}if(z!==g)M.location=z}).catch(()=>{})}o(O,"jump");function T(N){y.add(N);const S=_.find(g=>g.id===N);const f=S&&Array.prototype.find.call(l.children,g=>g.dataset.vcSite===N);if(f){f.classList.add("vc-ws-item-visited");const g=f.querySelector(".vc-ws-link");if(g)g.title="\u70B9\u51FB\u53EF\u8DF3\u8F6C\u81F3\u300C"+S.name+"\u300D\u641C\u7D22\uFF08\u5DF2\u6253\u5F00\u8FC7\uFF0C\u53EF\u518D\u6B21\u8DF3\u8F6C\uFF09"}D()}o(T,"markVisited");function q(){x=[];D()}o(q,"resetQueue");function j(){const N=s.value.trim();if(!N){rt("\u5148\u8F93\u5165\u8981\u641C\u7D22\u7684\u5267\u540D",{tone:"warn"});return}if(!x.length){x=_.filter(S=>S.enabled).map(S=>S.id);if(!x.length){rt("\u81F3\u5C11\u52FE\u9009\u4E00\u4E2A\u7AD9\u70B9",{tone:"warn"});return}}O(x.shift(),N);D()}o(j,"openNextSelected");function F(N){if(!a)P();s.value=(N||"").trim();y.clear();q();b();a.classList.add("vc-show");s.focus();s.select()}o(F,"open");function H(){if(a)a.classList.remove("vc-show")}o(H,"close");return{open:F,close:H,getMaskEl:o(()=>a,"getMaskEl")}} o(ld,"createWebSearchPanel"); var kh=10*60*1e3; var Je=new Map; var ic=new Map; var oc=new Map; var po=new Map; function cc(t){if(!t)return"";try{return new URL(t).pathname}catch(e){return t}} o(cc,"pathOf"); function Th(t,e){return t+"|"+cc(e)} o(Th,"taskKey"); function Ah(t,e){if(!e)return true;return ic.get(t)===cc(e)} o(Ah,"isFresh"); function vo(t,e){if(!t||!Ah(t,e))return"";return Je.get(t)||""} o(vo,"getProxiedCover"); function ud(t){const e=Je.get(t);if(e){try{URL.revokeObjectURL(e)}catch(n){}}Je.delete(t);ic.delete(t)} o(ud,"release"); function Lh(){while(Je.size>zc)ud(Je.keys().next().value)} o(Lh,"prune"); async function Ch(t){for(const e of t){const n=await zs(Hr(e.url),e.referer);if(n)return{blob:n,url:e.url}}return null} o(Ch,"grabFirst"); function dd(t,e){const n=(e||[]).filter(s=>s&&s.url&&s.referer);if(!t||!n.length)return Promise.resolve("");const r=vo(t,n[0].url);if(r)return Promise.resolve(r);const i=Th(t,n[0].url);if(po.has(i))return po.get(i);const c=oc.get(i);if(c&&Date.now()-c{if(!s)return"";if(Je.has(t))ud(t);Je.set(t,URL.createObjectURL(s.blob));ic.set(t,cc(s.url));Lh();return vo(t,n[0].url)}).catch(()=>"").then(s=>{po.delete(i);if(s)oc.delete(i);else oc.set(i,Date.now());return s});po.set(i,a);return a} o(dd,"ensureProxiedCover"); var Mh=[()=>!!document.querySelector('script[src*="/_next/"]'),()=>!!document.getElementById("__next"),()=>!!window.__NEXT_DATA__,()=>!!document.querySelector("[data-reactroot]"),()=>{const t=window.__REACT_DEVTOOLS_GLOBAL_HOOK__;return!!(t&&t.renderers&&t.renderers.size)},()=>!!window.next||!!window.__next_f]; function pd(){try{return Mh.some(t=>{try{return!!t()}catch(e){return false}})}catch(t){return false}} o(pd,"isReactHydratingSite"); var Ih=2e3; var fd=1500; function vd(t){let e=false;const n=o(()=>{if(e)return;e=true;try{t()}catch(i){}},"go");const r=window.requestIdleCallback?i=>window.requestIdleCallback(i,{timeout:fd}):i=>setTimeout(i,0);try{if(document.readyState==="complete"){r(n)}else{window.addEventListener("load",()=>r(n),{once:true})}}catch(i){}setTimeout(n,Ih+fd)} o(vd,"runAfterHydration"); var md=`@font-face { font-family: vc-mid-dot; src: local("Segoe UI"), local("Segoe UI Symbol"), local("Helvetica Neue"), local("PingFang SC"), local("Microsoft YaHei"), local("Arial"); unicode-range: U+00B7; } :root { --vc-primary: #6366f1; --vc-primary-light: #a5b4fc; --vc-primary-lighter: #e0e7ff; --vc-primary-dark: #4338ca; --vc-ease-out: cubic-bezier(0.32, 0.72, 0, 1); --vc-ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1); --vc-fab-peek: 36px; --vc-fab-idle: #008080; --vc-want: #fb923c; --vc-want-light: #fdba74; --vc-want-lighter: #fff7ed; --vc-want-dark: #c2410c; --vc-watched: #34d399; --vc-watched-light: #6ee7b7; --vc-watched-lighter: #f0fdf4; --vc-watched-dark: #047857; --vc-danger: #f87171; --vc-danger-light: #fca5a5; --vc-danger-lighter: #fef2f2; --vc-danger-dark: #b91c1c; --vc-bg: #ffffff; --vc-bg-soft: #fafafa; --vc-bg-muted: #f5f5f5; --vc-text: #18181b; --vc-text-medium: #3f3f46; --vc-text-secondary: #71717a; --vc-text-placeholder: #a1a1aa; --vc-border: #e4e4e7; --vc-border-light: #f4f4f5; --vc-border-dark: #d4d4d8; --vc-track: rgba(0, 0, 0, 0.08); --vc-hover: #f4f4f5; --vc-hover-strong: #e4e4e7; --vc-shadow: 0 2px 12px rgba(0, 0, 0, 0.06); --vc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.07); --vc-shadow-lg: 0 12px 36px rgba(0, 0, 0, 0.10); --vc-outline: rgba(0, 0, 0, 0.12); --vc-outline-shadow: 0 2px 6px rgba(0, 0, 0, 0.16); --vc-outline-soft: rgba(0, 0, 0, 0.08); --vc-outline-shadow-soft: 0 1px 4px rgba(0, 0, 0, 0.10); --vc-surface-solid: rgba(255, 255, 255, 0.92); --vc-status-pinned-bg: rgba(255, 255, 255, 0.7); --vc-font-ui: vc-mid-dot, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", "微软雅黑", sans-serif; }`; var hd=`.vc-mask { position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.45); z-index: 100000; display: none; align-items: center; justify-content: center; margin: 0; padding: 0; } .vc-mask.vc-show { display: flex !important; } .vc-panel.vc-genie-hidden { visibility: hidden; box-shadow: none; } @keyframes vcScrimIn { from { opacity: 0; } to { opacity: 1; } } @keyframes vcScrimOut { from { opacity: 1; } to { opacity: 0; } } .vc-mask.vc-scrim-in { animation: vcScrimIn 0.3s ease both; } .vc-mask.vc-scrim-out { animation: vcScrimOut 0.34s ease both; } .vc-settings-mask { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.3); z-index: 100001; display: none; align-items: center; justify-content: center; backdrop-filter: blur(2px); --vc-settings-anim: 0.4s; } .vc-settings-mask.vc-show { display: flex !important; animation: vcScrimIn var(--vc-settings-anim) ease both; } .vc-settings-mask.vc-closing { animation: vcScrimOut var(--vc-settings-anim) ease both; pointer-events: none; } @keyframes vcFadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .vc-image-preview { position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(0, 0, 0, 0.85); z-index: 100001; display: grid; place-items: center; cursor: zoom-out; margin: 0; padding: 0; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.25s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s linear 0.25s; } .vc-image-preview.vc-show { display: grid !important; opacity: 1; visibility: visible; pointer-events: auto; transition: opacity 0.4s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img { grid-area: 1 / 1; max-width: 92vw; max-height: 92vh; object-fit: contain; border-radius: 4px; opacity: 0; transform: scale(0.97); transition: opacity 0.3s ease, transform 0.25s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img.vc-active { opacity: 1; } .vc-image-preview.vc-show img { transform: none; transition: opacity 0.3s ease, transform 0.4s cubic-bezier(0.32, 0.72, 0, 1); } .vc-image-preview img.vc-preview-enter { animation: vc-preview-enter 0.4s cubic-bezier(0.32, 0.72, 0, 1); } @keyframes vc-preview-enter { from { transform: scale(0.985); } } @media (prefers-reduced-motion: reduce) { .vc-image-preview { transition: opacity 0.15s ease, visibility 0s linear 0.15s; } .vc-image-preview.vc-show { transition: opacity 0.15s ease; } .vc-image-preview img, .vc-image-preview.vc-show img { transform: none; transition: opacity 0.15s ease; } .vc-image-preview img.vc-preview-enter { animation: none; } } .vc-jb-jump { display: inline-block; margin-left: 8px; padding: 2px 10px; font-size: 12px; font-weight: 500; color: #fff !important; background: var(--vc-primary); border-radius: 6px; text-decoration: none; cursor: pointer; vertical-align: middle; transition: opacity 0.15s, transform 0.15s; } .vc-jb-jump:hover { opacity: 0.88; transform: translateY(-1px); }`; var gd=`.vc-fab-zone { position: fixed; width: 48px; height: 48px; z-index: 100020; pointer-events: none; font-family: var(--vc-font-ui); transition: left 0.42s var(--vc-ease-out), top 0.42s var(--vc-ease-out), opacity 0.2s ease; } .vc-fab-zone.vc-fab-dragging { transition: none !important; } .vc-fab-zone.vc-fab-dim { opacity: 0.45; } .vc-fab-zone.vc-fab-dim .vc-fab { transform: scale(0.92); } .vc-fab-inner { position: absolute; inset: 0; pointer-events: none; transition: transform 0.42s var(--vc-ease-out), opacity 0.3s var(--vc-ease-out); will-change: transform, opacity; } .vc-fab-zone.vc-peek[data-vc-side="right"] .vc-fab-inner { transform: translateX(var(--vc-fab-peek)); opacity: var(--vc-fav-peek-opacity, 0.55); } .vc-fab-zone.vc-peek[data-vc-side="left"] .vc-fab-inner { transform: translateX(calc(-1 * var(--vc-fab-peek))); opacity: var(--vc-fav-peek-opacity, 0.55); } .vc-fab { position: absolute; inset: 0; display: grid; place-items: center; overflow: hidden; border: 1px solid var(--vc-outline); border-radius: 50%; cursor: pointer; pointer-events: auto; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); color: var(--vc-fab-idle); box-shadow: var(--vc-outline-shadow); transition: transform 0.3s var(--vc-ease-spring), background-color 0.28s var(--vc-ease-out), color 0.28s var(--vc-ease-out), border-color 0.28s var(--vc-ease-out), box-shadow 0.28s var(--vc-ease-out); } .vc-fab:hover { transform: scale(1.06); } .vc-fab:active { transform: scale(0.93); } .vc-fab:focus-visible { outline: 2px solid var(--vc-fab-idle); outline-offset: 3px; } .vc-fab[data-vc-state="want"] { background: var(--vc-want); border-color: var(--vc-want); color: #fff; box-shadow: 0 6px 18px rgba(251, 146, 60, 0.42); } .vc-fab[data-vc-state="watched"] { background: var(--vc-watched); border-color: var(--vc-watched); color: #fff; box-shadow: 0 6px 18px rgba(16, 185, 129, 0.38); } .vc-fab-scale { display: grid; place-items: center; } .vc-fab.vc-fab-pop .vc-fab-scale { animation: vcFabPop 0.46s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes vcFabPop { 0% { transform: scale(1); } 32% { transform: scale(0.82); } 64% { transform: scale(1.12); } 100% { transform: scale(1); } } .vc-fab::after { content: ''; position: absolute; inset: 0; border-radius: 50%; background: currentColor; opacity: 0; transform: scale(0.6); pointer-events: none; } .vc-fab.vc-fab-ripple::after { animation: vcFabRipple 0.55s var(--vc-ease-out); } @keyframes vcFabRipple { 0% { opacity: 0.28; transform: scale(0.6); } 100% { opacity: 0; transform: scale(1.9); } } .vc-fab-subs { position: absolute; left: 50%; display: flex; flex-direction: column; align-items: center; gap: 9px; pointer-events: none; opacity: 0; transition: opacity 0.2s var(--vc-ease-out), transform 0.34s var(--vc-ease-out); will-change: opacity, transform; } .vc-fab-subs[hidden] { display: none; } .vc-fab-zone[data-vc-dir="up"] .vc-fab-subs { bottom: 100%; padding-bottom: 9px; transform: translate(-50%, 10px); } .vc-fab-zone[data-vc-dir="down"] .vc-fab-subs { top: 100%; padding-top: 9px; transform: translate(-50%, -10px); } .vc-fab-zone.vc-fab-open .vc-fab-subs { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); } .vc-fab-zone:not(.vc-fab-open) .vc-fab-sub { pointer-events: none; } .vc-fab-sub { position: relative; width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid var(--vc-outline); border-radius: 50%; background: rgba(255, 255, 255, 0.96); color: var(--vc-text-secondary); box-shadow: var(--vc-outline-shadow); cursor: pointer; pointer-events: auto; -webkit-tap-highlight-color: transparent; opacity: 0; transform: scale(0.72); transition: opacity 0.22s var(--vc-ease-out), transform 0.34s var(--vc-ease-spring), background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease; } .vc-fab-zone.vc-fab-open .vc-fab-sub { opacity: 1; transform: scale(1); } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(1) { transition-delay: 0.02s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(2) { transition-delay: 0.05s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(3) { transition-delay: 0.08s; } .vc-fab-zone.vc-fab-open .vc-fab-sub:nth-child(4) { transition-delay: 0.11s; } .vc-fab-sub[hidden] { display: none; } .vc-fab-sub:hover { background: var(--vc-hover); color: var(--vc-text); } .vc-fab-zone.vc-fab-open .vc-fab-sub:active { transform: scale(0.9); } .vc-fab-sub.vc-btn-want.vc-active { background: var(--vc-want); border-color: var(--vc-want); color: #fff; } .vc-fab-sub.vc-btn-watched.vc-active { background: var(--vc-watched); border-color: var(--vc-watched); color: #fff; } .vc-fab-sub[data-vc-tip]::before { content: attr(data-vc-tip); position: absolute; right: calc(100% + 10px); top: 50%; transform: translateY(-50%) translateX(4px); padding: 5px 10px; border-radius: 7px; background: rgba(28, 32, 40, 0.94); color: #fff; font-size: 12px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity 0.18s ease, transform 0.18s var(--vc-ease-out); } .vc-fab-zone[data-vc-side="left"] .vc-fab-sub[data-vc-tip]::before { right: auto; left: calc(100% + 10px); transform: translateY(-50%) translateX(-4px); } .vc-fab-sub[data-vc-tip]:hover::before { opacity: 1; transform: translateY(-50%) translateX(0); } .vc-fav-sm .vc-fab-zone[data-vc-side="right"] { transform: scale(0.86); transform-origin: 100% 50%; } .vc-fav-sm .vc-fab-zone[data-vc-side="left"] { transform: scale(0.86); transform-origin: 0 50%; } .vc-status { position: absolute; top: 8px; left: 8px; z-index: 10; display: flex; align-items: center; gap: 2px; padding: 2px; border-radius: 7px; --vc-status-alpha: 100%; background: var(--vc-surface-solid); background: color-mix(in srgb, var(--vc-surface-solid) var(--vc-status-alpha), transparent); opacity: 0; pointer-events: none; transition: opacity 0.2s ease; font-family: var(--vc-font-ui); } .vc-fav-host .vc-status { box-shadow: var(--vc-outline-shadow), 0 0 0 1px var(--vc-outline); } .vc-fav-host .vc-status--pinned { opacity: 1; --vc-status-alpha: 70%; background: var(--vc-status-pinned-bg); background: color-mix(in srgb, var(--vc-surface-solid) var(--vc-status-alpha), transparent); pointer-events: auto; box-shadow: var(--vc-outline-shadow-soft), 0 0 0 1px var(--vc-outline-soft); } .vc-fav-host:hover .vc-status, .vc-status:hover, .vc-status:focus-within { opacity: 1; --vc-status-alpha: 100%; --vc-status-pinned-bg: var(--vc-surface-solid); pointer-events: auto; box-shadow: var(--vc-outline-shadow), 0 0 0 1px var(--vc-outline); z-index: 1010; } .vc-fav-nomark .vc-status--pinned { opacity: 0; pointer-events: none; } .vc-fav-nomark .vc-fav-host:hover .vc-status, .vc-fav-nomark .vc-status:focus-within { opacity: 1; pointer-events: auto; } .vc-status-btn { width: 22px; height: 20px; padding: 0; border: none; border-radius: 5px; background: transparent; color: var(--vc-text); font-size: 12px; line-height: 1; font-family: inherit; text-align: center; text-indent: 0; letter-spacing: normal; text-transform: none; cursor: pointer; opacity: 0.55; transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease; } .vc-status-btn:hover { opacity: 1; background: var(--vc-hover-strong); } .vc-status[data-vc-status="want"] .vc-status-btn[data-vc-set="want"], .vc-status[data-vc-status="watched"] .vc-status-btn[data-vc-set="watched"] { opacity: 1; color: #fff; } .vc-status[data-vc-status="want"] .vc-status-btn[data-vc-set="want"] { background: var(--vc-want); } .vc-status[data-vc-status="watched"] .vc-status-btn[data-vc-set="watched"] { background: var(--vc-watched); } .vc-xjump { position: fixed; z-index: 99999; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; opacity: var(--vc-xjump-opacity, 1); transition: opacity 0.15s ease; } .vc-xjump:hover, .vc-xjump.vc-show { opacity: 1; } .vc-xjump-toggle { display: inline-flex; align-items: center; gap: 4px; padding: 8px 14px; border: 1px solid var(--vc-outline); border-radius: 8px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); box-shadow: var(--vc-outline-shadow); color: var(--vc-text); font-size: 13px; font-weight: 500; cursor: grab; white-space: nowrap; user-select: none; transition: transform 0.15s ease; } .vc-xjump-toggle:hover, .vc-xjump.vc-show .vc-xjump-toggle { transform: translateY(-1px); } .vc-xjump-sm .vc-xjump-toggle .vc-xjump-label { display: none; } .vc-xjump-sm .vc-xjump-toggle { padding: 8px 10px; } .vc-xjump-menu { position: absolute; top: calc(100% + 6px); right: 0; display: none; flex-direction: column; gap: 4px; background: rgba(255, 255, 255, 0.98); border: 1px solid var(--vc-border); border-radius: 10px; box-shadow: var(--vc-shadow-lg); padding: 6px; max-height: 60vh; overflow: auto; min-width: 102px; box-sizing: border-box; transform-origin: top right; } .vc-xjump.vc-up .vc-xjump-menu { top: auto; bottom: calc(100% + 6px); transform-origin: bottom right; } .vc-xjump.vc-show .vc-xjump-menu { display: flex; animation: vcXjumpMenuPop 0.8s var(--vc-ease-out); } .vc-xjump.vc-up.vc-show .vc-xjump-menu { animation-name: vcXjumpMenuPopUp; } @keyframes vcXjumpMenuPop { from { opacity: 0; transform: translateY(-6px) scale(0.97); } } @keyframes vcXjumpMenuPopUp { from { opacity: 0; transform: translateY(6px) scale(0.97); } } @media (prefers-reduced-motion: reduce) { .vc-xjump.vc-show .vc-xjump-menu, .vc-xjump.vc-up.vc-show .vc-xjump-menu { animation: none; } } .vc-xjump-btn { padding: 6px 12px; border: none; border-radius: 6px; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; line-height: normal; font-family: inherit; -webkit-appearance: none; appearance: none; text-align: left; text-indent: 0; letter-spacing: normal; text-transform: none; white-space: nowrap; cursor: pointer; transition: background 0.15s, color 0.15s; } .vc-xjump-btn:hover { background: var(--vc-primary); color: #fff; }`; var bd=`.vc-settings-panel { --vc-settings-control-w: 196px; width: 460px; max-width: 92vw; background: var(--vc-bg); border-radius: 14px; box-shadow: var(--vc-shadow-lg); overflow: hidden; line-height: 1.45; } @keyframes vcSettingsIn { from { opacity: 0; } to { opacity: 1; } } @keyframes vcSettingsOut { from { opacity: 1; } to { opacity: 0; } } .vc-settings-mask.vc-show .vc-settings-panel { animation: vcSettingsIn var(--vc-settings-anim, 0.4s) ease; } .vc-settings-mask.vc-closing .vc-settings-panel { animation: vcSettingsOut var(--vc-settings-anim, 0.4s) ease both; } .vc-settings-header { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px; border-bottom: 1px solid var(--vc-border); } .vc-settings-title { font-size: 15px; font-weight: 600; color: var(--vc-text); } .vc-settings-close { width: 28px; height: 28px; border: none; border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 18px; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-settings-close:hover { background: var(--vc-bg-soft); color: var(--vc-text); } .vc-settings-body { padding: 8px 16px 16px; max-height: min(76vh, 860px); overflow-y: auto; overscroll-behavior: contain; } .vc-settings-body::-webkit-scrollbar { width: 6px; } .vc-settings-body::-webkit-scrollbar-thumb { background: var(--vc-scroll-thumb); border-radius: 3px; } .vc-settings-item { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: 8px; cursor: pointer; transition: background 0.15s ease; } .vc-settings-item:hover { background: var(--vc-bg-soft); } .vc-settings-item.vc-settings-static { cursor: default; } .vc-settings-item.vc-settings-static:hover { background: transparent; } .vc-settings-info { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 0; } .vc-settings-label { font-size: 14px; line-height: 1.4; font-weight: 500; color: var(--vc-text); } .vc-settings-desc { font-size: 12px; line-height: 1.45; color: var(--vc-text-secondary); } .vc-settings-desc-sub { font-size: 11px; color: var(--vc-text-secondary); opacity: 0.85; } .vc-settings-storage-parts { display: flex; flex-wrap: wrap; column-gap: 12px; row-gap: 2px; } .vc-settings-storage-parts:empty { display: none; } .vc-settings-storage-part { white-space: nowrap; } .vc-settings-section + .vc-settings-section { margin-top: 6px; border-top: 1px solid var(--vc-border); } .vc-settings-section-title { font-size: 13px; font-weight: 600; color: var(--vc-text-secondary); padding: 10px 12px 4px; } .vc-settings-item .vc-switch { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; pointer-events: none; } .vc-settings-switch-track { position: relative; flex-shrink: 0; width: 40px; height: 22px; border-radius: 999px; background: var(--vc-bg-muted); border: 1px solid var(--vc-border); box-sizing: border-box; cursor: pointer; transition: background 0.18s ease, border-color 0.18s ease; } .vc-settings-switch-track::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); transition: transform 0.18s ease; } @supports selector(:has(*)) { .vc-settings-item:has(.vc-switch:checked) .vc-settings-switch-track { background: var(--vc-primary); border-color: var(--vc-primary); } .vc-settings-item:has(.vc-switch:checked) .vc-settings-switch-track::after { transform: translateX(18px); } .vc-settings-item:has(.vc-switch:focus-visible) .vc-settings-switch-track { outline: 2px solid var(--vc-primary); outline-offset: 2px; } } @supports not (selector(:has(*))) { .vc-switch:checked + .vc-settings-info + .vc-settings-switch-track { background: var(--vc-primary); border-color: var(--vc-primary); } .vc-switch:checked + .vc-settings-info + .vc-settings-switch-track::after { transform: translateX(18px); } .vc-switch:focus-visible + .vc-settings-info + .vc-settings-switch-track { outline: 2px solid var(--vc-primary); outline-offset: 2px; } } .vc-settings-control { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; } @supports selector(:has(*)) { .vc-settings-control:has(.vc-settings-range), .vc-settings-control:has(.vc-settings-seg) { min-width: var(--vc-settings-control-w); } } .vc-settings-range-val { min-width: 38px; text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--vc-text-secondary); } .vc-settings-item .vc-settings-range { display: block; -webkit-appearance: none; appearance: none; width: 150px; height: 8px; margin: 0; padding: 0; border: none; border-radius: 999px; background: var(--vc-track, rgba(0, 0, 0, 0.1)); background-image: none; font-size: inherit; line-height: normal; color: var(--vc-text-secondary); vertical-align: middle; box-sizing: border-box; outline: none; cursor: pointer; } .vc-settings-item .vc-settings-range::-webkit-slider-runnable-track { -webkit-appearance: none; height: 8px; border-radius: 999px; background: transparent; } .vc-settings-item .vc-settings-range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px; border-radius: 50%; margin-top: -4px; background: var(--vc-primary); border: 2px solid rgba(255, 255, 255, 0.95); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); cursor: pointer; } .vc-settings-item .vc-settings-range::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--vc-primary); border: 2px solid rgba(255, 255, 255, 0.95); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); cursor: pointer; } .vc-settings-item .vc-settings-range::-moz-range-track { height: 8px; border-radius: 999px; background: transparent; } .vc-settings-btn { flex: none; padding: 6px 12px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-bg-soft); color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; font-family: inherit; cursor: pointer; transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease; } .vc-settings-btn:hover { background: var(--vc-primary); border-color: var(--vc-primary); color: #fff; } .vc-settings-item .vc-settings-range:focus-visible, .vc-settings-btn:focus-visible { outline: 2px solid var(--vc-primary); outline-offset: 3px; } .vc-settings-seg { display: inline-flex; flex-shrink: 0; border: 1px solid var(--vc-border); border-radius: 8px; overflow: hidden; background: var(--vc-bg-soft); } .vc-settings-seg-btn { padding: 6px 12px; border: none; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-weight: 500; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-settings-seg-btn + .vc-settings-seg-btn { border-left: 1px solid var(--vc-border); } .vc-settings-seg-btn.vc-active { background: var(--vc-primary); color: #fff; } .vc-settings-seg-btn:focus-visible { outline: 2px solid var(--vc-primary-lighter); outline-offset: -2px; }`; var yd=`.vc-panel { --vc-bg: rgba(30, 32, 44, 0.72); --vc-bg-soft: rgba(255, 255, 255, 0.05); --vc-bg-muted: rgba(255, 255, 255, 0.08); --vc-text: #eef1f8; --vc-text-medium: #d3d9ea; --vc-text-secondary: #a8b0c5; --vc-text-placeholder: #7d8496; --vc-border: rgba(255, 255, 255, 0.12); --vc-border-light: rgba(255, 255, 255, 0.07); --vc-border-dark: rgba(255, 255, 255, 0.22); --vc-hover: rgba(255, 255, 255, 0.08); --vc-hover-strong: rgba(255, 255, 255, 0.16); --vc-primary: #8b8ff5; --vc-primary-light: #a5b4fc; --vc-primary-dark: #a5b4fc; --vc-track: rgba(255, 255, 255, 0.16); --vc-shadow: 0 2px 12px rgba(0, 0, 0, 0.3); --vc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35); --vc-shadow-lg: 0 30px 90px rgba(0, 0, 0, 0.55); --vc-surface: rgba(255, 255, 255, 0.08); --vc-surface-hover: rgba(255, 255, 255, 0.14); --vc-surface-solid: rgba(20, 22, 30, 0.82); --vc-top-highlight: rgba(255, 255, 255, 0.14); --vc-shadow-edge: 0 2px 8px rgba(0, 0, 0, 0.3); --vc-menu-bg: #1e202c; --vc-menu-text: #eef1f8; --vc-scroll-thumb: rgba(255, 255, 255, 0.18); --vc-info-scrim: rgba(12, 14, 20, 0.72); --vc-info-scrim-light: rgba(12, 14, 20, 0.55); --vc-info-scrim-fade: rgba(12, 14, 20, 0); --vc-info-text: rgba(255, 255, 255, 0.96); --vc-info-text-dim: rgba(255, 255, 255, 0.68); --vc-info-accent: #b8bcff; --vc-cover-pos-wide: right center; --vc-cover-placeholder: linear-gradient(155deg, #454a58 0%, #2b2f3a 100%); color-scheme: dark; width: 980px; font-family: var(--vc-font-ui); max-width: 92vw; height: 92vh; min-height: 400px; color: var(--vc-text); background: var(--vc-bg); -webkit-backdrop-filter: blur(40px) saturate(180%); backdrop-filter: blur(40px) saturate(180%); border-radius: 16px; box-shadow: var(--vc-shadow-lg), var(--vc-shadow-edge), inset 0 1px 0 var(--vc-top-highlight); transition: box-shadow 0.4s ease-out; display: flex; flex-direction: column; overflow: hidden; position: relative; border: 1px solid var(--vc-border); } .vc-panel.vc-cover-fit-off { --vc-cover-pos-wide: center; } .vc-panel.vc-panel-light { --vc-bg: rgba(252, 252, 254, 0.72); --vc-bg-soft: rgba(15, 20, 30, 0.04); --vc-bg-muted: rgba(15, 20, 30, 0.06); --vc-text: #1f2430; --vc-text-medium: #333a4d; --vc-text-secondary: #5b6377; --vc-text-placeholder: #8b93a7; --vc-border: rgba(15, 20, 30, 0.12); --vc-border-light: rgba(15, 20, 30, 0.07); --vc-border-dark: rgba(15, 20, 30, 0.22); --vc-hover: rgba(15, 20, 30, 0.05); --vc-hover-strong: rgba(15, 20, 30, 0.1); --vc-primary: #6366f1; --vc-primary-light: #4f46e5; --vc-primary-dark: #4f46e5; --vc-track: rgba(15, 20, 30, 0.14); --vc-shadow: 0 2px 12px rgba(15, 20, 30, 0.12); --vc-shadow-md: 0 4px 16px rgba(15, 20, 30, 0.14); --vc-shadow-lg: 0 30px 90px rgba(15, 20, 30, 0.26); --vc-shadow-edge: 0 2px 8px rgba(15, 20, 30, 0.1); --vc-surface: rgba(255, 255, 255, 0.72); --vc-surface-hover: rgba(255, 255, 255, 0.98); --vc-surface-solid: rgba(255, 255, 255, 0.9); --vc-top-highlight: rgba(255, 255, 255, 0.9); --vc-menu-bg: #ffffff; --vc-menu-text: #1f2430; --vc-scroll-thumb: rgba(15, 20, 30, 0.2); color-scheme: light; } .vc-list-wrap::-webkit-scrollbar { width: 6px; } .vc-list-wrap::-webkit-scrollbar-thumb { background: var(--vc-scroll-thumb); border-radius: 3px; } .vc-panel-header { padding: 18px 46px 14px 24px; border-bottom: 1px solid var(--vc-border); flex-shrink: 0; } .vc-panel-title-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .vc-panel-title { font-size: 18px; font-weight: 600; color: var(--vc-text); margin: 0; } .vc-header-actions { display: flex; gap: 8px; } .vc-header-divider { flex: none; width: 1px; margin: 2px 0; background: var(--vc-border); } .vc-icon-btn-sm { padding: 6px 12px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 8px; font-size: 12px; cursor: pointer; color: var(--vc-text-secondary); transition: all 0.15s; } .vc-icon-btn-sm:hover { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-icon-btn-sm.vc-icon-btn-icon { display: inline-flex; align-items: center; justify-content: center; align-self: center; width: 30px; height: 30px; padding: 0; } .vc-icon-btn-sm .vc-icon { display: block; width: 15px; height: 15px; } .vc-icon-btn-refresh.vc-spin .vc-icon { animation: vcSpin 0.45s ease; } @keyframes vcSpin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .vc-header-menu-wrap { position: relative; display: flex; align-items: center; align-self: center; } .vc-header-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 30; display: none; flex-direction: column; min-width: 128px; padding: 6px; background: var(--vc-menu-bg); border: 1px solid var(--vc-border); border-radius: 10px; box-shadow: var(--vc-shadow-md); transform-origin: top right; } .vc-header-menu.vc-show { display: flex; animation: vcHeaderMenuPop 0.5s var(--vc-ease-out); } @keyframes vcHeaderMenuPop { from { opacity: 0; transform: translateY(-6px) scale(0.97); } } .vc-header-menu-item { padding: 8px 12px; border: none; border-radius: 6px; background: none; color: var(--vc-menu-text); font-family: inherit; font-size: 13px; text-align: left; white-space: nowrap; cursor: pointer; transition: background 0.15s, color 0.15s; } .vc-header-menu-item:hover { background: var(--vc-hover); color: var(--vc-primary); } .vc-tabs { display: flex; align-items: center; gap: 24px; margin-bottom: 12px; } .vc-tab { padding: 6px 0; font-size: 14px; color: var(--vc-text-secondary); cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.2s; } .vc-tab.vc-active { color: var(--vc-primary); border-bottom-color: var(--vc-primary); font-weight: 500; } .vc-search { flex: 1; min-width: 0; width: auto; padding: 8px 30px 8px 12px; border: 1px solid var(--vc-border); border-radius: 8px; font-size: 13px; outline: none; transition: border-color 0.2s; box-sizing: border-box; background: var(--vc-surface); color: var(--vc-text); margin-bottom: 0 !important; } .vc-search::placeholder { color: var(--vc-text-placeholder); } .vc-search:focus { border-color: var(--vc-primary); } .vc-search-row { display: flex; align-items: center; gap: 8px; margin-left: auto; min-width: 0; } .vc-search-wrap { position: relative; display: flex; align-items: center; flex: 1; min-width: 0; } .vc-search-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: none; width: 18px; height: 18px; padding: 0; border: none; border-radius: 50%; background: transparent; color: var(--vc-text-placeholder); cursor: pointer; align-items: center; justify-content: center; transition: color 0.2s, background 0.2s; } .vc-search-clear::before, .vc-search-clear::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 1.5px; background: currentColor; border-radius: 1px; } .vc-search-clear::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-search-clear::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-search:not(:placeholder-shown) ~ .vc-search-clear { display: flex; } .vc-search-clear:hover { color: var(--vc-text); background: var(--vc-hover); } .vc-site-select { flex-shrink: 0; max-width: 140px; padding: 8px 6px; border: 1px solid var(--vc-border); border-radius: 8px; font-size: 12px; color: var(--vc-text); background: var(--vc-surface); outline: none; cursor: pointer; transition: border-color 0.2s; box-sizing: border-box; } .vc-site-select option { background: var(--vc-menu-bg); color: var(--vc-menu-text); } .vc-site-select:focus { border-color: var(--vc-primary); } .vc-list-wrap { flex: 1; overflow-y: auto; padding: 20px 24px; display: none; box-sizing: border-box; } .vc-list-wrap.vc-active { display: block; } .vc-panel > * { transition: opacity 0.5s ease-out, transform 0.5s ease-out; transition-delay: 100ms; } .vc-panel > .vc-list-wrap { transition-delay: 500ms; } .vc-panel > .vc-batch-bar, .vc-panel > .vc-pagination { transition-delay: 600ms; } .vc-panel.vc-content-enter > * { opacity: 0; transform: translateY(4px); transition: none; } .vc-panel.vc-content-enter > .vc-panel-header { transform: none; } .vc-grid { display: grid; grid-template-columns: repeat(5, 1fr); grid-template-rows: repeat(3, minmax(160px, 1fr)); gap: 16px; height: 100%; width: 100%; } .vc-card { position: relative; border-radius: 12px; overflow: hidden; border: 1px solid var(--vc-border); background: var(--vc-surface); transition: all 0.2s ease; cursor: pointer; display: flex; flex-direction: column; max-height: 312px; } .vc-card:hover { background: var(--vc-surface-hover); border-color: var(--vc-border-dark); transform: translateY(-2px); } .vc-card-cover { position: absolute; inset: 0; z-index: 0; background: var(--vc-cover-placeholder); display: flex; align-items: center; justify-content: center; overflow: hidden; } .vc-card-cover img { width: 100%; height: 100%; object-fit: cover; object-position: center; cursor: zoom-in; opacity: 0; transition: opacity 1s cubic-bezier(0.32, 0.72, 0, 1), transform 0.2s; } .vc-card-cover img.vc-cover-ready { opacity: 1; } .vc-card-cover img.vc-cover-wide { object-position: var(--vc-cover-pos-wide); } .vc-card:hover .vc-card-cover img { transform: scale(1.05); } .vc-card-cover .vc-default-cover { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--vc-cover-placeholder); color: rgba(255, 255, 255, 0.4); font-size: 28px; } .vc-card-actions { position: absolute; top: 8px; right: 8px; display: flex; gap: 4px; opacity: 0; transition: opacity 0.2s ease; z-index: 2; } .vc-card:hover .vc-card-actions { opacity: 1; } .vc-card-action-btn { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: none; background: var(--vc-surface-solid); border-radius: 6px; cursor: pointer; color: var(--vc-text); transition: all 0.15s; } .vc-card-action-btn .vc-icon { display: block; width: 15px; height: 15px; } .vc-card-action-btn:hover { background: var(--vc-primary); color: #fff; } .vc-card-delete-btn:hover { background: var(--vc-danger); color: white; } .vc-card-info { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 6px 8px 8px; background: var(--vc-info-scrim); transition: background 0.2s ease; } .vc-card-info::before { content: ''; position: absolute; left: 0; right: 0; bottom: 100%; height: 16px; background: linear-gradient(to top, var(--vc-info-scrim) 0%, var(--vc-info-scrim-fade) 75%); pointer-events: none; transition: background 0.2s ease; } .vc-panel-light .vc-card-info { background: var(--vc-info-scrim-light); } .vc-panel-light .vc-card-info::before { background: linear-gradient(to top, var(--vc-info-scrim-light) 0%, var(--vc-info-scrim-fade) 75%); } .vc-panel-light .vc-card-info:hover { background: var(--vc-info-scrim); } .vc-panel-light .vc-card-info:hover::before { background: linear-gradient(to top, var(--vc-info-scrim) 0%, var(--vc-info-scrim-fade) 75%); } .vc-card-info .vc-card-title { color: var(--vc-info-text); } .vc-card-info .vc-card-time { color: var(--vc-info-text-dim); } .vc-card-info .vc-card-last-played { color: var(--vc-info-accent); } .vc-card-rate { position: absolute; left: 8px; top: 36px; z-index: 2; display: none; max-width: calc(100% - 16px); overflow: hidden; transition: opacity 0.2s ease; } .vc-card-rate:not(:empty) { display: inline-flex; align-items: center; } .vc-card-rate-link { padding: 1px 6px; border-radius: 4px; background: rgba(15, 17, 23, 0.72); font-size: 10px; font-weight: 600; line-height: 1.5; color: var(--vc-info-accent); text-decoration: none; white-space: nowrap; } .vc-card-rate-link:hover { text-decoration: underline; } .vc-card-rate-none { opacity: 0; font-weight: 500; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-rate-none, .vc-card-rate-none:focus-visible { opacity: 0.72; } .vc-card-rate-fetch { padding: 1px 6px; border-radius: 4px; border: none; background: rgba(15, 17, 23, 0.72); font-family: inherit; font-size: 10px; font-weight: 600; line-height: 1.5; color: var(--vc-info-accent); cursor: pointer; opacity: 0; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-rate-fetch, .vc-card-rate-fetch:focus-visible { opacity: 1; } .vc-panel.vc-batch-mode .vc-card-rate { opacity: 0; pointer-events: none; } .vc-card-title { font-size: 12px; line-height: 1.4; color: var(--vc-text); font-weight: 500; height: 1.4em; overflow: hidden; transition: height 0.28s ease; } .vc-card-info:hover .vc-card-title { height: var(--vc-title-full, auto); transition-delay: 0.12s; } .vc-card-copy { display: inline-block; border: none; background: transparent; cursor: pointer; font-size: 11px; line-height: 1; padding: 0; margin: 0; margin-top: -2px; border-radius: 4px; vertical-align: middle; opacity: 0.55; transition: opacity 0.15s, background 0.15s; } .vc-card-copy:hover { opacity: 1; background: rgba(139, 143, 245, 0.24); } .vc-card-site { position: absolute; left: 8px; top: 14px; z-index: 2; max-width: calc(100% - 16px); font-size: 10px; line-height: 1.5; color: #fff; background: rgba(15, 17, 23, 0.72); padding: 1px 6px; border-radius: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; transition: opacity 0.2s ease; } .vc-card:hover .vc-card-site { opacity: 0; } .vc-panel.vc-batch-mode .vc-card-site { opacity: 0; } .vc-card-site:empty { display: none; } .vc-card-meta { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 4px; min-width: 0; } .vc-card-time { flex: 1 1 auto; font-size: 11px; color: var(--vc-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } .vc-card-last-played { flex: none; max-width: 100%; font-family: var(--vc-font-ui); font-size: 11px; font-weight: 600; color: var(--vc-primary-dark); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; } .vc-card-last-played:empty { display: none; } .vc-card:hover .vc-card-status, .vc-card-status:focus-within { opacity: 1; pointer-events: auto; } .vc-card.vc-pending { opacity: 0.6; filter: grayscale(1); } .vc-card.vc-pending .vc-card-status { display: none; } .vc-card-pending { position: absolute; inset: 0; z-index: 4; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; border-radius: 12px; background: rgba(12, 14, 20, 0.62); } .vc-card-pending-text { font-size: 12px; font-weight: 500; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); } .vc-card-undo { padding: 3px 10px; border: 1px solid var(--vc-border-dark); border-radius: 6px; background: var(--vc-surface-solid); color: var(--vc-text); font-size: 11px; font-weight: 500; font-family: inherit; cursor: pointer; transition: all 0.15s; } .vc-card-undo:hover { background: var(--vc-primary); border-color: var(--vc-primary); color: #fff; } .vc-empty { grid-column: 1 / -1; grid-row: 1 / -1; align-self: center; justify-self: center; display: flex; align-items: center; justify-content: center; max-width: 360px; padding: 22px 26px; border: 1px dashed var(--vc-border-dark); border-radius: 12px; background: var(--vc-bg-soft); color: var(--vc-text-secondary); font-size: 14px; line-height: 1.6; text-align: center; } .vc-pagination { padding: 12px 24px; border-top: 1px solid var(--vc-border); display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--vc-text-secondary); flex-shrink: 0; font-variant-numeric: tabular-nums; } .vc-pagination-btns { display: flex; align-items: center; gap: 8px; } .vc-page-btn { padding: 4px 10px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 6px; font-size: 12px; cursor: pointer; color: var(--vc-text-secondary); font-family: inherit; transition: all 0.15s; } .vc-page-btn:hover:not(:disabled) { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-page-btn:disabled { opacity: 0.4; cursor: not-allowed; } .vc-close { position: relative; flex: none; align-self: center; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; background: none; border: none; color: var(--vc-text-secondary); cursor: pointer; line-height: 1; margin-right: -38px; } .vc-close::before, .vc-close::after { content: ''; position: absolute; left: 50%; top: 50%; width: 13px; height: 1.6px; background: currentColor; border-radius: 1px; } .vc-close::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-close::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-close:hover { color: var(--vc-text); } .vc-card-checkbox { position: absolute; top: 6px; left: 6px; z-index: 3; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; } .vc-card-checkbox input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--vc-primary); } .vc-panel.vc-batch-mode .vc-card-checkbox { display: flex !important; } .vc-panel.vc-batch-mode .vc-card-actions { display: none !important; } .vc-panel.vc-batch-mode .vc-card-cover img { cursor: pointer; } .vc-panel.vc-batch-mode .vc-card-status { display: none !important; } .vc-panel.vc-batch-mode .vc-card-copy { display: none !important; } .vc-panel.vc-batch-mode .vc-card { cursor: pointer; } .vc-card.vc-selected { box-shadow: 0 0 0 2px var(--vc-primary); } .vc-batch-bar { padding: 12px 24px; border-top: 1px solid var(--vc-border); display: flex; align-items: center; gap: 12px; font-size: 13px; color: var(--vc-text-secondary); flex-shrink: 0; font-family: var(--vc-font-ui); background: var(--vc-hover); } .vc-batch-select-all { display: flex; align-items: center; gap: 4px; cursor: pointer; white-space: nowrap; font-weight: 500; margin-bottom: 0 !important; } .vc-batch-select-all input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--vc-primary); } .vc-batch-count { color: var(--vc-primary); font-weight: 600; white-space: nowrap; } .vc-batch-actions { margin-left: auto; display: flex; gap: 6px; } .vc-batch-btn { padding: 4px 12px; border: 1px solid var(--vc-border); background: var(--vc-surface); border-radius: 6px; font-size: 12px; font-weight: 500; cursor: pointer; color: var(--vc-text-secondary); transition: all 0.15s; font-family: inherit; } .vc-batch-btn:hover:not(:disabled) { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-batch-btn:disabled { opacity: 0.4; cursor: not-allowed; } .vc-batch-btn-danger:hover:not(:disabled) { border-color: var(--vc-danger); color: var(--vc-danger); } .vc-batch-btn-ghost { border-color: transparent; background: transparent; } .vc-batch-btn-ghost:hover { color: var(--vc-text) !important; border-color: var(--vc-border) !important; } .vc-panel.vc-batch-mode .vc-pagination { display: none; } .vc-panel .vc-icon-btn-sm:focus-visible, .vc-panel .vc-header-menu-item:focus-visible, .vc-panel .vc-close:focus-visible, .vc-panel .vc-search:focus-visible, .vc-panel .vc-search-clear:focus-visible, .vc-panel .vc-site-select:focus-visible, .vc-panel .vc-page-btn:focus-visible, .vc-panel .vc-batch-btn:focus-visible, .vc-panel .vc-card-action-btn:focus-visible, .vc-panel .vc-card-status-btn:focus-visible, .vc-panel .vc-card-undo:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-panel.vc-batch-mode .vc-icon-btn-batch { border-color: var(--vc-primary); color: var(--vc-primary); } @media (prefers-reduced-motion: reduce) { .vc-panel .vc-card { transition: none; } .vc-panel .vc-icon-btn-refresh.vc-spin .vc-icon { animation: none; } .vc-panel .vc-card-cover img { transition: opacity 0.15s ease-out; } .vc-panel .vc-card:hover, .vc-panel .vc-card:hover .vc-card-cover img { transform: none; } .vc-header-menu.vc-show { animation: none; } }`; var xd=`.vc-confirm-mask { position: fixed; inset: 0; z-index: 100002; background: rgba(0, 0, 0, 0.35); display: none; align-items: center; justify-content: center; backdrop-filter: blur(2px); } .vc-confirm-mask.vc-show { display: flex !important; } .vc-confirm-dialog { width: 375px; max-width: 90vw; background: white; border-radius: 12px; box-shadow: var(--vc-shadow-lg); padding: 24px; text-align: center; animation: vcFadeIn 0.15s ease; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } .vc-confirm-text { font-size: 15px; font-weight: 500; color: var(--vc-text); line-height: 1.5; margin-bottom: 25px; white-space: pre-line; } .vc-confirm-actions { display: flex; gap: 20px; justify-content: center; } .vc-confirm-btn { padding: 7px 20px; border: none; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s; font-family: inherit; } .vc-confirm-cancel { background: var(--vc-hover); color: var(--vc-text-secondary); border: 1px solid var(--vc-border); } .vc-confirm-cancel:hover { background: var(--vc-border); color: var(--vc-text); } .vc-confirm-ok { background: var(--vc-primary); color: white; } .vc-confirm-ok:hover { opacity: 0.9; } .vc-confirm-ok.vc-danger { background: var(--vc-danger); } .vc-import-dialog { width: 420px; max-width: 92vw; background: white; border-radius: 12px; box-shadow: var(--vc-shadow-lg); padding: 24px; animation: vcFadeIn 0.15s ease; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } .vc-import-title { font-size: 16px; font-weight: 600; color: var(--vc-text); margin-bottom: 16px; } .vc-import-options { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; } .vc-import-option { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 10px 14px; border: 1px solid var(--vc-border); border-radius: 8px; background: #fff; cursor: pointer; text-align: left; transition: border-color 0.15s, background 0.15s; font-family: inherit; } .vc-import-option:hover { border-color: var(--vc-primary); background: rgba(79, 70, 229, 0.04); } .vc-import-option-name { font-size: 14px; font-weight: 500; color: var(--vc-text); } .vc-import-option-desc { font-size: 12px; color: var(--vc-text-secondary); line-height: 1.4; } .vc-import-actions { display: flex; justify-content: center; } .vc-toast { position: fixed; top: 5vh; left: 50%; transform: translateX(-50%) translateY(-8px); z-index: 100010; display: flex; align-items: center; gap: 8px; max-width: 80vw; padding: 10px 14px 12px; background: #fff; color: var(--vc-text); font-size: 13px; font-weight: 500; border-radius: 10px; box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18); border: 1px solid var(--vc-border); font-family: var(--vc-font-ui); opacity: 0; pointer-events: none; overflow: hidden; transition: opacity 0.3s ease, transform 0.3s ease; } .vc-toast.vc-show { display: flex !important; opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; animation: vc-toast-pop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes vc-toast-pop { 0% { opacity: 0; transform: translateX(-50%) translateY(-16px) scale(0.96); } 70% { opacity: 1; transform: translateX(-50%) translateY(3px) scale(1.02); } 100% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); } } .vc-toast-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .vc-toast-emph { display: inline-block; padding: 1px 6px; margin: 0 2px; border-radius: 999px; background: var(--vc-primary-lighter); color: var(--vc-primary-dark); font-weight: 600; } .vc-toast-icon { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: var(--vc-primary-light); color: #fff; } .vc-toast-bar { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--vc-primary-light); transform-origin: left center; opacity: 0; } .vc-toast.vc-show .vc-toast-bar { opacity: 1; animation: vc-toast-progress var(--vc-toast-duration, 2000ms) linear forwards; } @keyframes vc-toast-progress { to { transform: scaleX(0); } } .vc-toast.vc-toast-primary { border-color: var(--vc-primary-light); box-shadow: 0 8px 30px rgba(79, 70, 229, 0.28); } .vc-toast-clickable { cursor: pointer; } .vc-toast-clickable:hover { border-color: var(--vc-primary); } .vc-toast-link { color: var(--vc-primary-dark); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; } .vc-toast-clickable:hover .vc-toast-link { color: var(--vc-primary); text-decoration-thickness: 2px; } .vc-toast-close { flex-shrink: 0; padding: 0 2px; border: none; background: none; color: var(--vc-text-secondary); font-size: 16px; line-height: 1; cursor: pointer; } .vc-toast-close:hover { color: var(--vc-text); }`; var wd=`.vc-ws-mask { position: fixed; inset: 0; z-index: 100001; background: rgba(0, 0, 0, 0.45); display: none; align-items: center; justify-content: center; font-family: var(--vc-font-ui); } .vc-ws-mask.vc-show { display: flex; } @keyframes vcWsIn { from { opacity: 0; transform: translateY(8px) scale(0.98); } to { opacity: 1; transform: none; } } .vc-ws-panel { width: 460px; max-width: 92vw; max-height: 82vh; display: flex; flex-direction: column; background: var(--vc-bg); border-radius: 14px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3); overflow: hidden; color: var(--vc-text); } .vc-ws-mask.vc-show .vc-ws-panel { animation: vcWsIn 0.18s ease; } .vc-ws-header { display: flex; align-items: center; justify-content: space-between; padding: 13px 20px; border-bottom: 1px solid var(--vc-border); } .vc-ws-title { font-size: 15px; font-weight: 600; } .vc-ws-close { width: 28px; height: 28px; border: none; border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 18px; line-height: 1; cursor: pointer; transition: background 0.15s ease, color 0.15s ease; } .vc-ws-close:hover { background: var(--vc-bg-soft); color: var(--vc-text); } .vc-ws-body { padding: 12px 16px 4px; overflow-y: auto; overscroll-behavior: contain; } .vc-ws-input-row { position: relative; display: flex; align-items: center; } .vc-ws-body .vc-ws-input { display: block; flex: 1; min-width: 0; box-sizing: border-box; margin: 0; padding: 9px 30px 9px 12px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-surface); color: var(--vc-text); font-size: 13px; font-family: inherit; line-height: 1.4; outline: none; } .vc-ws-body .vc-ws-input:focus { border-color: var(--vc-primary); } @keyframes vcWsInputAttn { 0% { border-color: var(--vc-primary); box-shadow: 0 0 0 3px var(--vc-primary-light); } 100% { border-color: var(--vc-border); box-shadow: none; } } .vc-ws-input-attn { animation: vcWsInputAttn 0.6s ease; } .vc-ws-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: none; width: 18px; height: 18px; padding: 0; border: none; border-radius: 50%; background: transparent; color: var(--vc-text-placeholder); cursor: pointer; align-items: center; justify-content: center; transition: color 0.2s, background 0.2s; } .vc-ws-clear::before, .vc-ws-clear::after { content: ''; position: absolute; left: 50%; top: 50%; width: 8px; height: 1.5px; background: currentColor; border-radius: 1px; } .vc-ws-clear::before { transform: translate(-50%, -50%) rotate(45deg); } .vc-ws-clear::after { transform: translate(-50%, -50%) rotate(-45deg); } .vc-ws-input:not(:placeholder-shown) ~ .vc-ws-clear { display: flex; } .vc-ws-clear:hover { color: var(--vc-text); background: var(--vc-hover); } .vc-ws-clear:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-ws-hint { margin: 8px 2px 0; font-size: 12px; line-height: 1.5; color: var(--vc-text-secondary); } .vc-ws-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0 12px; } .vc-ws-fold { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 8px; } .vc-ws-fold-toggle { align-self: stretch; display: flex; align-items: center; justify-content: space-between; gap: 8px; box-sizing: border-box; width: 100%; padding: 8px 12px; border: 1px dashed var(--vc-border); border-radius: 8px; background: transparent; color: var(--vc-text-secondary); font-size: 12px; font-family: inherit; cursor: pointer; transition: border-color 0.15s ease, color 0.15s ease; } .vc-ws-fold-toggle::after { content: ''; flex: none; width: 0; height: 0; border-left: 5px solid currentColor; border-top: 4px solid transparent; border-bottom: 4px solid transparent; transition: transform 0.28s var(--vc-ease-spring); } .vc-ws-fold.vc-show .vc-ws-fold-toggle::after { transform: rotate(90deg); } .vc-ws-fold-toggle:hover { border-color: var(--vc-primary); color: var(--vc-primary); } .vc-ws-fold-toggle:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; } .vc-ws-fold-anim { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.28s var(--vc-ease-out); } .vc-ws-fold.vc-show .vc-ws-fold-anim { grid-template-rows: 1fr; } .vc-ws-fold-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; min-height: 0; overflow: hidden; opacity: 0; transform: translateY(-4px); visibility: hidden; transition: opacity 0.12s ease, transform 0.14s ease, visibility 0s linear 0.28s; } .vc-ws-fold.vc-show .vc-ws-fold-list { opacity: 1; transform: none; visibility: visible; transition: opacity 0.2s var(--vc-ease-out) 0.06s, transform 0.24s var(--vc-ease-out) 0.06s, visibility 0s; } @media (prefers-reduced-motion: reduce) { .vc-ws-fold-anim, .vc-ws-fold-list, .vc-ws-fold.vc-show .vc-ws-fold-list, .vc-ws-fold-toggle::after { transition: none; } } .vc-ws-item { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 8px 10px; border: 1px solid var(--vc-border); border-radius: 8px; background: var(--vc-surface); transition: border-color 0.15s ease; } .vc-ws-item:hover { border-color: var(--vc-primary); } .vc-ws-item.vc-ws-item-off { opacity: 0.55; cursor: default; } .vc-ws-item.vc-ws-item-off:hover { border-color: var(--vc-border); } .vc-ws-item.vc-ws-item-visited { opacity: 0.55; } .vc-ws-item.vc-ws-item-visited:hover { opacity: 1; } .vc-ws-check { flex: none; width: 14px; height: 14px; margin: 0; accent-color: var(--vc-primary); cursor: pointer; } .vc-ws-link { flex: 1; min-width: 0; font-size: 13px; font-weight: 500; color: var(--vc-text); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .vc-ws-link:hover { color: var(--vc-primary); } .vc-ws-link:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; border-radius: 4px; } .vc-ws-link-off { color: var(--vc-text-placeholder); pointer-events: none; } .vc-ws-domain { flex: none; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; color: var(--vc-text-secondary); } .vc-ws-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px 14px; border-top: 1px solid var(--vc-border); } .vc-ws-count { font-size: 12px; color: var(--vc-text-secondary); } .vc-ws-btn { padding: 7px 14px; border: none; border-radius: 8px; background: var(--vc-primary); color: #fff; font-size: 13px; font-family: inherit; cursor: pointer; transition: background 0.15s ease; } .vc-ws-btn:hover { background: var(--vc-primary-dark); } .vc-ws-btn:focus-visible { outline: 2px solid var(--vc-primary-light); outline-offset: 2px; }`; var Bh=[md,hd,gd,bd,yd,xd,wd].join("\n"); var Sd=Bh; var Ed=`
我的收藏
想看
已看
观看记录
共 0 条收藏
1 / 1
`; var _d=`
{{coverHtml}}
{{siteName}} {{rateHtml}} {{statusButtons}}
{{copyBtnHtml}}{{title}}
{{dateStr}} {{lastPlayed}}
`; var kd=`{{title}} `; var Td=`
🖼️
`; var Uh={panelTemplate:Ed,cardTemplate:_d,coverImageTemplate:kd,defaultCoverTemplate:Td}; var Ct; function Fd(t){const e=Hr(t&&t.cover||"");if(!e||/^[a-z][a-z0-9+.-]*:/i.test(e))return e;const n=Ve(t.coverFrom||t.siteId);const r=n?Ee(n):"";return Vt(e,r?"https://"+r:location.href)} o(Fd,"displayCover"); function Vh(t,e){const n=lt(e);return(t.domains||[]).some(r=>{const i=lt(r);return n===i||n.endsWith("."+i)})} o(Vh,"isSiteDomain"); function ac(t){if(!t||!t.cover)return null;const e=Ve(t.coverFrom||t.siteId);if(!e||typeof e.coverReferer!=="function")return null;let n=null;try{n=new URL(Fd(t))}catch(a){return null}if(n.host===location.host)return null;if(!Vh(e,n.host))return null;const r=[n.host];const i=Ee(e);if(i)r.push(lt(i));(e.domains||[]).forEach(a=>r.push(lt(a)));const c=r.filter((a,s)=>a&&r.indexOf(a)===s).map(a=>{const s=n.protocol+"//"+a;return{url:s+n.pathname+n.search,referer:e.coverReferer(t.path,s)}});return{url:c[0].url,attempts:c}} o(ac,"proxyPlanOf"); function Ad(){if(!Ze.isPanelOpen())return;It.renderedTabs.clear();Ze.renderActiveList()} o(Ad,"refreshPanelIfOpen"); var ho=sd({volume:true,rating:{get:o(()=>mi(),"get"),set:o(t=>{Ps(t);Ad()},"set"),clear:o(()=>{wl();Ad()},"clear"),confirm:Le,status:o(()=>Cl(),"status")},usage:o(()=>Fl(),"usage"),engine:{get:o(()=>GM_getValue(ge,true)!==false,"get"),set:o(t=>GM_setValue(ge,t!==false),"set")}}); var vc=ld({listTargetsFn:Mu,resolveUrlFn:Pu,warmDomainFn:Iu,setEnabledFn:Cu}); var Ze=ed({state:It,pageSize:zo,loadFn:o(()=>({...Tt(),history:Ul()}),"loadFn"),hasHistory:true,filterFn:o((t,e)=>{if(!e)return t;const n=e.toLowerCase();return t.filter(r=>(r.name||"").toLowerCase().includes(n))},"filterFn"),getId:o(t=>t.name,"getId"),getTitle:o(t=>t.name,"getTitle"),getUrl:o(t=>Qh(t),"getUrl"),resolveUrlFn:tg,getSiteName:o(t=>{if(!t.siteId)return"";return(Ve(t.siteId)||{}).name||""},"getSiteName"),resolveSiteIdFn:o(t=>{if(!t.siteId)return"";return(Ve(t.siteId)||{}).name||t.siteId||""},"resolveSiteIdFn"),getTime:o(t=>t.updateTime||t.createTime,"getTime"),getStatus:o(t=>nr(t.name),"getStatus"),setStatusFn:Hu,restoreStatusFn:Uu,deleteFn:ju,batchSetStatusFn:Vu,batchDeleteFn:Gu,exportFn:Nl,importFn:ql,updateButtonStateFn:o(()=>Bt(),"updateButtonStateFn"),openSettingsFn:o(()=>ho.open(),"openSettingsFn"),openWebSearchFn:o(()=>vc.open(Ze.getSearchKeyword()),"openWebSearchFn"),getExtraInfo:o(t=>xu(ie(t.name)),"getExtraInfo"),resolveCoverFn:o(t=>{if(!t)return"";const e=ac(t);if(!e)return Fd(t);return vo(t.name,e.url)||e.url},"resolveCoverFn"),resolveCoverFallbackFn:o(t=>{const e=ac(t);return e?dd(t.name,e.attempts):Promise.resolve("")},"resolveCoverFallbackFn"),onCoverFailed:o((t,e)=>{if(!t||!t.name)return;if(e&&!/^blob:/i.test(e)&&ac(t))return;eu(t.name,navigator.onLine===false);if(navigator.onLine!==false)Zl(t.name)},"onCoverFailed"),onCoverLoaded:o(t=>{if(t&&t.name)ou(t.name)},"onCoverLoaded"),emptyText:"\u6682\u65E0\u6536\u85CF\u5185\u5BB9",templates:Uh,getMetaFn:o(t=>Ei(t.name),"getMetaFn"),requestMetaFn:o((t,e,n)=>{if(!mi()){e(null);return}Pl(t,e,n)},"requestMetaFn"),metaStaleFn:o(t=>bl(t.name),"metaStaleFn"),metaEnabledFn:o(()=>true,"metaEnabledFn"),resetRatingQueueFn:o(()=>Il(),"resetRatingQueueFn"),getOriginRectFn:o(()=>Ct==null?void 0:Ct.getOriginRect(),"getOriginRectFn"),setFloatPanelFn:o(t=>Ct==null?void 0:Ct.setPanelOpen(t),"setFloatPanelFn")}); var go=Ze.openPanel; var Bd=Ze.closePanel; var sc="vc-global-style"; function bo(){if(!document.getElementById(sc)){const t=document.createElement("style");t.id=sc;t.textContent=Sd;document.head.appendChild(t)}if(!document.head.dataset.vcStyleWatch){document.head.dataset.vcStyleWatch="1";new MutationObserver(()=>{if(!document.getElementById(sc))bo()}).observe(document.head,{childList:true})}} o(bo,"injectStyles"); function Gh(){if(!pd()){Nd();dc();return}vd(()=>{Nd();dc()})} o(Gh,"mountBodyUi"); function jd(){bo();nu();Gh();const t=[...re,...Cn];t.forEach(n=>Qo(n));xa().then(()=>t.forEach(n=>Qo(n)));GM_registerMenuCommand("\u6536\u85CF\u5217\u8868",go);GM_registerMenuCommand("\u5168\u7F51\u641C\u7D22",()=>vc.open(pe()));GM_registerMenuCommand("\u8BBE\u7F6E",()=>ho.open());let e=location.href;setInterval(()=>{if(location.href!==e){e=location.href;setTimeout(()=>{dc();Bt();$d()},500)}},1e3);document.addEventListener("keydown",n=>{var i,c;if(n.key!=="Escape")return;if(document.querySelector(".vc-settings-mask.vc-show"))return;if(document.querySelector(".vc-ws-mask.vc-show"))return;const r=document.querySelector(".vc-image-preview");if(r==null?void 0:r.classList.contains("vc-show")){Do();return}if((i=pc.getXjumpEl())==null?void 0:i.classList.contains("vc-show")){pc.getXjumpEl().classList.remove("vc-show");return}if((c=Ze.getPanelEl())==null?void 0:c.classList.contains("vc-show"))Bd()})} o(jd,"initDrama"); var Kh=2e3; var Ld=0; var Cd=false; function Md(t){var n,r;if(Fr().video)return;const e=t.target;if((n=e==null?void 0:e.closest)==null?void 0:n.call(e,'a, button, input, textarea, select, [contenteditable="true"], [class*="vc-"]'))return;Fn((r=xt())==null?void 0:r.playerFrameSelector,{force:true})} o(Md,"onPageClick"); function Id(t){if(t===Cd)return;Cd=t;if(t)document.addEventListener("click",Md);else document.removeEventListener("click",Md)} o(Id,"bindPageClick"); var Ot=Au(); ks(t=>Ot.applyVolume(t)); vu(()=>Ot.ready()?{time:Ot.time(),ended:false}:null); mu(t=>Ot.seek(t)); gu(()=>Ot.play()); hu(()=>{uc();Ot.detach()}); var lc=Qi({getVideo:o(()=>Fr().video,"getVideo"),step:Go,volumeStep:Ko,onAction:o(t=>rt(t,{tone:"info"}),"onAction"),remote:{ready:o(()=>Ot.ready(),"ready"),seek:o(t=>Ot.seek(Math.max(0,Ot.time()+t)),"seek"),volume:o(t=>{const e=Number(Ot.volume());const n=Math.min(1,Math.max(0,(Number.isFinite(e)?e:1)+t));jr(n*100);return n},"volume"),toggle:o(()=>{if(Ot.paused())Ot.play();else Ot.pause()},"toggle")},onNoVideo:o(()=>{var t;if(!Fn((t=xt())==null?void 0:t.playerFrameSelector,{force:true}))return;if(Date.now()-Ld{if(t===window||mo.has(t))return;if(!Pd(t))return;const e=Qi({win:t,getVideo:o(()=>Pd(t),"getVideo"),step:Go,volumeStep:Ko,onAction:o(n=>rt(n,{tone:"info"}),"onAction")});e.enable();mo.set(t,e)})} o(Od,"refreshFrameKeyboards"); function Yh(){mo.forEach(t=>t.disable());mo.clear()} o(Yh,"stopFrameKeyboards"); Ot.onKey(t=>lc.handleRemoteKey(t)); var Rd=As({getVolume:o(()=>Number(jt("volume"))/100,"getVolume")}); var Ne=null; function Dd(t){if(!t)return;const e=pe();if(!e||Ne&&Ne.name===e)return;if(Ne)Ne.stop();Ne={name:e,stop:yu(t,e)}} o(Dd,"ensurePlaybackSession"); function uc(){if(!Ne)return;Ne.stop();Ne=null} o(uc,"releasePlaybackSession"); function dc(){const t=xt();if(!t){uc();return}const e=t.pageType();const n=e==="play"||e==="detail"&&t.trackPlaybackOnDetail;jl(pe());if(typeof t.onPageReady==="function")t.onPageReady();if(e==="detail"){so();[600,1500,3e3].forEach(r=>setTimeout(so,r));if(t.isPlayUrl&&!document.body.dataset.vcDramaPlayClickBound){document.body.dataset.vcDramaPlayClickBound="1";document.addEventListener("click",r=>{const i=r.target.closest("a");if(i&&t.isPlayUrl(i.href))so()})}}if(n){Dd(t);lc.enable();Od();[600,1500,3e3].forEach(r=>setTimeout(Od,r));Rd.start();Id(true);Fn(t.playerFrameSelector);setTimeout(()=>Dd(xt()),1500);[600,1500,3e3].forEach(r=>setTimeout(()=>Fn(t.playerFrameSelector),r));Yi(t);[1500,3e3].forEach(r=>setTimeout(()=>Yi(xt()),r));Ot.attach(t);[1500,3e3].forEach(r=>setTimeout(()=>Ot.attach(xt()),r))}else{uc();lc.disable();Yh();Rd.stop();Ot.detach();Id(false);Ki()}if(e==="detail"||e==="play"){qd();[1500,3e3].forEach(r=>setTimeout(qd,r))}ig();cg();[1500,3e3].forEach(r=>setTimeout(()=>{Bt();$d()},r))} o(dc,"enhancePage"); function Wh(){return Ho} o(Wh,"getPositionKey"); function Xh(){const t=xt();const e=t?[t,...re.filter(r=>r.id!==t.id)]:re;const n=[];e.forEach(r=>{n.push(`${Ho}_${r.id}`);n.push(`${Gc}_${r.id}`)});return n} o(Xh,"getLegacyPositionKeys"); function Jh(){if(Ji()&&pe())Fu();else go()} o(Jh,"onPrimaryClick"); function Zh(){var t;if((t=Ze.getPanelEl())==null?void 0:t.classList.contains("vc-show"))Bd();else go()} o(Zh,"togglePanel"); function Nd(){Ct=od({positionKeyFn:Wh,legacyPositionKeysFn:Xh,onWant:Nu,onWatched:qu,onOpenPanel:go,onTogglePanel:Zh,onPrimaryClick:Jh,getPrimaryStateFn:o(()=>nr(pe()),"getPrimaryStateFn"),getPrimaryIntentFn:Bu,isDetailPageFn:Ji,updateButtonStateFn:Bt,onVisibilityChange:sg,onWebSearch:o(()=>vc.open(pe()),"onWebSearch")});Ct.create()} o(Nd,"createFloatButtons"); function $d(){if(Ct)Ct.updateVisibility()} o($d,"updateButtonVisibility"); function Bt(){if(Ct)Ct.refreshPrimary();const t=Ct==null?void 0:Ct.getWantBtn();const e=Ct==null?void 0:Ct.getWatchedBtn();if(!t||!e)return;const n=pe();if(!n){t.classList.remove("vc-active");e.classList.remove("vc-active");return}t.classList.toggle("vc-active",lo(n,"want"));e.classList.toggle("vc-active",lo(n,"watched"))} o(Bt,"updateButtonState"); function Qh(t){if(!t.siteId)return"";const e=Ve(t.siteId);if(!e)return"";const n=Ee(e);if(!n)return"";return"https://"+n+(t.path||"")} o(Qh,"buildDramaUrl"); function tg(t,e){const n=Ve(t.siteId);if(!n||!n.domains||!n.domains.length)return Promise.resolve(e||"");return cn(n).then(r=>r?"https://"+r+(t.path||""):e||"")} o(tg,"resolveDramaUrl"); function eg(t){const e=Tt();const n=new Map;(e.watched||[]).forEach(i=>n.set(J(i.name),"watched"));(e.want||[]).forEach(i=>n.set(J(i.name),"want"));const r=new Map;(t||[]).forEach(i=>{const c=n.get(J(i));if(c)r.set(i,c)});return r} o(eg,"buildFavIndex"); var zd=id({getSiteFn:xt,buildFavIndexFn:eg,buildItemFn:o((t,e)=>{const{element:n,name:r,cover:i,path:c}=t;if(!r)return null;return{name:r,cover:Vt(i),path:c,siteId:e.id,createTime:Date.now(),updateTime:Date.now(),element:n}},"buildItemFn"),getIdFn:o(t=>t.name,"getIdFn"),isFavoritedFn:lo,toggleFavoriteFn:Ru,refreshItemFn:o((t,e,n)=>{if(!t.element||!(e==null?void 0:e.getListCards))return;const r=e.getListCards().find(i=>i.element===t.element);if(!r)return;if(r.cover)t.cover=r.cover},"refreshItemFn"),afterToggleFn:Bt,afterInjectFn:o(t=>{ag(t);og(t)},"afterInjectFn")}); var or=[]; var fc=null; function ng(){fc=null;if(!or.length)return;ki(or.splice(0,or.length))} o(ng,"flushPendingRatings"); function rg(){if(fc)return;fc=setTimeout(ng,800)} o(rg,"scheduleRatingFlush"); function og(t){const e=xt();if(!e||typeof e.getSiteRating!=="function")return;(t||[]).forEach(n=>{const r=n&&n.element;if(!r||!n.name||r.dataset.vcRated===n.name)return;const i=e.getSiteRating(r);if(!i)return;r.dataset.vcRated=n.name;or.push({name:n.name,rating:i})});if(or.length)rg()} o(og,"harvestRatingsFromList"); function ig(){Jl();zd.inject()} o(ig,"injectListFavoriteButtons"); function cg(){if(document.body.dataset.vcDramaListPreloadBound)return;document.body.dataset.vcDramaListPreloadBound="1";document.addEventListener("click",t=>{const e=t.target;if(!e||!e.closest)return;if(e.closest(".vc-status"))return;const n=xt();if(!n||!n.getListCards)return;const r=n.getListCards()||[];const i=r.find(c=>c.element&&c.element.contains(e));if(!i||!i.name||!i.cover)return;Ie(i.name,i.cover)},true)} o(cg,"bindListCardClickPreload"); function ag(t){const e=xt();if(!e)return;const n=t||(e.getListCards?e.getListCards():[]);n.forEach(r=>{if(!r||!r.name)return;if(!Ql(r.name))return;const i=es(r.element);if(!i)return;Nn("[\u5F71\u89C6\u6536\u85CF] \u5217\u8868\u9875\u547D\u4E2D\u5F85\u4FEE\u5C01\u9762\uFF1A",r.name);pn(r.name,i,e.id)})} o(ag,"repairCoversFromList"); function sg(){zd.refreshAll()} o(sg,"refreshAllMiniButtons"); function lg(){return kn} o(lg,"getXjumpPositionKey"); function ug(){if(GM_getValue(kn,null))return;const t=xt();if(!t)return;const e=GM_getValue(`${kn}_${t.id}`,null);if(e)GM_setValue(kn,e)} o(ug,"migrateXjumpPosition"); var pc=cd({getSiteFn:xt,getKeywordFn:o(()=>{const t=xt();if(!t)return null;const e=t.pageType();let n=null;if(e==="detail"&&t.getDetailInfo)n=(t.getDetailInfo()||{}).name||null;else if(e==="play"&&t.getPlayInfo)n=(t.getPlayInfo()||{}).name||null;if(!n)return null;return dr(n)[1]||n},"getKeywordFn"),getPositionKeyFn:lg,getAllSitesFn:o(()=>[...re,...Cn],"getAllSitesFn"),pickDomainFn:Ee,findAliveDomainFn:cn,siteIdField:"id"}); function qd(){ug();pc.inject()} o(qd,"injectCrossSiteJump"); var dg=[1200,3e3,6e3]; var fg=2e4; var pg=500; function Hd(t){let e=false;let n=null;let r=0;function i(){if(e)return true;let s=false;try{s=!!t()}catch(l){s=false}if(!s)return false;e=true;if(n)n.disconnect();return true}o(i,"boot");function c(){if(e)return;const s=Date.now();if(s-rsetTimeout(i,s));try{n=new MutationObserver(c);n.observe(document.documentElement,{childList:true,subtree:true});setTimeout(()=>{if(n)n.disconnect()},fg)}catch(s){}}o(a,"start");if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",a,{once:true})}else{a()}} o(Hd,"bootWithGateRetry"); var vg=3e4; var mg=5e3; var hg=6e4; var gg=null; function ae(t){const e=Number(t);return Number.isFinite(e)?e:0} o(ae,"num"); function bg(t){const e=Array.isArray(t)?t.filter(Boolean):[];if(!e.length)return null;const n=o(c=>(c.videoWidth||0)*(c.videoHeight||0),"area");const r=e.filter(c=>c.currentSrc||(c.readyState||0)>0);const i=r.length?r:e;return i.slice().sort((c,a)=>n(a)-n(c))[0]} o(bg,"pickBestVideo"); function Ud(){if(window.self===window.top)return;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1Aiframe \u5185\u5DF2\u542F\u52A8\uFF08"+location.hostname+"\uFF09\uFF0C\u5F00\u59CB\u627E video");try{window.parent.postMessage(ce(pt.BOOT,{host:location.hostname,depth:0}),"*")}catch(S){}let t="";let e=null;let n=null;let r=null;let i=null;let c=0;let a=false;let s=null;const l=[];const p=o(S=>{try{window.parent.postMessage(S,"*")}catch(f){}},"post");const d=o(()=>!!e&&e.isConnected,"alive");function E(S){if(!S)return null;for(const f of document.querySelectorAll("iframe")){if(f.contentWindow===S)return f}return null}o(E,"childFrameOf");function x(S){if(s){try{s.postMessage(S,"*");return}catch(f){}}for(const f of document.querySelectorAll("iframe")){try{if(f.contentWindow)f.contentWindow.postMessage(S,"*")}catch(g){}}}o(x,"relayDown");function _(){if(!d()||!t)return;c=Date.now();p(ce(pt.STATE,{nonce:t,depth:0,time:ae(e.currentTime),dur:ae(e.duration),paused:!!e.paused,vol:ae(e.volume),muted:!!e.muted}))}o(_,"report");function y(){if(!d())return;p(ce(pt.READY,{depth:0,dur:ae(e.duration),w:ae(e.videoWidth),h:ae(e.videoHeight),src:String(e.currentSrc||"")}))}o(y,"announce");function P(){if(!d())return;e.addEventListener("timeupdate",()=>{if(Date.now()-c{e.addEventListener(S,_)});e.addEventListener("loadedmetadata",()=>{L();_()})}o(P,"bindVideo");function b(S){if(!d())return;if(S.op===ee.VOLUME){Ge(e,S.v,{unmute:true});return}if(S.op===ee.SEEK){if(!e||e.readyState<1){H();if(e&&e.readyState>=1){try{e.currentTime=Math.max(0,ae(S.to))}catch(f){}return}l.length=0;l.push(S);N();return}try{e.currentTime=Math.max(0,ae(S.to))}catch(f){}return}if(S.op===ee.PLAY){Promise.resolve(e.play()).catch(()=>{});return}if(S.op===ee.PAUSE){e.pause();return}if(S.op===ee.STATE)_()}o(b,"runCmd");function L(){if(!d())return;while(l.length)b(l.shift())}o(L,"flushPending");function h(){if(n){n.disconnect();n=null}if(r){clearTimeout(r);r=null}if(i){clearInterval(i);i=null}l.length=0}o(h,"stopWait");const A=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"," ","Spacebar"];function D(S){if(S.ctrlKey||S.altKey||S.metaKey)return;if(!A.includes(S.key))return;if(S.defaultPrevented)return;S.preventDefault();S.stopPropagation();p(ce(pt.KEY,{key:S.key}))}o(D,"onKeyDownCapture");function O(S){const f=S.target;if(!f||!f.tagName||f.tagName.toLowerCase()!=="video")return;if(!e||f!==e)return;let g=false;try{g=f.matches(":hover")}catch(M){g=false}if(!g)return;try{f.blur()}catch(M){}}o(O,"onFocusIn");window.addEventListener("keydown",D,true);window.addEventListener("focusin",O,true);window.addEventListener("message",S=>{const f=oo(S.data);if(!f)return;if(S.source!==window.parent){if(!E(S.source))return;if(f.t===pt.BOOT||f.t===pt.READY||f.t===pt.STATE||f.t===pt.KEY){if(s!==S.source){s=S.source;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u64AD\u653E\u5668\u5728\u66F4\u5185\u5C42\uFF0C\u672C\u5C42\u6539\u4E3A\u4E2D\u7EE7\uFF08"+location.hostname+"\uFF09")}p(ce(f.t,Object.assign({},f,{depth:(Number(f.depth)||0)+1})))}return}if(f.t===pt.HELLO){t=String(f.nonce||"");if(!a){a=true;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u5DF2\u88AB\u7236\u9875\u9762\u8BA4\u9886\uFF08"+location.hostname+"\uFF09\uFF0C\u5F00\u59CB\u4E0A\u62A5\u72B6\u6001")}if(!d()){x(ce(pt.HELLO,{nonce:t}));return}_();return}if(f.t===pt.CMD){if(!t||f.nonce!==t)return;if(!d()){x(ce(pt.CMD,f));return}b(f)}});let T=null;let q=0;const j=1e3;function F(){const S=[...document.querySelectorAll("video")];if(S.length){T=null;return S}const f=T?T.filter(g=>g.isConnected):[];if(f.length)return f;if(Date.now()g.tagName==="VIDEO");if(!T.length)q=Date.now()+j;return T}o(F,"findVideoList");function H(){const S=bg(F());if(!S)return false;if(S===e&&d())return true;e=S;P();y();U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u9501\u5B9A\u64AD\u653E\u5668 video\uFF08"+ae(S.videoWidth)+"x"+ae(S.videoHeight)+"\uFF0C\u65F6\u957F "+Math.round(ae(S.duration))+" \u79D2\uFF09");return true}o(H,"tryFind");function N(){if(i)return;const S=Date.now();i=setInterval(()=>{if(!l.length||Date.now()-S>hg){l.length=0;clearInterval(i);i=null;return}H();if(e&&e.readyState>=1){clearInterval(i);i=null;L();_()}},500)}o(N,"ensureFlushLoop");if(!H()){const S=document.querySelectorAll("iframe").length;U("[\u5F71\u89C6\u6536\u85CF] \u6865\u63A5\uFF1A\u672C\u5C42\u8FD8\u6CA1\u6709 video"+(S?"\uFF0C\u4F46\u91CC\u9762\u6709 "+S+" \u4E2A iframe \u2014\u2014 \u53EF\u80FD\u662F\u5D4C\u5957\u64AD\u653E\u5668\uFF0C\u5355\u5C42\u6865\u63A5\u8986\u76D6\u4E0D\u5230":""))}n=new MutationObserver(()=>{H()});n.observe(document.documentElement||document,{childList:true,subtree:true});r=setTimeout(h,vg);gg={stop:h,snapshot:o(()=>({observer:!!n,wait:!!r,flush:!!i,pending:l.length}),"snapshot")}} o(Ud,"startBridge"); var yg=window.self!==window.top; if(yg){Ud()} else{zr();Te();Hd(()=>{ds();if(!xt())return false;jd();return true});if(GM_getValue(ge,true)===false&&Ar({ignoreEngineSwitch:true})){GM_registerMenuCommand("\u8BBE\u7F6E",()=>{bo();ho.open()})}} })();