// ==UserScript==
// @name Syntax
// @version 2025.10.02
// @author Canaan HS
// @description Library for simplifying code logic and syntax
// @namespace https://greasyfork.org/users/989635
// @match *://*/*
// @license MPL-2.0
// ==/UserScript==
const Lib=(()=>{function y(a=document,b,c){if(1!==a?.nodeType&&9!==a?.nodeType)return c?[]:void 0;const e=b[0],d=b.slice(1);if(/[ .#:[\]>+~*,()^$=]/.test(d))return c?a.querySelectorAll(b):a.querySelector(b);if(!c&&"#"===e)return 9===a.nodeType?a.getElementById(d):a.querySelector(b);if("."===b[0])return a=a.getElementsByClassName(d),c?[...a]:a[0];a=a.getElementsByTagName(b);return c?[...a]:a[0]}async function U(a,b,c=crypto.randomUUID(),e=!0){if(e||!J.has(c)){var d=document.getElementById(c);d||(d=
document.createElement(a),d.id=c,(a=G.head)?a.appendChild(d):V("head").then(k=>{k.appendChild(d)}));d.textContent+=b;J.add(c)}}async function V(a,b=null,c={}){const e=Array.isArray(a)?W.queryMap:W.queryElement,{raf:d=!1,all:k=!1,timeout:l=8,throttle:h=0,debounce:g=50,visibility:f=!0,subtree:n=!0,childList:m=!0,attributes:r=!0,characterData:p=!1,timeoutResult:u=!1,root:v=document}=c||{};return new Promise((q,t)=>{const w=async function(){let z,x;if(d){let B;const H=()=>{(x=e(a,k))?(cancelAnimationFrame(B),
clearTimeout(z),b?.(x),q(x)):B=requestAnimationFrame(H)};B=requestAnimationFrame(H);z=setTimeout(()=>{cancelAnimationFrame(B);u&&(b?.(x),q(x))},1E3*l)}else{const [B,H]=0<h?[K,h]:[L,g],M=new MutationObserver(B(()=>{if(x=e(a,k))M.disconnect(),clearTimeout(z),b?.(x),q(x)},H));M.observe(v,{subtree:n,childList:m,attributes:r,characterData:p});z=setTimeout(()=>{M.disconnect();u&&(b?.(x),q(x))},1E3*l)}};f&&"hidden"===document.visibilityState?document.addEventListener("visibilitychange",()=>w(),{once:!0}):
w()})}function X(a){if(!a||!a.trim())return 0;if(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(a)){var b=(new Date(a)).getTime();if(!isNaN(b))return Math.floor(b/1E3)}b=new Date;var c=[...a.matchAll(/(\d+)\s*([YyMDdhms])/g)];if(0===c.length)return 0;var e=a=0,d=0,k=0,l=0,h=0;for(const g of c){c=parseInt(g[1],10);const f=g[2];switch(f.toLowerCase()){case "y":a+=c;break;case "d":d+=c;break;case "h":k+=c;break;case "s":h+=c;break;default:"M"===f?e+=c:"m"===f&&(l+=c)}}b.setFullYear(b.getFullYear()+a);
b.setMonth(b.getMonth()+e);b.setDate(b.getDate()+d);b.setHours(b.getHours()+k);b.setMinutes(b.getMinutes()+l);b.setSeconds(b.getSeconds()+h);return Math.floor(b.getTime()/1E3)}function N(a,b,c,{space:e=0,expireStr:d}={}){const k=A(c);c={type:k,data:Y[k]?.(c)??c};(d=X(d))&&(c.expire=d);a(b,JSON.stringify(c,null,e))}function O(a,b,c,{autoRemove:e=!1,removeer:d}={}){a=a(b);if(null==a)return c;try{a=JSON.parse(a);const k=a instanceof Object;if(k&&a.expire&&Date.now()>1E3*a.expire)return d(b),c;let l,
h;k?(l=a.type??"Object",h=a.data??a):(l=A(a),h=a);const g=Z[l]?.(h)??h;e&&d(b);return g}catch{return"object"===typeof a&&G.isEmpty(a)||"string"===typeof a&&a.startsWith("[object")?c:a}}function K(a,b){let c=0;return(...e)=>{const d=Date.now();d-c>=b&&(c=d,a(...e))}}function L(a,b){let c=null;return(...e)=>{clearTimeout(c);c=setTimeout(function(){a(...e)},b)}}function P(a){a=new Blob([a],{type:"application/javascript"});const b=URL.createObjectURL(a),c=new Worker(b),e=c.terminate;c.terminate=function(){e.call(c);
URL.revokeObjectURL(b)};return c}function Q(){function a(h){return new Promise((g,f)=>{const n=new Blob([h],{type:"application/octet-stream"}),m=new FileReader;m.onload=function(r){r=r.target.result;r=r.substring(r.indexOf(",")+1);g(r)};m.onerror=function(r){f(r)};m.readAsDataURL(n)})}function b(h,g,f){return new Promise(n=>{const m=k++;l.set(m,n);c.postMessage({type:h,data:g,level:f,requestId:m},[g.buffer])})}let c=P('importScripts("https://cdnjs.cloudflare.com/ajax/libs/pako/2.1.0/pako.min.js");onmessage = function(e) {const { type, data, level, requestId } = e.data;const bytes = type === "compress"? pako.deflate(data, { level }): pako.inflate(data);postMessage({ data: bytes, requestId: requestId }, [bytes.buffer]);}');
const e=new TextEncoder,d=new TextDecoder;let k=0;const l=new Map;c.onmessage=h=>{const {requestId:g,data:f}=h.data;l.has(g)&&(l.get(g)(f),l.delete(g))};return{async destroyWorker(){c&&(c.terminate(),c=null)},async compress(h,{level:g=5,stringify:f=!0}={}){if(null==h)return h;h=await b("compress",e.encode(f?JSON.stringify(h):h),g);return await a(h)},async decompress(h,g=!0){if(null==h)return h;h=atob(h);const f=h.length,n=new Uint8Array(f);let m;for(m=0;m<f;m++)n[m]=h.charCodeAt(m);h=await b("decompress",
n);h=d.decode(h);return g?JSON.parse(h):h}}}const ea=new DOMParser,A=a=>Object.prototype.toString.call(a).slice(8,-1);[Document.prototype,Element.prototype].forEach(a=>{a.$q=function(b){return y(this,b,!1)};a.$qa=function(b){return y(this,b,!0)}});const R={$text(a=null){return null===a?this?.textContent?.trim():this.textContent=a?.trim()??""},$copy(a=!0){return this.cloneNode(a)},$iHtml(a=null){return null===a?this.innerHTML:this.innerHTML=a},$oHtml(a=null){return null===a?this.outerHTML:this.outerHTML=
a},$iAdjacent(a,b="beforeend"){null!=a&&(1===a.nodeType?this.insertAdjacentElement(b,a):this.insertAdjacentHTML(b,a))},$sAttr(a,b){this.setAttribute(a,b)},$dAttr(a){this.removeAttribute(a)},$gAttr(a){return this.getAttribute(a)},$hAttr(a){return this.hasAttribute(a)},$addClass(...a){this.classList.add(...a)},$delClass(...a){this.classList.remove(...a)},$toggleClass(a,b){this.classList.toggle(a,b)},$replaceClass(a,b){this.classList.replace(a,b)},$hasClass(a){return this.classList.contains(a)}};Object.assign(Node.prototype,
R);const aa=Object.keys(R)[0];Object.defineProperty(Object.prototype,aa,{value:function(a=null){return R[aa].call(this,a)},writable:!0,configurable:!0});const G={$q:document.$q.bind(document),$Q:(a,b)=>y(a,b,!1),$qa:document.$qa.bind(document),$Qa:(a,b)=>y(a,b,!0),html:document.documentElement,get head(){const a=document.head;a&&Object.defineProperty(this,"head",{value:a,writable:!1});return a},get body(){const a=document.body;a&&Object.defineProperty(this,"body",{value:a,writable:!1});return a},
img:document.images,link:document.links,script:document.scripts,style:document.styleSheets,$url:location.href,get url(){return location.href},$origin:location.origin,get origin(){return location.origin},$domain:location.hostname,get domain(){return location.hostname},$lang:navigator.language,get lang(){return navigator.language},$agen:navigator.userAgent,get agen(){return navigator.userAgent},isEmpty(a){for(const b in a)return!1;return!0},createDomFragment:a=>document.createRange().createContextualFragment(a),
get createFragment(){return document.createDocumentFragment()},title:(a=null)=>null===a?document.title:document.title=a,cookie:(a=null)=>null===a?document.cookie:document.cookie=a,createUrl:a=>URL.createObjectURL(a),_on:(a,b)=>{const c={};for(const e of Object.keys(b)){let d=b[e];d&&("function"===typeof d&&(d={listen:d}),d.listen&&(a.addEventListener(e,d.listen,d.add),c[e]=()=>a.removeEventListener(e,d.listen,d.add)))}return c},createElement(a,b,c,e){const [d,k,l={},h="beforeend"]="string"===typeof a?
[void 0,a,b,c]:[a,b,c,e];if(k){var {class:g,text:f="",rows:n,cols:m,on:r={},style:p={},attr:u={},...v}=l;a=document.createElement(k);a.textContent=f;g&&(a.className=g);void 0!==n&&(a.rowSpan=n);void 0!==m&&(a.colSpan=m);Object.assign(a,v);"string"===typeof p?a.style.cssText=p:Object.assign(a.style,p);for(const t in u)a.setAttribute(t,u[t]);var q="object"!==typeof r||this.isEmpty(r)?{}:this._on(a,r);Object.assign(a,{on(t,w,z){this.addEventListener(t,w,z);Object.assign(q,{[t]:()=>this.removeEventListener(t,
w,z)})},off(t){q[t]?.();delete q[t]},offAll(){Object.keys(q).forEach(t=>{q[t]();delete q[t]})}});return 1===d?.nodeType?d.insertAdjacentElement(h,a):a}}},D=new Map,S={log:(...a)=>console.log(...a),warn:(...a)=>console.warn(...a),table:(...a)=>console.table(...a),trace:(...a)=>console.trace(...a),debug:(...a)=>console.debug(...a),error:(...a)=>console.error(...a),count:a=>console.count(a)},J=new Set,I=new Map,W={queryMap:(a,b)=>{a=a.map(c=>y(document,c,b));return b?a.every(c=>0<c.length)&&a:a.every(Boolean)&&
a},queryElement:(a,b)=>{a=y(document,a,b);return(b?0<a.length:a)&&a}},Z={Set:a=>new Set(a),Map:a=>new Map(a),Date:a=>new Date(a)},Y={Set:a=>a instanceof Set?[...a]:a,Map:a=>a instanceof Map?[...a]:a,Date:a=>a instanceof Date?a.toISOString():a},ba=localStorage.removeItem.bind(localStorage),fa=localStorage.setItem.bind(localStorage),ha=localStorage.getItem.bind(localStorage),ca=sessionStorage.removeItem.bind(sessionStorage),ia=sessionStorage.setItem.bind(sessionStorage),ja=sessionStorage.getItem.bind(sessionStorage);
let E=null;const da={Process:(a,b,c=null)=>{a=a[b.toLowerCase()];return"Function"===A(a)?a(c):a?a:"None"}},T={ko:"Korea","ko-KR":"Korea",ja:"Japan","ja-JP":"Japan",ru:"Russia","ru-RU":"Russia",en:"English","en-US":"English","en-GB":"English","en-AU":"English","en-CA":"English","en-NZ":"English","en-IE":"English","en-ZA":"English","en-IN":"English",zh:"Simplified","zh-CN":"Simplified","zh-SG":"Simplified","zh-MY":"Simplified","zh-TW":"Traditional","zh-HK":"Traditional","zh-MO":"Traditional"},C=new Set,
F=new Map;return function(...a){const b={};for(const c of a)c&&Object.defineProperties(b,Object.getOwnPropertyDescriptors(c));return b}({get sX(){return window.scrollX},get sY(){return window.scrollY},get iW(){return window.innerWidth},get iH(){return window.innerHeight},get platform(){let a;a=void 0!==navigator.userAgentData?.mobile?navigator.userAgentData.mobile?"Mobile":"Desktop":window.matchMedia?.("(max-width: 767px), (pointer: coarse)")?.matches?"Mobile":/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?
"Mobile":"Desktop";Object.defineProperty(this,"platform",{value:a,writable:!1});return a}},G,{addStyle:(a,b,c)=>U("style",a,b,c),addScript:(a,b,c)=>U("script",a,b,c),delLocal:a=>ba(a),setLocal:(a,b,c)=>N(fa,a,b,{expireStr:c}),getLocal:(a,b,c)=>O(ha,a,b,{autoRemove:c,removeer:ba}),delSession:a=>ca(a),setSession:(a,b,c)=>N(ia,a,b,{expireStr:c}),getSession:(a,b,c)=>O(ja,a,b,{autoRemove:c,removeer:ca}),delV:a=>GM_deleteValue(a),allV:()=>{var a=GM_listValues();return null==a?null:a},setV:(a,b)=>GM_setValue(a,
b),getV:(a,b)=>{a=GM_getValue(a,b);return null==a?null:a},setJV:(a,b,{space:c,expireStr:e}={})=>N(GM_setValue,a,b,{space:c,expireStr:e}),getJV:(a,b,c)=>O(GM_getValue,a,b,{autoRemove:c,removeer:GM_deleteValue}),eventRecord:D,addRecord:J,observerRecord:I,$type:A,onE:async function(a,b,c,e={},d=null){try{"string"===typeof a&&(a=y(document,a));let k=b.split(/\s*[,|/]\s*/).filter(Boolean);if(0===k.length)throw Error("No event types provided");if(1===k.length)a.addEventListener(b,c,e);else{let l=null;const h=
g=>{clearTimeout(l);l=setTimeout(()=>c(g),15)};k.forEach(g=>a.addEventListener(g,h,e))}d?.(!0)}catch{d?.(!1)}},onEvent:async function(a,b,c,e={}){const {mark:d,...k}=e;"string"===typeof a&&(a=y(document,a));e=d??a;const l=D.get(e);l?.has(b)||(a.addEventListener(b,c,k),l||D.set(e,new Map),D.get(e).set(b,c))},offEvent:async function(a,b,c){"string"===typeof a&&(a=y(document,a));c=c??a;const e=D.get(c)?.get(b);e&&(a.removeEventListener(b,e),D.get(c).delete(b))},onUrlChange:function(a,b=15){function c(n){clearTimeout(d);
l||"urlchange"!==n||(l=!0);d=setTimeout(()=>{l&&e(!1,!0);a({type:n,url:location.href,domain:location.hostname})},Math.max(15,b))}function e(n=!0,m=!1){m&&k||(clearTimeout(d),history.pushState=h,history.replaceState=g,n&&window.removeEventListener("urlchange",f.urlchange),window.removeEventListener("popstate",f.popstate),window.removeEventListener("hashchange",f.hashchange),k=!0)}let d=null,k=!1,l=!1;const h=history.pushState,g=history.replaceState,f={urlchange:()=>c("urlchange"),popstate:()=>c("popstate"),
hashchange:()=>c("hashchange")};window.addEventListener("urlchange",f.urlchange);window.addEventListener("popstate",f.popstate);window.addEventListener("hashchange",f.hashchange);history.pushState=function(){h.apply(this,arguments);c("pushState")};history.replaceState=function(){g.apply(this,arguments);c("replacestate")};return{off:e}},log:function(...a){if(0!==a.length){var b={},c=a,e={dev:!0,group:null,collapsed:!0};if(1<a.length){const f=a[0],n=a.at(-1),m=f?.constructor===Object,r=n?.constructor===
Object;if(r&&!m)b=n,c=a.slice(0,-1);else if(m&&!r)b=f,c=a.slice(1);else if(m&&r){const p=new Set(Object.keys(e));b=Object.keys(f).filter(u=>p.has(u)).length;Object.keys(n).filter(u=>p.has(u)).length>b?(b=n,c=a.slice(0,-1)):(b=f,c=a.slice(1))}}var {dev:d,group:k,collapsed:l}={...e,...b};if(!d||0===c.length)return new Proxy({},{get(){}});var h=f=>{"count"===f?S.count(c[0]):(f=S[f]||S.log,k?(l?console.groupCollapsed(k):console.group(k),f(...c),console.groupEnd()):f(...c))},g=setTimeout(()=>h("log",c));
return new Proxy({},{get(f,n){clearTimeout(g);h(n,c)}})}},$observer:async function(a,b,c={},e=null){const {mark:d="",debounce:k=0,throttle:l=100,subtree:h=!0,childList:g=!0,attributes:f=!0,characterData:n=!1}=c||{};if(d&&(c=I.get(d))){if(c.target===a)return;c.ob.disconnect();I.delete(d)}const [m,r]=0<k?[L,k]:[K,l];c={subtree:h,childList:g,attributes:f,characterData:n};const p=new MutationObserver(m(()=>{b()},r));p.observe(a,c);d&&I.set(d,{target:a,ob:p});e?.({ob:p,op:c})},waitEl:V,openDB:async function(a=
"StorageDB",b=1){return new Promise((c,e)=>{const d=indexedDB.open(a,b);d.onupgradeneeded=k=>{k=k.target.result;k.objectStoreNames.contains("storage")||k.createObjectStore("storage",{keyPath:"key"})};d.onsuccess=k=>{async function l(g){return new Promise((f,n)=>{const m=h.transaction("storage","readwrite").objectStore("storage").delete(g);m.onsuccess=()=>f(m.result);m.onerror=()=>n(m.error)})}const h=k.target.result;c({set:async function(g,f,{space:n=0,compress:m=!0,expireStr:r}={}){const p=A(f),
u={type:p};f=Y[p]?.(f)??f;m?(E??=Q(),u.data=await E.compress(f),u.compressed=!0):u.data=f;if(f=X(r))u.expire=f;return new Promise((v,q)=>{const t=h.transaction("storage","readwrite").objectStore("storage").put({key:g,value:JSON.stringify(u,null,n)});t.onsuccess=()=>v(t.result);t.onerror=()=>q(t.error)})},get:async function(g,f=null,n=!1){const m=h.transaction("storage","readonly").objectStore("storage"),r=await new Promise((p,u)=>{const v=m.get(g);v.onsuccess=()=>p(v.result?.value??null);v.onerror=
()=>u(f)});if(null==r)return f;try{let p=JSON.parse(r);const u=p instanceof Object;if(u&&p.expire&&Date.now()>1E3*p.expire)return l(g),f;let v,q;u?(v=p.type??"Object",q=p.data??p,p.compressed&&(E??=Q(),q=await E.decompress(q))):(v=A(p),q=p);const t=Z[v]?.(q)??q;n&&l(g);return t}catch{return r}},del:l,destroy:function(){h&&(h.close(),indexedDB.deleteDatabase(a),E.destroyWorker(),setTimeout(()=>E=null,100))}})};d.onerror=()=>e(d.error)})},$throttle:K,$debounce:L,scopeParse:function(a,b){if("string"!==
typeof a||""===a.trim())return b;const c=b.length;let e=!1;const d=new Set,k=new Set,l=(g,f,n)=>{const m=g<=f;for(;m?g<=f:g>=f;m?g++:g--)n.add(g)};let h;for(h of a.split(/\s*[\.,|/]\s*/))if(/^(!|-)?\d+(~\d+|-\d+)?$/.test(h)){a=h.slice(1);const g=/^[!-]/.test(h),f=/[~-]/.test(a),[n,m]=g?[k,a]:(e=!0,[d,h]),[r,p]=f?m.split(/-|~/):[m,m];r===p?n.add(+r-1):l(+r-1,+p-1,n)}return(e?[...d]:[...b.keys()]).filter(g=>!k.has(g)&&g<c&&0<=g).sort((g,f)=>g-f).map(g=>b[g])},createWorker:P,formatTemplate:function(a,
b){if("Object"!==A(a))return"Template must be an object";a=Object.fromEntries(Object.entries(a).map(([c,e])=>[c.toLowerCase(),e]));return"String"===A(b)?b.replace(/\{\s*([^}\s]+)\s*\}/g,(c,e)=>da.Process(a,e)):"Object"===A(b)?Object.entries(b).map(([c,e])=>da.Process(a,c,e)):{"Unsupported format":b}},createZip:function(){let a=P('importScripts("https://cdn.jsdelivr.net/npm/[email protected]/umd/index.min.js");onmessage = function(e) {const { filesWithOptions } = e.data;const fileNames = Object.keys(filesWithOptions);let totalSize = 0;let processedSize = 0;fileNames.forEach(name => {totalSize += filesWithOptions[name].data.length;});const chunks = [];const zip = new fflate.Zip((err, data, final) => {if (err) {postMessage({ type: "error", error: err.message });return;}chunks.push(data);if (final) {let size = 0;let offset = 0;chunks.forEach(c => size += c.length);const zipped = new Uint8Array(size);chunks.forEach(c => {zipped.set(c, offset);offset += c.length;});postMessage({ type: "done", data: zipped }, [zipped.buffer]);}});(async () => {for (const name of fileNames) {const { data, level } = filesWithOptions[name];const fileStream = new fflate.ZipPassThrough(name, { level });zip.add(fileStream);fileStream.push(data, true);processedSize += data.length;postMessage({ type: "progress", loaded: processedSize, total: totalSize });} zip.end();})().catch(err => {postMessage({ type: "error", error: err.message });});}');
const b=new Set("mp4 mov avi mkv flv wmv webm mpg mpeg m4v ogv 3gp asf ts vob rm rmvb m2ts f4v mts zip rar 7z gz bz2 .pg jpeg png gif webp bmp tiff tif svg .eic heif raw ico psd mp3 aac flac wav ogg pdf".split(" "));let c={},e=[];return{async destroyWorker(){a&&(a.terminate(),a=null)},async file(d,k){const l=new Promise(async h=>{const g=await k.arrayBuffer();c[d]=new Uint8Array(g);h()});e.push(l);return l},async generateZip(d={},k){await Promise.all(e);return new Promise((l,h)=>{if(G.isEmpty(c))return h("Empty Data Error");
const g={};Object.entries(c).forEach(([f,n])=>{var m=f.split(".").pop().toLowerCase();m=b.has(m)?0:d.level||5;g[f]={data:n,level:m}});a.postMessage({filesWithOptions:g},Object.values(g).map(f=>f.data.buffer));a.onmessage=f=>{f=f.data;"progress"===f.type?k?.(f.loaded/f.total*100):"done"===f.type?(k?.(100),c={},e=[],l(new Blob([f.data],{type:"application/zip"}))):"error"===f.type&&(c={},e=[],h(f.error))}})}}},createStrCompress:Q,createNnetworkObserver:function(a={}){function b(){var q=Date.now();if(q-
u<f)return v;u=q;if(navigator.connection){const {effectiveType:t,saveData:w}=navigator.connection;v="4g"!==t||w?"3g"===t||"4g"===t&&w?"normal":"poor":"good"}else 5<=p.length&&(q=p.reduce((t,w)=>t+w,0)/p.length,v=q<k?"good":q>l?"poor":"normal");return v}let {MAX_Delay:c=2E3,MIN_CONCURRENCY:e=1,MAX_CONCURRENCY:d=16,Good_Network_THRESHOLD:k=500,Poor_Network_THRESHOLD:l=1500,adaptiveFactors:h={good:{delayFactor:.8,threadFactor:1.2},normal:{delayFactor:1,threadFactor:1},poor:{delayFactor:1.5,threadFactor:.7}},
TIME_THRESHOLD:g=1E3,Network_Check_Interval:f=1E4,EMA_ALPHA:n=.3,ADJUSTMENT_FACTOR:m=.25,History_Size:r=10}=a||{},{responseHistory:p=[],lastNetworkCheck:u=0,networkCondition:v="normal"}={};return function(q,t,w=null,z=0){q=Date.now()-q;p.push(q);p.length>r&&p.shift();g=!g||1>=p.length?q:n*q+(1-n)*g;g=Math.max(20,Math.min(2E3,g));const {delayFactor:x,threadFactor:B}=h[b()];q/=g;t=Math.max(z,Math.min(t*(1+(q-1)*m*x),c));return null!==w?[Math.round(t),Math.round(Math.max(e,Math.min(w*(1-(q-1)*m*B),d)))]:
Math.round(t)}},outputTXT:async function(a,b,c=null){try{b="string"===typeof b?b.endsWith(".txt")?b:`${b}.txt`:`Untitled-${crypto.randomUUID().slice(9,23)}.txt`;const e=new Blob([a],{type:"text/plain"}),d=document.createElement("a");d.href=URL.createObjectURL(e);d.download=b;d.click();URL.revokeObjectURL(d.href);d.remove();c?.({State:!0})}catch(e){c?.({State:!1,Info:e})}},outputJson:async function(a,b,c=null){try{a="string"===typeof a?a:JSON.stringify(a,null,4);b="string"===typeof b?b.endsWith(".json")?
b:`${b}.json`:`Untitled-${crypto.randomUUID().slice(9,23)}.json`;const e=new Blob([a],{type:"application/json"}),d=document.createElement("a");d.href=URL.createObjectURL(e);d.download=b;d.click();URL.revokeObjectURL(d.href);d.remove();c?.({State:!0})}catch(e){c?.({State:!1,Info:e})}},runTime:function(a=null,{lable:b="Elapsed Time:",log:c=!0,format:e=!0,style:d="\u001b[1m\u001b[36m%s\u001b[0m"}={}){if(!a)return performance.now();a=e?`${((performance.now()-a)/1E3).toPrecision(3)}s`:performance.now()-
a;return c?console.log(d,`${b} ${a}`):a},getDate:function(a=null){const b=new Date,c={year:b.getFullYear(),month:`${b.getMonth()+1}`.padStart(2,"0"),date:`${b.getDate()}`.padStart(2,"0"),hour:`${b.getHours()}`.padStart(2,"0"),minute:`${b.getMinutes()}`.padStart(2,"0"),second:`${b.getSeconds()}`.padStart(2,"0")};return(e=>e.replace(/{([^}]+)}/g,(d,k)=>c[k]??"Error"))("string"===typeof a?a:"{year}-{month}-{date} {hour}:{minute}:{second}")},translMatcher:function(a,b=navigator.language,c="en-US"){return a[T[b]]??
a[T[c]]??a[T["en-US"]]},regMenu:function(a,b={}){let {name:c="regMenu",index:e=1,reset:d=!1}=b||{};d&&([...C].map(k=>GM_unregisterMenuCommand(k)),C.clear());for(let [k,l]of Object.entries(a))a=`${c}-${e++}`,"function"===typeof l&&(l={func:l}),GM_registerMenuCommand(k,()=>{l.func()},{id:a,title:l.desc,autoClose:l.close,accessKey:l.hotkey}),C.add(a)},unMenu:async function(a){null==a?([...C].map(b=>GM_unregisterMenuCommand(b)),C.clear()):Array.isArray(a)?a.forEach(b=>{C.delete(b)&&GM_unregisterMenuCommand(b)}):
C.delete(a)&&GM_unregisterMenuCommand(a)},storageListen:function(a,b){a.forEach(c=>{if(!F.has(c)){const e=GM_addValueChangeListener(c,function(d,k,l,h){b({key:d,ov:k,nv:l,far:h})});F.set(c,e)}});return{off(c){const e=F.get(c);e&&(GM_removeValueChangeListener(e),F.delete(c))},offAll(){for(const c of F.values())GM_removeValueChangeListener(c);F.clear()}}},sleep:a=>new Promise(b=>setTimeout(b,a)),domParse:a=>ea.parseFromString(a,"text/html"),nameFilter:a=>a.replace(/[\/\?<>\\:\*\|":]/g,"").trim(),getFill:a=>
Math.max(2,`${a}`.length),suffixName(a,b="webp"){try{if(!a)return b;const c=new URL(a,location.href);a=/\.([^.]+)$/;return(c.pathname.match(a)?.[1]||c.search.match(a)?.[1])?.toLowerCase().trim()||b}catch{return b}},mantissa(a,b,c="0",e=null){return e?`${++a}`.padStart(b,c)+`.${this.suffixName(e)}`:`${++a}`.padStart(b,c)}})})();