trackkun-dom 2.32.3 → 2.32.4

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.
Files changed (2) hide show
  1. package/index.js +1 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1 +1 @@
1
- (function(_,F){typeof exports=="object"&&typeof module<"u"?F(exports):typeof define=="function"&&define.amd?define(["exports"],F):(_=typeof globalThis<"u"?globalThis:_||self,F(_._trackkun_={}))})(this,(function(_){"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 it=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,ot=/^S([1-9])\s/i,lt=/(ch(ap(t(er)?|\.)?|\.)?|#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([-~_,.]\d+)?)/i,ct=/\d+([-~_,.]\d+)?/,ut=/[-~_,]/;function pt(a){const e=a.match(it);if(e)return{volStr:e[0],volValueStr:e[4]};const t=a.match(ot);return t?{volStr:t[0],volValueStr:t[1]}:{}}function U(a){if(!a)return;if(!isNaN(+a))return{chap:+a};const{volStr:e,volValueStr:t}=pt(a),r=e?a.replace(e,"").trim():a,n=r.match(lt)?.[6]??r.match(ct)?.[0];if(!n)return;const s=+n.replace(ut,".");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 ht(){return Math.random().toString(16).slice(2)}async function gt({addListener:a,removeListener:e,transform:t,filter:r,handler:n,onTimeout:s,timeout:i,once:c}){return new Promise(l=>{a(g);const o=()=>c===!0&&e(g),u=i?setTimeout(()=>{o(),l(void 0),s?.()},i):void 0;async function g(h,...p){h=t?t(h):h,h!==void 0&&(!r||r(h,...p))&&(o(),l(h),n?.(h,...p),u&&clearTimeout(u))}})}async function dt(a){return(await gt({addListener:e=>window.addEventListener("message",e),removeListener:e=>window.removeEventListener("message",e),...a}))?.data}async function ft(a){const{receiverWindow:e,timeout:t,targetOrigin:r,event:n,args:s}=a,i={reqId:ht(),event:n,args:s};return(e||window)?.postMessage(i,r??"*"),(await dt({filter:c=>c?.data?.resId===i.reqId,timeout:t??3e4,once:!0}))?.result}function B(a,e){return ft({event:"tk:fetchResult",args:{url:a},timeout:e?.timeoutMs??15e3})}async function j(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 j(a-1,e,t);n(s)},e)})}async function z(a,e,t=0){const r=e.root??document.documentElement,n=e.timeoutMs??1e4;return j(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 q(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 le(a,e){if(typeof a.checkVisibility=="function")return a.checkVisibility({opacityProperty:!0,visibilityProperty:!1,contentVisibilityAuto:!1});const t=window.getComputedStyle(a);if(t.display==="none"||t.opacity&&parseFloat(t.opacity)<.1)return!1;if(!e)return!0;const r=a.parentElement;return!r||r===e?!0:le(r,e)}function mt(a,e){return a>=280&&e>=50||a>=160&&e>=280}var J;(function(a){a[a.manga=1]="manga",a[a.novel=2]="novel",a[a.anime=3]="anime"})(J||(J={}));async function vt(a,e){const t=["NAV","ASIDE","FOOTER","HEADER","BR","HR","BUTTON","A"],r="img:not(nav img, header img, footer img, aside img), canvas",n=e?.timeoutMs,s=e?.include,i=e?.paraSel,c=!s||s.includes(J.manga),l=!s||s.includes(J.novel);let o=0;return await j(n/50,50,()=>{const p=u();if(p){if(c&&h(p,e?.validateImgSize))return J.manga;if(l&&o++%3===0&&g(p))return J.novel}});function u(){for(const p of a.split(",")){const m=document.querySelector(p);if(m)return m}}function g(p){const m=[`p:not(${t.map(w=>`${w} p`).join(",")})`,i].filter(Boolean).join(",");if(!p.querySelector(m)&&(!i||!p.matches(i)))return!1;let v=0,d=0,b=0;return y(p);function y(w){const $=w.tagName;if(t.includes($)||!le(w)||window.getComputedStyle(w).position==="fixed")return!1;if($==="P"||i&&w.matches(i))return v+=w.textContent.split(" ").filter(Boolean).length,d++,b=0,!c&&v>50||d>10&&v>120||d>5&&v>250||v>400;d>0&&++b>4&&(d=0,v=0);const R=Array.from(w.children);for(let S=0;S<R.length;S++)if(y(R[S]))return!0;return!1}}function h(p,m){const v=Array.from(p.querySelectorAll(r));if(m===!1)return v.length>0;const d=Math.min(window.innerWidth*.9,500);let b=0;for(let y=0;y<v.length;y++){const w=v[y];if(!le(w,p))continue;const{width:$,height:R}=w.getBoundingClientRect();if(mt($,R)&&($>=d||(b+=R,b>=d)))return!0}return!1}}function G(a){if(a)try{return JSON.parse(a)}catch{return}}const ye={text:$e,attr:$t,"attr-contain":St,value:xt,row:Ct,"bg-image":Dt,json:Mt},wt={pattern:Tt,remove:Pt,atob:It,json:Se};function f(a,e){if(a)return be(a,e,bt)}function K(a,e){if(a)return be(a,e,Rt)}function be(a,e,t){if(!a)return;const r=a.split("||").map(n=>n.trim()).filter(Boolean);for(const n of r){const s=yt(n);if(!s)continue;const i=t(e??document.documentElement,s);if(i)return i}}function yt(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(ce),transformers:r.map(ce)}}function ce(a){const e=a.indexOf(":"),t=e!==-1;return{fn:t?a.substring(0,e):a,param:t?a.substring(e+1):""}}function bt(a,e){if(!e.selector)return Re(a,e);const t=Bt(e.selector);for(const r of t){const n=Array.from(a.querySelectorAll(r));for(const s of n){const i=Re(s,e);if(i)return i}}}function Rt(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=ye[s.fn],c=i(n,s.param),l=c?ue(c,e.transformers):void 0;if(l){r.push(l);break}}if(r.length)return r}function Re(a,e){for(const t of e.extractors){const r=ye[t.fn],n=r(a,t.param);if(n)return ue(n,e.transformers)}}function ue(a,e){let t=a;for(const r of e){if(!t)return;const n=wt[r.fn];n&&(t=n(t,r.param)?.trim())}return t}function $e(a){return Array.from(a.childNodes).filter(e=>e.nodeType===3).map(e=>N(e.textContent)).filter(Boolean).join(" ").trim()||N(a.textContent)}function $t(a,e){return N(a.getAttribute(e))}function St(a,e){let t=a.getAttribute(e);if(!t){const r=a.getAttributeNames().find(n=>n.includes(e));r&&(t=a.getAttribute(r))}return N(t)}function xt(a){return a.value}function Ct(a,e){if(!e)return;const t=N(a.textContent)?.toLowerCase(),r=e.toLowerCase();if(!(t!==r&&t!==`${r}:`))return N(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function Dt(a){const e=getComputedStyle(a).backgroundImage;if(!(!e||!e.startsWith("url(")))return e.slice(5,-2)||void 0}function Mt(a,e){const t=$e(a);if(t)return Se(t,e)}function Se(a,e){const t=ee(G(a),e),r=typeof t;if(r==="string")return N(t)||a;if(r==="number"||r==="boolean")return t+""}function ee(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?ee(i,s):i}catch{return}}function N(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}function Tt(a,e){if(e)try{return a.replace(new RegExp(e,"i"),"$1")}catch{}return a}function Pt(a,e){if(e)try{return a.replaceAll(new RegExp(e,"gi"),"")}catch{}return a}function It(a){try{return window.atob(a)}catch{return a}}function Bt(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 c=t.trim();c.length>0&&e.push(c),t=""}else t+=i}const n=t.trim();return n.length>0&&e.push(n),e}function pe(a,e){const t=document;if(a.startsWith("//")){const r=document.evaluate(a,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;return r instanceof HTMLElement?r:void 0}return t.querySelector(a)??void 0}var jt=(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))(jt||{}),At=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(At||{}),Et=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(Et||{}),xe=(a=>(a.id="id",a.name="name",a.slug="slug",a))(xe||{}),te=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(te||{}),H=(a=>(a[a.manga=1]="manga",a[a.novel=2]="novel",a[a.anime=3]="anime",a))(H||{}),Lt=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(Lt||{});function X(a=0){return new Promise(e=>setTimeout(e,a))}function ae(a){if(a)return parseInt(a.replace(/\D*/,""))||void 0}const Ut=/\d+[a-z]+\d+/i,zt=/[a-z]+\d+[a-z]+/i,Ot=/^\d{5,}$/;function Ce(a){if(!a)return;const e=[];a.split(/[-_]/).forEach(r=>{const n=r.split(".").filter(s=>s&&!zt.test(s)&&!Ut.test(s)&&!Ot.test(s)).join(".");n&&e.push(n)});const t=e.join(" ");return U(t)}async function he(a,e){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?.maxWidth??240)),s=r.naturalWidth/n,i=r.naturalHeight/n,c=document.createElement("canvas"),l=c.getContext("2d");c.width=s,c.height=i;const o=/iPad|iPhone|iPod/.test(navigator.userAgent);try{l.drawImage(r,0,0,s,i);const u=((e?.fixCanvas!==!1?qt():void 0)??HTMLCanvasElement.prototype.toDataURL).call(c,o?"image/jpeg":"image/webp",o?.99:.8);t(u.length<1e3?void 0:u.split(",").slice(-1)[0])}catch{t(void 0)}},r.src=a})}function qt(){const a=document.createElement("template");a.innerHTML="<iframe></iframe>";const e=a.content.querySelector("iframe");if(e){e?.style.setProperty("style","none"),document.body.appendChild(e);const t=e?.contentWindow?.HTMLCanvasElement?.prototype?.toDataURL;if(document.body.removeChild(e),t)return t}return HTMLCanvasElement.prototype.toDataURL}async function Nt(a,e=240){const t=await kt(a);if(t)return await new Promise(async r=>{const n=he(t,{maxWidth:e,fixCanvas:!1}),s=setTimeout(()=>r(void 0),100),i=await n;clearTimeout(s),r(i)})}async function kt(a){if(a.startsWith("blob:"))return a;try{const e=await fetch(a);if(e.status>=400)return;const t=await e.blob();return t.size<1e3?void 0:URL.createObjectURL(t)}catch{return}}function D(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=ee(a,n);if(typeof i=="number"||i){if(typeof i!="string")return i;const c=i.replace(/(\n|\t)/g," ").trim();if(c){const l=ue(c,s.map(ce));if(l)return l}}}}function re(a){if(a?.startsWith("window")){const e=a.indexOf(".");return e===-1?void 0:D(window,a.substring(e+1))}return G(a?f(a):document.querySelector("pre")?.textContent)}function E(a,e){if(typeof a=="number")return e?e(a):a}function T(a,e){if(typeof a=="string")return e?e(a):a}function Y(a,e){const t=a.map(o=>({...o,vol:o.vol===0?void 0:o.vol}));t.sort((o,u)=>o.vol===void 0||u.vol===void 0?u.chap-o.chap:u.vol-o.vol||u.chap-o.chap);const r={},n={};for(let o=t.length-1;o>=0;o--){const u=t[o],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={},c=e?.preferGroup,l=o=>o.lang??"";for(const o of t){const u=l(o),g=i[u],h=s[g];if(!(h&&h.chap===o.chap&&(h.vol===o.vol||h.vol===void 0||o.vol===void 0))){i[u]=s.length,s.push(o);continue}if(!c){h.vol===void 0&&o.vol!=null&&(s[g]=o);continue}h.group!==c&&(o.group==c||h.group&&!o.group||r[o.group??""]>r[h.group??""])&&(s[g]=o)}return s}const Wt=/^(a|an|one|last|\d+)\s*([a-z]+)/,_t=/^(\d+)\s*([a-z]+)/,Ft=/^\d+$/,Jt=[{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"}}],Ht=["a","an","one","last"];function De(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(Ft.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(Wt):t.match(_t);if(s){const[,i,c]=s,l=e==="en"&&Ht.includes(i)?1:Number(i);if(isNaN(l))return;const o=Jt.find(u=>c===u.short||u.locales[e]&&c.startsWith(u.locales[e])||c.startsWith(u.locales.en));if(o)return r-l*o.seconds*1e3}}function Vt(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 k(a,{slug:e,id: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 ge(a){if(!a)return;let e=a;e.startsWith("//")&&(e=`https:${e}`);try{return new URL(e)}catch{return}}function L(a){if(!(!a||typeof a!="string"))return a.includes("//")?ge(a)?.pathname:a}function Gt(a,e){const t=[...e],r=[];let n=!1,s=0;const i=Math.min(a.length,100);for(let l=0;l<i;l++){if(s>=10/2){const p=10-r.length;if(p>0){const m=l+p<=a.length?a.slice(l,l+p):t.slice(0,p);r.push(...m)}break}const o=a[l],u=o.id!==void 0,g=t.findIndex(p=>u&&p.id===o.id||p.slug===o.slug||p.name==o.name),h=g===-1?void 0:t.splice(g,1)[0];!h||h.chapters[0]?.chap!==o.chapters[0]?.chap?(n=!0,r.push({...o,changed:!0})):(s++,r.push(o))}if(!n)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const c=[];for(let l=0;l<r.length;l++){const o=r[l];(o.changed||l<10)&&c.push(o)}return{hasMore:e.length<2||e.length-t.length<2,rawReleases:c}}function Kt(a,e){const t={};return a.forEach(r=>{const n=r.chapters.reduce((s,i)=>{const c=i.lang||e||"";return s[c]||(s[c]=[]),s[c].push(i),s},{});Object.entries(n).forEach(([s,i])=>{const c=`${r.slug}:${s}`;t[c]?(t[c].chapters.push(...i),Y(t[c].chapters)):t[c]={...r,lang:s===""?void 0:s,chapters:i}})}),Object.values(t)}function Me(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 M=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(M||{}),Xt=Object.defineProperty,Yt=(a,e,t)=>e in a?Xt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,A=(a,e,t)=>Yt(a,typeof e!="symbol"?e+"":e,t);class ne{constructor(e){A(this,"headless"),A(this,"siteId"),A(this,"spec"),A(this,"siteMeta"),A(this,"tags"),A(this,"context"),A(this,"isGeneric",!1),A(this,"methodsMap",{[M.title]:()=>this.getRawTitleData(),[M.reader]:()=>this.getRawReaderData(),[M.releases]:()=>this.getRawReleasesData(),[M.search]:()=>this.getRawSearchData(),[M.chapters]:()=>this.getRawChaptersData()}),A(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,r=!1){this.isGeneric=r;const n=await this.methodsMap[e](),s=!n&&(e===M.title||e===M.reader)&&await Zt(this.spec);if(!((r||!t)&&!n&&!s))return{type:e,is404:s,specId:this.spec.id,siteName:this.getSiteName(e,n),favUrl:ta(),htmlLang:aa(),url:location.href,data:this.siteMeta.oneshot&&n?this.transformOneshot(e,n):n,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 c=i.includes("{");let l=t;if(l[0]!=="/"&&(l.includes("/")||n&&!c))try{l=new URL(t,location.href).pathname}catch{}if(l.endsWith("/")&&(l=l.slice(0,-1)),c){const o=i.split("/").filter(Boolean),u=l.split("/").filter(Boolean);if(o.length<u.length){const g=u[o.indexOf("{lang}")]?.toLowerCase(),h=u[o.indexOf("{titleId}")],p=u[o.indexOf("{titleSlug}")];if(n)return{basePath:"",slug:l,lang:g,titleId:h,titleSlug:p};if(i=i.replace("{lang}",g).replace("{titleId}",h).replace("{titleSlug}",p),l.startsWith(i))return{basePath:i,slug:l.replace(i,""),lang:g,titleId:h,titleSlug:p}}}else if(!n&&l.startsWith(i))return{basePath:i,slug:l.replace(i,"")};return{basePath:"",slug:l}}parseTitleUrl(e){if(typeof e!="string")return{};const t=L(e);if(t===void 0)return{};if(this.siteMeta.single)return{slug:Me(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=Kt(e.rawReleases,t);if(r.length)return this.context.oldRawReleases?Gt(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(e){if(!e?.length)return;const t=this.normalizedTagsMap??(this.normalizedTagsMap=Qt(this.tags)),r=e.map(n=>t[de(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===M.title)return t.name;if(e===M.reader)return t.title.name}const r=this.spec.name,n=(r&&f(r))??f('meta[property="og:site_name"]|attr:content');return n&&n.length>2?n:void 0}}A(ne,"specId"),A(ne,"siteId");function Qt(a){const e={};return a.forEach(({id:t,name:r,altNames:n})=>{e[de(r)]=t,n&&n.forEach(s=>{e[de(s)]=t})}),e}function de(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 ea()===404||a[404]&&await z(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function ea(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}function ta(){return f('link[rel="icon"][sizes="32x32"],link[rel="icon"][sizes="192x192"],link[rel="apple-touch-icon"]|attr:href || link[rel="icon"]|attr:href')}function aa(){return f("html|attr:lang")||"en"}class C extends ne{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 c=this.queryJsonRawReleases(T(e.json),e)?.filter(l=>l.chapters.length);return c?.length?c:void 0}const t=e.chapter,r=await z(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const n=Date.now(),s=r.slice(0,100).map(c=>{const l=f(e.url??(c.tagName==="A"?"|attr:href":"a|attr:href"),c),o=L(l),u=f(e.name,c)??f("img|attr:alt",c),g=f(e.at,c);if(!o||!u)return;const h=De(g,this.siteMeta.defaultLang);return{titleEl:c,id:f(e.id,c),path:o,name:u,lang:f(e.lang,c)?.toLowerCase(),at:h?Math.min(h,n):void 0}}).filter(Boolean);if(!s.length)return;const i=[];return await Promise.all(s.map(async c=>{const{path:l,titleEl:o,lang:u,at:g,...h}=c,{id:p,slug:m}=this.parseTitleUrl(l);if(!m)return;const v=h.id||p,d=this.queryChapters({chapterSpec:t,root:o,titleInfo:{id:v,slug:m,name:c?.name,lang:u}});d&&i.push({slug:m,chapters:u||g?d.map(b=>({...b,elIndex:void 0,lang:b.lang??u,ts:b.ts??g})):d,...h,id:v})})),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||f(e.id),s=typeof e.chapter=="string"?{sel:e.chapter}:e.chapter,i=(await this.getChaptersResult(e.chapter,{lazy:!!this.context.includeHiddenChapters||(s?.lazy??!0),titleInfo:{id:n,slug:r,name:f(e.name??"h1|text")},includeHiddenChapters:this.context.includeHiddenChapters}))?.chapters,c=f(e.name??"h1|text");if(!c)return;const l=await this.getValidImgSrc(e.img,c),o=l&&this.context.includeImgBytes?await Nt(l):void 0,u=this.getFirstChapterUrl(),g=e.firstBtn,h=K(e.tags)?.map(v=>v.split(",")).flat().map(v=>v.trim()).filter(Boolean),p=f(e.type),m=K(e.langs)?.map(v=>v.toLowerCase());return{id:n||f(e.id),url:location.origin+location.pathname,slug:r,name:c,langs:m?.length?m:e.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...h??[],...p?[p]:[]]),chapters:i??[],hasMoreChapters:!i?.length&&!e.chapter||(e.hasMore?!!document.querySelector(e.hasMore):void 0)||(!this.context.includeHiddenChapters&&s?.allBtn?!!pe(s.allBtn):void 0),img:l,imgBytes:o,firstUrl:u,firstBtn:!u&&g&&document.querySelector(g)?g: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=f(t),s=f(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=f(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 j(33,30,()=>{const r=f(e)||f(`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})}resolveReaderTitleSpec(){const e=this.spec.reader?.title;return typeof e=="string"?{sel:e}:e}getRawReaderTitleData(e){const t=this.resolveReaderTitleSpec();if(!t)return;const r=t.sel?document.querySelector(t.sel)??void 0:void 0;if(t.sel&&!r)return;const n=f(t.name??"|text",r);if(!n)return;const s=Vt(f(t.img,r));if(e?.slug){let o=this.siteMeta.titleBase;if(e?.id&&(o=o.replace("{id}",e.id)),!o.includes("{"))return o=o.includes("{slug}")?o.replace("{slug}",e.slug):`${o}/${e.slug}`,this.siteMeta.trailing&&!o.endsWith("/")&&(o+="/"),{name:n,img:s,url:new URL(o,location.origin).href,slug:e.slug,id:e.id||f(t.id,r)}}const i=f(t.url??"|attr:href",r),{slug:c,id:l}=this.parseTitleUrl(i);if(!(!n||!i||(this.siteMeta.single?c===void 0:!c)))return{name:n,img:s,url:new URL(i,location.origin).href,slug:c,id:l||f(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)return;const n=this.parseReaderUrl(t.readerBase,location.pathname,location.href),{slug:s,basePath:i,lang:c}=n,l=this.getRawReaderTitleData({id:n.titleId,slug:n.titleSlug});if(!l)return;const o=f(e.reader.group),{id:u,slug:g}=l,h=e.reader?.chapter,p=!!this.context.disableLazyChapters,m=!!this.context.includeHiddenChapters,v=(await this.getChaptersResult(h,{titleInfo:{id:u,slug:g,name:l.name,lang:c},lazy:m||!p,includeHiddenChapters:m,timeoutMs:m?3e3:25e3,includeIndex:!0,basePath:i}))?.chapters,d=f(e.reader.label??"h1|text"),b=d?.toLowerCase().replace(l.name.toLowerCase(),"").trim(),y=this.siteMeta.oneshot?{chap:0}:b?U(b):void 0;if(!y)return;const w=e.reader.prev?this.findAdjacentChapter({spec:e.reader.prev,basePath:i,titleUrl:l.url,titleName:l.name}):void 0,$=e.reader.next?this.findAdjacentChapter({spec:e.reader.next,basePath:i,titleUrl:l.url,titleName:l.name}):void 0,R=u??(()=>{const S=this.spec.reader?.title;if(typeof S=="string"||!S?.id)return;const x=S.sel?document.querySelector(S.sel)??void 0:void 0;if(!(S.sel&&!x))return f(S.id,x)})();return this.finalizeRawReaderData({...y,contentType:r,name:r===H.novel&&d&&d.split(" ").filter(Boolean).length>(d.toLowerCase().includes("vol")?4:2)?d:void 0,lang:c??f(e.reader.lang)?.toLowerCase()??(e.reader.lang?this.siteMeta.defaultLang:void 0),slug:s,basePath:i,group:o??f(e.reader.group),imgs:K(e.reader.imgs),title:{id:R,url:l.url,slug:g,name:l.name,langs:c?[c]:void 0,img:l.img,chapters:v??[],hasMoreChapters:!v?.length&&!m&&!!this.context.disableLazyChapters&&!!(typeof h=="string"||h?.sel)}},{prev:w,next:$})}async getRawChaptersData(){const e=this.siteMeta.chapters;if(e===te.blank)return;const t=this.context.lang,r=e===te.reader,n=!e||e===te.title,s=r?(await this.getRawReaderData())?.title:n?await this.getRawTitleData():void 0,i=await(async()=>{if(s?.chapters.length&&!s.hasMoreChapters)return s.chapters;const l={id:s?.id??this.context.rawId,slug:s?.slug??this.context.titleSlug,name:s?.name,lang:t},o=this.spec.chapters;if(o?.chapter?.json)return await this.getRawChaptersFromJson({chapterSpec:o.chapter,pagingSpec:o.paging,titleInfo:l});const u=o?.chapter??(n?this.spec.title?.chapter:void 0),g=o?.pages;return u?await this.getRawChaptersFromDom({chapterSpec:typeof u=="string"?{sel:u}:u,pagesSpec:g,titleInfo:l}):s?.chapters})();if(!i)return;const c=t?i.filter(l=>!l.lang||l.lang===t):i;return{chapters:c,title:s?{...s,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:c.length}}async getRawChaptersFromDom({chapterSpec:e,pagesSpec:t,titleInfo:r}){const n=k(this.siteMeta.readerBase,r),s=await this.getChaptersResult(e,{titleInfo:r,lazy:!0,includeHiddenChapters:!0,basePath:n});if(!s||!t)return s?.chapters;const i=s.chapters,c=this.context.after??this.context.startAfter;if(c&&i[i.length-1].chap-1<=c.chap)return i;const l=ae(f(t.total));if(l&&s.size>=l)return i;let o=ae(f(t.lastPage));if(o&&o<=1||(o??(o=l?Math.ceil(l/s.size):void 0),!o))return i;let u=i[0]?.slug;const g=async()=>{await X(100);for(let w=0;w<140;w++){await X(50);const $=this.queryChapters({chapterSpec:e,titleInfo:r,basePath:n}),R=$?.[0].slug;if(!(!R||R===u))return u=R,$}};if(!c){let w=1;const $=()=>{if(t.nextBtn){const R=document.querySelector(t.nextBtn);if(R)return R}if(t.sel){const R=w+1,S=Array.from(document.querySelectorAll(t.sel)).find(x=>ae(f(m,x))===R);if(S)return S}};for(let R=2;R<=o;R++){const S=$();if(!S)break;q(S),w++;const x=await g();if(!x)break;i.push(...x)}return this.organizeChapters(i)}const h=c.chap;if(h>=i[i.length-1].chap)return i;if(h<=1&&t.lastBtn){const w=document.querySelector(t.lastBtn);return w?(q(w),await g()):void 0}const p=Array.from({length:o},()=>{});p[0]=i;const m=t?.num??"|text";let v=0,d=0,b=o-1;const y=o-1;for(let w=0;w<y;w++){const $=p[d],R=p[b],S=$?.[0]?.chap??i[0].chap,x=R?.[R.length-1]?.chap??1,ie=1-(h-x+1)/(S-x+1),V=b-d+1;let I=Math.min(b,d+Math.ceil(ie*V));I===b&&R?I--:I===d&&I++;const O=[],we=t.sel?Array.from(document.querySelectorAll(t.sel)):void 0;if(we?.length&&we.length>1&&we.forEach(P=>{const oe=ae(f(m,P));oe&&O.push({el:P,index:oe-1})}),!O.length){if(I>v&&t.nextBtn){const P=document.querySelector(t.nextBtn);P&&O.push({index:++v,el:P})}else if(I<v&&t.prevBtn){const P=document.querySelector(t.prevBtn);P&&O.push({index:--v,el:P})}}if(t.lastBtn&&b===o-1&&!p[p.length-1]){const P=document.querySelector(t.lastBtn);P&&O.push({el:P,index:o-1})}if(!O.length)return;const Z=O.find(P=>P.index===I)??O.sort((P,oe)=>Math.abs(I-P.index)-Math.abs(I-oe.index))[0];if(p[Z.index]||Z.index<=d||Z.index>=b&&R)return $;q(Z.el),v=Z.index;const W=await g();if(!W)return;if(W[0].chap>h&&h>=W[W.length-1].chap)return W;if(p[v]=W,W[0].chap<=h?b=v:d=v,Math.abs(b-d)<=1)return $}}async getRawChaptersFromJson({chapterSpec:e,pagingSpec:t,titleInfo:r}){const n=k(this.siteMeta.readerBase,r),s=await this.queryJsonChaptersResult({chapterSpec:e,pagingSpec:t,titleInfo:r});if(!s)return;const{chapters:i,total:c,fetchUrl:l,limit:o}=s;if(!i.length||o>=c||!t||!t.pageKey&&!t.skipKey)return i;const u=this.context.after??this.context.startAfter;if(u&&i[i.length-1].chap-1<=u.chap)return i;const g=t.limitValue??o,h=Math.ceil(c/g),p=g<o,m=p?1:0,v=l&&t.limitKey&&t.limitValue?l.replace(new RegExp(`${t.limitKey}=\\d+`),`${t.limitKey}=${t.limitValue}`):l??location.href,d=(await Promise.all(Array.from({length:h-m},async(b,y)=>{let w=v;t.pageKey?t.pageKey.split("||").map(R=>R.trim()).forEach(R=>{w=w.replace(new RegExp(`(\\?|&)${R}=\\d+`),S=>`${S[0]}${R}=${y+1+m}`)}):t.skipKey&&t.skipKey.split("||").map(R=>R.trim()).forEach(R=>{w=w.replace(new RegExp(`(\\?|&)${R}=\\d+`),S=>`${S[0]}${R}=${(y+m)*g}`)});const $=await this.fetch(w);return this.parseJsonChapters($,{chapterSpec:e,basePath:n})??[]}))).flat();return d.length?this.organizeChapters(p?d:[...i,...d]):i}async getRawSearchData(){const e=this.spec.search,t=this.context.lang;if(!e)return;const r=typeof e.title=="string"?{sel:e.title}:e.title;if(r.json){const o=this.queryJsonRawReleases(T(r.json),r,t);return o?.length?{rawReleases:o}:void 0}e.delay?await X(e.delay):e.loading&&await X(500);const{chapter:n}=r,s=[],i=e.lazy?e.empty||e.loading?550:100:1;let c=0;const l=await j(i,50,()=>{const o=Array.from(document.querySelectorAll(r.sel));if(o.length||e.empty&&document.querySelector(e.empty)||e.loading&&!document.querySelector(e.loading)&&++c>=3)return o});if(l)return await Promise.all(l.map(async o=>{const u=f(r.url??(o.tagName==="A"?"|attr:href":"a|attr:href"),o),g=L(u),h=f(r.name,o)??f("img|attr:alt",o),{slug:p,id:m}=this.parseTitleUrl(g);if(!g||!h||!p)return;const v=f(r.lang,o);v&&t&&v!==t||s.push({id:m||f(r.id,o),slug:p,name:h,img:f(r.img??"img|[attr:data-src,attr-contain:src]",o),lang:v,chapters:n?this.queryChapters({chapterSpec:typeof n=="string"?{sel:n}:n,root:o,titleInfo:{id:m,slug:p,name:h,lang:v}})??[]:[]})})),{rawReleases:s}}queryJsonRawReleases(e,t,r){const n=re(e),s=typeof t=="string"?{sel:t}:t,i=D(n,s.sel);if(!i?.length||!Array.isArray(i))return;const c=[];return i.forEach(l=>{const o=T(D(l,s.lang))?.toLowerCase();if(o&&r&&o!==r)return;const u=D(l,s.url),{id:g,slug:h}=E(u,y=>({id:void 0,slug:y+""}))??this.parseTitleUrl(L(u)),p=T(D(l,s.name));if(!h||!p)return;const m=g||D(l,s.id),v=E(m,y=>y+"")??T(m),d=s.chapter&&typeof s.chapter!="string"?this.parseJsonChapters(l,{chapterSpec:s.chapter,basePath:k(this.siteMeta.readerBase,{id:v,slug:h,lang:o})}):void 0,b=T(D(l,s.img),y=>{try{return new URL(y,location.origin).href}catch{return}});c.push({id:v,slug:h,name:p,lang:o,img:b,chapters:d??[]})}),c}parseJsonChapters(e,t){return this.parseJsonChaptersResult(e,t)?.chapters}parseJsonChaptersResult(e,t){if(!e)return;const r=D(e,t.chapterSpec.sel);if(!r)return;const n=Array.isArray(r)?r:[r];if(!n?.length)return;const s=[];if(n.forEach(c=>{const l=this.parseJsonChapter(c,t);l&&s.push(l)}),!s.length)return;const i=E(D(e,t.pagingSpec?.lastPage));return{chapters:this.organizeChapters(s),limit:n.length,total:i&&i>1?i*n.length:E(D(e,t.pagingSpec?.total))??n.length}}parseJsonChapter(e,{chapterSpec:t,basePath:r}){const n=D(e,t.label),s=E(n,m=>({vol:void 0,chap:m}))??U(T(n));if(!s)return;const i=D(e,t.url),c=T(i)??E(i,m=>m+""),l=c?this.parseChapterUrl(r,c):void 0,o=s.vol??D(e,t.vol),u=E(o)??T(o,m=>+m),g=D(e,t.id),h=D(e,t.at),p=h?new Date(h).getTime():void 0;return{slug:l?.slug,vol:u||void 0,chap:s.chap,id:T(g)??E(g,m=>m+""),lang:T(D(e,t.lang))?.toLowerCase(),group:T(D(e,t.group)),ts:p||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 c=await this.getFetchResult(this.replaceDynamicParams(t.json,e.titleInfo));if(!c)return;n=c.url,s=c.value}else s=re(T(t.json));const i=this.parseJsonChaptersResult(s,{chapterSpec:t,pagingSpec:r,basePath:k(this.siteMeta.readerBase,e.titleInfo)});return i?{...i,fetchUrl:n}:void 0}replaceDynamicParams(e,t){let r=e;return t.slug&&(r=r.replace("{titleSlug}",t.slug)),t.id&&(r=r.replace("{titleId}",t.id)),t.lang&&(r=r.replace("{lang}",t.lang)),r}queryChapters(e){return this.queryChaptersResult(e)?.chapters}queryChaptersResult({root:e,chapterSpec:t,titleInfo:r,basePath:n,includeIndex:s,group:i,minSize:c}){const l=Array.from((e??document.documentElement)?.querySelectorAll(t.sel));if(c&&l.length<=c)return;const o=(l??[]).map((d,b)=>{const y=d.tagName;return{id:f(t.id,d),url:f(t.url??(y==="A"?"|attr:href":y==="OPTION"?"|attr:value":void 0),d),label:f(t.label??"|text",d)?.toLowerCase(),vol:f(t.vol,d),at:f(t.at,d),lang:f(t.lang,d),group:f(t.group,d),elIndex:b}}),u=r.name?.toLowerCase(),g=u&&!!o[0]?.label?.startsWith(u),h=o.map(({label:d,vol:b})=>{if(!d)return;const y=g?d?.replace(u,"").trim():d,w=U(y);if(!w||w.vol!==void 0||!b)return w;const $=U(b)?.vol;return $?{...w,vol:$}:w}),p=Date.now(),m=[],v=n??k(this.siteMeta.readerBase,r);if(h.forEach((d,b)=>{if(!d)return;const{id:y,url:w,at:$,lang:R,group:S,elIndex:x}=o[b],ie=De($,this.siteMeta.defaultLang),V={...d,id:y,lang:R?.toLowerCase(),group:S,ts:ie?Math.min(p,ie):void 0};s&&(V.elIndex=x);const I=w?this.parseChapterUrl(v,w):void 0;I&&(V.slug=I.slug,I.lang&&(V.lang=I.lang)),m.push(V)}),!!m.length)return{chapters:this.organizeChapters(m,i??this.context.preferGroup),size:m.length}}async getChaptersResult(e,{root:t,titleInfo:r,includeHiddenChapters:n=!1,lazy:s=!0,timeoutMs:i,includeIndex:c,basePath:l,preferGroup:o}){const u=typeof e=="string"?{sel:e}:e,g=u?.sel;if(!u||g===void 0||u.trigger&&!n)return;const h=u?.json?g:this.replaceDynamicParams(g,r);let p;if(n){if(u.trigger){if(p=await z(u.trigger,{timeoutMs:5e3,lazy:!0}),!p)return}else if(u.allBtn){const d=u.allBtn;s?await j(100,100,()=>{const b=pe(d);return b?(p=b,!0):(t??document).querySelector(h)||void 0}):p=pe(d)||void 0}}if(u?.json){p&&q(p);const d=await this.queryJsonChaptersResult({chapterSpec:u,titleInfo:r});return this.dismissHiddenReaderChapters({chapterSpec:u,triggerEl:p,root:t}),d?{chapters:d.chapters,size:d.total}:void 0}const m=p&&u.allBtn?(t??document.documentElement)?.querySelectorAll(h).length:void 0;let v=0;return await j(s?i?i/10:33:1,300,async()=>{v!==1&&v%10<=1&&p&&(q(p),await X(50)),v+=1;const d=this.queryChaptersResult({chapterSpec:{sel:h,...u},basePath:l,titleInfo:r,includeIndex:c,group:o,minSize:m});if(d)return this.dismissHiddenReaderChapters({chapterSpec:u,triggerEl:p,root:t}),d})}dismissHiddenReaderChapters({chapterSpec:e,root:t,triggerEl:r}){const n=(e.dismiss?(t??document.body).querySelector(e.dismiss):void 0)??r;n&&q(n)}parseChapterUrl(e,t){if(t?.startsWith("#")||t?.startsWith("/#")||t?.includes("javascript"))return;if(t?.startsWith("http")&&!t.includes(`//${location.hostname}/`))return{slug:t};const r=L(t);if(r)return this.parseReaderUrl(e,r,t)}async isTitlePage(e){return!(!e||(e.sel||e.lazy)&&!await z(e.sel??e.name?.split("|")?.[0]??"h1",{lazy:!!e.lazy}))}async isReaderPage(e,t){const r=e?.sel;return t&&!r?!1:!r||!!await z(r,{lazy:!!e.lazy})}async getReaderType(e){const t=e.content;return t?vt(t,{paraSel:e?.para,validateImgSize:!this.headless,timeoutMs:15e3,include:this.isGeneric?[H.novel,H.manga]:this.siteMeta.contentTypes??[H.manga]}):e.imgs||e.imgDivs?H.manga:void 0}findAdjacentChapter({spec:e,basePath:t,titleUrl:r,titleName:n}){if(typeof e=="string"){const o=this.getAdjacentChapterSlug(f(e),{titleUrl:r,basePath:t}),u=Ce(o);return u?{...u,slug:o}: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(f(e.url,s),{basePath:t,titleUrl:r}):void 0,c=f(e.label,s)?.toLowerCase().replace(n.toLowerCase(),""),l=U(c)??Ce(i);if(l)return i===void 0?l:{...l,slug:i}}getAdjacentChapterSlug(e,t){if(!e||e.startsWith("#")||e.startsWith("/#")||e.includes("javascript"))return;const r=L(e);if(r&&!(r===location.pathname||t.titleUrl===r||t.titleUrl===`${location.origin}${r}`))return this.parseReaderUrl(t.basePath,r,e).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,c,l,o;for(let u=0;u<s.length&&!(i&&(!r||l)&&!n&&o);u++){const g=s[u];!i&&fe(e,g)?(i=g,c=u):!l&&r&&fe(r,g)?l=g:!o&&n&&fe(n,g)&&(o=g)}return c!==void 0&&(l??(l=s[c+1]),o??(o=s[c-1])),l&&!l.slug&&r?.slug&&(l.slug=r.slug),o&&!o.slug&&n?.slug&&(o.slug=n.slug),i&&!i.slug&&(i.slug=e.slug),{...e,inferVol:i?.inferVol,group:e.group??i?.group,prev:l,next:o}}organizeChapters(e,t){return Y(e,{preferGroup:t??this.context.preferGroup})}getFetchResult(e){return B(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 fe(a,e){return a.slug&&a.slug==e.slug||a.chap===e.chap&&(a.vol===e.vol||a.vol===void 0)}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 Te extends C{async getRawReaderData(){const e=`https://${location.host}/api/`,[t,r]=await Promise.all([B(`${e}manga/info`),B(`${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 c=U(s.readChapter?.title);if(c)return this.finalizeRawReaderData({basePath:i.basePath,slug:i.slug,...c,imgs:s.readChapter.pages.map(l=>new URL(l.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(l=>({slug:l.id,chap:l.number})))}})}}sa(Te,"specId","atsu");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 Pe extends C{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(Pe,"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,pa=(a,e,t)=>ua(a,e+"",t);class Ie extends C{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(".")),c=T(f(".total_pages|text"),o=>+o)||1,l=Array.from({length:c},(o,u)=>`${n}${u+1}${i}`);return{...e,imgs:l}}}pa(Ie,"specId","imhen");var ha=Object.defineProperty,ga=(a,e,t)=>e in a?ha(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,da=(a,e,t)=>ga(a,e+"",t);class Be extends C{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=this.spec.chapters?.chapter;if(!t)return e;const r=await B(`https://api.spacely.tech/manhwa/comixto/info/${e.title.slug}`);if(!r?.value)return e;const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:k(e.basePath,{slug:e.title.slug})});return n?.length?this.finalizeRawReaderData({...e,title:{...e.title,chapters:n}}):e}}da(Be,"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,va=(a,e,t)=>ma(a,e+"",t);class je extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=this.spec.chapters?.chapter;if(t){const r=await B("https://yuzuki.kagane.org/api/v2/series/{id}");if(r){const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:k(this.siteMeta.readerBase,{slug:e.slug})});if(n)return{...e,chapters:n}}}return{...e,hasMoreChapters:!0}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=wa();return{...e,title:{...e.title,img:Ae(e.title.slug),chapters:t}}}async getRawSearchData(){const e=await super.getRawSearchData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,img:Ae(t.slug)}))}}}va(je,"specId","kagane");function Ae(a){return`https://api.${location.host}/api/v1/series/${a}/thumbnail`}function wa(){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),c=G(i.slice(i.indexOf("[{"),i.indexOf('}],\\"cached_at')+2).replaceAll("\\",""));if(!c?.length||!Array.isArray(c))return[];try{const l=[];return c.map(o=>{const u=U(o.name);u&&l.push({...u,slug:o.id,ts:o.created?new Date(o.created).getTime():void 0})}),Y(l)}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 me extends C{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:xe.name,trailing:t.endsWith("/"),defaultLang:f("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:L(e);return Me(t,"/").split("/").slice(0,-1).join("/")}}Ra(me,"specId","madara");function $a(a){if(!a)return;const e=typeof a=="string",t=e?a:a.sel,r=t?document.querySelector(t)??void 0:void 0;return f(e?"|attr:href":a.url,r)}var Sa=Object.defineProperty,xa=(a,e,t)=>e in a?Sa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ca=(a,e,t)=>xa(a,e+"",t);class Ee extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=await Le(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 Le(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(Ee,"specId","mangaball");async function Le(a){const e=await j(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()})})}),Y(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,Ta=(a,e,t)=>Ma(a,e+"",t);const Pa={a:.1,b:.2,c:.3,d:.4};class Ue extends C{parseTitleUrl(e){return{slug:L(e)?.split("/").filter(Boolean)[1]}}async getRawReleases(){const e=re()?.data;if(!e)return;const t=[];return e.forEach(({relationships:r,attributes:n,id:s})=>{const i=r.find(({type:g})=>g==="manga"),c=se(n.volume),l=Q(n.chapter);if(l===void 0)return;const{title:o}=i.attributes,u=o.en??Object.values(o)[0];t.push({slug:i.id,name:u,chapters:[{slug:n.externalUrl||s,vol:c,chap:l,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([B(`${e}{id}`,{timeoutMs:5e3}),B(`${e}{id}/feed`,{timeoutMs:5e3})]);if(!t||!r){const[l,o]=await Promise.all([this.fetch(`${e}{id}`),this.fetch(`${e}{id}/feed`)]);if(!l||!o)return;t={url:"",value:l},r={url:"",value:o}}const n=r.value.data?.map?.(l=>{const{attributes:o,id:u}=l;if(typeof o!="object"||typeof u!="string"||!u)return;const{externalUrl:g,title:h,volume:p,chapter:m,translatedLanguage:v}=o;return{slug:g||u,label:h||void 0,vol:se(p),chap:Q(m),lang:v||"en",ts:new Date(o.readableAt).valueOf()}}).filter(l=>l?.chap!=null)??[],{data:s}=t.value;if(!s)return;const i=Oe({data:s,getTagIdsFromNames:l=>this.getTagIdsFromNames(l)});if(!i)return;const c=this.context.includeImgBytes&&i.img?await he(i.img):void 0;return{...i,imgBytes:c,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([B(`${e}chapter/{id}`),B(`${e}at-home/server/{id}`),B(`${e}manga/{id}/aggregate`)]);if(!t||!r||!n)return;const s=t.value.data,{volume:i,chapter:c,externalUrl:l,translatedLanguage:o}=s.attributes||{},{baseUrl:u,chapter:{data:g,dataSaver:h,hash:p}}=r.value,m=s.relationships?.find?.(x=>x.type==="manga");if(!m)return;const v=Oe({data:m,getTagIdsFromNames:x=>this.getTagIdsFromNames(x)});if(!v||typeof n.value.volumes!="object")return;const d=ze(n.value,{preferGroup:this.context.preferGroup})??[];(typeof c!="string"||c==="none")&&!d.length&&d.push({chap:0,slug:s.id});const b=d.findIndex(x=>x.slug===s.id),y=s.relationships?.find?.(x=>x.type==="scanlation_group"),w=u.endsWith("/")?u:u+"/",$=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),R=`${w}${$?"data-saver":"data"}/`,S=(($?h:g)??[]).map?.(x=>`${R}${p}/${x}`)??[];return{externalUrl:l,vol:se(i),inferVol:d[b]?.inferVol,chap:Q(c)||0,imgs:S,lang:o,slug:s.id,prev:d[b+1],next:d[b-1],basePath:"/chapter/",group:y?.attributes?.name,groupUrl:y?.attributes?.website,isWebtoon:m?.attributes?.tags?.some(x=>x.attributes.name.en==="Long Strip"),title:{...v,chapters:d}}}async getRawChaptersData(){const e=re();if(!e)return;let t;try{t=ze(e,{preferGroup:this.context.preferGroup})}catch{return}if(t)return{chapters:t,lang:this.context.lang??"en",asc:!1,hasMore:!1,total:t.length}}}Ta(Ue,"specId","mangadex");function se(a){const e=Q(a);return e!==0?e:void 0}function Q(a){if(typeof a!="string"||a==="none")return;const e=parseFloat(a);if(e!==e)return;const t=a[a.length-1];return e+(Pa[t]??0)}function ze(a,{preferGroup:e}){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:r,chapters:n})=>{const s=se(r);return Object.values(n).map(({id:i,chapter:c})=>{const l=Q(c);if(l!==void 0)return{vol:s,chap:l,slug:i}})}).flat().filter(Boolean).reverse();return Y(t,{preferGroup:e})}function Oe({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:c,tags:l,contentRating:o}=r;if(typeof s!="object"||i&&!Array.isArray(i))return;const u=Object.values(s)[0];if(!u||typeof u!="string")return;const g=Ia(),h=(i??[])?.map?.(y=>typeof y=="string"?y:void 0).filter(Boolean)??[],p=h.filter(y=>y&&(!g||g.includes(y))),m=c?.map?.(y=>{const[[,w]=[]]=Object.entries(y);return w}),v=n?.find?.(y=>y.type==="cover_art")?.attributes?.fileName,d=v?`https://mangadex.org/covers/${t}/${v}.256.jpg`:void 0,b=(l||[]).map(y=>y?.attributes?.name?.en).concat(o).filter(Boolean);return{url:`${location.origin}/title/${t}`,slug:t,name:u,altNames:m,langs:p.length>0?p:h.length>0?h:["en"],img:d,tags:e(b)}}function Ia(){const a=localStorage.getItem("md");if(!a)return;const e=G(a);if(e)try{const t=e?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var Ba=Object.defineProperty,ja=(a,e,t)=>e in a?Ba(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Aa=(a,e,t)=>ja(a,e+"",t);class qe extends C{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=new URLSearchParams(location.search).get("source"),r=await B(`/api/${t==="user"?"uploads":"chapters"}/${e.slug}/images`);if(!r)return;const n=r.value.images?.map?.(i=>i.url),s=T(ee(r.value,"manga.title"));return{...e,slug:t?`${e.slug}?source=${t}`:e.slug,imgs:n,title:{...e.title,name:s??e.title.name}}}parseJsonChapter(e,t){const r=super.parseJsonChapter(e,t),n=D(e,"source")==="user";if(!(!r||!n))return r.slug+="?source=user",r}}Aa(qe,"specId","mangadot");var Ea=Object.defineProperty,La=(a,e,t)=>e in a?Ea(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ua=(a,e,t)=>La(a,e+"",t);class Ne extends C{async getRawReaderData(){if((await z(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const e=this.context.lang??"en",t=await z(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${e.toUpperCase()}"]`,{lazy:!0,all:!1});if(t)return q(t),await z(`.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}))}}}Ua(Ne,"specId","mangafire");var za=Object.defineProperty,Oa=(a,e,t)=>e in a?za(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ke=(a,e,t)=>Oa(a,typeof e!="symbol"?e+"":e,t);class We extends C{constructor(){super(...arguments),ke(this,"isVariantSite",location.hostname!=="www.mangago.me")}async getRawTitleData(){const e=await super.getRawTitleData();if(!e||!this.isVariantSite)return e;const t=f('a[href*="/status/"]|attr:href|remove:/$|remove:.+/');if(t)return{...e,slug:t}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e||this.spec.reader?.lstripBtn&&document.querySelector(this.spec.reader.lstripBtn))return e;const t=await this.getReaderImgs();return!t?.length||t.length<=5?e:{...e,imgs:t}}getRawReaderTitleData(e){if(!this.isVariantSite)return super.getRawReaderTitleData(e);const t=f('a[href*="/read-manga/"]|attr:href'),r=t?t.split("/read-manga/")[1].split("/")[0]:f('.page script|text|pattern:.+mid="(.+)",.+');if(r)return{slug:r,name:r.replaceAll("_"," ").replaceAll(" s ","'s ").replaceAll(" t ","'t ").split(" ").filter(Boolean).map(n=>`${n[0].toUpperCase()}${n.substring(1)}`).join(" "),url:`https://www.mangago.me/read-manga/${r}`}}parseReaderUrl(e,t,r){if(!this.isVariantSite){const{slug:n,basePath:s}=super.parseReaderUrl(e,t,r),i=n.split("/").filter(Boolean),c=i[i.length-1];return{basePath:s,slug:c.startsWith("pg-")?i.slice(0,-1).join("/"):n}}return{basePath:"",slug:`${location.origin}/${t.split("/").filter(Boolean).slice(0,3).join("/")}${this.siteMeta.trailing?"/":""}`}}async getReaderImgs(){const e=await j(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(",").filter(Boolean)}}ke(We,"specId","mangago");var qa=Object.defineProperty,Na=(a,e,t)=>e in a?qa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ka=(a,e,t)=>Na(a,e+"",t);class _e extends C{parseTitleUrl(e){return{slug:L(e)?.split("/").filter(Boolean)[1]}}}ka(_e,"specId","mangapill");var Wa=Object.defineProperty,_a=(a,e,t)=>e in a?Wa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Fa=(a,e,t)=>_a(a,e+"",t);class Fe extends C{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(Fe,"specId","mangaplus");var Ja=Object.defineProperty,Ha=(a,e,t)=>e in a?Ja(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Va=(a,e,t)=>Ha(a,e+"",t);class Je extends me{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 T(r)??E(r,n=>n+"")}}Va(Je,"specId","mangastream");var Ga=Object.defineProperty,Ka=(a,e,t)=>e in a?Ga(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Xa=(a,e,t)=>Ka(a,e+"",t);class He extends C{async getRawReaderData(){const e=await super.getRawReaderData();return!e||!e.title.chapters.length?e:{...e,prev:e.prev?{...e.prev,slug:ve(e.title.slug,e.prev.slug)}:void 0,next:e.next?{...e.next,slug:ve(e.title.slug,e.next.slug)}:void 0,title:{...e.title,chapters:e.title.chapters.map(t=>({...t,slug:ve(e.title.slug,t.slug)}))}}}}Xa(He,"specId","mangatime");function ve(a,e){if(e)return`/manga/${a}/chapter-${e}`}var Ya=Object.defineProperty,Qa=(a,e,t)=>e in a?Ya(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Za=(a,e,t)=>Qa(a,e+"",t);class Ve extends C{async getRawReaderData(){const e=await super.getRawReaderData();if(e?.imgs?.length!==1)return e;e.slug.includes("//")&&(e.slug=Ge(e.slug).split("/").filter(Boolean)[3]);const t=E(document.querySelector("select.index-page,.page_select select")?.childElementCount,p=>p-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=(+(f(".page_select .select|text")||"1")||1)-1,i=r.replace(n,""),[c,l]=i.split("."),o=c.length,u=+c-s,g=u+t-1,h=[];for(let p=u;p<=g;p++)h.push(`${n}${(p+"").padStart(o,"0")}${l?`.${l}`:""}`);return{...e,imgs:h}}parseChapterUrl(e,t){return this.parseReaderUrl(e,Ge(t),t)}}Za(Ve,"specId","mangatown");function Ge(a){return a.replace(location.origin,"").replace("//","/")}var er=Object.defineProperty,tr=(a,e,t)=>e in a?er(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ar=(a,e,t)=>tr(a,e+"",t);class Ke extends C{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,slug:e.slug.split("/").slice(0,-1).join("/")||e.slug.split("/")[0]}}}ar(Ke,"specId","mangaworld");var rr=Object.defineProperty,nr=(a,e,t)=>e in a?rr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,sr=(a,e,t)=>nr(a,e+"",t);class Xe extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,hasMoreChapters:e.chapters.length===50}}}sr(Xe,"specId","mgeko");var ir=Object.defineProperty,or=(a,e,t)=>e in a?ir(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,lr=(a,e,t)=>or(a,e+"",t);class Ye extends C{async getRawReaderData(){const e=await j(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"}})??[]}})}}lr(Ye,"specId","moins");var cr=Object.defineProperty,ur=(a,e,t)=>e in a?cr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,pr=(a,e,t)=>ur(a,e+"",t);class Qe extends ne{async getRawReleasesData(){}async getRawSearchData(){}async getRawTitleData(){const e=f("h1.title .pretty, h1.title|text"),t=f("#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 he(t):void 0,chapters:[{slug:"1",chap:0}]}}async getRawReaderData(){const e=f("#image-container img|[attr:data-src,attr-contain:src]"),t=ge(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 c=D(i,"title.pretty")||D(i,"title.english")||i?.title?.[Object.keys(i.title)[0]];if(!c)return;const l=T(D(i,"cover.path"),u=>`https://t2.${location.hostname}${u.startsWith("/")?u:`/${u}`}`),o=i.pages.map(u=>{const g=u.path;return`${r}${g.startsWith("/")?g:`/${g}`}`});return{chap:0,slug:"1",basePath:`/g/${n.titleSlug}/`,imgs:o,title:{name:c,slug:n.titleSlug,url:`${location.origin}/g/${n.titleSlug}`,chapters:[{slug:"1",chap:0}],img:l}}}catch{return}}async getRawChaptersData(){const e=await this.getRawTitleData();if(!e)return;const{chapters:t,...r}=e;return{title:{...r,chapters:[]},chapters:t}}}pr(Qe,"specId","nhentai");var hr=Object.defineProperty,gr=(a,e,t)=>e in a?hr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,dr=(a,e,t)=>gr(a,e+"",t);class Ze extends C{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}))}}dr(Ze,"specId","stone");var fr=Object.defineProperty,mr=(a,e,t)=>e in a?fr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,vr=(a,e,t)=>mr(a,e+"",t);class et extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=K(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return tt({...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:{...tt({...e.title,url:t,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}parseTitleUrl(e){if(!e)return{};const t=e.split("/").filter(Boolean);return{slug:t[1]??t[0]}}}vr(et,"specId","tapas");function tt(a,e){const t=wr(e)>20;return{...a,chapters:t?[]:a.chapters,hasMoreChapters:t}}function wr(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var yr=Object.defineProperty,br=(a,e,t)=>e in a?yr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Rr=(a,e,t)=>br(a,e+"",t);class at extends C{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(c=>({...c,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("/"),c=`${i.slice(0,4).join("/")}/list?title_no=${r}`,l=this.queryChapters({chapterSpec:{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+).*"},titleInfo:{id:r,slug:c,name:s}}),o=i[1];return{chap:n,lang:o,slug:`${location.pathname}?title_no=${r}&episode_no=${t}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:c,slug:c,name:s,langs:[o],chapters:(l??[]).map(u=>({...u,lang:o})),hasMoreChapters:!1}}}async getReaderImgs(){const e=K("#_imageList img|[attr:data-url,attr:src]");return e?.length?e:await j(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=ge(r);return{basePath:"",slug:n.pathname+n.search}}return{basePath:"",slug:r}}}Rr(at,"specId","webtoon");const $r=[Te,Pe,Ie,Be,je,me,Ee,Ue,Ne,We,_e,Fe,Je,Xe,qe,He,Ve,Ke,Ye,Qe,Ze,et,at];function rt(a){const e=$r.find(t=>t.specId===a.spec.id)??C;return new e(a)}async function Sr(a){const{spec:e,type:t}=a;let r=a.siteMeta??e?.meta;if(e&&r){a.siteVariant&&(r={...r,...a.siteVariant});const n=t?[t]:nt(r,e.generic);if(!n.length)return;const s=rt({...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]:nt(n.meta,n.generic);if(!s.length)return[];const i=rt({...a,spec:n,siteMeta:n.meta});return s.map(c=>i.getRawPageByType(c,!1,!0))}).flat())}function nt(a,e){if(location.pathname==="/")return a.single?[M.title]:[];const{titleBase:t,readerBase:r}=a,n=location.pathname.split("/").filter(Boolean),s=st(n,r),i=st(n,t);if(s&&i)return[M.reader,M.title];const c=[];return!i&&(s!==!1||e)&&c.push(M.reader),!s&&(i!==!1||e)&&c.push(M.title),!c.length&&e?[M.reader,M.title]:c}function st(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 c=!1;for(let l=0;l<t.length;l++){const o=t[l];if(o[0]!=="{"){if(o!==a[l])return!1;c=!0}}if(c&&i===(s?0:1))return!0}_.PageType=M,_.scrape=Sr}));
1
+ (function(_,J){typeof exports=="object"&&typeof module<"u"?J(exports):typeof define=="function"&&define.amd?define(["exports"],J):(_=typeof globalThis<"u"?globalThis:_||self,J(_._trackkun_={}))})(this,(function(_){"use strict";function J(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 it=/(vol(ume)?|season)(\s*|-|\.)(\d+)/i,ot=/^S([1-9])\s/i,lt=/(ch(ap(t(er)?|\.)?|\.)?|#|episode\.?|capitolo\.?|capitulo\.?|bölüm\.?)(\s*|-)(\d+([-~_,.]\d+)?)/i,ct=/\d+([-~_,.]\d+)?/,ut=/[-~_,]/;function ht(a){const e=a.match(it);if(e)return{volStr:e[0],volValueStr:e[4]};const t=a.match(ot);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}=ht(a),r=e?a.replace(e,"").trim():a,n=r.match(lt)?.[6]??r.match(ct)?.[0];if(!n)return;const s=+n.replace(ut,".");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 pt(){return Math.random().toString(16).slice(2)}async function gt({addListener:a,removeListener:e,transform:t,filter:r,handler:n,onTimeout:s,timeout:i,once:c}){return new Promise(l=>{a(p);const o=()=>c===!0&&e(p),u=i?setTimeout(()=>{o(),l(void 0),s?.()},i):void 0;async function p(h,...g){h=t?t(h):h,h!==void 0&&(!r||r(h,...g))&&(o(),l(h),n?.(h,...g),u&&clearTimeout(u))}})}async function dt(a){return(await gt({addListener:e=>window.addEventListener("message",e),removeListener:e=>window.removeEventListener("message",e),...a}))?.data}async function ft(a){const{receiverWindow:e,timeout:t,targetOrigin:r,event:n,args:s}=a,i={reqId:pt(),event:n,args:s};return(e||window)?.postMessage(i,r??"*"),(await dt({filter:c=>c?.data?.resId===i.reqId,timeout:t??3e4,once:!0}))?.result}function j(a,e){return ft({event:"tk:fetchResult",args:{url:a},timeout:e?.timeoutMs??15e3})}async function A(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 A(a-1,e,t);n(s)},e)})}async function O(a,e,t=0){const r=e.root??document.documentElement,n=e.timeoutMs??1e4;return A(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 q(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 oe(a,e){if(typeof a.checkVisibility=="function")return a.checkVisibility({opacityProperty:!0,visibilityProperty:!1,contentVisibilityAuto:!1});const t=window.getComputedStyle(a);if(t.display==="none"||t.opacity&&parseFloat(t.opacity)<.1)return!1;if(!e)return!0;const r=a.parentElement;return!r||r===e?!0:oe(r,e)}function mt(a,e){return a>=280&&e>=50||a>=160&&e>=280}var F;(function(a){a[a.manga=1]="manga",a[a.novel=2]="novel",a[a.anime=3]="anime"})(F||(F={}));async function vt(a,e){const t=["NAV","ASIDE","FOOTER","HEADER","BR","HR","BUTTON","A"],r="img:not(nav img, header img, footer img, aside img), canvas",n=e?.timeoutMs,s=e?.include,i=e?.paraSel,c=!s||s.includes(F.manga),l=!s||s.includes(F.novel);let o=0;return await A(n/50,50,()=>{const g=u();if(g){if(c&&h(g,e?.validateImgSize))return F.manga;if(l&&o++%3===0&&p(g))return F.novel}});function u(){for(const g of a.split(",")){const m=document.querySelector(g);if(m)return m}}function p(g){const m=[`p:not(${t.map(b=>`${b} p`).join(",")})`,i].filter(Boolean).join(",");if(!g.querySelector(m)&&(!i||!g.matches(i)))return!1;let d=0,v=0,w=0;return y(g);function y(b){const $=b.tagName;if(t.includes($)||!oe(b)||window.getComputedStyle(b).position==="fixed")return!1;if($==="P"||i&&b.matches(i))return d+=b.textContent.split(" ").filter(Boolean).length,v++,w=0,!c&&d>50||v>10&&d>120||v>5&&d>250||d>400;v>0&&++w>4&&(v=0,d=0);const R=Array.from(b.children);for(let x=0;x<R.length;x++)if(y(R[x]))return!0;return!1}}function h(g,m){const d=Array.from(g.querySelectorAll(r));if(m===!1)return d.length>0;const v=Math.min(window.innerWidth*.9,500);let w=0;for(let y=0;y<d.length;y++){const b=d[y];if(!oe(b,g))continue;const{width:$,height:R}=b.getBoundingClientRect();if(mt($,R)&&($>=v||(w+=R,w>=v)))return!0}return!1}}function V(a){if(a)try{return JSON.parse(a)}catch{return}}const ye={text:$e,attr:$t,"attr-contain":xt,value:St,row:Ct,"bg-image":Dt,json:Mt},wt={pattern:Pt,remove:Tt,atob:It,json:xe};function f(a,e){if(a)return be(a,e,bt)}function G(a,e){if(a)return be(a,e,Rt)}function be(a,e,t){if(!a)return;const r=a.split("||").map(n=>n.trim()).filter(Boolean);for(const n of r){const s=yt(n);if(!s)continue;const i=t(e??document.documentElement,s);if(i)return i}}function yt(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(le),transformers:r.map(le)}}function le(a){const e=a.indexOf(":"),t=e!==-1;return{fn:t?a.substring(0,e):a,param:t?a.substring(e+1):""}}function bt(a,e){if(!e.selector)return Re(a,e);const t=Bt(e.selector);for(const r of t){const n=Array.from(a.querySelectorAll(r));for(const s of n){const i=Re(s,e);if(i)return i}}}function Rt(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=ye[s.fn],c=i(n,s.param),l=c?ce(c,e.transformers):void 0;if(l){r.push(l);break}}if(r.length)return r}function Re(a,e){for(const t of e.extractors){const r=ye[t.fn],n=r(a,t.param);if(n)return ce(n,e.transformers)}}function ce(a,e){let t=a;for(const r of e){if(!t)return;const n=wt[r.fn];n&&(t=n(t,r.param)?.trim())}return t}function $e(a){return Array.from(a.childNodes).filter(e=>e.nodeType===3).map(e=>N(e.textContent)).filter(Boolean).join(" ").trim()||N(a.textContent)}function $t(a,e){return N(a.getAttribute(e))}function xt(a,e){let t=a.getAttribute(e);if(!t){const r=a.getAttributeNames().find(n=>n.includes(e));r&&(t=a.getAttribute(r))}return N(t)}function St(a){return a.value}function Ct(a,e){if(!e)return;const t=N(a.textContent)?.toLowerCase(),r=e.toLowerCase();if(!(t!==r&&t!==`${r}:`))return N(a.nextElementSibling?.textContent??a.nextSibling?.textContent)}function Dt(a){const e=getComputedStyle(a).backgroundImage;if(!(!e||!e.startsWith("url(")))return e.slice(5,-2)||void 0}function Mt(a,e){const t=$e(a);if(t)return xe(t,e)}function xe(a,e){const t=Z(V(a),e),r=typeof t;if(r==="string")return N(t)||a;if(r==="number"||r==="boolean")return t+""}function Z(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?Z(i,s):i}catch{return}}function N(a){if(a)return a?.replace(/(\n|\t)/g," ").trim()||void 0}function Pt(a,e){if(e)try{return a.replace(new RegExp(e,"i"),"$1")}catch{}return a}function Tt(a,e){if(e)try{return a.replaceAll(new RegExp(e,"gi"),"")}catch{}return a}function It(a){try{return window.atob(a)}catch{return a}}function Bt(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 c=t.trim();c.length>0&&e.push(c),t=""}else t+=i}const n=t.trim();return n.length>0&&e.push(n),e}function ue(a,e){const t=document;if(a.startsWith("//")){const r=document.evaluate(a,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;return r instanceof HTMLElement?r:void 0}return t.querySelector(a)??void 0}var jt=(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))(jt||{}),At=(a=>(a[a.ok=1]="ok",a[a.hidden=2]="hidden",a[a.deleted=3]="deleted",a))(At||{}),Et=(a=>(a[a.aggregator=0]="aggregator",a[a.scanlator=1]="scanlator",a))(Et||{}),Se=(a=>(a.id="id",a.name="name",a.slug="slug",a))(Se||{}),ee=(a=>(a.blank="about:blank",a.title="meta.title",a.reader="meta.reader",a))(ee||{}),H=(a=>(a[a.manga=1]="manga",a[a.novel=2]="novel",a[a.anime=3]="anime",a))(H||{}),Lt=(a=>(a[a.pending=0]="pending",a[a.completed=1]="completed",a[a.offline=2]="offline",a[a.incompat=3]="incompat",a))(Lt||{});function K(a=0){return new Promise(e=>setTimeout(e,a))}function te(a){if(a)return parseInt(a.replace(/\D*/,""))||void 0}const Ut=/\d+[a-z]+\d+/i,zt=/[a-z]+\d+[a-z]+/i,Ot=/^\d{5,}$/;function Ce(a){if(!a)return;const e=[];a.split(/[-_]/).forEach(r=>{const n=r.split(".").filter(s=>s&&!zt.test(s)&&!Ut.test(s)&&!Ot.test(s)).join(".");n&&e.push(n)});const t=e.join(" ");return z(t)}async function he(a,e){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?.maxWidth??240)),s=r.naturalWidth/n,i=r.naturalHeight/n,c=document.createElement("canvas"),l=c.getContext("2d");c.width=s,c.height=i;const o=/iPad|iPhone|iPod/.test(navigator.userAgent);try{l.drawImage(r,0,0,s,i);const u=((e?.fixCanvas!==!1?qt():void 0)??HTMLCanvasElement.prototype.toDataURL).call(c,o?"image/jpeg":"image/webp",o?.99:.8);t(u.length<1e3?void 0:u.split(",").slice(-1)[0])}catch{t(void 0)}},r.src=a})}function qt(){const a=document.createElement("template");a.innerHTML="<iframe></iframe>";const e=a.content.querySelector("iframe");if(e){e?.style.setProperty("style","none"),document.body.appendChild(e);const t=e?.contentWindow?.HTMLCanvasElement?.prototype?.toDataURL;if(document.body.removeChild(e),t)return t}return HTMLCanvasElement.prototype.toDataURL}async function Nt(a,e=240){const t=await kt(a);if(t)return await new Promise(async r=>{const n=he(t,{maxWidth:e,fixCanvas:!1}),s=setTimeout(()=>r(void 0),100),i=await n;clearTimeout(s),r(i)})}async function kt(a){if(a.startsWith("blob:"))return a;try{const e=await fetch(a);if(e.status>=400)return;const t=await e.blob();return t.size<1e3?void 0:URL.createObjectURL(t)}catch{return}}function D(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=Z(a,n);if(typeof i=="number"||i){if(typeof i!="string")return i;const c=i.replace(/(\n|\t)/g," ").trim();if(c){const l=ce(c,s.map(le));if(l)return l}}}}function ae(a){if(a?.startsWith("window")){const e=a.indexOf(".");return e===-1?void 0:D(window,a.substring(e+1))}return V(a?f(a):document.querySelector("pre")?.textContent)}function L(a,e){if(typeof a=="number")return e?e(a):a}function P(a,e){if(typeof a=="string")return e?e(a):a}function X(a,e){const t=a.map(o=>({...o,vol:o.vol===0?void 0:o.vol}));t.sort((o,u)=>o.vol===void 0||u.vol===void 0?u.chap-o.chap:u.vol-o.vol||u.chap-o.chap);const r={},n={};for(let o=t.length-1;o>=0;o--){const u=t[o],p=u.group??"";r[p]=(r[p]??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={},c=e?.preferGroup,l=o=>o.lang??"";for(const o of t){const u=l(o),p=i[u],h=s[p];if(!(h&&h.chap===o.chap&&(h.vol===o.vol||h.vol===void 0||o.vol===void 0))){i[u]=s.length,s.push(o);continue}if(!c){h.vol===void 0&&o.vol!=null&&(s[p]=o);continue}h.group!==c&&(o.group==c||h.group&&!o.group||r[o.group??""]>r[h.group??""])&&(s[p]=o)}return s}const Wt=/^(a|an|one|last|\d+)\s*([a-z]+)/,_t=/^(\d+)\s*([a-z]+)/,Jt=/^\d+$/,Ft=[{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"}}],Ht=["a","an","one","last"];function De(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(Jt.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(Wt):t.match(_t);if(s){const[,i,c]=s,l=e==="en"&&Ht.includes(i)?1:Number(i);if(isNaN(l))return;const o=Ft.find(u=>c===u.short||u.locales[e]&&c.startsWith(u.locales[e])||c.startsWith(u.locales.en));if(o)return r-l*o.seconds*1e3}}function Vt(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 k(a,{slug:e,id: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 pe(a){if(!a)return;let e=a;e.startsWith("//")&&(e=`https:${e}`);try{return new URL(e)}catch{return}}function U(a){if(!(!a||typeof a!="string"))return a.includes("//")?pe(a)?.pathname:a}function Gt(a,e){const t=[...e],r=[];let n=!1,s=0;const i=Math.min(a.length,100);for(let l=0;l<i;l++){if(s>=10/2){const g=10-r.length;if(g>0){const m=l+g<=a.length?a.slice(l,l+g):t.slice(0,g);r.push(...m)}break}const o=a[l],u=o.id!==void 0,p=t.findIndex(g=>u&&g.id===o.id||g.slug===o.slug||g.name==o.name),h=p===-1?void 0:t.splice(p,1)[0];!h||h.chapters[0]?.chap!==o.chapters[0]?.chap?(n=!0,r.push({...o,changed:!0})):(s++,r.push(o))}if(!n)return{hasMore:!1,rawReleases:[]};if(r.length<=10)return{hasMore:!!a[a.length-1]?.changed,rawReleases:r};const c=[];for(let l=0;l<r.length;l++){const o=r[l];(o.changed||l<10)&&c.push(o)}return{hasMore:e.length<2||e.length-t.length<2,rawReleases:c}}function Kt(a,e){const t={};return a.forEach(r=>{const n=r.chapters.reduce((s,i)=>{const c=i.lang||e||"";return s[c]||(s[c]=[]),s[c].push(i),s},{});Object.entries(n).forEach(([s,i])=>{const c=`${r.slug}:${s}`;t[c]?(t[c].chapters.push(...i),X(t[c].chapters)):t[c]={...r,lang:s===""?void 0:s,chapters:i}})}),Object.values(t)}function Me(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 M=(a=>(a.title="title",a.reader="reader",a.releases="releases",a.chapters="chapters",a.search="search",a))(M||{}),Xt=Object.defineProperty,Yt=(a,e,t)=>e in a?Xt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,E=(a,e,t)=>Yt(a,typeof e!="symbol"?e+"":e,t);class re{constructor(e){E(this,"headless"),E(this,"siteId"),E(this,"spec"),E(this,"siteMeta"),E(this,"tags"),E(this,"context"),E(this,"isGeneric",!1),E(this,"methodsMap",{[M.title]:()=>this.getRawTitleData(),[M.reader]:()=>this.getRawReaderData(),[M.releases]:()=>this.getRawReleasesData(),[M.search]:()=>this.getRawSearchData(),[M.chapters]:()=>this.getRawChaptersData()}),E(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,r=!1){this.isGeneric=r;const n=await this.methodsMap[e](),s=!n&&(e===M.title||e===M.reader)&&await Zt(this.spec);if(!((r||!t)&&!n&&!s))return{type:e,is404:s,specId:this.spec.id,siteName:this.getSiteName(e,n),favUrl:ta(),htmlLang:aa(),url:location.href,data:this.siteMeta.oneshot&&n?this.transformOneshot(e,n):n,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 c=i.includes("{");let l=t;if(l[0]!=="/"&&(l.includes("/")||n&&!c))try{l=new URL(t,location.href).pathname}catch{}if(l.endsWith("/")&&(l=l.slice(0,-1)),c){const o=i.split("/").filter(Boolean),u=l.split("/").filter(Boolean);if(o.length<u.length){const p=u[o.indexOf("{lang}")]?.toLowerCase(),h=u[o.indexOf("{titleId}")],g=u[o.indexOf("{titleSlug}")];if(n)return{basePath:"",slug:l,lang:p,titleId:h,titleSlug:g};if(i=i.replace("{lang}",p).replace("{titleId}",h).replace("{titleSlug}",g),l.startsWith(i))return{basePath:i,slug:l.replace(i,""),lang:p,titleId:h,titleSlug:g}}}else if(!n&&l.startsWith(i))return{basePath:i,slug:l.replace(i,"")};return{basePath:"",slug:l}}parseTitleUrl(e){if(typeof e!="string")return{};const t=U(e);if(t===void 0)return{};if(this.siteMeta.single)return{slug:Me(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=Kt(e.rawReleases,t);if(r.length)return this.context.oldRawReleases?Gt(r,this.context.oldRawReleases):{rawReleases:r,hasMore:!0}}getTagIdsFromNames(e){if(!e?.length)return;const t=this.normalizedTagsMap??(this.normalizedTagsMap=Qt(this.tags)),r=e.map(n=>t[ge(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===M.title)return t.name;if(e===M.reader)return t.title.name}const r=this.spec.name,n=(r&&f(r))??f('meta[property="og:site_name"]|attr:content');return n&&n.length>2?n:void 0}}E(re,"specId"),E(re,"siteId");function Qt(a){const e={};return a.forEach(({id:t,name:r,altNames:n})=>{e[ge(r)]=t,n&&n.forEach(s=>{e[ge(s)]=t})}),e}function ge(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 ea()===404||a[404]&&await O(a[404],{lazy:!0,timeoutMs:5e3})?!0:document.title.toLowerCase().includes("not found")}function ea(){try{return window.performance.getEntries().find(a=>a.entryType==="navigation")?.responseStatus}catch{return}}function ta(){return f('link[rel="icon"][sizes="32x32"],link[rel="icon"][sizes="192x192"],link[rel="apple-touch-icon"]|attr:href || link[rel="icon"]|attr:href')}function aa(){return f("html|attr:lang")||"en"}class C extends re{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 c=this.queryJsonRawReleases(P(e.json),e)?.filter(l=>l.chapters.length);return c?.length?c:void 0}const t=e.chapter,r=await O(e.sel,{lazy:!0,all:!0});if(!r?.length)return;const n=Date.now(),s=r.slice(0,100).map(c=>{const l=f(e.url??(c.tagName==="A"?"|attr:href":"a|attr:href"),c),o=U(l),u=f(e.name,c)??f("img|attr:alt",c),p=f(e.at,c);if(!o||!u)return;const h=De(p,this.siteMeta.defaultLang);return{titleEl:c,id:f(e.id,c),path:o,name:u,lang:f(e.lang,c)?.toLowerCase(),at:h?Math.min(h,n):void 0}}).filter(Boolean);if(!s.length)return;const i=[];return await Promise.all(s.map(async c=>{const{path:l,titleEl:o,lang:u,at:p,...h}=c,{id:g,slug:m}=this.parseTitleUrl(l);if(!m)return;const d=h.id||g,v=this.queryChapters({chapterSpec:t,root:o,titleInfo:{id:d,slug:m,name:c?.name,lang:u}});v&&i.push({slug:m,chapters:u||p?v.map(w=>({...w,elIndex:void 0,lang:w.lang??u,ts:w.ts??p})):v,...h,id:d})})),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||f(e.id),s=typeof e.chapter=="string"?{sel:e.chapter}:e.chapter,i=(await this.getChaptersResult(e.chapter,{lazy:!!this.context.includeHiddenChapters||(s?.lazy??!0),titleInfo:{id:n,slug:r,name:f(e.name??"h1|text")},includeHiddenChapters:this.context.includeHiddenChapters}))?.chapters,c=f(e.name??"h1|text");if(!c)return;const l=await this.getValidImgSrc(e.img,c),o=l&&this.context.includeImgBytes?await Nt(l):void 0,u=this.getFirstChapterUrl(),p=e.firstBtn,h=G(e.tags)?.map(d=>d.split(",")).flat().map(d=>d.trim()).filter(Boolean),g=f(e.type),m=G(e.langs)?.map(d=>d.toLowerCase());return{id:n||f(e.id),url:location.origin+location.pathname,slug:r,name:c,langs:m?.length?m:e.langs&&this.siteMeta.defaultLang?[this.siteMeta.defaultLang]:void 0,tags:this.getTagIdsFromNames([...h??[],...g?[g]:[]]),chapters:i??[],hasMoreChapters:!i?.length&&!e.chapter||(e.hasMore?!!document.querySelector(e.hasMore):void 0)||(!this.context.includeHiddenChapters&&s?.allBtn?!!ue(s.allBtn):void 0),img:l,imgBytes:o,firstUrl:u,firstBtn:!u&&p&&document.querySelector(p)?p: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=f(t),s=f(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=f(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 A(33,30,()=>{const r=f(e)||f(`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})}resolveReaderTitleSpec(){const e=this.spec.reader?.title;return typeof e=="string"?{sel:e}:e}getRawReaderTitleData(e){const t=this.resolveReaderTitleSpec();if(!t)return;const r=t.sel?document.querySelector(t.sel)??void 0:void 0;if(t.sel&&!r)return;const n=f(t.name??"|text",r);if(!n)return;const s=Vt(f(t.img,r));if(e?.slug){let o=this.siteMeta.titleBase;if(e?.id&&(o=o.replace("{id}",e.id)),!o.includes("{"))return o=o.includes("{slug}")?o.replace("{slug}",e.slug):`${o}/${e.slug}`,this.siteMeta.trailing&&!o.endsWith("/")&&(o+="/"),{name:n,img:s,url:new URL(o,location.origin).href,slug:e.slug,id:e.id||f(t.id,r)}}const i=f(t.url??"|attr:href",r),{slug:c,id:l}=this.parseTitleUrl(i);if(!(!n||!i||(this.siteMeta.single?c===void 0:!c)))return{name:n,img:s,url:new URL(i,location.origin).href,slug:c,id:l||f(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)return;const n=this.parseReaderUrl(t.readerBase,location.pathname,location.href),{slug:s,basePath:i,lang:c}=n,l=this.getRawReaderTitleData({id:n.titleId,slug:n.titleSlug});if(!l)return;const o=f(e.reader.group),{id:u,slug:p}=l,h=e.reader?.chapter,g=!!this.context.disableLazyChapters,m=!!this.context.includeHiddenChapters,d=(await this.getChaptersResult(h,{titleInfo:{id:u,slug:p,name:l.name,lang:c},lazy:m||!g,includeHiddenChapters:m,timeoutMs:m?3e3:25e3,includeIndex:!0,basePath:i}))?.chapters,v=f(e.reader.label??"h1|text"),w=v?.toLowerCase().replace(l.name.toLowerCase(),"").trim(),y=this.siteMeta.oneshot?{chap:0}:w?z(w):void 0;if(!y)return;const b=e.reader.prev?this.findAdjacentChapter({spec:e.reader.prev,basePath:i,titleUrl:l.url,titleName:l.name}):void 0,$=e.reader.next?this.findAdjacentChapter({spec:e.reader.next,basePath:i,titleUrl:l.url,titleName:l.name}):void 0,R=u??(()=>{const x=this.spec.reader?.title;if(typeof x=="string"||!x?.id)return;const S=x.sel?document.querySelector(x.sel)??void 0:void 0;if(!(x.sel&&!S))return f(x.id,S)})();return this.finalizeRawReaderData({...y,contentType:r,name:r===H.novel&&v&&v.split(" ").filter(Boolean).length>(v.toLowerCase().includes("vol")?4:2)?v:void 0,lang:c??f(e.reader.lang)?.toLowerCase()??(e.reader.lang?this.siteMeta.defaultLang:void 0),slug:s,basePath:i,group:o??f(e.reader.group),imgs:G(e.reader.imgs),title:{id:R,url:l.url,slug:p,name:l.name,langs:c?[c]:void 0,img:l.img,chapters:d??[],hasMoreChapters:!d?.length&&!m&&!!this.context.disableLazyChapters&&!!(typeof h=="string"||h?.sel)}},{prev:b,next:$})}async getRawChaptersData(){const e=this.siteMeta.chapters;if(e===ee.blank)return;const t=this.context.lang,r=e===ee.reader,n=!e||e===ee.title,s=r?(await this.getRawReaderData())?.title:n?await this.getRawTitleData():void 0,i=await(async()=>{if(s?.chapters.length&&!s.hasMoreChapters)return s.chapters;const l={id:s?.id??this.context.rawId,slug:s?.slug??this.context.titleSlug,name:s?.name,lang:t},o=this.spec.chapters;if(o?.chapter?.json)return await this.getRawChaptersFromJson({chapterSpec:o.chapter,pagingSpec:o.paging,titleInfo:l});const u=o?.chapter??(n?this.spec.title?.chapter:void 0),p=o?.pages;return u?await this.getRawChaptersFromDom({chapterSpec:typeof u=="string"?{sel:u}:u,pagesSpec:p,titleInfo:l}):s?.chapters})();if(!i)return;const c=t?i.filter(l=>!l.lang||l.lang===t):i;return{chapters:c,title:s?{...s,chapters:[]}:await this.getTitleData(this.spec.chapters?.title),hasMore:!1,asc:!1,total:c.length}}async getRawChaptersFromDom({chapterSpec:e,pagesSpec:t,titleInfo:r}){const n=k(this.siteMeta.readerBase,r),s=await this.getChaptersResult(e,{titleInfo:r,lazy:!0,includeHiddenChapters:!0,basePath:n});if(!s||!t)return s?.chapters;const i=s.chapters,c=this.context.after??this.context.startAfter;if(c&&i[i.length-1].chap-1<=c.chap)return i;const l=te(f(t.total));if(l&&s.size>=l)return i;let o=te(f(t.lastPage));if(o&&o<=1||(o??(o=l?Math.ceil(l/s.size):void 0),!o))return i;let u=i[0]?.slug;const p=async()=>{await K(100);for(let b=0;b<140;b++){await K(50);const $=this.queryChapters({chapterSpec:e,titleInfo:r,basePath:n}),R=$?.[0].slug;if(!(!R||R===u))return u=R,$}},h=t?.num??"|text";if(!c){let b=1;const $=()=>{if(t.nextBtn){const R=document.querySelector(t.nextBtn);if(R)return R}if(t.sel){const R=b+1,x=Array.from(document.querySelectorAll(t.sel)).find(S=>te(f(h,S))===R);if(x)return x}};for(let R=2;R<=o;R++){const x=$();if(!x)break;q(x),b++;const S=await p();if(!S)break;i.push(...S)}return this.organizeChapters(i)}const g=c.chap;if(g>=i[i.length-1].chap)return i;if(g<=1&&t.lastBtn){const b=document.querySelector(t.lastBtn);return b?(q(b),await p()):void 0}const m=Array.from({length:o},()=>{});m[0]=i;let d=0,v=0,w=o-1;const y=o-1;for(let b=0;b<y;b++){const $=m[v],R=m[w],x=$?.[0]?.chap??i[0].chap,S=R?.[R.length-1]?.chap??1,ve=1-(g-S+1)/(x-S+1),se=w-v+1;let I=Math.min(w,v+Math.ceil(ve*se));I===w&&R?I--:I===v&&I++;const B=[],we=t.sel?Array.from(document.querySelectorAll(t.sel)):void 0;if(we?.length&&we.length>1&&we.forEach(T=>{const ie=te(f(h,T));ie&&B.push({el:T,index:ie-1})}),!B.length){if(I>d&&t.nextBtn){const T=document.querySelector(t.nextBtn);T&&B.push({index:++d,el:T})}else if(I<d&&t.prevBtn){const T=document.querySelector(t.prevBtn);T&&B.push({index:--d,el:T})}}if(t.lastBtn&&w===o-1&&!m[m.length-1]){const T=document.querySelector(t.lastBtn);T&&B.push({el:T,index:o-1})}if(!B.length)return;const Q=B.find(T=>T.index===I)??B.sort((T,ie)=>Math.abs(I-T.index)-Math.abs(I-ie.index))[0];if(m[Q.index]||Q.index<=v||Q.index>=w&&R)return $;q(Q.el),d=Q.index;const W=await p();if(!W)return;if(W[0].chap>g&&g>=W[W.length-1].chap)return W;if(m[d]=W,W[0].chap<=g?w=d:v=d,Math.abs(w-v)<=1)return $}}async getRawChaptersFromJson({chapterSpec:e,pagingSpec:t,titleInfo:r}){const n=k(this.siteMeta.readerBase,r),s=await this.queryJsonChaptersResult({chapterSpec:e,pagingSpec:t,titleInfo:r});if(!s)return;const{chapters:i,total:c,fetchUrl:l,limit:o}=s;if(!i.length||o>=c||!t||!t.pageKey&&!t.skipKey)return i;const u=this.context.after??this.context.startAfter;if(u&&i[i.length-1].chap-1<=u.chap)return i;const p=t.limitValue??o,h=Math.ceil(c/p),g=p<o,m=g?1:0,d=l&&t.limitKey&&t.limitValue?l.replace(new RegExp(`${t.limitKey}=\\d+`),`${t.limitKey}=${t.limitValue}`):l??location.href,v=(await Promise.all(Array.from({length:h-m},async(w,y)=>{let b=d;t.pageKey?t.pageKey.split("||").map(R=>R.trim()).forEach(R=>{b=b.replace(new RegExp(`(\\?|&)${R}=\\d+`),x=>`${x[0]}${R}=${y+1+m}`)}):t.skipKey&&t.skipKey.split("||").map(R=>R.trim()).forEach(R=>{b=b.replace(new RegExp(`(\\?|&)${R}=\\d+`),x=>`${x[0]}${R}=${(y+m)*p}`)});const $=await this.fetch(b);return this.parseJsonChapters($,{chapterSpec:e,basePath:n})??[]}))).flat();return v.length?this.organizeChapters(g?v:[...i,...v]):i}async getRawSearchData(){const e=this.spec.search,t=this.context.lang;if(!e)return;const r=typeof e.title=="string"?{sel:e.title}:e.title;if(r.json){const o=this.queryJsonRawReleases(P(r.json),r,t);return o?.length?{rawReleases:o}:void 0}e.delay?await K(e.delay):e.loading&&await K(500);const{chapter:n}=r,s=[],i=e.lazy?e.empty||e.loading?550:100:1;let c=0;const l=await A(i,50,()=>{const o=Array.from(document.querySelectorAll(r.sel));if(o.length||e.empty&&document.querySelector(e.empty)||e.loading&&!document.querySelector(e.loading)&&++c>=3)return o});if(l)return await Promise.all(l.map(async o=>{const u=f(r.url??(o.tagName==="A"?"|attr:href":"a|attr:href"),o),p=U(u),h=f(r.name,o)??f("img|attr:alt",o),{slug:g,id:m}=this.parseTitleUrl(p);if(!p||!h||!g)return;const d=f(r.lang,o);d&&t&&d!==t||s.push({id:m||f(r.id,o),slug:g,name:h,img:f(r.img??"img|[attr:data-src,attr-contain:src]",o),lang:d,chapters:n?this.queryChapters({chapterSpec:typeof n=="string"?{sel:n}:n,root:o,titleInfo:{id:m,slug:g,name:h,lang:d}})??[]:[]})})),{rawReleases:s}}queryJsonRawReleases(e,t,r){const n=ae(e),s=typeof t=="string"?{sel:t}:t,i=D(n,s.sel);if(!i?.length||!Array.isArray(i))return;const c=[];return i.forEach(l=>{const o=P(D(l,s.lang))?.toLowerCase();if(o&&r&&o!==r)return;const u=D(l,s.url),{id:p,slug:h}=L(u,y=>({id:void 0,slug:y+""}))??this.parseTitleUrl(U(u)),g=P(D(l,s.name));if(!h||!g)return;const m=p||D(l,s.id),d=L(m,y=>y+"")??P(m),v=s.chapter&&typeof s.chapter!="string"?this.parseJsonChapters(l,{chapterSpec:s.chapter,basePath:k(this.siteMeta.readerBase,{id:d,slug:h,lang:o})}):void 0,w=P(D(l,s.img),y=>{try{return new URL(y,location.origin).href}catch{return}});c.push({id:d,slug:h,name:g,lang:o,img:w,chapters:v??[]})}),c}parseJsonChapters(e,t){return this.parseJsonChaptersResult(e,t)?.chapters}parseJsonChaptersResult(e,t){if(!e)return;const r=D(e,t.chapterSpec.sel);if(!r)return;const n=Array.isArray(r)?r:[r];if(!n?.length)return;const s=[];if(n.forEach(c=>{const l=this.parseJsonChapter(c,t);l&&s.push(l)}),!s.length)return;const i=L(D(e,t.pagingSpec?.lastPage));return{chapters:this.organizeChapters(s),limit:n.length,total:i&&i>1?i*n.length:L(D(e,t.pagingSpec?.total))??n.length}}parseJsonChapter(e,{chapterSpec:t,basePath:r}){const n=D(e,t.label),s=L(n,m=>({vol:void 0,chap:m}))??z(P(n));if(!s)return;const i=D(e,t.url),c=P(i)??L(i,m=>m+""),l=c?this.parseChapterUrl(r,c):void 0,o=s.vol??D(e,t.vol),u=L(o)??P(o,m=>+m),p=D(e,t.id),h=D(e,t.at),g=h?new Date(h).getTime():void 0;return{slug:l?.slug,vol:u||void 0,chap:s.chap,id:P(p)??L(p,m=>m+""),lang:P(D(e,t.lang))?.toLowerCase(),group:P(D(e,t.group)),ts:g||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 c=await this.getFetchResult(this.replaceDynamicParams(t.json,e.titleInfo));if(!c)return;n=c.url,s=c.value}else s=ae(P(t.json));const i=this.parseJsonChaptersResult(s,{chapterSpec:t,pagingSpec:r,basePath:k(this.siteMeta.readerBase,e.titleInfo)});return i?{...i,fetchUrl:n}:void 0}replaceDynamicParams(e,t){let r=e;return t.slug&&(r=r.replace("{titleSlug}",t.slug)),t.id&&(r=r.replace("{titleId}",t.id)),t.lang&&(r=r.replace("{lang}",t.lang)),r}queryChapters(e){return this.queryChaptersResult(e)?.chapters}queryChaptersResult({root:e,chapterSpec:t,titleInfo:r,basePath:n,includeIndex:s,group:i,minSize:c}){const l=this.replaceDynamicParams(t.sel,r),o=Array.from((e??document.documentElement)?.querySelectorAll(l));if(c&&o.length<=c)return;const u=(o??[]).map((w,y)=>{const b=w.tagName;return{id:f(t.id,w),url:f(t.url??(b==="A"?"|attr:href":b==="OPTION"?"|attr:value":void 0),w),label:f(t.label??"|text",w)?.toLowerCase(),vol:f(t.vol,w),at:f(t.at,w),lang:f(t.lang,w),group:f(t.group,w),elIndex:y}}),p=r.name?.toLowerCase(),h=p&&!!u[0]?.label?.startsWith(p),g=u.map(({label:w,vol:y})=>{if(!w)return;const b=h?w?.replace(p,"").trim():w,$=z(b);if(!$||$.vol!==void 0||!y)return $;const R=z(y)?.vol;return R?{...$,vol:R}:$}),m=Date.now(),d=[],v=n??k(this.siteMeta.readerBase,r);if(g.forEach((w,y)=>{if(!w)return;const{id:b,url:$,at:R,lang:x,group:S,elIndex:ve}=u[y],se=De(R,this.siteMeta.defaultLang),I={...w,id:b,lang:x?.toLowerCase(),group:S,ts:se?Math.min(m,se):void 0};s&&(I.elIndex=ve);const B=$?this.parseChapterUrl(v,$):void 0;B&&(I.slug=B.slug,B.lang&&(I.lang=B.lang)),d.push(I)}),!!d.length)return{chapters:this.organizeChapters(d,i??this.context.preferGroup),size:d.length}}async getChaptersResult(e,{root:t,titleInfo:r,includeHiddenChapters:n=!1,lazy:s=!0,timeoutMs:i,includeIndex:c,basePath:l,preferGroup:o}){const u=typeof e=="string"?{sel:e}:e,p=u?.sel;if(!u||p===void 0||u.trigger&&!n)return;let h;if(n){if(u.trigger){if(h=await O(u.trigger,{timeoutMs:5e3,lazy:!0}),!h)return}else if(u.allBtn){const d=u.allBtn;s?await A(100,100,()=>{const v=ue(d);return v?(h=v,!0):(t??document).querySelector(p)||void 0}):h=ue(d)||void 0}}if(u?.json){h&&q(h);const d=await this.queryJsonChaptersResult({chapterSpec:u,titleInfo:r});return this.dismissHiddenReaderChapters({chapterSpec:u,triggerEl:h,root:t}),d?{chapters:d.chapters,size:d.total}:void 0}const g=h&&u.allBtn?(t??document.documentElement)?.querySelectorAll(p).length:void 0;let m=0;return await A(s?i?i/10:33:1,300,async()=>{m!==1&&m%10<=1&&h&&(q(h),await K(50)),m+=1;const d=this.queryChaptersResult({chapterSpec:u,basePath:l,titleInfo:r,includeIndex:c,group:o,minSize:g});if(d)return this.dismissHiddenReaderChapters({chapterSpec:u,triggerEl:h,root:t}),d})}dismissHiddenReaderChapters({chapterSpec:e,root:t,triggerEl:r}){const n=(e.dismiss?(t??document.body).querySelector(e.dismiss):void 0)??r;n&&q(n)}parseChapterUrl(e,t){if(t?.startsWith("#")||t?.startsWith("/#")||t?.includes("javascript"))return;if(t?.startsWith("http")&&!t.includes(`//${location.hostname}/`))return{slug:t};const r=U(t);if(r)return this.parseReaderUrl(e,r,t)}async isTitlePage(e){return!(!e||(e.sel||e.lazy)&&!await O(e.sel??e.name?.split("|")?.[0]??"h1",{lazy:!!e.lazy}))}async isReaderPage(e,t){const r=e?.sel;return t&&!r?!1:!r||!!await O(r,{lazy:!!e.lazy})}async getReaderType(e){const t=e.content;return t?vt(t,{paraSel:e?.para,validateImgSize:!this.headless,timeoutMs:15e3,include:this.isGeneric?[H.novel,H.manga]:this.siteMeta.contentTypes??[H.manga]}):e.imgs||e.imgDivs?H.manga:void 0}findAdjacentChapter({spec:e,basePath:t,titleUrl:r,titleName:n}){if(typeof e=="string"){const o=this.getAdjacentChapterSlug(f(e),{titleUrl:r,basePath:t}),u=Ce(o);return u?{...u,slug:o}: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(f(e.url,s),{basePath:t,titleUrl:r}):void 0,c=f(e.label,s)?.toLowerCase().replace(n.toLowerCase(),""),l=z(c)??Ce(i);if(l)return i===void 0?l:{...l,slug:i}}getAdjacentChapterSlug(e,t){if(!e||e.startsWith("#")||e.startsWith("/#")||e.includes("javascript"))return;const r=U(e);if(r&&!(r===location.pathname||t.titleUrl===r||t.titleUrl===`${location.origin}${r}`))return this.parseReaderUrl(t.basePath,r,e).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,c,l,o;for(let u=0;u<s.length&&!(i&&(!r||l)&&!n&&o);u++){const p=s[u];!i&&de(e,p)?(i=p,c=u):!l&&r&&de(r,p)?l=p:!o&&n&&de(n,p)&&(o=p)}return c!==void 0&&(l??(l=s[c+1]),o??(o=s[c-1])),l&&!l.slug&&r?.slug&&(l.slug=r.slug),o&&!o.slug&&n?.slug&&(o.slug=n.slug),i&&!i.slug&&(i.slug=e.slug),{...e,inferVol:i?.inferVol,group:e.group??i?.group,prev:l,next:o}}organizeChapters(e,t){return X(e,{preferGroup:t??this.context.preferGroup})}getFetchResult(e){return j(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 de(a,e){return a.slug&&a.slug==e.slug||a.chap===e.chap&&(a.vol===e.vol||a.vol===void 0)}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 Pe extends C{async getRawReaderData(){const e=`https://${location.host}/api/`,[t,r]=await Promise.all([j(`${e}manga/info`),j(`${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 c=z(s.readChapter?.title);if(c)return this.finalizeRawReaderData({basePath:i.basePath,slug:i.slug,...c,imgs:s.readChapter.pages.map(l=>new URL(l.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(l=>({slug:l.id,chap:l.number})))}})}}sa(Pe,"specId","atsu");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 Te extends C{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(Te,"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,ha=(a,e,t)=>ua(a,e+"",t);class Ie extends C{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(".")),c=P(f(".total_pages|text"),o=>+o)||1,l=Array.from({length:c},(o,u)=>`${n}${u+1}${i}`);return{...e,imgs:l}}}ha(Ie,"specId","imhen");var pa=Object.defineProperty,ga=(a,e,t)=>e in a?pa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,da=(a,e,t)=>ga(a,e+"",t);class Be extends C{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=this.spec.chapters?.chapter;if(!t)return e;const r=await j(`https://api.spacely.tech/manhwa/comixto/info/${e.title.slug}`);if(!r?.value)return e;const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:k(e.basePath,{slug:e.title.slug})});return n?.length?this.finalizeRawReaderData({...e,title:{...e.title,chapters:n}}):e}}da(Be,"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,va=(a,e,t)=>ma(a,e+"",t);class je extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=this.spec.chapters?.chapter;if(t){const r=await j("https://yuzuki.kagane.org/api/v2/series/{id}");if(r){const n=this.parseJsonChapters(r.value,{chapterSpec:t,basePath:k(this.siteMeta.readerBase,{slug:e.slug})});if(n)return{...e,chapters:n}}}return{...e,hasMoreChapters:!0}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=wa();return{...e,title:{...e.title,img:Ae(e.title.slug),chapters:t}}}async getRawSearchData(){const e=await super.getRawSearchData();if(e)return{...e,rawReleases:e.rawReleases.map(t=>({...t,img:Ae(t.slug)}))}}}va(je,"specId","kagane");function Ae(a){return`https://api.${location.host}/api/v1/series/${a}/thumbnail`}function wa(){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),c=V(i.slice(i.indexOf("[{"),i.indexOf('}],\\"cached_at')+2).replaceAll("\\",""));if(!c?.length||!Array.isArray(c))return[];try{const l=[];return c.map(o=>{const u=z(o.name);u&&l.push({...u,slug:o.id,ts:o.created?new Date(o.created).getTime():void 0})}),X(l)}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 fe extends C{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:Se.name,trailing:t.endsWith("/"),defaultLang:f("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:U(e);return Me(t,"/").split("/").slice(0,-1).join("/")}}Ra(fe,"specId","madara");function $a(a){if(!a)return;const e=typeof a=="string",t=e?a:a.sel,r=t?document.querySelector(t)??void 0:void 0;return f(e?"|attr:href":a.url,r)}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 Ee extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=await Le(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 Le(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(Ee,"specId","mangaball");async function Le(a){const e=await A(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()})})}),X(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 Ta={a:.1,b:.2,c:.3,d:.4};class Ue extends C{parseTitleUrl(e){return{slug:U(e)?.split("/").filter(Boolean)[1]}}async getRawReleases(){const e=ae()?.data;if(!e)return;const t=[];return e.forEach(({relationships:r,attributes:n,id:s})=>{const i=r.find(({type:p})=>p==="manga"),c=ne(n.volume),l=Y(n.chapter);if(l===void 0)return;const{title:o}=i.attributes,u=o.en??Object.values(o)[0];t.push({slug:i.id,name:u,chapters:[{slug:n.externalUrl||s,vol:c,chap:l,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([j(`${e}{id}`,{timeoutMs:5e3}),j(`${e}{id}/feed`,{timeoutMs:5e3})]);if(!t||!r){const[l,o]=await Promise.all([this.fetch(`${e}{id}`),this.fetch(`${e}{id}/feed`)]);if(!l||!o)return;t={url:"",value:l},r={url:"",value:o}}const n=r.value.data?.map?.(l=>{const{attributes:o,id:u}=l;if(typeof o!="object"||typeof u!="string"||!u)return;const{externalUrl:p,title:h,volume:g,chapter:m,translatedLanguage:d}=o;return{slug:p||u,label:h||void 0,vol:ne(g),chap:Y(m),lang:d||"en",ts:new Date(o.readableAt).valueOf()}}).filter(l=>l?.chap!=null)??[],{data:s}=t.value;if(!s)return;const i=Oe({data:s,getTagIdsFromNames:l=>this.getTagIdsFromNames(l)});if(!i)return;const c=this.context.includeImgBytes&&i.img?await he(i.img):void 0;return{...i,imgBytes:c,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([j(`${e}chapter/{id}`),j(`${e}at-home/server/{id}`),j(`${e}manga/{id}/aggregate`)]);if(!t||!r||!n)return;const s=t.value.data,{volume:i,chapter:c,externalUrl:l,translatedLanguage:o}=s.attributes||{},{baseUrl:u,chapter:{data:p,dataSaver:h,hash:g}}=r.value,m=s.relationships?.find?.(S=>S.type==="manga");if(!m)return;const d=Oe({data:m,getTagIdsFromNames:S=>this.getTagIdsFromNames(S)});if(!d||typeof n.value.volumes!="object")return;const v=ze(n.value,{preferGroup:this.context.preferGroup})??[];(typeof c!="string"||c==="none")&&!v.length&&v.push({chap:0,slug:s.id});const w=v.findIndex(S=>S.slug===s.id),y=s.relationships?.find?.(S=>S.type==="scanlation_group"),b=u.endsWith("/")?u:u+"/",$=!!localStorage.getItem("md")?.includes?.('"dataSaver":true'),R=`${b}${$?"data-saver":"data"}/`,x=(($?h:p)??[]).map?.(S=>`${R}${g}/${S}`)??[];return{externalUrl:l,vol:ne(i),inferVol:v[w]?.inferVol,chap:Y(c)||0,imgs:x,lang:o,slug:s.id,prev:v[w+1],next:v[w-1],basePath:"/chapter/",group:y?.attributes?.name,groupUrl:y?.attributes?.website,isWebtoon:m?.attributes?.tags?.some(S=>S.attributes.name.en==="Long Strip"),title:{...d,chapters:v}}}async getRawChaptersData(){const e=ae();if(!e)return;let t;try{t=ze(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(Ue,"specId","mangadex");function ne(a){const e=Y(a);return e!==0?e:void 0}function Y(a){if(typeof a!="string"||a==="none")return;const e=parseFloat(a);if(e!==e)return;const t=a[a.length-1];return e+(Ta[t]??0)}function ze(a,{preferGroup:e}){if(typeof a.volumes!="object")return;const t=Object.values(a.volumes).map(({volume:r,chapters:n})=>{const s=ne(r);return Object.values(n).map(({id:i,chapter:c})=>{const l=Y(c);if(l!==void 0)return{vol:s,chap:l,slug:i}})}).flat().filter(Boolean).reverse();return X(t,{preferGroup:e})}function Oe({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:c,tags:l,contentRating:o}=r;if(typeof s!="object"||i&&!Array.isArray(i))return;const u=Object.values(s)[0];if(!u||typeof u!="string")return;const p=Ia(),h=(i??[])?.map?.(y=>typeof y=="string"?y:void 0).filter(Boolean)??[],g=h.filter(y=>y&&(!p||p.includes(y))),m=c?.map?.(y=>{const[[,b]=[]]=Object.entries(y);return b}),d=n?.find?.(y=>y.type==="cover_art")?.attributes?.fileName,v=d?`https://mangadex.org/covers/${t}/${d}.256.jpg`:void 0,w=(l||[]).map(y=>y?.attributes?.name?.en).concat(o).filter(Boolean);return{url:`${location.origin}/title/${t}`,slug:t,name:u,altNames:m,langs:g.length>0?g:h.length>0?h:["en"],img:v,tags:e(w)}}function Ia(){const a=localStorage.getItem("md");if(!a)return;const e=V(a);if(e)try{const t=e?.userPreferences?.filteredLanguages;return t?.length?t:void 0}catch{return}}var Ba=Object.defineProperty,ja=(a,e,t)=>e in a?Ba(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Aa=(a,e,t)=>ja(a,e+"",t);class qe extends C{async getRawReaderData(){const e=await super.getRawReaderData();if(!e)return;const t=new URLSearchParams(location.search).get("source"),r=await j(`/api/${t==="user"?"uploads":"chapters"}/${e.slug}/images`);if(!r)return;const n=r.value.images?.map?.(i=>i.url),s=P(Z(r.value,"manga.title"));return{...e,slug:t?`${e.slug}?source=${t}`:e.slug,imgs:n,title:{...e.title,name:s??e.title.name}}}parseJsonChapter(e,t){const r=super.parseJsonChapter(e,t),n=D(e,"source")==="user";if(!(!r||!n))return r.slug+="?source=user",r}}Aa(qe,"specId","mangadot");var Ea=Object.defineProperty,La=(a,e,t)=>e in a?Ea(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ua=(a,e,t)=>La(a,e+"",t);class Ne extends C{async getRawReaderData(){if((await O(".current-viewtype",{lazy:!0,all:!1}))?.textContent?.trim().toLowerCase()!=="volume")return await super.getRawReaderData()}async getRawChaptersData(){const e=this.context.lang??"en",t=await O(`.tab-content[data-name="chapter"] a.dropdown-item[data-code="${e.toUpperCase()}"]`,{lazy:!0,all:!1});if(t)return q(t),await O(`.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}))}}}Ua(Ne,"specId","mangafire");var za=Object.defineProperty,Oa=(a,e,t)=>e in a?za(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ke=(a,e,t)=>Oa(a,typeof e!="symbol"?e+"":e,t);class We extends C{constructor(){super(...arguments),ke(this,"isVariantSite",location.hostname!=="www.mangago.me")}async getRawTitleData(){const e=await super.getRawTitleData();if(!e||!this.isVariantSite)return e;const t=f('a[href*="/status/"]|attr:href|remove:/$|remove:.+/');if(t)return{...e,slug:t}}async getRawReaderData(){const e=await super.getRawReaderData();if(!e||this.spec.reader?.lstripBtn&&document.querySelector(this.spec.reader.lstripBtn))return e;const t=await this.getReaderImgs();return!t?.length||t.length<=5?e:{...e,imgs:t}}getRawReaderTitleData(e){if(!this.isVariantSite)return super.getRawReaderTitleData(e);const t=f('a[href*="/read-manga/"]|attr:href'),r=t?t.split("/read-manga/")[1].split("/")[0]:f('.page script|text|pattern:.+mid="(.+)",.+');if(r)return{slug:r,name:r.replaceAll("_"," ").replaceAll(" s ","'s ").replaceAll(" t ","'t ").split(" ").filter(Boolean).map(n=>`${n[0].toUpperCase()}${n.substring(1)}`).join(" "),url:`https://www.mangago.me/read-manga/${r}`}}parseReaderUrl(e,t,r){if(!this.isVariantSite){const{slug:n,basePath:s}=super.parseReaderUrl(e,t,r),i=n.split("/").filter(Boolean),c=i[i.length-1];return{basePath:s,slug:c.startsWith("pg-")?i.slice(0,-1).join("/"):n}}return{basePath:"",slug:`${location.origin}/${t.split("/").filter(Boolean).slice(0,3).join("/")}${this.siteMeta.trailing?"/":""}`}}async getReaderImgs(){const e=await A(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(",").filter(Boolean)}}ke(We,"specId","mangago");var qa=Object.defineProperty,Na=(a,e,t)=>e in a?qa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ka=(a,e,t)=>Na(a,e+"",t);class _e extends C{parseTitleUrl(e){return{slug:U(e)?.split("/").filter(Boolean)[1]}}}ka(_e,"specId","mangapill");var Wa=Object.defineProperty,_a=(a,e,t)=>e in a?Wa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Ja=(a,e,t)=>_a(a,e+"",t);class Je extends C{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]}))}}}Ja(Je,"specId","mangaplus");var Fa=Object.defineProperty,Ha=(a,e,t)=>e in a?Fa(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Va=(a,e,t)=>Ha(a,e+"",t);class Fe extends fe{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 P(r)??L(r,n=>n+"")}}Va(Fe,"specId","mangastream");var Ga=Object.defineProperty,Ka=(a,e,t)=>e in a?Ga(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Xa=(a,e,t)=>Ka(a,e+"",t);class He extends C{async getRawReaderData(){const e=await super.getRawReaderData();return!e||!e.title.chapters.length?e:{...e,prev:e.prev?{...e.prev,slug:me(e.title.slug,e.prev.slug)}:void 0,next:e.next?{...e.next,slug:me(e.title.slug,e.next.slug)}:void 0,title:{...e.title,chapters:e.title.chapters.map(t=>({...t,slug:me(e.title.slug,t.slug)}))}}}}Xa(He,"specId","mangatime");function me(a,e){if(e)return`/manga/${a}/chapter-${e}`}var Ya=Object.defineProperty,Qa=(a,e,t)=>e in a?Ya(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Za=(a,e,t)=>Qa(a,e+"",t);class Ve extends C{async getRawReaderData(){const e=await super.getRawReaderData();if(e?.imgs?.length!==1)return e;e.slug.includes("//")&&(e.slug=Ge(e.slug).split("/").filter(Boolean)[3]);const t=L(document.querySelector("select.index-page,.page_select select")?.childElementCount,g=>g-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=(+(f(".page_select .select|text")||"1")||1)-1,i=r.replace(n,""),[c,l]=i.split("."),o=c.length,u=+c-s,p=u+t-1,h=[];for(let g=u;g<=p;g++)h.push(`${n}${(g+"").padStart(o,"0")}${l?`.${l}`:""}`);return{...e,imgs:h}}parseChapterUrl(e,t){return this.parseReaderUrl(e,Ge(t),t)}}Za(Ve,"specId","mangatown");function Ge(a){return a.replace(location.origin,"").replace("//","/")}var er=Object.defineProperty,tr=(a,e,t)=>e in a?er(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,ar=(a,e,t)=>tr(a,e+"",t);class Ke extends C{async getRawReaderData(){const e=await super.getRawReaderData();return e&&{...e,slug:e.slug.split("/").slice(0,-1).join("/")||e.slug.split("/")[0]}}}ar(Ke,"specId","mangaworld");var rr=Object.defineProperty,nr=(a,e,t)=>e in a?rr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,sr=(a,e,t)=>nr(a,e+"",t);class Xe extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(e)return{...e,hasMoreChapters:e.chapters.length===50}}}sr(Xe,"specId","mgeko");var ir=Object.defineProperty,or=(a,e,t)=>e in a?ir(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,lr=(a,e,t)=>or(a,e+"",t);class Ye extends C{async getRawReaderData(){const e=await A(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"}})??[]}})}}lr(Ye,"specId","moins");var cr=Object.defineProperty,ur=(a,e,t)=>e in a?cr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,hr=(a,e,t)=>ur(a,e+"",t);class Qe extends re{async getRawReleasesData(){}async getRawSearchData(){}async getRawTitleData(){const e=f("h1.title .pretty, h1.title|text"),t=f("#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 he(t):void 0,chapters:[{slug:"1",chap:0}]}}async getRawReaderData(){const e=f("#image-container img|[attr:data-src,attr-contain:src]"),t=pe(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 c=D(i,"title.pretty")||D(i,"title.english")||i?.title?.[Object.keys(i.title)[0]];if(!c)return;const l=P(D(i,"cover.path"),u=>`https://t2.${location.hostname}${u.startsWith("/")?u:`/${u}`}`),o=i.pages.map(u=>{const p=u.path;return`${r}${p.startsWith("/")?p:`/${p}`}`});return{chap:0,slug:"1",basePath:`/g/${n.titleSlug}/`,imgs:o,title:{name:c,slug:n.titleSlug,url:`${location.origin}/g/${n.titleSlug}`,chapters:[{slug:"1",chap:0}],img:l}}}catch{return}}async getRawChaptersData(){const e=await this.getRawTitleData();if(!e)return;const{chapters:t,...r}=e;return{title:{...r,chapters:[]},chapters:t}}}hr(Qe,"specId","nhentai");var pr=Object.defineProperty,gr=(a,e,t)=>e in a?pr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,dr=(a,e,t)=>gr(a,e+"",t);class Ze extends C{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}))}}dr(Ze,"specId","stone");var fr=Object.defineProperty,mr=(a,e,t)=>e in a?fr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,vr=(a,e,t)=>mr(a,e+"",t);class et extends C{async getRawTitleData(){const e=await super.getRawTitleData();if(!e)return;const t=G(".info-detail__row > .genre-btn,.info__right .stats__row:first-child|text")?.map(r=>[r,...r.split(" ")]).flat();return tt({...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:{...tt({...e.title,url:t,tags:[]},".episode-list .js-ep-cnt"),hasMoreChapters:!1}}}parseTitleUrl(e){if(!e)return{};const t=e.split("/").filter(Boolean);return{slug:t[1]??t[0]}}}vr(et,"specId","tapas");function tt(a,e){const t=wr(e)>20;return{...a,chapters:t?[]:a.chapters,hasMoreChapters:t}}function wr(a){return+(document.querySelector(a)?.textContent?.trim().split(" ")[0]||0)}var yr=Object.defineProperty,br=(a,e,t)=>e in a?yr(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,Rr=(a,e,t)=>br(a,e+"",t);class at extends C{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(c=>({...c,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("/"),c=`${i.slice(0,4).join("/")}/list?title_no=${r}`,l=this.queryChapters({chapterSpec:{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+).*"},titleInfo:{id:r,slug:c,name:s}}),o=i[1];return{chap:n,lang:o,slug:`${location.pathname}?title_no=${r}&episode_no=${t}`,basePath:"",imgs:await this.getReaderImgs(),isWebtoon:!0,title:{id:r,url:c,slug:c,name:s,langs:[o],chapters:(l??[]).map(u=>({...u,lang:o})),hasMoreChapters:!1}}}async getReaderImgs(){const e=G("#_imageList img|[attr:data-url,attr:src]");return e?.length?e:await A(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=pe(r);return{basePath:"",slug:n.pathname+n.search}}return{basePath:"",slug:r}}}Rr(at,"specId","webtoon");const $r=[Pe,Te,Ie,Be,je,fe,Ee,Ue,Ne,We,_e,Je,Fe,Xe,qe,He,Ve,Ke,Ye,Qe,Ze,et,at];function rt(a){const e=$r.find(t=>t.specId===a.spec.id)??C;return new e(a)}async function xr(a){const{spec:e,type:t}=a;let r=a.siteMeta??e?.meta;if(e&&r){a.siteVariant&&(r={...r,...a.siteVariant});const n=t?[t]:nt(r,e.generic);if(!n.length)return;const s=rt({...a,spec:e,siteMeta:r});return await J(n.map(i=>s.getRawPageByType(i,n.length===1)))}return await J((a.genericSpecs??[]).map(n=>{if(!n.meta||!n.generic)return[];const s=t?[t]:nt(n.meta,n.generic);if(!s.length)return[];const i=rt({...a,spec:n,siteMeta:n.meta});return s.map(c=>i.getRawPageByType(c,!1,!0))}).flat())}function nt(a,e){if(location.pathname==="/")return a.single?[M.title]:[];const{titleBase:t,readerBase:r}=a,n=location.pathname.split("/").filter(Boolean),s=st(n,r),i=st(n,t);if(s&&i)return[M.reader,M.title];const c=[];return!i&&(s!==!1||e)&&c.push(M.reader),!s&&(i!==!1||e)&&c.push(M.title),!c.length&&e?[M.reader,M.title]:c}function st(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 c=!1;for(let l=0;l<t.length;l++){const o=t[l];if(o[0]!=="{"){if(o!==a[l])return!1;c=!0}}if(c&&i===(s?0:1))return!0}_.PageType=M,_.scrape=xr}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "trackkun-dom",
3
3
  "author": "endyquang",
4
- "version": "2.32.3",
4
+ "version": "2.32.4",
5
5
  "license": "UNLICENSED",
6
6
  "description": "MP DOM parser & configurations",
7
7
  "main": "index.js",