trackkun-dom 2.28.1 → 2.28.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(J,F){typeof exports=="object"&&typeof module<"u"?F(exports):typeof define=="function"&&define.amd?define(["exports"],F):(J=typeof globalThis<"u"?globalThis:J||self,F(J._trackkun_={}))})(this,(function(J){"use strict";function F(a){let e=!1;return new Promise((t,r)=>{Promise.all(a.map(async n=>{const s=await n;!e&&s&&(e=!0,t(s))})).then(()=>{e||t(void 0)})})}const rt=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,nt=/^S([1-9])\s/i,st=/(ch(ap(t(er)?|\.)?|\.)?|#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([-~_,.]\d+)?)/i,it=/\d+([-~_,.]\d+)?/,ot=/[-~_,]/;function lt(a){const e=a.match(rt);if(e)return{volStr:e[0],volValueStr:e[4]};const t=a.match(nt);return t?{volStr:t[0],volValueStr:t[1]}:{}}function z(a){if(!a)return;if(!isNaN(+a))return{chap:+a};const{volStr:e,volValueStr:t}=lt(a),r=e?a.replace(e,"").trim():a,n=r.match(st)?.[6]??r.match(it)?.[0];if(!n)return;const s=+n.replace(ot,".");if(isNaN(s))return;const i=e&&t&&!isNaN(+t)?+t:void 0;return{vol:i===void 0||i<=0?void 0:i,chap:s}}function ct(){return Math.random().toString(16).slice(2)}async function ut({addListener:a,removeListener:e,transform:t,filter:r,handler:n,onTimeout:s,timeout:i,once:o}){return new Promise(c=>{a(g);const l=()=>o===!0&&e(g),u=i?setTimeout(()=>{l(),c(void 0),s?.()},i):void 0;async function g(h,...d){h=t?t(h):h,h!==void 0&&(!r||r(h,...d))&&(l(),c(h),n?.(h,...d),u&&clearTimeout(u))}})}async function gt(a){return(await ut({addListener:e=>window.addEventListener("message",e),removeListener:e=>window.removeEventListener("message",e),...a}))?.data}async function ht(a){const{receiverWindow:e,timeout:t,targetOrigin:r,event:n,args:s}=a,i={reqId:ct(),event:n,args:s};return(e||window)?.postMessage(i,r??"*"),(await gt({filter:o=>o?.data?.resId===i.reqId,timeout:t??3e4,once:!0}))?.result}function M(a,e){return ht({event:"tk:fetchResult",args:{url:a},timeout:e?.timeoutMs??15e3})}async function P(a,e,t){const r=await t(()=>{a=0});if(r!==void 0)return r;if(!(a<=0))return await new Promise(n=>{setTimeout(async()=>{const s=await P(a-1,e,t);n(s)},e)})}async function k(a,e,t=0){const r=e.root??document.documentElement,n=e.timeoutMs??1e4;return P(e.lazy===!0?n/50:0,50,()=>{const s=e.all===!0?Array.from(r.querySelectorAll(a)):r.querySelector(a)??void 0;return(e.all?!s?.length:!s)?void 0:s})}function ne(a,e){if(a instanceof HTMLOptionElement){const t=a.parentElement instanceof HTMLOptGroupElement?a.parentElement.parentElement:a.parentElement;if(!t||!(t instanceof HTMLSelectElement))return;const r=a.getAttribute("value")||"";if(t.value===r)return;t.value=r,t.dispatchEvent(new Event("change"));return}a instanceof HTMLAnchorElement&&e?.preventDefault!==!1&&a.addEventListener("click",t=>t.preventDefault(),{once:!0}),a.click(),a.dispatchEvent(new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0,pointerType:"mouse",button:0})),a.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window,button:0}))}function H(a){if(a)try{return JSON.parse(a)}catch{return}}const de={text:we,attr:wt,"attr-contain":vt,value:yt,row:bt,"bg-image":Rt,json:$t},pt={pattern:xt,remove:St,atob:Ct};function p(a,e){if(a)return fe(a,e,ft)}function V(a,e){if(a)return fe(a,e,mt)}function fe(a,e,t){if(!a)return;const r=a.split("||").map(n=>n.trim()).filter(Boolean);for(const n of r){const s=dt(n);if(!s)continue;const i=t(e??document.documentElement,s);if(i)return i}}function dt(a){const[e,t,...r]=a.split("|");if(!t)return;const n=t?.startsWith("[")&&t.endsWith("]")?t.substring(1,t.length-1).split(","):[t];return{selector:e||void 0,extractors:n.map(se),transformers:r.map(se)}}function se(a){const e=a.indexOf(":"),t=e!==-1;return{fn:t?a.substring(0,e):a,param:t?a.substring(e+1):""}}function ft(a,e){if(!e.selector)return me(a,e);const t=Dt(e.selector);for(const r of t){const n=Array.from(a.querySelectorAll(r));for(const s of n){const i=me(s,e);if(i)return i}}}function mt(a,e){const t=e.selector?Array.from(a.querySelectorAll(e.selector)):[a],r=[];for(const n of t)for(const s of e.extractors){const i=de[s.fn],o=i(n,s.param);if(o){r.push(ie(o,e.transformers));break}}if(r.length)return r}function me(a,e){for(const t of e.extractors){const r=de[t.fn],n=r(a,t.param);if(n)return ie(n,e.transformers)}}function ie(a,e){let t=a;for(const r of e){const n=pt[r.fn];n&&(t=n(t,r.param).trim())}return t}function we(a){return Array.from(a.childNodes).filter(e=>e.nodeType===3).map(e=>W(e.textContent)).filter(Boolean).join(" ").trim()||W(a.textContent)}function wt(a,e){return W(a.getAttribute(e))}function vt(a,e){let t=a.getAttribute(e);if(!t){const r=a.getAttributeNames().find(n=>n.includes(e));r&&(t=a.getAttribute(r))}return W(t)}function yt(a){return a.value}function bt(a,e){if(!e)return;const t=W(a.textContent)?.toLowerCase(),r=e.toLowerCase();if(!(t!==r&&t!==`${r}:`))return W(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function Rt(a){const e=getComputedStyle(a).backgroundImage;if(!(!e||!e.startsWith("url(")))return e.slice(5,-2)||void 0}function $t(a,e){const t=N(H(we(a)),e);return typeof t=="number"?t+"":typeof t=="string"?W(t+""):void 0}function N(a,e){if(!a||!e)return;const t=e.indexOf("."),r=t!==-1,n=r?e.substring(0,t):e,s=r?e.substring(t+1):void 0;try{const i=a[n];return s?N(i,s):i}catch{return}}function W(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}function xt(a,e){if(e)try{return a.replace(new RegExp(e,"i"),"$1")}catch{}return a}function St(a,e){if(e)try{return a.replaceAll(new RegExp(e,"gi"),"")}catch{}return a}function Ct(a){try{return window.atob(a)}catch{return a}}function Dt(a){const e=[];let t="",r=!1;for(let s=0;s<a.length;s++){const i=a[s];if(i==="["?r=!0:i==="]"&&(r=!1),i===","&&!r){const o=t.trim();o.length>0&&e.push(o),t=""}else t+=i}const n=t.trim();return n.length>0&&e.push(n),e}var Mt=(a=>(a[a.reading=1]="reading",a[a.paused=2]="paused",a[a.plan=3]="plan",a[a.completed=4]="completed",a[a.dropped=5]="dropped",a[a.deleted=6]="deleted",a))(Mt||{}),Pt=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(Pt||{}),It=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(It||{}),Tt=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(Tt||{}),ve=(a=>(a.id="id",a.name="name",a.slug="slug",a))(ve||{}),Y=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(Y||{}),G=(a=>(a[a.manga=1]="manga",a[a.novel=2]="novel",a[a.anime=3]="anime",a))(G||{});function oe(a=0){return new Promise(e=>setTimeout(e,a))}const jt=/\d+[a-z]+\d+/i,Bt=/[a-z]+\d+[a-z]+/i,Lt=/^\d{5,}$/;function ye(a){if(!a)return;const e=[];a.split(/[-_]/).forEach(r=>{const n=r.split(".").filter(s=>s&&!Bt.test(s)&&!jt.test(s)&&!Lt.test(s)).join(".");n&&e.push(n)});const t=e.join(" ");return z(t)}async function le(a,e=240){return new Promise(t=>{const r=new Image;r.crossOrigin="anonymous",r.onerror=()=>t(void 0),r.onload=async()=>{if(r.naturalWidth<=1){t(void 0);return}const n=Math.max(1,r.naturalWidth/e),s=r.naturalWidth/n,i=r.naturalHeight/n,o=document.createElement("canvas"),c=o.getContext("2d");o.width=s,o.height=i;const l=/iPad|iPhone|iPod/.test(navigator.userAgent);try{c.drawImage(r,0,0,s,i);const u=o.toDataURL(l?"image/jpg":"image/webp",l?.99:.8),g=location.protocol.includes("chrome-extension")||await At(u);t(g?u.split(",").slice(-1)[0]:void 0)}catch{t(void 0)}},r.src=a})}function At(a){return new Promise(e=>{const t=new Image;t.onerror=()=>e(!1),t.onload=()=>{e(t.naturalWidth>10)},t.src=a})}async function Ut(a,e=240){const t=await Ot(a);if(t)return await new Promise(async r=>{const n=le(t,e),s=setTimeout(()=>r(void 0),100),i=await n;clearTimeout(s),r(i)})}async function Ot(a){if(a.startsWith("blob:"))return a;try{const e=await fetch(a);if(e.status>=400)return;const t=await e.blob();return URL.createObjectURL(t)}catch{return}}function R(a,e){if(e==="")return a;if(!e)return;const t=e.split("||").map(r=>r.trim()).filter(Boolean);for(const r of t){const[n,...s]=r.split("|"),i=N(a,n);if(typeof i=="number"||i){if(typeof i!="string")return i;const o=i.replace(/(\n|\t)/g," ").trim();if(o){const c=ie(o,s.map(se));if(c)return c}}}}function Q(a){if(a?.startsWith("window")){const e=a.indexOf(".");return e===-1?void 0:R(window,a.substring(e+1))}return H(a?p(a):document.querySelector("pre")?.textContent)}function I(a,e){if(typeof a=="number")return e?e(a):a}function $(a,e){if(typeof a=="string")return e?e(a):a}function K(a,e){const t=a.map(l=>({...l,vol:l.vol===0?void 0:l.vol}));t.sort((l,u)=>l.vol===void 0||u.vol===void 0?u.chap-l.chap:u.vol-l.vol||u.chap-l.chap);const r={},n={};for(let l=t.length-1;l>=0;l--){const u=t[l],g=u.group??"";r[g]=(r[g]??0)+1;const h=u.lang??"";u.vol!==void 0?n[h]=u.vol:n[h]!==void 0&&(u.inferVol=n[h])}const s=[],i={},o=e?.preferGroup,c=l=>l.lang??"";for(const l of t){const u=c(l),g=i[u],h=s[g];if(!(h&&h.chap===l.chap&&(h.vol===l.vol||h.vol===void 0||l.vol===void 0))){i[u]=s.length,s.push(l);continue}if(!o){h.vol===void 0&&l.vol!=null&&(s[g]=l);continue}h.group!==o&&(l.group==o||h.group&&!l.group||r[l.group??""]>r[h.group??""])&&(s[g]=l)}return s}const Et=/^(a|an|one|last|\d+)\s*([a-z]+)/,zt=/^(\d+)\s*([a-z]+)/,kt=/^\d+$/,Nt=[{seconds:1,short:"s",locales:{en:"sec",vi:"gi\xE2y",tr:"ikinci",es:"segundo",ja:"\u79D2",ko:"\uCD08",zh:"\u79D2",id:"detik",pt:"segundo"}},{seconds:60,short:"m",locales:{en:"min",vi:"ph\xFAt",tr:"dakika",es:"minuto",ja:"\u5206",ko:"\uBD84",zh:"\u5206",id:"menit",pt:"minuto"}},{seconds:3600,short:"h",locales:{en:"hour",vi:"gi\u1EDD",tr:"saat",fr:"heure",it:"ora",es:"hora",ja:"\u6642\u9593",ko:"\uC2DC\uAC04",zh:"\u5C0F\u65F6",id:"jam",pt:"hora"}},{seconds:86400,short:"d",locales:{en:"day",vi:"ng\xE0y",tr:"g\xFCn",fr:"jour",it:"giorno",es:"d\xEDa",ja:"\u65E5",ko:"\uC77C",zh:"\u5929",id:"hari",pt:"dia"}},{seconds:604800,short:"w",locales:{en:"week",vi:"tu\u1EA7n",tr:"hafta",fr:"semaine",it:"settimana",es:"semana",ja:"\u9031\u9593",ko:"\uC8FC",zh:"\u5468",id:"minggu",pt:"semana"}},{seconds:2592e3,short:"mo",locales:{en:"month",vi:"th\xE1ng",tr:"ay",fr:"mois",it:"mese",es:"mes",ja:"\u30F6\u6708",ko:"\uAC1C\uC6D4",zh:"\u6708",id:"bulan",pt:"m\xEAs"}},{seconds:31536e3,short:"y",locales:{en:"year",vi:"n\u0103m",tr:"yil",fr:"an",it:"anno",es:"a\xF1o",ja:"\u5E74",ko:"\uB144",zh:"\u5E74",id:"tahun",pt:"ano"}}],Wt=["a","an","one","last"];function be(a,e="en"){if(!a)return;const t=a.toLowerCase().trim().replace(/ago$/,"").trim(),r=Date.now();if(t.includes("now"))return r;if(t.includes("yesterday"))return r-864e5;if(kt.test(t))return Number(t);const n=new Date(t);if(!isNaN(n.getTime())){const i=n.getTime();return n.getHours()===0&&n.getMinutes()===0&&n.getSeconds()===0?Math.min(r,i+432e5):i}const s=e==="en"?t.match(Et):t.match(zt);if(s){const[,i,o]=s,c=e==="en"&&Wt.includes(i)?1:Number(i);if(isNaN(c))return;const l=Nt.find(u=>o===u.short||u.locales[e]&&o.startsWith(u.locales[e])||o.startsWith(u.locales.en));if(l)return r-c*l.seconds*1e3}}function qt(a,e=location.origin){if(!a)return;const t=new URL(a.startsWith("//")?`${location.protocol}${a}`:a,location.origin+location.pathname).toString();return t.startsWith(e)?t.replace(e,""):t}function q(a,{titleSlug:e,titleId:t,lang:r}){if(!a)return"/";let n=a;return e&&(n=n.replace("{titleSlug}",e)),t&&(n=n.replace("{titleId}",t)),r&&(n=n.replace("{lang}",r)),n.endsWith("/")||(n+="/"),n.startsWith("/")||(n="/"+n),n}function ce(a){if(!a)return;let e=a;e.startsWith("//")&&(e=`https:${e}`);try{return new URL(e)}catch{return}}function A(a){if(!(!a||typeof a!="string"))return a.includes("//")?ce(a)?.pathname:a}function _t(a){const e=a.getBoundingClientRect();return Jt(e)}function Jt({width:a,height:e}){return a>=75&&e>=50&&(a>=200||e>=200)}function Ft(a,e){const t=[...e],r=[];let n=!1,s=0;const i=Math.min(a.length,100);for(let c=0;c<i;c++){if(s>=10/2){const d=10-r.length;if(d>0){const f=c+d<=a.length?a.slice(c,c+d):t.slice(0,d);r.push(...f)}break}const l=a[c],u=l.id!==void 0,g=t.findIndex(d=>u&&d.id===l.id||d.slug===l.slug||d.name==l.name),h=g===-1?void 0:t.splice(g,1)[0];!h||h.chapters[0]?.chap!==l.chapters[0]?.chap?(n=!0,r.push({...l,changed:!0})):(s++,r.push(l))}if(!n)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const o=[];for(let c=0;c<r.length;c++){const l=r[c];(l.changed||c<10)&&o.push(l)}return{hasMore:e.length<2||e.length-t.length<2,rawReleases:o}}function Gt(a,e){const t={};return a.forEach(r=>{const n=r.chapters.reduce((s,i)=>{const o=i.lang||e||"";return s[o]||(s[o]=[]),s[o].push(i),s},{});Object.entries(n).forEach(([s,i])=>{const o=`${r.slug}:${s}`;t[o]?(t[o].chapters.push(...i),K(t[o].chapters)):t[o]={...r,lang:s===""?void 0:s,chapters:i}})}),Object.values(t)}function Re(a,e){const t=a[0]===e?a.substring(1):a;return t[t.length-1]===e?t.substring(0,t.length-1):t}var x=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(x||{}),Ht=Object.defineProperty,Vt=(a,e,t)=>e in a?Ht(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,T=(a,e,t)=>Vt(a,typeof e!="symbol"?e+"":e,t);class X{constructor(e){T(this,"headless"),T(this,"siteId"),T(this,"spec"),T(this,"siteMeta"),T(this,"tags"),T(this,"context"),T(this,"isGeneric",!1),T(this,"methodsMap",{[x.title]:()=>this.getRawTitleData(),[x.reader]:()=>this.getRawReaderData(),[x.releases]:()=>this.getRawReleasesData(),[x.search]:()=>this.getRawSearchData(),[x.chapters]:()=>this.getRawChaptersData()}),T(this,"normalizedTagsMap"),this.siteId=e.siteId,this.spec=e.spec,this.siteMeta=e.siteMeta,this.tags=e.tags,this.context=e.context??{},this.headless=e.headless===!0}async getRawPageByType(e,t=!1){this.isGeneric=t;const r=await this.methodsMap[e](),n=!r&&(e===x.title||e===x.reader)&&await Zt(this.spec);if(t&&!r&&!n)return;const s=location.origin+location.pathname;return{type:e,is404:n,specId:this.spec.id,siteName:this.getSiteName(e,r),favUrl:Qt(),htmlLang:Xt(),url:s,data:this.siteMeta.oneshot&&r?this.transformOneshot(e,r):r,spec:this.spec,context:this.context}}transformOneshot(e,t){if(e==="title"){const r=t.firstUrl;if(!r)return t;const{slug:n}=this.parseReaderUrl(this.siteMeta.readerBase,new URL(r).pathname,r);return{...t,hasMoreChapters:void 0,chapters:[{chap:0,slug:n}]}}if(e==="reader"){const r=t;return{...r,chap:0,title:{...r.title,hasMoreChapters:void 0,chapters:[{chap:0,slug:r.slug}]}}}return t}parseReaderUrl(e,t,r){const n=!this.siteId,s=t.includes("/");let i=e;if(s&&!i&&(i=this.siteMeta.readerBase),i.startsWith("/")||(i="/"+i),i.endsWith("/")||(i=i+"/"),!s)return n?{basePath:"",slug:`${i}${t}`}:{basePath:i,slug:t};const o=i.includes("{");let c=t;if(c[0]!=="/"&&(c.includes("/")||n&&!o))try{c=new URL(t,location.href).pathname}catch{}if(c.endsWith("/")&&(c=c.slice(0,-1)),o){const l=i.split("/").filter(Boolean),u=c.split("/").filter(Boolean);if(l.length<u.length){const g=u[l.indexOf("{lang}")]?.toLowerCase(),h=u[l.indexOf("{titleId}")],d=u[l.indexOf("{titleSlug}")];if(n)return{basePath:"",slug:c,lang:g,titleId:h,titleSlug:d};if(i=i.replace("{lang}",g).replace("{titleId}",h).replace("{titleSlug}",d),c.startsWith(i))return{basePath:i,slug:c.replace(i,""),lang:g,titleId:h,titleSlug:d}}}else if(!n&&c.startsWith(i))return{basePath:i,slug:c.replace(i,"")};return{basePath:"",slug:c}}parseTitleUrl(e){if(typeof e!="string")return{};const t=A(e);if(t===void 0)return{};if(this.siteMeta.single)return{slug:Re(t,"/")};const r=t?.split("/").filter(Boolean);if(!r?.length)return{};const n=this.siteMeta.titleBase.split("/").filter(Boolean),s=n.indexOf("{slug}");return(s===-1?r.length-n.length>=1:r.length===n.length)?{id:r[n.indexOf("{id}")],slug:this.siteId?s===-1?r.slice(n.length).join("/"):r[s]:t}:{slug:t}}finalizeRawReleasesData(e){const t=this.spec.releases?.title?.lang?this.siteMeta.defaultLang:void 0,r=Gt(e.rawReleases,t);if(r.length)return this.context.oldRawReleases?Ft(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(e){if(!e?.length)return;const t=this.normalizedTagsMap??(this.normalizedTagsMap=Kt(this.tags)),r=e.map(n=>t[ue(n)]).filter(Boolean);return r.length===0?void 0:Array.from(new Set(r)).sort((n,s)=>n-s)}getSiteName(e,t){if(t&&this.siteMeta.single){if(e===x.title)return t.name;if(e===x.reader)return t.title.name}const r=this.spec.name,n=(r&&p(r))??p('meta[property="og:site_name"]|attr:content');return n&&n.length>2?n:void 0}}T(X,"specId"),T(X,"siteId");function Kt(a){const e={};return a.forEach(({id:t,name:r,altNames:n})=>{e[ue(r)]=t,n&&n.forEach(s=>{e[ue(s)]=t})}),e}function ue(a){const e=a.toLowerCase().replaceAll(/[^a-z0-9\s]/gi,"").trim().replaceAll(/\s+/g," ");return e[e.length-1]==="s"?e.substring(0,e.length-1):e}async function Zt(a){return Yt()===404||a[404]&&await k(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function Yt(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}function Qt(){return p('link[rel="icon"][sizes="32x32"],link[rel="icon"][sizes="192x192"],link[rel="apple-touch-icon"]|attr:href || link[rel="icon"]|attr:href')}function Xt(){return p("html|attr:lang")||"en"}class y extends X{async getRawReleasesData(){const e=await this.getRawReleases();if(e?.length)return this.finalizeRawReleasesData({rawReleases:e})}async getRawReleases(){const e=this.spec?.releases?.title;if(!e)return;if(e.json){const o=this.queryJsonRawReleases($(e.json),e)?.filter(c=>c.chapters.length);return o?.length?o:void 0}const t=e.chapter,r=await k(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const n=Date.now(),s=r.slice(0,100).map(o=>{const c=p(e.url,o),l=A(c),u=p(e.name,o),g=p(e.at,o);if(!l||!u)return;const h=be(g,this.siteMeta.defaultLang);return{titleEl:o,id:p(e.id,o),path:l,name:u,lang:p(e.lang,o)?.toLowerCase(),at:h?Math.min(h,n):void 0}}).filter(Boolean);if(!s.length)return;const i=[];return await Promise.all(s.map(async o=>{const{path:c,titleEl:l,lang:u,at:g,...h}=o,{id:d,slug:f}=this.parseTitleUrl(c);if(!f)return;const m=h.id||d,w=await this.getChapters(t,{root:l,titleId:m,titleSlug:f,titleName:o?.name,lang:u})??[];w.length&&i.push({slug:f,chapters:u||g?w.map(v=>({...v,elIndex:void 0,lang:v.lang??u,ts:v.ts??g})):w,...h,id:m})})),i}getRawTitleData(){return this.getTitleData(this.spec.title)}async getTitleData(e){if(!e||!await this.isTitlePage(e))return;const{id:t,slug:r}=this.parseTitleUrl(location.pathname);if(this.siteMeta.single?r===void 0:!r)return;const n=t||p(e.id),s=e.chapter?.json?await this.queryJsonChapters({chapterSpec:e.chapter,titleSlug:r,titleId:n}):await this.getChapters(e.chapter,{lazy:e.chapter?.lazy??!0,titleId:n,titleSlug:r,titleName:p(e.name),includeHiddenChapters:this.context.includeHiddenChapters}),i=p(e.name);if(!i)return;const o=await this.getValidImgSrc(e.img,i),c=o&&this.context.includeImgBytes?await Ut(o):void 0,l=this.getFirstChapterUrl(),u=e.firstBtn,g=V(e.tags)?.map(m=>m.split(",")).flat().map(m=>m.trim()).filter(Boolean),h=p(e.type),d=V(e.langs)?.map(m=>m.toLowerCase()),f=e.hasMore??e.chapter?.allBtn;return{id:n||p(e.id),url:location.origin+location.pathname,slug:r,name:i,langs:d?.length?d:e.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...g??[],...h?[h]:[]]),chapters:s??[],hasMoreChapters:!s?.length&&!e.chapter?!0:f?!!document.querySelector(f):void 0,img:o,imgBytes:c,firstUrl:l,firstBtn:!l&&u&&document.querySelector(u)?u:void 0,trackers:this.getTrackersMap(e.trackers)}}getTrackersMap(e){if(!e)return;const t=typeof e=="boolean"||e.mal===""?'a[href*="myanimelist.net"]|attr:href':e.mal,r=typeof e=="boolean"||e.anl===""?'a[href*="anilist.co"]|attr:href':e.anl,n=p(t),s=p(r);if(!n&&!s)return;const i={};return n&&(i.mal=n.split("?")[0].split("#")[0].split("manga/").slice(-1)[0].split("/")[0]),s&&(i.anl=s.split("?")[0].split("#")[0].split("manga/").slice(-1)[0].split("/")[0]),i}getFirstChapterUrl(){const e=p(this.spec.title?.first);if(e){if(e.startsWith("http"))return e;try{return new URL(e,location.href).href}catch{return}}}getValidImgSrc(e,t){return P(33,30,()=>{const r=p(e)||p(`img[alt="${t.replaceAll('"','\\"')}"]|[attr:data-src,attr-contain:src]`);return!r||r.startsWith("data:")?void 0:document.querySelector(`img[srcset*="${r}"]`)?r.split(" ")[0]:r})}getRawReaderTitleData(e){const t=this.spec.reader?.title;if(!t)return;const r=t.sel?document.querySelector(t.sel)??void 0:void 0;if(t.sel&&!r)return;const n=p(t.name,r);if(!n)return;const s=qt(p(t.img,r));if(e?.slug){let l=this.siteMeta.titleBase;if(e?.id&&(l=l.replace("{id}",e.id)),!l.includes("{"))return l=l.includes("{slug}")?l.replace("{slug}",e.slug):`${l}/${e.slug}`,this.siteMeta.trailing&&!l.endsWith("/")&&(l+="/"),{name:n,img:s,url:new URL(l,location.origin).href,slug:e.slug,id:e.id||p(t.id,r)}}const i=p(t.url,r),{slug:o,id:c}=this.parseTitleUrl(i);if(!(!n||!i||(this.siteMeta.single?o===void 0:!o)))return{name:n,img:s,url:new URL(i,location.origin).href,slug:o,id:c||p(t.id,r)||e?.id}}async getRawReaderData(){const{spec:e,siteMeta:t}=this;if(!e?.reader||!await this.isReaderPage(e.reader,!!e.generic))return;const r=await this.getReaderType(e.reader);if(r===void 0)return;const n=this.parseReaderUrl(t.readerBase,location.pathname,location.href),{slug:s,basePath:i,lang:o}=n,c=this.getRawReaderTitleData({id:n.titleId,slug:n.titleSlug});if(!c)return;const l=p(e.reader.group),{id:u,slug:g}=c,h=e.reader?.chapter,d=!!this.context.disableLazyChapters,f=!!this.context.includeHiddenChapters,m=h?.json?await this.queryJsonChapters({chapterSpec:h,titleSlug:g,titleId:u,lang:o}):await this.getChapters(h,{titleId:u,titleSlug:g,titleName:c.name,lang:o,lazy:f||!d,includeHiddenChapters:f,timeoutMs:f?3e3:25e3,includeIndex:!0,basePath:i,preferGroup:l}),w=p(e.reader.label)?.toLowerCase().replace(c.name.toLowerCase(),"").trim(),v=this.siteMeta.oneshot?{chap:0}:w?z(w):void 0;if(!v)return;const b=e.reader.prev?this.findAdjacentChapter({spec:e.reader.prev,basePath:i,titleUrl:c.url,titleName:c.name}):void 0,j=e.reader.next?this.findAdjacentChapter({spec:e.reader.next,basePath:i,titleUrl:c.url,titleName:c.name}):void 0,U=u??(()=>{const D=this.spec.reader?.title;if(!D?.id)return;const B=D.sel?document.querySelector(D.sel)??void 0:void 0;if(!(D.sel&&!B))return p(D.id,B)})();return this.finalizeRawReaderData({...v,contentType:r,name:p(e.reader.name),lang:o??p(e.reader.lang)?.toLowerCase()??(e.reader.lang?this.siteMeta.defaultLang:void 0),slug:s,basePath:i,group:l??p(e.reader.group),imgs:V(e.reader.imgs),title:{id:U,url:c.url,slug:g,name:c.name,langs:o?[o]:void 0,img:c.img,chapters:m??[],hasMoreChapters:!m?.length&&!f&&!!this.context.disableLazyChapters&&!!h?.label}},{prev:b,next:j})}async getRawChaptersData(){const e=this.siteMeta.chapters;if(e===Y.blank)return;const t=e===Y.reader,r=!e||e===Y.title,n=t?(await this.getRawReaderData())?.title:r?await this.getRawTitleData():void 0,s=this.context.lang,i=await(async()=>{if(n?.chapters.length&&!n.hasMoreChapters)return n.chapters;const c=this.spec.chapters?.chapter;if(!c)return n?.hasMoreChapters?void 0:n?.chapters;const l=n?.slug??this.context.titleSlug,u=n?.id??this.context.rawId;if(!c.json)return await this.getChapters(c,{titleId:u,titleSlug:l,titleName:n?.name,lazy:this.spec.chapters?.lazy,includeHiddenChapters:!0,lang:s});const g=this.spec.chapters?.paging,h=q(this.siteMeta.readerBase,{titleSlug:l,titleId:u,lang:s}),d=await this.queryJsonChaptersResult({chapterSpec:c,pagingSpec:g,titleSlug:l,titleId:u,lang:s});if(!d)return;const{chapters:f,total:m,fetchUrl:w,limit:v}=d;if(!f.length||v>=m||!g||!g.pageKey&&!g.skipKey)return f;const b=this.context.startAfter;if(b&&f[f.length-1].chap-1<=b.chap)return f;const j=g.limitValue??v,U=Math.ceil(m/j),D=j<=v,B=D?1:0,S=w&&g.limitKey&&g.limitValue?w.replace(new RegExp(`${g.limitKey}=\\d+`),`${g.limitKey}=${g.limitValue}`):w??location.href,_=(await Promise.all(Array.from({length:U-B},async(C,O)=>{let E=S;g.pageKey?E=E.replace(new RegExp(`${g.pageKey}=\\d+`),`${g.pageKey}=${O+1+B}`):g.skipKey&&(E=E.replace(new RegExp(`${g.skipKey}=\\d+`),`${g.skipKey}=${(O+B)*j}`));const L=await this.fetch(E);return this.parseJsonChapters(L,{chapterSpec:c,basePath:h})??[]}))).flat();return _.length?this.organizeChapters(D?_:[...f,..._]):f})();if(!i)return;const o=s?i.filter(c=>!c.lang||c.lang===s):i;return{chapters:o,title:n?{...n,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:o.length}}async getRawSearchData(){const e=this.spec.search,t=this.context.lang;if(!e)return;const r=e.title;if(r.json){const l=this.queryJsonRawReleases($(r.json),r,t);return l?.length?{rawReleases:l}:void 0}e.delay?await oe(e.delay):e.loading&&await oe(500);const{chapter:n}=r,s=[],i=e.lazy?e.empty||e.loading?550:100:1;let o=0;const c=await P(i,50,()=>{const l=Array.from(document.querySelectorAll(r.sel));if(l.length||e.empty&&document.querySelector(e.empty)||e.loading&&!document.querySelector(e.loading)&&++o>=3)return l});if(c)return await Promise.all(c.map(async l=>{const u=p(r.url,l),g=A(u),h=p(r.name,l),{slug:d,id:f}=this.parseTitleUrl(g);if(!g||!h||!d)return;const m=p(r.lang,l);m&&t&&m!==t||s.push({id:f||p(r.id,l),slug:d,name:h,img:p(r.img??"img|[attr:data-src,attr-contain:src]",l),lang:m,chapters:await this.getChapters(n,{root:l,titleId:f,titleSlug:d,titleName:h})??[]})})),{rawReleases:s}}queryJsonRawReleases(e,t,r){const n=Q(e),s=R(n,t.sel);if(!s?.length||!Array.isArray(s))return;const i=[];return s.forEach(o=>{const c=$(R(o,t.lang))?.toLowerCase();if(c&&r&&c!==r)return;const l=R(o,t.url),{id:u,slug:g}=I(l,v=>({id:void 0,slug:v+""}))??this.parseTitleUrl(A(l)),h=$(R(o,t.name));if(!g||!h)return;const d=u||R(o,t.id),f=I(d,v=>v+"")??$(d),m=t.chapter?this.parseJsonChapters(o,{chapterSpec:t.chapter,basePath:q(this.siteMeta.readerBase,{titleId:f,titleSlug:g,lang:c})}):void 0,w=$(R(o,t.img),v=>{try{return new URL(v,location.origin).href}catch{return}});i.push({id:f,slug:g,name:h,lang:c,img:w,chapters:m??[]})}),i}parseJsonChapters(e,t){return this.parseJsonChaptersResult(e,t)?.chapters}parseJsonChaptersResult(e,t){if(!e)return;const r=R(e,t.chapterSpec.sel);if(!r)return;const n=Array.isArray(r)?r:[r];if(!n?.length)return;const s=[];if(n.forEach(o=>{const c=this.parseJsonChapter(o,t);c&&s.push(c)}),!s.length)return;const i=I(R(e,t.pagingSpec?.lastPage));return{chapters:this.organizeChapters(s),limit:n.length,total:i&&i>1?i*n.length:I(R(e,t.pagingSpec?.total))??n.length}}parseJsonChapter(e,{chapterSpec:t,basePath:r}){const n=R(e,t.label),s=I(n,f=>({vol:void 0,chap:f}))??z($(n));if(!s)return;const i=R(e,t.url),o=$(i)??I(i,f=>f+""),c=o?this.parseChapterUrl(r,o):void 0,l=s.vol??R(e,t.vol),u=I(l)??$(l,f=>+f),g=R(e,t.id),h=R(e,t.at),d=h?new Date(h).getTime():void 0;return{slug:c?.slug,vol:u||void 0,chap:s.chap,id:$(g)??I(g,f=>f+""),lang:$(R(e,t.lang))?.toLowerCase(),group:$(R(e,t.group)),ts:d||void 0}}async queryJsonChapters(e){return(await this.queryJsonChaptersResult(e))?.chapters}async queryJsonChaptersResult(e){const{chapterSpec:t,pagingSpec:r}=e;let n,s;if(typeof t.json=="string"&&(t.json.startsWith("http")||t.json.startsWith("/"))){const o=await this.getFetchResult(this.replaceDynamicParams(t.json,e));if(!o)return;n=o.url,s=o.value}else s=Q($(t.json));const i=this.parseJsonChaptersResult(s,{chapterSpec:t,pagingSpec:r,basePath:q(this.siteMeta.readerBase,e)});return i?{...i,fetchUrl:n}:void 0}replaceDynamicParams(e,t){let r=e;return t.titleSlug&&(r=r.replace("{titleSlug}",t.titleSlug)),t.titleId&&(r=r.replace("{titleId}",t.titleId)),t.lang&&(r=r.replace("{lang}",t.lang)),r}async getChapters(e,{root:t,titleId:r,titleSlug:n,titleName:s,lang:i,includeHiddenChapters:o=!1,lazy:c=!0,timeoutMs:l,includeIndex:u,basePath:g,preferGroup:h}){const d=e?.sel;if(!d||!e.label||e.trigger&&!o)return;const f=this.replaceDynamicParams(d,{titleSlug:n,titleId:r,lang:i});if(!f)return;let m;if(o){if(e.trigger){if(m=await k(e.trigger,{timeoutMs:5e3,lazy:!0}),!m)return}else if(e.allBtn){const w=e.allBtn;c?await P(100,100,()=>{const v=document.querySelector(w);return v?(m=v,!0):document.querySelector(d)||void 0}):m=document.querySelector(w)||void 0}}return await P(c?l?l/10:33:1,300,async()=>{m&&(ne(m),await oe(50));const w=Array.from((t??document.documentElement)?.querySelectorAll(f));if(!w.length)return;const v=(w??[]).map((C,O)=>({id:p(e.id,C),label:p(e.label,C)?.toLowerCase(),vol:p(e.vol,C),url:p(e.url,C),at:p(e.at,C),lang:p(e.lang,C),group:p(e.group,C),elIndex:O})),b=s?.toLowerCase(),j=b&&!!v[0]?.label?.startsWith(b),U=(e.dismiss?(t??document.body).querySelector(e.dismiss):void 0)??m;if(U&&ne(U),!w?.length)return[];const D=v.map(({label:C,vol:O})=>{if(!C)return;const E=j?C?.replace(b,"").trim():C,L=z(E);if(!L||L.vol!==void 0||!O)return L;const te=z(O)?.vol;return te?{...L,vol:te}:L}),B=g??q(this.siteMeta.readerBase,{titleId:r,titleSlug:n,lang:i}),S=Date.now(),_=[];if(D.forEach((C,O)=>{if(!C)return;const{id:E,url:L,at:te,lang:Ir,group:Tr,elIndex:jr}=v[O],at=be(te,this.siteMeta.defaultLang),ae={...C,id:E,lang:Ir?.toLowerCase(),group:Tr,ts:at?Math.min(S,at):void 0};u&&(ae.elIndex=jr);const re=L?this.parseChapterUrl(B,L):void 0;re&&(ae.slug=re.slug,re.lang&&(ae.lang=re.lang)),_.push(ae)}),!!_.length)return this.organizeChapters(_,h??this.context.preferGroup)})}parseChapterUrl(e,t){if(t?.startsWith("#")||t?.includes("javascript"))return;if(t?.startsWith("http")&&!t.includes(`//${location.hostname}/`))return{slug:t};const r=A(t);if(r)return this.parseReaderUrl(e,r,t)}async isTitlePage(e){return!(!e||(e.sel||e.lazy)&&!await k(e.sel??e.name?.split("|")?.[0],{lazy:!!e.lazy}))}async isReaderPage(e,t){const r=e?.sel;return t&&!r?!1:!r||!!await k(r,{lazy:!!e.lazy})}async getReaderType(e){const t=e.content;if(!t)return e.imgs||e.imgDivs?G.manga:void 0;const r=this.siteMeta.contentTypes,n=this.isGeneric||r?.includes(G.novel),s=this.isGeneric||!r||r.includes(G.manga)?e.content?.split(",").map(i=>i.trim()).filter(Boolean).map(i=>`${i} img:not(figure > img), ${i} canvas`).join(","):void 0;return await P(200,50,async()=>{const i=document.querySelector(t);if(i){if(n){const o=Array.from(i.querySelectorAll("p"));if(o.length){let c=!1,l=0;for(let u=0;u<o.length;u++)if(o[u].textContent.split(" ").length>20&&(l+=1,l===2)){c=!0;break}if(c)return G.novel}}if(s){const o=Array.from(i.querySelectorAll(s));if(this.headless||o.some(c=>_t(c)))return G.manga}}})}findAdjacentChapter({spec:e,basePath:t,titleUrl:r,titleName:n}){if(typeof e=="string"){const l=this.getAdjacentChapterSlug({sel:e,titleUrl:r,basePath:t}),u=ye(l);return u?{...u,slug:l}:void 0}const s=e.sel?document.querySelector(e.sel)??void 0:void 0;if(e.sel&&!s)return;const i=e.url?this.getAdjacentChapterSlug({root:s,sel:e.url,basePath:t,titleUrl:r}):void 0,o=p(e.label,s)?.toLowerCase().replace(n.toLowerCase(),""),c=z(o)||ye(i);if(c)return i===void 0?c:{...c,slug:i}}getAdjacentChapterSlug(e){const t=p(e.sel,e.root);if(!t||t.startsWith("#")||t.startsWith("/#"))return;const r=A(t);if(r&&!(r===location.pathname||e.titleUrl===r||e.titleUrl===`${location.origin}${r}`))return this.parseReaderUrl(e.basePath,r,t).slug||void 0}finalizeRawReaderData(e,t={}){const{prev:r,next:n}=t,s=e.title.chapters;if(!s.length)return r||n?{...e,prev:r,next:n}:e;let i,o,c,l;for(let u=0;u<s.length&&!(i&&(!r||c)&&!n&&l);u++){const g=s[u];!i&&ge(e,g)?(i=g,o=u):!c&&r&&ge(r,g)?c=g:!l&&n&&ge(n,g)&&(l=g)}return o!==void 0&&(c??(c=s[o+1]),l??(l=s[o-1])),c&&!c.slug&&r?.slug&&(c.slug=r.slug),l&&!l.slug&&n?.slug&&(l.slug=n.slug),i&&!i.slug&&(i.slug=e.slug),{...e,inferVol:i?.inferVol,prev:c,next:l}}organizeChapters(e,t){return K(e,{preferGroup:t??this.context.preferGroup})}getFetchResult(e){return M(e)}async fetch(e){try{const t=await fetch(e,{signal:AbortSignal.timeout(2e4)});return t.ok?await t.json():void 0}catch{return}}}function ge(a,e){return a.slug&&a.slug==e.slug||a.chap===e.chap&&(a.vol===e.vol||a.vol===void 0)}var ea=Object.defineProperty,ta=(a,e,t)=>e in a?ea(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,aa=(a,e,t)=>ta(a,e+"",t);class $e extends y{async getRawReaderData(){const e=`https://${location.host}/api/`,[t,r]=await Promise.all([M(`${e}manga/info`),M(`${e}read/chapter`)]),n=t?.value,s=r?.value;if(!n||!s)return;const i=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(!i)return;const o=z(s.readChapter?.title);if(o)return this.finalizeRawReaderData({basePath:i.basePath,slug:i.slug,...o,imgs:s.readChapter.pages.map(c=>new URL(c.image,location.origin).href),title:{url:`${e}/manga/${n.id}`,slug:n.id,name:n.title,tags:this.getTagIdsFromNames([n.type].filter(Boolean)),chapters:this.organizeChapters(n.chapters.map(c=>({slug:c.id,chap:c.number})))}})}}aa($e,"specId","atsu");var ra=Object.defineProperty,na=(a,e,t)=>e in a?ra(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,sa=(a,e,t)=>na(a,e+"",t);class xe extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await this.getFetchResult("/api/v1/chapters/{id}");if(!t)return e;const r={basePath:e.basePath,chapterSpec:{sel:"",vol:"volume",label:"number",url:"url"}},n=this.parseJsonChapter(N(t.value,"prev"),r),s=this.parseJsonChapter(N(t.value,"next"),r),i=N(t.value,"pages")?.map?.(o=>o?.url)?.filter(Boolean);return this.finalizeRawReaderData({...e,imgs:i?.length?i:void 0},{prev:n,next:s})}async getFetchResult(e){const t=await super.getFetchResult(e);if(t)return{...t,value:await Se(t.url,t.value)}}async fetch(e){const t=await super.fetch(e);return t?await Se(e,t):void 0}}sa(xe,"specId","comix");async function Se(a,e){let t;const r={interceptors:{request:{use:()=>{}},response:{use:o=>{t=o}}},defaults:{headers:{common:{}},transformRequest:[],transformResponse:[]}},n=window,s=Object.keys(n).filter(o=>/^vm[A-Za-z]_\w+$/.test(o));for(const o of s){const c=n[o];if(!(!c||typeof c!="object")){for(const l of Object.keys(c)){const u=c[l];if(typeof u=="function")try{if(u(r),t)break}catch{}}if(t)break}}if(!t)return e;const i={data:e,status:200,statusText:"OK",headers:{"content-type":"application/json","x-enc":"1"},config:{url:a,method:"GET"}};try{return(await t(i)).data??e}catch{return e}}var ia=Object.defineProperty,oa=(a,e,t)=>e in a?ia(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,la=(a,e,t)=>oa(a,e+"",t);class Ce extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=window.pages,r=t?.map(n=>n?.image).filter(Boolean);if(!(!Array.isArray(r)||!r.length))return{...e,imgs:r,isWebtoon:t.some(n=>n.height/n.width>2)}}}la(Ce,"specId","dynasty");var ca=Object.defineProperty,ua=(a,e,t)=>e in a?ca(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ga=(a,e,t)=>ua(a,e+"",t);class De extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e||!e.imgs?.length)return e;const t=e.imgs[0],r=t.lastIndexOf("/"),n=r===-1?"":t.substring(0,r+1),s=r===-1?t:t.substring(r+1),i=s.substring(s.lastIndexOf(".")),o=$(p(".total_pages|text"),l=>+l)||1,c=Array.from({length:o},(l,u)=>`${n}${u+1}${i}`);return{...e,imgs:c}}}ga(De,"specId","imhen");var ha=Object.defineProperty,pa=(a,e,t)=>e in a?ha(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,da=(a,e,t)=>pa(a,e+"",t);class Me extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=this.spec.chapters?.chapter;if(!t)return e;const r=await M(`https://api.spacely.tech/manhwa/comixto/info/${e.title.slug}`);if(!r?.value)return e;const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:q(e.basePath,{titleSlug:e.title.slug})});return n?.length?this.finalizeRawReaderData({...e,title:{...e.title,chapters:n}}):e}}da(Me,"specId","inkora");var fa=Object.defineProperty,ma=(a,e,t)=>e in a?fa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,wa=(a,e,t)=>ma(a,e+"",t);class Pe extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=this.spec.chapters?.chapter;if(t){const r=await M("https://yuzuki.kagane.org/api/v2/series/{id}");if(r){const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:q(this.siteMeta.readerBase,{titleSlug:e.slug})});if(n)return{...e,chapters:n}}}return{...e,hasMoreChapters:!0}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=va();return{...e,title:{...e.title,img:Ie(e.title.slug),chapters:t}}}async getRawSearchData(){const e=await super.getRawSearchData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,img:Ie(t.slug)}))}}}wa(Pe,"specId","kagane");function Ie(a){return`https://api.${location.host}/api/v1/series/${a}/thumbnail`}function va(){const a=["initialChapters"],e=Array.from(document.querySelectorAll("script:not([src])"));for(let t=0;t<e.length;t++){const r=e[t].textContent;if(r)for(const n of a){const s=r.indexOf(n);if(s===-1)continue;const i=r.slice(s),o=H(i.slice(i.indexOf("[{"),i.indexOf('}],\\"cached_at')+2).replaceAll("\\",""));if(!o?.length||!Array.isArray(o))return[];try{const c=[];return o.map(l=>{const u=z(l.name);u&&c.push({...u,slug:l.id,ts:l.created?new Date(l.created).getTime():void 0})}),K(c)}catch{return[]}}}return[]}var ya=Object.defineProperty,ba=(a,e,t)=>e in a?ya(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ra=(a,e,t)=>ba(a,e+"",t);class he extends y{async getRawReleasesData(){const e=this.getNewSiteMeta(this.spec.releases?.title),t=await super.getRawReleasesData();if(t)return{...t,siteMeta:e}}async getRawTitleData(){if(!await this.isTitlePage(this.spec.title))return;const e=this.getNewSiteMeta(this.spec.title,`${location.origin}${location.pathname}`),t=await super.getRawTitleData();if(t)return{...t,siteMeta:e}}async getRawReaderData(){if(!await this.isReaderPage(this.spec.reader,this.spec.generic))return;const e=this.getNewSiteMeta(this.spec.reader?.title),t=await super.getRawReaderData();if(t)return{...t,siteMeta:e}}async getRawSearchData(){const e=this.getNewSiteMeta(this.spec.search?.title),t=await super.getRawSearchData();if(t)return{...t,siteMeta:e}}getNewSiteMeta(e,t){if(t??(t=$a(e)),!t)return;if(!this.siteId){const i={...this.siteMeta,releases:null,titleBase:"",readerBase:"",titleIdType:ve.name,trailing:t.endsWith("/"),defaultLang:p("html|attr:lang")||"en"};return this.siteMeta=i,i}const r=this.extractBasePath(t),n=this.siteMeta;if(n.titleBase===r)return;const s={...n,titleBase:r,readerBase:n.readerBase.replace(n.titleBase,r)};return this.siteMeta=s,s}extractBasePath(e){const t=e.startsWith("/")?e:A(e);return Re(t,"/").split("/").slice(0,-1).join("/")}}Ra(he,"specId","madara");function $a(a){if(!a)return;const e=a.sel?document.querySelector(a.sel)??void 0:void 0;return p(a.url,e)}var xa=Object.defineProperty,Sa=(a,e,t)=>e in a?xa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ca=(a,e,t)=>Sa(a,e+"",t);class Te extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=await je(this.context.preferGroup),r=new Set;return t.forEach(({lang:n})=>{n&&r.add(n)}),{...e,chapters:t,langs:r.size?Array.from(r):[this.siteMeta.defaultLang||"en"]}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await je(e.group||this.context.preferGroup),r=t[0]?.lang;return this.finalizeRawReaderData({...e,lang:r,title:{...e.title,chapters:t,langs:r?[r]:void 0}})}}Ca(Te,"specId","mangaball");async function je(a){const e=await P(100,50,()=>{try{return ALL_CHAPTERS.length?ALL_CHAPTERS:void 0}catch{return}});if(!e)return[];const t=[];return e.forEach(r=>{r.translations.forEach(n=>{const s=n.volume;t.push({chap:r.number_float,vol:s>0?s:void 0,slug:n.id,lang:n.language,group:n.group?.name,ts:new Date(n.date).getTime()})})}),K(t,{preferGroup:a})}var Da=Object.defineProperty,Ma=(a,e,t)=>e in a?Da(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Pa=(a,e,t)=>Ma(a,e+"",t);const Ia={a:.1,b:.2,c:.3,d:.4};class Be extends y{parseTitleUrl(e){return{slug:A(e)?.split("/").filter(Boolean)[1]}}async getRawReleases(){const e=Q()?.data;if(!e)return;const t=[];return e.forEach(({relationships:r,attributes:n,id:s})=>{const i=r.find(({type:g})=>g==="manga"),o=ee(n.volume),c=Z(n.chapter);if(c===void 0)return;const{title:l}=i.attributes,u=l.en??Object.values(l)[0];t.push({slug:i.id,name:u,chapters:[{slug:n.externalUrl||s,vol:o,chap:c,lang:n.translatedLanguage,ts:new Date(n.readableAt).valueOf()}]})}),t}async getRawTitleData(){const e=`https://api.${location.host}/manga/`;let[t,r]=await Promise.all([M(`${e}{id}`,{timeoutMs:5e3}),M(`${e}{id}/feed`,{timeoutMs:5e3})]);if(!t||!r){const[c,l]=await Promise.all([this.fetch(`${e}{id}`),this.fetch(`${e}{id}/feed`)]);if(!c||!l)return;t={url:"",value:c},r={url:"",value:l}}const n=r.value.data?.map?.(c=>{const{attributes:l,id:u}=c;if(typeof l!="object"||typeof u!="string"||!u)return;const{externalUrl:g,title:h,volume:d,chapter:f,translatedLanguage:m}=l;return{slug:g||u,label:h||void 0,vol:ee(d),chap:Z(f),lang:m||"en",ts:new Date(l.readableAt).valueOf()}}).filter(c=>c?.chap!=null)??[],{data:s}=t.value;if(!s)return;const i=Ae({data:s,getTagIdsFromNames:c=>this.getTagIdsFromNames(c)});if(!i)return;const o=this.context.includeImgBytes&&i.img?await le(i.img):void 0;return{...i,imgBytes:o,chapters:this.organizeChapters(n),hasMoreChapters:(r.value.total||0)>(r.value.limit||0)}}async getRawReaderData(){const e="https://api.mangadex.org/",[t,r,n]=await Promise.all([M(`${e}chapter/{id}`),M(`${e}at-home/server/{id}`),M(`${e}manga/{id}/aggregate`)]);if(!t||!r||!n)return;const s=t.value.data,{volume:i,chapter:o,externalUrl:c,translatedLanguage:l}=s.attributes||{},{baseUrl:u,chapter:{data:g,dataSaver:h,hash:d}}=r.value,f=s.relationships?.find?.(S=>S.type==="manga");if(!f)return;const m=Ae({data:f,getTagIdsFromNames:S=>this.getTagIdsFromNames(S)});if(!m||typeof n.value.volumes!="object")return;const w=Le(n.value,{preferGroup:this.context.preferGroup})??[];(typeof o!="string"||o==="none")&&!w.length&&w.push({chap:0,slug:s.id});const v=w.findIndex(S=>S.slug===s.id),b=s.relationships?.find?.(S=>S.type==="scanlation_group"),j=u.endsWith("/")?u:u+"/",U=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),D=`${j}${U?"data-saver":"data"}/`,B=((U?h:g)??[]).map?.(S=>`${D}${d}/${S}`)??[];return{externalUrl:c,vol:ee(i),inferVol:w[v]?.inferVol,chap:Z(o)||0,imgs:B,lang:l,slug:s.id,prev:w[v+1],next:w[v-1],basePath:"/chapter/",group:b?.attributes?.name,groupUrl:b?.attributes?.website,isWebtoon:f?.attributes?.tags?.some(S=>S.attributes.name.en==="Long Strip"),title:{...m,chapters:w}}}async getRawChaptersData(){const e=Q();if(!e)return;let t;try{t=Le(e,{preferGroup:this.context.preferGroup})}catch{return}if(t)return{chapters:t,lang:this.context.lang??"en",asc:!1,hasMore:!1,total:t.length}}}Pa(Be,"specId","mangadex");function ee(a){const e=Z(a);return e!==0?e:void 0}function Z(a){if(typeof a!="string"||a==="none")return;const e=parseFloat(a);if(e!==e)return;const t=a[a.length-1];return e+(Ia[t]??0)}function Le(a,{preferGroup:e}){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:r,chapters:n})=>{const s=ee(r);return Object.values(n).map(({id:i,chapter:o})=>{const c=Z(o);if(c!==void 0)return{vol:s,chap:c,slug:i}})}).flat().filter(Boolean).reverse();return K(t,{preferGroup:e})}function Ae({data:a,getTagIdsFromNames:e}){const{id:t,attributes:r,relationships:n}=a;if(!t||typeof t!="string"||typeof r!="object")return;const{title:s,availableTranslatedLanguages:i,altTitles:o,tags:c,contentRating:l}=r;if(typeof s!="object"||i&&!Array.isArray(i))return;const u=Object.values(s)[0];if(!u||typeof u!="string")return;const g=Ta(),h=(i??[])?.map?.(b=>typeof b=="string"?b:void 0).filter(Boolean)??[],d=h.filter(b=>b&&(!g||g.includes(b))),f=o?.map?.(b=>{const[[,j]=[]]=Object.entries(b);return j}),m=n?.find?.(b=>b.type==="cover_art")?.attributes?.fileName,w=m?`https://mangadex.org/covers/${t}/${m}.256.jpg`:void 0,v=(c||[]).map(b=>b?.attributes?.name?.en).concat(l).filter(Boolean);return{url:`${location.origin}/title/${t}`,slug:t,name:u,altNames:f,langs:d.length>0?d:h.length>0?h:["en"],img:w,tags:e(v)}}function Ta(){const a=localStorage.getItem("md");if(!a)return;const e=H(a);if(e)try{const t=e?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var ja=Object.defineProperty,Ba=(a,e,t)=>e in a?ja(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,La=(a,e,t)=>Ba(a,e+"",t);class Ue extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await M(`/api/chapters/${e.slug}/images`);if(!t)return;const r=t.value.images?.map?.(s=>s.url),n=$(N(t.value,"manga.title"));return{...e,imgs:r,title:{...e.title,name:n??e.title.name}}}}La(Ue,"specId","mangadot");var Aa=Object.defineProperty,Ua=(a,e,t)=>e in a?Aa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Oa=(a,e,t)=>Ua(a,e+"",t);class Oe extends y{async getRawReaderData(){if((await k(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const e=this.context.lang??"en",t=await k(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${e.toUpperCase()}"]`,{lazy:!0,all:!1});if(t)return ne(t),await k(`.tab-content[data-name="chapter"] li.item[data-number] a[href*="/${e}/"]`,{lazy:!0,all:!1}),await super.getRawChaptersData()}async getRawSearchData(){const e=await super.getRawSearchData();if(!e)return;const t=this.context.lang??"en";return{...e,rawReleases:e.rawReleases.map(r=>({...r,lang:r.lang??t}))}}}Oa(Oe,"specId","mangafire");var Ea=Object.defineProperty,za=(a,e,t)=>e in a?Ea(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ka=(a,e,t)=>za(a,e+"",t);class Ee extends y{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,imgs:await this.getImgs()}}parseReaderUrl(e,t,r){const{slug:n,basePath:s}=super.parseReaderUrl(e,t,r),i=n.split("/").filter(Boolean),o=i[i.length-1];return{basePath:s,slug:o.startsWith("pg-")?i.slice(0,-1).join("/"):n}}async getImgs(){const e=await P(100,20,()=>window.imgsrcs),t=window.CryptoJS,r=t.enc.Hex.parse("e11adc3949ba59abbe56e057f20f883e"),n={iv:t.enc.Hex.parse("1234567890abcdef1234567890abcdef"),padding:t.pad.ZeroPadding};return t.AES.decrypt(e,r,n).toString(t.enc.Utf8).split(",")}}ka(Ee,"specId","mangago");var Na=Object.defineProperty,Wa=(a,e,t)=>e in a?Na(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,qa=(a,e,t)=>Wa(a,e+"",t);class ze extends y{parseTitleUrl(e){return{slug:A(e)?.split("/").filter(Boolean)[1]}}}qa(ze,"specId","mangapill");var _a=Object.defineProperty,Ja=(a,e,t)=>e in a?_a(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Fa=(a,e,t)=>Ja(a,e+"",t);class ke extends y{async getRawTitleData(){const e=await super.getRawTitleData();return e&&{...e,chapters:e.chapters.map(t=>({...t,slug:t.slug?.split("/").filter(Boolean).slice(-1)[0]}))}}}Fa(ke,"specId","mangaplus");var Ga=Object.defineProperty,Ha=(a,e,t)=>e in a?Ga(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Va=(a,e,t)=>Ha(a,e+"",t);class Ne extends he{async getRawReaderData(){const e=await super.getRawReaderData();if(e)return{...e,title:{...e.title,id:await this.getReaderTitleId()}}}async getReaderTitleId(){const e=await window.HISTORY?.getStored?.();if(!e||typeof e!="object")return;const t=Object.values(e).filter(Boolean);if(!t.length)return;t.sort((n,s)=>s.time-n.time);const r=t[0].manga_ID;return $(r)??I(r,n=>n+"")}}Va(Ne,"specId","mangastream");var Ka=Object.defineProperty,Za=(a,e,t)=>e in a?Ka(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ya=(a,e,t)=>Za(a,e+"",t);class We extends y{async getRawReaderData(){const e=await super.getRawReaderData();return!e||!e.title.chapters.length?e:{...e,prev:e.prev?{...e.prev,slug:pe(e.title.slug,e.prev.slug)}:void 0,next:e.next?{...e.next,slug:pe(e.title.slug,e.next.slug)}:void 0,title:{...e.title,chapters:e.title.chapters.map(t=>({...t,slug:pe(e.title.slug,t.slug)}))}}}}Ya(We,"specId","mangatime");function pe(a,e){if(e)return`/manga/${a}/chapter-${e}`}var Qa=Object.defineProperty,Xa=(a,e,t)=>e in a?Qa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,er=(a,e,t)=>Xa(a,e+"",t);class qe extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(e?.imgs?.length!==1)return e;e.slug.includes("//")&&(e.slug=_e(e.slug).split("/").filter(Boolean)[3]);const t=I(document.querySelector("select.index-page,.page_select select")?.childElementCount,d=>d-1);if(!t||t<=1)return e;const[r]=e.imgs,n=r.split(/\d+\.[a-z]{3,5}$/i)?.[0];if(!n)return e;const s=(+(p(".page_select .select|text")||"1")||1)-1,i=r.replace(n,""),[o,c]=i.split("."),l=o.length,u=+o-s,g=u+t-1,h=[];for(let d=u;d<=g;d++)h.push(`${n}${(d+"").padStart(l,"0")}${c?`.${c}`:""}`);return{...e,imgs:h}}parseChapterUrl(e,t){return this.parseReaderUrl(e,_e(t),t)}}er(qe,"specId","mangatown");function _e(a){return a.replace(location.origin,"").replace("//","/")}var tr=Object.defineProperty,ar=(a,e,t)=>e in a?tr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,rr=(a,e,t)=>ar(a,e+"",t);class Je extends y{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,slug:e.slug.split("/").slice(0,-1).join("/")||e.slug.split("/")[0]}}}rr(Je,"specId","mangaworld");var nr=Object.defineProperty,sr=(a,e,t)=>e in a?nr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ir=(a,e,t)=>sr(a,e+"",t);class Fe extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,hasMoreChapters:e.chapters.length===50}}}ir(Fe,"specId","mgeko");var or=Object.defineProperty,lr=(a,e,t)=>e in a?or(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,cr=(a,e,t)=>lr(a,e+"",t);class Ge extends y{async getRawReaderData(){const e=await P(200,50,()=>{const s=window.mangaReader;return s?.scanData&&s?.mangaData?s:void 0});if(!e)return;const{scanData:t,mangaData:r}=e,n=`/${this.siteMeta.readerBase}/`;return this.finalizeRawReaderData({basePath:n,chap:t.chapterNum,slug:t.slug,imgs:t.pages,title:{name:t.chapterTitle,slug:t.manga,url:`${location.origin}/${this.siteMeta.titleBase}/${t.manga}`,chapters:this.parseJsonChapters(r,{basePath:n,chapterSpec:{sel:"chapters",label:"num",url:"slug"}})??[]}})}}cr(Ge,"specId","moins");var ur=Object.defineProperty,gr=(a,e,t)=>e in a?ur(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,hr=(a,e,t)=>gr(a,e+"",t);class He extends X{async getRawReleasesData(){}async getRawSearchData(){}async getRawTitleData(){const e=p("h1.title .pretty, h1.title|text"),t=p("#cover img|[attr:data-src,attr-contain:src]");if(e)return{name:e,slug:location.pathname.split("/").filter(Boolean).slice(-1)[0],url:location.origin+location.pathname,img:t,imgBytes:this.context.includeImgBytes&&t?await le(t):void 0,chapters:[{slug:"1",chap:0}]}}async getRawReaderData(){const e=p("#image-container img|[attr:data-src,attr-contain:src]"),t=ce(e);if(!t)return;const r=t.origin,n=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(n?.titleSlug)try{const s=await fetch(`${location.origin}/api/v2/galleries/${n.titleSlug}`);if(!s.ok)return;const i=await s.json();if(!i)return;const o=R(i,"title.pretty")||R(i,"title.english")||i?.title?.[Object.keys(i.title)[0]];if(!o)return;const c=$(R(i,"cover.path"),u=>`https://t2.${location.hostname}${u.startsWith("/")?u:`/${u}`}`),l=i.pages.map(u=>{const g=u.path;return`${r}${g.startsWith("/")?g:`/${g}`}`});return{chap:0,slug:"1",basePath:`/g/${n.titleSlug}/`,imgs:l,title:{name:o,slug:n.titleSlug,url:`${location.origin}/g/${n.titleSlug}`,chapters:[{slug:"1",chap:0}],img:c}}}catch{return}}async getRawChaptersData(){const e=await this.getRawTitleData();if(!e)return;const{chapters:t,...r}=e;return{title:{...r,chapters:[]},chapters:t}}}hr(He,"specId","nhentai");var pr=Object.defineProperty,dr=(a,e,t)=>e in a?pr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,fr=(a,e,t)=>dr(a,e+"",t);class Ve extends y{async queryJsonChapters(e){const t=await super.queryJsonChapters(e);if(t)return t.map(r=>({...r,slug:r.slug?`ch-${+r.slug||r.chap}`:r.slug}))}}fr(Ve,"specId","stone");var mr=Object.defineProperty,wr=(a,e,t)=>e in a?mr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,vr=(a,e,t)=>wr(a,e+"",t);class Ke extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=V(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return Ze({...e,tags:this.getTagIdsFromNames(t)??[]},".episode-header .episode-cnt")}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=`${location.origin}/series/${e.title.slug}/info`;return{...e,title:{...Ze({...e.title,url:t,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}async getRawChaptersData(){const{rawId:e,skip:t}=this.context,r=1e3,n=t?Math.floor(t/1e3)+1:1;try{const s=await fetch(`/series/${e}/episodes?page=${n}&sort=NEWEST&max_limit=${r}`);return yr(await s.json())}catch{return}}parseTitleUrl(e){if(!e)return{};const t=e.split("/").filter(Boolean);return{slug:t[1]??t[0]}}}vr(Ke,"specId","tapas");function Ze(a,e){const t=br(e)>20;return{...a,chapters:t?[]:a.chapters,hasMoreChapters:t}}function yr(a){const e=a?.data?.episodes;if(!Array.isArray(e))return;const t=e.map(n=>({chap:n.pending_scene??n.scene,slug:n.id+"",ts:new Date(n.publish_date)?.valueOf?.()||void 0})),r=a?.data?.pagination;return{chapters:t,total:r?.total??t.length,hasMore:!!r?.has_next}}function br(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var Rr=Object.defineProperty,$r=(a,e,t)=>e in a?Rr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,xr=(a,e,t)=>$r(a,e+"",t);class Ye extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e||e?.id||this.siteId&&!e.hasMoreChapters&&e.chapters.length)return e;const t=await this.getTitleId(e.name,e.slug);if(t)return{...e,id:t}}async getRawChaptersData(){const{rawId:e}=this.context;if(!e)return await super.getRawChaptersData();const t=(()=>{const r=Array.from(document.querySelectorAll("script:not([src])"));for(let n=0;n<r.length;n++){const s=r[n].textContent;if(s?.includes('"user\\":'))return s?.match(/"user\\":\{\\"id\\":\\"([^"']+)\\"/)?.[1]}})();try{const r=await fetch(`https://api.${location.host}/api/chapters?postId=${e}&skip=0&take=900&order=desc${t?`&userid=${t}`:""}`);if(!r.ok)return;const n=await r.json(),s=this.parseJsonChapters(n,{chapterSpec:{sel:"post.chapters",url:"slug",label:"number",at:"createdAt"},basePath:q(location.pathname,{titleSlug:this.context.titleSlug})});return s?{chapters:s}:void 0}catch{return}}async getTitleId(e,t){const r=`mp:id:${t}`,n=localStorage.getItem(r);if(n)return n==="_"?void 0:n;try{const s=await fetch(`https://api.${location.hostname}/api/query?page=1&perPage=10&searchTerm=${encodeURIComponent(e)}`);if(!s.ok)return;const i=await s.json(),o=e.toLowerCase(),c=i.posts.find(u=>u.postTitle.toLowerCase().trim()===o),l=I(c?.id,u=>u.toString());return localStorage.setItem(r,l??"_"),l}catch{return}}}xr(Ye,"specId","vortex");var Sr=Object.defineProperty,Cr=(a,e,t)=>e in a?Sr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Dr=(a,e,t)=>Cr(a,e+"",t);class Qe extends y{async getRawTitleData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no");if(t||!r)return;const n=await super.getRawTitleData();if(!n)return;const s=location.hostname.startsWith("m."),i=location.pathname.split("/")[1];return{...n,slug:`${n.slug}?title_no=${r}`,id:r,langs:i?[i]:void 0,chapters:s?[]:n.chapters.map(o=>({...o,lang:i})),hasMoreChapters:s||(document.querySelector(".paginate")?.childElementCount??1)>1}}async getRawReaderData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no"),n=t?+t:void 0;if(!t||!r||typeof n!="number"||isNaN(n))return;const s=document.title.split("|")[1]?.trim();if(!s)return;const i=location.pathname.split("/"),o=`${i.slice(0,4).join("/")}/list?title_no=${r}`,c=await this.getChapters({sel:"#sequence_scroll li.eg-flick-panel,#toolbar .episode_lst li[data-episode-no]",url:"a|attr:href",label:"|attr:data-episode-no || a|attr:href|pattern:.+episode_no=(\\d+).*"},{lazy:!1,titleId:r,titleSlug:o,titleName:s}),l=i[1];return{chap:n,lang:l,slug:`${location.pathname}?title_no=${r}&episode_no=${t}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:o,slug:o,name:s,langs:[l],chapters:(c??[]).map(u=>({...u,lang:l})),hasMoreChapters:!1}}}async getReaderImgs(){const e=V("#_imageList img|[attr:data-url,attr:src]");return e?.length?e:await P(100,50,()=>window.__viewerState__?.scrollViewerParam?.imageList?.map(({url:t})=>t).filter(Boolean))}parseReaderUrl(e,t,r){if(!r)return{basePath:"",slug:t};if(r.startsWith("http://")||r.startsWith("https://")){const n=ce(r);return{basePath:"",slug:n.pathname+n.search}}return{basePath:"",slug:r}}}Dr(Qe,"specId","webtoon");const Mr=[$e,xe,Ce,De,Me,Pe,he,Te,Be,Oe,Ee,ze,ke,Ne,Fe,Ue,We,qe,Je,Ge,He,Ve,Ke,Ye,Qe];function Xe(a){const e=Mr.find(t=>t.specId===a.spec.id)??y;return new e(a)}async function Pr(a){const{spec:e,type:t}=a,r=a.siteMeta??e?.meta;if(e&&r){const n=t?[t]:et(r,e.generic);if(!n.length)return;const s=Xe({...a,spec:e,siteMeta:r});return await F(n.map(i=>s.getRawPageByType(i,n.length>1)))}return await F((a.genericSpecs??[]).map(n=>{if(!n.meta||!n.generic)return[];const s=t?[t]:et(n.meta,n.generic);if(!s.length)return[];const i=Xe({...a,spec:n,siteMeta:n.meta});return s.map(o=>i.getRawPageByType(o,!0))}).flat())}function et(a,e){if(location.pathname==="/"&&!a.single)return[];const{titleBase:t,readerBase:r}=a,n=location.pathname.split("/").filter(Boolean),s=tt(n,r),i=tt(n,t);if(s&&i)return[x.reader,x.title];const o=[];return!i&&(s!==!1||e)&&o.push(x.reader),!s&&(i!==!1||e)&&o.push(x.title),!o.length&&e?[x.reader,x.title]:o}function tt(a,e){if(!e)return;const t=e.split("/").filter(Boolean),r=t.indexOf("{slug}"),n=r===t.length-1,s=!n&&r!==-1;if(n&&(t.pop(),!t.length))return;const i=a.length-t.length;if(s?i<0:i<=0)return!1;let o=!1;for(let c=0;c<t.length;c++){const l=t[c];if(l[0]!=="{"){if(l!==a[c])return!1;o=!0}}if(o&&i===(s?0:1))return!0}J.PageType=x,J.scrape=Pr}));
|
|
1
|
+
(function(J,F){typeof exports=="object"&&typeof module<"u"?F(exports):typeof define=="function"&&define.amd?define(["exports"],F):(J=typeof globalThis<"u"?globalThis:J||self,F(J._trackkun_={}))})(this,(function(J){"use strict";function F(a){let e=!1;return new Promise((t,r)=>{Promise.all(a.map(async n=>{const s=await n;!e&&s&&(e=!0,t(s))})).then(()=>{e||t(void 0)})})}const rt=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,nt=/^S([1-9])\s/i,st=/(ch(ap(t(er)?|\.)?|\.)?|#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([-~_,.]\d+)?)/i,it=/\d+([-~_,.]\d+)?/,ot=/[-~_,]/;function lt(a){const e=a.match(rt);if(e)return{volStr:e[0],volValueStr:e[4]};const t=a.match(nt);return t?{volStr:t[0],volValueStr:t[1]}:{}}function E(a){if(!a)return;if(!isNaN(+a))return{chap:+a};const{volStr:e,volValueStr:t}=lt(a),r=e?a.replace(e,"").trim():a,n=r.match(st)?.[6]??r.match(it)?.[0];if(!n)return;const s=+n.replace(ot,".");if(isNaN(s))return;const i=e&&t&&!isNaN(+t)?+t:void 0;return{vol:i===void 0||i<=0?void 0:i,chap:s}}function ct(){return Math.random().toString(16).slice(2)}async function ut({addListener:a,removeListener:e,transform:t,filter:r,handler:n,onTimeout:s,timeout:i,once:o}){return new Promise(c=>{a(g);const l=()=>o===!0&&e(g),u=i?setTimeout(()=>{l(),c(void 0),s?.()},i):void 0;async function g(h,...d){h=t?t(h):h,h!==void 0&&(!r||r(h,...d))&&(l(),c(h),n?.(h,...d),u&&clearTimeout(u))}})}async function gt(a){return(await ut({addListener:e=>window.addEventListener("message",e),removeListener:e=>window.removeEventListener("message",e),...a}))?.data}async function ht(a){const{receiverWindow:e,timeout:t,targetOrigin:r,event:n,args:s}=a,i={reqId:ct(),event:n,args:s};return(e||window)?.postMessage(i,r??"*"),(await gt({filter:o=>o?.data?.resId===i.reqId,timeout:t??3e4,once:!0}))?.result}function M(a,e){return ht({event:"tk:fetchResult",args:{url:a},timeout:e?.timeoutMs??15e3})}async function P(a,e,t){const r=await t(()=>{a=0});if(r!==void 0)return r;if(!(a<=0))return await new Promise(n=>{setTimeout(async()=>{const s=await P(a-1,e,t);n(s)},e)})}async function k(a,e,t=0){const r=e.root??document.documentElement,n=e.timeoutMs??1e4;return P(e.lazy===!0?n/50:0,50,()=>{const s=e.all===!0?Array.from(r.querySelectorAll(a)):r.querySelector(a)??void 0;return(e.all?!s?.length:!s)?void 0:s})}function ne(a,e){if(a instanceof HTMLOptionElement){const t=a.parentElement instanceof HTMLOptGroupElement?a.parentElement.parentElement:a.parentElement;if(!t||!(t instanceof HTMLSelectElement))return;const r=a.getAttribute("value")||"";if(t.value===r)return;t.value=r,t.dispatchEvent(new Event("change"));return}a instanceof HTMLAnchorElement&&e?.preventDefault!==!1&&a.addEventListener("click",t=>t.preventDefault(),{once:!0}),a.click(),a.dispatchEvent(new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0,pointerType:"mouse",button:0})),a.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window,button:0}))}function H(a){if(a)try{return JSON.parse(a)}catch{return}}const de={text:we,attr:wt,"attr-contain":vt,value:yt,row:bt,"bg-image":Rt,json:$t},pt={pattern:xt,remove:St,atob:Ct};function p(a,e){if(a)return fe(a,e,ft)}function V(a,e){if(a)return fe(a,e,mt)}function fe(a,e,t){if(!a)return;const r=a.split("||").map(n=>n.trim()).filter(Boolean);for(const n of r){const s=dt(n);if(!s)continue;const i=t(e??document.documentElement,s);if(i)return i}}function dt(a){const[e,t,...r]=a.split("|");if(!t)return;const n=t?.startsWith("[")&&t.endsWith("]")?t.substring(1,t.length-1).split(","):[t];return{selector:e||void 0,extractors:n.map(se),transformers:r.map(se)}}function se(a){const e=a.indexOf(":"),t=e!==-1;return{fn:t?a.substring(0,e):a,param:t?a.substring(e+1):""}}function ft(a,e){if(!e.selector)return me(a,e);const t=Dt(e.selector);for(const r of t){const n=Array.from(a.querySelectorAll(r));for(const s of n){const i=me(s,e);if(i)return i}}}function mt(a,e){const t=e.selector?Array.from(a.querySelectorAll(e.selector)):[a],r=[];for(const n of t)for(const s of e.extractors){const i=de[s.fn],o=i(n,s.param);if(o){r.push(ie(o,e.transformers));break}}if(r.length)return r}function me(a,e){for(const t of e.extractors){const r=de[t.fn],n=r(a,t.param);if(n)return ie(n,e.transformers)}}function ie(a,e){let t=a;for(const r of e){const n=pt[r.fn];n&&(t=n(t,r.param).trim())}return t}function we(a){return Array.from(a.childNodes).filter(e=>e.nodeType===3).map(e=>W(e.textContent)).filter(Boolean).join(" ").trim()||W(a.textContent)}function wt(a,e){return W(a.getAttribute(e))}function vt(a,e){let t=a.getAttribute(e);if(!t){const r=a.getAttributeNames().find(n=>n.includes(e));r&&(t=a.getAttribute(r))}return W(t)}function yt(a){return a.value}function bt(a,e){if(!e)return;const t=W(a.textContent)?.toLowerCase(),r=e.toLowerCase();if(!(t!==r&&t!==`${r}:`))return W(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function Rt(a){const e=getComputedStyle(a).backgroundImage;if(!(!e||!e.startsWith("url(")))return e.slice(5,-2)||void 0}function $t(a,e){const t=N(H(we(a)),e);return typeof t=="number"?t+"":typeof t=="string"?W(t+""):void 0}function N(a,e){if(!a||!e)return;const t=e.indexOf("."),r=t!==-1,n=r?e.substring(0,t):e,s=r?e.substring(t+1):void 0;try{const i=a[n];return s?N(i,s):i}catch{return}}function W(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}function xt(a,e){if(e)try{return a.replace(new RegExp(e,"i"),"$1")}catch{}return a}function St(a,e){if(e)try{return a.replaceAll(new RegExp(e,"gi"),"")}catch{}return a}function Ct(a){try{return window.atob(a)}catch{return a}}function Dt(a){const e=[];let t="",r=!1;for(let s=0;s<a.length;s++){const i=a[s];if(i==="["?r=!0:i==="]"&&(r=!1),i===","&&!r){const o=t.trim();o.length>0&&e.push(o),t=""}else t+=i}const n=t.trim();return n.length>0&&e.push(n),e}var Mt=(a=>(a[a.reading=1]="reading",a[a.paused=2]="paused",a[a.plan=3]="plan",a[a.completed=4]="completed",a[a.dropped=5]="dropped",a[a.deleted=6]="deleted",a))(Mt||{}),Pt=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(Pt||{}),It=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(It||{}),Tt=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(Tt||{}),ve=(a=>(a.id="id",a.name="name",a.slug="slug",a))(ve||{}),Y=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(Y||{}),G=(a=>(a[a.manga=1]="manga",a[a.novel=2]="novel",a[a.anime=3]="anime",a))(G||{});function oe(a=0){return new Promise(e=>setTimeout(e,a))}const jt=/\d+[a-z]+\d+/i,Bt=/[a-z]+\d+[a-z]+/i,Lt=/^\d{5,}$/;function ye(a){if(!a)return;const e=[];a.split(/[-_]/).forEach(r=>{const n=r.split(".").filter(s=>s&&!Bt.test(s)&&!jt.test(s)&&!Lt.test(s)).join(".");n&&e.push(n)});const t=e.join(" ");return E(t)}async function le(a,e=240){return new Promise(t=>{const r=new Image;r.crossOrigin="anonymous",r.onerror=()=>t(void 0),r.onload=async()=>{if(r.naturalWidth<=1){t(void 0);return}const n=Math.max(1,r.naturalWidth/e),s=r.naturalWidth/n,i=r.naturalHeight/n,o=document.createElement("canvas"),c=o.getContext("2d");o.width=s,o.height=i;const l=/iPad|iPhone|iPod/.test(navigator.userAgent);try{c.drawImage(r,0,0,s,i);const u=o.toDataURL(l?"image/jpg":"image/webp",l?.99:.8),g=location.protocol.includes("chrome-extension")||await At(u);t(g?u.split(",").slice(-1)[0]:void 0)}catch{t(void 0)}},r.src=a})}function At(a){return new Promise(e=>{const t=new Image;t.onerror=()=>e(!1),t.onload=()=>{e(t.naturalWidth>10)},t.src=a})}async function Ut(a,e=240){const t=await Ot(a);if(t)return await new Promise(async r=>{const n=le(t,e),s=setTimeout(()=>r(void 0),100),i=await n;clearTimeout(s),r(i)})}async function Ot(a){if(a.startsWith("blob:"))return a;try{const e=await fetch(a);if(e.status>=400)return;const t=await e.blob();return URL.createObjectURL(t)}catch{return}}function R(a,e){if(e==="")return a;if(!e)return;const t=e.split("||").map(r=>r.trim()).filter(Boolean);for(const r of t){const[n,...s]=r.split("|"),i=N(a,n);if(typeof i=="number"||i){if(typeof i!="string")return i;const o=i.replace(/(\n|\t)/g," ").trim();if(o){const c=ie(o,s.map(se));if(c)return c}}}}function Q(a){if(a?.startsWith("window")){const e=a.indexOf(".");return e===-1?void 0:R(window,a.substring(e+1))}return H(a?p(a):document.querySelector("pre")?.textContent)}function I(a,e){if(typeof a=="number")return e?e(a):a}function $(a,e){if(typeof a=="string")return e?e(a):a}function K(a,e){const t=a.map(l=>({...l,vol:l.vol===0?void 0:l.vol}));t.sort((l,u)=>l.vol===void 0||u.vol===void 0?u.chap-l.chap:u.vol-l.vol||u.chap-l.chap);const r={},n={};for(let l=t.length-1;l>=0;l--){const u=t[l],g=u.group??"";r[g]=(r[g]??0)+1;const h=u.lang??"";u.vol!==void 0?n[h]=u.vol:n[h]!==void 0&&(u.inferVol=n[h])}const s=[],i={},o=e?.preferGroup,c=l=>l.lang??"";for(const l of t){const u=c(l),g=i[u],h=s[g];if(!(h&&h.chap===l.chap&&(h.vol===l.vol||h.vol===void 0||l.vol===void 0))){i[u]=s.length,s.push(l);continue}if(!o){h.vol===void 0&&l.vol!=null&&(s[g]=l);continue}h.group!==o&&(l.group==o||h.group&&!l.group||r[l.group??""]>r[h.group??""])&&(s[g]=l)}return s}const zt=/^(a|an|one|last|\d+)\s*([a-z]+)/,Et=/^(\d+)\s*([a-z]+)/,kt=/^\d+$/,Nt=[{seconds:1,short:"s",locales:{en:"sec",vi:"gi\xE2y",tr:"ikinci",es:"segundo",ja:"\u79D2",ko:"\uCD08",zh:"\u79D2",id:"detik",pt:"segundo"}},{seconds:60,short:"m",locales:{en:"min",vi:"ph\xFAt",tr:"dakika",es:"minuto",ja:"\u5206",ko:"\uBD84",zh:"\u5206",id:"menit",pt:"minuto"}},{seconds:3600,short:"h",locales:{en:"hour",vi:"gi\u1EDD",tr:"saat",fr:"heure",it:"ora",es:"hora",ja:"\u6642\u9593",ko:"\uC2DC\uAC04",zh:"\u5C0F\u65F6",id:"jam",pt:"hora"}},{seconds:86400,short:"d",locales:{en:"day",vi:"ng\xE0y",tr:"g\xFCn",fr:"jour",it:"giorno",es:"d\xEDa",ja:"\u65E5",ko:"\uC77C",zh:"\u5929",id:"hari",pt:"dia"}},{seconds:604800,short:"w",locales:{en:"week",vi:"tu\u1EA7n",tr:"hafta",fr:"semaine",it:"settimana",es:"semana",ja:"\u9031\u9593",ko:"\uC8FC",zh:"\u5468",id:"minggu",pt:"semana"}},{seconds:2592e3,short:"mo",locales:{en:"month",vi:"th\xE1ng",tr:"ay",fr:"mois",it:"mese",es:"mes",ja:"\u30F6\u6708",ko:"\uAC1C\uC6D4",zh:"\u6708",id:"bulan",pt:"m\xEAs"}},{seconds:31536e3,short:"y",locales:{en:"year",vi:"n\u0103m",tr:"yil",fr:"an",it:"anno",es:"a\xF1o",ja:"\u5E74",ko:"\uB144",zh:"\u5E74",id:"tahun",pt:"ano"}}],Wt=["a","an","one","last"];function be(a,e="en"){if(!a)return;const t=a.toLowerCase().trim().replace(/ago$/,"").trim(),r=Date.now();if(t.includes("now"))return r;if(t.includes("yesterday"))return r-864e5;if(kt.test(t))return Number(t);const n=new Date(t);if(!isNaN(n.getTime())){const i=n.getTime();return n.getHours()===0&&n.getMinutes()===0&&n.getSeconds()===0?Math.min(r,i+432e5):i}const s=e==="en"?t.match(zt):t.match(Et);if(s){const[,i,o]=s,c=e==="en"&&Wt.includes(i)?1:Number(i);if(isNaN(c))return;const l=Nt.find(u=>o===u.short||u.locales[e]&&o.startsWith(u.locales[e])||o.startsWith(u.locales.en));if(l)return r-c*l.seconds*1e3}}function qt(a,e=location.origin){if(!a)return;const t=new URL(a.startsWith("//")?`${location.protocol}${a}`:a,location.origin+location.pathname).toString();return t.startsWith(e)?t.replace(e,""):t}function q(a,{titleSlug:e,titleId:t,lang:r}){if(!a)return"/";let n=a;return e&&(n=n.replace("{titleSlug}",e)),t&&(n=n.replace("{titleId}",t)),r&&(n=n.replace("{lang}",r)),n.endsWith("/")||(n+="/"),n.startsWith("/")||(n="/"+n),n}function ce(a){if(!a)return;let e=a;e.startsWith("//")&&(e=`https:${e}`);try{return new URL(e)}catch{return}}function A(a){if(!(!a||typeof a!="string"))return a.includes("//")?ce(a)?.pathname:a}function _t(a){const e=a.getBoundingClientRect();return Jt(e)}function Jt({width:a,height:e}){return a>=75&&e>=50&&(a>=200||e>=200)}function Ft(a,e){const t=[...e],r=[];let n=!1,s=0;const i=Math.min(a.length,100);for(let c=0;c<i;c++){if(s>=10/2){const d=10-r.length;if(d>0){const f=c+d<=a.length?a.slice(c,c+d):t.slice(0,d);r.push(...f)}break}const l=a[c],u=l.id!==void 0,g=t.findIndex(d=>u&&d.id===l.id||d.slug===l.slug||d.name==l.name),h=g===-1?void 0:t.splice(g,1)[0];!h||h.chapters[0]?.chap!==l.chapters[0]?.chap?(n=!0,r.push({...l,changed:!0})):(s++,r.push(l))}if(!n)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const o=[];for(let c=0;c<r.length;c++){const l=r[c];(l.changed||c<10)&&o.push(l)}return{hasMore:e.length<2||e.length-t.length<2,rawReleases:o}}function Gt(a,e){const t={};return a.forEach(r=>{const n=r.chapters.reduce((s,i)=>{const o=i.lang||e||"";return s[o]||(s[o]=[]),s[o].push(i),s},{});Object.entries(n).forEach(([s,i])=>{const o=`${r.slug}:${s}`;t[o]?(t[o].chapters.push(...i),K(t[o].chapters)):t[o]={...r,lang:s===""?void 0:s,chapters:i}})}),Object.values(t)}function Re(a,e){const t=a[0]===e?a.substring(1):a;return t[t.length-1]===e?t.substring(0,t.length-1):t}var x=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(x||{}),Ht=Object.defineProperty,Vt=(a,e,t)=>e in a?Ht(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,T=(a,e,t)=>Vt(a,typeof e!="symbol"?e+"":e,t);class X{constructor(e){T(this,"headless"),T(this,"siteId"),T(this,"spec"),T(this,"siteMeta"),T(this,"tags"),T(this,"context"),T(this,"isGeneric",!1),T(this,"methodsMap",{[x.title]:()=>this.getRawTitleData(),[x.reader]:()=>this.getRawReaderData(),[x.releases]:()=>this.getRawReleasesData(),[x.search]:()=>this.getRawSearchData(),[x.chapters]:()=>this.getRawChaptersData()}),T(this,"normalizedTagsMap"),this.siteId=e.siteId,this.spec=e.spec,this.siteMeta=e.siteMeta,this.tags=e.tags,this.context=e.context??{},this.headless=e.headless===!0}async getRawPageByType(e,t=!1){this.isGeneric=t;const r=await this.methodsMap[e](),n=!r&&(e===x.title||e===x.reader)&&await Zt(this.spec);if(t&&!r&&!n)return;const s=location.origin+location.pathname;return{type:e,is404:n,specId:this.spec.id,siteName:this.getSiteName(e,r),favUrl:Qt(),htmlLang:Xt(),url:s,data:this.siteMeta.oneshot&&r?this.transformOneshot(e,r):r,spec:this.spec,context:this.context}}transformOneshot(e,t){if(e==="title"){const r=t.firstUrl;if(!r)return t;const{slug:n}=this.parseReaderUrl(this.siteMeta.readerBase,new URL(r).pathname,r);return{...t,hasMoreChapters:void 0,chapters:[{chap:0,slug:n}]}}if(e==="reader"){const r=t;return{...r,chap:0,title:{...r.title,hasMoreChapters:void 0,chapters:[{chap:0,slug:r.slug}]}}}return t}parseReaderUrl(e,t,r){const n=!this.siteId,s=t.includes("/");let i=e;if(s&&!i&&(i=this.siteMeta.readerBase),i.startsWith("/")||(i="/"+i),i.endsWith("/")||(i=i+"/"),!s)return n?{basePath:"",slug:`${i}${t}`}:{basePath:i,slug:t};const o=i.includes("{");let c=t;if(c[0]!=="/"&&(c.includes("/")||n&&!o))try{c=new URL(t,location.href).pathname}catch{}if(c.endsWith("/")&&(c=c.slice(0,-1)),o){const l=i.split("/").filter(Boolean),u=c.split("/").filter(Boolean);if(l.length<u.length){const g=u[l.indexOf("{lang}")]?.toLowerCase(),h=u[l.indexOf("{titleId}")],d=u[l.indexOf("{titleSlug}")];if(n)return{basePath:"",slug:c,lang:g,titleId:h,titleSlug:d};if(i=i.replace("{lang}",g).replace("{titleId}",h).replace("{titleSlug}",d),c.startsWith(i))return{basePath:i,slug:c.replace(i,""),lang:g,titleId:h,titleSlug:d}}}else if(!n&&c.startsWith(i))return{basePath:i,slug:c.replace(i,"")};return{basePath:"",slug:c}}parseTitleUrl(e){if(typeof e!="string")return{};const t=A(e);if(t===void 0)return{};if(this.siteMeta.single)return{slug:Re(t,"/")};const r=t?.split("/").filter(Boolean);if(!r?.length)return{};const n=this.siteMeta.titleBase.split("/").filter(Boolean),s=n.indexOf("{slug}");return(s===-1?r.length-n.length>=1:r.length===n.length)?{id:r[n.indexOf("{id}")],slug:this.siteId?s===-1?r.slice(n.length).join("/"):r[s]:t}:{slug:t}}finalizeRawReleasesData(e){const t=this.spec.releases?.title?.lang?this.siteMeta.defaultLang:void 0,r=Gt(e.rawReleases,t);if(r.length)return this.context.oldRawReleases?Ft(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(e){if(!e?.length)return;const t=this.normalizedTagsMap??(this.normalizedTagsMap=Kt(this.tags)),r=e.map(n=>t[ue(n)]).filter(Boolean);return r.length===0?void 0:Array.from(new Set(r)).sort((n,s)=>n-s)}getSiteName(e,t){if(t&&this.siteMeta.single){if(e===x.title)return t.name;if(e===x.reader)return t.title.name}const r=this.spec.name,n=(r&&p(r))??p('meta[property="og:site_name"]|attr:content');return n&&n.length>2?n:void 0}}T(X,"specId"),T(X,"siteId");function Kt(a){const e={};return a.forEach(({id:t,name:r,altNames:n})=>{e[ue(r)]=t,n&&n.forEach(s=>{e[ue(s)]=t})}),e}function ue(a){const e=a.toLowerCase().replaceAll(/[^a-z0-9\s]/gi,"").trim().replaceAll(/\s+/g," ");return e[e.length-1]==="s"?e.substring(0,e.length-1):e}async function Zt(a){return Yt()===404||a[404]&&await k(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function Yt(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}function Qt(){return p('link[rel="icon"][sizes="32x32"],link[rel="icon"][sizes="192x192"],link[rel="apple-touch-icon"]|attr:href || link[rel="icon"]|attr:href')}function Xt(){return p("html|attr:lang")||"en"}class y extends X{async getRawReleasesData(){const e=await this.getRawReleases();if(e?.length)return this.finalizeRawReleasesData({rawReleases:e})}async getRawReleases(){const e=this.spec?.releases?.title;if(!e)return;if(e.json){const o=this.queryJsonRawReleases($(e.json),e)?.filter(c=>c.chapters.length);return o?.length?o:void 0}const t=e.chapter,r=await k(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const n=Date.now(),s=r.slice(0,100).map(o=>{const c=p(e.url,o),l=A(c),u=p(e.name,o),g=p(e.at,o);if(!l||!u)return;const h=be(g,this.siteMeta.defaultLang);return{titleEl:o,id:p(e.id,o),path:l,name:u,lang:p(e.lang,o)?.toLowerCase(),at:h?Math.min(h,n):void 0}}).filter(Boolean);if(!s.length)return;const i=[];return await Promise.all(s.map(async o=>{const{path:c,titleEl:l,lang:u,at:g,...h}=o,{id:d,slug:f}=this.parseTitleUrl(c);if(!f)return;const m=h.id||d,w=await this.getChapters(t,{root:l,titleId:m,titleSlug:f,titleName:o?.name,lang:u})??[];w.length&&i.push({slug:f,chapters:u||g?w.map(v=>({...v,elIndex:void 0,lang:v.lang??u,ts:v.ts??g})):w,...h,id:m})})),i}getRawTitleData(){return this.getTitleData(this.spec.title)}async getTitleData(e){if(!e||!await this.isTitlePage(e))return;const{id:t,slug:r}=this.parseTitleUrl(location.pathname);if(this.siteMeta.single?r===void 0:!r)return;const n=t||p(e.id),s=e.chapter?.json?await this.queryJsonChapters({chapterSpec:e.chapter,titleSlug:r,titleId:n}):await this.getChapters(e.chapter,{lazy:e.chapter?.lazy??!0,titleId:n,titleSlug:r,titleName:p(e.name),includeHiddenChapters:this.context.includeHiddenChapters}),i=p(e.name);if(!i)return;const o=await this.getValidImgSrc(e.img,i),c=o&&this.context.includeImgBytes?await Ut(o):void 0,l=this.getFirstChapterUrl(),u=e.firstBtn,g=V(e.tags)?.map(m=>m.split(",")).flat().map(m=>m.trim()).filter(Boolean),h=p(e.type),d=V(e.langs)?.map(m=>m.toLowerCase()),f=e.hasMore??e.chapter?.allBtn;return{id:n||p(e.id),url:location.origin+location.pathname,slug:r,name:i,langs:d?.length?d:e.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...g??[],...h?[h]:[]]),chapters:s??[],hasMoreChapters:!s?.length&&!e.chapter?!0:f?!!document.querySelector(f):void 0,img:o,imgBytes:c,firstUrl:l,firstBtn:!l&&u&&document.querySelector(u)?u:void 0,trackers:this.getTrackersMap(e.trackers)}}getTrackersMap(e){if(!e)return;const t=typeof e=="boolean"||e.mal===""?'a[href*="myanimelist.net"]|attr:href':e.mal,r=typeof e=="boolean"||e.anl===""?'a[href*="anilist.co"]|attr:href':e.anl,n=p(t),s=p(r);if(!n&&!s)return;const i={};return n&&(i.mal=n.split("?")[0].split("#")[0].split("manga/").slice(-1)[0].split("/")[0]),s&&(i.anl=s.split("?")[0].split("#")[0].split("manga/").slice(-1)[0].split("/")[0]),i}getFirstChapterUrl(){const e=p(this.spec.title?.first);if(e){if(e.startsWith("http"))return e;try{return new URL(e,location.href).href}catch{return}}}getValidImgSrc(e,t){return P(33,30,()=>{const r=p(e)||p(`img[alt="${t.replaceAll('"','\\"')}"]|[attr:data-src,attr-contain:src]`);return!r||r.startsWith("data:")?void 0:document.querySelector(`img[srcset*="${r}"]`)?r.split(" ")[0]:r})}getRawReaderTitleData(e){const t=this.spec.reader?.title;if(!t)return;const r=t.sel?document.querySelector(t.sel)??void 0:void 0;if(t.sel&&!r)return;const n=p(t.name,r);if(!n)return;const s=qt(p(t.img,r));if(e?.slug){let l=this.siteMeta.titleBase;if(e?.id&&(l=l.replace("{id}",e.id)),!l.includes("{"))return l=l.includes("{slug}")?l.replace("{slug}",e.slug):`${l}/${e.slug}`,this.siteMeta.trailing&&!l.endsWith("/")&&(l+="/"),{name:n,img:s,url:new URL(l,location.origin).href,slug:e.slug,id:e.id||p(t.id,r)}}const i=p(t.url,r),{slug:o,id:c}=this.parseTitleUrl(i);if(!(!n||!i||(this.siteMeta.single?o===void 0:!o)))return{name:n,img:s,url:new URL(i,location.origin).href,slug:o,id:c||p(t.id,r)||e?.id}}async getRawReaderData(){const{spec:e,siteMeta:t}=this;if(!e?.reader||!await this.isReaderPage(e.reader,!!e.generic))return;const r=await this.getReaderType(e.reader);if(r===void 0)return;const n=this.parseReaderUrl(t.readerBase,location.pathname,location.href),{slug:s,basePath:i,lang:o}=n,c=this.getRawReaderTitleData({id:n.titleId,slug:n.titleSlug});if(!c)return;const l=p(e.reader.group),{id:u,slug:g}=c,h=e.reader?.chapter,d=!!this.context.disableLazyChapters,f=!!this.context.includeHiddenChapters,m=h?.json?await this.queryJsonChapters({chapterSpec:h,titleSlug:g,titleId:u,lang:o}):await this.getChapters(h,{titleId:u,titleSlug:g,titleName:c.name,lang:o,lazy:f||!d,includeHiddenChapters:f,timeoutMs:f?3e3:25e3,includeIndex:!0,basePath:i,preferGroup:l}),w=p(e.reader.label)?.toLowerCase().replace(c.name.toLowerCase(),"").trim(),v=this.siteMeta.oneshot?{chap:0}:w?E(w):void 0;if(!v)return;const b=e.reader.prev?this.findAdjacentChapter({spec:e.reader.prev,basePath:i,titleUrl:c.url,titleName:c.name}):void 0,j=e.reader.next?this.findAdjacentChapter({spec:e.reader.next,basePath:i,titleUrl:c.url,titleName:c.name}):void 0,U=u??(()=>{const D=this.spec.reader?.title;if(!D?.id)return;const B=D.sel?document.querySelector(D.sel)??void 0:void 0;if(!(D.sel&&!B))return p(D.id,B)})();return this.finalizeRawReaderData({...v,contentType:r,name:p(e.reader.name),lang:o??p(e.reader.lang)?.toLowerCase()??(e.reader.lang?this.siteMeta.defaultLang:void 0),slug:s,basePath:i,group:l??p(e.reader.group),imgs:V(e.reader.imgs),title:{id:U,url:c.url,slug:g,name:c.name,langs:o?[o]:void 0,img:c.img,chapters:m??[],hasMoreChapters:!m?.length&&!f&&!!this.context.disableLazyChapters&&!!h?.label}},{prev:b,next:j})}async getRawChaptersData(){const e=this.siteMeta.chapters;if(e===Y.blank)return;const t=e===Y.reader,r=!e||e===Y.title,n=t?(await this.getRawReaderData())?.title:r?await this.getRawTitleData():void 0,s=this.context.lang,i=await(async()=>{if(n?.chapters.length&&!n.hasMoreChapters)return n.chapters;const c=this.spec.chapters?.chapter;if(!c)return n?.hasMoreChapters?void 0:n?.chapters;const l=n?.slug??this.context.titleSlug,u=n?.id??this.context.rawId;if(!c.json)return await this.getChapters(c,{titleId:u,titleSlug:l,titleName:n?.name,lazy:this.spec.chapters?.lazy,includeHiddenChapters:!0,lang:s});const g=this.spec.chapters?.paging,h=q(this.siteMeta.readerBase,{titleSlug:l,titleId:u,lang:s}),d=await this.queryJsonChaptersResult({chapterSpec:c,pagingSpec:g,titleSlug:l,titleId:u,lang:s});if(!d)return;const{chapters:f,total:m,fetchUrl:w,limit:v}=d;if(!f.length||v>=m||!g||!g.pageKey&&!g.skipKey)return f;const b=this.context.startAfter;if(b&&f[f.length-1].chap-1<=b.chap)return f;const j=g.limitValue??v,U=Math.ceil(m/j),D=j<=v,B=D?1:0,S=w&&g.limitKey&&g.limitValue?w.replace(new RegExp(`${g.limitKey}=\\d+`),`${g.limitKey}=${g.limitValue}`):w??location.href,_=(await Promise.all(Array.from({length:U-B},async(C,O)=>{let z=S;g.pageKey?z=z.replace(new RegExp(`${g.pageKey}=\\d+`),`${g.pageKey}=${O+1+B}`):g.skipKey&&(z=z.replace(new RegExp(`${g.skipKey}=\\d+`),`${g.skipKey}=${(O+B)*j}`));const L=await this.fetch(z);return this.parseJsonChapters(L,{chapterSpec:c,basePath:h})??[]}))).flat();return _.length?this.organizeChapters(D?_:[...f,..._]):f})();if(!i)return;const o=s?i.filter(c=>!c.lang||c.lang===s):i;return{chapters:o,title:n?{...n,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:o.length}}async getRawSearchData(){const e=this.spec.search,t=this.context.lang;if(!e)return;const r=e.title;if(r.json){const l=this.queryJsonRawReleases($(r.json),r,t);return l?.length?{rawReleases:l}:void 0}e.delay?await oe(e.delay):e.loading&&await oe(500);const{chapter:n}=r,s=[],i=e.lazy?e.empty||e.loading?550:100:1;let o=0;const c=await P(i,50,()=>{const l=Array.from(document.querySelectorAll(r.sel));if(l.length||e.empty&&document.querySelector(e.empty)||e.loading&&!document.querySelector(e.loading)&&++o>=3)return l});if(c)return await Promise.all(c.map(async l=>{const u=p(r.url,l),g=A(u),h=p(r.name,l),{slug:d,id:f}=this.parseTitleUrl(g);if(!g||!h||!d)return;const m=p(r.lang,l);m&&t&&m!==t||s.push({id:f||p(r.id,l),slug:d,name:h,img:p(r.img??"img|[attr:data-src,attr-contain:src]",l),lang:m,chapters:await this.getChapters(n,{root:l,titleId:f,titleSlug:d,titleName:h})??[]})})),{rawReleases:s}}queryJsonRawReleases(e,t,r){const n=Q(e),s=R(n,t.sel);if(!s?.length||!Array.isArray(s))return;const i=[];return s.forEach(o=>{const c=$(R(o,t.lang))?.toLowerCase();if(c&&r&&c!==r)return;const l=R(o,t.url),{id:u,slug:g}=I(l,v=>({id:void 0,slug:v+""}))??this.parseTitleUrl(A(l)),h=$(R(o,t.name));if(!g||!h)return;const d=u||R(o,t.id),f=I(d,v=>v+"")??$(d),m=t.chapter?this.parseJsonChapters(o,{chapterSpec:t.chapter,basePath:q(this.siteMeta.readerBase,{titleId:f,titleSlug:g,lang:c})}):void 0,w=$(R(o,t.img),v=>{try{return new URL(v,location.origin).href}catch{return}});i.push({id:f,slug:g,name:h,lang:c,img:w,chapters:m??[]})}),i}parseJsonChapters(e,t){return this.parseJsonChaptersResult(e,t)?.chapters}parseJsonChaptersResult(e,t){if(!e)return;const r=R(e,t.chapterSpec.sel);if(!r)return;const n=Array.isArray(r)?r:[r];if(!n?.length)return;const s=[];if(n.forEach(o=>{const c=this.parseJsonChapter(o,t);c&&s.push(c)}),!s.length)return;const i=I(R(e,t.pagingSpec?.lastPage));return{chapters:this.organizeChapters(s),limit:n.length,total:i&&i>1?i*n.length:I(R(e,t.pagingSpec?.total))??n.length}}parseJsonChapter(e,{chapterSpec:t,basePath:r}){const n=R(e,t.label),s=I(n,f=>({vol:void 0,chap:f}))??E($(n));if(!s)return;const i=R(e,t.url),o=$(i)??I(i,f=>f+""),c=o?this.parseChapterUrl(r,o):void 0,l=s.vol??R(e,t.vol),u=I(l)??$(l,f=>+f),g=R(e,t.id),h=R(e,t.at),d=h?new Date(h).getTime():void 0;return{slug:c?.slug,vol:u||void 0,chap:s.chap,id:$(g)??I(g,f=>f+""),lang:$(R(e,t.lang))?.toLowerCase(),group:$(R(e,t.group)),ts:d||void 0}}async queryJsonChapters(e){return(await this.queryJsonChaptersResult(e))?.chapters}async queryJsonChaptersResult(e){const{chapterSpec:t,pagingSpec:r}=e;let n,s;if(typeof t.json=="string"&&(t.json.startsWith("http")||t.json.startsWith("/"))){const o=await this.getFetchResult(this.replaceDynamicParams(t.json,e));if(!o)return;n=o.url,s=o.value}else s=Q($(t.json));const i=this.parseJsonChaptersResult(s,{chapterSpec:t,pagingSpec:r,basePath:q(this.siteMeta.readerBase,e)});return i?{...i,fetchUrl:n}:void 0}replaceDynamicParams(e,t){let r=e;return t.titleSlug&&(r=r.replace("{titleSlug}",t.titleSlug)),t.titleId&&(r=r.replace("{titleId}",t.titleId)),t.lang&&(r=r.replace("{lang}",t.lang)),r}async getChapters(e,{root:t,titleId:r,titleSlug:n,titleName:s,lang:i,includeHiddenChapters:o=!1,lazy:c=!0,timeoutMs:l,includeIndex:u,basePath:g,preferGroup:h}){const d=e?.sel;if(!d||!e.label||e.trigger&&!o)return;const f=this.replaceDynamicParams(d,{titleSlug:n,titleId:r,lang:i});if(!f)return;let m;if(o){if(e.trigger){if(m=await k(e.trigger,{timeoutMs:5e3,lazy:!0}),!m)return}else if(e.allBtn){const w=e.allBtn;c?await P(100,100,()=>{const v=document.querySelector(w);return v?(m=v,!0):document.querySelector(d)||void 0}):m=document.querySelector(w)||void 0}}return await P(c?l?l/10:33:1,300,async()=>{m&&(ne(m),await oe(50));const w=Array.from((t??document.documentElement)?.querySelectorAll(f));if(!w.length)return;const v=(w??[]).map((C,O)=>({id:p(e.id,C),label:p(e.label,C)?.toLowerCase(),vol:p(e.vol,C),url:p(e.url,C),at:p(e.at,C),lang:p(e.lang,C),group:p(e.group,C),elIndex:O})),b=s?.toLowerCase(),j=b&&!!v[0]?.label?.startsWith(b),U=(e.dismiss?(t??document.body).querySelector(e.dismiss):void 0)??m;if(U&&ne(U),!w?.length)return[];const D=v.map(({label:C,vol:O})=>{if(!C)return;const z=j?C?.replace(b,"").trim():C,L=E(z);if(!L||L.vol!==void 0||!O)return L;const te=E(O)?.vol;return te?{...L,vol:te}:L}),B=g??q(this.siteMeta.readerBase,{titleId:r,titleSlug:n,lang:i}),S=Date.now(),_=[];if(D.forEach((C,O)=>{if(!C)return;const{id:z,url:L,at:te,lang:Ir,group:Tr,elIndex:jr}=v[O],at=be(te,this.siteMeta.defaultLang),ae={...C,id:z,lang:Ir?.toLowerCase(),group:Tr,ts:at?Math.min(S,at):void 0};u&&(ae.elIndex=jr);const re=L?this.parseChapterUrl(B,L):void 0;re&&(ae.slug=re.slug,re.lang&&(ae.lang=re.lang)),_.push(ae)}),!!_.length)return this.organizeChapters(_,h??this.context.preferGroup)})}parseChapterUrl(e,t){if(t?.startsWith("#")||t?.includes("javascript"))return;if(t?.startsWith("http")&&!t.includes(`//${location.hostname}/`))return{slug:t};const r=A(t);if(r)return this.parseReaderUrl(e,r,t)}async isTitlePage(e){return!(!e||(e.sel||e.lazy)&&!await k(e.sel??e.name?.split("|")?.[0],{lazy:!!e.lazy}))}async isReaderPage(e,t){const r=e?.sel;return t&&!r?!1:!r||!!await k(r,{lazy:!!e.lazy})}async getReaderType(e){const t=e.content;if(!t)return e.imgs||e.imgDivs?G.manga:void 0;const r=this.siteMeta.contentTypes,n=this.isGeneric||r?.includes(G.novel),s=this.isGeneric||!r||r.includes(G.manga)?e.content?.split(",").map(i=>i.trim()).filter(Boolean).map(i=>`${i} img:not(figure > img), ${i} canvas`).join(","):void 0;return await P(200,50,async()=>{const i=document.querySelector(t);if(i){if(n){const o=Array.from(i.querySelectorAll("p"));if(o.length){let c=!1,l=0;for(let u=0;u<o.length;u++)if(o[u].textContent.split(" ").filter(Boolean).length>25&&(l+=1,l===10)){c=!0;break}if(c)return G.novel}}if(s){const o=Array.from(i.querySelectorAll(s));if(this.headless||o.some(c=>_t(c)))return G.manga}}})}findAdjacentChapter({spec:e,basePath:t,titleUrl:r,titleName:n}){if(typeof e=="string"){const l=this.getAdjacentChapterSlug({sel:e,titleUrl:r,basePath:t}),u=ye(l);return u?{...u,slug:l}:void 0}const s=e.sel?document.querySelector(e.sel)??void 0:void 0;if(e.sel&&!s)return;const i=e.url?this.getAdjacentChapterSlug({root:s,sel:e.url,basePath:t,titleUrl:r}):void 0,o=p(e.label,s)?.toLowerCase().replace(n.toLowerCase(),""),c=E(o)||ye(i);if(c)return i===void 0?c:{...c,slug:i}}getAdjacentChapterSlug(e){const t=p(e.sel,e.root);if(!t||t.startsWith("#")||t.startsWith("/#"))return;const r=A(t);if(r&&!(r===location.pathname||e.titleUrl===r||e.titleUrl===`${location.origin}${r}`))return this.parseReaderUrl(e.basePath,r,t).slug||void 0}finalizeRawReaderData(e,t={}){const{prev:r,next:n}=t,s=e.title.chapters;if(!s.length)return r||n?{...e,prev:r,next:n}:e;let i,o,c,l;for(let u=0;u<s.length&&!(i&&(!r||c)&&!n&&l);u++){const g=s[u];!i&&ge(e,g)?(i=g,o=u):!c&&r&&ge(r,g)?c=g:!l&&n&&ge(n,g)&&(l=g)}return o!==void 0&&(c??(c=s[o+1]),l??(l=s[o-1])),c&&!c.slug&&r?.slug&&(c.slug=r.slug),l&&!l.slug&&n?.slug&&(l.slug=n.slug),i&&!i.slug&&(i.slug=e.slug),{...e,inferVol:i?.inferVol,prev:c,next:l}}organizeChapters(e,t){return K(e,{preferGroup:t??this.context.preferGroup})}getFetchResult(e){return M(e)}async fetch(e){try{const t=await fetch(e,{signal:AbortSignal.timeout(2e4)});return t.ok?await t.json():void 0}catch{return}}}function ge(a,e){return a.slug&&a.slug==e.slug||a.chap===e.chap&&(a.vol===e.vol||a.vol===void 0)}var ea=Object.defineProperty,ta=(a,e,t)=>e in a?ea(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,aa=(a,e,t)=>ta(a,e+"",t);class $e extends y{async getRawReaderData(){const e=`https://${location.host}/api/`,[t,r]=await Promise.all([M(`${e}manga/info`),M(`${e}read/chapter`)]),n=t?.value,s=r?.value;if(!n||!s)return;const i=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(!i)return;const o=E(s.readChapter?.title);if(o)return this.finalizeRawReaderData({basePath:i.basePath,slug:i.slug,...o,imgs:s.readChapter.pages.map(c=>new URL(c.image,location.origin).href),title:{url:`${e}/manga/${n.id}`,slug:n.id,name:n.title,tags:this.getTagIdsFromNames([n.type].filter(Boolean)),chapters:this.organizeChapters(n.chapters.map(c=>({slug:c.id,chap:c.number})))}})}}aa($e,"specId","atsu");var ra=Object.defineProperty,na=(a,e,t)=>e in a?ra(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,sa=(a,e,t)=>na(a,e+"",t);class xe extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await this.getFetchResult("/api/v1/chapters/{id}");if(!t)return e;const r={basePath:e.basePath,chapterSpec:{sel:"",vol:"volume",label:"number",url:"url"}},n=this.parseJsonChapter(N(t.value,"prev"),r),s=this.parseJsonChapter(N(t.value,"next"),r),i=N(t.value,"pages")?.map?.(o=>o?.url)?.filter(Boolean);return this.finalizeRawReaderData({...e,imgs:i?.length?i:void 0},{prev:n,next:s})}async getFetchResult(e){const t=await super.getFetchResult(e);if(t)return{...t,value:await Se(t.url,t.value)}}async fetch(e){const t=await super.fetch(e);return t?await Se(e,t):void 0}}sa(xe,"specId","comix");async function Se(a,e){let t;const r={interceptors:{request:{use:()=>{}},response:{use:o=>{t=o}}},defaults:{headers:{common:{}},transformRequest:[],transformResponse:[]}},n=window,s=Object.keys(n).filter(o=>/^vm[A-Za-z]_\w+$/.test(o));for(const o of s){const c=n[o];if(!(!c||typeof c!="object")){for(const l of Object.keys(c)){const u=c[l];if(typeof u=="function")try{if(u(r),t)break}catch{}}if(t)break}}if(!t)return e;const i={data:e,status:200,statusText:"OK",headers:{"content-type":"application/json","x-enc":"1"},config:{url:a,method:"GET"}};try{return(await t(i)).data??e}catch{return e}}var ia=Object.defineProperty,oa=(a,e,t)=>e in a?ia(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,la=(a,e,t)=>oa(a,e+"",t);class Ce extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=window.pages,r=t?.map(n=>n?.image).filter(Boolean);if(!(!Array.isArray(r)||!r.length))return{...e,imgs:r,isWebtoon:t.some(n=>n.height/n.width>2)}}}la(Ce,"specId","dynasty");var ca=Object.defineProperty,ua=(a,e,t)=>e in a?ca(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ga=(a,e,t)=>ua(a,e+"",t);class De extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e||!e.imgs?.length)return e;const t=e.imgs[0],r=t.lastIndexOf("/"),n=r===-1?"":t.substring(0,r+1),s=r===-1?t:t.substring(r+1),i=s.substring(s.lastIndexOf(".")),o=$(p(".total_pages|text"),l=>+l)||1,c=Array.from({length:o},(l,u)=>`${n}${u+1}${i}`);return{...e,imgs:c}}}ga(De,"specId","imhen");var ha=Object.defineProperty,pa=(a,e,t)=>e in a?ha(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,da=(a,e,t)=>pa(a,e+"",t);class Me extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=this.spec.chapters?.chapter;if(!t)return e;const r=await M(`https://api.spacely.tech/manhwa/comixto/info/${e.title.slug}`);if(!r?.value)return e;const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:q(e.basePath,{titleSlug:e.title.slug})});return n?.length?this.finalizeRawReaderData({...e,title:{...e.title,chapters:n}}):e}}da(Me,"specId","inkora");var fa=Object.defineProperty,ma=(a,e,t)=>e in a?fa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,wa=(a,e,t)=>ma(a,e+"",t);class Pe extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=this.spec.chapters?.chapter;if(t){const r=await M("https://yuzuki.kagane.org/api/v2/series/{id}");if(r){const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:q(this.siteMeta.readerBase,{titleSlug:e.slug})});if(n)return{...e,chapters:n}}}return{...e,hasMoreChapters:!0}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=va();return{...e,title:{...e.title,img:Ie(e.title.slug),chapters:t}}}async getRawSearchData(){const e=await super.getRawSearchData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,img:Ie(t.slug)}))}}}wa(Pe,"specId","kagane");function Ie(a){return`https://api.${location.host}/api/v1/series/${a}/thumbnail`}function va(){const a=["initialChapters"],e=Array.from(document.querySelectorAll("script:not([src])"));for(let t=0;t<e.length;t++){const r=e[t].textContent;if(r)for(const n of a){const s=r.indexOf(n);if(s===-1)continue;const i=r.slice(s),o=H(i.slice(i.indexOf("[{"),i.indexOf('}],\\"cached_at')+2).replaceAll("\\",""));if(!o?.length||!Array.isArray(o))return[];try{const c=[];return o.map(l=>{const u=E(l.name);u&&c.push({...u,slug:l.id,ts:l.created?new Date(l.created).getTime():void 0})}),K(c)}catch{return[]}}}return[]}var ya=Object.defineProperty,ba=(a,e,t)=>e in a?ya(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ra=(a,e,t)=>ba(a,e+"",t);class he extends y{async getRawReleasesData(){const e=this.getNewSiteMeta(this.spec.releases?.title),t=await super.getRawReleasesData();if(t)return{...t,siteMeta:e}}async getRawTitleData(){if(!await this.isTitlePage(this.spec.title))return;const e=this.getNewSiteMeta(this.spec.title,`${location.origin}${location.pathname}`),t=await super.getRawTitleData();if(t)return{...t,siteMeta:e}}async getRawReaderData(){if(!await this.isReaderPage(this.spec.reader,this.spec.generic))return;const e=this.getNewSiteMeta(this.spec.reader?.title),t=await super.getRawReaderData();if(t)return{...t,siteMeta:e}}async getRawSearchData(){const e=this.getNewSiteMeta(this.spec.search?.title),t=await super.getRawSearchData();if(t)return{...t,siteMeta:e}}getNewSiteMeta(e,t){if(t??(t=$a(e)),!t)return;if(!this.siteId){const i={...this.siteMeta,releases:null,titleBase:"",readerBase:"",titleIdType:ve.name,trailing:t.endsWith("/"),defaultLang:p("html|attr:lang")||"en"};return this.siteMeta=i,i}const r=this.extractBasePath(t),n=this.siteMeta;if(n.titleBase===r)return;const s={...n,titleBase:r,readerBase:n.readerBase.replace(n.titleBase,r)};return this.siteMeta=s,s}extractBasePath(e){const t=e.startsWith("/")?e:A(e);return Re(t,"/").split("/").slice(0,-1).join("/")}}Ra(he,"specId","madara");function $a(a){if(!a)return;const e=a.sel?document.querySelector(a.sel)??void 0:void 0;return p(a.url,e)}var xa=Object.defineProperty,Sa=(a,e,t)=>e in a?xa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ca=(a,e,t)=>Sa(a,e+"",t);class Te extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=await je(this.context.preferGroup),r=new Set;return t.forEach(({lang:n})=>{n&&r.add(n)}),{...e,chapters:t,langs:r.size?Array.from(r):[this.siteMeta.defaultLang||"en"]}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await je(e.group||this.context.preferGroup),r=t[0]?.lang;return this.finalizeRawReaderData({...e,lang:r,title:{...e.title,chapters:t,langs:r?[r]:void 0}})}}Ca(Te,"specId","mangaball");async function je(a){const e=await P(100,50,()=>{try{return ALL_CHAPTERS.length?ALL_CHAPTERS:void 0}catch{return}});if(!e)return[];const t=[];return e.forEach(r=>{r.translations.forEach(n=>{const s=n.volume;t.push({chap:r.number_float,vol:s>0?s:void 0,slug:n.id,lang:n.language,group:n.group?.name,ts:new Date(n.date).getTime()})})}),K(t,{preferGroup:a})}var Da=Object.defineProperty,Ma=(a,e,t)=>e in a?Da(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Pa=(a,e,t)=>Ma(a,e+"",t);const Ia={a:.1,b:.2,c:.3,d:.4};class Be extends y{parseTitleUrl(e){return{slug:A(e)?.split("/").filter(Boolean)[1]}}async getRawReleases(){const e=Q()?.data;if(!e)return;const t=[];return e.forEach(({relationships:r,attributes:n,id:s})=>{const i=r.find(({type:g})=>g==="manga"),o=ee(n.volume),c=Z(n.chapter);if(c===void 0)return;const{title:l}=i.attributes,u=l.en??Object.values(l)[0];t.push({slug:i.id,name:u,chapters:[{slug:n.externalUrl||s,vol:o,chap:c,lang:n.translatedLanguage,ts:new Date(n.readableAt).valueOf()}]})}),t}async getRawTitleData(){const e=`https://api.${location.host}/manga/`;let[t,r]=await Promise.all([M(`${e}{id}`,{timeoutMs:5e3}),M(`${e}{id}/feed`,{timeoutMs:5e3})]);if(!t||!r){const[c,l]=await Promise.all([this.fetch(`${e}{id}`),this.fetch(`${e}{id}/feed`)]);if(!c||!l)return;t={url:"",value:c},r={url:"",value:l}}const n=r.value.data?.map?.(c=>{const{attributes:l,id:u}=c;if(typeof l!="object"||typeof u!="string"||!u)return;const{externalUrl:g,title:h,volume:d,chapter:f,translatedLanguage:m}=l;return{slug:g||u,label:h||void 0,vol:ee(d),chap:Z(f),lang:m||"en",ts:new Date(l.readableAt).valueOf()}}).filter(c=>c?.chap!=null)??[],{data:s}=t.value;if(!s)return;const i=Ae({data:s,getTagIdsFromNames:c=>this.getTagIdsFromNames(c)});if(!i)return;const o=this.context.includeImgBytes&&i.img?await le(i.img):void 0;return{...i,imgBytes:o,chapters:this.organizeChapters(n),hasMoreChapters:(r.value.total||0)>(r.value.limit||0)}}async getRawReaderData(){const e="https://api.mangadex.org/",[t,r,n]=await Promise.all([M(`${e}chapter/{id}`),M(`${e}at-home/server/{id}`),M(`${e}manga/{id}/aggregate`)]);if(!t||!r||!n)return;const s=t.value.data,{volume:i,chapter:o,externalUrl:c,translatedLanguage:l}=s.attributes||{},{baseUrl:u,chapter:{data:g,dataSaver:h,hash:d}}=r.value,f=s.relationships?.find?.(S=>S.type==="manga");if(!f)return;const m=Ae({data:f,getTagIdsFromNames:S=>this.getTagIdsFromNames(S)});if(!m||typeof n.value.volumes!="object")return;const w=Le(n.value,{preferGroup:this.context.preferGroup})??[];(typeof o!="string"||o==="none")&&!w.length&&w.push({chap:0,slug:s.id});const v=w.findIndex(S=>S.slug===s.id),b=s.relationships?.find?.(S=>S.type==="scanlation_group"),j=u.endsWith("/")?u:u+"/",U=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),D=`${j}${U?"data-saver":"data"}/`,B=((U?h:g)??[]).map?.(S=>`${D}${d}/${S}`)??[];return{externalUrl:c,vol:ee(i),inferVol:w[v]?.inferVol,chap:Z(o)||0,imgs:B,lang:l,slug:s.id,prev:w[v+1],next:w[v-1],basePath:"/chapter/",group:b?.attributes?.name,groupUrl:b?.attributes?.website,isWebtoon:f?.attributes?.tags?.some(S=>S.attributes.name.en==="Long Strip"),title:{...m,chapters:w}}}async getRawChaptersData(){const e=Q();if(!e)return;let t;try{t=Le(e,{preferGroup:this.context.preferGroup})}catch{return}if(t)return{chapters:t,lang:this.context.lang??"en",asc:!1,hasMore:!1,total:t.length}}}Pa(Be,"specId","mangadex");function ee(a){const e=Z(a);return e!==0?e:void 0}function Z(a){if(typeof a!="string"||a==="none")return;const e=parseFloat(a);if(e!==e)return;const t=a[a.length-1];return e+(Ia[t]??0)}function Le(a,{preferGroup:e}){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:r,chapters:n})=>{const s=ee(r);return Object.values(n).map(({id:i,chapter:o})=>{const c=Z(o);if(c!==void 0)return{vol:s,chap:c,slug:i}})}).flat().filter(Boolean).reverse();return K(t,{preferGroup:e})}function Ae({data:a,getTagIdsFromNames:e}){const{id:t,attributes:r,relationships:n}=a;if(!t||typeof t!="string"||typeof r!="object")return;const{title:s,availableTranslatedLanguages:i,altTitles:o,tags:c,contentRating:l}=r;if(typeof s!="object"||i&&!Array.isArray(i))return;const u=Object.values(s)[0];if(!u||typeof u!="string")return;const g=Ta(),h=(i??[])?.map?.(b=>typeof b=="string"?b:void 0).filter(Boolean)??[],d=h.filter(b=>b&&(!g||g.includes(b))),f=o?.map?.(b=>{const[[,j]=[]]=Object.entries(b);return j}),m=n?.find?.(b=>b.type==="cover_art")?.attributes?.fileName,w=m?`https://mangadex.org/covers/${t}/${m}.256.jpg`:void 0,v=(c||[]).map(b=>b?.attributes?.name?.en).concat(l).filter(Boolean);return{url:`${location.origin}/title/${t}`,slug:t,name:u,altNames:f,langs:d.length>0?d:h.length>0?h:["en"],img:w,tags:e(v)}}function Ta(){const a=localStorage.getItem("md");if(!a)return;const e=H(a);if(e)try{const t=e?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var ja=Object.defineProperty,Ba=(a,e,t)=>e in a?ja(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,La=(a,e,t)=>Ba(a,e+"",t);class Ue extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=await M(`/api/chapters/${e.slug}/images`);if(!t)return;const r=t.value.images?.map?.(s=>s.url),n=$(N(t.value,"manga.title"));return{...e,imgs:r,title:{...e.title,name:n??e.title.name}}}}La(Ue,"specId","mangadot");var Aa=Object.defineProperty,Ua=(a,e,t)=>e in a?Aa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Oa=(a,e,t)=>Ua(a,e+"",t);class Oe extends y{async getRawReaderData(){if((await k(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const e=this.context.lang??"en",t=await k(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${e.toUpperCase()}"]`,{lazy:!0,all:!1});if(t)return ne(t),await k(`.tab-content[data-name="chapter"] li.item[data-number] a[href*="/${e}/"]`,{lazy:!0,all:!1}),await super.getRawChaptersData()}async getRawSearchData(){const e=await super.getRawSearchData();if(!e)return;const t=this.context.lang??"en";return{...e,rawReleases:e.rawReleases.map(r=>({...r,lang:r.lang??t}))}}}Oa(Oe,"specId","mangafire");var za=Object.defineProperty,Ea=(a,e,t)=>e in a?za(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ka=(a,e,t)=>Ea(a,e+"",t);class ze extends y{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,imgs:await this.getImgs()}}parseReaderUrl(e,t,r){const{slug:n,basePath:s}=super.parseReaderUrl(e,t,r),i=n.split("/").filter(Boolean),o=i[i.length-1];return{basePath:s,slug:o.startsWith("pg-")?i.slice(0,-1).join("/"):n}}async getImgs(){const e=await P(100,20,()=>window.imgsrcs),t=window.CryptoJS,r=t.enc.Hex.parse("e11adc3949ba59abbe56e057f20f883e"),n={iv:t.enc.Hex.parse("1234567890abcdef1234567890abcdef"),padding:t.pad.ZeroPadding};return t.AES.decrypt(e,r,n).toString(t.enc.Utf8).split(",")}}ka(ze,"specId","mangago");var Na=Object.defineProperty,Wa=(a,e,t)=>e in a?Na(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,qa=(a,e,t)=>Wa(a,e+"",t);class Ee extends y{parseTitleUrl(e){return{slug:A(e)?.split("/").filter(Boolean)[1]}}}qa(Ee,"specId","mangapill");var _a=Object.defineProperty,Ja=(a,e,t)=>e in a?_a(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Fa=(a,e,t)=>Ja(a,e+"",t);class ke extends y{async getRawTitleData(){const e=await super.getRawTitleData();return e&&{...e,chapters:e.chapters.map(t=>({...t,slug:t.slug?.split("/").filter(Boolean).slice(-1)[0]}))}}}Fa(ke,"specId","mangaplus");var Ga=Object.defineProperty,Ha=(a,e,t)=>e in a?Ga(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Va=(a,e,t)=>Ha(a,e+"",t);class Ne extends he{async getRawReaderData(){const e=await super.getRawReaderData();if(e)return{...e,title:{...e.title,id:await this.getReaderTitleId()}}}async getReaderTitleId(){const e=await window.HISTORY?.getStored?.();if(!e||typeof e!="object")return;const t=Object.values(e).filter(Boolean);if(!t.length)return;t.sort((n,s)=>s.time-n.time);const r=t[0].manga_ID;return $(r)??I(r,n=>n+"")}}Va(Ne,"specId","mangastream");var Ka=Object.defineProperty,Za=(a,e,t)=>e in a?Ka(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ya=(a,e,t)=>Za(a,e+"",t);class We extends y{async getRawReaderData(){const e=await super.getRawReaderData();return!e||!e.title.chapters.length?e:{...e,prev:e.prev?{...e.prev,slug:pe(e.title.slug,e.prev.slug)}:void 0,next:e.next?{...e.next,slug:pe(e.title.slug,e.next.slug)}:void 0,title:{...e.title,chapters:e.title.chapters.map(t=>({...t,slug:pe(e.title.slug,t.slug)}))}}}}Ya(We,"specId","mangatime");function pe(a,e){if(e)return`/manga/${a}/chapter-${e}`}var Qa=Object.defineProperty,Xa=(a,e,t)=>e in a?Qa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,er=(a,e,t)=>Xa(a,e+"",t);class qe extends y{async getRawReaderData(){const e=await super.getRawReaderData();if(e?.imgs?.length!==1)return e;e.slug.includes("//")&&(e.slug=_e(e.slug).split("/").filter(Boolean)[3]);const t=I(document.querySelector("select.index-page,.page_select select")?.childElementCount,d=>d-1);if(!t||t<=1)return e;const[r]=e.imgs,n=r.split(/\d+\.[a-z]{3,5}$/i)?.[0];if(!n)return e;const s=(+(p(".page_select .select|text")||"1")||1)-1,i=r.replace(n,""),[o,c]=i.split("."),l=o.length,u=+o-s,g=u+t-1,h=[];for(let d=u;d<=g;d++)h.push(`${n}${(d+"").padStart(l,"0")}${c?`.${c}`:""}`);return{...e,imgs:h}}parseChapterUrl(e,t){return this.parseReaderUrl(e,_e(t),t)}}er(qe,"specId","mangatown");function _e(a){return a.replace(location.origin,"").replace("//","/")}var tr=Object.defineProperty,ar=(a,e,t)=>e in a?tr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,rr=(a,e,t)=>ar(a,e+"",t);class Je extends y{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,slug:e.slug.split("/").slice(0,-1).join("/")||e.slug.split("/")[0]}}}rr(Je,"specId","mangaworld");var nr=Object.defineProperty,sr=(a,e,t)=>e in a?nr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ir=(a,e,t)=>sr(a,e+"",t);class Fe extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,hasMoreChapters:e.chapters.length===50}}}ir(Fe,"specId","mgeko");var or=Object.defineProperty,lr=(a,e,t)=>e in a?or(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,cr=(a,e,t)=>lr(a,e+"",t);class Ge extends y{async getRawReaderData(){const e=await P(200,50,()=>{const s=window.mangaReader;return s?.scanData&&s?.mangaData?s:void 0});if(!e)return;const{scanData:t,mangaData:r}=e,n=`/${this.siteMeta.readerBase}/`;return this.finalizeRawReaderData({basePath:n,chap:t.chapterNum,slug:t.slug,imgs:t.pages,title:{name:t.chapterTitle,slug:t.manga,url:`${location.origin}/${this.siteMeta.titleBase}/${t.manga}`,chapters:this.parseJsonChapters(r,{basePath:n,chapterSpec:{sel:"chapters",label:"num",url:"slug"}})??[]}})}}cr(Ge,"specId","moins");var ur=Object.defineProperty,gr=(a,e,t)=>e in a?ur(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,hr=(a,e,t)=>gr(a,e+"",t);class He extends X{async getRawReleasesData(){}async getRawSearchData(){}async getRawTitleData(){const e=p("h1.title .pretty, h1.title|text"),t=p("#cover img|[attr:data-src,attr-contain:src]");if(e)return{name:e,slug:location.pathname.split("/").filter(Boolean).slice(-1)[0],url:location.origin+location.pathname,img:t,imgBytes:this.context.includeImgBytes&&t?await le(t):void 0,chapters:[{slug:"1",chap:0}]}}async getRawReaderData(){const e=p("#image-container img|[attr:data-src,attr-contain:src]"),t=ce(e);if(!t)return;const r=t.origin,n=this.parseReaderUrl(this.siteMeta.readerBase,location.pathname,location.href);if(n?.titleSlug)try{const s=await fetch(`${location.origin}/api/v2/galleries/${n.titleSlug}`);if(!s.ok)return;const i=await s.json();if(!i)return;const o=R(i,"title.pretty")||R(i,"title.english")||i?.title?.[Object.keys(i.title)[0]];if(!o)return;const c=$(R(i,"cover.path"),u=>`https://t2.${location.hostname}${u.startsWith("/")?u:`/${u}`}`),l=i.pages.map(u=>{const g=u.path;return`${r}${g.startsWith("/")?g:`/${g}`}`});return{chap:0,slug:"1",basePath:`/g/${n.titleSlug}/`,imgs:l,title:{name:o,slug:n.titleSlug,url:`${location.origin}/g/${n.titleSlug}`,chapters:[{slug:"1",chap:0}],img:c}}}catch{return}}async getRawChaptersData(){const e=await this.getRawTitleData();if(!e)return;const{chapters:t,...r}=e;return{title:{...r,chapters:[]},chapters:t}}}hr(He,"specId","nhentai");var pr=Object.defineProperty,dr=(a,e,t)=>e in a?pr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,fr=(a,e,t)=>dr(a,e+"",t);class Ve extends y{async queryJsonChapters(e){const t=await super.queryJsonChapters(e);if(t)return t.map(r=>({...r,slug:r.slug?`ch-${+r.slug||r.chap}`:r.slug}))}}fr(Ve,"specId","stone");var mr=Object.defineProperty,wr=(a,e,t)=>e in a?mr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,vr=(a,e,t)=>wr(a,e+"",t);class Ke extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=V(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return Ze({...e,tags:this.getTagIdsFromNames(t)??[]},".episode-header .episode-cnt")}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=`${location.origin}/series/${e.title.slug}/info`;return{...e,title:{...Ze({...e.title,url:t,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}async getRawChaptersData(){const{rawId:e,skip:t}=this.context,r=1e3,n=t?Math.floor(t/1e3)+1:1;try{const s=await fetch(`/series/${e}/episodes?page=${n}&sort=NEWEST&max_limit=${r}`);return yr(await s.json())}catch{return}}parseTitleUrl(e){if(!e)return{};const t=e.split("/").filter(Boolean);return{slug:t[1]??t[0]}}}vr(Ke,"specId","tapas");function Ze(a,e){const t=br(e)>20;return{...a,chapters:t?[]:a.chapters,hasMoreChapters:t}}function yr(a){const e=a?.data?.episodes;if(!Array.isArray(e))return;const t=e.map(n=>({chap:n.pending_scene??n.scene,slug:n.id+"",ts:new Date(n.publish_date)?.valueOf?.()||void 0})),r=a?.data?.pagination;return{chapters:t,total:r?.total??t.length,hasMore:!!r?.has_next}}function br(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var Rr=Object.defineProperty,$r=(a,e,t)=>e in a?Rr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,xr=(a,e,t)=>$r(a,e+"",t);class Ye extends y{async getRawTitleData(){const e=await super.getRawTitleData();if(!e||e?.id||this.siteId&&!e.hasMoreChapters&&e.chapters.length)return e;const t=await this.getTitleId(e.name,e.slug);if(t)return{...e,id:t}}async getRawChaptersData(){const{rawId:e}=this.context;if(!e)return await super.getRawChaptersData();const t=(()=>{const r=Array.from(document.querySelectorAll("script:not([src])"));for(let n=0;n<r.length;n++){const s=r[n].textContent;if(s?.includes('"user\\":'))return s?.match(/"user\\":\{\\"id\\":\\"([^"']+)\\"/)?.[1]}})();try{const r=await fetch(`https://api.${location.host}/api/chapters?postId=${e}&skip=0&take=900&order=desc${t?`&userid=${t}`:""}`);if(!r.ok)return;const n=await r.json(),s=this.parseJsonChapters(n,{chapterSpec:{sel:"post.chapters",url:"slug",label:"number",at:"createdAt"},basePath:q(location.pathname,{titleSlug:this.context.titleSlug})});return s?{chapters:s}:void 0}catch{return}}async getTitleId(e,t){const r=`mp:id:${t}`,n=localStorage.getItem(r);if(n)return n==="_"?void 0:n;try{const s=await fetch(`https://api.${location.hostname}/api/query?page=1&perPage=10&searchTerm=${encodeURIComponent(e)}`);if(!s.ok)return;const i=await s.json(),o=e.toLowerCase(),c=i.posts.find(u=>u.postTitle.toLowerCase().trim()===o),l=I(c?.id,u=>u.toString());return localStorage.setItem(r,l??"_"),l}catch{return}}}xr(Ye,"specId","vortex");var Sr=Object.defineProperty,Cr=(a,e,t)=>e in a?Sr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Dr=(a,e,t)=>Cr(a,e+"",t);class Qe extends y{async getRawTitleData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no");if(t||!r)return;const n=await super.getRawTitleData();if(!n)return;const s=location.hostname.startsWith("m."),i=location.pathname.split("/")[1];return{...n,slug:`${n.slug}?title_no=${r}`,id:r,langs:i?[i]:void 0,chapters:s?[]:n.chapters.map(o=>({...o,lang:i})),hasMoreChapters:s||(document.querySelector(".paginate")?.childElementCount??1)>1}}async getRawReaderData(){const e=new URLSearchParams(location.search),t=e.get("episode_no"),r=e.get("title_no"),n=t?+t:void 0;if(!t||!r||typeof n!="number"||isNaN(n))return;const s=document.title.split("|")[1]?.trim();if(!s)return;const i=location.pathname.split("/"),o=`${i.slice(0,4).join("/")}/list?title_no=${r}`,c=await this.getChapters({sel:"#sequence_scroll li.eg-flick-panel,#toolbar .episode_lst li[data-episode-no]",url:"a|attr:href",label:"|attr:data-episode-no || a|attr:href|pattern:.+episode_no=(\\d+).*"},{lazy:!1,titleId:r,titleSlug:o,titleName:s}),l=i[1];return{chap:n,lang:l,slug:`${location.pathname}?title_no=${r}&episode_no=${t}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:o,slug:o,name:s,langs:[l],chapters:(c??[]).map(u=>({...u,lang:l})),hasMoreChapters:!1}}}async getReaderImgs(){const e=V("#_imageList img|[attr:data-url,attr:src]");return e?.length?e:await P(100,50,()=>window.__viewerState__?.scrollViewerParam?.imageList?.map(({url:t})=>t).filter(Boolean))}parseReaderUrl(e,t,r){if(!r)return{basePath:"",slug:t};if(r.startsWith("http://")||r.startsWith("https://")){const n=ce(r);return{basePath:"",slug:n.pathname+n.search}}return{basePath:"",slug:r}}}Dr(Qe,"specId","webtoon");const Mr=[$e,xe,Ce,De,Me,Pe,he,Te,Be,Oe,ze,Ee,ke,Ne,Fe,Ue,We,qe,Je,Ge,He,Ve,Ke,Ye,Qe];function Xe(a){const e=Mr.find(t=>t.specId===a.spec.id)??y;return new e(a)}async function Pr(a){const{spec:e,type:t}=a,r=a.siteMeta??e?.meta;if(e&&r){const n=t?[t]:et(r,e.generic);if(!n.length)return;const s=Xe({...a,spec:e,siteMeta:r});return await F(n.map(i=>s.getRawPageByType(i,n.length>1)))}return await F((a.genericSpecs??[]).map(n=>{if(!n.meta||!n.generic)return[];const s=t?[t]:et(n.meta,n.generic);if(!s.length)return[];const i=Xe({...a,spec:n,siteMeta:n.meta});return s.map(o=>i.getRawPageByType(o,!0))}).flat())}function et(a,e){if(location.pathname==="/"&&!a.single)return[];const{titleBase:t,readerBase:r}=a,n=location.pathname.split("/").filter(Boolean),s=tt(n,r),i=tt(n,t);if(s&&i)return[x.reader,x.title];const o=[];return!i&&(s!==!1||e)&&o.push(x.reader),!s&&(i!==!1||e)&&o.push(x.title),!o.length&&e?[x.reader,x.title]:o}function tt(a,e){if(!e)return;const t=e.split("/").filter(Boolean),r=t.indexOf("{slug}"),n=r===t.length-1,s=!n&&r!==-1;if(n&&(t.pop(),!t.length))return;const i=a.length-t.length;if(s?i<0:i<=0)return!1;let o=!1;for(let c=0;c<t.length;c++){const l=t[c];if(l[0]!=="{"){if(l!==a[c])return!1;o=!0}}if(o&&i===(s?0:1))return!0}J.PageType=x,J.scrape=Pr}));
|