From 3f508897f1d173c98f7f5c18e61991eb7fd1bc0a Mon Sep 17 00:00:00 2001 From: WOSHIZHAZHA120 Date: Tue, 10 Sep 2024 09:19:35 +0000 Subject: [PATCH] deploy: 77130499efe042ac7e55ffa5feb56b30fd45632e --- .../{index-BknSBDuZ.js => index-FibnRIv-.js} | 66 +++++++++---------- index.html | 2 +- 2 files changed, 34 insertions(+), 34 deletions(-) rename assets/{index-BknSBDuZ.js => index-FibnRIv-.js} (94%) diff --git a/assets/index-BknSBDuZ.js b/assets/index-FibnRIv-.js similarity index 94% rename from assets/index-BknSBDuZ.js rename to assets/index-FibnRIv-.js index 009c4a8..9245c40 100644 --- a/assets/index-BknSBDuZ.js +++ b/assets/index-FibnRIv-.js @@ -1,20 +1,20 @@ var cv=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var GR=cv((dn,un)=>{(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function o(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/** -* @vue/shared v3.5.3 +* @vue/shared v3.5.4 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function vc(e,t){const n=new Set(e.split(","));return o=>n.has(o)}const Ye={},wr=[],Ln=()=>{},dv=()=>!1,rs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),yc=e=>e.startsWith("onUpdate:"),yt=Object.assign,Cc=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},uv=Object.prototype.hasOwnProperty,Ge=(e,t)=>uv.call(e,t),we=Array.isArray,_r=e=>is(e)==="[object Map]",If=e=>is(e)==="[object Set]",Re=e=>typeof e=="function",ft=e=>typeof e=="string",xo=e=>typeof e=="symbol",rt=e=>e!==null&&typeof e=="object",Mf=e=>(rt(e)||Re(e))&&Re(e.then)&&Re(e.catch),Df=Object.prototype.toString,is=e=>Df.call(e),hv=e=>is(e).slice(8,-1),Of=e=>is(e)==="[object Object]",kc=e=>ft(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,di=vc(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),as=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},fv=/-(\w)/g,er=as(e=>e.replace(fv,(t,n)=>n?n.toUpperCase():"")),gv=/\B([A-Z])/g,ir=as(e=>e.replace(gv,"-$1").toLowerCase()),Lf=as(e=>e.charAt(0).toUpperCase()+e.slice(1)),Us=as(e=>e?`on${Lf(e)}`:""),mo=(e,t)=>!Object.is(e,t),Ks=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:n})},mv=e=>{const t=parseFloat(e);return isNaN(t)?e:t},pv=e=>{const t=ft(e)?Number(e):NaN;return isNaN(t)?e:t};let $d;const $f=()=>$d||($d=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ss(e){if(we(e)){const t={};for(let n=0;n{if(n){const o=n.split(vv);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function xc(e){let t="";if(ft(e))t=e;else if(we(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Tn=e=>ft(e)?e:e==null?"":we(e)||rt(e)&&(e.toString===Df||!Re(e.toString))?Nf(e)?Tn(e.value):JSON.stringify(e,zf,2):String(e),zf=(e,t)=>Nf(t)?zf(e,t.value):_r(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r],i)=>(n[qs(o,i)+" =>"]=r,n),{})}:If(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>qs(n))}:xo(t)?qs(t):rt(t)&&!we(t)&&!Of(t)?String(t):t,qs=(e,t="")=>{var n;return xo(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.3 +**//*! #__NO_SIDE_EFFECTS__ */function vc(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Ye={},wr=[],Ln=()=>{},dv=()=>!1,rs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),yc=e=>e.startsWith("onUpdate:"),yt=Object.assign,Cc=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},uv=Object.prototype.hasOwnProperty,Fe=(e,t)=>uv.call(e,t),we=Array.isArray,_r=e=>is(e)==="[object Map]",If=e=>is(e)==="[object Set]",Re=e=>typeof e=="function",ft=e=>typeof e=="string",xo=e=>typeof e=="symbol",rt=e=>e!==null&&typeof e=="object",Mf=e=>(rt(e)||Re(e))&&Re(e.then)&&Re(e.catch),Df=Object.prototype.toString,is=e=>Df.call(e),hv=e=>is(e).slice(8,-1),Of=e=>is(e)==="[object Object]",kc=e=>ft(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,di=vc(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),as=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},fv=/-(\w)/g,er=as(e=>e.replace(fv,(t,n)=>n?n.toUpperCase():"")),gv=/\B([A-Z])/g,ir=as(e=>e.replace(gv,"-$1").toLowerCase()),Lf=as(e=>e.charAt(0).toUpperCase()+e.slice(1)),Us=as(e=>e?`on${Lf(e)}`:""),mo=(e,t)=>!Object.is(e,t),Ks=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:n})},mv=e=>{const t=parseFloat(e);return isNaN(t)?e:t},pv=e=>{const t=ft(e)?Number(e):NaN;return isNaN(t)?e:t};let $d;const $f=()=>$d||($d=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ss(e){if(we(e)){const t={};for(let n=0;n{if(n){const o=n.split(vv);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function xc(e){let t="";if(ft(e))t=e;else if(we(e))for(let n=0;n!!(e&&e.__v_isRef===!0),wn=e=>ft(e)?e:e==null?"":we(e)||rt(e)&&(e.toString===Df||!Re(e.toString))?Nf(e)?wn(e.value):JSON.stringify(e,zf,2):String(e),zf=(e,t)=>Nf(t)?zf(e,t.value):_r(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r],i)=>(n[qs(o,i)+" =>"]=r,n),{})}:If(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>qs(n))}:xo(t)?qs(t):rt(t)&&!we(t)&&!Of(t)?String(t):t,qs=(e,t="")=>{var n;return xo(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.4 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Zt;class Ff{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Zt,!t&&Zt&&(this.index=(Zt.scopes||(Zt.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;let e;for(;ui;){let t=ui;for(ui=void 0;t;){const n=t.nextEffect;if(t.nextEffect=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function Vf(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Uf(e){let t,n=e.depsTail;for(let o=n;o;o=o.prevDep)o.version===-1?(o===n&&(n=o.prevDep),Pc(o),Sv(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0;e.deps=t,e.depsTail=n}function Al(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&Kf(t.dep.computed)===!1||t.dep.version!==t.version)return!0;return!!e._dirty}function Kf(e){if(e.flags&2)return!1;if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ci))return;e.globalVersion=Ci;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&!Al(e)){e.flags&=-3;return}const n=Ze,o=_n;Ze=e,_n=!0;try{Vf(e);const r=e.fn(e._value);(t.version===0||mo(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{Ze=n,_n=o,Uf(e),e.flags&=-3}}function Pc(e){const{dep:t,prevSub:n,nextSub:o}=e;if(n&&(n.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=n,e.nextSub=void 0),t.subs===e&&(t.subs=n),!t.subs&&t.computed){t.computed.flags&=-5;for(let r=t.computed.deps;r;r=r.nextDep)Pc(r)}}function Sv(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let _n=!0;const qf=[];function So(){qf.push(_n),_n=!1}function To(){const e=qf.pop();_n=e===void 0?!0:e}function Bd(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Ze;Ze=void 0;try{t()}finally{Ze=n}}}let Ci=0;class Ac{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0}track(t){if(!Ze||!_n||Ze===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ze)n=this.activeLink={dep:this,sub:Ze,version:this.version,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0,prevActiveLink:void 0},Ze.deps?(n.prevDep=Ze.depsTail,Ze.depsTail.nextDep=n,Ze.depsTail=n):Ze.deps=Ze.depsTail=n,Ze.flags&4&&Xf(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=Ze.depsTail,n.nextDep=void 0,Ze.depsTail.nextDep=n,Ze.depsTail=n,Ze.deps===n&&(Ze.deps=o)}return n}trigger(t){this.version++,Ci++,this.notify(t)}notify(t){wc();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()}finally{_c()}}}function Xf(e){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)Xf(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}const Oa=new WeakMap,qo=Symbol(""),Rl=Symbol(""),ki=Symbol("");function Vt(e,t,n){if(_n&&Ze){let o=Oa.get(e);o||Oa.set(e,o=new Map);let r=o.get(n);r||o.set(n,r=new Ac),r.track()}}function Xn(e,t,n,o,r,i){const a=Oa.get(e);if(!a){Ci++;return}let s=[];if(t==="clear")s=[...a.values()];else{const l=we(e),c=l&&kc(n);if(l&&n==="length"){const d=Number(o);a.forEach((u,h)=>{(h==="length"||h===ki||!xo(h)&&h>=d)&&s.push(u)})}else{const d=u=>u&&s.push(u);switch(n!==void 0&&d(a.get(n)),c&&d(a.get(ki)),t){case"add":l?c&&d(a.get("length")):(d(a.get(qo)),_r(e)&&d(a.get(Rl)));break;case"delete":l||(d(a.get(qo)),_r(e)&&d(a.get(Rl)));break;case"set":_r(e)&&d(a.get(qo));break}}}wc();for(const l of s)l.trigger();_c()}function Tv(e,t){var n;return(n=Oa.get(e))==null?void 0:n.get(t)}function fr(e){const t=$e(e);return t===e?t:(Vt(t,"iterate",ki),Pn(e)?t:t.map(Ft))}function ls(e){return Vt(e=$e(e),"iterate",ki),e}const wv={__proto__:null,[Symbol.iterator](){return Zs(this,Symbol.iterator,Ft)},concat(...e){return fr(this).concat(...e.map(t=>we(t)?fr(t):t))},entries(){return Zs(this,"entries",e=>(e[1]=Ft(e[1]),e))},every(e,t){return Fn(this,"every",e,t,void 0,arguments)},filter(e,t){return Fn(this,"filter",e,t,n=>n.map(Ft),arguments)},find(e,t){return Fn(this,"find",e,t,Ft,arguments)},findIndex(e,t){return Fn(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Fn(this,"findLast",e,t,Ft,arguments)},findLastIndex(e,t){return Fn(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Fn(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ys(this,"includes",e)},indexOf(...e){return Ys(this,"indexOf",e)},join(e){return fr(this).join(e)},lastIndexOf(...e){return Ys(this,"lastIndexOf",e)},map(e,t){return Fn(this,"map",e,t,void 0,arguments)},pop(){return Yr(this,"pop")},push(...e){return Yr(this,"push",e)},reduce(e,...t){return Nd(this,"reduce",e,t)},reduceRight(e,...t){return Nd(this,"reduceRight",e,t)},shift(){return Yr(this,"shift")},some(e,t){return Fn(this,"some",e,t,void 0,arguments)},splice(...e){return Yr(this,"splice",e)},toReversed(){return fr(this).toReversed()},toSorted(e){return fr(this).toSorted(e)},toSpliced(...e){return fr(this).toSpliced(...e)},unshift(...e){return Yr(this,"unshift",e)},values(){return Zs(this,"values",Ft)}};function Zs(e,t,n){const o=ls(e),r=o[t]();return o!==e&&!Pn(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const _v=Array.prototype;function Fn(e,t,n,o,r,i){const a=ls(e),s=a!==e&&!Pn(e),l=a[t];if(l!==_v[t]){const u=l.apply(e,i);return s?Ft(u):u}let c=n;a!==e&&(s?c=function(u,h){return n.call(this,Ft(u),h,e)}:n.length>2&&(c=function(u,h){return n.call(this,u,h,e)}));const d=l.call(a,c,o);return s&&r?r(d):d}function Nd(e,t,n,o){const r=ls(e);let i=n;return r!==e&&(Pn(e)?n.length>3&&(i=function(a,s,l){return n.call(this,a,s,l,e)}):i=function(a,s,l){return n.call(this,a,Ft(s),l,e)}),r[t](i,...o)}function Ys(e,t,n){const o=$e(e);Vt(o,"iterate",ki);const r=o[t](...n);return(r===-1||r===!1)&&Mc(n[0])?(n[0]=$e(n[0]),o[t](...n)):r}function Yr(e,t,n=[]){So(),wc();const o=$e(e)[t].apply(e,n);return _c(),To(),o}const Pv=vc("__proto__,__v_isRef,__isVue"),Zf=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(xo));function Av(e){xo(e)||(e=String(e));const t=$e(this);return Vt(t,"has",e),t.hasOwnProperty(e)}class Yf{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return o===(r?i?Fv:tg:i?eg:Qf).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const a=we(t);if(!r){let l;if(a&&(l=wv[n]))return l;if(n==="hasOwnProperty")return Av}const s=Reflect.get(t,n,ct(t)?t:o);return(xo(n)?Zf.has(n):Pv(n))||(r||Vt(t,"get",n),i)?s:ct(s)?a&&kc(n)?s:s.value:rt(s)?r?hn(s):wo(s):s}}class Jf extends Yf{constructor(t=!1){super(!1,t)}set(t,n,o,r){let i=t[n];if(!this._isShallow){const l=tr(i);if(!Pn(o)&&!tr(o)&&(i=$e(i),o=$e(o)),!we(t)&&ct(i)&&!ct(o))return l?!1:(i.value=o,!0)}const a=we(t)&&kc(n)?Number(n)e,cs=e=>Reflect.getPrototypeOf(e);function ea(e,t,n=!1,o=!1){e=e.__v_raw;const r=$e(e),i=$e(t);n||(mo(t,i)&&Vt(r,"get",t),Vt(r,"get",i));const{has:a}=cs(r),s=o?Rc:n?Dc:Ft;if(a.call(r,t))return s(e.get(t));if(a.call(r,i))return s(e.get(i));e!==r&&e.get(t)}function ta(e,t=!1){const n=this.__v_raw,o=$e(n),r=$e(e);return t||(mo(e,r)&&Vt(o,"has",e),Vt(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function na(e,t=!1){return e=e.__v_raw,!t&&Vt($e(e),"iterate",qo),Reflect.get(e,"size",e)}function zd(e,t=!1){!t&&!Pn(e)&&!tr(e)&&(e=$e(e));const n=$e(this);return cs(n).has.call(n,e)||(n.add(e),Xn(n,"add",e,e)),this}function Fd(e,t,n=!1){!n&&!Pn(t)&&!tr(t)&&(t=$e(t));const o=$e(this),{has:r,get:i}=cs(o);let a=r.call(o,e);a||(e=$e(e),a=r.call(o,e));const s=i.call(o,e);return o.set(e,t),a?mo(t,s)&&Xn(o,"set",e,t):Xn(o,"add",e,t),this}function Wd(e){const t=$e(this),{has:n,get:o}=cs(t);let r=n.call(t,e);r||(e=$e(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&Xn(t,"delete",e,void 0),i}function jd(){const e=$e(this),t=e.size!==0,n=e.clear();return t&&Xn(e,"clear",void 0,void 0),n}function oa(e,t){return function(o,r){const i=this,a=i.__v_raw,s=$e(a),l=t?Rc:e?Dc:Ft;return!e&&Vt(s,"iterate",qo),a.forEach((c,d)=>o.call(r,l(c),l(d),i))}}function ra(e,t,n){return function(...o){const r=this.__v_raw,i=$e(r),a=_r(i),s=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,c=r[e](...o),d=n?Rc:t?Dc:Ft;return!t&&Vt(i,"iterate",l?Rl:qo),{next(){const{value:u,done:h}=c.next();return h?{value:u,done:h}:{value:s?[d(u[0]),d(u[1])]:d(u),done:h}},[Symbol.iterator](){return this}}}}function no(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Dv(){const e={get(i){return ea(this,i)},get size(){return na(this)},has:ta,add:zd,set:Fd,delete:Wd,clear:jd,forEach:oa(!1,!1)},t={get(i){return ea(this,i,!1,!0)},get size(){return na(this)},has:ta,add(i){return zd.call(this,i,!0)},set(i,a){return Fd.call(this,i,a,!0)},delete:Wd,clear:jd,forEach:oa(!1,!0)},n={get(i){return ea(this,i,!0)},get size(){return na(this,!0)},has(i){return ta.call(this,i,!0)},add:no("add"),set:no("set"),delete:no("delete"),clear:no("clear"),forEach:oa(!0,!1)},o={get(i){return ea(this,i,!0,!0)},get size(){return na(this,!0)},has(i){return ta.call(this,i,!0)},add:no("add"),set:no("set"),delete:no("delete"),clear:no("clear"),forEach:oa(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=ra(i,!1,!1),n[i]=ra(i,!0,!1),t[i]=ra(i,!1,!0),o[i]=ra(i,!0,!0)}),[e,n,t,o]}const[Ov,Lv,Hv,$v]=Dv();function Ec(e,t){const n=t?e?$v:Hv:e?Lv:Ov;return(o,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(Ge(n,r)&&r in o?n:o,r,i)}const Bv={get:Ec(!1,!1)},Nv={get:Ec(!1,!0)},zv={get:Ec(!0,!1)},Qf=new WeakMap,eg=new WeakMap,tg=new WeakMap,Fv=new WeakMap;function Wv(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function jv(e){return e.__v_skip||!Object.isExtensible(e)?0:Wv(hv(e))}function wo(e){return tr(e)?e:Ic(e,!1,Ev,Bv,Qf)}function Gv(e){return Ic(e,!1,Mv,Nv,eg)}function hn(e){return Ic(e,!0,Iv,zv,tg)}function Ic(e,t,n,o,r){if(!rt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const a=jv(e);if(a===0)return e;const s=new Proxy(e,a===2?o:n);return r.set(e,s),s}function go(e){return tr(e)?go(e.__v_raw):!!(e&&e.__v_isReactive)}function tr(e){return!!(e&&e.__v_isReadonly)}function Pn(e){return!!(e&&e.__v_isShallow)}function Mc(e){return e?!!e.__v_raw:!1}function $e(e){const t=e&&e.__v_raw;return t?$e(t):e}function xi(e){return Object.isExtensible(e)&&Hf(e,"__v_skip",!0),e}const Ft=e=>rt(e)?wo(e):e,Dc=e=>rt(e)?hn(e):e;function ct(e){return e?e.__v_isRef===!0:!1}function V(e){return ng(e,!1)}function ds(e){return ng(e,!0)}function ng(e,t){return ct(e)?e:new Vv(e,t)}class Vv{constructor(t,n){this.dep=new Ac,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:$e(t),this._value=n?t:Ft(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||Pn(t)||tr(t);t=o?t:$e(t),mo(t,n)&&(this._rawValue=t,this._value=o?t:Ft(t),this.dep.trigger())}}function Ne(e){return ct(e)?e.value:e}const Uv={get:(e,t,n)=>t==="__v_raw"?e:Ne(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return ct(r)&&!ct(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function og(e){return go(e)?e:new Proxy(e,Uv)}function Kv(e){const t=we(e)?new Array(e.length):{};for(const n in e)t[n]=rg(e,n);return t}class qv{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Tv($e(this._object),this._key)}}class Xv{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ve(e,t,n){return ct(e)?e:Re(e)?new Xv(e):rt(e)&&arguments.length>1?rg(e,t,n):V(e)}function rg(e,t,n){const o=e[t];return ct(o)?o:new qv(e,t,n)}class Zv{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Ac(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ci-1,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){Ze!==this&&(this.flags|=16,this.dep.notify())}get value(){const t=this.dep.track();return Kf(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Yv(e,t,n=!1){let o,r;return Re(e)?o=e:(o=e.get,r=e.set),new Zv(o,r,n)}const ia={},La=new WeakMap;let Wo;function Jv(e,t=!1,n=Wo){if(n){let o=La.get(n);o||La.set(n,o=[]),o.push(e)}}function Qv(e,t,n=Ye){const{immediate:o,deep:r,once:i,scheduler:a,augmentJob:s,call:l}=n,c=v=>r?v:Pn(v)||r===!1||r===0?Kn(v,1):Kn(v);let d,u,h,g,f=!1,b=!1;if(ct(e)?(u=()=>e.value,f=Pn(e)):go(e)?(u=()=>c(e),f=!0):we(e)?(b=!0,f=e.some(v=>go(v)||Pn(v)),u=()=>e.map(v=>{if(ct(v))return v.value;if(go(v))return c(v);if(Re(v))return l?l(v,2):v()})):Re(e)?t?u=l?()=>l(e,2):e:u=()=>{if(h){So();try{h()}finally{To()}}const v=Wo;Wo=d;try{return l?l(e,3,[g]):e(g)}finally{Wo=v}}:u=Ln,t&&r){const v=u,x=r===!0?1/0:r;u=()=>Kn(v(),x)}const p=Tc(),m=()=>{d.stop(),p&&Cc(p.effects,d)};if(i)if(t){const v=t;t=(...x)=>{v(...x),m()}}else{const v=u;u=()=>{v(),m()}}let k=b?new Array(e.length).fill(ia):ia;const T=v=>{if(!(!(d.flags&1)||!d.dirty&&!v))if(t){const x=d.run();if(r||f||(b?x.some((A,y)=>mo(A,k[y])):mo(x,k))){h&&h();const A=Wo;Wo=d;try{const y=[x,k===ia?void 0:b&&k[0]===ia?[]:k,g];l?l(t,3,y):t(...y),k=x}finally{Wo=A}}}else d.run()};return s&&s(T),d=new jf(u),d.scheduler=a?()=>a(T,!1):T,g=v=>Jv(v,!1,d),h=d.onStop=()=>{const v=La.get(d);if(v){if(l)l(v,4);else for(const x of v)x();La.delete(d)}},t?o?T(!0):k=d.run():a?a(T.bind(null,!0),!0):d.run(),m.pause=d.pause.bind(d),m.resume=d.resume.bind(d),m.stop=m,m}function Kn(e,t=1/0,n){if(t<=0||!rt(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ct(e))Kn(e.value,t,n);else if(we(e))for(let o=0;o{Kn(o,t,n)});else if(Of(e)){for(const o in e)Kn(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&Kn(e[o],t,n)}return e}/** -* @vue/runtime-core v3.5.3 +**/let Zt;class Ff{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Zt,!t&&Zt&&(this.index=(Zt.scopes||(Zt.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;let e;for(;ui;){let t=ui;for(ui=void 0;t;){const n=t.nextEffect;if(t.nextEffect=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=n}}if(e)throw e}function Vf(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Uf(e){let t,n=e.depsTail;for(let o=n;o;o=o.prevDep)o.version===-1?(o===n&&(n=o.prevDep),Pc(o),Sv(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0;e.deps=t,e.depsTail=n}function Al(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&Kf(t.dep.computed)||t.dep.version!==t.version)return!0;return!!e._dirty}function Kf(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ci))return;e.globalVersion=Ci;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&!Al(e)){e.flags&=-3;return}const n=Ze,o=Pn;Ze=e,Pn=!0;try{Vf(e);const r=e.fn(e._value);(t.version===0||mo(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{Ze=n,Pn=o,Uf(e),e.flags&=-3}}function Pc(e){const{dep:t,prevSub:n,nextSub:o}=e;if(n&&(n.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=n,e.nextSub=void 0),t.subs===e&&(t.subs=n),!t.subs&&t.computed){t.computed.flags&=-5;for(let r=t.computed.deps;r;r=r.nextDep)Pc(r)}}function Sv(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Pn=!0;const qf=[];function So(){qf.push(Pn),Pn=!1}function To(){const e=qf.pop();Pn=e===void 0?!0:e}function Bd(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Ze;Ze=void 0;try{t()}finally{Ze=n}}}let Ci=0;class Ac{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0}track(t){if(!Ze||!Pn||Ze===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ze)n=this.activeLink={dep:this,sub:Ze,version:this.version,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0,prevActiveLink:void 0},Ze.deps?(n.prevDep=Ze.depsTail,Ze.depsTail.nextDep=n,Ze.depsTail=n):Ze.deps=Ze.depsTail=n,Ze.flags&4&&Xf(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const o=n.nextDep;o.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=o),n.prevDep=Ze.depsTail,n.nextDep=void 0,Ze.depsTail.nextDep=n,Ze.depsTail=n,Ze.deps===n&&(Ze.deps=o)}return n}trigger(t){this.version++,Ci++,this.notify(t)}notify(t){wc();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()}finally{_c()}}}function Xf(e){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)Xf(o)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}const Oa=new WeakMap,qo=Symbol(""),Rl=Symbol(""),ki=Symbol("");function Vt(e,t,n){if(Pn&&Ze){let o=Oa.get(e);o||Oa.set(e,o=new Map);let r=o.get(n);r||o.set(n,r=new Ac),r.track()}}function Xn(e,t,n,o,r,i){const a=Oa.get(e);if(!a){Ci++;return}const s=l=>{l&&l.trigger()};if(wc(),t==="clear")a.forEach(s);else{const l=we(e),c=l&&kc(n);if(l&&n==="length"){const d=Number(o);a.forEach((u,h)=>{(h==="length"||h===ki||!xo(h)&&h>=d)&&s(u)})}else switch(n!==void 0&&s(a.get(n)),c&&s(a.get(ki)),t){case"add":l?c&&s(a.get("length")):(s(a.get(qo)),_r(e)&&s(a.get(Rl)));break;case"delete":l||(s(a.get(qo)),_r(e)&&s(a.get(Rl)));break;case"set":_r(e)&&s(a.get(qo));break}}_c()}function Tv(e,t){var n;return(n=Oa.get(e))==null?void 0:n.get(t)}function fr(e){const t=$e(e);return t===e?t:(Vt(t,"iterate",ki),bn(e)?t:t.map(Ft))}function ls(e){return Vt(e=$e(e),"iterate",ki),e}const wv={__proto__:null,[Symbol.iterator](){return Zs(this,Symbol.iterator,Ft)},concat(...e){return fr(this).concat(...e.map(t=>we(t)?fr(t):t))},entries(){return Zs(this,"entries",e=>(e[1]=Ft(e[1]),e))},every(e,t){return Fn(this,"every",e,t,void 0,arguments)},filter(e,t){return Fn(this,"filter",e,t,n=>n.map(Ft),arguments)},find(e,t){return Fn(this,"find",e,t,Ft,arguments)},findIndex(e,t){return Fn(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Fn(this,"findLast",e,t,Ft,arguments)},findLastIndex(e,t){return Fn(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Fn(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ys(this,"includes",e)},indexOf(...e){return Ys(this,"indexOf",e)},join(e){return fr(this).join(e)},lastIndexOf(...e){return Ys(this,"lastIndexOf",e)},map(e,t){return Fn(this,"map",e,t,void 0,arguments)},pop(){return Yr(this,"pop")},push(...e){return Yr(this,"push",e)},reduce(e,...t){return Nd(this,"reduce",e,t)},reduceRight(e,...t){return Nd(this,"reduceRight",e,t)},shift(){return Yr(this,"shift")},some(e,t){return Fn(this,"some",e,t,void 0,arguments)},splice(...e){return Yr(this,"splice",e)},toReversed(){return fr(this).toReversed()},toSorted(e){return fr(this).toSorted(e)},toSpliced(...e){return fr(this).toSpliced(...e)},unshift(...e){return Yr(this,"unshift",e)},values(){return Zs(this,"values",Ft)}};function Zs(e,t,n){const o=ls(e),r=o[t]();return o!==e&&!bn(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const _v=Array.prototype;function Fn(e,t,n,o,r,i){const a=ls(e),s=a!==e&&!bn(e),l=a[t];if(l!==_v[t]){const u=l.apply(e,i);return s?Ft(u):u}let c=n;a!==e&&(s?c=function(u,h){return n.call(this,Ft(u),h,e)}:n.length>2&&(c=function(u,h){return n.call(this,u,h,e)}));const d=l.call(a,c,o);return s&&r?r(d):d}function Nd(e,t,n,o){const r=ls(e);let i=n;return r!==e&&(bn(e)?n.length>3&&(i=function(a,s,l){return n.call(this,a,s,l,e)}):i=function(a,s,l){return n.call(this,a,Ft(s),l,e)}),r[t](i,...o)}function Ys(e,t,n){const o=$e(e);Vt(o,"iterate",ki);const r=o[t](...n);return(r===-1||r===!1)&&Mc(n[0])?(n[0]=$e(n[0]),o[t](...n)):r}function Yr(e,t,n=[]){So(),wc();const o=$e(e)[t].apply(e,n);return _c(),To(),o}const Pv=vc("__proto__,__v_isRef,__isVue"),Zf=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(xo));function Av(e){xo(e)||(e=String(e));const t=$e(this);return Vt(t,"has",e),t.hasOwnProperty(e)}class Yf{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,o){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return o===(r?i?Fv:tg:i?eg:Qf).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const a=we(t);if(!r){let l;if(a&&(l=wv[n]))return l;if(n==="hasOwnProperty")return Av}const s=Reflect.get(t,n,ct(t)?t:o);return(xo(n)?Zf.has(n):Pv(n))||(r||Vt(t,"get",n),i)?s:ct(s)?a&&kc(n)?s:s.value:rt(s)?r?hn(s):wo(s):s}}class Jf extends Yf{constructor(t=!1){super(!1,t)}set(t,n,o,r){let i=t[n];if(!this._isShallow){const l=tr(i);if(!bn(o)&&!tr(o)&&(i=$e(i),o=$e(o)),!we(t)&&ct(i)&&!ct(o))return l?!1:(i.value=o,!0)}const a=we(t)&&kc(n)?Number(n)e,cs=e=>Reflect.getPrototypeOf(e);function ea(e,t,n=!1,o=!1){e=e.__v_raw;const r=$e(e),i=$e(t);n||(mo(t,i)&&Vt(r,"get",t),Vt(r,"get",i));const{has:a}=cs(r),s=o?Rc:n?Dc:Ft;if(a.call(r,t))return s(e.get(t));if(a.call(r,i))return s(e.get(i));e!==r&&e.get(t)}function ta(e,t=!1){const n=this.__v_raw,o=$e(n),r=$e(e);return t||(mo(e,r)&&Vt(o,"has",e),Vt(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function na(e,t=!1){return e=e.__v_raw,!t&&Vt($e(e),"iterate",qo),Reflect.get(e,"size",e)}function zd(e,t=!1){!t&&!bn(e)&&!tr(e)&&(e=$e(e));const n=$e(this);return cs(n).has.call(n,e)||(n.add(e),Xn(n,"add",e,e)),this}function Fd(e,t,n=!1){!n&&!bn(t)&&!tr(t)&&(t=$e(t));const o=$e(this),{has:r,get:i}=cs(o);let a=r.call(o,e);a||(e=$e(e),a=r.call(o,e));const s=i.call(o,e);return o.set(e,t),a?mo(t,s)&&Xn(o,"set",e,t):Xn(o,"add",e,t),this}function Wd(e){const t=$e(this),{has:n,get:o}=cs(t);let r=n.call(t,e);r||(e=$e(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&Xn(t,"delete",e,void 0),i}function jd(){const e=$e(this),t=e.size!==0,n=e.clear();return t&&Xn(e,"clear",void 0,void 0),n}function oa(e,t){return function(o,r){const i=this,a=i.__v_raw,s=$e(a),l=t?Rc:e?Dc:Ft;return!e&&Vt(s,"iterate",qo),a.forEach((c,d)=>o.call(r,l(c),l(d),i))}}function ra(e,t,n){return function(...o){const r=this.__v_raw,i=$e(r),a=_r(i),s=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,c=r[e](...o),d=n?Rc:t?Dc:Ft;return!t&&Vt(i,"iterate",l?Rl:qo),{next(){const{value:u,done:h}=c.next();return h?{value:u,done:h}:{value:s?[d(u[0]),d(u[1])]:d(u),done:h}},[Symbol.iterator](){return this}}}}function no(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Dv(){const e={get(i){return ea(this,i)},get size(){return na(this)},has:ta,add:zd,set:Fd,delete:Wd,clear:jd,forEach:oa(!1,!1)},t={get(i){return ea(this,i,!1,!0)},get size(){return na(this)},has:ta,add(i){return zd.call(this,i,!0)},set(i,a){return Fd.call(this,i,a,!0)},delete:Wd,clear:jd,forEach:oa(!1,!0)},n={get(i){return ea(this,i,!0)},get size(){return na(this,!0)},has(i){return ta.call(this,i,!0)},add:no("add"),set:no("set"),delete:no("delete"),clear:no("clear"),forEach:oa(!0,!1)},o={get(i){return ea(this,i,!0,!0)},get size(){return na(this,!0)},has(i){return ta.call(this,i,!0)},add:no("add"),set:no("set"),delete:no("delete"),clear:no("clear"),forEach:oa(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=ra(i,!1,!1),n[i]=ra(i,!0,!1),t[i]=ra(i,!1,!0),o[i]=ra(i,!0,!0)}),[e,n,t,o]}const[Ov,Lv,Hv,$v]=Dv();function Ec(e,t){const n=t?e?$v:Hv:e?Lv:Ov;return(o,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(Fe(n,r)&&r in o?n:o,r,i)}const Bv={get:Ec(!1,!1)},Nv={get:Ec(!1,!0)},zv={get:Ec(!0,!1)},Qf=new WeakMap,eg=new WeakMap,tg=new WeakMap,Fv=new WeakMap;function Wv(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function jv(e){return e.__v_skip||!Object.isExtensible(e)?0:Wv(hv(e))}function wo(e){return tr(e)?e:Ic(e,!1,Ev,Bv,Qf)}function Gv(e){return Ic(e,!1,Mv,Nv,eg)}function hn(e){return Ic(e,!0,Iv,zv,tg)}function Ic(e,t,n,o,r){if(!rt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const a=jv(e);if(a===0)return e;const s=new Proxy(e,a===2?o:n);return r.set(e,s),s}function go(e){return tr(e)?go(e.__v_raw):!!(e&&e.__v_isReactive)}function tr(e){return!!(e&&e.__v_isReadonly)}function bn(e){return!!(e&&e.__v_isShallow)}function Mc(e){return e?!!e.__v_raw:!1}function $e(e){const t=e&&e.__v_raw;return t?$e(t):e}function xi(e){return!Fe(e,"__v_skip")&&Object.isExtensible(e)&&Hf(e,"__v_skip",!0),e}const Ft=e=>rt(e)?wo(e):e,Dc=e=>rt(e)?hn(e):e;function ct(e){return e?e.__v_isRef===!0:!1}function V(e){return ng(e,!1)}function ds(e){return ng(e,!0)}function ng(e,t){return ct(e)?e:new Vv(e,t)}class Vv{constructor(t,n){this.dep=new Ac,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:$e(t),this._value=n?t:Ft(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,o=this.__v_isShallow||bn(t)||tr(t);t=o?t:$e(t),mo(t,n)&&(this._rawValue=t,this._value=o?t:Ft(t),this.dep.trigger())}}function Ne(e){return ct(e)?e.value:e}const Uv={get:(e,t,n)=>t==="__v_raw"?e:Ne(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return ct(r)&&!ct(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function og(e){return go(e)?e:new Proxy(e,Uv)}function Kv(e){const t=we(e)?new Array(e.length):{};for(const n in e)t[n]=rg(e,n);return t}class qv{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Tv($e(this._object),this._key)}}class Xv{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ve(e,t,n){return ct(e)?e:Re(e)?new Xv(e):rt(e)&&arguments.length>1?rg(e,t,n):V(e)}function rg(e,t,n){const o=e[t];return ct(o)?o:new qv(e,t,n)}class Zv{constructor(t,n,o){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Ac(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ci-1,this.effect=this,this.__v_isReadonly=!n,this.isSSR=o}notify(){this.flags|=16,Ze!==this&&this.dep.notify()}get value(){const t=this.dep.track();return Kf(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Yv(e,t,n=!1){let o,r;return Re(e)?o=e:(o=e.get,r=e.set),new Zv(o,r,n)}const ia={},La=new WeakMap;let Wo;function Jv(e,t=!1,n=Wo){if(n){let o=La.get(n);o||La.set(n,o=[]),o.push(e)}}function Qv(e,t,n=Ye){const{immediate:o,deep:r,once:i,scheduler:a,augmentJob:s,call:l}=n,c=v=>r?v:bn(v)||r===!1||r===0?Kn(v,1):Kn(v);let d,u,h,g,f=!1,b=!1;if(ct(e)?(u=()=>e.value,f=bn(e)):go(e)?(u=()=>c(e),f=!0):we(e)?(b=!0,f=e.some(v=>go(v)||bn(v)),u=()=>e.map(v=>{if(ct(v))return v.value;if(go(v))return c(v);if(Re(v))return l?l(v,2):v()})):Re(e)?t?u=l?()=>l(e,2):e:u=()=>{if(h){So();try{h()}finally{To()}}const v=Wo;Wo=d;try{return l?l(e,3,[g]):e(g)}finally{Wo=v}}:u=Ln,t&&r){const v=u,x=r===!0?1/0:r;u=()=>Kn(v(),x)}const p=Tc(),m=()=>{d.stop(),p&&Cc(p.effects,d)};if(i)if(t){const v=t;t=(...x)=>{v(...x),m()}}else{const v=u;u=()=>{v(),m()}}let k=b?new Array(e.length).fill(ia):ia;const T=v=>{if(!(!(d.flags&1)||!d.dirty&&!v))if(t){const x=d.run();if(r||f||(b?x.some((A,y)=>mo(A,k[y])):mo(x,k))){h&&h();const A=Wo;Wo=d;try{const y=[x,k===ia?void 0:b&&k[0]===ia?[]:k,g];l?l(t,3,y):t(...y),k=x}finally{Wo=A}}}else d.run()};return s&&s(T),d=new jf(u),d.scheduler=a?()=>a(T,!1):T,g=v=>Jv(v,!1,d),h=d.onStop=()=>{const v=La.get(d);if(v){if(l)l(v,4);else for(const x of v)x();La.delete(d)}},t?o?T(!0):k=d.run():a?a(T.bind(null,!0),!0):d.run(),m.pause=d.pause.bind(d),m.resume=d.resume.bind(d),m.stop=m,m}function Kn(e,t=1/0,n){if(t<=0||!rt(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ct(e))Kn(e.value,t,n);else if(we(e))for(let o=0;o{Kn(o,t,n)});else if(Of(e)){for(const o in e)Kn(e[o],t,n);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&Kn(e[o],t,n)}return e}/** +* @vue/runtime-core v3.5.4 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function zi(e,t,n,o){try{return o?e(...o):e()}catch(r){us(r,t,n)}}function An(e,t,n,o){if(Re(e)){const r=zi(e,t,n,o);return r&&Mf(r)&&r.catch(i=>{us(i,t,n)}),r}if(we(e)){const r=[];for(let i=0;i>>1,r=Yt[o],i=Ti(r);i=Ti(n)?Yt.push(e):Yt.splice(ty(t),0,e),e.flags|=1,ag()}}function ag(){!Si&&!El&&(El=!0,Oc=ig.then(lg))}function ny(e){we(e)?Pr.push(...e):co&&e.id===-1?co.splice(Cr+1,0,e):e.flags&1||(Pr.push(e),e.flags|=1),ag()}function Gd(e,t,n=Si?Mn+1:0){for(;nTi(n)-Ti(o));if(Pr.length=0,co){co.push(...t);return}for(co=t,Cr=0;Cre.id==null?e.flags&2?-1:1/0:e.id;function lg(e){El=!1,Si=!0;try{for(Mn=0;Mn{o._d&&tu(-1);const i=Ha(t);let a;try{a=e(...r)}finally{Ha(i),o._d&&tu(1)}return a};return o._n=!0,o._c=!0,o._d=!0,o}function po(e,t){if(At===null)return e;const n=bs(At),o=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,hi=e=>e&&(e.disabled||e.disabled===""),oy=e=>e&&(e.defer||e.defer===""),Vd=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ud=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Il=(e,t)=>{const n=e&&e.to;return ft(n)?t?t(n):null:n},ry={name:"Teleport",__isTeleport:!0,process(e,t,n,o,r,i,a,s,l,c){const{mc:d,pc:u,pbc:h,o:{insert:g,querySelector:f,createText:b,createComment:p}}=c,m=hi(t.props);let{shapeFlag:k,children:T,dynamicChildren:v}=t;if(e==null){const x=t.el=b(""),A=t.anchor=b("");g(x,n,o),g(A,n,o);const y=(P,D)=>{k&16&&d(T,P,D,r,i,a,s,l)},R=()=>{const P=t.target=Il(t.props,f),D=hg(P,t,b,g);P&&(a!=="svg"&&Vd(P)?a="svg":a!=="mathml"&&Ud(P)&&(a="mathml"),m||(y(P,D),wa(t)))};m&&(y(n,A),wa(t)),oy(t.props)?on(R,i):R()}else{t.el=e.el,t.targetStart=e.targetStart;const x=t.anchor=e.anchor,A=t.target=e.target,y=t.targetAnchor=e.targetAnchor,R=hi(e.props),P=R?n:A,D=R?x:y;if(a==="svg"||Vd(A)?a="svg":(a==="mathml"||Ud(A))&&(a="mathml"),v?(h(e.dynamicChildren,v,P,r,i,a,s),Fc(e,t,!0)):l||u(e,t,P,D,r,i,a,s,!1),m)R?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):aa(t,n,x,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const W=t.target=Il(t.props,f);W&&aa(t,W,null,c,0)}else R&&aa(t,A,y,c,1);wa(t)}},remove(e,t,n,{um:o,o:{remove:r}},i){const{shapeFlag:a,children:s,anchor:l,targetStart:c,targetAnchor:d,target:u,props:h}=e;if(u&&(r(c),r(d)),i&&r(l),a&16){const g=i||!hi(h);for(let f=0;f{e.isMounted=!0}),Tt(()=>{e.isUnmounting=!0}),e}const gn=[Function,Array],gg={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:gn,onEnter:gn,onAfterEnter:gn,onEnterCancelled:gn,onBeforeLeave:gn,onLeave:gn,onAfterLeave:gn,onLeaveCancelled:gn,onBeforeAppear:gn,onAppear:gn,onAfterAppear:gn,onAppearCancelled:gn},mg=e=>{const t=e.subTree;return t.component?mg(t.component):t},ay={name:"BaseTransition",props:gg,setup(e,{slots:t}){const n=rn(),o=fg();return()=>{const r=t.default&&Hc(t.default(),!0);if(!r||!r.length)return;const i=pg(r),a=$e(e),{mode:s}=a;if(o.isLeaving)return Js(i);const l=Kd(i);if(!l)return Js(i);let c=wi(l,a,o,n,h=>c=h);l.type!==kt&&nr(l,c);const d=n.subTree,u=d&&Kd(d);if(u&&u.type!==kt&&!jo(l,u)&&mg(n).type!==kt){const h=wi(u,a,o,n);if(nr(u,h),s==="out-in"&&l.type!==kt)return o.isLeaving=!0,h.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave},Js(i);s==="in-out"&&l.type!==kt&&(h.delayLeave=(g,f,b)=>{const p=bg(o,u);p[String(u.key)]=u,g[uo]=()=>{f(),g[uo]=void 0,delete c.delayedLeave},c.delayedLeave=b})}return i}}};function pg(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==kt){t=n;break}}return t}const sy=ay;function bg(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function wi(e,t,n,o,r){const{appear:i,mode:a,persisted:s=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:d,onEnterCancelled:u,onBeforeLeave:h,onLeave:g,onAfterLeave:f,onLeaveCancelled:b,onBeforeAppear:p,onAppear:m,onAfterAppear:k,onAppearCancelled:T}=t,v=String(e.key),x=bg(n,e),A=(P,D)=>{P&&An(P,o,9,D)},y=(P,D)=>{const W=D[1];A(P,D),we(P)?P.every(M=>M.length<=1)&&W():P.length<=1&&W()},R={mode:a,persisted:s,beforeEnter(P){let D=l;if(!n.isMounted)if(i)D=p||l;else return;P[uo]&&P[uo](!0);const W=x[v];W&&jo(e,W)&&W.el[uo]&&W.el[uo](),A(D,[P])},enter(P){let D=c,W=d,M=u;if(!n.isMounted)if(i)D=m||c,W=k||d,M=T||u;else return;let j=!1;const ee=P[sa]=B=>{j||(j=!0,B?A(M,[P]):A(W,[P]),R.delayedLeave&&R.delayedLeave(),P[sa]=void 0)};D?y(D,[P,ee]):ee()},leave(P,D){const W=String(e.key);if(P[sa]&&P[sa](!0),n.isUnmounting)return D();A(h,[P]);let M=!1;const j=P[uo]=ee=>{M||(M=!0,D(),ee?A(b,[P]):A(f,[P]),P[uo]=void 0,x[W]===e&&delete x[W])};x[W]=e,g?y(g,[P,j]):j()},clone(P){const D=wi(P,t,n,o,r);return r&&r(D),D}};return R}function Js(e){if(fs(e))return e=vn(e),e.children=null,e}function Kd(e){if(!fs(e))return ug(e.type)&&e.children?pg(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Re(n.default))return n.default()}}function nr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,nr(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Hc(e,t=!1,n){let o=[],r=0;for(let i=0;i1)for(let i=0;iMl(f,t&&(we(t)?t[b]:t),n,o,r));return}if(Ar(o)&&!r)return;const i=o.shapeFlag&4?bs(o.component):o.el,a=r?null:i,{i:s,r:l}=e,c=t&&t.r,d=s.refs===Ye?s.refs={}:s.refs,u=s.setupState,h=$e(u),g=u===Ye?()=>!1:f=>Ge(h,f);if(c!=null&&c!==l&&(ft(c)?(d[c]=null,g(c)&&(u[c]=null)):ct(c)&&(c.value=null)),Re(l))zi(l,s,12,[a,d]);else{const f=ft(l),b=ct(l);if(f||b){const p=()=>{if(e.f){const m=f?g(l)?u[l]:d[l]:l.value;r?we(m)&&Cc(m,i):we(m)?m.includes(i)||m.push(i):f?(d[l]=[i],g(l)&&(u[l]=d[l])):(l.value=[i],e.k&&(d[e.k]=l.value))}else f?(d[l]=a,g(l)&&(u[l]=a)):b&&(l.value=a,e.k&&(d[e.k]=a))};a?(p.id=-1,on(p,n)):p()}}}const Ar=e=>!!e.type.__asyncLoader,fs=e=>e.type.__isKeepAlive;function yg(e,t){Cg(e,"a",t)}function $c(e,t){Cg(e,"da",t)}function Cg(e,t,n=Lt){const o=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(gs(t,o,n),n){let r=n.parent;for(;r&&r.parent;)fs(r.parent.vnode)&&ly(o,t,n,r),r=r.parent}}function ly(e,t,n,o){const r=gs(t,e,o,!0);Bc(()=>{Cc(o[t],r)},n)}function gs(e,t,n=Lt,o=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...a)=>{So();const s=Fi(n),l=An(t,n,e,a);return s(),To(),l});return o?r.unshift(i):r.push(i),i}}const Jn=e=>(t,n=Lt)=>{(!ps||e==="sp")&&gs(e,(...o)=>t(...o),n)},Nn=Jn("bm"),It=Jn("m"),cy=Jn("bu"),kg=Jn("u"),Tt=Jn("bum"),Bc=Jn("um"),dy=Jn("sp"),uy=Jn("rtg"),hy=Jn("rtc");function fy(e,t=Lt){gs("ec",e,t)}const gy=Symbol.for("v-ndc");function _a(e,t,n,o){let r;const i=n,a=we(e);if(a||ft(e)){const s=a&&go(e);s&&(e=ls(e)),r=new Array(e.length);for(let l=0,c=e.length;lt(s,l,void 0,i));else{const s=Object.keys(e);r=new Array(s.length);for(let l=0,c=s.length;lPi(t)?!(t.type===kt||t.type===He&&!Sg(t.children)):!0)?e:null}const Dl=e=>e?Fg(e)?bs(e):Dl(e.parent):null,fi=yt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Dl(e.parent),$root:e=>Dl(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Nc(e),$forceUpdate:e=>e.f||(e.f=()=>{Lc(e.update)}),$nextTick:e=>e.n||(e.n=jt.bind(e.proxy)),$watch:e=>Hy.bind(e)}),Qs=(e,t)=>e!==Ye&&!e.__isScriptSetup&&Ge(e,t),my={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:o,data:r,props:i,accessCache:a,type:s,appContext:l}=e;let c;if(t[0]!=="$"){const g=a[t];if(g!==void 0)switch(g){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Qs(o,t))return a[t]=1,o[t];if(r!==Ye&&Ge(r,t))return a[t]=2,r[t];if((c=e.propsOptions[0])&&Ge(c,t))return a[t]=3,i[t];if(n!==Ye&&Ge(n,t))return a[t]=4,n[t];Ol&&(a[t]=0)}}const d=fi[t];let u,h;if(d)return t==="$attrs"&&Vt(e.attrs,"get",""),d(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==Ye&&Ge(n,t))return a[t]=4,n[t];if(h=l.config.globalProperties,Ge(h,t))return h[t]},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;return Qs(r,t)?(r[t]=n,!0):o!==Ye&&Ge(o,t)?(o[t]=n,!0):Ge(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,propsOptions:i}},a){let s;return!!n[a]||e!==Ye&&Ge(e,a)||Qs(t,a)||(s=i[0])&&Ge(s,a)||Ge(o,a)||Ge(fi,a)||Ge(r.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Ge(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function qd(e){return we(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ol=!0;function py(e){const t=Nc(e),n=e.proxy,o=e.ctx;Ol=!1,t.beforeCreate&&Xd(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:a,watch:s,provide:l,inject:c,created:d,beforeMount:u,mounted:h,beforeUpdate:g,updated:f,activated:b,deactivated:p,beforeDestroy:m,beforeUnmount:k,destroyed:T,unmounted:v,render:x,renderTracked:A,renderTriggered:y,errorCaptured:R,serverPrefetch:P,expose:D,inheritAttrs:W,components:M,directives:j,filters:ee}=t;if(c&&by(c,o,null),a)for(const $ in a){const ie=a[$];Re(ie)&&(o[$]=ie.bind(n))}if(r){const $=r.call(n,n);rt($)&&(e.data=wo($))}if(Ol=!0,i)for(const $ in i){const ie=i[$],ve=Re(ie)?ie.bind(n,n):Re(ie.get)?ie.get.bind(n,n):Ln,ye=!Re(ie)&&Re(ie.set)?ie.set.bind(n):Ln,Ae=z({get:ve,set:ye});Object.defineProperty(o,$,{enumerable:!0,configurable:!0,get:()=>Ae.value,set:De=>Ae.value=De})}if(s)for(const $ in s)Tg(s[$],o,n,$);if(l){const $=Re(l)?l.call(n):l;Reflect.ownKeys($).forEach(ie=>{We(ie,$[ie])})}d&&Xd(d,e,"c");function X($,ie){we(ie)?ie.forEach(ve=>$(ve.bind(n))):ie&&$(ie.bind(n))}if(X(Nn,u),X(It,h),X(cy,g),X(kg,f),X(yg,b),X($c,p),X(fy,R),X(hy,A),X(uy,y),X(Tt,k),X(Bc,v),X(dy,P),we(D))if(D.length){const $=e.exposed||(e.exposed={});D.forEach(ie=>{Object.defineProperty($,ie,{get:()=>n[ie],set:ve=>n[ie]=ve})})}else e.exposed||(e.exposed={});x&&e.render===Ln&&(e.render=x),W!=null&&(e.inheritAttrs=W),M&&(e.components=M),j&&(e.directives=j),P&&vg(e)}function by(e,t,n=Ln){we(e)&&(e=Ll(e));for(const o in e){const r=e[o];let i;rt(r)?"default"in r?i=Me(r.from||o,r.default,!0):i=Me(r.from||o):i=Me(r),ct(i)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[o]=i}}function Xd(e,t,n){An(we(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function Tg(e,t,n,o){let r=o.includes(".")?Hg(n,o):()=>n[o];if(ft(e)){const i=t[e];Re(i)&&ot(r,i)}else if(Re(e))ot(r,e.bind(n));else if(rt(e))if(we(e))e.forEach(i=>Tg(i,t,n,o));else{const i=Re(e.handler)?e.handler.bind(n):t[e.handler];Re(i)&&ot(r,i,e)}}function Nc(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,s=i.get(t);let l;return s?l=s:!r.length&&!n&&!o?l=t:(l={},r.length&&r.forEach(c=>$a(l,c,a,!0)),$a(l,t,a)),rt(t)&&i.set(t,l),l}function $a(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&$a(e,i,n,!0),r&&r.forEach(a=>$a(e,a,n,!0));for(const a in t)if(!(o&&a==="expose")){const s=vy[a]||n&&n[a];e[a]=s?s(e[a],t[a]):t[a]}return e}const vy={data:Zd,props:Yd,emits:Yd,methods:si,computed:si,beforeCreate:qt,created:qt,beforeMount:qt,mounted:qt,beforeUpdate:qt,updated:qt,beforeDestroy:qt,beforeUnmount:qt,destroyed:qt,unmounted:qt,activated:qt,deactivated:qt,errorCaptured:qt,serverPrefetch:qt,components:si,directives:si,watch:Cy,provide:Zd,inject:yy};function Zd(e,t){return t?e?function(){return yt(Re(e)?e.call(this,this):e,Re(t)?t.call(this,this):t)}:t:e}function yy(e,t){return si(Ll(e),Ll(t))}function Ll(e){if(we(e)){const t={};for(let n=0;n1)return n&&Re(t)?t.call(o&&o.proxy):t}}function Sy(){return!!(Lt||At||Xo)}const _g={},Pg=()=>Object.create(_g),Ag=e=>Object.getPrototypeOf(e)===_g;function Ty(e,t,n,o=!1){const r={},i=Pg();e.propsDefaults=Object.create(null),Rg(e,t,r,i);for(const a in e.propsOptions[0])a in r||(r[a]=void 0);n?e.props=o?r:Gv(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function wy(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:a}}=e,s=$e(r),[l]=e.propsOptions;let c=!1;if((o||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let u=0;u{l=!0;const[h,g]=Eg(u,t,!0);yt(a,h),g&&s.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!l)return rt(e)&&o.set(e,wr),wr;if(we(i))for(let d=0;de[0]==="_"||e==="$stable",zc=e=>we(e)?e.map(Dn):[Dn(e)],Py=(e,t,n)=>{if(t._n)return t;const o=Se((...r)=>zc(t(...r)),n);return o._c=!1,o},Mg=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Ig(r))continue;const i=e[r];if(Re(i))t[r]=Py(r,i,o);else if(i!=null){const a=zc(i);t[r]=()=>a}}},Dg=(e,t)=>{const n=zc(t);e.slots.default=()=>n},Og=(e,t,n)=>{for(const o in t)(n||o!=="_")&&(e[o]=t[o])},Ay=(e,t,n)=>{const o=e.slots=Pg();if(e.vnode.shapeFlag&32){const r=t._;r?(Og(o,t,n),n&&Hf(o,"_",r,!0)):Mg(t,o)}else t&&Dg(e,t)},Ry=(e,t,n)=>{const{vnode:o,slots:r}=e;let i=!0,a=Ye;if(o.shapeFlag&32){const s=t._;s?n&&s===1?i=!1:Og(r,t,n):(i=!t.$stable,Mg(t,r)),a=t}else t&&(Dg(e,t),a={default:1});if(i)for(const s in r)!Ig(s)&&a[s]==null&&delete r[s]},on=jy;function Ey(e){return Iy(e)}function Iy(e,t){const n=$f();n.__VUE__=!0;const{insert:o,remove:r,patchProp:i,createElement:a,createText:s,createComment:l,setText:c,setElementText:d,parentNode:u,nextSibling:h,setScopeId:g=Ln,insertStaticContent:f}=e,b=(E,_,H,J=null,K=null,Z=null,le=void 0,C=null,w=!!_.dynamicChildren)=>{if(E===_)return;E&&!jo(E,_)&&(J=Oe(E),De(E,K,Z,!0),E=null),_.patchFlag===-2&&(w=!1,_.dynamicChildren=null);const{type:I,ref:Y,shapeFlag:re}=_;switch(I){case Br:p(E,_,H,J);break;case kt:m(E,_,H,J);break;case nl:E==null&&k(_,H,J,le);break;case He:M(E,_,H,J,K,Z,le,C,w);break;default:re&1?x(E,_,H,J,K,Z,le,C,w):re&6?j(E,_,H,J,K,Z,le,C,w):(re&64||re&128)&&I.process(E,_,H,J,K,Z,le,C,w,bt)}Y!=null&&K&&Ml(Y,E&&E.ref,Z,_||E,!_)},p=(E,_,H,J)=>{if(E==null)o(_.el=s(_.children),H,J);else{const K=_.el=E.el;_.children!==E.children&&c(K,_.children)}},m=(E,_,H,J)=>{E==null?o(_.el=l(_.children||""),H,J):_.el=E.el},k=(E,_,H,J)=>{[E.el,E.anchor]=f(E.children,_,H,J,E.el,E.anchor)},T=({el:E,anchor:_},H,J)=>{let K;for(;E&&E!==_;)K=h(E),o(E,H,J),E=K;o(_,H,J)},v=({el:E,anchor:_})=>{let H;for(;E&&E!==_;)H=h(E),r(E),E=H;r(_)},x=(E,_,H,J,K,Z,le,C,w)=>{_.type==="svg"?le="svg":_.type==="math"&&(le="mathml"),E==null?A(_,H,J,K,Z,le,C,w):P(E,_,K,Z,le,C,w)},A=(E,_,H,J,K,Z,le,C)=>{let w,I;const{props:Y,shapeFlag:re,transition:q,dirs:L}=E;if(w=E.el=a(E.type,Z,Y&&Y.is,Y),re&8?d(w,E.children):re&16&&R(E.children,w,null,J,K,el(E,Z),le,C),L&&Ho(E,null,J,"created"),y(w,E,E.scopeId,le,J),Y){for(const pe in Y)pe!=="value"&&!di(pe)&&i(w,pe,null,Y[pe],Z,J);"value"in Y&&i(w,"value",null,Y.value,Z),(I=Y.onVnodeBeforeMount)&&Rn(I,J,E)}L&&Ho(E,null,J,"beforeMount");const N=My(K,q);N&&q.beforeEnter(w),o(w,_,H),((I=Y&&Y.onVnodeMounted)||N||L)&&on(()=>{I&&Rn(I,J,E),N&&q.enter(w),L&&Ho(E,null,J,"mounted")},K)},y=(E,_,H,J,K)=>{if(H&&g(E,H),J)for(let Z=0;Z{for(let I=w;I{const C=_.el=E.el;let{patchFlag:w,dynamicChildren:I,dirs:Y}=_;w|=E.patchFlag&16;const re=E.props||Ye,q=_.props||Ye;let L;if(H&&$o(H,!1),(L=q.onVnodeBeforeUpdate)&&Rn(L,H,_,E),Y&&Ho(_,E,H,"beforeUpdate"),H&&$o(H,!0),(re.innerHTML&&q.innerHTML==null||re.textContent&&q.textContent==null)&&d(C,""),I?D(E.dynamicChildren,I,C,H,J,el(_,K),Z):le||ie(E,_,C,null,H,J,el(_,K),Z,!1),w>0){if(w&16)W(C,re,q,H,K);else if(w&2&&re.class!==q.class&&i(C,"class",null,q.class,K),w&4&&i(C,"style",re.style,q.style,K),w&8){const N=_.dynamicProps;for(let pe=0;pe{L&&Rn(L,H,_,E),Y&&Ho(_,E,H,"updated")},J)},D=(E,_,H,J,K,Z,le)=>{for(let C=0;C<_.length;C++){const w=E[C],I=_[C],Y=w.el&&(w.type===He||!jo(w,I)||w.shapeFlag&70)?u(w.el):H;b(w,I,Y,null,J,K,Z,le,!0)}},W=(E,_,H,J,K)=>{if(_!==H){if(_!==Ye)for(const Z in _)!di(Z)&&!(Z in H)&&i(E,Z,_[Z],null,K,J);for(const Z in H){if(di(Z))continue;const le=H[Z],C=_[Z];le!==C&&Z!=="value"&&i(E,Z,C,le,K,J)}"value"in H&&i(E,"value",_.value,H.value,K)}},M=(E,_,H,J,K,Z,le,C,w)=>{const I=_.el=E?E.el:s(""),Y=_.anchor=E?E.anchor:s("");let{patchFlag:re,dynamicChildren:q,slotScopeIds:L}=_;L&&(C=C?C.concat(L):L),E==null?(o(I,H,J),o(Y,H,J),R(_.children||[],H,Y,K,Z,le,C,w)):re>0&&re&64&&q&&E.dynamicChildren?(D(E.dynamicChildren,q,H,K,Z,le,C),(_.key!=null||K&&_===K.subTree)&&Fc(E,_,!0)):ie(E,_,H,Y,K,Z,le,C,w)},j=(E,_,H,J,K,Z,le,C,w)=>{_.slotScopeIds=C,E==null?_.shapeFlag&512?K.ctx.activate(_,H,J,le,w):ee(_,H,J,K,Z,le,w):B(E,_,w)},ee=(E,_,H,J,K,Z,le)=>{const C=E.component=Zy(E,J,K);if(fs(E)&&(C.ctx.renderer=bt),Yy(C,!1,le),C.asyncDep){if(K&&K.registerDep(C,X,le),!E.el){const w=C.subTree=me(kt);m(null,w,_,H)}}else X(C,E,_,H,K,Z,le)},B=(E,_,H)=>{const J=_.component=E.component;if(Fy(E,_,H))if(J.asyncDep&&!J.asyncResolved){$(J,_,H);return}else J.next=_,J.update();else _.el=E.el,J.vnode=_},X=(E,_,H,J,K,Z,le)=>{const C=()=>{if(E.isMounted){let{next:re,bu:q,u:L,parent:N,vnode:pe}=E;{const vt=Lg(E);if(vt){re&&(re.el=pe.el,$(E,re,le)),vt.asyncDep.then(()=>{E.isUnmounted||C()});return}}let be=re,Qe;$o(E,!1),re?(re.el=pe.el,$(E,re,le)):re=pe,q&&Ks(q),(Qe=re.props&&re.props.onVnodeBeforeUpdate)&&Rn(Qe,N,re,pe),$o(E,!0);const Ke=tl(E),st=E.subTree;E.subTree=Ke,b(st,Ke,u(st.el),Oe(st),E,K,Z),re.el=Ke.el,be===null&&Wy(E,Ke.el),L&&on(L,K),(Qe=re.props&&re.props.onVnodeUpdated)&&on(()=>Rn(Qe,N,re,pe),K)}else{let re;const{el:q,props:L}=_,{bm:N,m:pe,parent:be,root:Qe,type:Ke}=E,st=Ar(_);if($o(E,!1),N&&Ks(N),!st&&(re=L&&L.onVnodeBeforeMount)&&Rn(re,be,_),$o(E,!0),q&&en){const vt=()=>{E.subTree=tl(E),en(q,E.subTree,E,K,null)};st&&Ke.__asyncHydrate?Ke.__asyncHydrate(q,E,vt):vt()}else{Qe.ce&&Qe.ce._injectChildStyle(Ke);const vt=E.subTree=tl(E);b(null,vt,H,J,E,K,Z),_.el=vt.el}if(pe&&on(pe,K),!st&&(re=L&&L.onVnodeMounted)){const vt=_;on(()=>Rn(re,be,vt),K)}(_.shapeFlag&256||be&&Ar(be.vnode)&&be.vnode.shapeFlag&256)&&E.a&&on(E.a,K),E.isMounted=!0,_=H=J=null}};E.scope.on();const w=E.effect=new jf(C);E.scope.off();const I=E.update=w.run.bind(w),Y=E.job=w.runIfDirty.bind(w);Y.i=E,Y.id=E.uid,w.scheduler=()=>Lc(Y),$o(E,!0),I()},$=(E,_,H)=>{_.component=E;const J=E.vnode.props;E.vnode=_,E.next=null,wy(E,_.props,J,H),Ry(E,_.children,H),So(),Gd(E),To()},ie=(E,_,H,J,K,Z,le,C,w=!1)=>{const I=E&&E.children,Y=E?E.shapeFlag:0,re=_.children,{patchFlag:q,shapeFlag:L}=_;if(q>0){if(q&128){ye(I,re,H,J,K,Z,le,C,w);return}else if(q&256){ve(I,re,H,J,K,Z,le,C,w);return}}L&8?(Y&16&&_e(I,K,Z),re!==I&&d(H,re)):Y&16?L&16?ye(I,re,H,J,K,Z,le,C,w):_e(I,K,Z,!0):(Y&8&&d(H,""),L&16&&R(re,H,J,K,Z,le,C,w))},ve=(E,_,H,J,K,Z,le,C,w)=>{E=E||wr,_=_||wr;const I=E.length,Y=_.length,re=Math.min(I,Y);let q;for(q=0;qY?_e(E,K,Z,!0,!1,re):R(_,H,J,K,Z,le,C,w,re)},ye=(E,_,H,J,K,Z,le,C,w)=>{let I=0;const Y=_.length;let re=E.length-1,q=Y-1;for(;I<=re&&I<=q;){const L=E[I],N=_[I]=w?ho(_[I]):Dn(_[I]);if(jo(L,N))b(L,N,H,null,K,Z,le,C,w);else break;I++}for(;I<=re&&I<=q;){const L=E[re],N=_[q]=w?ho(_[q]):Dn(_[q]);if(jo(L,N))b(L,N,H,null,K,Z,le,C,w);else break;re--,q--}if(I>re){if(I<=q){const L=q+1,N=Lq)for(;I<=re;)De(E[I],K,Z,!0),I++;else{const L=I,N=I,pe=new Map;for(I=N;I<=q;I++){const ne=_[I]=w?ho(_[I]):Dn(_[I]);ne.key!=null&&pe.set(ne.key,I)}let be,Qe=0;const Ke=q-N+1;let st=!1,vt=0;const Ut=new Array(Ke);for(I=0;I=Ke){De(ne,K,Z,!0);continue}let he;if(ne.key!=null)he=pe.get(ne.key);else for(be=N;be<=q;be++)if(Ut[be-N]===0&&jo(ne,_[be])){he=be;break}he===void 0?De(ne,K,Z,!0):(Ut[he-N]=I+1,he>=vt?vt=he:st=!0,b(ne,_[he],H,null,K,Z,le,C,w),Qe++)}const qr=st?Dy(Ut):wr;for(be=qr.length-1,I=Ke-1;I>=0;I--){const ne=N+I,he=_[ne],xe=ne+1{const{el:Z,type:le,transition:C,children:w,shapeFlag:I}=E;if(I&6){Ae(E.component.subTree,_,H,J);return}if(I&128){E.suspense.move(_,H,J);return}if(I&64){le.move(E,_,H,bt);return}if(le===He){o(Z,_,H);for(let re=0;reC.enter(Z),K);else{const{leave:re,delayLeave:q,afterLeave:L}=C,N=()=>o(Z,_,H),pe=()=>{re(Z,()=>{N(),L&&L()})};q?q(Z,N,pe):pe()}else o(Z,_,H)},De=(E,_,H,J=!1,K=!1)=>{const{type:Z,props:le,ref:C,children:w,dynamicChildren:I,shapeFlag:Y,patchFlag:re,dirs:q,cacheIndex:L}=E;if(re===-2&&(K=!1),C!=null&&Ml(C,null,H,E,!0),L!=null&&(_.renderCache[L]=void 0),Y&256){_.ctx.deactivate(E);return}const N=Y&1&&q,pe=!Ar(E);let be;if(pe&&(be=le&&le.onVnodeBeforeUnmount)&&Rn(be,_,E),Y&6)pt(E.component,H,J);else{if(Y&128){E.suspense.unmount(H,J);return}N&&Ho(E,null,_,"beforeUnmount"),Y&64?E.type.remove(E,_,H,bt,J):I&&!I.hasOnce&&(Z!==He||re>0&&re&64)?_e(I,_,H,!1,!0):(Z===He&&re&384||!K&&Y&16)&&_e(w,_,H),J&&ut(E)}(pe&&(be=le&&le.onVnodeUnmounted)||N)&&on(()=>{be&&Rn(be,_,E),N&&Ho(E,null,_,"unmounted")},H)},ut=E=>{const{type:_,el:H,anchor:J,transition:K}=E;if(_===He){Je(H,J);return}if(_===nl){v(E);return}const Z=()=>{r(H),K&&!K.persisted&&K.afterLeave&&K.afterLeave()};if(E.shapeFlag&1&&K&&!K.persisted){const{leave:le,delayLeave:C}=K,w=()=>le(H,Z);C?C(E.el,Z,w):w()}else Z()},Je=(E,_)=>{let H;for(;E!==_;)H=h(E),r(E),E=H;r(_)},pt=(E,_,H)=>{const{bum:J,scope:K,job:Z,subTree:le,um:C,m:w,a:I}=E;Qd(w),Qd(I),J&&Ks(J),K.stop(),Z&&(Z.flags|=8,De(le,E,_,H)),C&&on(C,_),on(()=>{E.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&E.asyncDep&&!E.asyncResolved&&E.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},_e=(E,_,H,J=!1,K=!1,Z=0)=>{for(let le=Z;le{if(E.shapeFlag&6)return Oe(E.component.subTree);if(E.shapeFlag&128)return E.suspense.next();const _=h(E.anchor||E.el),H=_&&_[dg];return H?h(H):_};let Dt=!1;const Ie=(E,_,H)=>{E==null?_._vnode&&De(_._vnode,null,null,!0):b(_._vnode||null,E,_,null,null,null,H),_._vnode=E,Dt||(Dt=!0,Gd(),sg(),Dt=!1)},bt={p:b,um:De,m:Ae,r:ut,mt:ee,mc:R,pc:ie,pbc:D,n:Oe,o:e};let Bt,en;return{render:Ie,hydrate:Bt,createApp:xy(Ie,Bt)}}function el({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function $o({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function My(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Fc(e,t,n=!1){const o=e.children,r=t.children;if(we(o)&&we(r))for(let i=0;i>1,e[n[s]]0&&(t[o]=n[i-1]),n[i]=o)}}for(i=n.length,a=n[i-1];i-- >0;)n[i]=a,a=t[a];return n}function Lg(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Lg(t)}function Qd(e){if(e)for(let t=0;tMe(Oy);function bo(e,t){return Wc(e,null,t)}function ot(e,t,n){return Wc(e,t,n)}function Wc(e,t,n=Ye){const{immediate:o,deep:r,flush:i,once:a}=n,s=yt({},n);let l;if(ps)if(i==="sync"){const h=Ly();l=h.__watcherHandles||(h.__watcherHandles=[])}else if(!t||o)s.once=!0;else return{stop:Ln,resume:Ln,pause:Ln};const c=Lt;s.call=(h,g,f)=>An(h,c,g,f);let d=!1;i==="post"?s.scheduler=h=>{on(h,c&&c.suspense)}:i!=="sync"&&(d=!0,s.scheduler=(h,g)=>{g?h():Lc(h)}),s.augmentJob=h=>{t&&(h.flags|=4),d&&(h.flags|=2,c&&(h.id=c.uid,h.i=c))};const u=Qv(e,t,s);return l&&l.push(u),u}function Hy(e,t,n){const o=this.proxy,r=ft(e)?e.includes(".")?Hg(o,e):()=>o[e]:e.bind(o,o);let i;Re(t)?i=t:(i=t.handler,n=t);const a=Fi(this),s=Wc(r,i.bind(o),n);return a(),s}function Hg(e,t){const n=t.split(".");return()=>{let o=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${er(t)}Modifiers`]||e[`${ir(t)}Modifiers`];function By(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||Ye;let r=n;const i=t.startsWith("update:"),a=i&&$y(o,t.slice(7));a&&(a.trim&&(r=n.map(d=>ft(d)?d.trim():d)),a.number&&(r=n.map(mv)));let s,l=o[s=Us(t)]||o[s=Us(er(t))];!l&&i&&(l=o[s=Us(ir(t))]),l&&An(l,e,6,r);const c=o[s+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,An(c,e,6,r)}}function $g(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(r!==void 0)return r;const i=e.emits;let a={},s=!1;if(!Re(e)){const l=c=>{const d=$g(c,t,!0);d&&(s=!0,yt(a,d))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!s?(rt(e)&&o.set(e,null),null):(we(i)?i.forEach(l=>a[l]=null):yt(a,i),rt(e)&&o.set(e,a),a)}function ms(e,t){return!e||!rs(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ge(e,t[0].toLowerCase()+t.slice(1))||Ge(e,ir(t))||Ge(e,t))}function tl(e){const{type:t,vnode:n,proxy:o,withProxy:r,propsOptions:[i],slots:a,attrs:s,emit:l,render:c,renderCache:d,props:u,data:h,setupState:g,ctx:f,inheritAttrs:b}=e,p=Ha(e);let m,k;try{if(n.shapeFlag&4){const v=r||o,x=v;m=Dn(c.call(x,v,d,u,g,h,f)),k=s}else{const v=t;m=Dn(v.length>1?v(u,{attrs:s,slots:a,emit:l}):v(u,null)),k=t.props?s:Ny(s)}}catch(v){gi.length=0,us(v,e,1),m=me(kt)}let T=m;if(k&&b!==!1){const v=Object.keys(k),{shapeFlag:x}=T;v.length&&x&7&&(i&&v.some(yc)&&(k=zy(k,i)),T=vn(T,k,!1,!0))}return n.dirs&&(T=vn(T,null,!1,!0),T.dirs=T.dirs?T.dirs.concat(n.dirs):n.dirs),n.transition&&nr(T,n.transition),m=T,Ha(p),m}const Ny=e=>{let t;for(const n in e)(n==="class"||n==="style"||rs(n))&&((t||(t={}))[n]=e[n]);return t},zy=(e,t)=>{const n={};for(const o in e)(!yc(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function Fy(e,t,n){const{props:o,children:r,component:i}=e,{props:a,children:s,patchFlag:l}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return o?eu(o,a,c):!!a;if(l&8){const d=t.dynamicProps;for(let u=0;ue.__isSuspense;function jy(e,t){t&&t.pendingBranch?we(e)?t.effects.push(...e):t.effects.push(e):ny(e)}const He=Symbol.for("v-fgt"),Br=Symbol.for("v-txt"),kt=Symbol.for("v-cmt"),nl=Symbol.for("v-stc"),gi=[];let cn=null;function Fe(e=!1){gi.push(cn=e?null:[])}function Gy(){gi.pop(),cn=gi[gi.length-1]||null}let _i=1;function tu(e){_i+=e,e<0&&cn&&(cn.hasOnce=!0)}function Ng(e){return e.dynamicChildren=_i>0?cn||wr:null,Gy(),_i>0&&cn&&cn.push(e),e}function bn(e,t,n,o,r,i){return Ng(Gt(e,t,n,o,r,i,!0))}function wt(e,t,n,o,r){return Ng(me(e,t,n,o,r,!0))}function Pi(e){return e?e.__v_isVNode===!0:!1}function jo(e,t){return e.type===t.type&&e.key===t.key}const zg=({key:e})=>e??null,Pa=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ft(e)||ct(e)||Re(e)?{i:At,r:e,k:t,f:!!n}:e:null);function Gt(e,t=null,n=null,o=0,r=null,i=e===He?0:1,a=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&zg(t),ref:t&&Pa(t),scopeId:cg,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:At};return s?(jc(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=ft(n)?8:16),_i>0&&!a&&cn&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&cn.push(l),l}const me=Vy;function Vy(e,t=null,n=null,o=0,r=null,i=!1){if((!e||e===gy)&&(e=kt),Pi(e)){const s=vn(e,t,!0);return n&&jc(s,n),_i>0&&!i&&cn&&(s.shapeFlag&6?cn[cn.indexOf(e)]=s:cn.push(s)),s.patchFlag=-2,s}if(t2(e)&&(e=e.__vccOpts),t){t=Uy(t);let{class:s,style:l}=t;s&&!ft(s)&&(t.class=xc(s)),rt(l)&&(Mc(l)&&!we(l)&&(l=yt({},l)),t.style=ss(l))}const a=ft(e)?1:Bg(e)?128:ug(e)?64:rt(e)?4:Re(e)?2:0;return Gt(e,t,n,o,r,a,i,!0)}function Uy(e){return e?Mc(e)||Ag(e)?yt({},e):e:null}function vn(e,t,n=!1,o=!1){const{props:r,ref:i,patchFlag:a,children:s,transition:l}=e,c=t?$n(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&zg(c),ref:t&&t.ref?n&&i?we(i)?i.concat(Pa(t)):[i,Pa(t)]:Pa(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==He?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&vn(e.ssContent),ssFallback:e.ssFallback&&vn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&o&&nr(d,l.clone(d)),d}function _t(e=" ",t=0){return me(Br,null,e,t)}function Ky(e="",t=!1){return t?(Fe(),wt(kt,null,e)):me(kt,null,e)}function Dn(e){return e==null||typeof e=="boolean"?me(kt):we(e)?me(He,null,e.slice()):typeof e=="object"?ho(e):me(Br,null,String(e))}function ho(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:vn(e)}function jc(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(we(t))n=16;else if(typeof t=="object")if(o&65){const r=t.default;r&&(r._c&&(r._d=!1),jc(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ag(t)?t._ctx=At:r===3&&At&&(At.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Re(t)?(t={default:t,_ctx:At},n=32):(t=String(t),o&64?(n=16,t=[_t(t)]):n=8);e.children=t,e.shapeFlag|=n}function $n(...e){const t={};for(let n=0;nLt||At;let Ba,$l;{const e=$f(),t=(n,o)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(o),i=>{r.length>1?r.forEach(a=>a(i)):r[0](i)}};Ba=t("__VUE_INSTANCE_SETTERS__",n=>Lt=n),$l=t("__VUE_SSR_SETTERS__",n=>ps=n)}const Fi=e=>{const t=Lt;return Ba(e),e.scope.on(),()=>{e.scope.off(),Ba(t)}},nu=()=>{Lt&&Lt.scope.off(),Ba(null)};function Fg(e){return e.vnode.shapeFlag&4}let ps=!1;function Yy(e,t=!1,n=!1){t&&$l(t);const{props:o,children:r}=e.vnode,i=Fg(e);Ty(e,o,i,t),Ay(e,r,n);const a=i?Jy(e,t):void 0;return t&&$l(!1),a}function Jy(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,my);const{setup:o}=n;if(o){const r=e.setupContext=o.length>1?e2(e):null,i=Fi(e);So();const a=zi(o,e,0,[e.props,r]);if(To(),i(),Mf(a)){if(Ar(e)||vg(e),a.then(nu,nu),t)return a.then(s=>{ou(e,s,t)}).catch(s=>{us(s,e,0)});e.asyncDep=a}else ou(e,a,t)}else Wg(e,t)}function ou(e,t,n){Re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:rt(t)&&(e.setupState=og(t)),Wg(e,n)}let ru;function Wg(e,t,n){const o=e.type;if(!e.render){if(!t&&ru&&!o.render){const r=o.template||Nc(e).template;if(r){const{isCustomElement:i,compilerOptions:a}=e.appContext.config,{delimiters:s,compilerOptions:l}=o,c=yt(yt({isCustomElement:i,delimiters:s},a),l);o.render=ru(r,c)}}e.render=o.render||Ln}{const r=Fi(e);So();try{py(e)}finally{To(),r()}}}const Qy={get(e,t){return Vt(e,"get",""),e[t]}};function e2(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Qy),slots:e.slots,emit:e.emit,expose:t}}function bs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(og(xi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in fi)return fi[n](e)},has(t,n){return n in t||n in fi}})):e.proxy}function t2(e){return Re(e)&&"__vccOpts"in e}const z=(e,t)=>Yv(e,t,ps);function S(e,t,n){const o=arguments.length;return o===2?rt(t)&&!we(t)?Pi(t)?me(e,null,[t]):me(e,t):me(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&Pi(n)&&(n=[n]),me(e,t,n))}const n2="3.5.3";/** -* @vue/runtime-dom v3.5.3 +**/function zi(e,t,n,o){try{return o?e(...o):e()}catch(r){us(r,t,n)}}function An(e,t,n,o){if(Re(e)){const r=zi(e,t,n,o);return r&&Mf(r)&&r.catch(i=>{us(i,t,n)}),r}if(we(e)){const r=[];for(let i=0;i>>1,r=Yt[o],i=Ti(r);i=Ti(n)?Yt.push(e):Yt.splice(ty(t),0,e),e.flags|=1,ag()}}function ag(){!Si&&!El&&(El=!0,Oc=ig.then(lg))}function ny(e){we(e)?Pr.push(...e):co&&e.id===-1?co.splice(Cr+1,0,e):e.flags&1||(Pr.push(e),e.flags|=1),ag()}function Gd(e,t,n=Si?Mn+1:0){for(;nTi(n)-Ti(o));if(Pr.length=0,co){co.push(...t);return}for(co=t,Cr=0;Cre.id==null?e.flags&2?-1:1/0:e.id;function lg(e){El=!1,Si=!0;try{for(Mn=0;Mn{o._d&&tu(-1);const i=Ha(t);let a;try{a=e(...r)}finally{Ha(i),o._d&&tu(1)}return a};return o._n=!0,o._c=!0,o._d=!0,o}function po(e,t){if(At===null)return e;const n=bs(At),o=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,hi=e=>e&&(e.disabled||e.disabled===""),oy=e=>e&&(e.defer||e.defer===""),Vd=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ud=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Il=(e,t)=>{const n=e&&e.to;return ft(n)?t?t(n):null:n},ry={name:"Teleport",__isTeleport:!0,process(e,t,n,o,r,i,a,s,l,c){const{mc:d,pc:u,pbc:h,o:{insert:g,querySelector:f,createText:b,createComment:p}}=c,m=hi(t.props);let{shapeFlag:k,children:T,dynamicChildren:v}=t;if(e==null){const x=t.el=b(""),A=t.anchor=b("");g(x,n,o),g(A,n,o);const y=(P,D)=>{k&16&&d(T,P,D,r,i,a,s,l)},R=()=>{const P=t.target=Il(t.props,f),D=hg(P,t,b,g);P&&(a!=="svg"&&Vd(P)?a="svg":a!=="mathml"&&Ud(P)&&(a="mathml"),m||(y(P,D),wa(t)))};m&&(y(n,A),wa(t)),oy(t.props)?on(R,i):R()}else{t.el=e.el,t.targetStart=e.targetStart;const x=t.anchor=e.anchor,A=t.target=e.target,y=t.targetAnchor=e.targetAnchor,R=hi(e.props),P=R?n:A,D=R?x:y;if(a==="svg"||Vd(A)?a="svg":(a==="mathml"||Ud(A))&&(a="mathml"),v?(h(e.dynamicChildren,v,P,r,i,a,s),Fc(e,t,!0)):l||u(e,t,P,D,r,i,a,s,!1),m)R?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):aa(t,n,x,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const W=t.target=Il(t.props,f);W&&aa(t,W,null,c,0)}else R&&aa(t,A,y,c,1);wa(t)}},remove(e,t,n,{um:o,o:{remove:r}},i){const{shapeFlag:a,children:s,anchor:l,targetStart:c,targetAnchor:d,target:u,props:h}=e;if(u&&(r(c),r(d)),i&&r(l),a&16){const g=i||!hi(h);for(let f=0;f{e.isMounted=!0}),Tt(()=>{e.isUnmounting=!0}),e}const gn=[Function,Array],gg={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:gn,onEnter:gn,onAfterEnter:gn,onEnterCancelled:gn,onBeforeLeave:gn,onLeave:gn,onAfterLeave:gn,onLeaveCancelled:gn,onBeforeAppear:gn,onAppear:gn,onAfterAppear:gn,onAppearCancelled:gn},mg=e=>{const t=e.subTree;return t.component?mg(t.component):t},ay={name:"BaseTransition",props:gg,setup(e,{slots:t}){const n=rn(),o=fg();return()=>{const r=t.default&&Hc(t.default(),!0);if(!r||!r.length)return;const i=pg(r),a=$e(e),{mode:s}=a;if(o.isLeaving)return Js(i);const l=Kd(i);if(!l)return Js(i);let c=wi(l,a,o,n,h=>c=h);l.type!==kt&&nr(l,c);const d=n.subTree,u=d&&Kd(d);if(u&&u.type!==kt&&!jo(l,u)&&mg(n).type!==kt){const h=wi(u,a,o,n);if(nr(u,h),s==="out-in"&&l.type!==kt)return o.isLeaving=!0,h.afterLeave=()=>{o.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave},Js(i);s==="in-out"&&l.type!==kt&&(h.delayLeave=(g,f,b)=>{const p=bg(o,u);p[String(u.key)]=u,g[uo]=()=>{f(),g[uo]=void 0,delete c.delayedLeave},c.delayedLeave=b})}return i}}};function pg(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==kt){t=n;break}}return t}const sy=ay;function bg(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function wi(e,t,n,o,r){const{appear:i,mode:a,persisted:s=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:d,onEnterCancelled:u,onBeforeLeave:h,onLeave:g,onAfterLeave:f,onLeaveCancelled:b,onBeforeAppear:p,onAppear:m,onAfterAppear:k,onAppearCancelled:T}=t,v=String(e.key),x=bg(n,e),A=(P,D)=>{P&&An(P,o,9,D)},y=(P,D)=>{const W=D[1];A(P,D),we(P)?P.every(M=>M.length<=1)&&W():P.length<=1&&W()},R={mode:a,persisted:s,beforeEnter(P){let D=l;if(!n.isMounted)if(i)D=p||l;else return;P[uo]&&P[uo](!0);const W=x[v];W&&jo(e,W)&&W.el[uo]&&W.el[uo](),A(D,[P])},enter(P){let D=c,W=d,M=u;if(!n.isMounted)if(i)D=m||c,W=k||d,M=T||u;else return;let j=!1;const ee=P[sa]=B=>{j||(j=!0,B?A(M,[P]):A(W,[P]),R.delayedLeave&&R.delayedLeave(),P[sa]=void 0)};D?y(D,[P,ee]):ee()},leave(P,D){const W=String(e.key);if(P[sa]&&P[sa](!0),n.isUnmounting)return D();A(h,[P]);let M=!1;const j=P[uo]=ee=>{M||(M=!0,D(),ee?A(b,[P]):A(f,[P]),P[uo]=void 0,x[W]===e&&delete x[W])};x[W]=e,g?y(g,[P,j]):j()},clone(P){const D=wi(P,t,n,o,r);return r&&r(D),D}};return R}function Js(e){if(fs(e))return e=yn(e),e.children=null,e}function Kd(e){if(!fs(e))return ug(e.type)&&e.children?pg(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Re(n.default))return n.default()}}function nr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,nr(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Hc(e,t=!1,n){let o=[],r=0;for(let i=0;i1)for(let i=0;iMl(f,t&&(we(t)?t[b]:t),n,o,r));return}if(Ar(o)&&!r)return;const i=o.shapeFlag&4?bs(o.component):o.el,a=r?null:i,{i:s,r:l}=e,c=t&&t.r,d=s.refs===Ye?s.refs={}:s.refs,u=s.setupState,h=$e(u),g=u===Ye?()=>!1:f=>Fe(h,f);if(c!=null&&c!==l&&(ft(c)?(d[c]=null,g(c)&&(u[c]=null)):ct(c)&&(c.value=null)),Re(l))zi(l,s,12,[a,d]);else{const f=ft(l),b=ct(l);if(f||b){const p=()=>{if(e.f){const m=f?g(l)?u[l]:d[l]:l.value;r?we(m)&&Cc(m,i):we(m)?m.includes(i)||m.push(i):f?(d[l]=[i],g(l)&&(u[l]=d[l])):(l.value=[i],e.k&&(d[e.k]=l.value))}else f?(d[l]=a,g(l)&&(u[l]=a)):b&&(l.value=a,e.k&&(d[e.k]=a))};a?(p.id=-1,on(p,n)):p()}}}const Ar=e=>!!e.type.__asyncLoader,fs=e=>e.type.__isKeepAlive;function yg(e,t){Cg(e,"a",t)}function $c(e,t){Cg(e,"da",t)}function Cg(e,t,n=Lt){const o=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(gs(t,o,n),n){let r=n.parent;for(;r&&r.parent;)fs(r.parent.vnode)&&ly(o,t,n,r),r=r.parent}}function ly(e,t,n,o){const r=gs(t,e,o,!0);Bc(()=>{Cc(o[t],r)},n)}function gs(e,t,n=Lt,o=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...a)=>{So();const s=Fi(n),l=An(t,n,e,a);return s(),To(),l});return o?r.unshift(i):r.push(i),i}}const Jn=e=>(t,n=Lt)=>{(!ps||e==="sp")&&gs(e,(...o)=>t(...o),n)},Nn=Jn("bm"),It=Jn("m"),cy=Jn("bu"),kg=Jn("u"),Tt=Jn("bum"),Bc=Jn("um"),dy=Jn("sp"),uy=Jn("rtg"),hy=Jn("rtc");function fy(e,t=Lt){gs("ec",e,t)}const gy=Symbol.for("v-ndc");function _a(e,t,n,o){let r;const i=n,a=we(e);if(a||ft(e)){const s=a&&go(e);let l=!1;s&&(l=!bn(e),e=ls(e)),r=new Array(e.length);for(let c=0,d=e.length;ct(s,l,void 0,i));else{const s=Object.keys(e);r=new Array(s.length);for(let l=0,c=s.length;lPi(t)?!(t.type===kt||t.type===He&&!Sg(t.children)):!0)?e:null}const Dl=e=>e?Fg(e)?bs(e):Dl(e.parent):null,fi=yt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Dl(e.parent),$root:e=>Dl(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Nc(e),$forceUpdate:e=>e.f||(e.f=()=>{Lc(e.update)}),$nextTick:e=>e.n||(e.n=jt.bind(e.proxy)),$watch:e=>Hy.bind(e)}),Qs=(e,t)=>e!==Ye&&!e.__isScriptSetup&&Fe(e,t),my={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:o,data:r,props:i,accessCache:a,type:s,appContext:l}=e;let c;if(t[0]!=="$"){const g=a[t];if(g!==void 0)switch(g){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Qs(o,t))return a[t]=1,o[t];if(r!==Ye&&Fe(r,t))return a[t]=2,r[t];if((c=e.propsOptions[0])&&Fe(c,t))return a[t]=3,i[t];if(n!==Ye&&Fe(n,t))return a[t]=4,n[t];Ol&&(a[t]=0)}}const d=fi[t];let u,h;if(d)return t==="$attrs"&&Vt(e.attrs,"get",""),d(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==Ye&&Fe(n,t))return a[t]=4,n[t];if(h=l.config.globalProperties,Fe(h,t))return h[t]},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;return Qs(r,t)?(r[t]=n,!0):o!==Ye&&Fe(o,t)?(o[t]=n,!0):Fe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,propsOptions:i}},a){let s;return!!n[a]||e!==Ye&&Fe(e,a)||Qs(t,a)||(s=i[0])&&Fe(s,a)||Fe(o,a)||Fe(fi,a)||Fe(r.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Fe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function qd(e){return we(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ol=!0;function py(e){const t=Nc(e),n=e.proxy,o=e.ctx;Ol=!1,t.beforeCreate&&Xd(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:a,watch:s,provide:l,inject:c,created:d,beforeMount:u,mounted:h,beforeUpdate:g,updated:f,activated:b,deactivated:p,beforeDestroy:m,beforeUnmount:k,destroyed:T,unmounted:v,render:x,renderTracked:A,renderTriggered:y,errorCaptured:R,serverPrefetch:P,expose:D,inheritAttrs:W,components:M,directives:j,filters:ee}=t;if(c&&by(c,o,null),a)for(const $ in a){const ie=a[$];Re(ie)&&(o[$]=ie.bind(n))}if(r){const $=r.call(n,n);rt($)&&(e.data=wo($))}if(Ol=!0,i)for(const $ in i){const ie=i[$],ve=Re(ie)?ie.bind(n,n):Re(ie.get)?ie.get.bind(n,n):Ln,ye=!Re(ie)&&Re(ie.set)?ie.set.bind(n):Ln,Ae=z({get:ve,set:ye});Object.defineProperty(o,$,{enumerable:!0,configurable:!0,get:()=>Ae.value,set:De=>Ae.value=De})}if(s)for(const $ in s)Tg(s[$],o,n,$);if(l){const $=Re(l)?l.call(n):l;Reflect.ownKeys($).forEach(ie=>{je(ie,$[ie])})}d&&Xd(d,e,"c");function X($,ie){we(ie)?ie.forEach(ve=>$(ve.bind(n))):ie&&$(ie.bind(n))}if(X(Nn,u),X(It,h),X(cy,g),X(kg,f),X(yg,b),X($c,p),X(fy,R),X(hy,A),X(uy,y),X(Tt,k),X(Bc,v),X(dy,P),we(D))if(D.length){const $=e.exposed||(e.exposed={});D.forEach(ie=>{Object.defineProperty($,ie,{get:()=>n[ie],set:ve=>n[ie]=ve})})}else e.exposed||(e.exposed={});x&&e.render===Ln&&(e.render=x),W!=null&&(e.inheritAttrs=W),M&&(e.components=M),j&&(e.directives=j),P&&vg(e)}function by(e,t,n=Ln){we(e)&&(e=Ll(e));for(const o in e){const r=e[o];let i;rt(r)?"default"in r?i=Me(r.from||o,r.default,!0):i=Me(r.from||o):i=Me(r),ct(i)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[o]=i}}function Xd(e,t,n){An(we(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function Tg(e,t,n,o){let r=o.includes(".")?Hg(n,o):()=>n[o];if(ft(e)){const i=t[e];Re(i)&&ot(r,i)}else if(Re(e))ot(r,e.bind(n));else if(rt(e))if(we(e))e.forEach(i=>Tg(i,t,n,o));else{const i=Re(e.handler)?e.handler.bind(n):t[e.handler];Re(i)&&ot(r,i,e)}}function Nc(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,s=i.get(t);let l;return s?l=s:!r.length&&!n&&!o?l=t:(l={},r.length&&r.forEach(c=>$a(l,c,a,!0)),$a(l,t,a)),rt(t)&&i.set(t,l),l}function $a(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&$a(e,i,n,!0),r&&r.forEach(a=>$a(e,a,n,!0));for(const a in t)if(!(o&&a==="expose")){const s=vy[a]||n&&n[a];e[a]=s?s(e[a],t[a]):t[a]}return e}const vy={data:Zd,props:Yd,emits:Yd,methods:si,computed:si,beforeCreate:qt,created:qt,beforeMount:qt,mounted:qt,beforeUpdate:qt,updated:qt,beforeDestroy:qt,beforeUnmount:qt,destroyed:qt,unmounted:qt,activated:qt,deactivated:qt,errorCaptured:qt,serverPrefetch:qt,components:si,directives:si,watch:Cy,provide:Zd,inject:yy};function Zd(e,t){return t?e?function(){return yt(Re(e)?e.call(this,this):e,Re(t)?t.call(this,this):t)}:t:e}function yy(e,t){return si(Ll(e),Ll(t))}function Ll(e){if(we(e)){const t={};for(let n=0;n1)return n&&Re(t)?t.call(o&&o.proxy):t}}function Sy(){return!!(Lt||At||Xo)}const _g={},Pg=()=>Object.create(_g),Ag=e=>Object.getPrototypeOf(e)===_g;function Ty(e,t,n,o=!1){const r={},i=Pg();e.propsDefaults=Object.create(null),Rg(e,t,r,i);for(const a in e.propsOptions[0])a in r||(r[a]=void 0);n?e.props=o?r:Gv(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function wy(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:a}}=e,s=$e(r),[l]=e.propsOptions;let c=!1;if((o||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let u=0;u{l=!0;const[h,g]=Eg(u,t,!0);yt(a,h),g&&s.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!l)return rt(e)&&o.set(e,wr),wr;if(we(i))for(let d=0;de[0]==="_"||e==="$stable",zc=e=>we(e)?e.map(Dn):[Dn(e)],Py=(e,t,n)=>{if(t._n)return t;const o=Se((...r)=>zc(t(...r)),n);return o._c=!1,o},Mg=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Ig(r))continue;const i=e[r];if(Re(i))t[r]=Py(r,i,o);else if(i!=null){const a=zc(i);t[r]=()=>a}}},Dg=(e,t)=>{const n=zc(t);e.slots.default=()=>n},Og=(e,t,n)=>{for(const o in t)(n||o!=="_")&&(e[o]=t[o])},Ay=(e,t,n)=>{const o=e.slots=Pg();if(e.vnode.shapeFlag&32){const r=t._;r?(Og(o,t,n),n&&Hf(o,"_",r,!0)):Mg(t,o)}else t&&Dg(e,t)},Ry=(e,t,n)=>{const{vnode:o,slots:r}=e;let i=!0,a=Ye;if(o.shapeFlag&32){const s=t._;s?n&&s===1?i=!1:Og(r,t,n):(i=!t.$stable,Mg(t,r)),a=t}else t&&(Dg(e,t),a={default:1});if(i)for(const s in r)!Ig(s)&&a[s]==null&&delete r[s]},on=jy;function Ey(e){return Iy(e)}function Iy(e,t){const n=$f();n.__VUE__=!0;const{insert:o,remove:r,patchProp:i,createElement:a,createText:s,createComment:l,setText:c,setElementText:d,parentNode:u,nextSibling:h,setScopeId:g=Ln,insertStaticContent:f}=e,b=(E,_,H,J=null,K=null,Z=null,le=void 0,C=null,w=!!_.dynamicChildren)=>{if(E===_)return;E&&!jo(E,_)&&(J=Oe(E),De(E,K,Z,!0),E=null),_.patchFlag===-2&&(w=!1,_.dynamicChildren=null);const{type:I,ref:Y,shapeFlag:re}=_;switch(I){case Br:p(E,_,H,J);break;case kt:m(E,_,H,J);break;case nl:E==null&&k(_,H,J,le);break;case He:M(E,_,H,J,K,Z,le,C,w);break;default:re&1?x(E,_,H,J,K,Z,le,C,w):re&6?j(E,_,H,J,K,Z,le,C,w):(re&64||re&128)&&I.process(E,_,H,J,K,Z,le,C,w,bt)}Y!=null&&K&&Ml(Y,E&&E.ref,Z,_||E,!_)},p=(E,_,H,J)=>{if(E==null)o(_.el=s(_.children),H,J);else{const K=_.el=E.el;_.children!==E.children&&c(K,_.children)}},m=(E,_,H,J)=>{E==null?o(_.el=l(_.children||""),H,J):_.el=E.el},k=(E,_,H,J)=>{[E.el,E.anchor]=f(E.children,_,H,J,E.el,E.anchor)},T=({el:E,anchor:_},H,J)=>{let K;for(;E&&E!==_;)K=h(E),o(E,H,J),E=K;o(_,H,J)},v=({el:E,anchor:_})=>{let H;for(;E&&E!==_;)H=h(E),r(E),E=H;r(_)},x=(E,_,H,J,K,Z,le,C,w)=>{_.type==="svg"?le="svg":_.type==="math"&&(le="mathml"),E==null?A(_,H,J,K,Z,le,C,w):P(E,_,K,Z,le,C,w)},A=(E,_,H,J,K,Z,le,C)=>{let w,I;const{props:Y,shapeFlag:re,transition:q,dirs:L}=E;if(w=E.el=a(E.type,Z,Y&&Y.is,Y),re&8?d(w,E.children):re&16&&R(E.children,w,null,J,K,el(E,Z),le,C),L&&Ho(E,null,J,"created"),y(w,E,E.scopeId,le,J),Y){for(const pe in Y)pe!=="value"&&!di(pe)&&i(w,pe,null,Y[pe],Z,J);"value"in Y&&i(w,"value",null,Y.value,Z),(I=Y.onVnodeBeforeMount)&&Rn(I,J,E)}L&&Ho(E,null,J,"beforeMount");const N=My(K,q);N&&q.beforeEnter(w),o(w,_,H),((I=Y&&Y.onVnodeMounted)||N||L)&&on(()=>{I&&Rn(I,J,E),N&&q.enter(w),L&&Ho(E,null,J,"mounted")},K)},y=(E,_,H,J,K)=>{if(H&&g(E,H),J)for(let Z=0;Z{for(let I=w;I{const C=_.el=E.el;let{patchFlag:w,dynamicChildren:I,dirs:Y}=_;w|=E.patchFlag&16;const re=E.props||Ye,q=_.props||Ye;let L;if(H&&$o(H,!1),(L=q.onVnodeBeforeUpdate)&&Rn(L,H,_,E),Y&&Ho(_,E,H,"beforeUpdate"),H&&$o(H,!0),(re.innerHTML&&q.innerHTML==null||re.textContent&&q.textContent==null)&&d(C,""),I?D(E.dynamicChildren,I,C,H,J,el(_,K),Z):le||ie(E,_,C,null,H,J,el(_,K),Z,!1),w>0){if(w&16)W(C,re,q,H,K);else if(w&2&&re.class!==q.class&&i(C,"class",null,q.class,K),w&4&&i(C,"style",re.style,q.style,K),w&8){const N=_.dynamicProps;for(let pe=0;pe{L&&Rn(L,H,_,E),Y&&Ho(_,E,H,"updated")},J)},D=(E,_,H,J,K,Z,le)=>{for(let C=0;C<_.length;C++){const w=E[C],I=_[C],Y=w.el&&(w.type===He||!jo(w,I)||w.shapeFlag&70)?u(w.el):H;b(w,I,Y,null,J,K,Z,le,!0)}},W=(E,_,H,J,K)=>{if(_!==H){if(_!==Ye)for(const Z in _)!di(Z)&&!(Z in H)&&i(E,Z,_[Z],null,K,J);for(const Z in H){if(di(Z))continue;const le=H[Z],C=_[Z];le!==C&&Z!=="value"&&i(E,Z,C,le,K,J)}"value"in H&&i(E,"value",_.value,H.value,K)}},M=(E,_,H,J,K,Z,le,C,w)=>{const I=_.el=E?E.el:s(""),Y=_.anchor=E?E.anchor:s("");let{patchFlag:re,dynamicChildren:q,slotScopeIds:L}=_;L&&(C=C?C.concat(L):L),E==null?(o(I,H,J),o(Y,H,J),R(_.children||[],H,Y,K,Z,le,C,w)):re>0&&re&64&&q&&E.dynamicChildren?(D(E.dynamicChildren,q,H,K,Z,le,C),(_.key!=null||K&&_===K.subTree)&&Fc(E,_,!0)):ie(E,_,H,Y,K,Z,le,C,w)},j=(E,_,H,J,K,Z,le,C,w)=>{_.slotScopeIds=C,E==null?_.shapeFlag&512?K.ctx.activate(_,H,J,le,w):ee(_,H,J,K,Z,le,w):B(E,_,w)},ee=(E,_,H,J,K,Z,le)=>{const C=E.component=Zy(E,J,K);if(fs(E)&&(C.ctx.renderer=bt),Yy(C,!1,le),C.asyncDep){if(K&&K.registerDep(C,X,le),!E.el){const w=C.subTree=me(kt);m(null,w,_,H)}}else X(C,E,_,H,K,Z,le)},B=(E,_,H)=>{const J=_.component=E.component;if(Fy(E,_,H))if(J.asyncDep&&!J.asyncResolved){$(J,_,H);return}else J.next=_,J.update();else _.el=E.el,J.vnode=_},X=(E,_,H,J,K,Z,le)=>{const C=()=>{if(E.isMounted){let{next:re,bu:q,u:L,parent:N,vnode:pe}=E;{const vt=Lg(E);if(vt){re&&(re.el=pe.el,$(E,re,le)),vt.asyncDep.then(()=>{E.isUnmounted||C()});return}}let be=re,Qe;$o(E,!1),re?(re.el=pe.el,$(E,re,le)):re=pe,q&&Ks(q),(Qe=re.props&&re.props.onVnodeBeforeUpdate)&&Rn(Qe,N,re,pe),$o(E,!0);const Ke=tl(E),st=E.subTree;E.subTree=Ke,b(st,Ke,u(st.el),Oe(st),E,K,Z),re.el=Ke.el,be===null&&Wy(E,Ke.el),L&&on(L,K),(Qe=re.props&&re.props.onVnodeUpdated)&&on(()=>Rn(Qe,N,re,pe),K)}else{let re;const{el:q,props:L}=_,{bm:N,m:pe,parent:be,root:Qe,type:Ke}=E,st=Ar(_);if($o(E,!1),N&&Ks(N),!st&&(re=L&&L.onVnodeBeforeMount)&&Rn(re,be,_),$o(E,!0),q&&en){const vt=()=>{E.subTree=tl(E),en(q,E.subTree,E,K,null)};st&&Ke.__asyncHydrate?Ke.__asyncHydrate(q,E,vt):vt()}else{Qe.ce&&Qe.ce._injectChildStyle(Ke);const vt=E.subTree=tl(E);b(null,vt,H,J,E,K,Z),_.el=vt.el}if(pe&&on(pe,K),!st&&(re=L&&L.onVnodeMounted)){const vt=_;on(()=>Rn(re,be,vt),K)}(_.shapeFlag&256||be&&Ar(be.vnode)&&be.vnode.shapeFlag&256)&&E.a&&on(E.a,K),E.isMounted=!0,_=H=J=null}};E.scope.on();const w=E.effect=new jf(C);E.scope.off();const I=E.update=w.run.bind(w),Y=E.job=w.runIfDirty.bind(w);Y.i=E,Y.id=E.uid,w.scheduler=()=>Lc(Y),$o(E,!0),I()},$=(E,_,H)=>{_.component=E;const J=E.vnode.props;E.vnode=_,E.next=null,wy(E,_.props,J,H),Ry(E,_.children,H),So(),Gd(E),To()},ie=(E,_,H,J,K,Z,le,C,w=!1)=>{const I=E&&E.children,Y=E?E.shapeFlag:0,re=_.children,{patchFlag:q,shapeFlag:L}=_;if(q>0){if(q&128){ye(I,re,H,J,K,Z,le,C,w);return}else if(q&256){ve(I,re,H,J,K,Z,le,C,w);return}}L&8?(Y&16&&_e(I,K,Z),re!==I&&d(H,re)):Y&16?L&16?ye(I,re,H,J,K,Z,le,C,w):_e(I,K,Z,!0):(Y&8&&d(H,""),L&16&&R(re,H,J,K,Z,le,C,w))},ve=(E,_,H,J,K,Z,le,C,w)=>{E=E||wr,_=_||wr;const I=E.length,Y=_.length,re=Math.min(I,Y);let q;for(q=0;qY?_e(E,K,Z,!0,!1,re):R(_,H,J,K,Z,le,C,w,re)},ye=(E,_,H,J,K,Z,le,C,w)=>{let I=0;const Y=_.length;let re=E.length-1,q=Y-1;for(;I<=re&&I<=q;){const L=E[I],N=_[I]=w?ho(_[I]):Dn(_[I]);if(jo(L,N))b(L,N,H,null,K,Z,le,C,w);else break;I++}for(;I<=re&&I<=q;){const L=E[re],N=_[q]=w?ho(_[q]):Dn(_[q]);if(jo(L,N))b(L,N,H,null,K,Z,le,C,w);else break;re--,q--}if(I>re){if(I<=q){const L=q+1,N=Lq)for(;I<=re;)De(E[I],K,Z,!0),I++;else{const L=I,N=I,pe=new Map;for(I=N;I<=q;I++){const ne=_[I]=w?ho(_[I]):Dn(_[I]);ne.key!=null&&pe.set(ne.key,I)}let be,Qe=0;const Ke=q-N+1;let st=!1,vt=0;const Ut=new Array(Ke);for(I=0;I=Ke){De(ne,K,Z,!0);continue}let he;if(ne.key!=null)he=pe.get(ne.key);else for(be=N;be<=q;be++)if(Ut[be-N]===0&&jo(ne,_[be])){he=be;break}he===void 0?De(ne,K,Z,!0):(Ut[he-N]=I+1,he>=vt?vt=he:st=!0,b(ne,_[he],H,null,K,Z,le,C,w),Qe++)}const qr=st?Dy(Ut):wr;for(be=qr.length-1,I=Ke-1;I>=0;I--){const ne=N+I,he=_[ne],xe=ne+1{const{el:Z,type:le,transition:C,children:w,shapeFlag:I}=E;if(I&6){Ae(E.component.subTree,_,H,J);return}if(I&128){E.suspense.move(_,H,J);return}if(I&64){le.move(E,_,H,bt);return}if(le===He){o(Z,_,H);for(let re=0;reC.enter(Z),K);else{const{leave:re,delayLeave:q,afterLeave:L}=C,N=()=>o(Z,_,H),pe=()=>{re(Z,()=>{N(),L&&L()})};q?q(Z,N,pe):pe()}else o(Z,_,H)},De=(E,_,H,J=!1,K=!1)=>{const{type:Z,props:le,ref:C,children:w,dynamicChildren:I,shapeFlag:Y,patchFlag:re,dirs:q,cacheIndex:L}=E;if(re===-2&&(K=!1),C!=null&&Ml(C,null,H,E,!0),L!=null&&(_.renderCache[L]=void 0),Y&256){_.ctx.deactivate(E);return}const N=Y&1&&q,pe=!Ar(E);let be;if(pe&&(be=le&&le.onVnodeBeforeUnmount)&&Rn(be,_,E),Y&6)pt(E.component,H,J);else{if(Y&128){E.suspense.unmount(H,J);return}N&&Ho(E,null,_,"beforeUnmount"),Y&64?E.type.remove(E,_,H,bt,J):I&&!I.hasOnce&&(Z!==He||re>0&&re&64)?_e(I,_,H,!1,!0):(Z===He&&re&384||!K&&Y&16)&&_e(w,_,H),J&&ut(E)}(pe&&(be=le&&le.onVnodeUnmounted)||N)&&on(()=>{be&&Rn(be,_,E),N&&Ho(E,null,_,"unmounted")},H)},ut=E=>{const{type:_,el:H,anchor:J,transition:K}=E;if(_===He){Je(H,J);return}if(_===nl){v(E);return}const Z=()=>{r(H),K&&!K.persisted&&K.afterLeave&&K.afterLeave()};if(E.shapeFlag&1&&K&&!K.persisted){const{leave:le,delayLeave:C}=K,w=()=>le(H,Z);C?C(E.el,Z,w):w()}else Z()},Je=(E,_)=>{let H;for(;E!==_;)H=h(E),r(E),E=H;r(_)},pt=(E,_,H)=>{const{bum:J,scope:K,job:Z,subTree:le,um:C,m:w,a:I}=E;Qd(w),Qd(I),J&&Ks(J),K.stop(),Z&&(Z.flags|=8,De(le,E,_,H)),C&&on(C,_),on(()=>{E.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&E.asyncDep&&!E.asyncResolved&&E.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},_e=(E,_,H,J=!1,K=!1,Z=0)=>{for(let le=Z;le{if(E.shapeFlag&6)return Oe(E.component.subTree);if(E.shapeFlag&128)return E.suspense.next();const _=h(E.anchor||E.el),H=_&&_[dg];return H?h(H):_};let Dt=!1;const Ie=(E,_,H)=>{E==null?_._vnode&&De(_._vnode,null,null,!0):b(_._vnode||null,E,_,null,null,null,H),_._vnode=E,Dt||(Dt=!0,Gd(),sg(),Dt=!1)},bt={p:b,um:De,m:Ae,r:ut,mt:ee,mc:R,pc:ie,pbc:D,n:Oe,o:e};let Bt,en;return{render:Ie,hydrate:Bt,createApp:xy(Ie,Bt)}}function el({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function $o({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function My(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Fc(e,t,n=!1){const o=e.children,r=t.children;if(we(o)&&we(r))for(let i=0;i>1,e[n[s]]0&&(t[o]=n[i-1]),n[i]=o)}}for(i=n.length,a=n[i-1];i-- >0;)n[i]=a,a=t[a];return n}function Lg(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Lg(t)}function Qd(e){if(e)for(let t=0;tMe(Oy);function bo(e,t){return Wc(e,null,t)}function ot(e,t,n){return Wc(e,t,n)}function Wc(e,t,n=Ye){const{immediate:o,deep:r,flush:i,once:a}=n,s=yt({},n);let l;if(ps)if(i==="sync"){const h=Ly();l=h.__watcherHandles||(h.__watcherHandles=[])}else if(!t||o)s.once=!0;else return{stop:Ln,resume:Ln,pause:Ln};const c=Lt;s.call=(h,g,f)=>An(h,c,g,f);let d=!1;i==="post"?s.scheduler=h=>{on(h,c&&c.suspense)}:i!=="sync"&&(d=!0,s.scheduler=(h,g)=>{g?h():Lc(h)}),s.augmentJob=h=>{t&&(h.flags|=4),d&&(h.flags|=2,c&&(h.id=c.uid,h.i=c))};const u=Qv(e,t,s);return l&&l.push(u),u}function Hy(e,t,n){const o=this.proxy,r=ft(e)?e.includes(".")?Hg(o,e):()=>o[e]:e.bind(o,o);let i;Re(t)?i=t:(i=t.handler,n=t);const a=Fi(this),s=Wc(r,i.bind(o),n);return a(),s}function Hg(e,t){const n=t.split(".");return()=>{let o=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${er(t)}Modifiers`]||e[`${ir(t)}Modifiers`];function By(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||Ye;let r=n;const i=t.startsWith("update:"),a=i&&$y(o,t.slice(7));a&&(a.trim&&(r=n.map(d=>ft(d)?d.trim():d)),a.number&&(r=n.map(mv)));let s,l=o[s=Us(t)]||o[s=Us(er(t))];!l&&i&&(l=o[s=Us(ir(t))]),l&&An(l,e,6,r);const c=o[s+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,An(c,e,6,r)}}function $g(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(r!==void 0)return r;const i=e.emits;let a={},s=!1;if(!Re(e)){const l=c=>{const d=$g(c,t,!0);d&&(s=!0,yt(a,d))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!s?(rt(e)&&o.set(e,null),null):(we(i)?i.forEach(l=>a[l]=null):yt(a,i),rt(e)&&o.set(e,a),a)}function ms(e,t){return!e||!rs(t)?!1:(t=t.slice(2).replace(/Once$/,""),Fe(e,t[0].toLowerCase()+t.slice(1))||Fe(e,ir(t))||Fe(e,t))}function tl(e){const{type:t,vnode:n,proxy:o,withProxy:r,propsOptions:[i],slots:a,attrs:s,emit:l,render:c,renderCache:d,props:u,data:h,setupState:g,ctx:f,inheritAttrs:b}=e,p=Ha(e);let m,k;try{if(n.shapeFlag&4){const v=r||o,x=v;m=Dn(c.call(x,v,d,u,g,h,f)),k=s}else{const v=t;m=Dn(v.length>1?v(u,{attrs:s,slots:a,emit:l}):v(u,null)),k=t.props?s:Ny(s)}}catch(v){gi.length=0,us(v,e,1),m=me(kt)}let T=m;if(k&&b!==!1){const v=Object.keys(k),{shapeFlag:x}=T;v.length&&x&7&&(i&&v.some(yc)&&(k=zy(k,i)),T=yn(T,k,!1,!0))}return n.dirs&&(T=yn(T,null,!1,!0),T.dirs=T.dirs?T.dirs.concat(n.dirs):n.dirs),n.transition&&nr(T,n.transition),m=T,Ha(p),m}const Ny=e=>{let t;for(const n in e)(n==="class"||n==="style"||rs(n))&&((t||(t={}))[n]=e[n]);return t},zy=(e,t)=>{const n={};for(const o in e)(!yc(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function Fy(e,t,n){const{props:o,children:r,component:i}=e,{props:a,children:s,patchFlag:l}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return o?eu(o,a,c):!!a;if(l&8){const d=t.dynamicProps;for(let u=0;ue.__isSuspense;function jy(e,t){t&&t.pendingBranch?we(e)?t.effects.push(...e):t.effects.push(e):ny(e)}const He=Symbol.for("v-fgt"),Br=Symbol.for("v-txt"),kt=Symbol.for("v-cmt"),nl=Symbol.for("v-stc"),gi=[];let cn=null;function We(e=!1){gi.push(cn=e?null:[])}function Gy(){gi.pop(),cn=gi[gi.length-1]||null}let _i=1;function tu(e){_i+=e,e<0&&cn&&(cn.hasOnce=!0)}function Ng(e){return e.dynamicChildren=_i>0?cn||wr:null,Gy(),_i>0&&cn&&cn.push(e),e}function vn(e,t,n,o,r,i){return Ng(Gt(e,t,n,o,r,i,!0))}function wt(e,t,n,o,r){return Ng(me(e,t,n,o,r,!0))}function Pi(e){return e?e.__v_isVNode===!0:!1}function jo(e,t){return e.type===t.type&&e.key===t.key}const zg=({key:e})=>e??null,Pa=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ft(e)||ct(e)||Re(e)?{i:At,r:e,k:t,f:!!n}:e:null);function Gt(e,t=null,n=null,o=0,r=null,i=e===He?0:1,a=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&zg(t),ref:t&&Pa(t),scopeId:cg,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:At};return s?(jc(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=ft(n)?8:16),_i>0&&!a&&cn&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&cn.push(l),l}const me=Vy;function Vy(e,t=null,n=null,o=0,r=null,i=!1){if((!e||e===gy)&&(e=kt),Pi(e)){const s=yn(e,t,!0);return n&&jc(s,n),_i>0&&!i&&cn&&(s.shapeFlag&6?cn[cn.indexOf(e)]=s:cn.push(s)),s.patchFlag=-2,s}if(t2(e)&&(e=e.__vccOpts),t){t=Uy(t);let{class:s,style:l}=t;s&&!ft(s)&&(t.class=xc(s)),rt(l)&&(Mc(l)&&!we(l)&&(l=yt({},l)),t.style=ss(l))}const a=ft(e)?1:Bg(e)?128:ug(e)?64:rt(e)?4:Re(e)?2:0;return Gt(e,t,n,o,r,a,i,!0)}function Uy(e){return e?Mc(e)||Ag(e)?yt({},e):e:null}function yn(e,t,n=!1,o=!1){const{props:r,ref:i,patchFlag:a,children:s,transition:l}=e,c=t?$n(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&zg(c),ref:t&&t.ref?n&&i?we(i)?i.concat(Pa(t)):[i,Pa(t)]:Pa(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==He?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&yn(e.ssContent),ssFallback:e.ssFallback&&yn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&o&&nr(d,l.clone(d)),d}function _t(e=" ",t=0){return me(Br,null,e,t)}function Ky(e="",t=!1){return t?(We(),wt(kt,null,e)):me(kt,null,e)}function Dn(e){return e==null||typeof e=="boolean"?me(kt):we(e)?me(He,null,e.slice()):typeof e=="object"?ho(e):me(Br,null,String(e))}function ho(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:yn(e)}function jc(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(we(t))n=16;else if(typeof t=="object")if(o&65){const r=t.default;r&&(r._c&&(r._d=!1),jc(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ag(t)?t._ctx=At:r===3&&At&&(At.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Re(t)?(t={default:t,_ctx:At},n=32):(t=String(t),o&64?(n=16,t=[_t(t)]):n=8);e.children=t,e.shapeFlag|=n}function $n(...e){const t={};for(let n=0;nLt||At;let Ba,$l;{const e=$f(),t=(n,o)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(o),i=>{r.length>1?r.forEach(a=>a(i)):r[0](i)}};Ba=t("__VUE_INSTANCE_SETTERS__",n=>Lt=n),$l=t("__VUE_SSR_SETTERS__",n=>ps=n)}const Fi=e=>{const t=Lt;return Ba(e),e.scope.on(),()=>{e.scope.off(),Ba(t)}},nu=()=>{Lt&&Lt.scope.off(),Ba(null)};function Fg(e){return e.vnode.shapeFlag&4}let ps=!1;function Yy(e,t=!1,n=!1){t&&$l(t);const{props:o,children:r}=e.vnode,i=Fg(e);Ty(e,o,i,t),Ay(e,r,n);const a=i?Jy(e,t):void 0;return t&&$l(!1),a}function Jy(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,my);const{setup:o}=n;if(o){const r=e.setupContext=o.length>1?e2(e):null,i=Fi(e);So();const a=zi(o,e,0,[e.props,r]);if(To(),i(),Mf(a)){if(Ar(e)||vg(e),a.then(nu,nu),t)return a.then(s=>{ou(e,s,t)}).catch(s=>{us(s,e,0)});e.asyncDep=a}else ou(e,a,t)}else Wg(e,t)}function ou(e,t,n){Re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:rt(t)&&(e.setupState=og(t)),Wg(e,n)}let ru;function Wg(e,t,n){const o=e.type;if(!e.render){if(!t&&ru&&!o.render){const r=o.template||Nc(e).template;if(r){const{isCustomElement:i,compilerOptions:a}=e.appContext.config,{delimiters:s,compilerOptions:l}=o,c=yt(yt({isCustomElement:i,delimiters:s},a),l);o.render=ru(r,c)}}e.render=o.render||Ln}{const r=Fi(e);So();try{py(e)}finally{To(),r()}}}const Qy={get(e,t){return Vt(e,"get",""),e[t]}};function e2(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Qy),slots:e.slots,emit:e.emit,expose:t}}function bs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(og(xi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in fi)return fi[n](e)},has(t,n){return n in t||n in fi}})):e.proxy}function t2(e){return Re(e)&&"__vccOpts"in e}const z=(e,t)=>Yv(e,t,ps);function S(e,t,n){const o=arguments.length;return o===2?rt(t)&&!we(t)?Pi(t)?me(e,null,[t]):me(e,t):me(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&Pi(n)&&(n=[n]),me(e,t,n))}const n2="3.5.4";/** +* @vue/runtime-dom v3.5.4 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Bl;const iu=typeof window<"u"&&window.trustedTypes;if(iu)try{Bl=iu.createPolicy("vue",{createHTML:e=>e})}catch{}const jg=Bl?e=>Bl.createHTML(e):e=>e,o2="http://www.w3.org/2000/svg",r2="http://www.w3.org/1998/Math/MathML",Un=typeof document<"u"?document:null,au=Un&&Un.createElement("template"),i2={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r=t==="svg"?Un.createElementNS(o2,e):t==="mathml"?Un.createElementNS(r2,e):n?Un.createElement(e,{is:n}):Un.createElement(e);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>Un.createTextNode(e),createComment:e=>Un.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Un.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,o,r,i){const a=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{au.innerHTML=jg(o==="svg"?`${e}`:o==="mathml"?`${e}`:e);const s=au.content;if(o==="svg"||o==="mathml"){const l=s.firstChild;for(;l.firstChild;)s.appendChild(l.firstChild);s.removeChild(l)}t.insertBefore(s,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},oo="transition",Jr="animation",Ir=Symbol("_vtc"),Gg={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Vg=yt({},gg,Gg),a2=e=>(e.displayName="Transition",e.props=Vg,e),Bn=a2((e,{slots:t})=>S(sy,Ug(e),t)),Bo=(e,t=[])=>{we(e)?e.forEach(n=>n(...t)):e&&e(...t)},su=e=>e?we(e)?e.some(t=>t.length>1):e.length>1:!1;function Ug(e){const t={};for(const M in e)M in Gg||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:o,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:c=a,appearToClass:d=s,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,f=s2(r),b=f&&f[0],p=f&&f[1],{onBeforeEnter:m,onEnter:k,onEnterCancelled:T,onLeave:v,onLeaveCancelled:x,onBeforeAppear:A=m,onAppear:y=k,onAppearCancelled:R=T}=t,P=(M,j,ee)=>{so(M,j?d:s),so(M,j?c:a),ee&&ee()},D=(M,j)=>{M._isLeaving=!1,so(M,u),so(M,g),so(M,h),j&&j()},W=M=>(j,ee)=>{const B=M?y:k,X=()=>P(j,M,ee);Bo(B,[j,X]),lu(()=>{so(j,M?l:i),Vn(j,M?d:s),su(B)||cu(j,o,b,X)})};return yt(t,{onBeforeEnter(M){Bo(m,[M]),Vn(M,i),Vn(M,a)},onBeforeAppear(M){Bo(A,[M]),Vn(M,l),Vn(M,c)},onEnter:W(!1),onAppear:W(!0),onLeave(M,j){M._isLeaving=!0;const ee=()=>D(M,j);Vn(M,u),Vn(M,h),qg(),lu(()=>{M._isLeaving&&(so(M,u),Vn(M,g),su(v)||cu(M,o,p,ee))}),Bo(v,[M,ee])},onEnterCancelled(M){P(M,!1),Bo(T,[M])},onAppearCancelled(M){P(M,!0),Bo(R,[M])},onLeaveCancelled(M){D(M),Bo(x,[M])}})}function s2(e){if(e==null)return null;if(rt(e))return[ol(e.enter),ol(e.leave)];{const t=ol(e);return[t,t]}}function ol(e){return pv(e)}function Vn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ir]||(e[Ir]=new Set)).add(t)}function so(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const n=e[Ir];n&&(n.delete(t),n.size||(e[Ir]=void 0))}function lu(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let l2=0;function cu(e,t,n,o){const r=e._endId=++l2,i=()=>{r===e._endId&&o()};if(n)return setTimeout(i,n);const{type:a,timeout:s,propCount:l}=Kg(e,t);if(!a)return o();const c=a+"end";let d=0;const u=()=>{e.removeEventListener(c,h),i()},h=g=>{g.target===e&&++d>=l&&u()};setTimeout(()=>{d(n[f]||"").split(", "),r=o(`${oo}Delay`),i=o(`${oo}Duration`),a=du(r,i),s=o(`${Jr}Delay`),l=o(`${Jr}Duration`),c=du(s,l);let d=null,u=0,h=0;t===oo?a>0&&(d=oo,u=a,h=i.length):t===Jr?c>0&&(d=Jr,u=c,h=l.length):(u=Math.max(a,c),d=u>0?a>c?oo:Jr:null,h=d?d===oo?i.length:l.length:0);const g=d===oo&&/\b(transform|all)(,|$)/.test(o(`${oo}Property`).toString());return{type:d,timeout:u,propCount:h,hasTransform:g}}function du(e,t){for(;e.lengthuu(n)+uu(e[o])))}function uu(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function qg(){return document.body.offsetHeight}function c2(e,t,n){const o=e[Ir];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Na=Symbol("_vod"),Xg=Symbol("_vsh"),Mr={beforeMount(e,{value:t},{transition:n}){e[Na]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Qr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),Qr(e,!0),o.enter(e)):o.leave(e,()=>{Qr(e,!1)}):Qr(e,t))},beforeUnmount(e,{value:t}){Qr(e,t)}};function Qr(e,t){e.style.display=t?e[Na]:"none",e[Xg]=!t}const d2=Symbol(""),u2=/(^|;)\s*display\s*:/;function h2(e,t,n){const o=e.style,r=ft(n);let i=!1;if(n&&!r){if(t)if(ft(t))for(const a of t.split(";")){const s=a.slice(0,a.indexOf(":")).trim();n[s]==null&&Aa(o,s,"")}else for(const a in t)n[a]==null&&Aa(o,a,"");for(const a in n)a==="display"&&(i=!0),Aa(o,a,n[a])}else if(r){if(t!==n){const a=o[d2];a&&(n+=";"+a),o.cssText=n,i=u2.test(n)}}else t&&e.removeAttribute("style");Na in e&&(e[Na]=i?o.display:"",e[Xg]&&(o.display="none"))}const hu=/\s*!important$/;function Aa(e,t,n){if(we(n))n.forEach(o=>Aa(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=f2(e,t);hu.test(n)?e.setProperty(ir(o),n.replace(hu,""),"important"):e[o]=n}}const fu=["Webkit","Moz","ms"],rl={};function f2(e,t){const n=rl[t];if(n)return n;let o=er(t);if(o!=="filter"&&o in e)return rl[t]=o;o=Lf(o);for(let r=0;ril||(y2.then(()=>il=0),il=Date.now());function k2(e,t){const n=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=n.attached)return;An(x2(o,n.value),t,5,[o])};return n.value=e,n.attached=C2(),n}function x2(e,t){if(we(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(o=>r=>!r._stopped&&o&&o(r))}else return t}const vu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,S2=(e,t,n,o,r,i)=>{const a=r==="svg";t==="class"?c2(e,o,a):t==="style"?h2(e,n,o):rs(t)?yc(t)||b2(e,t,n,o,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):T2(e,t,o,a))?(g2(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&mu(e,t,o,a,i,t!=="value")):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),mu(e,t,o,a))};function T2(e,t,n,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&vu(t)&&Re(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return vu(t)&&ft(n)?!1:!!(t in e||e._isVueCE&&(/[A-Z]/.test(t)||!ft(n)))}const Zg=new WeakMap,Yg=new WeakMap,za=Symbol("_moveCb"),yu=Symbol("_enterCb"),w2=e=>(delete e.props.mode,e),_2=w2({name:"TransitionGroup",props:yt({},Vg,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=rn(),o=fg();let r,i;return kg(()=>{if(!r.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!I2(r[0].el,n.vnode.el,a))return;r.forEach(A2),r.forEach(R2);const s=r.filter(E2);qg(),s.forEach(l=>{const c=l.el,d=c.style;Vn(c,a),d.transform=d.webkitTransform=d.transitionDuration="";const u=c[za]=h=>{h&&h.target!==c||(!h||/transform$/.test(h.propertyName))&&(c.removeEventListener("transitionend",u),c[za]=null,so(c,a))};c.addEventListener("transitionend",u)})}),()=>{const a=$e(e),s=Ug(a);let l=a.tag||He;if(r=[],i)for(let c=0;c{s.split(/\s+/).forEach(l=>l&&o.classList.remove(l))}),n.split(/\s+/).forEach(s=>s&&o.classList.add(s)),o.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(o);const{hasTransform:a}=Kg(o);return i.removeChild(o),a}const M2=yt({patchProp:S2},i2);let Cu;function D2(){return Cu||(Cu=Ey(M2))}const O2=(...e)=>{const t=D2().createApp(...e),{mount:n}=t;return t.mount=o=>{const r=H2(o);if(!r)return;const i=t._component;!Re(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const a=n(r,!1,L2(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),a},t};function L2(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function H2(e){return ft(e)?document.querySelector(e):e}let Fa=[];const Jg=new WeakMap;function $2(){Fa.forEach(e=>e(...Jg.get(e))),Fa=[]}function Qg(e,...t){Jg.set(e,t),!Fa.includes(e)&&Fa.push(e)===1&&requestAnimationFrame($2)}function ku(e,t){let{target:n}=e;for(;n;){if(n.dataset&&n.dataset[t]!==void 0)return!0;n=n.parentElement}return!1}function Ai(e){return e.composedPath()[0]||null}function B2(e){if(typeof e=="number")return{"":e.toString()};const t={};return e.split(/ +/).forEach(n=>{if(n==="")return;const[o,r]=n.split(":");r===void 0?t[""]=o:t[o]=r}),t}function gr(e,t){var n;if(e==null)return;const o=B2(e);if(t===void 0)return o[""];if(typeof t=="string")return(n=o[t])!==null&&n!==void 0?n:o[""];if(Array.isArray(t)){for(let r=t.length-1;r>=0;--r){const i=t[r];if(i in o)return o[i]}return o[""]}else{let r,i=-1;return Object.keys(o).forEach(a=>{const s=Number(a);!Number.isNaN(s)&&t>=s&&s>=i&&(i=s,r=o[a])}),r}}function Wa(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Sr(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function Wi(e,t){const n=e.trim().split(/\s+/g),o={top:n[0]};switch(n.length){case 1:o.right=n[0],o.bottom=n[0],o.left=n[0];break;case 2:o.right=n[1],o.left=n[1],o.bottom=n[0];break;case 3:o.right=n[1],o.bottom=n[2],o.left=n[1];break;case 4:o.right=n[1],o.bottom=n[2],o.left=n[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o}function N2(e,t){const[n,o]=e.split(" ");return{row:n,col:o||n}}const xu={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"},Nr="^\\s*",zr="\\s*$",Go="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",Vo="([0-9A-Fa-f])",Uo="([0-9A-Fa-f]{2})",z2=new RegExp(`${Nr}rgb\\s*\\(${Go},${Go},${Go}\\)${zr}`),F2=new RegExp(`${Nr}rgba\\s*\\(${Go},${Go},${Go},${Go}\\)${zr}`),W2=new RegExp(`${Nr}#${Vo}${Vo}${Vo}${zr}`),j2=new RegExp(`${Nr}#${Uo}${Uo}${Uo}${zr}`),G2=new RegExp(`${Nr}#${Vo}${Vo}${Vo}${Vo}${zr}`),V2=new RegExp(`${Nr}#${Uo}${Uo}${Uo}${Uo}${zr}`);function tn(e){return parseInt(e,16)}function Zn(e){try{let t;if(t=j2.exec(e))return[tn(t[1]),tn(t[2]),tn(t[3]),1];if(t=z2.exec(e))return[Wt(t[1]),Wt(t[5]),Wt(t[9]),1];if(t=F2.exec(e))return[Wt(t[1]),Wt(t[5]),Wt(t[9]),mi(t[13])];if(t=W2.exec(e))return[tn(t[1]+t[1]),tn(t[2]+t[2]),tn(t[3]+t[3]),1];if(t=V2.exec(e))return[tn(t[1]),tn(t[2]),tn(t[3]),mi(tn(t[4])/255)];if(t=G2.exec(e))return[tn(t[1]+t[1]),tn(t[2]+t[2]),tn(t[3]+t[3]),mi(tn(t[4]+t[4])/255)];if(e in xu)return Zn(xu[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(t){throw t}}function U2(e){return e>1?1:e<0?0:e}function Nl(e,t,n,o){return`rgba(${Wt(e)}, ${Wt(t)}, ${Wt(n)}, ${U2(o)})`}function al(e,t,n,o,r){return Wt((e*t*(1-o)+n*o)/r)}function ce(e,t){Array.isArray(e)||(e=Zn(e)),Array.isArray(t)||(t=Zn(t));const n=e[3],o=t[3],r=mi(n+o-n*o);return Nl(al(e[0],n,t[0],o,r),al(e[1],n,t[1],o,r),al(e[2],n,t[2],o,r),r)}function U(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:Zn(e);return t.alpha?Nl(n,o,r,t.alpha):Nl(n,o,r,i)}function mt(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:Zn(e),{lightness:a=1,alpha:s=1}=t;return K2([n*a,o*a,r*a,i*s])}function mi(e){const t=Math.round(Number(e)*100)/100;return t>1?1:t<0?0:t}function Wt(e){const t=Math.round(Number(e));return t>255?255:t<0?0:t}function K2(e){const[t,n,o]=e;return 3 in e?`rgba(${Wt(t)}, ${Wt(n)}, ${Wt(o)}, ${mi(e[3])})`:`rgba(${Wt(t)}, ${Wt(n)}, ${Wt(o)}, 1)`}function vs(e=8){return Math.random().toString(16).slice(2,2+e)}function em(e,t="default",n=[]){const r=e.$slots[t];return r===void 0?n:r()}function or(e,t=[],n){const o={};return t.forEach(r=>{o[r]=e[r]}),Object.assign(o,n)}function Gc(e,t=[],n){const o={};return Object.getOwnPropertyNames(e).forEach(i=>{t.includes(i)||(o[i]=e[i])}),Object.assign(o,n)}function Ri(e,t=!0,n=[]){return e.forEach(o=>{if(o!==null){if(typeof o!="object"){(typeof o=="string"||typeof o=="number")&&n.push(_t(String(o)));return}if(Array.isArray(o)){Ri(o,t,n);return}if(o.type===He){if(o.children===null)return;Array.isArray(o.children)&&Ri(o.children,t,n)}else{if(o.type===kt&&t)return;n.push(o)}}}),n}function ze(e,...t){if(Array.isArray(e))e.forEach(n=>ze(n,...t));else return e(...t)}function ys(e){return Object.keys(e)}function Ot(e,...t){return typeof e=="function"?e(...t):typeof e=="string"?_t(e):typeof e=="number"?_t(String(e)):null}function Dr(e,t){console.error(`[naive/${e}]: ${t}`)}function tm(e,t){throw new Error(`[naive/${e}]: ${t}`)}function zl(e,t="default",n=void 0){const o=e[t];if(!o)return Dr("getFirstSlotVNode",`slot[${t}] is empty`),null;const r=Ri(o(n));return r.length===1?r[0]:(Dr("getFirstSlotVNode",`slot[${t}] should have exactly one child`),null)}function q2(e){return t=>{t?e.value=t.$el:e.value=null}}function xn(e){return e.some(t=>Pi(t)?!(t.type===kt||t.type===He&&!xn(t.children)):!0)?e:null}function Zo(e,t){return e&&xn(e())||t()}function X2(e,t,n){return e&&xn(e(t))||n(t)}function Pt(e,t){const n=e&&xn(e());return t(n||null)}function Fl(e){return!(e&&xn(e()))}function Z2(e){var t;const n=(t=e.dirs)===null||t===void 0?void 0:t.find(({dir:o})=>o===Mr);return!!(n&&n.value===!1)}const Su=de({render(){var e,t;return(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e)}}),Y2=/^(\d|\.)+$/,Tu=/(\d|\.)+/;function Ra(e,{c:t=1,offset:n=0,attachPx:o=!0}={}){if(typeof e=="number"){const r=(e+n)*t;return r===0?"0":`${r}px`}else if(typeof e=="string")if(Y2.test(e)){const r=(Number(e)+n)*t;return o?r===0?"0":`${r}px`:`${r}`}else{const r=Tu.exec(e);return r?e.replace(Tu,String((Number(r[0])+n)*t)):e}return e}function wu(e){return e.replace(/#|\(|\)|,|\s|\./g,"_")}function J2(e){const{left:t,right:n,top:o,bottom:r}=Wi(e);return`${o} ${n} ${r} ${t}`}function Q2(e){let t=0;for(let n=0;n{let r=Q2(o);if(r){if(r===1){e.forEach(a=>{n.push(o.replace("&",a))});return}}else{e.forEach(a=>{n.push((a&&a+" ")+o)});return}let i=[o];for(;r--;){const a=[];i.forEach(s=>{e.forEach(l=>{a.push(s.replace("&",l))})}),i=a}i.forEach(a=>n.push(a))}),n}function nC(e,t){const n=[];return t.split(nm).forEach(o=>{e.forEach(r=>{n.push((r&&r+" ")+o)})}),n}function oC(e){let t=[""];return e.forEach(n=>{n=n&&n.trim(),n&&(n.includes("&")?t=tC(t,n):t=nC(t,n))}),t.join(", ").replace(eC," ")}function _u(e){if(!e)return;const t=e.parentElement;t&&t.removeChild(e)}function Cs(e,t){return(t??document.head).querySelector(`style[cssr-id="${e}"]`)}function rC(e){const t=document.createElement("style");return t.setAttribute("cssr-id",e),t}function la(e){return e?/^\s*@(s|m)/.test(e):!1}const iC=/[A-Z]/g;function om(e){return e.replace(iC,t=>"-"+t.toLowerCase())}function aC(e,t=" "){return typeof e=="object"&&e!==null?` { +**/let Bl;const iu=typeof window<"u"&&window.trustedTypes;if(iu)try{Bl=iu.createPolicy("vue",{createHTML:e=>e})}catch{}const jg=Bl?e=>Bl.createHTML(e):e=>e,o2="http://www.w3.org/2000/svg",r2="http://www.w3.org/1998/Math/MathML",Un=typeof document<"u"?document:null,au=Un&&Un.createElement("template"),i2={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r=t==="svg"?Un.createElementNS(o2,e):t==="mathml"?Un.createElementNS(r2,e):n?Un.createElement(e,{is:n}):Un.createElement(e);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>Un.createTextNode(e),createComment:e=>Un.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Un.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,o,r,i){const a=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{au.innerHTML=jg(o==="svg"?`${e}`:o==="mathml"?`${e}`:e);const s=au.content;if(o==="svg"||o==="mathml"){const l=s.firstChild;for(;l.firstChild;)s.appendChild(l.firstChild);s.removeChild(l)}t.insertBefore(s,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},oo="transition",Jr="animation",Ir=Symbol("_vtc"),Gg={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Vg=yt({},gg,Gg),a2=e=>(e.displayName="Transition",e.props=Vg,e),Bn=a2((e,{slots:t})=>S(sy,Ug(e),t)),Bo=(e,t=[])=>{we(e)?e.forEach(n=>n(...t)):e&&e(...t)},su=e=>e?we(e)?e.some(t=>t.length>1):e.length>1:!1;function Ug(e){const t={};for(const M in e)M in Gg||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:o,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:c=a,appearToClass:d=s,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,f=s2(r),b=f&&f[0],p=f&&f[1],{onBeforeEnter:m,onEnter:k,onEnterCancelled:T,onLeave:v,onLeaveCancelled:x,onBeforeAppear:A=m,onAppear:y=k,onAppearCancelled:R=T}=t,P=(M,j,ee)=>{so(M,j?d:s),so(M,j?c:a),ee&&ee()},D=(M,j)=>{M._isLeaving=!1,so(M,u),so(M,g),so(M,h),j&&j()},W=M=>(j,ee)=>{const B=M?y:k,X=()=>P(j,M,ee);Bo(B,[j,X]),lu(()=>{so(j,M?l:i),Vn(j,M?d:s),su(B)||cu(j,o,b,X)})};return yt(t,{onBeforeEnter(M){Bo(m,[M]),Vn(M,i),Vn(M,a)},onBeforeAppear(M){Bo(A,[M]),Vn(M,l),Vn(M,c)},onEnter:W(!1),onAppear:W(!0),onLeave(M,j){M._isLeaving=!0;const ee=()=>D(M,j);Vn(M,u),Vn(M,h),qg(),lu(()=>{M._isLeaving&&(so(M,u),Vn(M,g),su(v)||cu(M,o,p,ee))}),Bo(v,[M,ee])},onEnterCancelled(M){P(M,!1),Bo(T,[M])},onAppearCancelled(M){P(M,!0),Bo(R,[M])},onLeaveCancelled(M){D(M),Bo(x,[M])}})}function s2(e){if(e==null)return null;if(rt(e))return[ol(e.enter),ol(e.leave)];{const t=ol(e);return[t,t]}}function ol(e){return pv(e)}function Vn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ir]||(e[Ir]=new Set)).add(t)}function so(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const n=e[Ir];n&&(n.delete(t),n.size||(e[Ir]=void 0))}function lu(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let l2=0;function cu(e,t,n,o){const r=e._endId=++l2,i=()=>{r===e._endId&&o()};if(n)return setTimeout(i,n);const{type:a,timeout:s,propCount:l}=Kg(e,t);if(!a)return o();const c=a+"end";let d=0;const u=()=>{e.removeEventListener(c,h),i()},h=g=>{g.target===e&&++d>=l&&u()};setTimeout(()=>{d(n[f]||"").split(", "),r=o(`${oo}Delay`),i=o(`${oo}Duration`),a=du(r,i),s=o(`${Jr}Delay`),l=o(`${Jr}Duration`),c=du(s,l);let d=null,u=0,h=0;t===oo?a>0&&(d=oo,u=a,h=i.length):t===Jr?c>0&&(d=Jr,u=c,h=l.length):(u=Math.max(a,c),d=u>0?a>c?oo:Jr:null,h=d?d===oo?i.length:l.length:0);const g=d===oo&&/\b(transform|all)(,|$)/.test(o(`${oo}Property`).toString());return{type:d,timeout:u,propCount:h,hasTransform:g}}function du(e,t){for(;e.lengthuu(n)+uu(e[o])))}function uu(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function qg(){return document.body.offsetHeight}function c2(e,t,n){const o=e[Ir];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Na=Symbol("_vod"),Xg=Symbol("_vsh"),Mr={beforeMount(e,{value:t},{transition:n}){e[Na]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Qr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),Qr(e,!0),o.enter(e)):o.leave(e,()=>{Qr(e,!1)}):Qr(e,t))},beforeUnmount(e,{value:t}){Qr(e,t)}};function Qr(e,t){e.style.display=t?e[Na]:"none",e[Xg]=!t}const d2=Symbol(""),u2=/(^|;)\s*display\s*:/;function h2(e,t,n){const o=e.style,r=ft(n);let i=!1;if(n&&!r){if(t)if(ft(t))for(const a of t.split(";")){const s=a.slice(0,a.indexOf(":")).trim();n[s]==null&&Aa(o,s,"")}else for(const a in t)n[a]==null&&Aa(o,a,"");for(const a in n)a==="display"&&(i=!0),Aa(o,a,n[a])}else if(r){if(t!==n){const a=o[d2];a&&(n+=";"+a),o.cssText=n,i=u2.test(n)}}else t&&e.removeAttribute("style");Na in e&&(e[Na]=i?o.display:"",e[Xg]&&(o.display="none"))}const hu=/\s*!important$/;function Aa(e,t,n){if(we(n))n.forEach(o=>Aa(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=f2(e,t);hu.test(n)?e.setProperty(ir(o),n.replace(hu,""),"important"):e[o]=n}}const fu=["Webkit","Moz","ms"],rl={};function f2(e,t){const n=rl[t];if(n)return n;let o=er(t);if(o!=="filter"&&o in e)return rl[t]=o;o=Lf(o);for(let r=0;ril||(y2.then(()=>il=0),il=Date.now());function k2(e,t){const n=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=n.attached)return;An(x2(o,n.value),t,5,[o])};return n.value=e,n.attached=C2(),n}function x2(e,t){if(we(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(o=>r=>!r._stopped&&o&&o(r))}else return t}const vu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,S2=(e,t,n,o,r,i)=>{const a=r==="svg";t==="class"?c2(e,o,a):t==="style"?h2(e,n,o):rs(t)?yc(t)||b2(e,t,n,o,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):T2(e,t,o,a))?(g2(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&mu(e,t,o,a,i,t!=="value")):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),mu(e,t,o,a))};function T2(e,t,n,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&vu(t)&&Re(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return vu(t)&&ft(n)?!1:!!(t in e||e._isVueCE&&(/[A-Z]/.test(t)||!ft(n)))}const Zg=new WeakMap,Yg=new WeakMap,za=Symbol("_moveCb"),yu=Symbol("_enterCb"),w2=e=>(delete e.props.mode,e),_2=w2({name:"TransitionGroup",props:yt({},Vg,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=rn(),o=fg();let r,i;return kg(()=>{if(!r.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!I2(r[0].el,n.vnode.el,a))return;r.forEach(A2),r.forEach(R2);const s=r.filter(E2);qg(),s.forEach(l=>{const c=l.el,d=c.style;Vn(c,a),d.transform=d.webkitTransform=d.transitionDuration="";const u=c[za]=h=>{h&&h.target!==c||(!h||/transform$/.test(h.propertyName))&&(c.removeEventListener("transitionend",u),c[za]=null,so(c,a))};c.addEventListener("transitionend",u)})}),()=>{const a=$e(e),s=Ug(a);let l=a.tag||He;if(r=[],i)for(let c=0;c{s.split(/\s+/).forEach(l=>l&&o.classList.remove(l))}),n.split(/\s+/).forEach(s=>s&&o.classList.add(s)),o.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(o);const{hasTransform:a}=Kg(o);return i.removeChild(o),a}const M2=yt({patchProp:S2},i2);let Cu;function D2(){return Cu||(Cu=Ey(M2))}const O2=(...e)=>{const t=D2().createApp(...e),{mount:n}=t;return t.mount=o=>{const r=H2(o);if(!r)return;const i=t._component;!Re(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const a=n(r,!1,L2(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),a},t};function L2(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function H2(e){return ft(e)?document.querySelector(e):e}let Fa=[];const Jg=new WeakMap;function $2(){Fa.forEach(e=>e(...Jg.get(e))),Fa=[]}function Qg(e,...t){Jg.set(e,t),!Fa.includes(e)&&Fa.push(e)===1&&requestAnimationFrame($2)}function ku(e,t){let{target:n}=e;for(;n;){if(n.dataset&&n.dataset[t]!==void 0)return!0;n=n.parentElement}return!1}function Ai(e){return e.composedPath()[0]||null}function B2(e){if(typeof e=="number")return{"":e.toString()};const t={};return e.split(/ +/).forEach(n=>{if(n==="")return;const[o,r]=n.split(":");r===void 0?t[""]=o:t[o]=r}),t}function gr(e,t){var n;if(e==null)return;const o=B2(e);if(t===void 0)return o[""];if(typeof t=="string")return(n=o[t])!==null&&n!==void 0?n:o[""];if(Array.isArray(t)){for(let r=t.length-1;r>=0;--r){const i=t[r];if(i in o)return o[i]}return o[""]}else{let r,i=-1;return Object.keys(o).forEach(a=>{const s=Number(a);!Number.isNaN(s)&&t>=s&&s>=i&&(i=s,r=o[a])}),r}}function Wa(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function Sr(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function Wi(e,t){const n=e.trim().split(/\s+/g),o={top:n[0]};switch(n.length){case 1:o.right=n[0],o.bottom=n[0],o.left=n[0];break;case 2:o.right=n[1],o.left=n[1],o.bottom=n[0];break;case 3:o.right=n[1],o.bottom=n[2],o.left=n[1];break;case 4:o.right=n[1],o.bottom=n[2],o.left=n[3];break;default:throw new Error("[seemly/getMargin]:"+e+" is not a valid value.")}return o}function N2(e,t){const[n,o]=e.split(" ");return{row:n,col:o||n}}const xu={black:"#000",silver:"#C0C0C0",gray:"#808080",white:"#FFF",maroon:"#800000",red:"#F00",purple:"#800080",fuchsia:"#F0F",green:"#008000",lime:"#0F0",olive:"#808000",yellow:"#FF0",navy:"#000080",blue:"#00F",teal:"#008080",aqua:"#0FF",transparent:"#0000"},Nr="^\\s*",zr="\\s*$",Go="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",Vo="([0-9A-Fa-f])",Uo="([0-9A-Fa-f]{2})",z2=new RegExp(`${Nr}rgb\\s*\\(${Go},${Go},${Go}\\)${zr}`),F2=new RegExp(`${Nr}rgba\\s*\\(${Go},${Go},${Go},${Go}\\)${zr}`),W2=new RegExp(`${Nr}#${Vo}${Vo}${Vo}${zr}`),j2=new RegExp(`${Nr}#${Uo}${Uo}${Uo}${zr}`),G2=new RegExp(`${Nr}#${Vo}${Vo}${Vo}${Vo}${zr}`),V2=new RegExp(`${Nr}#${Uo}${Uo}${Uo}${Uo}${zr}`);function tn(e){return parseInt(e,16)}function Zn(e){try{let t;if(t=j2.exec(e))return[tn(t[1]),tn(t[2]),tn(t[3]),1];if(t=z2.exec(e))return[Wt(t[1]),Wt(t[5]),Wt(t[9]),1];if(t=F2.exec(e))return[Wt(t[1]),Wt(t[5]),Wt(t[9]),mi(t[13])];if(t=W2.exec(e))return[tn(t[1]+t[1]),tn(t[2]+t[2]),tn(t[3]+t[3]),1];if(t=V2.exec(e))return[tn(t[1]),tn(t[2]),tn(t[3]),mi(tn(t[4])/255)];if(t=G2.exec(e))return[tn(t[1]+t[1]),tn(t[2]+t[2]),tn(t[3]+t[3]),mi(tn(t[4]+t[4])/255)];if(e in xu)return Zn(xu[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(t){throw t}}function U2(e){return e>1?1:e<0?0:e}function Nl(e,t,n,o){return`rgba(${Wt(e)}, ${Wt(t)}, ${Wt(n)}, ${U2(o)})`}function al(e,t,n,o,r){return Wt((e*t*(1-o)+n*o)/r)}function ce(e,t){Array.isArray(e)||(e=Zn(e)),Array.isArray(t)||(t=Zn(t));const n=e[3],o=t[3],r=mi(n+o-n*o);return Nl(al(e[0],n,t[0],o,r),al(e[1],n,t[1],o,r),al(e[2],n,t[2],o,r),r)}function U(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:Zn(e);return t.alpha?Nl(n,o,r,t.alpha):Nl(n,o,r,i)}function mt(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:Zn(e),{lightness:a=1,alpha:s=1}=t;return K2([n*a,o*a,r*a,i*s])}function mi(e){const t=Math.round(Number(e)*100)/100;return t>1?1:t<0?0:t}function Wt(e){const t=Math.round(Number(e));return t>255?255:t<0?0:t}function K2(e){const[t,n,o]=e;return 3 in e?`rgba(${Wt(t)}, ${Wt(n)}, ${Wt(o)}, ${mi(e[3])})`:`rgba(${Wt(t)}, ${Wt(n)}, ${Wt(o)}, 1)`}function vs(e=8){return Math.random().toString(16).slice(2,2+e)}function em(e,t="default",n=[]){const r=e.$slots[t];return r===void 0?n:r()}function or(e,t=[],n){const o={};return t.forEach(r=>{o[r]=e[r]}),Object.assign(o,n)}function Gc(e,t=[],n){const o={};return Object.getOwnPropertyNames(e).forEach(i=>{t.includes(i)||(o[i]=e[i])}),Object.assign(o,n)}function Ri(e,t=!0,n=[]){return e.forEach(o=>{if(o!==null){if(typeof o!="object"){(typeof o=="string"||typeof o=="number")&&n.push(_t(String(o)));return}if(Array.isArray(o)){Ri(o,t,n);return}if(o.type===He){if(o.children===null)return;Array.isArray(o.children)&&Ri(o.children,t,n)}else{if(o.type===kt&&t)return;n.push(o)}}}),n}function ze(e,...t){if(Array.isArray(e))e.forEach(n=>ze(n,...t));else return e(...t)}function ys(e){return Object.keys(e)}function Ot(e,...t){return typeof e=="function"?e(...t):typeof e=="string"?_t(e):typeof e=="number"?_t(String(e)):null}function Dr(e,t){console.error(`[naive/${e}]: ${t}`)}function tm(e,t){throw new Error(`[naive/${e}]: ${t}`)}function zl(e,t="default",n=void 0){const o=e[t];if(!o)return Dr("getFirstSlotVNode",`slot[${t}] is empty`),null;const r=Ri(o(n));return r.length===1?r[0]:(Dr("getFirstSlotVNode",`slot[${t}] should have exactly one child`),null)}function q2(e){return t=>{t?e.value=t.$el:e.value=null}}function Sn(e){return e.some(t=>Pi(t)?!(t.type===kt||t.type===He&&!Sn(t.children)):!0)?e:null}function Zo(e,t){return e&&Sn(e())||t()}function X2(e,t,n){return e&&Sn(e(t))||n(t)}function Pt(e,t){const n=e&&Sn(e());return t(n||null)}function Fl(e){return!(e&&Sn(e()))}function Z2(e){var t;const n=(t=e.dirs)===null||t===void 0?void 0:t.find(({dir:o})=>o===Mr);return!!(n&&n.value===!1)}const Su=de({render(){var e,t;return(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e)}}),Y2=/^(\d|\.)+$/,Tu=/(\d|\.)+/;function Ra(e,{c:t=1,offset:n=0,attachPx:o=!0}={}){if(typeof e=="number"){const r=(e+n)*t;return r===0?"0":`${r}px`}else if(typeof e=="string")if(Y2.test(e)){const r=(Number(e)+n)*t;return o?r===0?"0":`${r}px`:`${r}`}else{const r=Tu.exec(e);return r?e.replace(Tu,String((Number(r[0])+n)*t)):e}return e}function wu(e){return e.replace(/#|\(|\)|,|\s|\./g,"_")}function J2(e){const{left:t,right:n,top:o,bottom:r}=Wi(e);return`${o} ${n} ${r} ${t}`}function Q2(e){let t=0;for(let n=0;n{let r=Q2(o);if(r){if(r===1){e.forEach(a=>{n.push(o.replace("&",a))});return}}else{e.forEach(a=>{n.push((a&&a+" ")+o)});return}let i=[o];for(;r--;){const a=[];i.forEach(s=>{e.forEach(l=>{a.push(s.replace("&",l))})}),i=a}i.forEach(a=>n.push(a))}),n}function nC(e,t){const n=[];return t.split(nm).forEach(o=>{e.forEach(r=>{n.push((r&&r+" ")+o)})}),n}function oC(e){let t=[""];return e.forEach(n=>{n=n&&n.trim(),n&&(n.includes("&")?t=tC(t,n):t=nC(t,n))}),t.join(", ").replace(eC," ")}function _u(e){if(!e)return;const t=e.parentElement;t&&t.removeChild(e)}function Cs(e,t){return(t??document.head).querySelector(`style[cssr-id="${e}"]`)}function rC(e){const t=document.createElement("style");return t.setAttribute("cssr-id",e),t}function la(e){return e?/^\s*@(s|m)/.test(e):!1}const iC=/[A-Z]/g;function om(e){return e.replace(iC,t=>"-"+t.toLowerCase())}function aC(e,t=" "){return typeof e=="object"&&e!==null?` { `+Object.entries(e).map(n=>t+` ${om(n[0])}: ${n[1]};`).join(` `)+` `+t+"}":`: ${e};`}function sC(e,t,n){return typeof e=="function"?e({context:t.context,props:n}):e}function Pu(e,t,n,o){if(!t)return"";const r=sC(t,n,o);if(!r)return"";if(typeof r=="string")return`${e} { @@ -25,9 +25,9 @@ ${r} `);return}s=om(s),l!=null&&a.push(` ${s}${aC(l)}`)}),e&&a.push("}"),a.join(` `)}function Wl(e,t,n){e&&e.forEach(o=>{if(Array.isArray(o))Wl(o,t,n);else if(typeof o=="function"){const r=o(t);Array.isArray(r)?Wl(r,t,n):r&&n(r)}else o&&n(o)})}function rm(e,t,n,o,r){const i=e.$;let a="";if(!i||typeof i=="string")la(i)?a=i:t.push(i);else if(typeof i=="function"){const c=i({context:o.context,props:r});la(c)?a=c:t.push(c)}else if(i.before&&i.before(o.context),!i.$||typeof i.$=="string")la(i.$)?a=i.$:t.push(i.$);else if(i.$){const c=i.$({context:o.context,props:r});la(c)?a=c:t.push(c)}const s=oC(t),l=Pu(s,e.props,o,r);a?n.push(`${a} {`):l.length&&n.push(l),e.children&&Wl(e.children,{context:o.context,props:r},c=>{if(typeof c=="string"){const d=Pu(s,{raw:c},o,r);n.push(d)}else rm(c,t,n,o,r)}),t.pop(),a&&n.push("}"),i&&i.after&&i.after(o.context)}function lC(e,t,n){const o=[];return rm(e,[],o,t,n),o.join(` -`)}function Ei(e){for(var t=0,n,o=0,r=e.length;r>=4;++o,r-=4)n=e.charCodeAt(o)&255|(e.charCodeAt(++o)&255)<<8|(e.charCodeAt(++o)&255)<<16|(e.charCodeAt(++o)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(r){case 3:t^=(e.charCodeAt(o+2)&255)<<16;case 2:t^=(e.charCodeAt(o+1)&255)<<8;case 1:t^=e.charCodeAt(o)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}typeof window<"u"&&(window.__cssrContext={});function cC(e,t,n,o){const{els:r}=t;if(n===void 0)r.forEach(_u),t.els=[];else{const i=Cs(n,o);i&&r.includes(i)&&(_u(i),t.els=r.filter(a=>a!==i))}}function Au(e,t){e.push(t)}function dC(e,t,n,o,r,i,a,s,l){let c;if(n===void 0&&(c=t.render(o),n=Ei(c)),l){l.adapter(n,c??t.render(o));return}s===void 0&&(s=document.head);const d=Cs(n,s);if(d!==null&&!i)return d;const u=d??rC(n);if(c===void 0&&(c=t.render(o)),u.textContent=c,d!==null)return d;if(a){const h=s.querySelector(`meta[name="${a}"]`);if(h)return s.insertBefore(u,h),Au(t.els,u),u}return r?s.insertBefore(u,s.querySelector("style, link")):s.appendChild(u),Au(t.els,u),u}function uC(e){return lC(this,this.instance,e)}function hC(e={}){const{id:t,ssr:n,props:o,head:r=!1,force:i=!1,anchorMetaName:a,parent:s}=e;return dC(this.instance,this,t,o,r,i,a,s,n)}function fC(e={}){const{id:t,parent:n}=e;cC(this.instance,this,t,n)}const ca=function(e,t,n,o){return{instance:e,$:t,props:n,children:o,els:[],render:uC,mount:hC,unmount:fC}},gC=function(e,t,n,o){return Array.isArray(t)?ca(e,{$:null},null,t):Array.isArray(n)?ca(e,t,null,n):Array.isArray(o)?ca(e,t,n,o):ca(e,t,n,null)};function im(e={}){const t={c:(...n)=>gC(t,...n),use:(n,...o)=>n.install(t,...o),find:Cs,context:{},config:e};return t}function mC(e,t){if(e===void 0)return!1;if(t){const{context:{ids:n}}=t;return n.has(e)}return Cs(e)!==null}function pC(e){let t=".",n="__",o="--",r;if(e){let f=e.blockPrefix;f&&(t=f),f=e.elementPrefix,f&&(n=f),f=e.modifierPrefix,f&&(o=f)}const i={install(f){r=f.c;const b=f.context;b.bem={},b.bem.b=null,b.bem.els=null}};function a(f){let b,p;return{before(m){b=m.bem.b,p=m.bem.els,m.bem.els=null},after(m){m.bem.b=b,m.bem.els=p},$({context:m,props:k}){return f=typeof f=="string"?f:f({context:m,props:k}),m.bem.b=f,`${(k==null?void 0:k.bPrefix)||t}${m.bem.b}`}}}function s(f){let b;return{before(p){b=p.bem.els},after(p){p.bem.els=b},$({context:p,props:m}){return f=typeof f=="string"?f:f({context:p,props:m}),p.bem.els=f.split(",").map(k=>k.trim()),p.bem.els.map(k=>`${(m==null?void 0:m.bPrefix)||t}${p.bem.b}${n}${k}`).join(", ")}}}function l(f){return{$({context:b,props:p}){f=typeof f=="string"?f:f({context:b,props:p});const m=f.split(",").map(v=>v.trim());function k(v){return m.map(x=>`&${(p==null?void 0:p.bPrefix)||t}${b.bem.b}${v!==void 0?`${n}${v}`:""}${o}${x}`).join(", ")}const T=b.bem.els;return T!==null?k(T[0]):k()}}}function c(f){return{$({context:b,props:p}){f=typeof f=="string"?f:f({context:b,props:p});const m=b.bem.els;return`&:not(${(p==null?void 0:p.bPrefix)||t}${b.bem.b}${m!==null&&m.length>0?`${n}${m[0]}`:""}${o}${f})`}}}return Object.assign(i,{cB:(...f)=>r(a(f[0]),f[1],f[2]),cE:(...f)=>r(s(f[0]),f[1],f[2]),cM:(...f)=>r(l(f[0]),f[1],f[2]),cNotM:(...f)=>r(c(f[0]),f[1],f[2])}),i}const bC="n",Ii=`.${bC}-`,vC="__",yC="--",am=im(),sm=pC({blockPrefix:Ii,elementPrefix:vC,modifierPrefix:yC});am.use(sm);const{c:F,find:UR}=am,{cB:oe,cE:G,cM:te,cNotM:Ht}=sm;function lm(e){return F(({props:{bPrefix:t}})=>`${t||Ii}modal, ${t||Ii}drawer`,[e])}function CC(e){return F(({props:{bPrefix:t}})=>`${t||Ii}popover`,[e])}function cm(e){return F(({props:{bPrefix:t}})=>`&${t||Ii}modal`,e)}const kC=(...e)=>F(">",[oe(...e)]);function ge(e,t){return e+(t==="default"?"":t.replace(/^[a-z]/,n=>n.toUpperCase()))}let sl;function xC(){return sl===void 0&&(sl=navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom")),sl}const ar=typeof document<"u"&&typeof window<"u",SC=new WeakSet;function TC(e){return!SC.has(e)}function wC(e,t,n){const o=V(e.value);let r=null;return ot(e,i=>{r!==null&&window.clearTimeout(r),i===!0?n&&!n.value?o.value=!0:r=window.setTimeout(()=>{o.value=!0},t):o.value=!1}),o}function _C(e){const t=V(!!e.value);if(t.value)return hn(t);const n=ot(e,o=>{o&&(t.value=!0,n())});return hn(t)}function Rt(e){const t=z(e),n=V(t.value);return ot(t,o=>{n.value=o}),typeof e=="function"?n:{__v_isRef:!0,get value(){return n.value},set value(o){e.set(o)}}}function ks(){return rn()!==null}const xs=typeof window<"u";let Rr,pi;const PC=()=>{var e,t;Rr=xs?(t=(e=document)===null||e===void 0?void 0:e.fonts)===null||t===void 0?void 0:t.ready:void 0,pi=!1,Rr!==void 0?Rr.then(()=>{pi=!0}):pi=!0};PC();function AC(e){if(pi)return;let t=!1;It(()=>{pi||Rr==null||Rr.then(()=>{t||e()})}),Tt(()=>{t=!0})}function Ea(e){return e.composedPath()[0]}const RC={mousemoveoutside:new WeakMap,clickoutside:new WeakMap};function EC(e,t,n){if(e==="mousemoveoutside"){const o=r=>{t.contains(Ea(r))||n(r)};return{mousemove:o,touchstart:o}}else if(e==="clickoutside"){let o=!1;const r=a=>{o=!t.contains(Ea(a))},i=a=>{o&&(t.contains(Ea(a))||n(a))};return{mousedown:r,mouseup:i,touchstart:r,touchend:i}}return console.error(`[evtd/create-trap-handler]: name \`${e}\` is invalid. This could be a bug of evtd.`),{}}function dm(e,t,n){const o=RC[e];let r=o.get(t);r===void 0&&o.set(t,r=new WeakMap);let i=r.get(n);return i===void 0&&r.set(n,i=EC(e,t,n)),i}function IC(e,t,n,o){if(e==="mousemoveoutside"||e==="clickoutside"){const r=dm(e,t,n);return Object.keys(r).forEach(i=>{lt(i,document,r[i],o)}),!0}return!1}function MC(e,t,n,o){if(e==="mousemoveoutside"||e==="clickoutside"){const r=dm(e,t,n);return Object.keys(r).forEach(i=>{Ue(i,document,r[i],o)}),!0}return!1}function DC(){if(typeof window>"u")return{on:()=>{},off:()=>{}};const e=new WeakMap,t=new WeakMap;function n(){e.set(this,!0)}function o(){e.set(this,!0),t.set(this,!0)}function r(y,R,P){const D=y[R];return y[R]=function(){return P.apply(y,arguments),D.apply(y,arguments)},y}function i(y,R){y[R]=Event.prototype[R]}const a=new WeakMap,s=Object.getOwnPropertyDescriptor(Event.prototype,"currentTarget");function l(){var y;return(y=a.get(this))!==null&&y!==void 0?y:null}function c(y,R){s!==void 0&&Object.defineProperty(y,"currentTarget",{configurable:!0,enumerable:!0,get:R??s.get})}const d={bubble:{},capture:{}},u={};function h(){const y=function(R){const{type:P,eventPhase:D,bubbles:W}=R,M=Ea(R);if(D===2)return;const j=D===1?"capture":"bubble";let ee=M;const B=[];for(;ee===null&&(ee=window),B.push(ee),ee!==window;)ee=ee.parentNode||null;const X=d.capture[P],$=d.bubble[P];if(r(R,"stopPropagation",n),r(R,"stopImmediatePropagation",o),c(R,l),j==="capture"){if(X===void 0)return;for(let ie=B.length-1;ie>=0&&!e.has(R);--ie){const ve=B[ie],ye=X.get(ve);if(ye!==void 0){a.set(R,ve);for(const Ae of ye){if(t.has(R))break;Ae(R)}}if(ie===0&&!W&&$!==void 0){const Ae=$.get(ve);if(Ae!==void 0)for(const De of Ae){if(t.has(R))break;De(R)}}}}else if(j==="bubble"){if($===void 0)return;for(let ie=0;ieM(R))};return y.displayName="evtdUnifiedWindowEventHandler",y}const f=h(),b=g();function p(y,R){const P=d[y];return P[R]===void 0&&(P[R]=new Map,window.addEventListener(R,f,y==="capture")),P[R]}function m(y){return u[y]===void 0&&(u[y]=new Set,window.addEventListener(y,b)),u[y]}function k(y,R){let P=y.get(R);return P===void 0&&y.set(R,P=new Set),P}function T(y,R,P,D){const W=d[R][P];if(W!==void 0){const M=W.get(y);if(M!==void 0&&M.has(D))return!0}return!1}function v(y,R){const P=u[y];return!!(P!==void 0&&P.has(R))}function x(y,R,P,D){let W;if(typeof D=="object"&&D.once===!0?W=X=>{A(y,R,W,D),P(X)}:W=P,IC(y,R,W,D))return;const j=D===!0||typeof D=="object"&&D.capture===!0?"capture":"bubble",ee=p(j,y),B=k(ee,R);if(B.has(W)||B.add(W),R===window){const X=m(y);X.has(W)||X.add(W)}}function A(y,R,P,D){if(MC(y,R,P,D))return;const M=D===!0||typeof D=="object"&&D.capture===!0,j=M?"capture":"bubble",ee=p(j,y),B=k(ee,R);if(R===window&&!T(R,M?"bubble":"capture",y,P)&&v(y,P)){const $=u[y];$.delete(P),$.size===0&&(window.removeEventListener(y,b),u[y]=void 0)}B.has(P)&&B.delete(P),B.size===0&&ee.delete(R),ee.size===0&&(window.removeEventListener(y,f,j==="capture"),d[j][y]=void 0)}return{on:x,off:A}}const{on:lt,off:Ue}=DC(),li=V(null);function Ru(e){if(e.clientX>0||e.clientY>0)li.value={x:e.clientX,y:e.clientY};else{const{target:t}=e;if(t instanceof Element){const{left:n,top:o,width:r,height:i}=t.getBoundingClientRect();n>0||o>0?li.value={x:n+r/2,y:o+i/2}:li.value={x:0,y:0}}else li.value=null}}let da=0,Eu=!0;function um(){if(!xs)return hn(V(null));da===0&<("click",document,Ru,!0);const e=()=>{da+=1};return Eu&&(Eu=ks())?(Nn(e),Tt(()=>{da-=1,da===0&&Ue("click",document,Ru,!0)})):e(),hn(li)}const OC=V(void 0);let ua=0;function Iu(){OC.value=Date.now()}let Mu=!0;function hm(e){if(!xs)return hn(V(!1));const t=V(!1);let n=null;function o(){n!==null&&window.clearTimeout(n)}function r(){o(),t.value=!0,n=window.setTimeout(()=>{t.value=!1},e)}ua===0&<("click",window,Iu,!0);const i=()=>{ua+=1,lt("click",window,r,!0)};return Mu&&(Mu=ks())?(Nn(i),Tt(()=>{ua-=1,ua===0&&Ue("click",window,Iu,!0),Ue("click",window,r,!0),o()})):i(),hn(t)}let ha=0;const LC=typeof window<"u"&&window.matchMedia!==void 0,Yo=V(null);let Sn,Ko;function ja(e){e.matches&&(Yo.value="dark")}function Ga(e){e.matches&&(Yo.value="light")}function HC(){Sn=window.matchMedia("(prefers-color-scheme: dark)"),Ko=window.matchMedia("(prefers-color-scheme: light)"),Sn.matches?Yo.value="dark":Ko.matches?Yo.value="light":Yo.value=null,Sn.addEventListener?(Sn.addEventListener("change",ja),Ko.addEventListener("change",Ga)):Sn.addListener&&(Sn.addListener(ja),Ko.addListener(Ga))}function $C(){"removeEventListener"in Sn?(Sn.removeEventListener("change",ja),Ko.removeEventListener("change",Ga)):"removeListener"in Sn&&(Sn.removeListener(ja),Ko.removeListener(Ga)),Sn=void 0,Ko=void 0}let Du=!0;function BC(){return LC&&(ha===0&&HC(),Du&&(Du=ks())&&(Nn(()=>{ha+=1}),Tt(()=>{ha-=1,ha===0&&$C()}))),hn(Yo)}function Vc(e,t){return ot(e,n=>{n!==void 0&&(t.value=n)}),z(()=>e.value===void 0?t.value:e.value)}function ji(){const e=V(!1);return It(()=>{e.value=!0}),hn(e)}function fm(e,t){return z(()=>{for(const n of t)if(e[n]!==void 0)return e[n];return e[t[t.length-1]]})}const NC=(typeof window>"u"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function zC(){return NC}const FC={xs:0,s:640,m:1024,l:1280,xl:1536,"2xl":1920};function WC(e){return`(min-width: ${e}px)`}const ei={};function jC(e=FC){if(!xs)return z(()=>[]);if(typeof window.matchMedia!="function")return z(()=>[]);const t=V({}),n=Object.keys(e),o=(r,i)=>{r.matches?t.value[i]=!0:t.value[i]=!1};return n.forEach(r=>{const i=e[r];let a,s;ei[i]===void 0?(a=window.matchMedia(WC(i)),a.addEventListener?a.addEventListener("change",l=>{s.forEach(c=>{c(l,r)})}):a.addListener&&a.addListener(l=>{s.forEach(c=>{c(l,r)})}),s=new Set,ei[i]={mql:a,cbs:s}):(a=ei[i].mql,s=ei[i].cbs),s.add(o),a.matches&&s.forEach(l=>{l(a,r)})}),Tt(()=>{n.forEach(r=>{const{cbs:i}=ei[e[r]];i.has(o)&&i.delete(o)})}),z(()=>{const{value:r}=t;return n.filter(i=>r[i])})}function GC(e={},t){const n=wo({ctrl:!1,command:!1,win:!1,shift:!1,tab:!1}),{keydown:o,keyup:r}=e,i=l=>{switch(l.key){case"Control":n.ctrl=!0;break;case"Meta":n.command=!0,n.win=!0;break;case"Shift":n.shift=!0;break;case"Tab":n.tab=!0;break}o!==void 0&&Object.keys(o).forEach(c=>{if(c!==l.key)return;const d=o[c];if(typeof d=="function")d(l);else{const{stop:u=!1,prevent:h=!1}=d;u&&l.stopPropagation(),h&&l.preventDefault(),d.handler(l)}})},a=l=>{switch(l.key){case"Control":n.ctrl=!1;break;case"Meta":n.command=!1,n.win=!1;break;case"Shift":n.shift=!1;break;case"Tab":n.tab=!1;break}r!==void 0&&Object.keys(r).forEach(c=>{if(c!==l.key)return;const d=r[c];if(typeof d=="function")d(l);else{const{stop:u=!1,prevent:h=!1}=d;u&&l.stopPropagation(),h&&l.preventDefault(),d.handler(l)}})},s=()=>{(t===void 0||t.value)&&(lt("keydown",document,i),lt("keyup",document,a)),t!==void 0&&ot(t,l=>{l?(lt("keydown",document,i),lt("keyup",document,a)):(Ue("keydown",document,i),Ue("keyup",document,a))})};return ks()?(Nn(s),Tt(()=>{(t===void 0||t.value)&&(Ue("keydown",document,i),Ue("keyup",document,a))})):s(),hn(n)}const VC="n-internal-select-menu-body",Ss="n-modal-body",UC="n-modal-provider",gm="n-modal",Ts="n-drawer-body",Gi="n-popover-body",mm="__disabled__";function Or(e){const t=Me(Ss,null),n=Me(Ts,null),o=Me(Gi,null),r=Me(VC,null),i=V();if(typeof document<"u"){i.value=document.fullscreenElement;const a=()=>{i.value=document.fullscreenElement};It(()=>{lt("fullscreenchange",document,a)}),Tt(()=>{Ue("fullscreenchange",document,a)})}return Rt(()=>{var a;const{to:s}=e;return s!==void 0?s===!1?mm:s===!0?i.value||"body":s:t!=null&&t.value?(a=t.value.$el)!==null&&a!==void 0?a:t.value:n!=null&&n.value?n.value:o!=null&&o.value?o.value:r!=null&&r.value?r.value:s??(i.value||"body")})}Or.tdkey=mm;Or.propTo={type:[String,Object,Boolean],default:void 0};function jl(e,t,n="default"){const o=t[n];if(o===void 0)throw new Error(`[vueuc/${e}]: slot[${n}] is empty.`);return o()}function Gl(e,t=!0,n=[]){return e.forEach(o=>{if(o!==null){if(typeof o!="object"){(typeof o=="string"||typeof o=="number")&&n.push(_t(String(o)));return}if(Array.isArray(o)){Gl(o,t,n);return}if(o.type===He){if(o.children===null)return;Array.isArray(o.children)&&Gl(o.children,t,n)}else o.type!==kt&&n.push(o)}}),n}function Ou(e,t,n="default"){const o=t[n];if(o===void 0)throw new Error(`[vueuc/${e}]: slot[${n}] is empty.`);const r=Gl(o());if(r.length===1)return r[0];throw new Error(`[vueuc/${e}]: slot[${n}] should have exactly one child.`)}let ro=null;function pm(){if(ro===null&&(ro=document.getElementById("v-binder-view-measurer"),ro===null)){ro=document.createElement("div"),ro.id="v-binder-view-measurer";const{style:e}=ro;e.position="fixed",e.left="0",e.right="0",e.top="0",e.bottom="0",e.pointerEvents="none",e.visibility="hidden",document.body.appendChild(ro)}return ro.getBoundingClientRect()}function KC(e,t){const n=pm();return{top:t,left:e,height:0,width:0,right:n.width-e,bottom:n.height-t}}function ll(e){const t=e.getBoundingClientRect(),n=pm();return{left:t.left-n.left,top:t.top-n.top,bottom:n.height+n.top-t.bottom,right:n.width+n.left-t.right,width:t.width,height:t.height}}function qC(e){return e.nodeType===9?null:e.parentNode}function bm(e){if(e===null)return null;const t=qC(e);if(t===null)return null;if(t.nodeType===9)return document;if(t.nodeType===1){const{overflow:n,overflowX:o,overflowY:r}=getComputedStyle(t);if(/(auto|scroll|overlay)/.test(n+r+o))return t}return bm(t)}const vm=de({name:"Binder",props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){var t;We("VBinder",(t=rn())===null||t===void 0?void 0:t.proxy);const n=Me("VBinder",null),o=V(null),r=m=>{o.value=m,n&&e.syncTargetWithParent&&n.setTargetRef(m)};let i=[];const a=()=>{let m=o.value;for(;m=bm(m),m!==null;)i.push(m);for(const k of i)lt("scroll",k,u,!0)},s=()=>{for(const m of i)Ue("scroll",m,u,!0);i=[]},l=new Set,c=m=>{l.size===0&&a(),l.has(m)||l.add(m)},d=m=>{l.has(m)&&l.delete(m),l.size===0&&s()},u=()=>{Qg(h)},h=()=>{l.forEach(m=>m())},g=new Set,f=m=>{g.size===0&<("resize",window,p),g.has(m)||g.add(m)},b=m=>{g.has(m)&&g.delete(m),g.size===0&&Ue("resize",window,p)},p=()=>{g.forEach(m=>m())};return Tt(()=>{Ue("resize",window,p),s()}),{targetRef:o,setTargetRef:r,addScrollListener:c,removeScrollListener:d,addResizeListener:f,removeResizeListener:b}},render(){return jl("binder",this.$slots)}}),ym=de({name:"Target",setup(){const{setTargetRef:e,syncTarget:t}=Me("VBinder");return{syncTarget:t,setTargetDirective:{mounted:e,updated:e}}},render(){const{syncTarget:e,setTargetDirective:t}=this;return e?po(Ou("follower",this.$slots),[[t]]):Ou("follower",this.$slots)}}),mr="@@mmoContext",XC={mounted(e,{value:t}){e[mr]={handler:void 0},typeof t=="function"&&(e[mr].handler=t,lt("mousemoveoutside",e,t))},updated(e,{value:t}){const n=e[mr];typeof t=="function"?n.handler?n.handler!==t&&(Ue("mousemoveoutside",e,n.handler),n.handler=t,lt("mousemoveoutside",e,t)):(e[mr].handler=t,lt("mousemoveoutside",e,t)):n.handler&&(Ue("mousemoveoutside",e,n.handler),n.handler=void 0)},unmounted(e){const{handler:t}=e[mr];t&&Ue("mousemoveoutside",e,t),e[mr].handler=void 0}},pr="@@coContext",Vl={mounted(e,{value:t,modifiers:n}){e[pr]={handler:void 0},typeof t=="function"&&(e[pr].handler=t,lt("clickoutside",e,t,{capture:n.capture}))},updated(e,{value:t,modifiers:n}){const o=e[pr];typeof t=="function"?o.handler?o.handler!==t&&(Ue("clickoutside",e,o.handler,{capture:n.capture}),o.handler=t,lt("clickoutside",e,t,{capture:n.capture})):(e[pr].handler=t,lt("clickoutside",e,t,{capture:n.capture})):o.handler&&(Ue("clickoutside",e,o.handler,{capture:n.capture}),o.handler=void 0)},unmounted(e,{modifiers:t}){const{handler:n}=e[pr];n&&Ue("clickoutside",e,n,{capture:t.capture}),e[pr].handler=void 0}};function ZC(e,t){console.error(`[vdirs/${e}]: ${t}`)}class YC{constructor(){this.elementZIndex=new Map,this.nextZIndex=2e3}get elementCount(){return this.elementZIndex.size}ensureZIndex(t,n){const{elementZIndex:o}=this;if(n!==void 0){t.style.zIndex=`${n}`,o.delete(t);return}const{nextZIndex:r}=this;o.has(t)&&o.get(t)+1===this.nextZIndex||(t.style.zIndex=`${r}`,o.set(t,r),this.nextZIndex=r+1,this.squashState())}unregister(t,n){const{elementZIndex:o}=this;o.has(t)?o.delete(t):n===void 0&&ZC("z-index-manager/unregister-element","Element not found when unregistering."),this.squashState()}squashState(){const{elementCount:t}=this;t||(this.nextZIndex=2e3),this.nextZIndex-t>2500&&this.rearrange()}rearrange(){const t=Array.from(this.elementZIndex.entries());t.sort((n,o)=>n[1]-o[1]),this.nextZIndex=2e3,t.forEach(n=>{const o=n[0],r=this.nextZIndex++;`${r}`!==o.style.zIndex&&(o.style.zIndex=`${r}`)})}}const cl=new YC,br="@@ziContext",Uc={mounted(e,t){const{value:n={}}=t,{zIndex:o,enabled:r}=n;e[br]={enabled:!!r,initialized:!1},r&&(cl.ensureZIndex(e,o),e[br].initialized=!0)},updated(e,t){const{value:n={}}=t,{zIndex:o,enabled:r}=n,i=e[br].enabled;r&&!i&&(cl.ensureZIndex(e,o),e[br].initialized=!0),e[br].enabled=!!r},unmounted(e,t){if(!e[br].initialized)return;const{value:n={}}=t,{zIndex:o}=n;cl.unregister(e,o)}},JC="@css-render/vue3-ssr";function QC(e,t){return``}function ek(e,t,n){const{styles:o,ids:r}=n;r.has(e)||o!==null&&(r.add(e),o.push(QC(e,t)))}const tk=typeof document<"u";function Vi(){if(tk)return;const e=Me(JC,null);if(e!==null)return{adapter:(t,n)=>ek(t,n,e),context:e}}function Lu(e,t){console.error(`[vueuc/${e}]: ${t}`)}const{c:fa}=im(),nk="vueuc-style";function Hu(e){return typeof e=="string"?document.querySelector(e):e()}const Cm=de({name:"LazyTeleport",props:{to:{type:[String,Object],default:void 0},disabled:Boolean,show:{type:Boolean,required:!0}},setup(e){return{showTeleport:_C(Ve(e,"show")),mergedTo:z(()=>{const{to:t}=e;return t??"body"})}},render(){return this.showTeleport?this.disabled?jl("lazy-teleport",this.$slots):S(hs,{disabled:this.disabled,to:this.mergedTo},jl("lazy-teleport",this.$slots)):null}}),ga={top:"bottom",bottom:"top",left:"right",right:"left"},$u={start:"end",center:"center",end:"start"},dl={top:"height",bottom:"height",left:"width",right:"width"},ok={"bottom-start":"top left",bottom:"top center","bottom-end":"top right","top-start":"bottom left",top:"bottom center","top-end":"bottom right","right-start":"top left",right:"center left","right-end":"bottom left","left-start":"top right",left:"center right","left-end":"bottom right"},rk={"bottom-start":"bottom left",bottom:"bottom center","bottom-end":"bottom right","top-start":"top left",top:"top center","top-end":"top right","right-start":"top right",right:"center right","right-end":"bottom right","left-start":"top left",left:"center left","left-end":"bottom left"},ik={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},Bu={top:!0,bottom:!1,left:!0,right:!1},Nu={top:"end",bottom:"start",left:"end",right:"start"};function ak(e,t,n,o,r,i){if(!r||i)return{placement:e,top:0,left:0};const[a,s]=e.split("-");let l=s??"center",c={top:0,left:0};const d=(g,f,b)=>{let p=0,m=0;const k=n[g]-t[f]-t[g];return k>0&&o&&(b?m=Bu[f]?k:-k:p=Bu[f]?k:-k),{left:p,top:m}},u=a==="left"||a==="right";if(l!=="center"){const g=ik[e],f=ga[g],b=dl[g];if(n[b]>t[b]){if(t[g]+t[b]t[f]&&(l=$u[s])}else{const g=a==="bottom"||a==="top"?"left":"top",f=ga[g],b=dl[g],p=(n[b]-t[b])/2;(t[g]t[f]?(l=Nu[g],c=d(b,g,u)):(l=Nu[f],c=d(b,f,u)))}let h=a;return t[a] *",{pointerEvents:"all"})])]),km=de({name:"Follower",inheritAttrs:!1,props:{show:Boolean,enabled:{type:Boolean,default:void 0},placement:{type:String,default:"bottom"},syncTrigger:{type:Array,default:["resize","scroll"]},to:[String,Object],flip:{type:Boolean,default:!0},internalShift:Boolean,x:Number,y:Number,width:String,minWidth:String,containerClass:String,teleportDisabled:Boolean,zindexable:{type:Boolean,default:!0},zIndex:Number,overlap:Boolean},setup(e){const t=Me("VBinder"),n=Rt(()=>e.enabled!==void 0?e.enabled:e.show),o=V(null),r=V(null),i=()=>{const{syncTrigger:h}=e;h.includes("scroll")&&t.addScrollListener(l),h.includes("resize")&&t.addResizeListener(l)},a=()=>{t.removeScrollListener(l),t.removeResizeListener(l)};It(()=>{n.value&&(l(),i())});const s=Vi();ck.mount({id:"vueuc/binder",head:!0,anchorMetaName:nk,ssr:s}),Tt(()=>{a()}),AC(()=>{n.value&&l()});const l=()=>{if(!n.value)return;const h=o.value;if(h===null)return;const g=t.targetRef,{x:f,y:b,overlap:p}=e,m=f!==void 0&&b!==void 0?KC(f,b):ll(g);h.style.setProperty("--v-target-width",`${Math.round(m.width)}px`),h.style.setProperty("--v-target-height",`${Math.round(m.height)}px`);const{width:k,minWidth:T,placement:v,internalShift:x,flip:A}=e;h.setAttribute("v-placement",v),p?h.setAttribute("v-overlap",""):h.removeAttribute("v-overlap");const{style:y}=h;k==="target"?y.width=`${m.width}px`:k!==void 0?y.width=k:y.width="",T==="target"?y.minWidth=`${m.width}px`:T!==void 0?y.minWidth=T:y.minWidth="";const R=ll(h),P=ll(r.value),{left:D,top:W,placement:M}=ak(v,m,R,x,A,p),j=sk(M,p),{left:ee,top:B,transform:X}=lk(M,P,m,W,D,p);h.setAttribute("v-placement",M),h.style.setProperty("--v-offset-left",`${Math.round(D)}px`),h.style.setProperty("--v-offset-top",`${Math.round(W)}px`),h.style.transform=`translateX(${ee}) translateY(${B}) ${X}`,h.style.setProperty("--v-transform-origin",j),h.style.transformOrigin=j};ot(n,h=>{h?(i(),c()):a()});const c=()=>{jt().then(l).catch(h=>console.error(h))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(h=>{ot(Ve(e,h),l)}),["teleportDisabled"].forEach(h=>{ot(Ve(e,h),c)}),ot(Ve(e,"syncTrigger"),h=>{h.includes("resize")?t.addResizeListener(l):t.removeResizeListener(l),h.includes("scroll")?t.addScrollListener(l):t.removeScrollListener(l)});const d=ji(),u=Rt(()=>{const{to:h}=e;if(h!==void 0)return h;d.value});return{VBinder:t,mergedEnabled:n,offsetContainerRef:r,followerRef:o,mergedTo:u,syncPosition:l}},render(){return S(Cm,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e,t;const n=S("div",{class:["v-binder-follower-container",this.containerClass],ref:"offsetContainerRef"},[S("div",{class:"v-binder-follower-content",ref:"followerRef"},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))]);return this.zindexable?po(n,[[Uc,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):n}})}});var Jo=[],dk=function(){return Jo.some(function(e){return e.activeTargets.length>0})},uk=function(){return Jo.some(function(e){return e.skippedTargets.length>0})},zu="ResizeObserver loop completed with undelivered notifications.",hk=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:zu}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=zu),window.dispatchEvent(e)},Mi;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(Mi||(Mi={}));var Qo=function(e){return Object.freeze(e)},fk=function(){function e(t,n){this.inlineSize=t,this.blockSize=n,Qo(this)}return e}(),xm=function(){function e(t,n,o,r){return this.x=t,this.y=n,this.width=o,this.height=r,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Qo(this)}return e.prototype.toJSON=function(){var t=this,n=t.x,o=t.y,r=t.top,i=t.right,a=t.bottom,s=t.left,l=t.width,c=t.height;return{x:n,y:o,top:r,right:i,bottom:a,left:s,width:l,height:c}},e.fromRect=function(t){return new e(t.x,t.y,t.width,t.height)},e}(),Kc=function(e){return e instanceof SVGElement&&"getBBox"in e},Sm=function(e){if(Kc(e)){var t=e.getBBox(),n=t.width,o=t.height;return!n&&!o}var r=e,i=r.offsetWidth,a=r.offsetHeight;return!(i||a||e.getClientRects().length)},Fu=function(e){var t;if(e instanceof Element)return!0;var n=(t=e==null?void 0:e.ownerDocument)===null||t===void 0?void 0:t.defaultView;return!!(n&&e instanceof n.Element)},gk=function(e){switch(e.tagName){case"INPUT":if(e.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},bi=typeof window<"u"?window:{},ma=new WeakMap,Wu=/auto|scroll/,mk=/^tb|vertical/,pk=/msie|trident/i.test(bi.navigator&&bi.navigator.userAgent),En=function(e){return parseFloat(e||"0")},Er=function(e,t,n){return e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=!1),new fk((n?t:e)||0,(n?e:t)||0)},ju=Qo({devicePixelContentBoxSize:Er(),borderBoxSize:Er(),contentBoxSize:Er(),contentRect:new xm(0,0,0,0)}),Tm=function(e,t){if(t===void 0&&(t=!1),ma.has(e)&&!t)return ma.get(e);if(Sm(e))return ma.set(e,ju),ju;var n=getComputedStyle(e),o=Kc(e)&&e.ownerSVGElement&&e.getBBox(),r=!pk&&n.boxSizing==="border-box",i=mk.test(n.writingMode||""),a=!o&&Wu.test(n.overflowY||""),s=!o&&Wu.test(n.overflowX||""),l=o?0:En(n.paddingTop),c=o?0:En(n.paddingRight),d=o?0:En(n.paddingBottom),u=o?0:En(n.paddingLeft),h=o?0:En(n.borderTopWidth),g=o?0:En(n.borderRightWidth),f=o?0:En(n.borderBottomWidth),b=o?0:En(n.borderLeftWidth),p=u+c,m=l+d,k=b+g,T=h+f,v=s?e.offsetHeight-T-e.clientHeight:0,x=a?e.offsetWidth-k-e.clientWidth:0,A=r?p+k:0,y=r?m+T:0,R=o?o.width:En(n.width)-A-x,P=o?o.height:En(n.height)-y-v,D=R+p+x+k,W=P+m+v+T,M=Qo({devicePixelContentBoxSize:Er(Math.round(R*devicePixelRatio),Math.round(P*devicePixelRatio),i),borderBoxSize:Er(D,W,i),contentBoxSize:Er(R,P,i),contentRect:new xm(u,l,R,P)});return ma.set(e,M),M},wm=function(e,t,n){var o=Tm(e,n),r=o.borderBoxSize,i=o.contentBoxSize,a=o.devicePixelContentBoxSize;switch(t){case Mi.DEVICE_PIXEL_CONTENT_BOX:return a;case Mi.BORDER_BOX:return r;default:return i}},bk=function(){function e(t){var n=Tm(t);this.target=t,this.contentRect=n.contentRect,this.borderBoxSize=Qo([n.borderBoxSize]),this.contentBoxSize=Qo([n.contentBoxSize]),this.devicePixelContentBoxSize=Qo([n.devicePixelContentBoxSize])}return e}(),_m=function(e){if(Sm(e))return 1/0;for(var t=0,n=e.parentNode;n;)t+=1,n=n.parentNode;return t},vk=function(){var e=1/0,t=[];Jo.forEach(function(a){if(a.activeTargets.length!==0){var s=[];a.activeTargets.forEach(function(c){var d=new bk(c.target),u=_m(c.target);s.push(d),c.lastReportedSize=wm(c.target,c.observedBox),ue?n.activeTargets.push(r):n.skippedTargets.push(r))})})},yk=function(){var e=0;for(Gu(e);dk();)e=vk(),Gu(e);return uk()&&hk(),e>0},ul,Pm=[],Ck=function(){return Pm.splice(0).forEach(function(e){return e()})},kk=function(e){if(!ul){var t=0,n=document.createTextNode(""),o={characterData:!0};new MutationObserver(function(){return Ck()}).observe(n,o),ul=function(){n.textContent="".concat(t?t--:t++)}}Pm.push(e),ul()},xk=function(e){kk(function(){requestAnimationFrame(e)})},Ia=0,Sk=function(){return!!Ia},Tk=250,wk={attributes:!0,characterData:!0,childList:!0,subtree:!0},Vu=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Uu=function(e){return e===void 0&&(e=0),Date.now()+e},hl=!1,_k=function(){function e(){var t=this;this.stopped=!0,this.listener=function(){return t.schedule()}}return e.prototype.run=function(t){var n=this;if(t===void 0&&(t=Tk),!hl){hl=!0;var o=Uu(t);xk(function(){var r=!1;try{r=yk()}finally{if(hl=!1,t=o-Uu(),!Sk())return;r?n.run(1e3):t>0?n.run(t):n.start()}})}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var t=this,n=function(){return t.observer&&t.observer.observe(document.body,wk)};document.body?n():bi.addEventListener("DOMContentLoaded",n)},e.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Vu.forEach(function(n){return bi.addEventListener(n,t.listener,!0)}))},e.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),Vu.forEach(function(n){return bi.removeEventListener(n,t.listener,!0)}),this.stopped=!0)},e}(),Ul=new _k,Ku=function(e){!Ia&&e>0&&Ul.start(),Ia+=e,!Ia&&Ul.stop()},Pk=function(e){return!Kc(e)&&!gk(e)&&getComputedStyle(e).display==="inline"},Ak=function(){function e(t,n){this.target=t,this.observedBox=n||Mi.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var t=wm(this.target,this.observedBox,!0);return Pk(this.target)&&(this.lastReportedSize=t),this.lastReportedSize.inlineSize!==t.inlineSize||this.lastReportedSize.blockSize!==t.blockSize},e}(),Rk=function(){function e(t,n){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=n}return e}(),pa=new WeakMap,qu=function(e,t){for(var n=0;n=0&&(i&&Jo.splice(Jo.indexOf(o),1),o.observationTargets.splice(r,1),Ku(-1))},e.disconnect=function(t){var n=this,o=pa.get(t);o.observationTargets.slice().forEach(function(r){return n.unobserve(t,r.target)}),o.activeTargets.splice(0,o.activeTargets.length)},e}(),Ek=function(){function e(t){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof t!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");ba.connect(this,t)}return e.prototype.observe=function(t,n){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Fu(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");ba.observe(this,t,n)},e.prototype.unobserve=function(t){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Fu(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");ba.unobserve(this,t)},e.prototype.disconnect=function(){ba.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();class Ik{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new(typeof window<"u"&&window.ResizeObserver||Ek)(this.handleResize),this.elHandlersMap=new Map}handleResize(t){for(const n of t){const o=this.elHandlersMap.get(n.target);o!==void 0&&o(n)}}registerHandler(t,n){this.elHandlersMap.set(t,n),this.observer.observe(t)}unregisterHandler(t){this.elHandlersMap.has(t)&&(this.elHandlersMap.delete(t),this.observer.unobserve(t))}}const Xu=new Ik,Va=de({name:"ResizeObserver",props:{onResize:Function},setup(e){let t=!1;const n=rn().proxy;function o(r){const{onResize:i}=e;i!==void 0&&i(r)}It(()=>{const r=n.$el;if(r===void 0){Lu("resize-observer","$el does not exist.");return}if(r.nextElementSibling!==r.nextSibling&&r.nodeType===3&&r.nodeValue!==""){Lu("resize-observer","$el can not be observed (it may be a text node).");return}r.nextElementSibling!==null&&(Xu.registerHandler(r.nextElementSibling,o),t=!0)}),Tt(()=>{t&&Xu.unregisterHandler(n.$el.nextElementSibling)})},render(){return xg(this.$slots,"default")}});function Am(e){return e instanceof HTMLElement}function Rm(e){for(let t=0;t=0;t--){const n=e.childNodes[t];if(Am(n)&&(Im(n)||Em(n)))return!0}return!1}function Im(e){if(!Mk(e))return!1;try{e.focus({preventScroll:!0})}catch{}return document.activeElement===e}function Mk(e){if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.getAttribute("disabled"))return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return e.type!=="hidden"&&e.type!=="file";case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}}let ti=[];const Mm=de({name:"FocusTrap",props:{disabled:Boolean,active:Boolean,autoFocus:{type:Boolean,default:!0},onEsc:Function,initialFocusTo:String,finalFocusTo:String,returnFocusOnDeactivated:{type:Boolean,default:!0}},setup(e){const t=vs(),n=V(null),o=V(null);let r=!1,i=!1;const a=typeof document>"u"?null:document.activeElement;function s(){return ti[ti.length-1]===t}function l(p){var m;p.code==="Escape"&&s()&&((m=e.onEsc)===null||m===void 0||m.call(e,p))}It(()=>{ot(()=>e.active,p=>{p?(u(),lt("keydown",document,l)):(Ue("keydown",document,l),r&&h())},{immediate:!0})}),Tt(()=>{Ue("keydown",document,l),r&&h()});function c(p){if(!i&&s()){const m=d();if(m===null||m.contains(Ai(p)))return;g("first")}}function d(){const p=n.value;if(p===null)return null;let m=p;for(;m=m.nextSibling,!(m===null||m instanceof Element&&m.tagName==="DIV"););return m}function u(){var p;if(!e.disabled){if(ti.push(t),e.autoFocus){const{initialFocusTo:m}=e;m===void 0?g("first"):(p=Hu(m))===null||p===void 0||p.focus({preventScroll:!0})}r=!0,document.addEventListener("focus",c,!0)}}function h(){var p;if(e.disabled||(document.removeEventListener("focus",c,!0),ti=ti.filter(k=>k!==t),s()))return;const{finalFocusTo:m}=e;m!==void 0?(p=Hu(m))===null||p===void 0||p.focus({preventScroll:!0}):e.returnFocusOnDeactivated&&a instanceof HTMLElement&&(i=!0,a.focus({preventScroll:!0}),i=!1)}function g(p){if(s()&&e.active){const m=n.value,k=o.value;if(m!==null&&k!==null){const T=d();if(T==null||T===k){i=!0,m.focus({preventScroll:!0}),i=!1;return}i=!0;const v=p==="first"?Rm(T):Em(T);i=!1,v||(i=!0,m.focus({preventScroll:!0}),i=!1)}}}function f(p){if(i)return;const m=d();m!==null&&(p.relatedTarget!==null&&m.contains(p.relatedTarget)?g("last"):g("first"))}function b(p){i||(p.relatedTarget!==null&&p.relatedTarget===n.value?g("last"):g("first"))}return{focusableStartRef:n,focusableEndRef:o,focusableStyle:"position: absolute; height: 0; width: 0;",handleStartFocus:f,handleEndFocus:b}},render(){const{default:e}=this.$slots;if(e===void 0)return null;if(this.disabled)return e();const{active:t,focusableStyle:n}=this;return S(He,null,[S("div",{"aria-hidden":"true",tabindex:t?"0":"-1",ref:"focusableStartRef",style:n,onFocus:this.handleStartFocus}),e(),S("div",{"aria-hidden":"true",style:n,ref:"focusableEndRef",tabindex:t?"0":"-1",onFocus:this.handleEndFocus})])}});let vr=0,Zu="",Yu="",Ju="",Qu="";const eh=V("0px");function Dk(e){if(typeof document>"u")return;const t=document.documentElement;let n,o=!1;const r=()=>{t.style.marginRight=Zu,t.style.overflow=Yu,t.style.overflowX=Ju,t.style.overflowY=Qu,eh.value="0px"};It(()=>{n=ot(e,i=>{if(i){if(!vr){const a=window.innerWidth-t.offsetWidth;a>0&&(Zu=t.style.marginRight,t.style.marginRight=`${a}px`,eh.value=`${a}px`),Yu=t.style.overflow,Ju=t.style.overflowX,Qu=t.style.overflowY,t.style.overflow="hidden",t.style.overflowX="hidden",t.style.overflowY="hidden"}o=!0,vr++}else vr--,vr||r(),o=!1},{immediate:!0})}),Tt(()=>{n==null||n(),o&&(vr--,vr||r(),o=!1)})}const qc=V(!1);function th(){qc.value=!0}function nh(){qc.value=!1}let ni=0;function Ok(){return ar&&(Nn(()=>{ni||(window.addEventListener("compositionstart",th),window.addEventListener("compositionend",nh)),ni++}),Tt(()=>{ni<=1?(window.removeEventListener("compositionstart",th),window.removeEventListener("compositionend",nh),ni=0):ni--})),qc}function Dm(e){const t={isDeactivated:!1};let n=!1;return yg(()=>{if(t.isDeactivated=!1,!n){n=!0;return}e()}),$c(()=>{t.isDeactivated=!0,n||(n=!0)}),t}const oh="n-form-item";function Om(e,{defaultSize:t="medium",mergedSize:n,mergedDisabled:o}={}){const r=Me(oh,null);We(oh,null);const i=z(n?()=>n(r):()=>{const{size:l}=e;if(l)return l;if(r){const{mergedSize:c}=r;if(c.value!==void 0)return c.value}return t}),a=z(o?()=>o(r):()=>{const{disabled:l}=e;return l!==void 0?l:r?r.disabled.value:!1}),s=z(()=>{const{status:l}=e;return l||(r==null?void 0:r.mergedValidationStatus.value)});return Tt(()=>{r&&r.restoreValidation()}),{mergedSizeRef:i,mergedDisabledRef:a,mergedStatusRef:s,nTriggerFormBlur(){r&&r.handleContentBlur()},nTriggerFormChange(){r&&r.handleContentChange()},nTriggerFormFocus(){r&&r.handleContentFocus()},nTriggerFormInput(){r&&r.handleContentInput()}}}var Lm=typeof global=="object"&&global&&global.Object===Object&&global,Lk=typeof self=="object"&&self&&self.Object===Object&&self,zn=Lm||Lk||Function("return this")(),vo=zn.Symbol,Hm=Object.prototype,Hk=Hm.hasOwnProperty,$k=Hm.toString,oi=vo?vo.toStringTag:void 0;function Bk(e){var t=Hk.call(e,oi),n=e[oi];try{e[oi]=void 0;var o=!0}catch{}var r=$k.call(e);return o&&(t?e[oi]=n:delete e[oi]),r}var Nk=Object.prototype,zk=Nk.toString;function Fk(e){return zk.call(e)}var Wk="[object Null]",jk="[object Undefined]",rh=vo?vo.toStringTag:void 0;function sr(e){return e==null?e===void 0?jk:Wk:rh&&rh in Object(e)?Bk(e):Fk(e)}function yo(e){return e!=null&&typeof e=="object"}var Gk="[object Symbol]";function Xc(e){return typeof e=="symbol"||yo(e)&&sr(e)==Gk}function $m(e,t){for(var n=-1,o=e==null?0:e.length,r=Array(o);++n0){if(++t>=ux)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function mx(e){return function(){return e}}var Ua=function(){try{var e=cr(Object,"defineProperty");return e({},"",{}),e}catch{}}(),px=Ua?function(e,t){return Ua(e,"toString",{configurable:!0,enumerable:!1,value:mx(t),writable:!0})}:Zc,bx=gx(px),vx=9007199254740991,yx=/^(?:0|[1-9]\d*)$/;function Jc(e,t){var n=typeof e;return t=t??vx,!!t&&(n=="number"||n!="symbol"&&yx.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=_x}function Fr(e){return e!=null&&ed(e.length)&&!Yc(e)}function Px(e,t,n){if(!_o(n))return!1;var o=typeof t;return(o=="number"?Fr(n)&&Jc(t,n.length):o=="string"&&t in n)?Ui(n[t],e):!1}function Ax(e){return wx(function(t,n){var o=-1,r=n.length,i=r>1?n[r-1]:void 0,a=r>2?n[2]:void 0;for(i=e.length>3&&typeof i=="function"?(r--,i):void 0,a&&Px(n[0],n[1],a)&&(i=r<3?void 0:i,r=1),t=Object(t);++o-1}function N3(e,t){var n=this.__data__,o=ws(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}function Qn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++tr?0:r+t),n=n>r?r:n,n<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(r);++o=o?e:s4(e,t,n)}var c4="\\ud800-\\udfff",d4="\\u0300-\\u036f",u4="\\ufe20-\\ufe2f",h4="\\u20d0-\\u20ff",f4=d4+u4+h4,g4="\\ufe0e\\ufe0f",m4="\\u200d",p4=RegExp("["+m4+c4+f4+g4+"]");function Xm(e){return p4.test(e)}function b4(e){return e.split("")}var Zm="\\ud800-\\udfff",v4="\\u0300-\\u036f",y4="\\ufe20-\\ufe2f",C4="\\u20d0-\\u20ff",k4=v4+y4+C4,x4="\\ufe0e\\ufe0f",S4="["+Zm+"]",ql="["+k4+"]",Xl="\\ud83c[\\udffb-\\udfff]",T4="(?:"+ql+"|"+Xl+")",Ym="[^"+Zm+"]",Jm="(?:\\ud83c[\\udde6-\\uddff]){2}",Qm="[\\ud800-\\udbff][\\udc00-\\udfff]",w4="\\u200d",ep=T4+"?",tp="["+x4+"]?",_4="(?:"+w4+"(?:"+[Ym,Jm,Qm].join("|")+")"+tp+ep+")*",P4=tp+ep+_4,A4="(?:"+[Ym+ql+"?",ql,Jm,Qm,S4].join("|")+")",R4=RegExp(Xl+"(?="+Xl+")|"+A4+P4,"g");function E4(e){return e.match(R4)||[]}function I4(e){return Xm(e)?E4(e):b4(e)}function M4(e){return function(t){t=Ps(t);var n=Xm(t)?I4(t):void 0,o=n?n[0]:t.charAt(0),r=n?l4(n,1).join(""):t.slice(1);return o[e]()+r}}var D4=M4("toUpperCase");function O4(e,t,n,o){for(var r=-1,i=e==null?0:e.length;++rs))return!1;var c=i.get(e),d=i.get(t);if(c&&d)return c==t&&d==e;var u=-1,h=!0,g=n&J5?new Za:void 0;for(i.set(e,t),i.set(t,e);++u`}function ek(e,t,n){const{styles:o,ids:r}=n;r.has(e)||o!==null&&(r.add(e),o.push(QC(e,t)))}const tk=typeof document<"u";function Vi(){if(tk)return;const e=Me(JC,null);if(e!==null)return{adapter:(t,n)=>ek(t,n,e),context:e}}function Lu(e,t){console.error(`[vueuc/${e}]: ${t}`)}const{c:fa}=im(),nk="vueuc-style";function Hu(e){return typeof e=="string"?document.querySelector(e):e()}const Cm=de({name:"LazyTeleport",props:{to:{type:[String,Object],default:void 0},disabled:Boolean,show:{type:Boolean,required:!0}},setup(e){return{showTeleport:_C(Ve(e,"show")),mergedTo:z(()=>{const{to:t}=e;return t??"body"})}},render(){return this.showTeleport?this.disabled?jl("lazy-teleport",this.$slots):S(hs,{disabled:this.disabled,to:this.mergedTo},jl("lazy-teleport",this.$slots)):null}}),ga={top:"bottom",bottom:"top",left:"right",right:"left"},$u={start:"end",center:"center",end:"start"},dl={top:"height",bottom:"height",left:"width",right:"width"},ok={"bottom-start":"top left",bottom:"top center","bottom-end":"top right","top-start":"bottom left",top:"bottom center","top-end":"bottom right","right-start":"top left",right:"center left","right-end":"bottom left","left-start":"top right",left:"center right","left-end":"bottom right"},rk={"bottom-start":"bottom left",bottom:"bottom center","bottom-end":"bottom right","top-start":"top left",top:"top center","top-end":"top right","right-start":"top right",right:"center right","right-end":"bottom right","left-start":"top left",left:"center left","left-end":"bottom left"},ik={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},Bu={top:!0,bottom:!1,left:!0,right:!1},Nu={top:"end",bottom:"start",left:"end",right:"start"};function ak(e,t,n,o,r,i){if(!r||i)return{placement:e,top:0,left:0};const[a,s]=e.split("-");let l=s??"center",c={top:0,left:0};const d=(g,f,b)=>{let p=0,m=0;const k=n[g]-t[f]-t[g];return k>0&&o&&(b?m=Bu[f]?k:-k:p=Bu[f]?k:-k),{left:p,top:m}},u=a==="left"||a==="right";if(l!=="center"){const g=ik[e],f=ga[g],b=dl[g];if(n[b]>t[b]){if(t[g]+t[b]t[f]&&(l=$u[s])}else{const g=a==="bottom"||a==="top"?"left":"top",f=ga[g],b=dl[g],p=(n[b]-t[b])/2;(t[g]t[f]?(l=Nu[g],c=d(b,g,u)):(l=Nu[f],c=d(b,f,u)))}let h=a;return t[a] *",{pointerEvents:"all"})])]),km=de({name:"Follower",inheritAttrs:!1,props:{show:Boolean,enabled:{type:Boolean,default:void 0},placement:{type:String,default:"bottom"},syncTrigger:{type:Array,default:["resize","scroll"]},to:[String,Object],flip:{type:Boolean,default:!0},internalShift:Boolean,x:Number,y:Number,width:String,minWidth:String,containerClass:String,teleportDisabled:Boolean,zindexable:{type:Boolean,default:!0},zIndex:Number,overlap:Boolean},setup(e){const t=Me("VBinder"),n=Rt(()=>e.enabled!==void 0?e.enabled:e.show),o=V(null),r=V(null),i=()=>{const{syncTrigger:h}=e;h.includes("scroll")&&t.addScrollListener(l),h.includes("resize")&&t.addResizeListener(l)},a=()=>{t.removeScrollListener(l),t.removeResizeListener(l)};It(()=>{n.value&&(l(),i())});const s=Vi();ck.mount({id:"vueuc/binder",head:!0,anchorMetaName:nk,ssr:s}),Tt(()=>{a()}),AC(()=>{n.value&&l()});const l=()=>{if(!n.value)return;const h=o.value;if(h===null)return;const g=t.targetRef,{x:f,y:b,overlap:p}=e,m=f!==void 0&&b!==void 0?KC(f,b):ll(g);h.style.setProperty("--v-target-width",`${Math.round(m.width)}px`),h.style.setProperty("--v-target-height",`${Math.round(m.height)}px`);const{width:k,minWidth:T,placement:v,internalShift:x,flip:A}=e;h.setAttribute("v-placement",v),p?h.setAttribute("v-overlap",""):h.removeAttribute("v-overlap");const{style:y}=h;k==="target"?y.width=`${m.width}px`:k!==void 0?y.width=k:y.width="",T==="target"?y.minWidth=`${m.width}px`:T!==void 0?y.minWidth=T:y.minWidth="";const R=ll(h),P=ll(r.value),{left:D,top:W,placement:M}=ak(v,m,R,x,A,p),j=sk(M,p),{left:ee,top:B,transform:X}=lk(M,P,m,W,D,p);h.setAttribute("v-placement",M),h.style.setProperty("--v-offset-left",`${Math.round(D)}px`),h.style.setProperty("--v-offset-top",`${Math.round(W)}px`),h.style.transform=`translateX(${ee}) translateY(${B}) ${X}`,h.style.setProperty("--v-transform-origin",j),h.style.transformOrigin=j};ot(n,h=>{h?(i(),c()):a()});const c=()=>{jt().then(l).catch(h=>console.error(h))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(h=>{ot(Ve(e,h),l)}),["teleportDisabled"].forEach(h=>{ot(Ve(e,h),c)}),ot(Ve(e,"syncTrigger"),h=>{h.includes("resize")?t.addResizeListener(l):t.removeResizeListener(l),h.includes("scroll")?t.addScrollListener(l):t.removeScrollListener(l)});const d=ji(),u=Rt(()=>{const{to:h}=e;if(h!==void 0)return h;d.value});return{VBinder:t,mergedEnabled:n,offsetContainerRef:r,followerRef:o,mergedTo:u,syncPosition:l}},render(){return S(Cm,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e,t;const n=S("div",{class:["v-binder-follower-container",this.containerClass],ref:"offsetContainerRef"},[S("div",{class:"v-binder-follower-content",ref:"followerRef"},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))]);return this.zindexable?po(n,[[Uc,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):n}})}});var Jo=[],dk=function(){return Jo.some(function(e){return e.activeTargets.length>0})},uk=function(){return Jo.some(function(e){return e.skippedTargets.length>0})},zu="ResizeObserver loop completed with undelivered notifications.",hk=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:zu}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=zu),window.dispatchEvent(e)},Mi;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(Mi||(Mi={}));var Qo=function(e){return Object.freeze(e)},fk=function(){function e(t,n){this.inlineSize=t,this.blockSize=n,Qo(this)}return e}(),xm=function(){function e(t,n,o,r){return this.x=t,this.y=n,this.width=o,this.height=r,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Qo(this)}return e.prototype.toJSON=function(){var t=this,n=t.x,o=t.y,r=t.top,i=t.right,a=t.bottom,s=t.left,l=t.width,c=t.height;return{x:n,y:o,top:r,right:i,bottom:a,left:s,width:l,height:c}},e.fromRect=function(t){return new e(t.x,t.y,t.width,t.height)},e}(),Kc=function(e){return e instanceof SVGElement&&"getBBox"in e},Sm=function(e){if(Kc(e)){var t=e.getBBox(),n=t.width,o=t.height;return!n&&!o}var r=e,i=r.offsetWidth,a=r.offsetHeight;return!(i||a||e.getClientRects().length)},Fu=function(e){var t;if(e instanceof Element)return!0;var n=(t=e==null?void 0:e.ownerDocument)===null||t===void 0?void 0:t.defaultView;return!!(n&&e instanceof n.Element)},gk=function(e){switch(e.tagName){case"INPUT":if(e.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},bi=typeof window<"u"?window:{},ma=new WeakMap,Wu=/auto|scroll/,mk=/^tb|vertical/,pk=/msie|trident/i.test(bi.navigator&&bi.navigator.userAgent),En=function(e){return parseFloat(e||"0")},Er=function(e,t,n){return e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=!1),new fk((n?t:e)||0,(n?e:t)||0)},ju=Qo({devicePixelContentBoxSize:Er(),borderBoxSize:Er(),contentBoxSize:Er(),contentRect:new xm(0,0,0,0)}),Tm=function(e,t){if(t===void 0&&(t=!1),ma.has(e)&&!t)return ma.get(e);if(Sm(e))return ma.set(e,ju),ju;var n=getComputedStyle(e),o=Kc(e)&&e.ownerSVGElement&&e.getBBox(),r=!pk&&n.boxSizing==="border-box",i=mk.test(n.writingMode||""),a=!o&&Wu.test(n.overflowY||""),s=!o&&Wu.test(n.overflowX||""),l=o?0:En(n.paddingTop),c=o?0:En(n.paddingRight),d=o?0:En(n.paddingBottom),u=o?0:En(n.paddingLeft),h=o?0:En(n.borderTopWidth),g=o?0:En(n.borderRightWidth),f=o?0:En(n.borderBottomWidth),b=o?0:En(n.borderLeftWidth),p=u+c,m=l+d,k=b+g,T=h+f,v=s?e.offsetHeight-T-e.clientHeight:0,x=a?e.offsetWidth-k-e.clientWidth:0,A=r?p+k:0,y=r?m+T:0,R=o?o.width:En(n.width)-A-x,P=o?o.height:En(n.height)-y-v,D=R+p+x+k,W=P+m+v+T,M=Qo({devicePixelContentBoxSize:Er(Math.round(R*devicePixelRatio),Math.round(P*devicePixelRatio),i),borderBoxSize:Er(D,W,i),contentBoxSize:Er(R,P,i),contentRect:new xm(u,l,R,P)});return ma.set(e,M),M},wm=function(e,t,n){var o=Tm(e,n),r=o.borderBoxSize,i=o.contentBoxSize,a=o.devicePixelContentBoxSize;switch(t){case Mi.DEVICE_PIXEL_CONTENT_BOX:return a;case Mi.BORDER_BOX:return r;default:return i}},bk=function(){function e(t){var n=Tm(t);this.target=t,this.contentRect=n.contentRect,this.borderBoxSize=Qo([n.borderBoxSize]),this.contentBoxSize=Qo([n.contentBoxSize]),this.devicePixelContentBoxSize=Qo([n.devicePixelContentBoxSize])}return e}(),_m=function(e){if(Sm(e))return 1/0;for(var t=0,n=e.parentNode;n;)t+=1,n=n.parentNode;return t},vk=function(){var e=1/0,t=[];Jo.forEach(function(a){if(a.activeTargets.length!==0){var s=[];a.activeTargets.forEach(function(c){var d=new bk(c.target),u=_m(c.target);s.push(d),c.lastReportedSize=wm(c.target,c.observedBox),ue?n.activeTargets.push(r):n.skippedTargets.push(r))})})},yk=function(){var e=0;for(Gu(e);dk();)e=vk(),Gu(e);return uk()&&hk(),e>0},ul,Pm=[],Ck=function(){return Pm.splice(0).forEach(function(e){return e()})},kk=function(e){if(!ul){var t=0,n=document.createTextNode(""),o={characterData:!0};new MutationObserver(function(){return Ck()}).observe(n,o),ul=function(){n.textContent="".concat(t?t--:t++)}}Pm.push(e),ul()},xk=function(e){kk(function(){requestAnimationFrame(e)})},Ia=0,Sk=function(){return!!Ia},Tk=250,wk={attributes:!0,characterData:!0,childList:!0,subtree:!0},Vu=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Uu=function(e){return e===void 0&&(e=0),Date.now()+e},hl=!1,_k=function(){function e(){var t=this;this.stopped=!0,this.listener=function(){return t.schedule()}}return e.prototype.run=function(t){var n=this;if(t===void 0&&(t=Tk),!hl){hl=!0;var o=Uu(t);xk(function(){var r=!1;try{r=yk()}finally{if(hl=!1,t=o-Uu(),!Sk())return;r?n.run(1e3):t>0?n.run(t):n.start()}})}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var t=this,n=function(){return t.observer&&t.observer.observe(document.body,wk)};document.body?n():bi.addEventListener("DOMContentLoaded",n)},e.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Vu.forEach(function(n){return bi.addEventListener(n,t.listener,!0)}))},e.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),Vu.forEach(function(n){return bi.removeEventListener(n,t.listener,!0)}),this.stopped=!0)},e}(),Ul=new _k,Ku=function(e){!Ia&&e>0&&Ul.start(),Ia+=e,!Ia&&Ul.stop()},Pk=function(e){return!Kc(e)&&!gk(e)&&getComputedStyle(e).display==="inline"},Ak=function(){function e(t,n){this.target=t,this.observedBox=n||Mi.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var t=wm(this.target,this.observedBox,!0);return Pk(this.target)&&(this.lastReportedSize=t),this.lastReportedSize.inlineSize!==t.inlineSize||this.lastReportedSize.blockSize!==t.blockSize},e}(),Rk=function(){function e(t,n){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=n}return e}(),pa=new WeakMap,qu=function(e,t){for(var n=0;n=0&&(i&&Jo.splice(Jo.indexOf(o),1),o.observationTargets.splice(r,1),Ku(-1))},e.disconnect=function(t){var n=this,o=pa.get(t);o.observationTargets.slice().forEach(function(r){return n.unobserve(t,r.target)}),o.activeTargets.splice(0,o.activeTargets.length)},e}(),Ek=function(){function e(t){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof t!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");ba.connect(this,t)}return e.prototype.observe=function(t,n){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Fu(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");ba.observe(this,t,n)},e.prototype.unobserve=function(t){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Fu(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");ba.unobserve(this,t)},e.prototype.disconnect=function(){ba.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();class Ik{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new(typeof window<"u"&&window.ResizeObserver||Ek)(this.handleResize),this.elHandlersMap=new Map}handleResize(t){for(const n of t){const o=this.elHandlersMap.get(n.target);o!==void 0&&o(n)}}registerHandler(t,n){this.elHandlersMap.set(t,n),this.observer.observe(t)}unregisterHandler(t){this.elHandlersMap.has(t)&&(this.elHandlersMap.delete(t),this.observer.unobserve(t))}}const Xu=new Ik,Va=de({name:"ResizeObserver",props:{onResize:Function},setup(e){let t=!1;const n=rn().proxy;function o(r){const{onResize:i}=e;i!==void 0&&i(r)}It(()=>{const r=n.$el;if(r===void 0){Lu("resize-observer","$el does not exist.");return}if(r.nextElementSibling!==r.nextSibling&&r.nodeType===3&&r.nodeValue!==""){Lu("resize-observer","$el can not be observed (it may be a text node).");return}r.nextElementSibling!==null&&(Xu.registerHandler(r.nextElementSibling,o),t=!0)}),Tt(()=>{t&&Xu.unregisterHandler(n.$el.nextElementSibling)})},render(){return xg(this.$slots,"default")}});function Am(e){return e instanceof HTMLElement}function Rm(e){for(let t=0;t=0;t--){const n=e.childNodes[t];if(Am(n)&&(Im(n)||Em(n)))return!0}return!1}function Im(e){if(!Mk(e))return!1;try{e.focus({preventScroll:!0})}catch{}return document.activeElement===e}function Mk(e){if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.getAttribute("disabled"))return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return e.type!=="hidden"&&e.type!=="file";case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}}let ti=[];const Mm=de({name:"FocusTrap",props:{disabled:Boolean,active:Boolean,autoFocus:{type:Boolean,default:!0},onEsc:Function,initialFocusTo:String,finalFocusTo:String,returnFocusOnDeactivated:{type:Boolean,default:!0}},setup(e){const t=vs(),n=V(null),o=V(null);let r=!1,i=!1;const a=typeof document>"u"?null:document.activeElement;function s(){return ti[ti.length-1]===t}function l(p){var m;p.code==="Escape"&&s()&&((m=e.onEsc)===null||m===void 0||m.call(e,p))}It(()=>{ot(()=>e.active,p=>{p?(u(),lt("keydown",document,l)):(Ue("keydown",document,l),r&&h())},{immediate:!0})}),Tt(()=>{Ue("keydown",document,l),r&&h()});function c(p){if(!i&&s()){const m=d();if(m===null||m.contains(Ai(p)))return;g("first")}}function d(){const p=n.value;if(p===null)return null;let m=p;for(;m=m.nextSibling,!(m===null||m instanceof Element&&m.tagName==="DIV"););return m}function u(){var p;if(!e.disabled){if(ti.push(t),e.autoFocus){const{initialFocusTo:m}=e;m===void 0?g("first"):(p=Hu(m))===null||p===void 0||p.focus({preventScroll:!0})}r=!0,document.addEventListener("focus",c,!0)}}function h(){var p;if(e.disabled||(document.removeEventListener("focus",c,!0),ti=ti.filter(k=>k!==t),s()))return;const{finalFocusTo:m}=e;m!==void 0?(p=Hu(m))===null||p===void 0||p.focus({preventScroll:!0}):e.returnFocusOnDeactivated&&a instanceof HTMLElement&&(i=!0,a.focus({preventScroll:!0}),i=!1)}function g(p){if(s()&&e.active){const m=n.value,k=o.value;if(m!==null&&k!==null){const T=d();if(T==null||T===k){i=!0,m.focus({preventScroll:!0}),i=!1;return}i=!0;const v=p==="first"?Rm(T):Em(T);i=!1,v||(i=!0,m.focus({preventScroll:!0}),i=!1)}}}function f(p){if(i)return;const m=d();m!==null&&(p.relatedTarget!==null&&m.contains(p.relatedTarget)?g("last"):g("first"))}function b(p){i||(p.relatedTarget!==null&&p.relatedTarget===n.value?g("last"):g("first"))}return{focusableStartRef:n,focusableEndRef:o,focusableStyle:"position: absolute; height: 0; width: 0;",handleStartFocus:f,handleEndFocus:b}},render(){const{default:e}=this.$slots;if(e===void 0)return null;if(this.disabled)return e();const{active:t,focusableStyle:n}=this;return S(He,null,[S("div",{"aria-hidden":"true",tabindex:t?"0":"-1",ref:"focusableStartRef",style:n,onFocus:this.handleStartFocus}),e(),S("div",{"aria-hidden":"true",style:n,ref:"focusableEndRef",tabindex:t?"0":"-1",onFocus:this.handleEndFocus})])}});let vr=0,Zu="",Yu="",Ju="",Qu="";const eh=V("0px");function Dk(e){if(typeof document>"u")return;const t=document.documentElement;let n,o=!1;const r=()=>{t.style.marginRight=Zu,t.style.overflow=Yu,t.style.overflowX=Ju,t.style.overflowY=Qu,eh.value="0px"};It(()=>{n=ot(e,i=>{if(i){if(!vr){const a=window.innerWidth-t.offsetWidth;a>0&&(Zu=t.style.marginRight,t.style.marginRight=`${a}px`,eh.value=`${a}px`),Yu=t.style.overflow,Ju=t.style.overflowX,Qu=t.style.overflowY,t.style.overflow="hidden",t.style.overflowX="hidden",t.style.overflowY="hidden"}o=!0,vr++}else vr--,vr||r(),o=!1},{immediate:!0})}),Tt(()=>{n==null||n(),o&&(vr--,vr||r(),o=!1)})}const qc=V(!1);function th(){qc.value=!0}function nh(){qc.value=!1}let ni=0;function Ok(){return ar&&(Nn(()=>{ni||(window.addEventListener("compositionstart",th),window.addEventListener("compositionend",nh)),ni++}),Tt(()=>{ni<=1?(window.removeEventListener("compositionstart",th),window.removeEventListener("compositionend",nh),ni=0):ni--})),qc}function Dm(e){const t={isDeactivated:!1};let n=!1;return yg(()=>{if(t.isDeactivated=!1,!n){n=!0;return}e()}),$c(()=>{t.isDeactivated=!0,n||(n=!0)}),t}const oh="n-form-item";function Om(e,{defaultSize:t="medium",mergedSize:n,mergedDisabled:o}={}){const r=Me(oh,null);je(oh,null);const i=z(n?()=>n(r):()=>{const{size:l}=e;if(l)return l;if(r){const{mergedSize:c}=r;if(c.value!==void 0)return c.value}return t}),a=z(o?()=>o(r):()=>{const{disabled:l}=e;return l!==void 0?l:r?r.disabled.value:!1}),s=z(()=>{const{status:l}=e;return l||(r==null?void 0:r.mergedValidationStatus.value)});return Tt(()=>{r&&r.restoreValidation()}),{mergedSizeRef:i,mergedDisabledRef:a,mergedStatusRef:s,nTriggerFormBlur(){r&&r.handleContentBlur()},nTriggerFormChange(){r&&r.handleContentChange()},nTriggerFormFocus(){r&&r.handleContentFocus()},nTriggerFormInput(){r&&r.handleContentInput()}}}var Lm=typeof global=="object"&&global&&global.Object===Object&&global,Lk=typeof self=="object"&&self&&self.Object===Object&&self,zn=Lm||Lk||Function("return this")(),vo=zn.Symbol,Hm=Object.prototype,Hk=Hm.hasOwnProperty,$k=Hm.toString,oi=vo?vo.toStringTag:void 0;function Bk(e){var t=Hk.call(e,oi),n=e[oi];try{e[oi]=void 0;var o=!0}catch{}var r=$k.call(e);return o&&(t?e[oi]=n:delete e[oi]),r}var Nk=Object.prototype,zk=Nk.toString;function Fk(e){return zk.call(e)}var Wk="[object Null]",jk="[object Undefined]",rh=vo?vo.toStringTag:void 0;function sr(e){return e==null?e===void 0?jk:Wk:rh&&rh in Object(e)?Bk(e):Fk(e)}function yo(e){return e!=null&&typeof e=="object"}var Gk="[object Symbol]";function Xc(e){return typeof e=="symbol"||yo(e)&&sr(e)==Gk}function $m(e,t){for(var n=-1,o=e==null?0:e.length,r=Array(o);++n0){if(++t>=ux)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function mx(e){return function(){return e}}var Ua=function(){try{var e=cr(Object,"defineProperty");return e({},"",{}),e}catch{}}(),px=Ua?function(e,t){return Ua(e,"toString",{configurable:!0,enumerable:!1,value:mx(t),writable:!0})}:Zc,bx=gx(px),vx=9007199254740991,yx=/^(?:0|[1-9]\d*)$/;function Jc(e,t){var n=typeof e;return t=t??vx,!!t&&(n=="number"||n!="symbol"&&yx.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=_x}function Fr(e){return e!=null&&ed(e.length)&&!Yc(e)}function Px(e,t,n){if(!_o(n))return!1;var o=typeof t;return(o=="number"?Fr(n)&&Jc(t,n.length):o=="string"&&t in n)?Ui(n[t],e):!1}function Ax(e){return wx(function(t,n){var o=-1,r=n.length,i=r>1?n[r-1]:void 0,a=r>2?n[2]:void 0;for(i=e.length>3&&typeof i=="function"?(r--,i):void 0,a&&Px(n[0],n[1],a)&&(i=r<3?void 0:i,r=1),t=Object(t);++o-1}function N3(e,t){var n=this.__data__,o=ws(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}function Qn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++tr?0:r+t),n=n>r?r:n,n<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(r);++o=o?e:s4(e,t,n)}var c4="\\ud800-\\udfff",d4="\\u0300-\\u036f",u4="\\ufe20-\\ufe2f",h4="\\u20d0-\\u20ff",f4=d4+u4+h4,g4="\\ufe0e\\ufe0f",m4="\\u200d",p4=RegExp("["+m4+c4+f4+g4+"]");function Xm(e){return p4.test(e)}function b4(e){return e.split("")}var Zm="\\ud800-\\udfff",v4="\\u0300-\\u036f",y4="\\ufe20-\\ufe2f",C4="\\u20d0-\\u20ff",k4=v4+y4+C4,x4="\\ufe0e\\ufe0f",S4="["+Zm+"]",ql="["+k4+"]",Xl="\\ud83c[\\udffb-\\udfff]",T4="(?:"+ql+"|"+Xl+")",Ym="[^"+Zm+"]",Jm="(?:\\ud83c[\\udde6-\\uddff]){2}",Qm="[\\ud800-\\udbff][\\udc00-\\udfff]",w4="\\u200d",ep=T4+"?",tp="["+x4+"]?",_4="(?:"+w4+"(?:"+[Ym,Jm,Qm].join("|")+")"+tp+ep+")*",P4=tp+ep+_4,A4="(?:"+[Ym+ql+"?",ql,Jm,Qm,S4].join("|")+")",R4=RegExp(Xl+"(?="+Xl+")|"+A4+P4,"g");function E4(e){return e.match(R4)||[]}function I4(e){return Xm(e)?E4(e):b4(e)}function M4(e){return function(t){t=Ps(t);var n=Xm(t)?I4(t):void 0,o=n?n[0]:t.charAt(0),r=n?l4(n,1).join(""):t.slice(1);return o[e]()+r}}var D4=M4("toUpperCase");function O4(e,t,n,o){for(var r=-1,i=e==null?0:e.length;++rs))return!1;var c=i.get(e),d=i.get(t);if(c&&d)return c==t&&d==e;var u=-1,h=!0,g=n&J5?new Za:void 0;for(i.set(e,t),i.set(t,e);++u{const{show:y}=e;y&&!xC()&&!e.internalDeactivateImmediately&&(u.value=!0)});const h=z(()=>{const{trigger:y,onClickoutside:R}=e,P=[],{positionManuallyRef:{value:D}}=l;return D||(y==="click"&&!R&&P.push([Vl,v,void 0,{capture:!0}]),y==="hover"&&P.push([XC,T])),R&&P.push([Vl,v,void 0,{capture:!0}]),(e.displayDirective==="show"||e.animated&&u.value)&&P.push([Mr,e.show]),P}),g=z(()=>{const{common:{cubicBezierEaseInOut:y,cubicBezierEaseIn:R,cubicBezierEaseOut:P},self:{space:D,spaceArrow:W,padding:M,fontSize:j,textColor:ee,dividerColor:B,color:X,boxShadow:$,borderRadius:ie,arrowHeight:ve,arrowOffset:ye,arrowOffsetVertical:Ae}}=a.value;return{"--n-box-shadow":$,"--n-bezier":y,"--n-bezier-ease-in":R,"--n-bezier-ease-out":P,"--n-font-size":j,"--n-text-color":ee,"--n-color":X,"--n-divider-color":B,"--n-border-radius":ie,"--n-arrow-height":ve,"--n-arrow-offset":ye,"--n-arrow-offset-vertical":Ae,"--n-padding":M,"--n-space":D,"--n-space-arrow":W}}),f=z(()=>{const y=e.width==="trigger"?void 0:Ra(e.width),R=[];y&&R.push({width:y});const{maxWidth:P,minWidth:D}=e;return P&&R.push({maxWidth:Ra(P)}),D&&R.push({maxWidth:Ra(D)}),i||R.push(g.value),R}),b=i?Mt("popover",void 0,g,e):void 0;l.setBodyInstance({syncPosition:p}),Tt(()=>{l.setBodyInstance(null)}),ot(Ve(e,"show"),y=>{e.animated||(y?d.value=!0:d.value=!1)});function p(){var y;(y=s.value)===null||y===void 0||y.syncPosition()}function m(y){e.trigger==="hover"&&e.keepAliveOnHover&&e.show&&l.handleMouseEnter(y)}function k(y){e.trigger==="hover"&&e.keepAliveOnHover&&l.handleMouseLeave(y)}function T(y){e.trigger==="hover"&&!x().contains(Ai(y))&&l.handleMouseMoveOutside(y)}function v(y){(e.trigger==="click"&&!x().contains(Ai(y))||e.onClickoutside)&&l.handleClickOutside(y)}function x(){return l.getTriggerElement()}We(Gi,c),We(Ts,null),We(Ss,null);function A(){if(b==null||b.onRender(),!(e.displayDirective==="show"||e.show||e.animated&&u.value))return null;let R;const P=l.internalRenderBodyRef.value,{value:D}=r;if(P)R=P([`${D}-popover-shared`,b==null?void 0:b.themeClass.value,e.overlap&&`${D}-popover-shared--overlap`,e.showArrow&&`${D}-popover-shared--show-arrow`,e.arrowPointToCenter&&`${D}-popover-shared--center-arrow`],c,f.value,m,k);else{const{value:W}=l.extraClassRef,{internalTrapFocus:M}=e,j=!Fl(t.header)||!Fl(t.footer),ee=()=>{var B,X;const $=j?S(He,null,Pt(t.header,ye=>ye?S("div",{class:[`${D}-popover__header`,e.headerClass],style:e.headerStyle},ye):null),Pt(t.default,ye=>ye?S("div",{class:[`${D}-popover__content`,e.contentClass],style:e.contentStyle},t):null),Pt(t.footer,ye=>ye?S("div",{class:[`${D}-popover__footer`,e.footerClass],style:e.footerStyle},ye):null)):e.scrollable?(B=t.default)===null||B===void 0?void 0:B.call(t):S("div",{class:[`${D}-popover__content`,e.contentClass],style:e.contentStyle},t),ie=e.scrollable?S(Rp,{contentClass:j?void 0:`${D}-popover__content ${(X=e.contentClass)!==null&&X!==void 0?X:""}`,contentStyle:j?void 0:e.contentStyle},{default:()=>$}):$,ve=e.showArrow?Op({arrowClass:e.arrowClass,arrowStyle:e.arrowStyle,arrowWrapperClass:e.arrowWrapperClass,arrowWrapperStyle:e.arrowWrapperStyle,clsPrefix:D}):null;return[ie,ve]};R=S("div",$n({class:[`${D}-popover`,`${D}-popover-shared`,b==null?void 0:b.themeClass.value,W.map(B=>`${D}-${B}`),{[`${D}-popover--scrollable`]:e.scrollable,[`${D}-popover--show-header-or-footer`]:j,[`${D}-popover--raw`]:e.raw,[`${D}-popover-shared--overlap`]:e.overlap,[`${D}-popover-shared--show-arrow`]:e.showArrow,[`${D}-popover-shared--center-arrow`]:e.arrowPointToCenter}],ref:c,style:f.value,onKeydown:l.handleKeydown,onMouseenter:m,onMouseleave:k},n),M?S(Mm,{active:e.show,autoFocus:!0},{default:ee}):ee())}return po(R,h.value)}return{displayed:u,namespace:o,isMounted:l.isMountedRef,zIndex:l.zIndexRef,followerRef:s,adjustedTo:Or(e),followerEnabled:d,renderContentNode:A}},render(){return S(km,{ref:"followerRef",zIndex:this.zIndex,show:this.show,enabled:this.followerEnabled,to:this.adjustedTo,x:this.x,y:this.y,flip:this.flip,placement:this.placement,containerClass:this.namespace,overlap:this.overlap,width:this.width==="trigger"?"target":void 0,teleportDisabled:this.adjustedTo===Or.tdkey},{default:()=>this.animated?S(Bn,{name:"popover-transition",appear:this.isMounted,onEnter:()=>{this.followerEnabled=!0},onAfterLeave:()=>{var e;(e=this.internalOnAfterLeave)===null||e===void 0||e.call(this),this.followerEnabled=!1,this.displayed=!1}},{default:this.renderContentNode}):this.renderContentNode()})}}),RT=Object.keys(Dp),ET={focus:["onFocus","onBlur"],click:["onClick"],hover:["onMouseenter","onMouseleave"],manual:[],nested:["onFocus","onBlur","onMouseenter","onMouseleave","onClick"]};function IT(e,t,n){ET[t].forEach(o=>{e.props?e.props=Object.assign({},e.props):e.props={};const r=e.props[o],i=n[o];r?e.props[o]=(...a)=>{r(...a),i(...a)}:e.props[o]=i})}const Is={show:{type:Boolean,default:void 0},defaultShow:Boolean,showArrow:{type:Boolean,default:!0},trigger:{type:String,default:"hover"},delay:{type:Number,default:100},duration:{type:Number,default:100},raw:Boolean,placement:{type:String,default:"top"},x:Number,y:Number,arrowPointToCenter:Boolean,disabled:Boolean,getDisabled:Function,displayDirective:{type:String,default:"if"},arrowClass:String,arrowStyle:[String,Object],arrowWrapperClass:String,arrowWrapperStyle:[String,Object],flip:{type:Boolean,default:!0},animated:{type:Boolean,default:!0},width:{type:[Number,String],default:void 0},overlap:Boolean,keepAliveOnHover:{type:Boolean,default:!0},zIndex:Number,to:Or.propTo,scrollable:Boolean,contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],footerClass:String,footerStyle:[Object,String],onClickoutside:Function,"onUpdate:show":[Function,Array],onUpdateShow:[Function,Array],internalDeactivateImmediately:Boolean,internalSyncTargetWithParent:Boolean,internalInheritedEventHandlers:{type:Array,default:()=>[]},internalTrapFocus:Boolean,internalExtraClass:{type:Array,default:()=>[]},onShow:[Function,Array],onHide:[Function,Array],arrow:{type:Boolean,default:void 0},minWidth:Number,maxWidth:Number},MT=Object.assign(Object.assign(Object.assign({},Ee.props),Is),{internalOnAfterLeave:Function,internalRenderBody:Function}),Ms=de({name:"Popover",inheritAttrs:!1,props:MT,__popover__:!0,setup(e){const t=ji(),n=V(null),o=z(()=>e.show),r=V(e.defaultShow),i=Vc(o,r),a=Rt(()=>e.disabled?!1:i.value),s=()=>{if(e.disabled)return!0;const{getDisabled:B}=e;return!!(B!=null&&B())},l=()=>s()?!1:i.value,c=fm(e,["arrow","showArrow"]),d=z(()=>e.overlap?!1:c.value);let u=null;const h=V(null),g=V(null),f=Rt(()=>e.x!==void 0&&e.y!==void 0);function b(B){const{"onUpdate:show":X,onUpdateShow:$,onShow:ie,onHide:ve}=e;r.value=B,X&&ze(X,B),$&&ze($,B),B&&ie&&ze(ie,!0),B&&ve&&ze(ve,!1)}function p(){u&&u.syncPosition()}function m(){const{value:B}=h;B&&(window.clearTimeout(B),h.value=null)}function k(){const{value:B}=g;B&&(window.clearTimeout(B),g.value=null)}function T(){const B=s();if(e.trigger==="focus"&&!B){if(l())return;b(!0)}}function v(){const B=s();if(e.trigger==="focus"&&!B){if(!l())return;b(!1)}}function x(){const B=s();if(e.trigger==="hover"&&!B){if(k(),h.value!==null||l())return;const X=()=>{b(!0),h.value=null},{delay:$}=e;$===0?X():h.value=window.setTimeout(X,$)}}function A(){const B=s();if(e.trigger==="hover"&&!B){if(m(),g.value!==null||!l())return;const X=()=>{b(!1),g.value=null},{duration:$}=e;$===0?X():g.value=window.setTimeout(X,$)}}function y(){A()}function R(B){var X;l()&&(e.trigger==="click"&&(m(),k(),b(!1)),(X=e.onClickoutside)===null||X===void 0||X.call(e,B))}function P(){if(e.trigger==="click"&&!s()){m(),k();const B=!l();b(B)}}function D(B){e.internalTrapFocus&&B.key==="Escape"&&(m(),k(),b(!1))}function W(B){r.value=B}function M(){var B;return(B=n.value)===null||B===void 0?void 0:B.targetRef}function j(B){u=B}return We("NPopover",{getTriggerElement:M,handleKeydown:D,handleMouseEnter:x,handleMouseLeave:A,handleClickOutside:R,handleMouseMoveOutside:y,setBodyInstance:j,positionManuallyRef:f,isMountedRef:t,zIndexRef:Ve(e,"zIndex"),extraClassRef:Ve(e,"internalExtraClass"),internalRenderBodyRef:Ve(e,"internalRenderBody")}),bo(()=>{i.value&&s()&&b(!1)}),{binderInstRef:n,positionManually:f,mergedShowConsideringDisabledProp:a,uncontrolledShow:r,mergedShowArrow:d,getMergedShow:l,setShow:W,handleClick:P,handleMouseEnter:x,handleMouseLeave:A,handleFocus:T,handleBlur:v,syncPosition:p}},render(){var e;const{positionManually:t,$slots:n}=this;let o,r=!1;if(!t&&(n.activator?o=zl(n,"activator"):o=zl(n,"trigger"),o)){o=vn(o),o=o.type===Br?S("span",[o]):o;const i={onClick:this.handleClick,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onFocus:this.handleFocus,onBlur:this.handleBlur};if(!((e=o.type)===null||e===void 0)&&e.__popover__)r=!0,o.props||(o.props={internalSyncTargetWithParent:!0,internalInheritedEventHandlers:[]}),o.props.internalSyncTargetWithParent=!0,o.props.internalInheritedEventHandlers?o.props.internalInheritedEventHandlers=[i,...o.props.internalInheritedEventHandlers]:o.props.internalInheritedEventHandlers=[i];else{const{internalInheritedEventHandlers:a}=this,s=[i,...a],l={onBlur:c=>{s.forEach(d=>{d.onBlur(c)})},onFocus:c=>{s.forEach(d=>{d.onFocus(c)})},onClick:c=>{s.forEach(d=>{d.onClick(c)})},onMouseenter:c=>{s.forEach(d=>{d.onMouseenter(c)})},onMouseleave:c=>{s.forEach(d=>{d.onMouseleave(c)})}};IT(o,a?"nested":t?"manual":this.trigger,l)}}return S(vm,{ref:"binderInstRef",syncTarget:!r,syncTargetWithParent:this.internalSyncTargetWithParent},{default:()=>{this.mergedShowConsideringDisabledProp;const i=this.getMergedShow();return[this.internalTrapFocus&&i?po(S("div",{style:{position:"fixed",inset:0}}),[[Uc,{enabled:i,zIndex:this.zIndex}]]):null,t?null:S(ym,null,{default:()=>o}),S(AT,or(this.$props,RT,Object.assign(Object.assign({},this.$attrs),{showArrow:this.mergedShowArrow,show:i})),{default:()=>{var a,s;return(s=(a=this.$slots).default)===null||s===void 0?void 0:s.call(a)},header:()=>{var a,s;return(s=(a=this.$slots).header)===null||s===void 0?void 0:s.call(a)},footer:()=>{var a,s;return(s=(a=this.$slots).footer)===null||s===void 0?void 0:s.call(a)}})]}})}}),Lp={closeIconSizeTiny:"12px",closeIconSizeSmall:"12px",closeIconSizeMedium:"14px",closeIconSizeLarge:"14px",closeSizeTiny:"16px",closeSizeSmall:"16px",closeSizeMedium:"18px",closeSizeLarge:"18px",padding:"0 7px",closeMargin:"0 0 0 4px"},Hp={name:"Tag",common:ae,self(e){const{textColor2:t,primaryColorHover:n,primaryColorPressed:o,primaryColor:r,infoColor:i,successColor:a,warningColor:s,errorColor:l,baseColor:c,borderColor:d,tagColor:u,opacityDisabled:h,closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,closeColorHover:p,closeColorPressed:m,borderRadiusSmall:k,fontSizeMini:T,fontSizeTiny:v,fontSizeSmall:x,fontSizeMedium:A,heightMini:y,heightTiny:R,heightSmall:P,heightMedium:D,buttonColor2Hover:W,buttonColor2Pressed:M,fontWeightStrong:j}=e;return Object.assign(Object.assign({},Lp),{closeBorderRadius:k,heightTiny:y,heightSmall:R,heightMedium:P,heightLarge:D,borderRadius:k,opacityDisabled:h,fontSizeTiny:T,fontSizeSmall:v,fontSizeMedium:x,fontSizeLarge:A,fontWeightStrong:j,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:W,colorPressedCheckable:M,colorChecked:r,colorCheckedHover:n,colorCheckedPressed:o,border:`1px solid ${d}`,textColor:t,color:u,colorBordered:"#0000",closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,closeColorHover:p,closeColorPressed:m,borderPrimary:`1px solid ${U(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:U(r,{alpha:.16}),colorBorderedPrimary:"#0000",closeIconColorPrimary:mt(r,{lightness:.7}),closeIconColorHoverPrimary:mt(r,{lightness:.7}),closeIconColorPressedPrimary:mt(r,{lightness:.7}),closeColorHoverPrimary:U(r,{alpha:.16}),closeColorPressedPrimary:U(r,{alpha:.12}),borderInfo:`1px solid ${U(i,{alpha:.3})}`,textColorInfo:i,colorInfo:U(i,{alpha:.16}),colorBorderedInfo:"#0000",closeIconColorInfo:mt(i,{alpha:.7}),closeIconColorHoverInfo:mt(i,{alpha:.7}),closeIconColorPressedInfo:mt(i,{alpha:.7}),closeColorHoverInfo:U(i,{alpha:.16}),closeColorPressedInfo:U(i,{alpha:.12}),borderSuccess:`1px solid ${U(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:U(a,{alpha:.16}),colorBorderedSuccess:"#0000",closeIconColorSuccess:mt(a,{alpha:.7}),closeIconColorHoverSuccess:mt(a,{alpha:.7}),closeIconColorPressedSuccess:mt(a,{alpha:.7}),closeColorHoverSuccess:U(a,{alpha:.16}),closeColorPressedSuccess:U(a,{alpha:.12}),borderWarning:`1px solid ${U(s,{alpha:.3})}`,textColorWarning:s,colorWarning:U(s,{alpha:.16}),colorBorderedWarning:"#0000",closeIconColorWarning:mt(s,{alpha:.7}),closeIconColorHoverWarning:mt(s,{alpha:.7}),closeIconColorPressedWarning:mt(s,{alpha:.7}),closeColorHoverWarning:U(s,{alpha:.16}),closeColorPressedWarning:U(s,{alpha:.11}),borderError:`1px solid ${U(l,{alpha:.3})}`,textColorError:l,colorError:U(l,{alpha:.16}),colorBorderedError:"#0000",closeIconColorError:mt(l,{alpha:.7}),closeIconColorHoverError:mt(l,{alpha:.7}),closeIconColorPressedError:mt(l,{alpha:.7}),closeColorHoverError:U(l,{alpha:.16}),closeColorPressedError:U(l,{alpha:.12})})}};function DT(e){const{textColor2:t,primaryColorHover:n,primaryColorPressed:o,primaryColor:r,infoColor:i,successColor:a,warningColor:s,errorColor:l,baseColor:c,borderColor:d,opacityDisabled:u,tagColor:h,closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,borderRadiusSmall:p,fontSizeMini:m,fontSizeTiny:k,fontSizeSmall:T,fontSizeMedium:v,heightMini:x,heightTiny:A,heightSmall:y,heightMedium:R,closeColorHover:P,closeColorPressed:D,buttonColor2Hover:W,buttonColor2Pressed:M,fontWeightStrong:j}=e;return Object.assign(Object.assign({},Lp),{closeBorderRadius:p,heightTiny:x,heightSmall:A,heightMedium:y,heightLarge:R,borderRadius:p,opacityDisabled:u,fontSizeTiny:m,fontSizeSmall:k,fontSizeMedium:T,fontSizeLarge:v,fontWeightStrong:j,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:W,colorPressedCheckable:M,colorChecked:r,colorCheckedHover:n,colorCheckedPressed:o,border:`1px solid ${d}`,textColor:t,color:h,colorBordered:"rgb(250, 250, 252)",closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,closeColorHover:P,closeColorPressed:D,borderPrimary:`1px solid ${U(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:U(r,{alpha:.12}),colorBorderedPrimary:U(r,{alpha:.1}),closeIconColorPrimary:r,closeIconColorHoverPrimary:r,closeIconColorPressedPrimary:r,closeColorHoverPrimary:U(r,{alpha:.12}),closeColorPressedPrimary:U(r,{alpha:.18}),borderInfo:`1px solid ${U(i,{alpha:.3})}`,textColorInfo:i,colorInfo:U(i,{alpha:.12}),colorBorderedInfo:U(i,{alpha:.1}),closeIconColorInfo:i,closeIconColorHoverInfo:i,closeIconColorPressedInfo:i,closeColorHoverInfo:U(i,{alpha:.12}),closeColorPressedInfo:U(i,{alpha:.18}),borderSuccess:`1px solid ${U(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:U(a,{alpha:.12}),colorBorderedSuccess:U(a,{alpha:.1}),closeIconColorSuccess:a,closeIconColorHoverSuccess:a,closeIconColorPressedSuccess:a,closeColorHoverSuccess:U(a,{alpha:.12}),closeColorPressedSuccess:U(a,{alpha:.18}),borderWarning:`1px solid ${U(s,{alpha:.35})}`,textColorWarning:s,colorWarning:U(s,{alpha:.15}),colorBorderedWarning:U(s,{alpha:.12}),closeIconColorWarning:s,closeIconColorHoverWarning:s,closeIconColorPressedWarning:s,closeColorHoverWarning:U(s,{alpha:.12}),closeColorPressedWarning:U(s,{alpha:.18}),borderError:`1px solid ${U(l,{alpha:.23})}`,textColorError:l,colorError:U(l,{alpha:.1}),colorBorderedError:U(l,{alpha:.08}),closeIconColorError:l,closeIconColorHoverError:l,closeIconColorPressedError:l,closeColorHoverError:U(l,{alpha:.12}),closeColorPressedError:U(l,{alpha:.18})})}const $p={name:"Tag",common:se,self:DT},OT=oe("base-clear",` + `,[oe("popover-arrow",t)])])])}const Dp=Object.assign(Object.assign({},Ee.props),{to:Or.propTo,show:Boolean,trigger:String,showArrow:Boolean,delay:Number,duration:Number,raw:Boolean,arrowPointToCenter:Boolean,arrowClass:String,arrowStyle:[String,Object],arrowWrapperClass:String,arrowWrapperStyle:[String,Object],displayDirective:String,x:Number,y:Number,flip:Boolean,overlap:Boolean,placement:String,width:[Number,String],keepAliveOnHover:Boolean,scrollable:Boolean,contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],footerClass:String,footerStyle:[Object,String],internalDeactivateImmediately:Boolean,animated:Boolean,onClickoutside:Function,internalTrapFocus:Boolean,internalOnAfterLeave:Function,minWidth:Number,maxWidth:Number});function Op({arrowClass:e,arrowStyle:t,arrowWrapperClass:n,arrowWrapperStyle:o,clsPrefix:r}){return S("div",{key:"__popover-arrow__",style:o,class:[`${r}-popover-arrow-wrapper`,n]},S("div",{class:[`${r}-popover-arrow`,e],style:t}))}const AT=de({name:"PopoverBody",inheritAttrs:!1,props:Dp,setup(e,{slots:t,attrs:n}){const{namespaceRef:o,mergedClsPrefixRef:r,inlineThemeDisabled:i}=dt(e),a=Ee("Popover","-popover",PT,Ro,e,r),s=V(null),l=Me("NPopover"),c=V(null),d=V(e.show),u=V(!1);bo(()=>{const{show:y}=e;y&&!xC()&&!e.internalDeactivateImmediately&&(u.value=!0)});const h=z(()=>{const{trigger:y,onClickoutside:R}=e,P=[],{positionManuallyRef:{value:D}}=l;return D||(y==="click"&&!R&&P.push([Vl,v,void 0,{capture:!0}]),y==="hover"&&P.push([XC,T])),R&&P.push([Vl,v,void 0,{capture:!0}]),(e.displayDirective==="show"||e.animated&&u.value)&&P.push([Mr,e.show]),P}),g=z(()=>{const{common:{cubicBezierEaseInOut:y,cubicBezierEaseIn:R,cubicBezierEaseOut:P},self:{space:D,spaceArrow:W,padding:M,fontSize:j,textColor:ee,dividerColor:B,color:X,boxShadow:$,borderRadius:ie,arrowHeight:ve,arrowOffset:ye,arrowOffsetVertical:Ae}}=a.value;return{"--n-box-shadow":$,"--n-bezier":y,"--n-bezier-ease-in":R,"--n-bezier-ease-out":P,"--n-font-size":j,"--n-text-color":ee,"--n-color":X,"--n-divider-color":B,"--n-border-radius":ie,"--n-arrow-height":ve,"--n-arrow-offset":ye,"--n-arrow-offset-vertical":Ae,"--n-padding":M,"--n-space":D,"--n-space-arrow":W}}),f=z(()=>{const y=e.width==="trigger"?void 0:Ra(e.width),R=[];y&&R.push({width:y});const{maxWidth:P,minWidth:D}=e;return P&&R.push({maxWidth:Ra(P)}),D&&R.push({maxWidth:Ra(D)}),i||R.push(g.value),R}),b=i?Mt("popover",void 0,g,e):void 0;l.setBodyInstance({syncPosition:p}),Tt(()=>{l.setBodyInstance(null)}),ot(Ve(e,"show"),y=>{e.animated||(y?d.value=!0:d.value=!1)});function p(){var y;(y=s.value)===null||y===void 0||y.syncPosition()}function m(y){e.trigger==="hover"&&e.keepAliveOnHover&&e.show&&l.handleMouseEnter(y)}function k(y){e.trigger==="hover"&&e.keepAliveOnHover&&l.handleMouseLeave(y)}function T(y){e.trigger==="hover"&&!x().contains(Ai(y))&&l.handleMouseMoveOutside(y)}function v(y){(e.trigger==="click"&&!x().contains(Ai(y))||e.onClickoutside)&&l.handleClickOutside(y)}function x(){return l.getTriggerElement()}je(Gi,c),je(Ts,null),je(Ss,null);function A(){if(b==null||b.onRender(),!(e.displayDirective==="show"||e.show||e.animated&&u.value))return null;let R;const P=l.internalRenderBodyRef.value,{value:D}=r;if(P)R=P([`${D}-popover-shared`,b==null?void 0:b.themeClass.value,e.overlap&&`${D}-popover-shared--overlap`,e.showArrow&&`${D}-popover-shared--show-arrow`,e.arrowPointToCenter&&`${D}-popover-shared--center-arrow`],c,f.value,m,k);else{const{value:W}=l.extraClassRef,{internalTrapFocus:M}=e,j=!Fl(t.header)||!Fl(t.footer),ee=()=>{var B,X;const $=j?S(He,null,Pt(t.header,ye=>ye?S("div",{class:[`${D}-popover__header`,e.headerClass],style:e.headerStyle},ye):null),Pt(t.default,ye=>ye?S("div",{class:[`${D}-popover__content`,e.contentClass],style:e.contentStyle},t):null),Pt(t.footer,ye=>ye?S("div",{class:[`${D}-popover__footer`,e.footerClass],style:e.footerStyle},ye):null)):e.scrollable?(B=t.default)===null||B===void 0?void 0:B.call(t):S("div",{class:[`${D}-popover__content`,e.contentClass],style:e.contentStyle},t),ie=e.scrollable?S(Rp,{contentClass:j?void 0:`${D}-popover__content ${(X=e.contentClass)!==null&&X!==void 0?X:""}`,contentStyle:j?void 0:e.contentStyle},{default:()=>$}):$,ve=e.showArrow?Op({arrowClass:e.arrowClass,arrowStyle:e.arrowStyle,arrowWrapperClass:e.arrowWrapperClass,arrowWrapperStyle:e.arrowWrapperStyle,clsPrefix:D}):null;return[ie,ve]};R=S("div",$n({class:[`${D}-popover`,`${D}-popover-shared`,b==null?void 0:b.themeClass.value,W.map(B=>`${D}-${B}`),{[`${D}-popover--scrollable`]:e.scrollable,[`${D}-popover--show-header-or-footer`]:j,[`${D}-popover--raw`]:e.raw,[`${D}-popover-shared--overlap`]:e.overlap,[`${D}-popover-shared--show-arrow`]:e.showArrow,[`${D}-popover-shared--center-arrow`]:e.arrowPointToCenter}],ref:c,style:f.value,onKeydown:l.handleKeydown,onMouseenter:m,onMouseleave:k},n),M?S(Mm,{active:e.show,autoFocus:!0},{default:ee}):ee())}return po(R,h.value)}return{displayed:u,namespace:o,isMounted:l.isMountedRef,zIndex:l.zIndexRef,followerRef:s,adjustedTo:Or(e),followerEnabled:d,renderContentNode:A}},render(){return S(km,{ref:"followerRef",zIndex:this.zIndex,show:this.show,enabled:this.followerEnabled,to:this.adjustedTo,x:this.x,y:this.y,flip:this.flip,placement:this.placement,containerClass:this.namespace,overlap:this.overlap,width:this.width==="trigger"?"target":void 0,teleportDisabled:this.adjustedTo===Or.tdkey},{default:()=>this.animated?S(Bn,{name:"popover-transition",appear:this.isMounted,onEnter:()=>{this.followerEnabled=!0},onAfterLeave:()=>{var e;(e=this.internalOnAfterLeave)===null||e===void 0||e.call(this),this.followerEnabled=!1,this.displayed=!1}},{default:this.renderContentNode}):this.renderContentNode()})}}),RT=Object.keys(Dp),ET={focus:["onFocus","onBlur"],click:["onClick"],hover:["onMouseenter","onMouseleave"],manual:[],nested:["onFocus","onBlur","onMouseenter","onMouseleave","onClick"]};function IT(e,t,n){ET[t].forEach(o=>{e.props?e.props=Object.assign({},e.props):e.props={};const r=e.props[o],i=n[o];r?e.props[o]=(...a)=>{r(...a),i(...a)}:e.props[o]=i})}const Is={show:{type:Boolean,default:void 0},defaultShow:Boolean,showArrow:{type:Boolean,default:!0},trigger:{type:String,default:"hover"},delay:{type:Number,default:100},duration:{type:Number,default:100},raw:Boolean,placement:{type:String,default:"top"},x:Number,y:Number,arrowPointToCenter:Boolean,disabled:Boolean,getDisabled:Function,displayDirective:{type:String,default:"if"},arrowClass:String,arrowStyle:[String,Object],arrowWrapperClass:String,arrowWrapperStyle:[String,Object],flip:{type:Boolean,default:!0},animated:{type:Boolean,default:!0},width:{type:[Number,String],default:void 0},overlap:Boolean,keepAliveOnHover:{type:Boolean,default:!0},zIndex:Number,to:Or.propTo,scrollable:Boolean,contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],footerClass:String,footerStyle:[Object,String],onClickoutside:Function,"onUpdate:show":[Function,Array],onUpdateShow:[Function,Array],internalDeactivateImmediately:Boolean,internalSyncTargetWithParent:Boolean,internalInheritedEventHandlers:{type:Array,default:()=>[]},internalTrapFocus:Boolean,internalExtraClass:{type:Array,default:()=>[]},onShow:[Function,Array],onHide:[Function,Array],arrow:{type:Boolean,default:void 0},minWidth:Number,maxWidth:Number},MT=Object.assign(Object.assign(Object.assign({},Ee.props),Is),{internalOnAfterLeave:Function,internalRenderBody:Function}),Ms=de({name:"Popover",inheritAttrs:!1,props:MT,__popover__:!0,setup(e){const t=ji(),n=V(null),o=z(()=>e.show),r=V(e.defaultShow),i=Vc(o,r),a=Rt(()=>e.disabled?!1:i.value),s=()=>{if(e.disabled)return!0;const{getDisabled:B}=e;return!!(B!=null&&B())},l=()=>s()?!1:i.value,c=fm(e,["arrow","showArrow"]),d=z(()=>e.overlap?!1:c.value);let u=null;const h=V(null),g=V(null),f=Rt(()=>e.x!==void 0&&e.y!==void 0);function b(B){const{"onUpdate:show":X,onUpdateShow:$,onShow:ie,onHide:ve}=e;r.value=B,X&&ze(X,B),$&&ze($,B),B&&ie&&ze(ie,!0),B&&ve&&ze(ve,!1)}function p(){u&&u.syncPosition()}function m(){const{value:B}=h;B&&(window.clearTimeout(B),h.value=null)}function k(){const{value:B}=g;B&&(window.clearTimeout(B),g.value=null)}function T(){const B=s();if(e.trigger==="focus"&&!B){if(l())return;b(!0)}}function v(){const B=s();if(e.trigger==="focus"&&!B){if(!l())return;b(!1)}}function x(){const B=s();if(e.trigger==="hover"&&!B){if(k(),h.value!==null||l())return;const X=()=>{b(!0),h.value=null},{delay:$}=e;$===0?X():h.value=window.setTimeout(X,$)}}function A(){const B=s();if(e.trigger==="hover"&&!B){if(m(),g.value!==null||!l())return;const X=()=>{b(!1),g.value=null},{duration:$}=e;$===0?X():g.value=window.setTimeout(X,$)}}function y(){A()}function R(B){var X;l()&&(e.trigger==="click"&&(m(),k(),b(!1)),(X=e.onClickoutside)===null||X===void 0||X.call(e,B))}function P(){if(e.trigger==="click"&&!s()){m(),k();const B=!l();b(B)}}function D(B){e.internalTrapFocus&&B.key==="Escape"&&(m(),k(),b(!1))}function W(B){r.value=B}function M(){var B;return(B=n.value)===null||B===void 0?void 0:B.targetRef}function j(B){u=B}return je("NPopover",{getTriggerElement:M,handleKeydown:D,handleMouseEnter:x,handleMouseLeave:A,handleClickOutside:R,handleMouseMoveOutside:y,setBodyInstance:j,positionManuallyRef:f,isMountedRef:t,zIndexRef:Ve(e,"zIndex"),extraClassRef:Ve(e,"internalExtraClass"),internalRenderBodyRef:Ve(e,"internalRenderBody")}),bo(()=>{i.value&&s()&&b(!1)}),{binderInstRef:n,positionManually:f,mergedShowConsideringDisabledProp:a,uncontrolledShow:r,mergedShowArrow:d,getMergedShow:l,setShow:W,handleClick:P,handleMouseEnter:x,handleMouseLeave:A,handleFocus:T,handleBlur:v,syncPosition:p}},render(){var e;const{positionManually:t,$slots:n}=this;let o,r=!1;if(!t&&(n.activator?o=zl(n,"activator"):o=zl(n,"trigger"),o)){o=yn(o),o=o.type===Br?S("span",[o]):o;const i={onClick:this.handleClick,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onFocus:this.handleFocus,onBlur:this.handleBlur};if(!((e=o.type)===null||e===void 0)&&e.__popover__)r=!0,o.props||(o.props={internalSyncTargetWithParent:!0,internalInheritedEventHandlers:[]}),o.props.internalSyncTargetWithParent=!0,o.props.internalInheritedEventHandlers?o.props.internalInheritedEventHandlers=[i,...o.props.internalInheritedEventHandlers]:o.props.internalInheritedEventHandlers=[i];else{const{internalInheritedEventHandlers:a}=this,s=[i,...a],l={onBlur:c=>{s.forEach(d=>{d.onBlur(c)})},onFocus:c=>{s.forEach(d=>{d.onFocus(c)})},onClick:c=>{s.forEach(d=>{d.onClick(c)})},onMouseenter:c=>{s.forEach(d=>{d.onMouseenter(c)})},onMouseleave:c=>{s.forEach(d=>{d.onMouseleave(c)})}};IT(o,a?"nested":t?"manual":this.trigger,l)}}return S(vm,{ref:"binderInstRef",syncTarget:!r,syncTargetWithParent:this.internalSyncTargetWithParent},{default:()=>{this.mergedShowConsideringDisabledProp;const i=this.getMergedShow();return[this.internalTrapFocus&&i?po(S("div",{style:{position:"fixed",inset:0}}),[[Uc,{enabled:i,zIndex:this.zIndex}]]):null,t?null:S(ym,null,{default:()=>o}),S(AT,or(this.$props,RT,Object.assign(Object.assign({},this.$attrs),{showArrow:this.mergedShowArrow,show:i})),{default:()=>{var a,s;return(s=(a=this.$slots).default)===null||s===void 0?void 0:s.call(a)},header:()=>{var a,s;return(s=(a=this.$slots).header)===null||s===void 0?void 0:s.call(a)},footer:()=>{var a,s;return(s=(a=this.$slots).footer)===null||s===void 0?void 0:s.call(a)}})]}})}}),Lp={closeIconSizeTiny:"12px",closeIconSizeSmall:"12px",closeIconSizeMedium:"14px",closeIconSizeLarge:"14px",closeSizeTiny:"16px",closeSizeSmall:"16px",closeSizeMedium:"18px",closeSizeLarge:"18px",padding:"0 7px",closeMargin:"0 0 0 4px"},Hp={name:"Tag",common:ae,self(e){const{textColor2:t,primaryColorHover:n,primaryColorPressed:o,primaryColor:r,infoColor:i,successColor:a,warningColor:s,errorColor:l,baseColor:c,borderColor:d,tagColor:u,opacityDisabled:h,closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,closeColorHover:p,closeColorPressed:m,borderRadiusSmall:k,fontSizeMini:T,fontSizeTiny:v,fontSizeSmall:x,fontSizeMedium:A,heightMini:y,heightTiny:R,heightSmall:P,heightMedium:D,buttonColor2Hover:W,buttonColor2Pressed:M,fontWeightStrong:j}=e;return Object.assign(Object.assign({},Lp),{closeBorderRadius:k,heightTiny:y,heightSmall:R,heightMedium:P,heightLarge:D,borderRadius:k,opacityDisabled:h,fontSizeTiny:T,fontSizeSmall:v,fontSizeMedium:x,fontSizeLarge:A,fontWeightStrong:j,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:W,colorPressedCheckable:M,colorChecked:r,colorCheckedHover:n,colorCheckedPressed:o,border:`1px solid ${d}`,textColor:t,color:u,colorBordered:"#0000",closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,closeColorHover:p,closeColorPressed:m,borderPrimary:`1px solid ${U(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:U(r,{alpha:.16}),colorBorderedPrimary:"#0000",closeIconColorPrimary:mt(r,{lightness:.7}),closeIconColorHoverPrimary:mt(r,{lightness:.7}),closeIconColorPressedPrimary:mt(r,{lightness:.7}),closeColorHoverPrimary:U(r,{alpha:.16}),closeColorPressedPrimary:U(r,{alpha:.12}),borderInfo:`1px solid ${U(i,{alpha:.3})}`,textColorInfo:i,colorInfo:U(i,{alpha:.16}),colorBorderedInfo:"#0000",closeIconColorInfo:mt(i,{alpha:.7}),closeIconColorHoverInfo:mt(i,{alpha:.7}),closeIconColorPressedInfo:mt(i,{alpha:.7}),closeColorHoverInfo:U(i,{alpha:.16}),closeColorPressedInfo:U(i,{alpha:.12}),borderSuccess:`1px solid ${U(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:U(a,{alpha:.16}),colorBorderedSuccess:"#0000",closeIconColorSuccess:mt(a,{alpha:.7}),closeIconColorHoverSuccess:mt(a,{alpha:.7}),closeIconColorPressedSuccess:mt(a,{alpha:.7}),closeColorHoverSuccess:U(a,{alpha:.16}),closeColorPressedSuccess:U(a,{alpha:.12}),borderWarning:`1px solid ${U(s,{alpha:.3})}`,textColorWarning:s,colorWarning:U(s,{alpha:.16}),colorBorderedWarning:"#0000",closeIconColorWarning:mt(s,{alpha:.7}),closeIconColorHoverWarning:mt(s,{alpha:.7}),closeIconColorPressedWarning:mt(s,{alpha:.7}),closeColorHoverWarning:U(s,{alpha:.16}),closeColorPressedWarning:U(s,{alpha:.11}),borderError:`1px solid ${U(l,{alpha:.3})}`,textColorError:l,colorError:U(l,{alpha:.16}),colorBorderedError:"#0000",closeIconColorError:mt(l,{alpha:.7}),closeIconColorHoverError:mt(l,{alpha:.7}),closeIconColorPressedError:mt(l,{alpha:.7}),closeColorHoverError:U(l,{alpha:.16}),closeColorPressedError:U(l,{alpha:.12})})}};function DT(e){const{textColor2:t,primaryColorHover:n,primaryColorPressed:o,primaryColor:r,infoColor:i,successColor:a,warningColor:s,errorColor:l,baseColor:c,borderColor:d,opacityDisabled:u,tagColor:h,closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,borderRadiusSmall:p,fontSizeMini:m,fontSizeTiny:k,fontSizeSmall:T,fontSizeMedium:v,heightMini:x,heightTiny:A,heightSmall:y,heightMedium:R,closeColorHover:P,closeColorPressed:D,buttonColor2Hover:W,buttonColor2Pressed:M,fontWeightStrong:j}=e;return Object.assign(Object.assign({},Lp),{closeBorderRadius:p,heightTiny:x,heightSmall:A,heightMedium:y,heightLarge:R,borderRadius:p,opacityDisabled:u,fontSizeTiny:m,fontSizeSmall:k,fontSizeMedium:T,fontSizeLarge:v,fontWeightStrong:j,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:W,colorPressedCheckable:M,colorChecked:r,colorCheckedHover:n,colorCheckedPressed:o,border:`1px solid ${d}`,textColor:t,color:h,colorBordered:"rgb(250, 250, 252)",closeIconColor:g,closeIconColorHover:f,closeIconColorPressed:b,closeColorHover:P,closeColorPressed:D,borderPrimary:`1px solid ${U(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:U(r,{alpha:.12}),colorBorderedPrimary:U(r,{alpha:.1}),closeIconColorPrimary:r,closeIconColorHoverPrimary:r,closeIconColorPressedPrimary:r,closeColorHoverPrimary:U(r,{alpha:.12}),closeColorPressedPrimary:U(r,{alpha:.18}),borderInfo:`1px solid ${U(i,{alpha:.3})}`,textColorInfo:i,colorInfo:U(i,{alpha:.12}),colorBorderedInfo:U(i,{alpha:.1}),closeIconColorInfo:i,closeIconColorHoverInfo:i,closeIconColorPressedInfo:i,closeColorHoverInfo:U(i,{alpha:.12}),closeColorPressedInfo:U(i,{alpha:.18}),borderSuccess:`1px solid ${U(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:U(a,{alpha:.12}),colorBorderedSuccess:U(a,{alpha:.1}),closeIconColorSuccess:a,closeIconColorHoverSuccess:a,closeIconColorPressedSuccess:a,closeColorHoverSuccess:U(a,{alpha:.12}),closeColorPressedSuccess:U(a,{alpha:.18}),borderWarning:`1px solid ${U(s,{alpha:.35})}`,textColorWarning:s,colorWarning:U(s,{alpha:.15}),colorBorderedWarning:U(s,{alpha:.12}),closeIconColorWarning:s,closeIconColorHoverWarning:s,closeIconColorPressedWarning:s,closeColorHoverWarning:U(s,{alpha:.12}),closeColorPressedWarning:U(s,{alpha:.18}),borderError:`1px solid ${U(l,{alpha:.23})}`,textColorError:l,colorError:U(l,{alpha:.1}),colorBorderedError:U(l,{alpha:.08}),closeIconColorError:l,closeIconColorHoverError:l,closeIconColorPressedError:l,closeColorHoverError:U(l,{alpha:.12}),closeColorPressedError:U(l,{alpha:.18})})}const $p={name:"Tag",common:se,self:DT},OT=oe("base-clear",` flex-shrink: 0; height: 1em; width: 1em; @@ -354,7 +354,7 @@ ${t} padding-top ${t} ${In}, padding-bottom ${t} ${In} ${n?`,${n}`:""} - `)]}const GT={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"};function zp(e){const{borderRadius:t,railColor:n,primaryColor:o,primaryColorHover:r,primaryColorPressed:i,textColor2:a}=e;return Object.assign(Object.assign({},GT),{borderRadius:t,railColor:n,railColorActive:o,linkColor:U(o,{alpha:.15}),linkTextColor:a,linkTextColorHover:r,linkTextColorPressed:i,linkTextColorActive:o})}const VT={name:"Anchor",common:se,self:zp},UT={name:"Anchor",common:ae,self:zp},KT=ar&&"chrome"in window;ar&&navigator.userAgent.includes("Firefox");const Fp=ar&&navigator.userAgent.includes("Safari")&&!KT,Wp={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"},Cn={name:"Input",common:ae,self(e){const{textColor2:t,textColor3:n,textColorDisabled:o,primaryColor:r,primaryColorHover:i,inputColor:a,inputColorDisabled:s,warningColor:l,warningColorHover:c,errorColor:d,errorColorHover:u,borderRadius:h,lineHeight:g,fontSizeTiny:f,fontSizeSmall:b,fontSizeMedium:p,fontSizeLarge:m,heightTiny:k,heightSmall:T,heightMedium:v,heightLarge:x,clearColor:A,clearColorHover:y,clearColorPressed:R,placeholderColor:P,placeholderColorDisabled:D,iconColor:W,iconColorDisabled:M,iconColorHover:j,iconColorPressed:ee}=e;return Object.assign(Object.assign({},Wp),{countTextColorDisabled:o,countTextColor:n,heightTiny:k,heightSmall:T,heightMedium:v,heightLarge:x,fontSizeTiny:f,fontSizeSmall:b,fontSizeMedium:p,fontSizeLarge:m,lineHeight:g,lineHeightTextarea:g,borderRadius:h,iconSize:"16px",groupLabelColor:a,textColor:t,textColorDisabled:o,textDecorationColor:t,groupLabelTextColor:t,caretColor:r,placeholderColor:P,placeholderColorDisabled:D,color:a,colorDisabled:s,colorFocus:U(r,{alpha:.1}),groupLabelBorder:"1px solid #0000",border:"1px solid #0000",borderHover:`1px solid ${i}`,borderDisabled:"1px solid #0000",borderFocus:`1px solid ${i}`,boxShadowFocus:`0 0 8px 0 ${U(r,{alpha:.3})}`,loadingColor:r,loadingColorWarning:l,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,colorFocusWarning:U(l,{alpha:.1}),borderFocusWarning:`1px solid ${c}`,boxShadowFocusWarning:`0 0 8px 0 ${U(l,{alpha:.3})}`,caretColorWarning:l,loadingColorError:d,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,colorFocusError:U(d,{alpha:.1}),borderFocusError:`1px solid ${u}`,boxShadowFocusError:`0 0 8px 0 ${U(d,{alpha:.3})}`,caretColorError:d,clearColor:A,clearColorHover:y,clearColorPressed:R,iconColor:W,iconColorDisabled:M,iconColorHover:j,iconColorPressed:ee,suffixTextColor:t})}};function qT(e){const{textColor2:t,textColor3:n,textColorDisabled:o,primaryColor:r,primaryColorHover:i,inputColor:a,inputColorDisabled:s,borderColor:l,warningColor:c,warningColorHover:d,errorColor:u,errorColorHover:h,borderRadius:g,lineHeight:f,fontSizeTiny:b,fontSizeSmall:p,fontSizeMedium:m,fontSizeLarge:k,heightTiny:T,heightSmall:v,heightMedium:x,heightLarge:A,actionColor:y,clearColor:R,clearColorHover:P,clearColorPressed:D,placeholderColor:W,placeholderColorDisabled:M,iconColor:j,iconColorDisabled:ee,iconColorHover:B,iconColorPressed:X}=e;return Object.assign(Object.assign({},Wp),{countTextColorDisabled:o,countTextColor:n,heightTiny:T,heightSmall:v,heightMedium:x,heightLarge:A,fontSizeTiny:b,fontSizeSmall:p,fontSizeMedium:m,fontSizeLarge:k,lineHeight:f,lineHeightTextarea:f,borderRadius:g,iconSize:"16px",groupLabelColor:y,groupLabelTextColor:t,textColor:t,textColorDisabled:o,textDecorationColor:t,caretColor:r,placeholderColor:W,placeholderColorDisabled:M,color:a,colorDisabled:s,colorFocus:a,groupLabelBorder:`1px solid ${l}`,border:`1px solid ${l}`,borderHover:`1px solid ${i}`,borderDisabled:`1px solid ${l}`,borderFocus:`1px solid ${i}`,boxShadowFocus:`0 0 0 2px ${U(r,{alpha:.2})}`,loadingColor:r,loadingColorWarning:c,borderWarning:`1px solid ${c}`,borderHoverWarning:`1px solid ${d}`,colorFocusWarning:a,borderFocusWarning:`1px solid ${d}`,boxShadowFocusWarning:`0 0 0 2px ${U(c,{alpha:.2})}`,caretColorWarning:c,loadingColorError:u,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${h}`,colorFocusError:a,borderFocusError:`1px solid ${h}`,boxShadowFocusError:`0 0 0 2px ${U(u,{alpha:.2})}`,caretColorError:u,clearColor:R,clearColorHover:P,clearColorPressed:D,iconColor:j,iconColorDisabled:ee,iconColorHover:B,iconColorPressed:X,suffixTextColor:t})}const fn={name:"Input",common:se,self:qT},jp="n-input";function XT(e){let t=0;for(const n of e)t++;return t}function ya(e){return e===""||e==null}function ZT(e){const t=V(null);function n(){const{value:i}=e;if(!(i!=null&&i.focus)){r();return}const{selectionStart:a,selectionEnd:s,value:l}=i;if(a==null||s==null){r();return}t.value={start:a,end:s,beforeText:l.slice(0,a),afterText:l.slice(s)}}function o(){var i;const{value:a}=t,{value:s}=e;if(!a||!s)return;const{value:l}=s,{start:c,beforeText:d,afterText:u}=a;let h=l.length;if(l.endsWith(u))h=l.length-u.length;else if(l.startsWith(d))h=d.length;else{const g=d[c-1],f=l.indexOf(g,c-1);f!==-1&&(h=f+1)}(i=s.setSelectionRange)===null||i===void 0||i.call(s,h,h)}function r(){t.value=null}return ot(e,r),{recordCursor:n,restoreCursor:o}}const Bh=de({name:"InputWordCount",setup(e,{slots:t}){const{mergedValueRef:n,maxlengthRef:o,mergedClsPrefixRef:r,countGraphemesRef:i}=Me(jp),a=z(()=>{const{value:s}=n;return s===null||Array.isArray(s)?0:(i.value||XT)(s)});return()=>{const{value:s}=o,{value:l}=n;return S("span",{class:`${r.value}-input-word-count`},X2(t.default,{value:l===null||Array.isArray(l)?"":l},()=>[s===void 0?a.value:`${a.value} / ${s}`]))}}}),YT=oe("input",` + `)]}const GT={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"};function zp(e){const{borderRadius:t,railColor:n,primaryColor:o,primaryColorHover:r,primaryColorPressed:i,textColor2:a}=e;return Object.assign(Object.assign({},GT),{borderRadius:t,railColor:n,railColorActive:o,linkColor:U(o,{alpha:.15}),linkTextColor:a,linkTextColorHover:r,linkTextColorPressed:i,linkTextColorActive:o})}const VT={name:"Anchor",common:se,self:zp},UT={name:"Anchor",common:ae,self:zp},KT=ar&&"chrome"in window;ar&&navigator.userAgent.includes("Firefox");const Fp=ar&&navigator.userAgent.includes("Safari")&&!KT,Wp={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"},kn={name:"Input",common:ae,self(e){const{textColor2:t,textColor3:n,textColorDisabled:o,primaryColor:r,primaryColorHover:i,inputColor:a,inputColorDisabled:s,warningColor:l,warningColorHover:c,errorColor:d,errorColorHover:u,borderRadius:h,lineHeight:g,fontSizeTiny:f,fontSizeSmall:b,fontSizeMedium:p,fontSizeLarge:m,heightTiny:k,heightSmall:T,heightMedium:v,heightLarge:x,clearColor:A,clearColorHover:y,clearColorPressed:R,placeholderColor:P,placeholderColorDisabled:D,iconColor:W,iconColorDisabled:M,iconColorHover:j,iconColorPressed:ee}=e;return Object.assign(Object.assign({},Wp),{countTextColorDisabled:o,countTextColor:n,heightTiny:k,heightSmall:T,heightMedium:v,heightLarge:x,fontSizeTiny:f,fontSizeSmall:b,fontSizeMedium:p,fontSizeLarge:m,lineHeight:g,lineHeightTextarea:g,borderRadius:h,iconSize:"16px",groupLabelColor:a,textColor:t,textColorDisabled:o,textDecorationColor:t,groupLabelTextColor:t,caretColor:r,placeholderColor:P,placeholderColorDisabled:D,color:a,colorDisabled:s,colorFocus:U(r,{alpha:.1}),groupLabelBorder:"1px solid #0000",border:"1px solid #0000",borderHover:`1px solid ${i}`,borderDisabled:"1px solid #0000",borderFocus:`1px solid ${i}`,boxShadowFocus:`0 0 8px 0 ${U(r,{alpha:.3})}`,loadingColor:r,loadingColorWarning:l,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,colorFocusWarning:U(l,{alpha:.1}),borderFocusWarning:`1px solid ${c}`,boxShadowFocusWarning:`0 0 8px 0 ${U(l,{alpha:.3})}`,caretColorWarning:l,loadingColorError:d,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,colorFocusError:U(d,{alpha:.1}),borderFocusError:`1px solid ${u}`,boxShadowFocusError:`0 0 8px 0 ${U(d,{alpha:.3})}`,caretColorError:d,clearColor:A,clearColorHover:y,clearColorPressed:R,iconColor:W,iconColorDisabled:M,iconColorHover:j,iconColorPressed:ee,suffixTextColor:t})}};function qT(e){const{textColor2:t,textColor3:n,textColorDisabled:o,primaryColor:r,primaryColorHover:i,inputColor:a,inputColorDisabled:s,borderColor:l,warningColor:c,warningColorHover:d,errorColor:u,errorColorHover:h,borderRadius:g,lineHeight:f,fontSizeTiny:b,fontSizeSmall:p,fontSizeMedium:m,fontSizeLarge:k,heightTiny:T,heightSmall:v,heightMedium:x,heightLarge:A,actionColor:y,clearColor:R,clearColorHover:P,clearColorPressed:D,placeholderColor:W,placeholderColorDisabled:M,iconColor:j,iconColorDisabled:ee,iconColorHover:B,iconColorPressed:X}=e;return Object.assign(Object.assign({},Wp),{countTextColorDisabled:o,countTextColor:n,heightTiny:T,heightSmall:v,heightMedium:x,heightLarge:A,fontSizeTiny:b,fontSizeSmall:p,fontSizeMedium:m,fontSizeLarge:k,lineHeight:f,lineHeightTextarea:f,borderRadius:g,iconSize:"16px",groupLabelColor:y,groupLabelTextColor:t,textColor:t,textColorDisabled:o,textDecorationColor:t,caretColor:r,placeholderColor:W,placeholderColorDisabled:M,color:a,colorDisabled:s,colorFocus:a,groupLabelBorder:`1px solid ${l}`,border:`1px solid ${l}`,borderHover:`1px solid ${i}`,borderDisabled:`1px solid ${l}`,borderFocus:`1px solid ${i}`,boxShadowFocus:`0 0 0 2px ${U(r,{alpha:.2})}`,loadingColor:r,loadingColorWarning:c,borderWarning:`1px solid ${c}`,borderHoverWarning:`1px solid ${d}`,colorFocusWarning:a,borderFocusWarning:`1px solid ${d}`,boxShadowFocusWarning:`0 0 0 2px ${U(c,{alpha:.2})}`,caretColorWarning:c,loadingColorError:u,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${h}`,colorFocusError:a,borderFocusError:`1px solid ${h}`,boxShadowFocusError:`0 0 0 2px ${U(u,{alpha:.2})}`,caretColorError:u,clearColor:R,clearColorHover:P,clearColorPressed:D,iconColor:j,iconColorDisabled:ee,iconColorHover:B,iconColorPressed:X,suffixTextColor:t})}const fn={name:"Input",common:se,self:qT},jp="n-input";function XT(e){let t=0;for(const n of e)t++;return t}function ya(e){return e===""||e==null}function ZT(e){const t=V(null);function n(){const{value:i}=e;if(!(i!=null&&i.focus)){r();return}const{selectionStart:a,selectionEnd:s,value:l}=i;if(a==null||s==null){r();return}t.value={start:a,end:s,beforeText:l.slice(0,a),afterText:l.slice(s)}}function o(){var i;const{value:a}=t,{value:s}=e;if(!a||!s)return;const{value:l}=s,{start:c,beforeText:d,afterText:u}=a;let h=l.length;if(l.endsWith(u))h=l.length-u.length;else if(l.startsWith(d))h=d.length;else{const g=d[c-1],f=l.indexOf(g,c-1);f!==-1&&(h=f+1)}(i=s.setSelectionRange)===null||i===void 0||i.call(s,h,h)}function r(){t.value=null}return ot(e,r),{recordCursor:n,restoreCursor:o}}const Bh=de({name:"InputWordCount",setup(e,{slots:t}){const{mergedValueRef:n,maxlengthRef:o,mergedClsPrefixRef:r,countGraphemesRef:i}=Me(jp),a=z(()=>{const{value:s}=n;return s===null||Array.isArray(s)?0:(i.value||XT)(s)});return()=>{const{value:s}=o,{value:l}=n;return S("span",{class:`${r.value}-input-word-count`},X2(t.default,{value:l===null||Array.isArray(l)?"":l},()=>[s===void 0?a.value:`${a.value} / ${s}`]))}}}),YT=oe("input",` max-width: 100%; cursor: text; line-height: 1.5; @@ -587,7 +587,7 @@ ${t} `)])])]))]),JT=oe("input",[te("disabled",[G("input-el, textarea-el",` -webkit-text-fill-color: var(--n-text-color-disabled); `)])]),QT=Object.assign(Object.assign({},Ee.props),{bordered:{type:Boolean,default:void 0},type:{type:String,default:"text"},placeholder:[Array,String],defaultValue:{type:[String,Array],default:null},value:[String,Array],disabled:{type:Boolean,default:void 0},size:String,rows:{type:[Number,String],default:3},round:Boolean,minlength:[String,Number],maxlength:[String,Number],clearable:Boolean,autosize:{type:[Boolean,Object],default:!1},pair:Boolean,separator:String,readonly:{type:[String,Boolean],default:!1},passivelyActivated:Boolean,showPasswordOn:String,stateful:{type:Boolean,default:!0},autofocus:Boolean,inputProps:Object,resizable:{type:Boolean,default:!0},showCount:Boolean,loading:{type:Boolean,default:void 0},allowInput:Function,renderCount:Function,onMousedown:Function,onKeydown:Function,onKeyup:[Function,Array],onInput:[Function,Array],onFocus:[Function,Array],onBlur:[Function,Array],onClick:[Function,Array],onChange:[Function,Array],onClear:[Function,Array],countGraphemes:Function,status:String,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],textDecoration:[String,Array],attrSize:{type:Number,default:20},onInputBlur:[Function,Array],onInputFocus:[Function,Array],onDeactivate:[Function,Array],onActivate:[Function,Array],onWrapperFocus:[Function,Array],onWrapperBlur:[Function,Array],internalDeactivateOnEnter:Boolean,internalForceFocus:Boolean,internalLoadingBeforeSuffix:{type:Boolean,default:!0},showPasswordToggle:Boolean}),ew=de({name:"Input",props:QT,setup(e){const{mergedClsPrefixRef:t,mergedBorderedRef:n,inlineThemeDisabled:o,mergedRtlRef:r}=dt(e),i=Ee("Input","-input",YT,fn,e,t);Fp&&Wr("-input-safari",JT,t);const a=V(null),s=V(null),l=V(null),c=V(null),d=V(null),u=V(null),h=V(null),g=ZT(h),f=V(null),{localeRef:b}=MS("Input"),p=V(e.defaultValue),m=Ve(e,"value"),k=Vc(m,p),T=Om(e),{mergedSizeRef:v,mergedDisabledRef:x,mergedStatusRef:A}=T,y=V(!1),R=V(!1),P=V(!1),D=V(!1);let W=null;const M=z(()=>{const{placeholder:O,pair:Q}=e;return Q?Array.isArray(O)?O:O===void 0?["",""]:[O,O]:O===void 0?[b.value.placeholder]:[O]}),j=z(()=>{const{value:O}=P,{value:Q}=k,{value:ke}=M;return!O&&(ya(Q)||Array.isArray(Q)&&ya(Q[0]))&&ke[0]}),ee=z(()=>{const{value:O}=P,{value:Q}=k,{value:ke}=M;return!O&&ke[1]&&(ya(Q)||Array.isArray(Q)&&ya(Q[1]))}),B=Rt(()=>e.internalForceFocus||y.value),X=Rt(()=>{if(x.value||e.readonly||!e.clearable||!B.value&&!R.value)return!1;const{value:O}=k,{value:Q}=B;return e.pair?!!(Array.isArray(O)&&(O[0]||O[1]))&&(R.value||Q):!!O&&(R.value||Q)}),$=z(()=>{const{showPasswordOn:O}=e;if(O)return O;if(e.showPasswordToggle)return"click"}),ie=V(!1),ve=z(()=>{const{textDecoration:O}=e;return O?Array.isArray(O)?O.map(Q=>({textDecoration:Q})):[{textDecoration:O}]:["",""]}),ye=V(void 0),Ae=()=>{var O,Q;if(e.type==="textarea"){const{autosize:ke}=e;if(ke&&(ye.value=(Q=(O=f.value)===null||O===void 0?void 0:O.$el)===null||Q===void 0?void 0:Q.offsetWidth),!s.value||typeof ke=="boolean")return;const{paddingTop:tt,paddingBottom:ht,lineHeight:Xe}=window.getComputedStyle(s.value),Do=Number(tt.slice(0,-2)),Oo=Number(ht.slice(0,-2)),Lo=Number(Xe.slice(0,-2)),{value:Xr}=l;if(!Xr)return;if(ke.minRows){const Zr=Math.max(ke.minRows,1),Vs=`${Do+Oo+Lo*Zr}px`;Xr.style.minHeight=Vs}if(ke.maxRows){const Zr=`${Do+Oo+Lo*ke.maxRows}px`;Xr.style.maxHeight=Zr}}},De=z(()=>{const{maxlength:O}=e;return O===void 0?void 0:Number(O)});It(()=>{const{value:O}=k;Array.isArray(O)||Kt(O)});const ut=rn().proxy;function Je(O,Q){const{onUpdateValue:ke,"onUpdate:value":tt,onInput:ht}=e,{nTriggerFormInput:Xe}=T;ke&&ze(ke,O,Q),tt&&ze(tt,O,Q),ht&&ze(ht,O,Q),p.value=O,Xe()}function pt(O,Q){const{onChange:ke}=e,{nTriggerFormChange:tt}=T;ke&&ze(ke,O,Q),p.value=O,tt()}function _e(O){const{onBlur:Q}=e,{nTriggerFormBlur:ke}=T;Q&&ze(Q,O),ke()}function Oe(O){const{onFocus:Q}=e,{nTriggerFormFocus:ke}=T;Q&&ze(Q,O),ke()}function Dt(O){const{onClear:Q}=e;Q&&ze(Q,O)}function Ie(O){const{onInputBlur:Q}=e;Q&&ze(Q,O)}function bt(O){const{onInputFocus:Q}=e;Q&&ze(Q,O)}function Bt(){const{onDeactivate:O}=e;O&&ze(O)}function en(){const{onActivate:O}=e;O&&ze(O)}function E(O){const{onClick:Q}=e;Q&&ze(Q,O)}function _(O){const{onWrapperFocus:Q}=e;Q&&ze(Q,O)}function H(O){const{onWrapperBlur:Q}=e;Q&&ze(Q,O)}function J(){P.value=!0}function K(O){P.value=!1,O.target===u.value?Z(O,1):Z(O,0)}function Z(O,Q=0,ke="input"){const tt=O.target.value;if(Kt(tt),O instanceof InputEvent&&!O.isComposing&&(P.value=!1),e.type==="textarea"){const{value:Xe}=f;Xe&&Xe.syncUnifiedContainer()}if(W=tt,P.value)return;g.recordCursor();const ht=le(tt);if(ht)if(!e.pair)ke==="input"?Je(tt,{source:Q}):pt(tt,{source:Q});else{let{value:Xe}=k;Array.isArray(Xe)?Xe=[Xe[0],Xe[1]]:Xe=["",""],Xe[Q]=tt,ke==="input"?Je(Xe,{source:Q}):pt(Xe,{source:Q})}ut.$forceUpdate(),ht||jt(g.restoreCursor)}function le(O){const{countGraphemes:Q,maxlength:ke,minlength:tt}=e;if(Q){let Xe;if(ke!==void 0&&(Xe===void 0&&(Xe=Q(O)),Xe>Number(ke))||tt!==void 0&&(Xe===void 0&&(Xe=Q(O)),Xe{tt.preventDefault(),Ue("mouseup",document,Q)};if(lt("mouseup",document,Q),$.value!=="mousedown")return;ie.value=!0;const ke=()=>{ie.value=!1,Ue("mouseup",document,ke)};lt("mouseup",document,ke)}function Ut(O){e.onKeyup&&ze(e.onKeyup,O)}function qr(O){switch(e.onKeydown&&ze(e.onKeydown,O),O.key){case"Escape":he();break;case"Enter":ne(O);break}}function ne(O){var Q,ke;if(e.passivelyActivated){const{value:tt}=D;if(tt){e.internalDeactivateOnEnter&&he();return}O.preventDefault(),e.type==="textarea"?(Q=s.value)===null||Q===void 0||Q.focus():(ke=d.value)===null||ke===void 0||ke.focus()}}function he(){e.passivelyActivated&&(D.value=!1,jt(()=>{var O;(O=a.value)===null||O===void 0||O.focus()}))}function xe(){var O,Q,ke;x.value||(e.passivelyActivated?(O=a.value)===null||O===void 0||O.focus():((Q=s.value)===null||Q===void 0||Q.focus(),(ke=d.value)===null||ke===void 0||ke.focus()))}function qe(){var O;!((O=a.value)===null||O===void 0)&&O.contains(document.activeElement)&&document.activeElement.blur()}function gt(){var O,Q;(O=s.value)===null||O===void 0||O.select(),(Q=d.value)===null||Q===void 0||Q.select()}function Nt(){x.value||(s.value?s.value.focus():d.value&&d.value.focus())}function ln(){const{value:O}=a;O!=null&&O.contains(document.activeElement)&&O!==document.activeElement&&he()}function et(O){if(e.type==="textarea"){const{value:Q}=s;Q==null||Q.scrollTo(O)}else{const{value:Q}=d;Q==null||Q.scrollTo(O)}}function Kt(O){const{type:Q,pair:ke,autosize:tt}=e;if(!ke&&tt)if(Q==="textarea"){const{value:ht}=l;ht&&(ht.textContent=`${O??""}\r -`)}else{const{value:ht}=c;ht&&(O?ht.textContent=O:ht.innerHTML=" ")}}function Mo(){Ae()}const Ld=V({top:"0"});function x1(O){var Q;const{scrollTop:ke}=O.target;Ld.value.top=`${-ke}px`,(Q=f.value)===null||Q===void 0||Q.syncUnifiedContainer()}let Ji=null;bo(()=>{const{autosize:O,type:Q}=e;O&&Q==="textarea"?Ji=ot(k,ke=>{!Array.isArray(ke)&&ke!==W&&Kt(ke)}):Ji==null||Ji()});let Qi=null;bo(()=>{e.type==="textarea"?Qi=ot(k,O=>{var Q;!Array.isArray(O)&&O!==W&&((Q=f.value)===null||Q===void 0||Q.syncUnifiedContainer())}):Qi==null||Qi()}),We(jp,{mergedValueRef:k,maxlengthRef:De,mergedClsPrefixRef:t,countGraphemesRef:Ve(e,"countGraphemes")});const S1={wrapperElRef:a,inputElRef:d,textareaElRef:s,isCompositing:P,clear:pe,focus:xe,blur:qe,select:gt,deactivate:ln,activate:Nt,scrollTo:et},T1=Ao("Input",r,t),Hd=z(()=>{const{value:O}=v,{common:{cubicBezierEaseInOut:Q},self:{color:ke,borderRadius:tt,textColor:ht,caretColor:Xe,caretColorError:Do,caretColorWarning:Oo,textDecorationColor:Lo,border:Xr,borderDisabled:Zr,borderHover:Vs,borderFocus:w1,placeholderColor:_1,placeholderColorDisabled:P1,lineHeightTextarea:A1,colorDisabled:R1,colorFocus:E1,textColorDisabled:I1,boxShadowFocus:M1,iconSize:D1,colorFocusWarning:O1,boxShadowFocusWarning:L1,borderWarning:H1,borderFocusWarning:$1,borderHoverWarning:B1,colorFocusError:N1,boxShadowFocusError:z1,borderError:F1,borderFocusError:W1,borderHoverError:j1,clearSize:G1,clearColor:V1,clearColorHover:U1,clearColorPressed:K1,iconColor:q1,iconColorDisabled:X1,suffixTextColor:Z1,countTextColor:Y1,countTextColorDisabled:J1,iconColorHover:Q1,iconColorPressed:ev,loadingColor:tv,loadingColorError:nv,loadingColorWarning:ov,[ge("padding",O)]:rv,[ge("fontSize",O)]:iv,[ge("height",O)]:av}}=i.value,{left:sv,right:lv}=Wi(rv);return{"--n-bezier":Q,"--n-count-text-color":Y1,"--n-count-text-color-disabled":J1,"--n-color":ke,"--n-font-size":iv,"--n-border-radius":tt,"--n-height":av,"--n-padding-left":sv,"--n-padding-right":lv,"--n-text-color":ht,"--n-caret-color":Xe,"--n-text-decoration-color":Lo,"--n-border":Xr,"--n-border-disabled":Zr,"--n-border-hover":Vs,"--n-border-focus":w1,"--n-placeholder-color":_1,"--n-placeholder-color-disabled":P1,"--n-icon-size":D1,"--n-line-height-textarea":A1,"--n-color-disabled":R1,"--n-color-focus":E1,"--n-text-color-disabled":I1,"--n-box-shadow-focus":M1,"--n-loading-color":tv,"--n-caret-color-warning":Oo,"--n-color-focus-warning":O1,"--n-box-shadow-focus-warning":L1,"--n-border-warning":H1,"--n-border-focus-warning":$1,"--n-border-hover-warning":B1,"--n-loading-color-warning":ov,"--n-caret-color-error":Do,"--n-color-focus-error":N1,"--n-box-shadow-focus-error":z1,"--n-border-error":F1,"--n-border-focus-error":W1,"--n-border-hover-error":j1,"--n-loading-color-error":nv,"--n-clear-color":V1,"--n-clear-size":G1,"--n-clear-color-hover":U1,"--n-clear-color-pressed":K1,"--n-icon-color":q1,"--n-icon-color-hover":Q1,"--n-icon-color-pressed":ev,"--n-icon-color-disabled":X1,"--n-suffix-text-color":Z1}}),hr=o?Mt("input",z(()=>{const{value:O}=v;return O[0]}),Hd,e):void 0;return Object.assign(Object.assign({},S1),{wrapperElRef:a,inputElRef:d,inputMirrorElRef:c,inputEl2Ref:u,textareaElRef:s,textareaMirrorElRef:l,textareaScrollbarInstRef:f,rtlEnabled:T1,uncontrolledValue:p,mergedValue:k,passwordVisible:ie,mergedPlaceholder:M,showPlaceholder1:j,showPlaceholder2:ee,mergedFocus:B,isComposing:P,activated:D,showClearButton:X,mergedSize:v,mergedDisabled:x,textDecorationStyle:ve,mergedClsPrefix:t,mergedBordered:n,mergedShowPasswordOn:$,placeholderStyle:Ld,mergedStatus:A,textAreaScrollContainerWidth:ye,handleTextAreaScroll:x1,handleCompositionStart:J,handleCompositionEnd:K,handleInput:Z,handleInputBlur:C,handleInputFocus:w,handleWrapperBlur:I,handleWrapperFocus:Y,handleMouseEnter:Qe,handleMouseLeave:Ke,handleMouseDown:be,handleChange:q,handleClick:L,handleClear:N,handlePasswordToggleClick:st,handlePasswordToggleMousedown:vt,handleWrapperKeydown:qr,handleWrapperKeyup:Ut,handleTextAreaMirrorResize:Mo,getTextareaScrollContainer:()=>s.value,mergedTheme:i,cssVars:o?void 0:Hd,themeClass:hr==null?void 0:hr.themeClass,onRender:hr==null?void 0:hr.onRender})},render(){var e,t;const{mergedClsPrefix:n,mergedStatus:o,themeClass:r,type:i,countGraphemes:a,onRender:s}=this,l=this.$slots;return s==null||s(),S("div",{ref:"wrapperElRef",class:[`${n}-input`,r,o&&`${n}-input--${o}-status`,{[`${n}-input--rtl`]:this.rtlEnabled,[`${n}-input--disabled`]:this.mergedDisabled,[`${n}-input--textarea`]:i==="textarea",[`${n}-input--resizable`]:this.resizable&&!this.autosize,[`${n}-input--autosize`]:this.autosize,[`${n}-input--round`]:this.round&&i!=="textarea",[`${n}-input--pair`]:this.pair,[`${n}-input--focus`]:this.mergedFocus,[`${n}-input--stateful`]:this.stateful}],style:this.cssVars,tabindex:!this.mergedDisabled&&this.passivelyActivated&&!this.activated?0:void 0,onFocus:this.handleWrapperFocus,onBlur:this.handleWrapperBlur,onClick:this.handleClick,onMousedown:this.handleMouseDown,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onCompositionstart:this.handleCompositionStart,onCompositionend:this.handleCompositionEnd,onKeyup:this.handleWrapperKeyup,onKeydown:this.handleWrapperKeydown},S("div",{class:`${n}-input-wrapper`},Pt(l.prefix,c=>c&&S("div",{class:`${n}-input__prefix`},c)),i==="textarea"?S(Ki,{ref:"textareaScrollbarInstRef",class:`${n}-input__textarea`,container:this.getTextareaScrollContainer,triggerDisplayManually:!0,useUnifiedContainer:!0,internalHoistYRail:!0},{default:()=>{var c,d;const{textAreaScrollContainerWidth:u}=this,h={width:this.autosize&&u&&`${u}px`};return S(He,null,S("textarea",Object.assign({},this.inputProps,{ref:"textareaElRef",class:[`${n}-input__textarea-el`,(c=this.inputProps)===null||c===void 0?void 0:c.class],autofocus:this.autofocus,rows:Number(this.rows),placeholder:this.placeholder,value:this.mergedValue,disabled:this.mergedDisabled,maxlength:a?void 0:this.maxlength,minlength:a?void 0:this.minlength,readonly:this.readonly,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,style:[this.textDecorationStyle[0],(d=this.inputProps)===null||d===void 0?void 0:d.style,h],onBlur:this.handleInputBlur,onFocus:g=>{this.handleInputFocus(g,2)},onInput:this.handleInput,onChange:this.handleChange,onScroll:this.handleTextAreaScroll})),this.showPlaceholder1?S("div",{class:`${n}-input__placeholder`,style:[this.placeholderStyle,h],key:"placeholder"},this.mergedPlaceholder[0]):null,this.autosize?S(Va,{onResize:this.handleTextAreaMirrorResize},{default:()=>S("div",{ref:"textareaMirrorElRef",class:`${n}-input__textarea-mirror`,key:"mirror"})}):null)}}):S("div",{class:`${n}-input__input`},S("input",Object.assign({type:i==="password"&&this.mergedShowPasswordOn&&this.passwordVisible?"text":i},this.inputProps,{ref:"inputElRef",class:[`${n}-input__input-el`,(e=this.inputProps)===null||e===void 0?void 0:e.class],style:[this.textDecorationStyle[0],(t=this.inputProps)===null||t===void 0?void 0:t.style],tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[0],disabled:this.mergedDisabled,maxlength:a?void 0:this.maxlength,minlength:a?void 0:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[0]:this.mergedValue,readonly:this.readonly,autofocus:this.autofocus,size:this.attrSize,onBlur:this.handleInputBlur,onFocus:c=>{this.handleInputFocus(c,0)},onInput:c=>{this.handleInput(c,0)},onChange:c=>{this.handleChange(c,0)}})),this.showPlaceholder1?S("div",{class:`${n}-input__placeholder`},S("span",null,this.mergedPlaceholder[0])):null,this.autosize?S("div",{class:`${n}-input__input-mirror`,key:"mirror",ref:"inputMirrorElRef"}," "):null),!this.pair&&Pt(l.suffix,c=>c||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?S("div",{class:`${n}-input__suffix`},[Pt(l["clear-icon-placeholder"],d=>(this.clearable||d)&&S(nc,{clsPrefix:n,show:this.showClearButton,onClear:this.handleClear},{placeholder:()=>d,icon:()=>{var u,h;return(h=(u=this.$slots)["clear-icon"])===null||h===void 0?void 0:h.call(u)}})),this.internalLoadingBeforeSuffix?null:c,this.loading!==void 0?S(LT,{clsPrefix:n,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?c:null,this.showCount&&this.type!=="textarea"?S(Bh,null,{default:d=>{var u;return(u=l.count)===null||u===void 0?void 0:u.call(l,d)}}):null,this.mergedShowPasswordOn&&this.type==="password"?S("div",{class:`${n}-input__eye`,onMousedown:this.handlePasswordToggleMousedown,onClick:this.handlePasswordToggleClick},this.passwordVisible?Zo(l["password-visible-icon"],()=>[S(Co,{clsPrefix:n},{default:()=>S(LS,null)})]):Zo(l["password-invisible-icon"],()=>[S(Co,{clsPrefix:n},{default:()=>S(HS,null)})])):null]):null)),this.pair?S("span",{class:`${n}-input__separator`},Zo(l.separator,()=>[this.separator])):null,this.pair?S("div",{class:`${n}-input-wrapper`},S("div",{class:`${n}-input__input`},S("input",{ref:"inputEl2Ref",type:this.type,class:`${n}-input__input-el`,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[1],disabled:this.mergedDisabled,maxlength:a?void 0:this.maxlength,minlength:a?void 0:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[1]:void 0,readonly:this.readonly,style:this.textDecorationStyle[1],onBlur:this.handleInputBlur,onFocus:c=>{this.handleInputFocus(c,1)},onInput:c=>{this.handleInput(c,1)},onChange:c=>{this.handleChange(c,1)}}),this.showPlaceholder2?S("div",{class:`${n}-input__placeholder`},S("span",null,this.mergedPlaceholder[1])):null),Pt(l.suffix,c=>(this.clearable||c)&&S("div",{class:`${n}-input__suffix`},[this.clearable&&S(nc,{clsPrefix:n,show:this.showClearButton,onClear:this.handleClear},{icon:()=>{var d;return(d=l["clear-icon"])===null||d===void 0?void 0:d.call(l)},placeholder:()=>{var d;return(d=l["clear-icon-placeholder"])===null||d===void 0?void 0:d.call(l)}}),c]))):null,this.mergedBordered?S("div",{class:`${n}-input__border`}):null,this.mergedBordered?S("div",{class:`${n}-input__state-border`}):null,this.showCount&&i==="textarea"?S(Bh,null,{default:c=>{var d;const{renderCount:u}=this;return u?u(c):(d=l.count)===null||d===void 0?void 0:d.call(l,c)}}):null)}});function Gp(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const tw={name:"AutoComplete",common:se,peers:{InternalSelectMenu:qi,Input:fn},self:Gp},nw={name:"AutoComplete",common:ae,peers:{InternalSelectMenu:Xi,Input:Cn},self:Gp};function Vp(e){const{borderRadius:t,avatarColor:n,cardColor:o,fontSize:r,heightTiny:i,heightSmall:a,heightMedium:s,heightLarge:l,heightHuge:c,modalColor:d,popoverColor:u}=e;return{borderRadius:t,fontSize:r,border:`2px solid ${o}`,heightTiny:i,heightSmall:a,heightMedium:s,heightLarge:l,heightHuge:c,color:ce(o,n),colorModal:ce(d,n),colorPopover:ce(u,n)}}const Up={name:"Avatar",common:se,self:Vp},Kp={name:"Avatar",common:ae,self:Vp};function qp(){return{gap:"-12px"}}const ow={name:"AvatarGroup",common:se,peers:{Avatar:Up},self:qp},rw={name:"AvatarGroup",common:ae,peers:{Avatar:Kp},self:qp},Xp={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"},iw={name:"BackTop",common:ae,self(e){const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Xp),{color:t,textColor:n,iconColor:n,iconColorHover:o,iconColorPressed:r,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}};function aw(e){const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Xp),{color:t,textColor:n,iconColor:n,iconColorHover:o,iconColorPressed:r,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}const sw={name:"BackTop",common:se,self:aw},lw={name:"Badge",common:ae,self(e){const{errorColorSuppl:t,infoColorSuppl:n,successColorSuppl:o,warningColorSuppl:r,fontFamily:i}=e;return{color:t,colorInfo:n,colorSuccess:o,colorError:t,colorWarning:r,fontSize:"12px",fontFamily:i}}};function cw(e){const{errorColor:t,infoColor:n,successColor:o,warningColor:r,fontFamily:i}=e;return{color:t,colorInfo:n,colorSuccess:o,colorError:t,colorWarning:r,fontSize:"12px",fontFamily:i}}const dw={name:"Badge",common:se,self:cw},uw={fontWeightActive:"400"};function Zp(e){const{fontSize:t,textColor3:n,textColor2:o,borderRadius:r,buttonColor2Hover:i,buttonColor2Pressed:a}=e;return Object.assign(Object.assign({},uw),{fontSize:t,itemLineHeight:"1.25",itemTextColor:n,itemTextColorHover:o,itemTextColorPressed:o,itemTextColorActive:o,itemBorderRadius:r,itemColorHover:i,itemColorPressed:a,separatorColor:n})}const hw={name:"Breadcrumb",common:se,self:Zp},fw={name:"Breadcrumb",common:ae,self:Zp};function No(e){return ce(e,[255,255,255,.16])}function Ca(e){return ce(e,[0,0,0,.12])}const gw="n-button-group",mw={paddingTiny:"0 6px",paddingSmall:"0 10px",paddingMedium:"0 14px",paddingLarge:"0 18px",paddingRoundTiny:"0 10px",paddingRoundSmall:"0 14px",paddingRoundMedium:"0 18px",paddingRoundLarge:"0 22px",iconMarginTiny:"6px",iconMarginSmall:"6px",iconMarginMedium:"6px",iconMarginLarge:"6px",iconSizeTiny:"14px",iconSizeSmall:"18px",iconSizeMedium:"18px",iconSizeLarge:"20px",rippleDuration:".6s"};function Yp(e){const{heightTiny:t,heightSmall:n,heightMedium:o,heightLarge:r,borderRadius:i,fontSizeTiny:a,fontSizeSmall:s,fontSizeMedium:l,fontSizeLarge:c,opacityDisabled:d,textColor2:u,textColor3:h,primaryColorHover:g,primaryColorPressed:f,borderColor:b,primaryColor:p,baseColor:m,infoColor:k,infoColorHover:T,infoColorPressed:v,successColor:x,successColorHover:A,successColorPressed:y,warningColor:R,warningColorHover:P,warningColorPressed:D,errorColor:W,errorColorHover:M,errorColorPressed:j,fontWeight:ee,buttonColor2:B,buttonColor2Hover:X,buttonColor2Pressed:$,fontWeightStrong:ie}=e;return Object.assign(Object.assign({},mw),{heightTiny:t,heightSmall:n,heightMedium:o,heightLarge:r,borderRadiusTiny:i,borderRadiusSmall:i,borderRadiusMedium:i,borderRadiusLarge:i,fontSizeTiny:a,fontSizeSmall:s,fontSizeMedium:l,fontSizeLarge:c,opacityDisabled:d,colorOpacitySecondary:"0.16",colorOpacitySecondaryHover:"0.22",colorOpacitySecondaryPressed:"0.28",colorSecondary:B,colorSecondaryHover:X,colorSecondaryPressed:$,colorTertiary:B,colorTertiaryHover:X,colorTertiaryPressed:$,colorQuaternary:"#0000",colorQuaternaryHover:X,colorQuaternaryPressed:$,color:"#0000",colorHover:"#0000",colorPressed:"#0000",colorFocus:"#0000",colorDisabled:"#0000",textColor:u,textColorTertiary:h,textColorHover:g,textColorPressed:f,textColorFocus:g,textColorDisabled:u,textColorText:u,textColorTextHover:g,textColorTextPressed:f,textColorTextFocus:g,textColorTextDisabled:u,textColorGhost:u,textColorGhostHover:g,textColorGhostPressed:f,textColorGhostFocus:g,textColorGhostDisabled:u,border:`1px solid ${b}`,borderHover:`1px solid ${g}`,borderPressed:`1px solid ${f}`,borderFocus:`1px solid ${g}`,borderDisabled:`1px solid ${b}`,rippleColor:p,colorPrimary:p,colorHoverPrimary:g,colorPressedPrimary:f,colorFocusPrimary:g,colorDisabledPrimary:p,textColorPrimary:m,textColorHoverPrimary:m,textColorPressedPrimary:m,textColorFocusPrimary:m,textColorDisabledPrimary:m,textColorTextPrimary:p,textColorTextHoverPrimary:g,textColorTextPressedPrimary:f,textColorTextFocusPrimary:g,textColorTextDisabledPrimary:u,textColorGhostPrimary:p,textColorGhostHoverPrimary:g,textColorGhostPressedPrimary:f,textColorGhostFocusPrimary:g,textColorGhostDisabledPrimary:p,borderPrimary:`1px solid ${p}`,borderHoverPrimary:`1px solid ${g}`,borderPressedPrimary:`1px solid ${f}`,borderFocusPrimary:`1px solid ${g}`,borderDisabledPrimary:`1px solid ${p}`,rippleColorPrimary:p,colorInfo:k,colorHoverInfo:T,colorPressedInfo:v,colorFocusInfo:T,colorDisabledInfo:k,textColorInfo:m,textColorHoverInfo:m,textColorPressedInfo:m,textColorFocusInfo:m,textColorDisabledInfo:m,textColorTextInfo:k,textColorTextHoverInfo:T,textColorTextPressedInfo:v,textColorTextFocusInfo:T,textColorTextDisabledInfo:u,textColorGhostInfo:k,textColorGhostHoverInfo:T,textColorGhostPressedInfo:v,textColorGhostFocusInfo:T,textColorGhostDisabledInfo:k,borderInfo:`1px solid ${k}`,borderHoverInfo:`1px solid ${T}`,borderPressedInfo:`1px solid ${v}`,borderFocusInfo:`1px solid ${T}`,borderDisabledInfo:`1px solid ${k}`,rippleColorInfo:k,colorSuccess:x,colorHoverSuccess:A,colorPressedSuccess:y,colorFocusSuccess:A,colorDisabledSuccess:x,textColorSuccess:m,textColorHoverSuccess:m,textColorPressedSuccess:m,textColorFocusSuccess:m,textColorDisabledSuccess:m,textColorTextSuccess:x,textColorTextHoverSuccess:A,textColorTextPressedSuccess:y,textColorTextFocusSuccess:A,textColorTextDisabledSuccess:u,textColorGhostSuccess:x,textColorGhostHoverSuccess:A,textColorGhostPressedSuccess:y,textColorGhostFocusSuccess:A,textColorGhostDisabledSuccess:x,borderSuccess:`1px solid ${x}`,borderHoverSuccess:`1px solid ${A}`,borderPressedSuccess:`1px solid ${y}`,borderFocusSuccess:`1px solid ${A}`,borderDisabledSuccess:`1px solid ${x}`,rippleColorSuccess:x,colorWarning:R,colorHoverWarning:P,colorPressedWarning:D,colorFocusWarning:P,colorDisabledWarning:R,textColorWarning:m,textColorHoverWarning:m,textColorPressedWarning:m,textColorFocusWarning:m,textColorDisabledWarning:m,textColorTextWarning:R,textColorTextHoverWarning:P,textColorTextPressedWarning:D,textColorTextFocusWarning:P,textColorTextDisabledWarning:u,textColorGhostWarning:R,textColorGhostHoverWarning:P,textColorGhostPressedWarning:D,textColorGhostFocusWarning:P,textColorGhostDisabledWarning:R,borderWarning:`1px solid ${R}`,borderHoverWarning:`1px solid ${P}`,borderPressedWarning:`1px solid ${D}`,borderFocusWarning:`1px solid ${P}`,borderDisabledWarning:`1px solid ${R}`,rippleColorWarning:R,colorError:W,colorHoverError:M,colorPressedError:j,colorFocusError:M,colorDisabledError:W,textColorError:m,textColorHoverError:m,textColorPressedError:m,textColorFocusError:m,textColorDisabledError:m,textColorTextError:W,textColorTextHoverError:M,textColorTextPressedError:j,textColorTextFocusError:M,textColorTextDisabledError:u,textColorGhostError:W,textColorGhostHoverError:M,textColorGhostPressedError:j,textColorGhostFocusError:M,textColorGhostDisabledError:W,borderError:`1px solid ${W}`,borderHoverError:`1px solid ${M}`,borderPressedError:`1px solid ${j}`,borderFocusError:`1px solid ${M}`,borderDisabledError:`1px solid ${W}`,rippleColorError:W,waveOpacity:"0.6",fontWeight:ee,fontWeightStrong:ie})}const Qt={name:"Button",common:se,self:Yp},sn={name:"Button",common:ae,self(e){const t=Yp(e);return t.waveOpacity="0.8",t.colorOpacitySecondary="0.16",t.colorOpacitySecondaryHover="0.2",t.colorOpacitySecondaryPressed="0.12",t}},pw=F([oe("button",` +`)}else{const{value:ht}=c;ht&&(O?ht.textContent=O:ht.innerHTML=" ")}}function Mo(){Ae()}const Ld=V({top:"0"});function x1(O){var Q;const{scrollTop:ke}=O.target;Ld.value.top=`${-ke}px`,(Q=f.value)===null||Q===void 0||Q.syncUnifiedContainer()}let Ji=null;bo(()=>{const{autosize:O,type:Q}=e;O&&Q==="textarea"?Ji=ot(k,ke=>{!Array.isArray(ke)&&ke!==W&&Kt(ke)}):Ji==null||Ji()});let Qi=null;bo(()=>{e.type==="textarea"?Qi=ot(k,O=>{var Q;!Array.isArray(O)&&O!==W&&((Q=f.value)===null||Q===void 0||Q.syncUnifiedContainer())}):Qi==null||Qi()}),je(jp,{mergedValueRef:k,maxlengthRef:De,mergedClsPrefixRef:t,countGraphemesRef:Ve(e,"countGraphemes")});const S1={wrapperElRef:a,inputElRef:d,textareaElRef:s,isCompositing:P,clear:pe,focus:xe,blur:qe,select:gt,deactivate:ln,activate:Nt,scrollTo:et},T1=Ao("Input",r,t),Hd=z(()=>{const{value:O}=v,{common:{cubicBezierEaseInOut:Q},self:{color:ke,borderRadius:tt,textColor:ht,caretColor:Xe,caretColorError:Do,caretColorWarning:Oo,textDecorationColor:Lo,border:Xr,borderDisabled:Zr,borderHover:Vs,borderFocus:w1,placeholderColor:_1,placeholderColorDisabled:P1,lineHeightTextarea:A1,colorDisabled:R1,colorFocus:E1,textColorDisabled:I1,boxShadowFocus:M1,iconSize:D1,colorFocusWarning:O1,boxShadowFocusWarning:L1,borderWarning:H1,borderFocusWarning:$1,borderHoverWarning:B1,colorFocusError:N1,boxShadowFocusError:z1,borderError:F1,borderFocusError:W1,borderHoverError:j1,clearSize:G1,clearColor:V1,clearColorHover:U1,clearColorPressed:K1,iconColor:q1,iconColorDisabled:X1,suffixTextColor:Z1,countTextColor:Y1,countTextColorDisabled:J1,iconColorHover:Q1,iconColorPressed:ev,loadingColor:tv,loadingColorError:nv,loadingColorWarning:ov,[ge("padding",O)]:rv,[ge("fontSize",O)]:iv,[ge("height",O)]:av}}=i.value,{left:sv,right:lv}=Wi(rv);return{"--n-bezier":Q,"--n-count-text-color":Y1,"--n-count-text-color-disabled":J1,"--n-color":ke,"--n-font-size":iv,"--n-border-radius":tt,"--n-height":av,"--n-padding-left":sv,"--n-padding-right":lv,"--n-text-color":ht,"--n-caret-color":Xe,"--n-text-decoration-color":Lo,"--n-border":Xr,"--n-border-disabled":Zr,"--n-border-hover":Vs,"--n-border-focus":w1,"--n-placeholder-color":_1,"--n-placeholder-color-disabled":P1,"--n-icon-size":D1,"--n-line-height-textarea":A1,"--n-color-disabled":R1,"--n-color-focus":E1,"--n-text-color-disabled":I1,"--n-box-shadow-focus":M1,"--n-loading-color":tv,"--n-caret-color-warning":Oo,"--n-color-focus-warning":O1,"--n-box-shadow-focus-warning":L1,"--n-border-warning":H1,"--n-border-focus-warning":$1,"--n-border-hover-warning":B1,"--n-loading-color-warning":ov,"--n-caret-color-error":Do,"--n-color-focus-error":N1,"--n-box-shadow-focus-error":z1,"--n-border-error":F1,"--n-border-focus-error":W1,"--n-border-hover-error":j1,"--n-loading-color-error":nv,"--n-clear-color":V1,"--n-clear-size":G1,"--n-clear-color-hover":U1,"--n-clear-color-pressed":K1,"--n-icon-color":q1,"--n-icon-color-hover":Q1,"--n-icon-color-pressed":ev,"--n-icon-color-disabled":X1,"--n-suffix-text-color":Z1}}),hr=o?Mt("input",z(()=>{const{value:O}=v;return O[0]}),Hd,e):void 0;return Object.assign(Object.assign({},S1),{wrapperElRef:a,inputElRef:d,inputMirrorElRef:c,inputEl2Ref:u,textareaElRef:s,textareaMirrorElRef:l,textareaScrollbarInstRef:f,rtlEnabled:T1,uncontrolledValue:p,mergedValue:k,passwordVisible:ie,mergedPlaceholder:M,showPlaceholder1:j,showPlaceholder2:ee,mergedFocus:B,isComposing:P,activated:D,showClearButton:X,mergedSize:v,mergedDisabled:x,textDecorationStyle:ve,mergedClsPrefix:t,mergedBordered:n,mergedShowPasswordOn:$,placeholderStyle:Ld,mergedStatus:A,textAreaScrollContainerWidth:ye,handleTextAreaScroll:x1,handleCompositionStart:J,handleCompositionEnd:K,handleInput:Z,handleInputBlur:C,handleInputFocus:w,handleWrapperBlur:I,handleWrapperFocus:Y,handleMouseEnter:Qe,handleMouseLeave:Ke,handleMouseDown:be,handleChange:q,handleClick:L,handleClear:N,handlePasswordToggleClick:st,handlePasswordToggleMousedown:vt,handleWrapperKeydown:qr,handleWrapperKeyup:Ut,handleTextAreaMirrorResize:Mo,getTextareaScrollContainer:()=>s.value,mergedTheme:i,cssVars:o?void 0:Hd,themeClass:hr==null?void 0:hr.themeClass,onRender:hr==null?void 0:hr.onRender})},render(){var e,t;const{mergedClsPrefix:n,mergedStatus:o,themeClass:r,type:i,countGraphemes:a,onRender:s}=this,l=this.$slots;return s==null||s(),S("div",{ref:"wrapperElRef",class:[`${n}-input`,r,o&&`${n}-input--${o}-status`,{[`${n}-input--rtl`]:this.rtlEnabled,[`${n}-input--disabled`]:this.mergedDisabled,[`${n}-input--textarea`]:i==="textarea",[`${n}-input--resizable`]:this.resizable&&!this.autosize,[`${n}-input--autosize`]:this.autosize,[`${n}-input--round`]:this.round&&i!=="textarea",[`${n}-input--pair`]:this.pair,[`${n}-input--focus`]:this.mergedFocus,[`${n}-input--stateful`]:this.stateful}],style:this.cssVars,tabindex:!this.mergedDisabled&&this.passivelyActivated&&!this.activated?0:void 0,onFocus:this.handleWrapperFocus,onBlur:this.handleWrapperBlur,onClick:this.handleClick,onMousedown:this.handleMouseDown,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onCompositionstart:this.handleCompositionStart,onCompositionend:this.handleCompositionEnd,onKeyup:this.handleWrapperKeyup,onKeydown:this.handleWrapperKeydown},S("div",{class:`${n}-input-wrapper`},Pt(l.prefix,c=>c&&S("div",{class:`${n}-input__prefix`},c)),i==="textarea"?S(Ki,{ref:"textareaScrollbarInstRef",class:`${n}-input__textarea`,container:this.getTextareaScrollContainer,triggerDisplayManually:!0,useUnifiedContainer:!0,internalHoistYRail:!0},{default:()=>{var c,d;const{textAreaScrollContainerWidth:u}=this,h={width:this.autosize&&u&&`${u}px`};return S(He,null,S("textarea",Object.assign({},this.inputProps,{ref:"textareaElRef",class:[`${n}-input__textarea-el`,(c=this.inputProps)===null||c===void 0?void 0:c.class],autofocus:this.autofocus,rows:Number(this.rows),placeholder:this.placeholder,value:this.mergedValue,disabled:this.mergedDisabled,maxlength:a?void 0:this.maxlength,minlength:a?void 0:this.minlength,readonly:this.readonly,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,style:[this.textDecorationStyle[0],(d=this.inputProps)===null||d===void 0?void 0:d.style,h],onBlur:this.handleInputBlur,onFocus:g=>{this.handleInputFocus(g,2)},onInput:this.handleInput,onChange:this.handleChange,onScroll:this.handleTextAreaScroll})),this.showPlaceholder1?S("div",{class:`${n}-input__placeholder`,style:[this.placeholderStyle,h],key:"placeholder"},this.mergedPlaceholder[0]):null,this.autosize?S(Va,{onResize:this.handleTextAreaMirrorResize},{default:()=>S("div",{ref:"textareaMirrorElRef",class:`${n}-input__textarea-mirror`,key:"mirror"})}):null)}}):S("div",{class:`${n}-input__input`},S("input",Object.assign({type:i==="password"&&this.mergedShowPasswordOn&&this.passwordVisible?"text":i},this.inputProps,{ref:"inputElRef",class:[`${n}-input__input-el`,(e=this.inputProps)===null||e===void 0?void 0:e.class],style:[this.textDecorationStyle[0],(t=this.inputProps)===null||t===void 0?void 0:t.style],tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[0],disabled:this.mergedDisabled,maxlength:a?void 0:this.maxlength,minlength:a?void 0:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[0]:this.mergedValue,readonly:this.readonly,autofocus:this.autofocus,size:this.attrSize,onBlur:this.handleInputBlur,onFocus:c=>{this.handleInputFocus(c,0)},onInput:c=>{this.handleInput(c,0)},onChange:c=>{this.handleChange(c,0)}})),this.showPlaceholder1?S("div",{class:`${n}-input__placeholder`},S("span",null,this.mergedPlaceholder[0])):null,this.autosize?S("div",{class:`${n}-input__input-mirror`,key:"mirror",ref:"inputMirrorElRef"}," "):null),!this.pair&&Pt(l.suffix,c=>c||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?S("div",{class:`${n}-input__suffix`},[Pt(l["clear-icon-placeholder"],d=>(this.clearable||d)&&S(nc,{clsPrefix:n,show:this.showClearButton,onClear:this.handleClear},{placeholder:()=>d,icon:()=>{var u,h;return(h=(u=this.$slots)["clear-icon"])===null||h===void 0?void 0:h.call(u)}})),this.internalLoadingBeforeSuffix?null:c,this.loading!==void 0?S(LT,{clsPrefix:n,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?c:null,this.showCount&&this.type!=="textarea"?S(Bh,null,{default:d=>{var u;return(u=l.count)===null||u===void 0?void 0:u.call(l,d)}}):null,this.mergedShowPasswordOn&&this.type==="password"?S("div",{class:`${n}-input__eye`,onMousedown:this.handlePasswordToggleMousedown,onClick:this.handlePasswordToggleClick},this.passwordVisible?Zo(l["password-visible-icon"],()=>[S(Co,{clsPrefix:n},{default:()=>S(LS,null)})]):Zo(l["password-invisible-icon"],()=>[S(Co,{clsPrefix:n},{default:()=>S(HS,null)})])):null]):null)),this.pair?S("span",{class:`${n}-input__separator`},Zo(l.separator,()=>[this.separator])):null,this.pair?S("div",{class:`${n}-input-wrapper`},S("div",{class:`${n}-input__input`},S("input",{ref:"inputEl2Ref",type:this.type,class:`${n}-input__input-el`,tabindex:this.passivelyActivated&&!this.activated?-1:void 0,placeholder:this.mergedPlaceholder[1],disabled:this.mergedDisabled,maxlength:a?void 0:this.maxlength,minlength:a?void 0:this.minlength,value:Array.isArray(this.mergedValue)?this.mergedValue[1]:void 0,readonly:this.readonly,style:this.textDecorationStyle[1],onBlur:this.handleInputBlur,onFocus:c=>{this.handleInputFocus(c,1)},onInput:c=>{this.handleInput(c,1)},onChange:c=>{this.handleChange(c,1)}}),this.showPlaceholder2?S("div",{class:`${n}-input__placeholder`},S("span",null,this.mergedPlaceholder[1])):null),Pt(l.suffix,c=>(this.clearable||c)&&S("div",{class:`${n}-input__suffix`},[this.clearable&&S(nc,{clsPrefix:n,show:this.showClearButton,onClear:this.handleClear},{icon:()=>{var d;return(d=l["clear-icon"])===null||d===void 0?void 0:d.call(l)},placeholder:()=>{var d;return(d=l["clear-icon-placeholder"])===null||d===void 0?void 0:d.call(l)}}),c]))):null,this.mergedBordered?S("div",{class:`${n}-input__border`}):null,this.mergedBordered?S("div",{class:`${n}-input__state-border`}):null,this.showCount&&i==="textarea"?S(Bh,null,{default:c=>{var d;const{renderCount:u}=this;return u?u(c):(d=l.count)===null||d===void 0?void 0:d.call(l,c)}}):null)}});function Gp(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const tw={name:"AutoComplete",common:se,peers:{InternalSelectMenu:qi,Input:fn},self:Gp},nw={name:"AutoComplete",common:ae,peers:{InternalSelectMenu:Xi,Input:kn},self:Gp};function Vp(e){const{borderRadius:t,avatarColor:n,cardColor:o,fontSize:r,heightTiny:i,heightSmall:a,heightMedium:s,heightLarge:l,heightHuge:c,modalColor:d,popoverColor:u}=e;return{borderRadius:t,fontSize:r,border:`2px solid ${o}`,heightTiny:i,heightSmall:a,heightMedium:s,heightLarge:l,heightHuge:c,color:ce(o,n),colorModal:ce(d,n),colorPopover:ce(u,n)}}const Up={name:"Avatar",common:se,self:Vp},Kp={name:"Avatar",common:ae,self:Vp};function qp(){return{gap:"-12px"}}const ow={name:"AvatarGroup",common:se,peers:{Avatar:Up},self:qp},rw={name:"AvatarGroup",common:ae,peers:{Avatar:Kp},self:qp},Xp={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"},iw={name:"BackTop",common:ae,self(e){const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Xp),{color:t,textColor:n,iconColor:n,iconColorHover:o,iconColorPressed:r,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}};function aw(e){const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Xp),{color:t,textColor:n,iconColor:n,iconColorHover:o,iconColorPressed:r,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"})}const sw={name:"BackTop",common:se,self:aw},lw={name:"Badge",common:ae,self(e){const{errorColorSuppl:t,infoColorSuppl:n,successColorSuppl:o,warningColorSuppl:r,fontFamily:i}=e;return{color:t,colorInfo:n,colorSuccess:o,colorError:t,colorWarning:r,fontSize:"12px",fontFamily:i}}};function cw(e){const{errorColor:t,infoColor:n,successColor:o,warningColor:r,fontFamily:i}=e;return{color:t,colorInfo:n,colorSuccess:o,colorError:t,colorWarning:r,fontSize:"12px",fontFamily:i}}const dw={name:"Badge",common:se,self:cw},uw={fontWeightActive:"400"};function Zp(e){const{fontSize:t,textColor3:n,textColor2:o,borderRadius:r,buttonColor2Hover:i,buttonColor2Pressed:a}=e;return Object.assign(Object.assign({},uw),{fontSize:t,itemLineHeight:"1.25",itemTextColor:n,itemTextColorHover:o,itemTextColorPressed:o,itemTextColorActive:o,itemBorderRadius:r,itemColorHover:i,itemColorPressed:a,separatorColor:n})}const hw={name:"Breadcrumb",common:se,self:Zp},fw={name:"Breadcrumb",common:ae,self:Zp};function No(e){return ce(e,[255,255,255,.16])}function Ca(e){return ce(e,[0,0,0,.12])}const gw="n-button-group",mw={paddingTiny:"0 6px",paddingSmall:"0 10px",paddingMedium:"0 14px",paddingLarge:"0 18px",paddingRoundTiny:"0 10px",paddingRoundSmall:"0 14px",paddingRoundMedium:"0 18px",paddingRoundLarge:"0 22px",iconMarginTiny:"6px",iconMarginSmall:"6px",iconMarginMedium:"6px",iconMarginLarge:"6px",iconSizeTiny:"14px",iconSizeSmall:"18px",iconSizeMedium:"18px",iconSizeLarge:"20px",rippleDuration:".6s"};function Yp(e){const{heightTiny:t,heightSmall:n,heightMedium:o,heightLarge:r,borderRadius:i,fontSizeTiny:a,fontSizeSmall:s,fontSizeMedium:l,fontSizeLarge:c,opacityDisabled:d,textColor2:u,textColor3:h,primaryColorHover:g,primaryColorPressed:f,borderColor:b,primaryColor:p,baseColor:m,infoColor:k,infoColorHover:T,infoColorPressed:v,successColor:x,successColorHover:A,successColorPressed:y,warningColor:R,warningColorHover:P,warningColorPressed:D,errorColor:W,errorColorHover:M,errorColorPressed:j,fontWeight:ee,buttonColor2:B,buttonColor2Hover:X,buttonColor2Pressed:$,fontWeightStrong:ie}=e;return Object.assign(Object.assign({},mw),{heightTiny:t,heightSmall:n,heightMedium:o,heightLarge:r,borderRadiusTiny:i,borderRadiusSmall:i,borderRadiusMedium:i,borderRadiusLarge:i,fontSizeTiny:a,fontSizeSmall:s,fontSizeMedium:l,fontSizeLarge:c,opacityDisabled:d,colorOpacitySecondary:"0.16",colorOpacitySecondaryHover:"0.22",colorOpacitySecondaryPressed:"0.28",colorSecondary:B,colorSecondaryHover:X,colorSecondaryPressed:$,colorTertiary:B,colorTertiaryHover:X,colorTertiaryPressed:$,colorQuaternary:"#0000",colorQuaternaryHover:X,colorQuaternaryPressed:$,color:"#0000",colorHover:"#0000",colorPressed:"#0000",colorFocus:"#0000",colorDisabled:"#0000",textColor:u,textColorTertiary:h,textColorHover:g,textColorPressed:f,textColorFocus:g,textColorDisabled:u,textColorText:u,textColorTextHover:g,textColorTextPressed:f,textColorTextFocus:g,textColorTextDisabled:u,textColorGhost:u,textColorGhostHover:g,textColorGhostPressed:f,textColorGhostFocus:g,textColorGhostDisabled:u,border:`1px solid ${b}`,borderHover:`1px solid ${g}`,borderPressed:`1px solid ${f}`,borderFocus:`1px solid ${g}`,borderDisabled:`1px solid ${b}`,rippleColor:p,colorPrimary:p,colorHoverPrimary:g,colorPressedPrimary:f,colorFocusPrimary:g,colorDisabledPrimary:p,textColorPrimary:m,textColorHoverPrimary:m,textColorPressedPrimary:m,textColorFocusPrimary:m,textColorDisabledPrimary:m,textColorTextPrimary:p,textColorTextHoverPrimary:g,textColorTextPressedPrimary:f,textColorTextFocusPrimary:g,textColorTextDisabledPrimary:u,textColorGhostPrimary:p,textColorGhostHoverPrimary:g,textColorGhostPressedPrimary:f,textColorGhostFocusPrimary:g,textColorGhostDisabledPrimary:p,borderPrimary:`1px solid ${p}`,borderHoverPrimary:`1px solid ${g}`,borderPressedPrimary:`1px solid ${f}`,borderFocusPrimary:`1px solid ${g}`,borderDisabledPrimary:`1px solid ${p}`,rippleColorPrimary:p,colorInfo:k,colorHoverInfo:T,colorPressedInfo:v,colorFocusInfo:T,colorDisabledInfo:k,textColorInfo:m,textColorHoverInfo:m,textColorPressedInfo:m,textColorFocusInfo:m,textColorDisabledInfo:m,textColorTextInfo:k,textColorTextHoverInfo:T,textColorTextPressedInfo:v,textColorTextFocusInfo:T,textColorTextDisabledInfo:u,textColorGhostInfo:k,textColorGhostHoverInfo:T,textColorGhostPressedInfo:v,textColorGhostFocusInfo:T,textColorGhostDisabledInfo:k,borderInfo:`1px solid ${k}`,borderHoverInfo:`1px solid ${T}`,borderPressedInfo:`1px solid ${v}`,borderFocusInfo:`1px solid ${T}`,borderDisabledInfo:`1px solid ${k}`,rippleColorInfo:k,colorSuccess:x,colorHoverSuccess:A,colorPressedSuccess:y,colorFocusSuccess:A,colorDisabledSuccess:x,textColorSuccess:m,textColorHoverSuccess:m,textColorPressedSuccess:m,textColorFocusSuccess:m,textColorDisabledSuccess:m,textColorTextSuccess:x,textColorTextHoverSuccess:A,textColorTextPressedSuccess:y,textColorTextFocusSuccess:A,textColorTextDisabledSuccess:u,textColorGhostSuccess:x,textColorGhostHoverSuccess:A,textColorGhostPressedSuccess:y,textColorGhostFocusSuccess:A,textColorGhostDisabledSuccess:x,borderSuccess:`1px solid ${x}`,borderHoverSuccess:`1px solid ${A}`,borderPressedSuccess:`1px solid ${y}`,borderFocusSuccess:`1px solid ${A}`,borderDisabledSuccess:`1px solid ${x}`,rippleColorSuccess:x,colorWarning:R,colorHoverWarning:P,colorPressedWarning:D,colorFocusWarning:P,colorDisabledWarning:R,textColorWarning:m,textColorHoverWarning:m,textColorPressedWarning:m,textColorFocusWarning:m,textColorDisabledWarning:m,textColorTextWarning:R,textColorTextHoverWarning:P,textColorTextPressedWarning:D,textColorTextFocusWarning:P,textColorTextDisabledWarning:u,textColorGhostWarning:R,textColorGhostHoverWarning:P,textColorGhostPressedWarning:D,textColorGhostFocusWarning:P,textColorGhostDisabledWarning:R,borderWarning:`1px solid ${R}`,borderHoverWarning:`1px solid ${P}`,borderPressedWarning:`1px solid ${D}`,borderFocusWarning:`1px solid ${P}`,borderDisabledWarning:`1px solid ${R}`,rippleColorWarning:R,colorError:W,colorHoverError:M,colorPressedError:j,colorFocusError:M,colorDisabledError:W,textColorError:m,textColorHoverError:m,textColorPressedError:m,textColorFocusError:m,textColorDisabledError:m,textColorTextError:W,textColorTextHoverError:M,textColorTextPressedError:j,textColorTextFocusError:M,textColorTextDisabledError:u,textColorGhostError:W,textColorGhostHoverError:M,textColorGhostPressedError:j,textColorGhostFocusError:M,textColorGhostDisabledError:W,borderError:`1px solid ${W}`,borderHoverError:`1px solid ${M}`,borderPressedError:`1px solid ${j}`,borderFocusError:`1px solid ${M}`,borderDisabledError:`1px solid ${W}`,rippleColorError:W,waveOpacity:"0.6",fontWeight:ee,fontWeightStrong:ie})}const Qt={name:"Button",common:se,self:Yp},sn={name:"Button",common:ae,self(e){const t=Yp(e);return t.waveOpacity="0.8",t.colorOpacitySecondary="0.16",t.colorOpacitySecondaryHover="0.2",t.colorOpacitySecondaryPressed="0.12",t}},pw=F([oe("button",` margin: 0; font-weight: var(--n-font-weight); line-height: 1; @@ -664,7 +664,7 @@ ${t} `,[F("~",[G("icon",{margin:"var(--n-icon-margin)",marginRight:0})])]),te("block",` display: flex; width: 100%; - `),te("dashed",[G("border, state-border",{borderStyle:"dashed !important"})]),te("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),F("@keyframes button-wave-spread",{from:{boxShadow:"0 0 0.5px 0 var(--n-ripple-color)"},to:{boxShadow:"0 0 0.5px 4.5px var(--n-ripple-color)"}}),F("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]),bw=Object.assign(Object.assign({},Ee.props),{color:String,textColor:String,text:Boolean,block:Boolean,loading:Boolean,disabled:Boolean,circle:Boolean,size:String,ghost:Boolean,round:Boolean,secondary:Boolean,tertiary:Boolean,quaternary:Boolean,strong:Boolean,focusable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},tag:{type:String,default:"button"},type:{type:String,default:"default"},dashed:Boolean,renderIcon:Function,iconPlacement:{type:String,default:"left"},attrType:{type:String,default:"button"},bordered:{type:Boolean,default:!0},onClick:[Function,Array],nativeFocusBehavior:{type:Boolean,default:!Fp}}),Qa=de({name:"Button",props:bw,setup(e){const t=V(null),n=V(null),o=V(!1),r=Rt(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),i=Me(gw,{}),{mergedSizeRef:a}=Om({},{defaultSize:"medium",mergedSize:v=>{const{size:x}=e;if(x)return x;const{size:A}=i;if(A)return A;const{mergedSize:y}=v||{};return y?y.value:"medium"}}),s=z(()=>e.focusable&&!e.disabled),l=v=>{var x;s.value||v.preventDefault(),!e.nativeFocusBehavior&&(v.preventDefault(),!e.disabled&&s.value&&((x=t.value)===null||x===void 0||x.focus({preventScroll:!0})))},c=v=>{var x;if(!e.disabled&&!e.loading){const{onClick:A}=e;A&&ze(A,v),e.text||(x=n.value)===null||x===void 0||x.play()}},d=v=>{switch(v.key){case"Enter":if(!e.keyboard)return;o.value=!1}},u=v=>{switch(v.key){case"Enter":if(!e.keyboard||e.loading){v.preventDefault();return}o.value=!0}},h=()=>{o.value=!1},{inlineThemeDisabled:g,mergedClsPrefixRef:f,mergedRtlRef:b}=dt(e),p=Ee("Button","-button",pw,Qt,e,f),m=Ao("Button",b,f),k=z(()=>{const v=p.value,{common:{cubicBezierEaseInOut:x,cubicBezierEaseOut:A},self:y}=v,{rippleDuration:R,opacityDisabled:P,fontWeight:D,fontWeightStrong:W}=y,M=a.value,{dashed:j,type:ee,ghost:B,text:X,color:$,round:ie,circle:ve,textColor:ye,secondary:Ae,tertiary:De,quaternary:ut,strong:Je}=e,pt={"font-weight":Je?W:D};let _e={"--n-color":"initial","--n-color-hover":"initial","--n-color-pressed":"initial","--n-color-focus":"initial","--n-color-disabled":"initial","--n-ripple-color":"initial","--n-text-color":"initial","--n-text-color-hover":"initial","--n-text-color-pressed":"initial","--n-text-color-focus":"initial","--n-text-color-disabled":"initial"};const Oe=ee==="tertiary",Dt=ee==="default",Ie=Oe?"default":ee;if(X){const C=ye||$;_e={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":"#0000","--n-text-color":C||y[ge("textColorText",Ie)],"--n-text-color-hover":C?No(C):y[ge("textColorTextHover",Ie)],"--n-text-color-pressed":C?Ca(C):y[ge("textColorTextPressed",Ie)],"--n-text-color-focus":C?No(C):y[ge("textColorTextHover",Ie)],"--n-text-color-disabled":C||y[ge("textColorTextDisabled",Ie)]}}else if(B||j){const C=ye||$;_e={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":$||y[ge("rippleColor",Ie)],"--n-text-color":C||y[ge("textColorGhost",Ie)],"--n-text-color-hover":C?No(C):y[ge("textColorGhostHover",Ie)],"--n-text-color-pressed":C?Ca(C):y[ge("textColorGhostPressed",Ie)],"--n-text-color-focus":C?No(C):y[ge("textColorGhostHover",Ie)],"--n-text-color-disabled":C||y[ge("textColorGhostDisabled",Ie)]}}else if(Ae){const C=Dt?y.textColor:Oe?y.textColorTertiary:y[ge("color",Ie)],w=$||C,I=ee!=="default"&&ee!=="tertiary";_e={"--n-color":I?U(w,{alpha:Number(y.colorOpacitySecondary)}):y.colorSecondary,"--n-color-hover":I?U(w,{alpha:Number(y.colorOpacitySecondaryHover)}):y.colorSecondaryHover,"--n-color-pressed":I?U(w,{alpha:Number(y.colorOpacitySecondaryPressed)}):y.colorSecondaryPressed,"--n-color-focus":I?U(w,{alpha:Number(y.colorOpacitySecondaryHover)}):y.colorSecondaryHover,"--n-color-disabled":y.colorSecondary,"--n-ripple-color":"#0000","--n-text-color":w,"--n-text-color-hover":w,"--n-text-color-pressed":w,"--n-text-color-focus":w,"--n-text-color-disabled":w}}else if(De||ut){const C=Dt?y.textColor:Oe?y.textColorTertiary:y[ge("color",Ie)],w=$||C;De?(_e["--n-color"]=y.colorTertiary,_e["--n-color-hover"]=y.colorTertiaryHover,_e["--n-color-pressed"]=y.colorTertiaryPressed,_e["--n-color-focus"]=y.colorSecondaryHover,_e["--n-color-disabled"]=y.colorTertiary):(_e["--n-color"]=y.colorQuaternary,_e["--n-color-hover"]=y.colorQuaternaryHover,_e["--n-color-pressed"]=y.colorQuaternaryPressed,_e["--n-color-focus"]=y.colorQuaternaryHover,_e["--n-color-disabled"]=y.colorQuaternary),_e["--n-ripple-color"]="#0000",_e["--n-text-color"]=w,_e["--n-text-color-hover"]=w,_e["--n-text-color-pressed"]=w,_e["--n-text-color-focus"]=w,_e["--n-text-color-disabled"]=w}else _e={"--n-color":$||y[ge("color",Ie)],"--n-color-hover":$?No($):y[ge("colorHover",Ie)],"--n-color-pressed":$?Ca($):y[ge("colorPressed",Ie)],"--n-color-focus":$?No($):y[ge("colorFocus",Ie)],"--n-color-disabled":$||y[ge("colorDisabled",Ie)],"--n-ripple-color":$||y[ge("rippleColor",Ie)],"--n-text-color":ye||($?y.textColorPrimary:Oe?y.textColorTertiary:y[ge("textColor",Ie)]),"--n-text-color-hover":ye||($?y.textColorHoverPrimary:y[ge("textColorHover",Ie)]),"--n-text-color-pressed":ye||($?y.textColorPressedPrimary:y[ge("textColorPressed",Ie)]),"--n-text-color-focus":ye||($?y.textColorFocusPrimary:y[ge("textColorFocus",Ie)]),"--n-text-color-disabled":ye||($?y.textColorDisabledPrimary:y[ge("textColorDisabled",Ie)])};let bt={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};X?bt={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:bt={"--n-border":y[ge("border",Ie)],"--n-border-hover":y[ge("borderHover",Ie)],"--n-border-pressed":y[ge("borderPressed",Ie)],"--n-border-focus":y[ge("borderFocus",Ie)],"--n-border-disabled":y[ge("borderDisabled",Ie)]};const{[ge("height",M)]:Bt,[ge("fontSize",M)]:en,[ge("padding",M)]:E,[ge("paddingRound",M)]:_,[ge("iconSize",M)]:H,[ge("borderRadius",M)]:J,[ge("iconMargin",M)]:K,waveOpacity:Z}=y,le={"--n-width":ve&&!X?Bt:"initial","--n-height":X?"initial":Bt,"--n-font-size":en,"--n-padding":ve||X?"initial":ie?_:E,"--n-icon-size":H,"--n-icon-margin":K,"--n-border-radius":X?"initial":ve||ie?Bt:J};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":x,"--n-bezier-ease-out":A,"--n-ripple-duration":R,"--n-opacity-disabled":P,"--n-wave-opacity":Z},pt),_e),bt),le)}),T=g?Mt("button",z(()=>{let v="";const{dashed:x,type:A,ghost:y,text:R,color:P,round:D,circle:W,textColor:M,secondary:j,tertiary:ee,quaternary:B,strong:X}=e;x&&(v+="a"),y&&(v+="b"),R&&(v+="c"),D&&(v+="d"),W&&(v+="e"),j&&(v+="f"),ee&&(v+="g"),B&&(v+="h"),X&&(v+="i"),P&&(v+=`j${wu(P)}`),M&&(v+=`k${wu(M)}`);const{value:$}=a;return v+=`l${$[0]}`,v+=`m${A[0]}`,v}),k,e):void 0;return{selfElRef:t,waveElRef:n,mergedClsPrefix:f,mergedFocusable:s,mergedSize:a,showBorder:r,enterPressed:o,rtlEnabled:m,handleMousedown:l,handleKeydown:u,handleBlur:h,handleKeyup:d,handleClick:c,customColorCssVars:z(()=>{const{color:v}=e;if(!v)return null;const x=No(v);return{"--n-border-color":v,"--n-border-color-hover":x,"--n-border-color-pressed":Ca(v),"--n-border-color-focus":x,"--n-border-color-disabled":v}}),cssVars:g?void 0:k,themeClass:T==null?void 0:T.themeClass,onRender:T==null?void 0:T.onRender}},render(){const{mergedClsPrefix:e,tag:t,onRender:n}=this;n==null||n();const o=Pt(this.$slots.default,r=>r&&S("span",{class:`${e}-button__content`},r));return S(t,{ref:"selfElRef",class:[this.themeClass,`${e}-button`,`${e}-button--${this.type}-type`,`${e}-button--${this.mergedSize}-type`,this.rtlEnabled&&`${e}-button--rtl`,this.disabled&&`${e}-button--disabled`,this.block&&`${e}-button--block`,this.enterPressed&&`${e}-button--pressed`,!this.text&&this.dashed&&`${e}-button--dashed`,this.color&&`${e}-button--color`,this.secondary&&`${e}-button--secondary`,this.loading&&`${e}-button--loading`,this.ghost&&`${e}-button--ghost`],tabindex:this.mergedFocusable?0:-1,type:this.attrType,style:this.cssVars,disabled:this.disabled,onClick:this.handleClick,onBlur:this.handleBlur,onMousedown:this.handleMousedown,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},this.iconPlacement==="right"&&o,S(xp,{width:!0},{default:()=>Pt(this.$slots.icon,r=>(this.loading||this.renderIcon||r)&&S("span",{class:`${e}-button__icon`,style:{margin:Fl(this.$slots.default)?"0":""}},S(Rs,null,{default:()=>this.loading?S(dd,{clsPrefix:e,key:"loading",class:`${e}-icon-slot`,strokeWidth:20}):S("div",{key:"icon",class:`${e}-icon-slot`,role:"none"},this.renderIcon?this.renderIcon():r)})))}),this.iconPlacement==="left"&&o,this.text?null:S(wT,{ref:"waveElRef",clsPrefix:e}),this.showBorder?S("div",{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?S("div",{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),vw={titleFontSize:"22px"};function Jp(e){const{borderRadius:t,fontSize:n,lineHeight:o,textColor2:r,textColor1:i,textColorDisabled:a,dividerColor:s,fontWeightStrong:l,primaryColor:c,baseColor:d,hoverColor:u,cardColor:h,modalColor:g,popoverColor:f}=e;return Object.assign(Object.assign({},vw),{borderRadius:t,borderColor:ce(h,s),borderColorModal:ce(g,s),borderColorPopover:ce(f,s),textColor:r,titleFontWeight:l,titleTextColor:i,dayTextColor:a,fontSize:n,lineHeight:o,dateColorCurrent:c,dateTextColorCurrent:d,cellColorHover:ce(h,u),cellColorHoverModal:ce(g,u),cellColorHoverPopover:ce(f,u),cellColor:h,cellColorModal:g,cellColorPopover:f,barColor:c})}const yw={name:"Calendar",common:se,peers:{Button:Qt},self:Jp},Cw={name:"Calendar",common:ae,peers:{Button:sn},self:Jp};function Qp(e){const{fontSize:t,boxShadow2:n,popoverColor:o,textColor2:r,borderRadius:i,borderColor:a,heightSmall:s,heightMedium:l,heightLarge:c,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,dividerColor:g}=e;return{panelFontSize:t,boxShadow:n,color:o,textColor:r,borderRadius:i,border:`1px solid ${a}`,heightSmall:s,heightMedium:l,heightLarge:c,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,dividerColor:g}}const kw={name:"ColorPicker",common:se,peers:{Input:fn,Button:Qt},self:Qp},xw={name:"ColorPicker",common:ae,peers:{Input:Cn,Button:sn},self:Qp},Sw={paddingSmall:"12px 16px 12px",paddingMedium:"19px 24px 20px",paddingLarge:"23px 32px 24px",paddingHuge:"27px 40px 28px",titleFontSizeSmall:"16px",titleFontSizeMedium:"18px",titleFontSizeLarge:"18px",titleFontSizeHuge:"18px",closeIconSize:"18px",closeSize:"22px"};function eb(e){const{primaryColor:t,borderRadius:n,lineHeight:o,fontSize:r,cardColor:i,textColor2:a,textColor1:s,dividerColor:l,fontWeightStrong:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,closeColorHover:g,closeColorPressed:f,modalColor:b,boxShadow1:p,popoverColor:m,actionColor:k}=e;return Object.assign(Object.assign({},Sw),{lineHeight:o,color:i,colorModal:b,colorPopover:m,colorTarget:t,colorEmbedded:k,colorEmbeddedModal:k,colorEmbeddedPopover:k,textColor:a,titleTextColor:s,borderColor:l,actionColor:k,titleFontWeight:c,closeColorHover:g,closeColorPressed:f,closeBorderRadius:n,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,fontSizeSmall:r,fontSizeMedium:r,fontSizeLarge:r,fontSizeHuge:r,boxShadow:p,borderRadius:n})}const md={name:"Card",common:se,self:eb},tb={name:"Card",common:ae,self(e){const t=eb(e),{cardColor:n,modalColor:o,popoverColor:r}=e;return t.colorEmbedded=n,t.colorEmbeddedModal=o,t.colorEmbeddedPopover=r,t}},Tw=F([oe("card",` + `),te("dashed",[G("border, state-border",{borderStyle:"dashed !important"})]),te("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),F("@keyframes button-wave-spread",{from:{boxShadow:"0 0 0.5px 0 var(--n-ripple-color)"},to:{boxShadow:"0 0 0.5px 4.5px var(--n-ripple-color)"}}),F("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]),bw=Object.assign(Object.assign({},Ee.props),{color:String,textColor:String,text:Boolean,block:Boolean,loading:Boolean,disabled:Boolean,circle:Boolean,size:String,ghost:Boolean,round:Boolean,secondary:Boolean,tertiary:Boolean,quaternary:Boolean,strong:Boolean,focusable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},tag:{type:String,default:"button"},type:{type:String,default:"default"},dashed:Boolean,renderIcon:Function,iconPlacement:{type:String,default:"left"},attrType:{type:String,default:"button"},bordered:{type:Boolean,default:!0},onClick:[Function,Array],nativeFocusBehavior:{type:Boolean,default:!Fp}}),Qa=de({name:"Button",props:bw,setup(e){const t=V(null),n=V(null),o=V(!1),r=Rt(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),i=Me(gw,{}),{mergedSizeRef:a}=Om({},{defaultSize:"medium",mergedSize:v=>{const{size:x}=e;if(x)return x;const{size:A}=i;if(A)return A;const{mergedSize:y}=v||{};return y?y.value:"medium"}}),s=z(()=>e.focusable&&!e.disabled),l=v=>{var x;s.value||v.preventDefault(),!e.nativeFocusBehavior&&(v.preventDefault(),!e.disabled&&s.value&&((x=t.value)===null||x===void 0||x.focus({preventScroll:!0})))},c=v=>{var x;if(!e.disabled&&!e.loading){const{onClick:A}=e;A&&ze(A,v),e.text||(x=n.value)===null||x===void 0||x.play()}},d=v=>{switch(v.key){case"Enter":if(!e.keyboard)return;o.value=!1}},u=v=>{switch(v.key){case"Enter":if(!e.keyboard||e.loading){v.preventDefault();return}o.value=!0}},h=()=>{o.value=!1},{inlineThemeDisabled:g,mergedClsPrefixRef:f,mergedRtlRef:b}=dt(e),p=Ee("Button","-button",pw,Qt,e,f),m=Ao("Button",b,f),k=z(()=>{const v=p.value,{common:{cubicBezierEaseInOut:x,cubicBezierEaseOut:A},self:y}=v,{rippleDuration:R,opacityDisabled:P,fontWeight:D,fontWeightStrong:W}=y,M=a.value,{dashed:j,type:ee,ghost:B,text:X,color:$,round:ie,circle:ve,textColor:ye,secondary:Ae,tertiary:De,quaternary:ut,strong:Je}=e,pt={"font-weight":Je?W:D};let _e={"--n-color":"initial","--n-color-hover":"initial","--n-color-pressed":"initial","--n-color-focus":"initial","--n-color-disabled":"initial","--n-ripple-color":"initial","--n-text-color":"initial","--n-text-color-hover":"initial","--n-text-color-pressed":"initial","--n-text-color-focus":"initial","--n-text-color-disabled":"initial"};const Oe=ee==="tertiary",Dt=ee==="default",Ie=Oe?"default":ee;if(X){const C=ye||$;_e={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":"#0000","--n-text-color":C||y[ge("textColorText",Ie)],"--n-text-color-hover":C?No(C):y[ge("textColorTextHover",Ie)],"--n-text-color-pressed":C?Ca(C):y[ge("textColorTextPressed",Ie)],"--n-text-color-focus":C?No(C):y[ge("textColorTextHover",Ie)],"--n-text-color-disabled":C||y[ge("textColorTextDisabled",Ie)]}}else if(B||j){const C=ye||$;_e={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":$||y[ge("rippleColor",Ie)],"--n-text-color":C||y[ge("textColorGhost",Ie)],"--n-text-color-hover":C?No(C):y[ge("textColorGhostHover",Ie)],"--n-text-color-pressed":C?Ca(C):y[ge("textColorGhostPressed",Ie)],"--n-text-color-focus":C?No(C):y[ge("textColorGhostHover",Ie)],"--n-text-color-disabled":C||y[ge("textColorGhostDisabled",Ie)]}}else if(Ae){const C=Dt?y.textColor:Oe?y.textColorTertiary:y[ge("color",Ie)],w=$||C,I=ee!=="default"&&ee!=="tertiary";_e={"--n-color":I?U(w,{alpha:Number(y.colorOpacitySecondary)}):y.colorSecondary,"--n-color-hover":I?U(w,{alpha:Number(y.colorOpacitySecondaryHover)}):y.colorSecondaryHover,"--n-color-pressed":I?U(w,{alpha:Number(y.colorOpacitySecondaryPressed)}):y.colorSecondaryPressed,"--n-color-focus":I?U(w,{alpha:Number(y.colorOpacitySecondaryHover)}):y.colorSecondaryHover,"--n-color-disabled":y.colorSecondary,"--n-ripple-color":"#0000","--n-text-color":w,"--n-text-color-hover":w,"--n-text-color-pressed":w,"--n-text-color-focus":w,"--n-text-color-disabled":w}}else if(De||ut){const C=Dt?y.textColor:Oe?y.textColorTertiary:y[ge("color",Ie)],w=$||C;De?(_e["--n-color"]=y.colorTertiary,_e["--n-color-hover"]=y.colorTertiaryHover,_e["--n-color-pressed"]=y.colorTertiaryPressed,_e["--n-color-focus"]=y.colorSecondaryHover,_e["--n-color-disabled"]=y.colorTertiary):(_e["--n-color"]=y.colorQuaternary,_e["--n-color-hover"]=y.colorQuaternaryHover,_e["--n-color-pressed"]=y.colorQuaternaryPressed,_e["--n-color-focus"]=y.colorQuaternaryHover,_e["--n-color-disabled"]=y.colorQuaternary),_e["--n-ripple-color"]="#0000",_e["--n-text-color"]=w,_e["--n-text-color-hover"]=w,_e["--n-text-color-pressed"]=w,_e["--n-text-color-focus"]=w,_e["--n-text-color-disabled"]=w}else _e={"--n-color":$||y[ge("color",Ie)],"--n-color-hover":$?No($):y[ge("colorHover",Ie)],"--n-color-pressed":$?Ca($):y[ge("colorPressed",Ie)],"--n-color-focus":$?No($):y[ge("colorFocus",Ie)],"--n-color-disabled":$||y[ge("colorDisabled",Ie)],"--n-ripple-color":$||y[ge("rippleColor",Ie)],"--n-text-color":ye||($?y.textColorPrimary:Oe?y.textColorTertiary:y[ge("textColor",Ie)]),"--n-text-color-hover":ye||($?y.textColorHoverPrimary:y[ge("textColorHover",Ie)]),"--n-text-color-pressed":ye||($?y.textColorPressedPrimary:y[ge("textColorPressed",Ie)]),"--n-text-color-focus":ye||($?y.textColorFocusPrimary:y[ge("textColorFocus",Ie)]),"--n-text-color-disabled":ye||($?y.textColorDisabledPrimary:y[ge("textColorDisabled",Ie)])};let bt={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};X?bt={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:bt={"--n-border":y[ge("border",Ie)],"--n-border-hover":y[ge("borderHover",Ie)],"--n-border-pressed":y[ge("borderPressed",Ie)],"--n-border-focus":y[ge("borderFocus",Ie)],"--n-border-disabled":y[ge("borderDisabled",Ie)]};const{[ge("height",M)]:Bt,[ge("fontSize",M)]:en,[ge("padding",M)]:E,[ge("paddingRound",M)]:_,[ge("iconSize",M)]:H,[ge("borderRadius",M)]:J,[ge("iconMargin",M)]:K,waveOpacity:Z}=y,le={"--n-width":ve&&!X?Bt:"initial","--n-height":X?"initial":Bt,"--n-font-size":en,"--n-padding":ve||X?"initial":ie?_:E,"--n-icon-size":H,"--n-icon-margin":K,"--n-border-radius":X?"initial":ve||ie?Bt:J};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":x,"--n-bezier-ease-out":A,"--n-ripple-duration":R,"--n-opacity-disabled":P,"--n-wave-opacity":Z},pt),_e),bt),le)}),T=g?Mt("button",z(()=>{let v="";const{dashed:x,type:A,ghost:y,text:R,color:P,round:D,circle:W,textColor:M,secondary:j,tertiary:ee,quaternary:B,strong:X}=e;x&&(v+="a"),y&&(v+="b"),R&&(v+="c"),D&&(v+="d"),W&&(v+="e"),j&&(v+="f"),ee&&(v+="g"),B&&(v+="h"),X&&(v+="i"),P&&(v+=`j${wu(P)}`),M&&(v+=`k${wu(M)}`);const{value:$}=a;return v+=`l${$[0]}`,v+=`m${A[0]}`,v}),k,e):void 0;return{selfElRef:t,waveElRef:n,mergedClsPrefix:f,mergedFocusable:s,mergedSize:a,showBorder:r,enterPressed:o,rtlEnabled:m,handleMousedown:l,handleKeydown:u,handleBlur:h,handleKeyup:d,handleClick:c,customColorCssVars:z(()=>{const{color:v}=e;if(!v)return null;const x=No(v);return{"--n-border-color":v,"--n-border-color-hover":x,"--n-border-color-pressed":Ca(v),"--n-border-color-focus":x,"--n-border-color-disabled":v}}),cssVars:g?void 0:k,themeClass:T==null?void 0:T.themeClass,onRender:T==null?void 0:T.onRender}},render(){const{mergedClsPrefix:e,tag:t,onRender:n}=this;n==null||n();const o=Pt(this.$slots.default,r=>r&&S("span",{class:`${e}-button__content`},r));return S(t,{ref:"selfElRef",class:[this.themeClass,`${e}-button`,`${e}-button--${this.type}-type`,`${e}-button--${this.mergedSize}-type`,this.rtlEnabled&&`${e}-button--rtl`,this.disabled&&`${e}-button--disabled`,this.block&&`${e}-button--block`,this.enterPressed&&`${e}-button--pressed`,!this.text&&this.dashed&&`${e}-button--dashed`,this.color&&`${e}-button--color`,this.secondary&&`${e}-button--secondary`,this.loading&&`${e}-button--loading`,this.ghost&&`${e}-button--ghost`],tabindex:this.mergedFocusable?0:-1,type:this.attrType,style:this.cssVars,disabled:this.disabled,onClick:this.handleClick,onBlur:this.handleBlur,onMousedown:this.handleMousedown,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},this.iconPlacement==="right"&&o,S(xp,{width:!0},{default:()=>Pt(this.$slots.icon,r=>(this.loading||this.renderIcon||r)&&S("span",{class:`${e}-button__icon`,style:{margin:Fl(this.$slots.default)?"0":""}},S(Rs,null,{default:()=>this.loading?S(dd,{clsPrefix:e,key:"loading",class:`${e}-icon-slot`,strokeWidth:20}):S("div",{key:"icon",class:`${e}-icon-slot`,role:"none"},this.renderIcon?this.renderIcon():r)})))}),this.iconPlacement==="left"&&o,this.text?null:S(wT,{ref:"waveElRef",clsPrefix:e}),this.showBorder?S("div",{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?S("div",{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),vw={titleFontSize:"22px"};function Jp(e){const{borderRadius:t,fontSize:n,lineHeight:o,textColor2:r,textColor1:i,textColorDisabled:a,dividerColor:s,fontWeightStrong:l,primaryColor:c,baseColor:d,hoverColor:u,cardColor:h,modalColor:g,popoverColor:f}=e;return Object.assign(Object.assign({},vw),{borderRadius:t,borderColor:ce(h,s),borderColorModal:ce(g,s),borderColorPopover:ce(f,s),textColor:r,titleFontWeight:l,titleTextColor:i,dayTextColor:a,fontSize:n,lineHeight:o,dateColorCurrent:c,dateTextColorCurrent:d,cellColorHover:ce(h,u),cellColorHoverModal:ce(g,u),cellColorHoverPopover:ce(f,u),cellColor:h,cellColorModal:g,cellColorPopover:f,barColor:c})}const yw={name:"Calendar",common:se,peers:{Button:Qt},self:Jp},Cw={name:"Calendar",common:ae,peers:{Button:sn},self:Jp};function Qp(e){const{fontSize:t,boxShadow2:n,popoverColor:o,textColor2:r,borderRadius:i,borderColor:a,heightSmall:s,heightMedium:l,heightLarge:c,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,dividerColor:g}=e;return{panelFontSize:t,boxShadow:n,color:o,textColor:r,borderRadius:i,border:`1px solid ${a}`,heightSmall:s,heightMedium:l,heightLarge:c,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,dividerColor:g}}const kw={name:"ColorPicker",common:se,peers:{Input:fn,Button:Qt},self:Qp},xw={name:"ColorPicker",common:ae,peers:{Input:kn,Button:sn},self:Qp},Sw={paddingSmall:"12px 16px 12px",paddingMedium:"19px 24px 20px",paddingLarge:"23px 32px 24px",paddingHuge:"27px 40px 28px",titleFontSizeSmall:"16px",titleFontSizeMedium:"18px",titleFontSizeLarge:"18px",titleFontSizeHuge:"18px",closeIconSize:"18px",closeSize:"22px"};function eb(e){const{primaryColor:t,borderRadius:n,lineHeight:o,fontSize:r,cardColor:i,textColor2:a,textColor1:s,dividerColor:l,fontWeightStrong:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,closeColorHover:g,closeColorPressed:f,modalColor:b,boxShadow1:p,popoverColor:m,actionColor:k}=e;return Object.assign(Object.assign({},Sw),{lineHeight:o,color:i,colorModal:b,colorPopover:m,colorTarget:t,colorEmbedded:k,colorEmbeddedModal:k,colorEmbeddedPopover:k,textColor:a,titleTextColor:s,borderColor:l,actionColor:k,titleFontWeight:c,closeColorHover:g,closeColorPressed:f,closeBorderRadius:n,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,fontSizeSmall:r,fontSizeMedium:r,fontSizeLarge:r,fontSizeHuge:r,boxShadow:p,borderRadius:n})}const md={name:"Card",common:se,self:eb},tb={name:"Card",common:ae,self(e){const t=eb(e),{cardColor:n,modalColor:o,popoverColor:r}=e;return t.colorEmbedded=n,t.colorEmbeddedModal=o,t.colorEmbeddedPopover=r,t}},Tw=F([oe("card",` font-size: var(--n-font-size); line-height: var(--n-line-height); display: flex; @@ -750,7 +750,7 @@ ${t} background: var(--n-color-popover); `,[te("embedded",` background-color: var(--n-color-embedded-popover); - `)]))]),pd={title:[String,Function],contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],headerExtraClass:String,headerExtraStyle:[Object,String],footerClass:String,footerStyle:[Object,String],embedded:Boolean,segmented:{type:[Boolean,Object],default:!1},size:{type:String,default:"medium"},bordered:{type:Boolean,default:!0},closable:Boolean,hoverable:Boolean,role:String,onClose:[Function,Array],tag:{type:String,default:"div"},cover:Function,content:[String,Function],footer:Function,action:Function,headerExtra:Function},ww=ys(pd),_w=Object.assign(Object.assign({},Ee.props),pd),Pw=de({name:"Card",props:_w,setup(e){const t=()=>{const{onClose:c}=e;c&&ze(c)},{inlineThemeDisabled:n,mergedClsPrefixRef:o,mergedRtlRef:r}=dt(e),i=Ee("Card","-card",Tw,md,e,o),a=Ao("Card",r,o),s=z(()=>{const{size:c}=e,{self:{color:d,colorModal:u,colorTarget:h,textColor:g,titleTextColor:f,titleFontWeight:b,borderColor:p,actionColor:m,borderRadius:k,lineHeight:T,closeIconColor:v,closeIconColorHover:x,closeIconColorPressed:A,closeColorHover:y,closeColorPressed:R,closeBorderRadius:P,closeIconSize:D,closeSize:W,boxShadow:M,colorPopover:j,colorEmbedded:ee,colorEmbeddedModal:B,colorEmbeddedPopover:X,[ge("padding",c)]:$,[ge("fontSize",c)]:ie,[ge("titleFontSize",c)]:ve},common:{cubicBezierEaseInOut:ye}}=i.value,{top:Ae,left:De,bottom:ut}=Wi($);return{"--n-bezier":ye,"--n-border-radius":k,"--n-color":d,"--n-color-modal":u,"--n-color-popover":j,"--n-color-embedded":ee,"--n-color-embedded-modal":B,"--n-color-embedded-popover":X,"--n-color-target":h,"--n-text-color":g,"--n-line-height":T,"--n-action-color":m,"--n-title-text-color":f,"--n-title-font-weight":b,"--n-close-icon-color":v,"--n-close-icon-color-hover":x,"--n-close-icon-color-pressed":A,"--n-close-color-hover":y,"--n-close-color-pressed":R,"--n-border-color":p,"--n-box-shadow":M,"--n-padding-top":Ae,"--n-padding-bottom":ut,"--n-padding-left":De,"--n-font-size":ie,"--n-title-font-size":ve,"--n-close-size":W,"--n-close-icon-size":D,"--n-close-border-radius":P}}),l=n?Mt("card",z(()=>e.size[0]),s,e):void 0;return{rtlEnabled:a,mergedClsPrefix:o,mergedTheme:i,handleCloseClick:t,cssVars:n?void 0:s,themeClass:l==null?void 0:l.themeClass,onRender:l==null?void 0:l.onRender}},render(){const{segmented:e,bordered:t,hoverable:n,mergedClsPrefix:o,rtlEnabled:r,onRender:i,embedded:a,tag:s,$slots:l}=this;return i==null||i(),S(s,{class:[`${o}-card`,this.themeClass,a&&`${o}-card--embedded`,{[`${o}-card--rtl`]:r,[`${o}-card--content${typeof e!="boolean"&&e.content==="soft"?"-soft":""}-segmented`]:e===!0||e!==!1&&e.content,[`${o}-card--footer${typeof e!="boolean"&&e.footer==="soft"?"-soft":""}-segmented`]:e===!0||e!==!1&&e.footer,[`${o}-card--action-segmented`]:e===!0||e!==!1&&e.action,[`${o}-card--bordered`]:t,[`${o}-card--hoverable`]:n}],style:this.cssVars,role:this.role},Pt(l.cover,c=>{const d=this.cover?xn([this.cover()]):c;return d&&S("div",{class:`${o}-card-cover`,role:"none"},d)}),Pt(l.header,c=>{const{title:d}=this,u=d?xn(typeof d=="function"?[d()]:[d]):c;return u||this.closable?S("div",{class:[`${o}-card-header`,this.headerClass],style:this.headerStyle,role:"heading"},S("div",{class:`${o}-card-header__main`,role:"heading"},u),Pt(l["header-extra"],h=>{const g=this.headerExtra?xn([this.headerExtra()]):h;return g&&S("div",{class:[`${o}-card-header__extra`,this.headerExtraClass],style:this.headerExtraStyle},g)}),this.closable&&S(Es,{clsPrefix:o,class:`${o}-card-header__close`,onClick:this.handleCloseClick,absolute:!0})):null}),Pt(l.default,c=>{const{content:d}=this,u=d?xn(typeof d=="function"?[d()]:[d]):c;return u&&S("div",{class:[`${o}-card__content`,this.contentClass],style:this.contentStyle,role:"none"},u)}),Pt(l.footer,c=>{const d=this.footer?xn([this.footer()]):c;return d&&S("div",{class:[`${o}-card__footer`,this.footerClass],style:this.footerStyle,role:"none"},d)}),Pt(l.action,c=>{const d=this.action?xn([this.action()]):c;return d&&S("div",{class:`${o}-card__action`,role:"none"},d)}))}});function nb(){return{dotSize:"8px",dotColor:"rgba(255, 255, 255, .3)",dotColorActive:"rgba(255, 255, 255, 1)",dotColorFocus:"rgba(255, 255, 255, .5)",dotLineWidth:"16px",dotLineWidthActive:"24px",arrowColor:"#eee"}}const Aw={name:"Carousel",common:se,self:nb},Rw={name:"Carousel",common:ae,self:nb},Ew={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"};function ob(e){const{baseColor:t,inputColorDisabled:n,cardColor:o,modalColor:r,popoverColor:i,textColorDisabled:a,borderColor:s,primaryColor:l,textColor2:c,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,borderRadiusSmall:g,lineHeight:f}=e;return Object.assign(Object.assign({},Ew),{labelLineHeight:f,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,borderRadius:g,color:t,colorChecked:l,colorDisabled:n,colorDisabledChecked:n,colorTableHeader:o,colorTableHeaderModal:r,colorTableHeaderPopover:i,checkMarkColor:t,checkMarkColorDisabled:a,checkMarkColorDisabledChecked:a,border:`1px solid ${s}`,borderDisabled:`1px solid ${s}`,borderDisabledChecked:`1px solid ${s}`,borderChecked:`1px solid ${l}`,borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 0 2px ${U(l,{alpha:.3})}`,textColor:c,textColorDisabled:a})}const Gr={name:"Checkbox",common:se,self:ob},Vr={name:"Checkbox",common:ae,self(e){const{cardColor:t}=e,n=ob(e);return n.color="#0000",n.checkMarkColor=t,n}};function rb(e){const{borderRadius:t,boxShadow2:n,popoverColor:o,textColor2:r,textColor3:i,primaryColor:a,textColorDisabled:s,dividerColor:l,hoverColor:c,fontSizeMedium:d,heightMedium:u}=e;return{menuBorderRadius:t,menuColor:o,menuBoxShadow:n,menuDividerColor:l,menuHeight:"calc(var(--n-option-height) * 6.6)",optionArrowColor:i,optionHeight:u,optionFontSize:d,optionColorHover:c,optionTextColor:r,optionTextColorActive:a,optionTextColorDisabled:s,optionCheckMarkColor:a,loadingColor:a,columnWidth:"180px"}}const Iw={name:"Cascader",common:se,peers:{InternalSelectMenu:qi,InternalSelection:fd,Scrollbar:Jt,Checkbox:Gr,Empty:to},self:rb},Mw={name:"Cascader",common:ae,peers:{InternalSelectMenu:Xi,InternalSelection:gd,Scrollbar:an,Checkbox:Vr,Empty:to},self:rb},ib={name:"Code",common:ae,self(e){const{textColor2:t,fontSize:n,fontWeightStrong:o,textColor3:r}=e;return{textColor:t,fontSize:n,fontWeightStrong:o,"mono-3":"#5c6370","hue-1":"#56b6c2","hue-2":"#61aeee","hue-3":"#c678dd","hue-4":"#98c379","hue-5":"#e06c75","hue-5-2":"#be5046","hue-6":"#d19a66","hue-6-2":"#e6c07b",lineNumberTextColor:r}}};function Dw(e){const{textColor2:t,fontSize:n,fontWeightStrong:o,textColor3:r}=e;return{textColor:t,fontSize:n,fontWeightStrong:o,"mono-3":"#a0a1a7","hue-1":"#0184bb","hue-2":"#4078f2","hue-3":"#a626a4","hue-4":"#50a14f","hue-5":"#e45649","hue-5-2":"#c91243","hue-6":"#986801","hue-6-2":"#c18401",lineNumberTextColor:r}}const ab={name:"Code",common:se,self:Dw};function sb(e){const{fontWeight:t,textColor1:n,textColor2:o,textColorDisabled:r,dividerColor:i,fontSize:a}=e;return{titleFontSize:a,titleFontWeight:t,dividerColor:i,titleTextColor:n,titleTextColorDisabled:r,fontSize:a,textColor:o,arrowColor:o,arrowColorDisabled:r,itemMargin:"16px 0 0 0",titlePadding:"16px 0 0 0"}}const Ow={name:"Collapse",common:se,self:sb},Lw={name:"Collapse",common:ae,self:sb};function lb(e){const{cubicBezierEaseInOut:t}=e;return{bezier:t}}const Hw={name:"CollapseTransition",common:se,self:lb},$w={name:"CollapseTransition",common:ae,self:lb},Bw={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:{type:String,default:Hi},locale:Object,dateLocale:Object,namespace:String,rtl:Array,tag:{type:String,default:"div"},hljs:Object,katex:Object,theme:Object,themeOverrides:Object,componentOptions:Object,icons:Object,breakpoints:Object,preflightStyleDisabled:Boolean,inlineThemeDisabled:{type:Boolean,default:void 0},as:{type:String,validator:()=>(Dr("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},Nw=de({name:"ConfigProvider",alias:["App"],props:Bw,setup(e){const t=Me(Yn,null),n=z(()=>{const{theme:f}=e;if(f===null)return;const b=t==null?void 0:t.mergedThemeRef.value;return f===void 0?b:b===void 0?f:Object.assign({},b,f)}),o=z(()=>{const{themeOverrides:f}=e;if(f!==null){if(f===void 0)return t==null?void 0:t.mergedThemeOverridesRef.value;{const b=t==null?void 0:t.mergedThemeOverridesRef.value;return b===void 0?f:ci({},b,f)}}}),r=Rt(()=>{const{namespace:f}=e;return f===void 0?t==null?void 0:t.mergedNamespaceRef.value:f}),i=Rt(()=>{const{bordered:f}=e;return f===void 0?t==null?void 0:t.mergedBorderedRef.value:f}),a=z(()=>{const{icons:f}=e;return f===void 0?t==null?void 0:t.mergedIconsRef.value:f}),s=z(()=>{const{componentOptions:f}=e;return f!==void 0?f:t==null?void 0:t.mergedComponentPropsRef.value}),l=z(()=>{const{clsPrefix:f}=e;return f!==void 0?f:t?t.mergedClsPrefixRef.value:Hi}),c=z(()=>{var f;const{rtl:b}=e;if(b===void 0)return t==null?void 0:t.mergedRtlRef.value;const p={};for(const m of b)p[m.name]=xi(m),(f=m.peers)===null||f===void 0||f.forEach(k=>{k.name in p||(p[k.name]=xi(k))});return p}),d=z(()=>e.breakpoints||(t==null?void 0:t.mergedBreakpointsRef.value)),u=e.inlineThemeDisabled||(t==null?void 0:t.inlineThemeDisabled),h=e.preflightStyleDisabled||(t==null?void 0:t.preflightStyleDisabled),g=z(()=>{const{value:f}=n,{value:b}=o,p=b&&Object.keys(b).length!==0,m=f==null?void 0:f.name;return m?p?`${m}-${Ei(JSON.stringify(o.value))}`:m:p?Ei(JSON.stringify(o.value)):""});return We(Yn,{mergedThemeHashRef:g,mergedBreakpointsRef:d,mergedRtlRef:c,mergedIconsRef:a,mergedComponentPropsRef:s,mergedBorderedRef:i,mergedNamespaceRef:r,mergedClsPrefixRef:l,mergedLocaleRef:z(()=>{const{locale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedLocaleRef.value:f}),mergedDateLocaleRef:z(()=>{const{dateLocale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedDateLocaleRef.value:f}),mergedHljsRef:z(()=>{const{hljs:f}=e;return f===void 0?t==null?void 0:t.mergedHljsRef.value:f}),mergedKatexRef:z(()=>{const{katex:f}=e;return f===void 0?t==null?void 0:t.mergedKatexRef.value:f}),mergedThemeRef:n,mergedThemeOverridesRef:o,inlineThemeDisabled:u||!1,preflightStyleDisabled:h||!1}),{mergedClsPrefix:l,mergedBordered:i,mergedNamespace:r,mergedTheme:n,mergedThemeOverrides:o}},render(){var e,t,n,o;return this.abstract?(o=(n=this.$slots).default)===null||o===void 0?void 0:o.call(n):S(this.as||this.tag,{class:`${this.mergedClsPrefix||Hi}-config-provider`},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),cb={name:"Popselect",common:ae,peers:{Popover:ur,InternalSelectMenu:Xi}};function zw(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const db={name:"Popselect",common:se,peers:{Popover:Ro,InternalSelectMenu:qi},self:zw};function ub(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const hb={name:"Select",common:se,peers:{InternalSelection:fd,InternalSelectMenu:qi},self:ub},fb={name:"Select",common:ae,peers:{InternalSelection:gd,InternalSelectMenu:Xi},self:ub},Fw={itemPaddingSmall:"0 4px",itemMarginSmall:"0 0 0 8px",itemMarginSmallRtl:"0 8px 0 0",itemPaddingMedium:"0 4px",itemMarginMedium:"0 0 0 8px",itemMarginMediumRtl:"0 8px 0 0",itemPaddingLarge:"0 4px",itemMarginLarge:"0 0 0 8px",itemMarginLargeRtl:"0 8px 0 0",buttonIconSizeSmall:"14px",buttonIconSizeMedium:"16px",buttonIconSizeLarge:"18px",inputWidthSmall:"60px",selectWidthSmall:"unset",inputMarginSmall:"0 0 0 8px",inputMarginSmallRtl:"0 8px 0 0",selectMarginSmall:"0 0 0 8px",prefixMarginSmall:"0 8px 0 0",suffixMarginSmall:"0 0 0 8px",inputWidthMedium:"60px",selectWidthMedium:"unset",inputMarginMedium:"0 0 0 8px",inputMarginMediumRtl:"0 8px 0 0",selectMarginMedium:"0 0 0 8px",prefixMarginMedium:"0 8px 0 0",suffixMarginMedium:"0 0 0 8px",inputWidthLarge:"60px",selectWidthLarge:"unset",inputMarginLarge:"0 0 0 8px",inputMarginLargeRtl:"0 8px 0 0",selectMarginLarge:"0 0 0 8px",prefixMarginLarge:"0 8px 0 0",suffixMarginLarge:"0 0 0 8px"};function gb(e){const{textColor2:t,primaryColor:n,primaryColorHover:o,primaryColorPressed:r,inputColorDisabled:i,textColorDisabled:a,borderColor:s,borderRadius:l,fontSizeTiny:c,fontSizeSmall:d,fontSizeMedium:u,heightTiny:h,heightSmall:g,heightMedium:f}=e;return Object.assign(Object.assign({},Fw),{buttonColor:"#0000",buttonColorHover:"#0000",buttonColorPressed:"#0000",buttonBorder:`1px solid ${s}`,buttonBorderHover:`1px solid ${s}`,buttonBorderPressed:`1px solid ${s}`,buttonIconColor:t,buttonIconColorHover:t,buttonIconColorPressed:t,itemTextColor:t,itemTextColorHover:o,itemTextColorPressed:r,itemTextColorActive:n,itemTextColorDisabled:a,itemColor:"#0000",itemColorHover:"#0000",itemColorPressed:"#0000",itemColorActive:"#0000",itemColorActiveHover:"#0000",itemColorDisabled:i,itemBorder:"1px solid #0000",itemBorderHover:"1px solid #0000",itemBorderPressed:"1px solid #0000",itemBorderActive:`1px solid ${n}`,itemBorderDisabled:`1px solid ${s}`,itemBorderRadius:l,itemSizeSmall:h,itemSizeMedium:g,itemSizeLarge:f,itemFontSizeSmall:c,itemFontSizeMedium:d,itemFontSizeLarge:u,jumperFontSizeSmall:c,jumperFontSizeMedium:d,jumperFontSizeLarge:u,jumperTextColor:t,jumperTextColorDisabled:a})}const mb={name:"Pagination",common:se,peers:{Select:hb,Input:fn,Popselect:db},self:gb},pb={name:"Pagination",common:ae,peers:{Select:fb,Input:Cn,Popselect:cb},self(e){const{primaryColor:t,opacity3:n}=e,o=U(t,{alpha:Number(n)}),r=gb(e);return r.itemBorderActive=`1px solid ${o}`,r.itemBorderDisabled="1px solid #0000",r}},bb={padding:"8px 14px"},Ds={name:"Tooltip",common:ae,peers:{Popover:ur},self(e){const{borderRadius:t,boxShadow2:n,popoverColor:o,textColor2:r}=e;return Object.assign(Object.assign({},bb),{borderRadius:t,boxShadow:n,color:o,textColor:r})}};function Ww(e){const{borderRadius:t,boxShadow2:n,baseColor:o}=e;return Object.assign(Object.assign({},bb),{borderRadius:t,boxShadow:n,color:ce(o,"rgba(0, 0, 0, .85)"),textColor:o})}const Zi={name:"Tooltip",common:se,peers:{Popover:Ro},self:Ww},vb={name:"Ellipsis",common:ae,peers:{Tooltip:Ds}},bd={name:"Ellipsis",common:se,peers:{Tooltip:Zi}},yb={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"},Cb={name:"Radio",common:ae,self(e){const{borderColor:t,primaryColor:n,baseColor:o,textColorDisabled:r,inputColorDisabled:i,textColor2:a,opacityDisabled:s,borderRadius:l,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,heightSmall:h,heightMedium:g,heightLarge:f,lineHeight:b}=e;return Object.assign(Object.assign({},yb),{labelLineHeight:b,buttonHeightSmall:h,buttonHeightMedium:g,buttonHeightLarge:f,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,boxShadow:`inset 0 0 0 1px ${t}`,boxShadowActive:`inset 0 0 0 1px ${n}`,boxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.3})}`,boxShadowHover:`inset 0 0 0 1px ${n}`,boxShadowDisabled:`inset 0 0 0 1px ${t}`,color:"#0000",colorDisabled:i,colorActive:"#0000",textColor:a,textColorDisabled:r,dotColorActive:n,dotColorDisabled:t,buttonBorderColor:t,buttonBorderColorActive:n,buttonBorderColorHover:n,buttonColor:"#0000",buttonColorActive:n,buttonTextColor:a,buttonTextColorActive:o,buttonTextColorHover:n,opacityDisabled:s,buttonBoxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${n}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})}};function jw(e){const{borderColor:t,primaryColor:n,baseColor:o,textColorDisabled:r,inputColorDisabled:i,textColor2:a,opacityDisabled:s,borderRadius:l,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,heightSmall:h,heightMedium:g,heightLarge:f,lineHeight:b}=e;return Object.assign(Object.assign({},yb),{labelLineHeight:b,buttonHeightSmall:h,buttonHeightMedium:g,buttonHeightLarge:f,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,boxShadow:`inset 0 0 0 1px ${t}`,boxShadowActive:`inset 0 0 0 1px ${n}`,boxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.2})}`,boxShadowHover:`inset 0 0 0 1px ${n}`,boxShadowDisabled:`inset 0 0 0 1px ${t}`,color:o,colorDisabled:i,colorActive:"#0000",textColor:a,textColorDisabled:r,dotColorActive:n,dotColorDisabled:t,buttonBorderColor:t,buttonBorderColorActive:n,buttonBorderColorHover:t,buttonColor:o,buttonColorActive:o,buttonTextColor:a,buttonTextColorActive:n,buttonTextColorHover:n,opacityDisabled:s,buttonBoxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})}const kb={name:"Radio",common:se,self:jw},Gw={padding:"4px 0",optionIconSizeSmall:"14px",optionIconSizeMedium:"16px",optionIconSizeLarge:"16px",optionIconSizeHuge:"18px",optionSuffixWidthSmall:"14px",optionSuffixWidthMedium:"14px",optionSuffixWidthLarge:"16px",optionSuffixWidthHuge:"16px",optionIconSuffixWidthSmall:"32px",optionIconSuffixWidthMedium:"32px",optionIconSuffixWidthLarge:"36px",optionIconSuffixWidthHuge:"36px",optionPrefixWidthSmall:"14px",optionPrefixWidthMedium:"14px",optionPrefixWidthLarge:"16px",optionPrefixWidthHuge:"16px",optionIconPrefixWidthSmall:"36px",optionIconPrefixWidthMedium:"36px",optionIconPrefixWidthLarge:"40px",optionIconPrefixWidthHuge:"40px"};function xb(e){const{primaryColor:t,textColor2:n,dividerColor:o,hoverColor:r,popoverColor:i,invertedColor:a,borderRadius:s,fontSizeSmall:l,fontSizeMedium:c,fontSizeLarge:d,fontSizeHuge:u,heightSmall:h,heightMedium:g,heightLarge:f,heightHuge:b,textColor3:p,opacityDisabled:m}=e;return Object.assign(Object.assign({},Gw),{optionHeightSmall:h,optionHeightMedium:g,optionHeightLarge:f,optionHeightHuge:b,borderRadius:s,fontSizeSmall:l,fontSizeMedium:c,fontSizeLarge:d,fontSizeHuge:u,optionTextColor:n,optionTextColorHover:n,optionTextColorActive:t,optionTextColorChildActive:t,color:i,dividerColor:o,suffixColor:n,prefixColor:n,optionColorHover:r,optionColorActive:U(t,{alpha:.1}),groupHeaderTextColor:p,optionTextColorInverted:"#BBB",optionTextColorHoverInverted:"#FFF",optionTextColorActiveInverted:"#FFF",optionTextColorChildActiveInverted:"#FFF",colorInverted:a,dividerColorInverted:"#BBB",suffixColorInverted:"#BBB",prefixColorInverted:"#BBB",optionColorHoverInverted:t,optionColorActiveInverted:t,groupHeaderTextColorInverted:"#AAA",optionOpacityDisabled:m})}const Os={name:"Dropdown",common:se,peers:{Popover:Ro},self:xb},vd={name:"Dropdown",common:ae,peers:{Popover:ur},self(e){const{primaryColorSuppl:t,primaryColor:n,popoverColor:o}=e,r=xb(e);return r.colorInverted=o,r.optionColorActive=U(n,{alpha:.15}),r.optionColorActiveInverted=t,r.optionColorHoverInverted=t,r}},Vw={thPaddingSmall:"8px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"8px",tdPaddingMedium:"12px",tdPaddingLarge:"12px",sorterSize:"15px",resizableContainerSize:"8px",resizableSize:"2px",filterSize:"15px",paginationMargin:"12px 0 0 0",emptyPadding:"48px 0",actionPadding:"8px 12px",actionButtonMargin:"0 8px 0 0"};function Sb(e){const{cardColor:t,modalColor:n,popoverColor:o,textColor2:r,textColor1:i,tableHeaderColor:a,tableColorHover:s,iconColor:l,primaryColor:c,fontWeightStrong:d,borderRadius:u,lineHeight:h,fontSizeSmall:g,fontSizeMedium:f,fontSizeLarge:b,dividerColor:p,heightSmall:m,opacityDisabled:k,tableColorStriped:T}=e;return Object.assign(Object.assign({},Vw),{actionDividerColor:p,lineHeight:h,borderRadius:u,fontSizeSmall:g,fontSizeMedium:f,fontSizeLarge:b,borderColor:ce(t,p),tdColorHover:ce(t,s),tdColorSorting:ce(t,s),tdColorStriped:ce(t,T),thColor:ce(t,a),thColorHover:ce(ce(t,a),s),thColorSorting:ce(ce(t,a),s),tdColor:t,tdTextColor:r,thTextColor:i,thFontWeight:d,thButtonColorHover:s,thIconColor:l,thIconColorActive:c,borderColorModal:ce(n,p),tdColorHoverModal:ce(n,s),tdColorSortingModal:ce(n,s),tdColorStripedModal:ce(n,T),thColorModal:ce(n,a),thColorHoverModal:ce(ce(n,a),s),thColorSortingModal:ce(ce(n,a),s),tdColorModal:n,borderColorPopover:ce(o,p),tdColorHoverPopover:ce(o,s),tdColorSortingPopover:ce(o,s),tdColorStripedPopover:ce(o,T),thColorPopover:ce(o,a),thColorHoverPopover:ce(ce(o,a),s),thColorSortingPopover:ce(ce(o,a),s),tdColorPopover:o,boxShadowBefore:"inset -12px 0 8px -12px rgba(0, 0, 0, .18)",boxShadowAfter:"inset 12px 0 8px -12px rgba(0, 0, 0, .18)",loadingColor:c,loadingSize:m,opacityLoading:k})}const Uw={name:"DataTable",common:se,peers:{Button:Qt,Checkbox:Gr,Radio:kb,Pagination:mb,Scrollbar:Jt,Empty:to,Popover:Ro,Ellipsis:bd,Dropdown:Os},self:Sb},Kw={name:"DataTable",common:ae,peers:{Button:sn,Checkbox:Vr,Radio:Cb,Pagination:pb,Scrollbar:an,Empty:dr,Popover:ur,Ellipsis:vb,Dropdown:vd},self(e){const t=Sb(e);return t.boxShadowAfter="inset 12px 0 8px -12px rgba(0, 0, 0, .36)",t.boxShadowBefore="inset -12px 0 8px -12px rgba(0, 0, 0, .36)",t}},qw=Object.assign(Object.assign({},Is),Ee.props),Xw=de({name:"Tooltip",props:qw,__popover__:!0,setup(e){const{mergedClsPrefixRef:t}=dt(e),n=Ee("Tooltip","-tooltip",void 0,Zi,e,t),o=V(null);return Object.assign(Object.assign({},{syncPosition(){o.value.syncPosition()},setShow(i){o.value.setShow(i)}}),{popoverRef:o,mergedTheme:n,popoverThemeOverrides:z(()=>n.value.self)})},render(){const{mergedTheme:e,internalExtraClass:t}=this;return S(Ms,Object.assign(Object.assign({},this.$props),{theme:e.peers.Popover,themeOverrides:e.peerOverrides.Popover,builtinThemeOverrides:this.popoverThemeOverrides,internalExtraClass:t.concat("tooltip"),ref:"popoverRef"}),this.$slots)}}),Zw=oe("ellipsis",{overflow:"hidden"},[Ht("line-clamp",` + `)]))]),pd={title:[String,Function],contentClass:String,contentStyle:[Object,String],headerClass:String,headerStyle:[Object,String],headerExtraClass:String,headerExtraStyle:[Object,String],footerClass:String,footerStyle:[Object,String],embedded:Boolean,segmented:{type:[Boolean,Object],default:!1},size:{type:String,default:"medium"},bordered:{type:Boolean,default:!0},closable:Boolean,hoverable:Boolean,role:String,onClose:[Function,Array],tag:{type:String,default:"div"},cover:Function,content:[String,Function],footer:Function,action:Function,headerExtra:Function},ww=ys(pd),_w=Object.assign(Object.assign({},Ee.props),pd),Pw=de({name:"Card",props:_w,setup(e){const t=()=>{const{onClose:c}=e;c&&ze(c)},{inlineThemeDisabled:n,mergedClsPrefixRef:o,mergedRtlRef:r}=dt(e),i=Ee("Card","-card",Tw,md,e,o),a=Ao("Card",r,o),s=z(()=>{const{size:c}=e,{self:{color:d,colorModal:u,colorTarget:h,textColor:g,titleTextColor:f,titleFontWeight:b,borderColor:p,actionColor:m,borderRadius:k,lineHeight:T,closeIconColor:v,closeIconColorHover:x,closeIconColorPressed:A,closeColorHover:y,closeColorPressed:R,closeBorderRadius:P,closeIconSize:D,closeSize:W,boxShadow:M,colorPopover:j,colorEmbedded:ee,colorEmbeddedModal:B,colorEmbeddedPopover:X,[ge("padding",c)]:$,[ge("fontSize",c)]:ie,[ge("titleFontSize",c)]:ve},common:{cubicBezierEaseInOut:ye}}=i.value,{top:Ae,left:De,bottom:ut}=Wi($);return{"--n-bezier":ye,"--n-border-radius":k,"--n-color":d,"--n-color-modal":u,"--n-color-popover":j,"--n-color-embedded":ee,"--n-color-embedded-modal":B,"--n-color-embedded-popover":X,"--n-color-target":h,"--n-text-color":g,"--n-line-height":T,"--n-action-color":m,"--n-title-text-color":f,"--n-title-font-weight":b,"--n-close-icon-color":v,"--n-close-icon-color-hover":x,"--n-close-icon-color-pressed":A,"--n-close-color-hover":y,"--n-close-color-pressed":R,"--n-border-color":p,"--n-box-shadow":M,"--n-padding-top":Ae,"--n-padding-bottom":ut,"--n-padding-left":De,"--n-font-size":ie,"--n-title-font-size":ve,"--n-close-size":W,"--n-close-icon-size":D,"--n-close-border-radius":P}}),l=n?Mt("card",z(()=>e.size[0]),s,e):void 0;return{rtlEnabled:a,mergedClsPrefix:o,mergedTheme:i,handleCloseClick:t,cssVars:n?void 0:s,themeClass:l==null?void 0:l.themeClass,onRender:l==null?void 0:l.onRender}},render(){const{segmented:e,bordered:t,hoverable:n,mergedClsPrefix:o,rtlEnabled:r,onRender:i,embedded:a,tag:s,$slots:l}=this;return i==null||i(),S(s,{class:[`${o}-card`,this.themeClass,a&&`${o}-card--embedded`,{[`${o}-card--rtl`]:r,[`${o}-card--content${typeof e!="boolean"&&e.content==="soft"?"-soft":""}-segmented`]:e===!0||e!==!1&&e.content,[`${o}-card--footer${typeof e!="boolean"&&e.footer==="soft"?"-soft":""}-segmented`]:e===!0||e!==!1&&e.footer,[`${o}-card--action-segmented`]:e===!0||e!==!1&&e.action,[`${o}-card--bordered`]:t,[`${o}-card--hoverable`]:n}],style:this.cssVars,role:this.role},Pt(l.cover,c=>{const d=this.cover?Sn([this.cover()]):c;return d&&S("div",{class:`${o}-card-cover`,role:"none"},d)}),Pt(l.header,c=>{const{title:d}=this,u=d?Sn(typeof d=="function"?[d()]:[d]):c;return u||this.closable?S("div",{class:[`${o}-card-header`,this.headerClass],style:this.headerStyle,role:"heading"},S("div",{class:`${o}-card-header__main`,role:"heading"},u),Pt(l["header-extra"],h=>{const g=this.headerExtra?Sn([this.headerExtra()]):h;return g&&S("div",{class:[`${o}-card-header__extra`,this.headerExtraClass],style:this.headerExtraStyle},g)}),this.closable&&S(Es,{clsPrefix:o,class:`${o}-card-header__close`,onClick:this.handleCloseClick,absolute:!0})):null}),Pt(l.default,c=>{const{content:d}=this,u=d?Sn(typeof d=="function"?[d()]:[d]):c;return u&&S("div",{class:[`${o}-card__content`,this.contentClass],style:this.contentStyle,role:"none"},u)}),Pt(l.footer,c=>{const d=this.footer?Sn([this.footer()]):c;return d&&S("div",{class:[`${o}-card__footer`,this.footerClass],style:this.footerStyle,role:"none"},d)}),Pt(l.action,c=>{const d=this.action?Sn([this.action()]):c;return d&&S("div",{class:`${o}-card__action`,role:"none"},d)}))}});function nb(){return{dotSize:"8px",dotColor:"rgba(255, 255, 255, .3)",dotColorActive:"rgba(255, 255, 255, 1)",dotColorFocus:"rgba(255, 255, 255, .5)",dotLineWidth:"16px",dotLineWidthActive:"24px",arrowColor:"#eee"}}const Aw={name:"Carousel",common:se,self:nb},Rw={name:"Carousel",common:ae,self:nb},Ew={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"};function ob(e){const{baseColor:t,inputColorDisabled:n,cardColor:o,modalColor:r,popoverColor:i,textColorDisabled:a,borderColor:s,primaryColor:l,textColor2:c,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,borderRadiusSmall:g,lineHeight:f}=e;return Object.assign(Object.assign({},Ew),{labelLineHeight:f,fontSizeSmall:d,fontSizeMedium:u,fontSizeLarge:h,borderRadius:g,color:t,colorChecked:l,colorDisabled:n,colorDisabledChecked:n,colorTableHeader:o,colorTableHeaderModal:r,colorTableHeaderPopover:i,checkMarkColor:t,checkMarkColorDisabled:a,checkMarkColorDisabledChecked:a,border:`1px solid ${s}`,borderDisabled:`1px solid ${s}`,borderDisabledChecked:`1px solid ${s}`,borderChecked:`1px solid ${l}`,borderFocus:`1px solid ${l}`,boxShadowFocus:`0 0 0 2px ${U(l,{alpha:.3})}`,textColor:c,textColorDisabled:a})}const Gr={name:"Checkbox",common:se,self:ob},Vr={name:"Checkbox",common:ae,self(e){const{cardColor:t}=e,n=ob(e);return n.color="#0000",n.checkMarkColor=t,n}};function rb(e){const{borderRadius:t,boxShadow2:n,popoverColor:o,textColor2:r,textColor3:i,primaryColor:a,textColorDisabled:s,dividerColor:l,hoverColor:c,fontSizeMedium:d,heightMedium:u}=e;return{menuBorderRadius:t,menuColor:o,menuBoxShadow:n,menuDividerColor:l,menuHeight:"calc(var(--n-option-height) * 6.6)",optionArrowColor:i,optionHeight:u,optionFontSize:d,optionColorHover:c,optionTextColor:r,optionTextColorActive:a,optionTextColorDisabled:s,optionCheckMarkColor:a,loadingColor:a,columnWidth:"180px"}}const Iw={name:"Cascader",common:se,peers:{InternalSelectMenu:qi,InternalSelection:fd,Scrollbar:Jt,Checkbox:Gr,Empty:to},self:rb},Mw={name:"Cascader",common:ae,peers:{InternalSelectMenu:Xi,InternalSelection:gd,Scrollbar:an,Checkbox:Vr,Empty:to},self:rb},ib={name:"Code",common:ae,self(e){const{textColor2:t,fontSize:n,fontWeightStrong:o,textColor3:r}=e;return{textColor:t,fontSize:n,fontWeightStrong:o,"mono-3":"#5c6370","hue-1":"#56b6c2","hue-2":"#61aeee","hue-3":"#c678dd","hue-4":"#98c379","hue-5":"#e06c75","hue-5-2":"#be5046","hue-6":"#d19a66","hue-6-2":"#e6c07b",lineNumberTextColor:r}}};function Dw(e){const{textColor2:t,fontSize:n,fontWeightStrong:o,textColor3:r}=e;return{textColor:t,fontSize:n,fontWeightStrong:o,"mono-3":"#a0a1a7","hue-1":"#0184bb","hue-2":"#4078f2","hue-3":"#a626a4","hue-4":"#50a14f","hue-5":"#e45649","hue-5-2":"#c91243","hue-6":"#986801","hue-6-2":"#c18401",lineNumberTextColor:r}}const ab={name:"Code",common:se,self:Dw};function sb(e){const{fontWeight:t,textColor1:n,textColor2:o,textColorDisabled:r,dividerColor:i,fontSize:a}=e;return{titleFontSize:a,titleFontWeight:t,dividerColor:i,titleTextColor:n,titleTextColorDisabled:r,fontSize:a,textColor:o,arrowColor:o,arrowColorDisabled:r,itemMargin:"16px 0 0 0",titlePadding:"16px 0 0 0"}}const Ow={name:"Collapse",common:se,self:sb},Lw={name:"Collapse",common:ae,self:sb};function lb(e){const{cubicBezierEaseInOut:t}=e;return{bezier:t}}const Hw={name:"CollapseTransition",common:se,self:lb},$w={name:"CollapseTransition",common:ae,self:lb},Bw={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:{type:String,default:Hi},locale:Object,dateLocale:Object,namespace:String,rtl:Array,tag:{type:String,default:"div"},hljs:Object,katex:Object,theme:Object,themeOverrides:Object,componentOptions:Object,icons:Object,breakpoints:Object,preflightStyleDisabled:Boolean,inlineThemeDisabled:{type:Boolean,default:void 0},as:{type:String,validator:()=>(Dr("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},Nw=de({name:"ConfigProvider",alias:["App"],props:Bw,setup(e){const t=Me(Yn,null),n=z(()=>{const{theme:f}=e;if(f===null)return;const b=t==null?void 0:t.mergedThemeRef.value;return f===void 0?b:b===void 0?f:Object.assign({},b,f)}),o=z(()=>{const{themeOverrides:f}=e;if(f!==null){if(f===void 0)return t==null?void 0:t.mergedThemeOverridesRef.value;{const b=t==null?void 0:t.mergedThemeOverridesRef.value;return b===void 0?f:ci({},b,f)}}}),r=Rt(()=>{const{namespace:f}=e;return f===void 0?t==null?void 0:t.mergedNamespaceRef.value:f}),i=Rt(()=>{const{bordered:f}=e;return f===void 0?t==null?void 0:t.mergedBorderedRef.value:f}),a=z(()=>{const{icons:f}=e;return f===void 0?t==null?void 0:t.mergedIconsRef.value:f}),s=z(()=>{const{componentOptions:f}=e;return f!==void 0?f:t==null?void 0:t.mergedComponentPropsRef.value}),l=z(()=>{const{clsPrefix:f}=e;return f!==void 0?f:t?t.mergedClsPrefixRef.value:Hi}),c=z(()=>{var f;const{rtl:b}=e;if(b===void 0)return t==null?void 0:t.mergedRtlRef.value;const p={};for(const m of b)p[m.name]=xi(m),(f=m.peers)===null||f===void 0||f.forEach(k=>{k.name in p||(p[k.name]=xi(k))});return p}),d=z(()=>e.breakpoints||(t==null?void 0:t.mergedBreakpointsRef.value)),u=e.inlineThemeDisabled||(t==null?void 0:t.inlineThemeDisabled),h=e.preflightStyleDisabled||(t==null?void 0:t.preflightStyleDisabled),g=z(()=>{const{value:f}=n,{value:b}=o,p=b&&Object.keys(b).length!==0,m=f==null?void 0:f.name;return m?p?`${m}-${Ei(JSON.stringify(o.value))}`:m:p?Ei(JSON.stringify(o.value)):""});return je(Yn,{mergedThemeHashRef:g,mergedBreakpointsRef:d,mergedRtlRef:c,mergedIconsRef:a,mergedComponentPropsRef:s,mergedBorderedRef:i,mergedNamespaceRef:r,mergedClsPrefixRef:l,mergedLocaleRef:z(()=>{const{locale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedLocaleRef.value:f}),mergedDateLocaleRef:z(()=>{const{dateLocale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedDateLocaleRef.value:f}),mergedHljsRef:z(()=>{const{hljs:f}=e;return f===void 0?t==null?void 0:t.mergedHljsRef.value:f}),mergedKatexRef:z(()=>{const{katex:f}=e;return f===void 0?t==null?void 0:t.mergedKatexRef.value:f}),mergedThemeRef:n,mergedThemeOverridesRef:o,inlineThemeDisabled:u||!1,preflightStyleDisabled:h||!1}),{mergedClsPrefix:l,mergedBordered:i,mergedNamespace:r,mergedTheme:n,mergedThemeOverrides:o}},render(){var e,t,n,o;return this.abstract?(o=(n=this.$slots).default)===null||o===void 0?void 0:o.call(n):S(this.as||this.tag,{class:`${this.mergedClsPrefix||Hi}-config-provider`},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),cb={name:"Popselect",common:ae,peers:{Popover:ur,InternalSelectMenu:Xi}};function zw(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const db={name:"Popselect",common:se,peers:{Popover:Ro,InternalSelectMenu:qi},self:zw};function ub(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const hb={name:"Select",common:se,peers:{InternalSelection:fd,InternalSelectMenu:qi},self:ub},fb={name:"Select",common:ae,peers:{InternalSelection:gd,InternalSelectMenu:Xi},self:ub},Fw={itemPaddingSmall:"0 4px",itemMarginSmall:"0 0 0 8px",itemMarginSmallRtl:"0 8px 0 0",itemPaddingMedium:"0 4px",itemMarginMedium:"0 0 0 8px",itemMarginMediumRtl:"0 8px 0 0",itemPaddingLarge:"0 4px",itemMarginLarge:"0 0 0 8px",itemMarginLargeRtl:"0 8px 0 0",buttonIconSizeSmall:"14px",buttonIconSizeMedium:"16px",buttonIconSizeLarge:"18px",inputWidthSmall:"60px",selectWidthSmall:"unset",inputMarginSmall:"0 0 0 8px",inputMarginSmallRtl:"0 8px 0 0",selectMarginSmall:"0 0 0 8px",prefixMarginSmall:"0 8px 0 0",suffixMarginSmall:"0 0 0 8px",inputWidthMedium:"60px",selectWidthMedium:"unset",inputMarginMedium:"0 0 0 8px",inputMarginMediumRtl:"0 8px 0 0",selectMarginMedium:"0 0 0 8px",prefixMarginMedium:"0 8px 0 0",suffixMarginMedium:"0 0 0 8px",inputWidthLarge:"60px",selectWidthLarge:"unset",inputMarginLarge:"0 0 0 8px",inputMarginLargeRtl:"0 8px 0 0",selectMarginLarge:"0 0 0 8px",prefixMarginLarge:"0 8px 0 0",suffixMarginLarge:"0 0 0 8px"};function gb(e){const{textColor2:t,primaryColor:n,primaryColorHover:o,primaryColorPressed:r,inputColorDisabled:i,textColorDisabled:a,borderColor:s,borderRadius:l,fontSizeTiny:c,fontSizeSmall:d,fontSizeMedium:u,heightTiny:h,heightSmall:g,heightMedium:f}=e;return Object.assign(Object.assign({},Fw),{buttonColor:"#0000",buttonColorHover:"#0000",buttonColorPressed:"#0000",buttonBorder:`1px solid ${s}`,buttonBorderHover:`1px solid ${s}`,buttonBorderPressed:`1px solid ${s}`,buttonIconColor:t,buttonIconColorHover:t,buttonIconColorPressed:t,itemTextColor:t,itemTextColorHover:o,itemTextColorPressed:r,itemTextColorActive:n,itemTextColorDisabled:a,itemColor:"#0000",itemColorHover:"#0000",itemColorPressed:"#0000",itemColorActive:"#0000",itemColorActiveHover:"#0000",itemColorDisabled:i,itemBorder:"1px solid #0000",itemBorderHover:"1px solid #0000",itemBorderPressed:"1px solid #0000",itemBorderActive:`1px solid ${n}`,itemBorderDisabled:`1px solid ${s}`,itemBorderRadius:l,itemSizeSmall:h,itemSizeMedium:g,itemSizeLarge:f,itemFontSizeSmall:c,itemFontSizeMedium:d,itemFontSizeLarge:u,jumperFontSizeSmall:c,jumperFontSizeMedium:d,jumperFontSizeLarge:u,jumperTextColor:t,jumperTextColorDisabled:a})}const mb={name:"Pagination",common:se,peers:{Select:hb,Input:fn,Popselect:db},self:gb},pb={name:"Pagination",common:ae,peers:{Select:fb,Input:kn,Popselect:cb},self(e){const{primaryColor:t,opacity3:n}=e,o=U(t,{alpha:Number(n)}),r=gb(e);return r.itemBorderActive=`1px solid ${o}`,r.itemBorderDisabled="1px solid #0000",r}},bb={padding:"8px 14px"},Ds={name:"Tooltip",common:ae,peers:{Popover:ur},self(e){const{borderRadius:t,boxShadow2:n,popoverColor:o,textColor2:r}=e;return Object.assign(Object.assign({},bb),{borderRadius:t,boxShadow:n,color:o,textColor:r})}};function Ww(e){const{borderRadius:t,boxShadow2:n,baseColor:o}=e;return Object.assign(Object.assign({},bb),{borderRadius:t,boxShadow:n,color:ce(o,"rgba(0, 0, 0, .85)"),textColor:o})}const Zi={name:"Tooltip",common:se,peers:{Popover:Ro},self:Ww},vb={name:"Ellipsis",common:ae,peers:{Tooltip:Ds}},bd={name:"Ellipsis",common:se,peers:{Tooltip:Zi}},yb={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"},Cb={name:"Radio",common:ae,self(e){const{borderColor:t,primaryColor:n,baseColor:o,textColorDisabled:r,inputColorDisabled:i,textColor2:a,opacityDisabled:s,borderRadius:l,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,heightSmall:h,heightMedium:g,heightLarge:f,lineHeight:b}=e;return Object.assign(Object.assign({},yb),{labelLineHeight:b,buttonHeightSmall:h,buttonHeightMedium:g,buttonHeightLarge:f,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,boxShadow:`inset 0 0 0 1px ${t}`,boxShadowActive:`inset 0 0 0 1px ${n}`,boxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.3})}`,boxShadowHover:`inset 0 0 0 1px ${n}`,boxShadowDisabled:`inset 0 0 0 1px ${t}`,color:"#0000",colorDisabled:i,colorActive:"#0000",textColor:a,textColorDisabled:r,dotColorActive:n,dotColorDisabled:t,buttonBorderColor:t,buttonBorderColorActive:n,buttonBorderColorHover:n,buttonColor:"#0000",buttonColorActive:n,buttonTextColor:a,buttonTextColorActive:o,buttonTextColorHover:n,opacityDisabled:s,buttonBoxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${n}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})}};function jw(e){const{borderColor:t,primaryColor:n,baseColor:o,textColorDisabled:r,inputColorDisabled:i,textColor2:a,opacityDisabled:s,borderRadius:l,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,heightSmall:h,heightMedium:g,heightLarge:f,lineHeight:b}=e;return Object.assign(Object.assign({},yb),{labelLineHeight:b,buttonHeightSmall:h,buttonHeightMedium:g,buttonHeightLarge:f,fontSizeSmall:c,fontSizeMedium:d,fontSizeLarge:u,boxShadow:`inset 0 0 0 1px ${t}`,boxShadowActive:`inset 0 0 0 1px ${n}`,boxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.2})}`,boxShadowHover:`inset 0 0 0 1px ${n}`,boxShadowDisabled:`inset 0 0 0 1px ${t}`,color:o,colorDisabled:i,colorActive:"#0000",textColor:a,textColorDisabled:r,dotColorActive:n,dotColorDisabled:t,buttonBorderColor:t,buttonBorderColorActive:n,buttonBorderColorHover:t,buttonColor:o,buttonColorActive:o,buttonTextColor:a,buttonTextColorActive:n,buttonTextColorHover:n,opacityDisabled:s,buttonBoxShadowFocus:`inset 0 0 0 1px ${n}, 0 0 0 2px ${U(n,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})}const kb={name:"Radio",common:se,self:jw},Gw={padding:"4px 0",optionIconSizeSmall:"14px",optionIconSizeMedium:"16px",optionIconSizeLarge:"16px",optionIconSizeHuge:"18px",optionSuffixWidthSmall:"14px",optionSuffixWidthMedium:"14px",optionSuffixWidthLarge:"16px",optionSuffixWidthHuge:"16px",optionIconSuffixWidthSmall:"32px",optionIconSuffixWidthMedium:"32px",optionIconSuffixWidthLarge:"36px",optionIconSuffixWidthHuge:"36px",optionPrefixWidthSmall:"14px",optionPrefixWidthMedium:"14px",optionPrefixWidthLarge:"16px",optionPrefixWidthHuge:"16px",optionIconPrefixWidthSmall:"36px",optionIconPrefixWidthMedium:"36px",optionIconPrefixWidthLarge:"40px",optionIconPrefixWidthHuge:"40px"};function xb(e){const{primaryColor:t,textColor2:n,dividerColor:o,hoverColor:r,popoverColor:i,invertedColor:a,borderRadius:s,fontSizeSmall:l,fontSizeMedium:c,fontSizeLarge:d,fontSizeHuge:u,heightSmall:h,heightMedium:g,heightLarge:f,heightHuge:b,textColor3:p,opacityDisabled:m}=e;return Object.assign(Object.assign({},Gw),{optionHeightSmall:h,optionHeightMedium:g,optionHeightLarge:f,optionHeightHuge:b,borderRadius:s,fontSizeSmall:l,fontSizeMedium:c,fontSizeLarge:d,fontSizeHuge:u,optionTextColor:n,optionTextColorHover:n,optionTextColorActive:t,optionTextColorChildActive:t,color:i,dividerColor:o,suffixColor:n,prefixColor:n,optionColorHover:r,optionColorActive:U(t,{alpha:.1}),groupHeaderTextColor:p,optionTextColorInverted:"#BBB",optionTextColorHoverInverted:"#FFF",optionTextColorActiveInverted:"#FFF",optionTextColorChildActiveInverted:"#FFF",colorInverted:a,dividerColorInverted:"#BBB",suffixColorInverted:"#BBB",prefixColorInverted:"#BBB",optionColorHoverInverted:t,optionColorActiveInverted:t,groupHeaderTextColorInverted:"#AAA",optionOpacityDisabled:m})}const Os={name:"Dropdown",common:se,peers:{Popover:Ro},self:xb},vd={name:"Dropdown",common:ae,peers:{Popover:ur},self(e){const{primaryColorSuppl:t,primaryColor:n,popoverColor:o}=e,r=xb(e);return r.colorInverted=o,r.optionColorActive=U(n,{alpha:.15}),r.optionColorActiveInverted=t,r.optionColorHoverInverted=t,r}},Vw={thPaddingSmall:"8px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"8px",tdPaddingMedium:"12px",tdPaddingLarge:"12px",sorterSize:"15px",resizableContainerSize:"8px",resizableSize:"2px",filterSize:"15px",paginationMargin:"12px 0 0 0",emptyPadding:"48px 0",actionPadding:"8px 12px",actionButtonMargin:"0 8px 0 0"};function Sb(e){const{cardColor:t,modalColor:n,popoverColor:o,textColor2:r,textColor1:i,tableHeaderColor:a,tableColorHover:s,iconColor:l,primaryColor:c,fontWeightStrong:d,borderRadius:u,lineHeight:h,fontSizeSmall:g,fontSizeMedium:f,fontSizeLarge:b,dividerColor:p,heightSmall:m,opacityDisabled:k,tableColorStriped:T}=e;return Object.assign(Object.assign({},Vw),{actionDividerColor:p,lineHeight:h,borderRadius:u,fontSizeSmall:g,fontSizeMedium:f,fontSizeLarge:b,borderColor:ce(t,p),tdColorHover:ce(t,s),tdColorSorting:ce(t,s),tdColorStriped:ce(t,T),thColor:ce(t,a),thColorHover:ce(ce(t,a),s),thColorSorting:ce(ce(t,a),s),tdColor:t,tdTextColor:r,thTextColor:i,thFontWeight:d,thButtonColorHover:s,thIconColor:l,thIconColorActive:c,borderColorModal:ce(n,p),tdColorHoverModal:ce(n,s),tdColorSortingModal:ce(n,s),tdColorStripedModal:ce(n,T),thColorModal:ce(n,a),thColorHoverModal:ce(ce(n,a),s),thColorSortingModal:ce(ce(n,a),s),tdColorModal:n,borderColorPopover:ce(o,p),tdColorHoverPopover:ce(o,s),tdColorSortingPopover:ce(o,s),tdColorStripedPopover:ce(o,T),thColorPopover:ce(o,a),thColorHoverPopover:ce(ce(o,a),s),thColorSortingPopover:ce(ce(o,a),s),tdColorPopover:o,boxShadowBefore:"inset -12px 0 8px -12px rgba(0, 0, 0, .18)",boxShadowAfter:"inset 12px 0 8px -12px rgba(0, 0, 0, .18)",loadingColor:c,loadingSize:m,opacityLoading:k})}const Uw={name:"DataTable",common:se,peers:{Button:Qt,Checkbox:Gr,Radio:kb,Pagination:mb,Scrollbar:Jt,Empty:to,Popover:Ro,Ellipsis:bd,Dropdown:Os},self:Sb},Kw={name:"DataTable",common:ae,peers:{Button:sn,Checkbox:Vr,Radio:Cb,Pagination:pb,Scrollbar:an,Empty:dr,Popover:ur,Ellipsis:vb,Dropdown:vd},self(e){const t=Sb(e);return t.boxShadowAfter="inset 12px 0 8px -12px rgba(0, 0, 0, .36)",t.boxShadowBefore="inset -12px 0 8px -12px rgba(0, 0, 0, .36)",t}},qw=Object.assign(Object.assign({},Is),Ee.props),Xw=de({name:"Tooltip",props:qw,__popover__:!0,setup(e){const{mergedClsPrefixRef:t}=dt(e),n=Ee("Tooltip","-tooltip",void 0,Zi,e,t),o=V(null);return Object.assign(Object.assign({},{syncPosition(){o.value.syncPosition()},setShow(i){o.value.setShow(i)}}),{popoverRef:o,mergedTheme:n,popoverThemeOverrides:z(()=>n.value.self)})},render(){const{mergedTheme:e,internalExtraClass:t}=this;return S(Ms,Object.assign(Object.assign({},this.$props),{theme:e.peers.Popover,themeOverrides:e.peerOverrides.Popover,builtinThemeOverrides:this.popoverThemeOverrides,internalExtraClass:t.concat("tooltip"),ref:"popoverRef"}),this.$slots)}}),Zw=oe("ellipsis",{overflow:"hidden"},[Ht("line-clamp",` white-space: nowrap; display: inline-block; vertical-align: bottom; @@ -769,7 +769,7 @@ ${t} position: relative; fill: currentColor; transform: translateZ(0); -`,[te("color-transition",{transition:"color .3s var(--n-bezier)"}),te("depth",{color:"var(--n-color)"},[F("svg",{opacity:"var(--n-opacity)",transition:"opacity .3s var(--n-bezier)"})]),F("svg",{height:"1em",width:"1em"})]),t8=Object.assign(Object.assign({},Ee.props),{depth:[String,Number],size:[Number,String],color:String,component:Object}),yd=de({_n_icon__:!0,name:"Icon",inheritAttrs:!1,props:t8,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Icon","-icon",e8,_b,e,t),r=z(()=>{const{depth:a}=e,{common:{cubicBezierEaseInOut:s},self:l}=o.value;if(a!==void 0){const{color:c,[`opacity${a}Depth`]:d}=l;return{"--n-bezier":s,"--n-color":c,"--n-opacity":d}}return{"--n-bezier":s,"--n-color":"","--n-opacity":""}}),i=n?Mt("icon",z(()=>`${e.depth||"d"}`),r,e):void 0;return{mergedClsPrefix:t,mergedStyle:z(()=>{const{size:a,color:s}=e;return{fontSize:Ra(a),color:s}}),cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{$parent:t,depth:n,mergedClsPrefix:o,component:r,onRender:i,themeClass:a}=this;return!((e=t==null?void 0:t.$options)===null||e===void 0)&&e._n_icon__&&Dr("icon","don't wrap `n-icon` inside `n-icon`"),i==null||i(),S("i",$n(this.$attrs,{role:"img",class:[`${o}-icon`,a,{[`${o}-icon--depth`]:n,[`${o}-icon--color-transition`]:n!==void 0}],style:[this.cssVars,this.mergedStyle]}),r?S(r):this.$slots)}}),Cd="n-dropdown-menu",Ls="n-dropdown",Fh="n-dropdown-option";function oc(e,t){return e.type==="submenu"||e.type===void 0&&e[t]!==void 0}function n8(e){return e.type==="group"}function Pb(e){return e.type==="divider"}function o8(e){return e.type==="render"}const Ab=de({name:"DropdownOption",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null},placement:{type:String,default:"right-start"},props:Object,scrollable:Boolean},setup(e){const t=Me(Ls),{hoverKeyRef:n,keyboardKeyRef:o,lastToggledSubmenuKeyRef:r,pendingKeyPathRef:i,activeKeyPathRef:a,animatedRef:s,mergedShowRef:l,renderLabelRef:c,renderIconRef:d,labelFieldRef:u,childrenFieldRef:h,renderOptionRef:g,nodePropsRef:f,menuPropsRef:b}=t,p=Me(Fh,null),m=Me(Cd),k=Me(Gi),T=z(()=>e.tmNode.rawNode),v=z(()=>{const{value:$}=h;return oc(e.tmNode.rawNode,$)}),x=z(()=>{const{disabled:$}=e.tmNode;return $}),A=z(()=>{if(!v.value)return!1;const{key:$,disabled:ie}=e.tmNode;if(ie)return!1;const{value:ve}=n,{value:ye}=o,{value:Ae}=r,{value:De}=i;return ve!==null?De.includes($):ye!==null?De.includes($)&&De[De.length-1]!==$:Ae!==null?De.includes($):!1}),y=z(()=>o.value===null&&!s.value),R=wC(A,300,y),P=z(()=>!!(p!=null&&p.enteringSubmenuRef.value)),D=V(!1);We(Fh,{enteringSubmenuRef:D});function W(){D.value=!0}function M(){D.value=!1}function j(){const{parentKey:$,tmNode:ie}=e;ie.disabled||l.value&&(r.value=$,o.value=null,n.value=ie.key)}function ee(){const{tmNode:$}=e;$.disabled||l.value&&n.value!==$.key&&j()}function B($){if(e.tmNode.disabled||!l.value)return;const{relatedTarget:ie}=$;ie&&!ku({target:ie},"dropdownOption")&&!ku({target:ie},"scrollbarRail")&&(n.value=null)}function X(){const{value:$}=v,{tmNode:ie}=e;l.value&&!$&&!ie.disabled&&(t.doSelect(ie.key,ie.rawNode),t.doUpdateShow(!1))}return{labelField:u,renderLabel:c,renderIcon:d,siblingHasIcon:m.showIconRef,siblingHasSubmenu:m.hasSubmenuRef,menuProps:b,popoverBody:k,animated:s,mergedShowSubmenu:z(()=>R.value&&!P.value),rawNode:T,hasSubmenu:v,pending:Rt(()=>{const{value:$}=i,{key:ie}=e.tmNode;return $.includes(ie)}),childActive:Rt(()=>{const{value:$}=a,{key:ie}=e.tmNode,ve=$.findIndex(ye=>ie===ye);return ve===-1?!1:ve<$.length-1}),active:Rt(()=>{const{value:$}=a,{key:ie}=e.tmNode,ve=$.findIndex(ye=>ie===ye);return ve===-1?!1:ve===$.length-1}),mergedDisabled:x,renderOption:g,nodeProps:f,handleClick:X,handleMouseMove:ee,handleMouseEnter:j,handleMouseLeave:B,handleSubmenuBeforeEnter:W,handleSubmenuAfterEnter:M}},render(){var e,t;const{animated:n,rawNode:o,mergedShowSubmenu:r,clsPrefix:i,siblingHasIcon:a,siblingHasSubmenu:s,renderLabel:l,renderIcon:c,renderOption:d,nodeProps:u,props:h,scrollable:g}=this;let f=null;if(r){const k=(e=this.menuProps)===null||e===void 0?void 0:e.call(this,o,o.children);f=S(Rb,Object.assign({},k,{clsPrefix:i,scrollable:this.scrollable,tmNodes:this.tmNode.children,parentKey:this.tmNode.key}))}const b={class:[`${i}-dropdown-option-body`,this.pending&&`${i}-dropdown-option-body--pending`,this.active&&`${i}-dropdown-option-body--active`,this.childActive&&`${i}-dropdown-option-body--child-active`,this.mergedDisabled&&`${i}-dropdown-option-body--disabled`],onMousemove:this.handleMouseMove,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onClick:this.handleClick},p=u==null?void 0:u(o),m=S("div",Object.assign({class:[`${i}-dropdown-option`,p==null?void 0:p.class],"data-dropdown-option":!0},p),S("div",$n(b,h),[S("div",{class:[`${i}-dropdown-option-body__prefix`,a&&`${i}-dropdown-option-body__prefix--show-icon`]},[c?c(o):Ot(o.icon)]),S("div",{"data-dropdown-option":!0,class:`${i}-dropdown-option-body__label`},l?l(o):Ot((t=o[this.labelField])!==null&&t!==void 0?t:o.title)),S("div",{"data-dropdown-option":!0,class:[`${i}-dropdown-option-body__suffix`,s&&`${i}-dropdown-option-body__suffix--has-submenu`]},this.hasSubmenu?S(yd,null,{default:()=>S(DS,null)}):null)]),this.hasSubmenu?S(vm,null,{default:()=>[S(ym,null,{default:()=>S("div",{class:`${i}-dropdown-offset-container`},S(km,{show:this.mergedShowSubmenu,placement:this.placement,to:g&&this.popoverBody||void 0,teleportDisabled:!g},{default:()=>S("div",{class:`${i}-dropdown-menu-wrapper`},n?S(Bn,{onBeforeEnter:this.handleSubmenuBeforeEnter,onAfterEnter:this.handleSubmenuAfterEnter,name:"fade-in-scale-up-transition",appear:!0},{default:()=>f}):f)}))})]}):null);return d?d({node:m,option:o}):m}}),r8=de({name:"DropdownGroupHeader",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){const{showIconRef:e,hasSubmenuRef:t}=Me(Cd),{renderLabelRef:n,labelFieldRef:o,nodePropsRef:r,renderOptionRef:i}=Me(Ls);return{labelField:o,showIcon:e,hasSubmenu:t,renderLabel:n,nodeProps:r,renderOption:i}},render(){var e;const{clsPrefix:t,hasSubmenu:n,showIcon:o,nodeProps:r,renderLabel:i,renderOption:a}=this,{rawNode:s}=this.tmNode,l=S("div",Object.assign({class:`${t}-dropdown-option`},r==null?void 0:r(s)),S("div",{class:`${t}-dropdown-option-body ${t}-dropdown-option-body--group`},S("div",{"data-dropdown-option":!0,class:[`${t}-dropdown-option-body__prefix`,o&&`${t}-dropdown-option-body__prefix--show-icon`]},Ot(s.icon)),S("div",{class:`${t}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(s):Ot((e=s.title)!==null&&e!==void 0?e:s[this.labelField])),S("div",{class:[`${t}-dropdown-option-body__suffix`,n&&`${t}-dropdown-option-body__suffix--has-submenu`],"data-dropdown-option":!0})));return a?a({node:l,option:s}):l}}),i8=de({name:"NDropdownGroup",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null}},render(){const{tmNode:e,parentKey:t,clsPrefix:n}=this,{children:o}=e;return S(He,null,S(r8,{clsPrefix:n,tmNode:e,key:e.key}),o==null?void 0:o.map(r=>{const{rawNode:i}=r;return i.show===!1?null:Pb(i)?S(Tb,{clsPrefix:n,key:r.key}):r.isGroup?(Dr("dropdown","`group` node is not allowed to be put in `group` node."),null):S(Ab,{clsPrefix:n,tmNode:r,parentKey:t,key:r.key})}))}}),a8=de({name:"DropdownRenderOption",props:{tmNode:{type:Object,required:!0}},render(){const{rawNode:{render:e,props:t}}=this.tmNode;return S("div",t,[e==null?void 0:e()])}}),Rb=de({name:"DropdownMenu",props:{scrollable:Boolean,showArrow:Boolean,arrowStyle:[String,Object],clsPrefix:{type:String,required:!0},tmNodes:{type:Array,default:()=>[]},parentKey:{type:[String,Number],default:null}},setup(e){const{renderIconRef:t,childrenFieldRef:n}=Me(Ls);We(Cd,{showIconRef:z(()=>{const r=t.value;return e.tmNodes.some(i=>{var a;if(i.isGroup)return(a=i.children)===null||a===void 0?void 0:a.some(({rawNode:l})=>r?r(l):l.icon);const{rawNode:s}=i;return r?r(s):s.icon})}),hasSubmenuRef:z(()=>{const{value:r}=n;return e.tmNodes.some(i=>{var a;if(i.isGroup)return(a=i.children)===null||a===void 0?void 0:a.some(({rawNode:l})=>oc(l,r));const{rawNode:s}=i;return oc(s,r)})})});const o=V(null);return We(Ss,null),We(Ts,null),We(Gi,o),{bodyRef:o}},render(){const{parentKey:e,clsPrefix:t,scrollable:n}=this,o=this.tmNodes.map(r=>{const{rawNode:i}=r;return i.show===!1?null:o8(i)?S(a8,{tmNode:r,key:r.key}):Pb(i)?S(Tb,{clsPrefix:t,key:r.key}):n8(i)?S(i8,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):S(Ab,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key,props:i.props,scrollable:n})});return S("div",{class:[`${t}-dropdown-menu`,n&&`${t}-dropdown-menu--scrollable`],ref:"bodyRef"},n?S(Rp,{contentClass:`${t}-dropdown-menu__content`},{default:()=>o}):o,this.showArrow?Op({clsPrefix:t,arrowStyle:this.arrowStyle,arrowClass:void 0,arrowWrapperClass:void 0,arrowWrapperStyle:void 0}):null)}}),s8=oe("dropdown-menu",` +`,[te("color-transition",{transition:"color .3s var(--n-bezier)"}),te("depth",{color:"var(--n-color)"},[F("svg",{opacity:"var(--n-opacity)",transition:"opacity .3s var(--n-bezier)"})]),F("svg",{height:"1em",width:"1em"})]),t8=Object.assign(Object.assign({},Ee.props),{depth:[String,Number],size:[Number,String],color:String,component:Object}),yd=de({_n_icon__:!0,name:"Icon",inheritAttrs:!1,props:t8,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Icon","-icon",e8,_b,e,t),r=z(()=>{const{depth:a}=e,{common:{cubicBezierEaseInOut:s},self:l}=o.value;if(a!==void 0){const{color:c,[`opacity${a}Depth`]:d}=l;return{"--n-bezier":s,"--n-color":c,"--n-opacity":d}}return{"--n-bezier":s,"--n-color":"","--n-opacity":""}}),i=n?Mt("icon",z(()=>`${e.depth||"d"}`),r,e):void 0;return{mergedClsPrefix:t,mergedStyle:z(()=>{const{size:a,color:s}=e;return{fontSize:Ra(a),color:s}}),cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{$parent:t,depth:n,mergedClsPrefix:o,component:r,onRender:i,themeClass:a}=this;return!((e=t==null?void 0:t.$options)===null||e===void 0)&&e._n_icon__&&Dr("icon","don't wrap `n-icon` inside `n-icon`"),i==null||i(),S("i",$n(this.$attrs,{role:"img",class:[`${o}-icon`,a,{[`${o}-icon--depth`]:n,[`${o}-icon--color-transition`]:n!==void 0}],style:[this.cssVars,this.mergedStyle]}),r?S(r):this.$slots)}}),Cd="n-dropdown-menu",Ls="n-dropdown",Fh="n-dropdown-option";function oc(e,t){return e.type==="submenu"||e.type===void 0&&e[t]!==void 0}function n8(e){return e.type==="group"}function Pb(e){return e.type==="divider"}function o8(e){return e.type==="render"}const Ab=de({name:"DropdownOption",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null},placement:{type:String,default:"right-start"},props:Object,scrollable:Boolean},setup(e){const t=Me(Ls),{hoverKeyRef:n,keyboardKeyRef:o,lastToggledSubmenuKeyRef:r,pendingKeyPathRef:i,activeKeyPathRef:a,animatedRef:s,mergedShowRef:l,renderLabelRef:c,renderIconRef:d,labelFieldRef:u,childrenFieldRef:h,renderOptionRef:g,nodePropsRef:f,menuPropsRef:b}=t,p=Me(Fh,null),m=Me(Cd),k=Me(Gi),T=z(()=>e.tmNode.rawNode),v=z(()=>{const{value:$}=h;return oc(e.tmNode.rawNode,$)}),x=z(()=>{const{disabled:$}=e.tmNode;return $}),A=z(()=>{if(!v.value)return!1;const{key:$,disabled:ie}=e.tmNode;if(ie)return!1;const{value:ve}=n,{value:ye}=o,{value:Ae}=r,{value:De}=i;return ve!==null?De.includes($):ye!==null?De.includes($)&&De[De.length-1]!==$:Ae!==null?De.includes($):!1}),y=z(()=>o.value===null&&!s.value),R=wC(A,300,y),P=z(()=>!!(p!=null&&p.enteringSubmenuRef.value)),D=V(!1);je(Fh,{enteringSubmenuRef:D});function W(){D.value=!0}function M(){D.value=!1}function j(){const{parentKey:$,tmNode:ie}=e;ie.disabled||l.value&&(r.value=$,o.value=null,n.value=ie.key)}function ee(){const{tmNode:$}=e;$.disabled||l.value&&n.value!==$.key&&j()}function B($){if(e.tmNode.disabled||!l.value)return;const{relatedTarget:ie}=$;ie&&!ku({target:ie},"dropdownOption")&&!ku({target:ie},"scrollbarRail")&&(n.value=null)}function X(){const{value:$}=v,{tmNode:ie}=e;l.value&&!$&&!ie.disabled&&(t.doSelect(ie.key,ie.rawNode),t.doUpdateShow(!1))}return{labelField:u,renderLabel:c,renderIcon:d,siblingHasIcon:m.showIconRef,siblingHasSubmenu:m.hasSubmenuRef,menuProps:b,popoverBody:k,animated:s,mergedShowSubmenu:z(()=>R.value&&!P.value),rawNode:T,hasSubmenu:v,pending:Rt(()=>{const{value:$}=i,{key:ie}=e.tmNode;return $.includes(ie)}),childActive:Rt(()=>{const{value:$}=a,{key:ie}=e.tmNode,ve=$.findIndex(ye=>ie===ye);return ve===-1?!1:ve<$.length-1}),active:Rt(()=>{const{value:$}=a,{key:ie}=e.tmNode,ve=$.findIndex(ye=>ie===ye);return ve===-1?!1:ve===$.length-1}),mergedDisabled:x,renderOption:g,nodeProps:f,handleClick:X,handleMouseMove:ee,handleMouseEnter:j,handleMouseLeave:B,handleSubmenuBeforeEnter:W,handleSubmenuAfterEnter:M}},render(){var e,t;const{animated:n,rawNode:o,mergedShowSubmenu:r,clsPrefix:i,siblingHasIcon:a,siblingHasSubmenu:s,renderLabel:l,renderIcon:c,renderOption:d,nodeProps:u,props:h,scrollable:g}=this;let f=null;if(r){const k=(e=this.menuProps)===null||e===void 0?void 0:e.call(this,o,o.children);f=S(Rb,Object.assign({},k,{clsPrefix:i,scrollable:this.scrollable,tmNodes:this.tmNode.children,parentKey:this.tmNode.key}))}const b={class:[`${i}-dropdown-option-body`,this.pending&&`${i}-dropdown-option-body--pending`,this.active&&`${i}-dropdown-option-body--active`,this.childActive&&`${i}-dropdown-option-body--child-active`,this.mergedDisabled&&`${i}-dropdown-option-body--disabled`],onMousemove:this.handleMouseMove,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onClick:this.handleClick},p=u==null?void 0:u(o),m=S("div",Object.assign({class:[`${i}-dropdown-option`,p==null?void 0:p.class],"data-dropdown-option":!0},p),S("div",$n(b,h),[S("div",{class:[`${i}-dropdown-option-body__prefix`,a&&`${i}-dropdown-option-body__prefix--show-icon`]},[c?c(o):Ot(o.icon)]),S("div",{"data-dropdown-option":!0,class:`${i}-dropdown-option-body__label`},l?l(o):Ot((t=o[this.labelField])!==null&&t!==void 0?t:o.title)),S("div",{"data-dropdown-option":!0,class:[`${i}-dropdown-option-body__suffix`,s&&`${i}-dropdown-option-body__suffix--has-submenu`]},this.hasSubmenu?S(yd,null,{default:()=>S(DS,null)}):null)]),this.hasSubmenu?S(vm,null,{default:()=>[S(ym,null,{default:()=>S("div",{class:`${i}-dropdown-offset-container`},S(km,{show:this.mergedShowSubmenu,placement:this.placement,to:g&&this.popoverBody||void 0,teleportDisabled:!g},{default:()=>S("div",{class:`${i}-dropdown-menu-wrapper`},n?S(Bn,{onBeforeEnter:this.handleSubmenuBeforeEnter,onAfterEnter:this.handleSubmenuAfterEnter,name:"fade-in-scale-up-transition",appear:!0},{default:()=>f}):f)}))})]}):null);return d?d({node:m,option:o}):m}}),r8=de({name:"DropdownGroupHeader",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){const{showIconRef:e,hasSubmenuRef:t}=Me(Cd),{renderLabelRef:n,labelFieldRef:o,nodePropsRef:r,renderOptionRef:i}=Me(Ls);return{labelField:o,showIcon:e,hasSubmenu:t,renderLabel:n,nodeProps:r,renderOption:i}},render(){var e;const{clsPrefix:t,hasSubmenu:n,showIcon:o,nodeProps:r,renderLabel:i,renderOption:a}=this,{rawNode:s}=this.tmNode,l=S("div",Object.assign({class:`${t}-dropdown-option`},r==null?void 0:r(s)),S("div",{class:`${t}-dropdown-option-body ${t}-dropdown-option-body--group`},S("div",{"data-dropdown-option":!0,class:[`${t}-dropdown-option-body__prefix`,o&&`${t}-dropdown-option-body__prefix--show-icon`]},Ot(s.icon)),S("div",{class:`${t}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(s):Ot((e=s.title)!==null&&e!==void 0?e:s[this.labelField])),S("div",{class:[`${t}-dropdown-option-body__suffix`,n&&`${t}-dropdown-option-body__suffix--has-submenu`],"data-dropdown-option":!0})));return a?a({node:l,option:s}):l}}),i8=de({name:"NDropdownGroup",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null}},render(){const{tmNode:e,parentKey:t,clsPrefix:n}=this,{children:o}=e;return S(He,null,S(r8,{clsPrefix:n,tmNode:e,key:e.key}),o==null?void 0:o.map(r=>{const{rawNode:i}=r;return i.show===!1?null:Pb(i)?S(Tb,{clsPrefix:n,key:r.key}):r.isGroup?(Dr("dropdown","`group` node is not allowed to be put in `group` node."),null):S(Ab,{clsPrefix:n,tmNode:r,parentKey:t,key:r.key})}))}}),a8=de({name:"DropdownRenderOption",props:{tmNode:{type:Object,required:!0}},render(){const{rawNode:{render:e,props:t}}=this.tmNode;return S("div",t,[e==null?void 0:e()])}}),Rb=de({name:"DropdownMenu",props:{scrollable:Boolean,showArrow:Boolean,arrowStyle:[String,Object],clsPrefix:{type:String,required:!0},tmNodes:{type:Array,default:()=>[]},parentKey:{type:[String,Number],default:null}},setup(e){const{renderIconRef:t,childrenFieldRef:n}=Me(Ls);je(Cd,{showIconRef:z(()=>{const r=t.value;return e.tmNodes.some(i=>{var a;if(i.isGroup)return(a=i.children)===null||a===void 0?void 0:a.some(({rawNode:l})=>r?r(l):l.icon);const{rawNode:s}=i;return r?r(s):s.icon})}),hasSubmenuRef:z(()=>{const{value:r}=n;return e.tmNodes.some(i=>{var a;if(i.isGroup)return(a=i.children)===null||a===void 0?void 0:a.some(({rawNode:l})=>oc(l,r));const{rawNode:s}=i;return oc(s,r)})})});const o=V(null);return je(Ss,null),je(Ts,null),je(Gi,o),{bodyRef:o}},render(){const{parentKey:e,clsPrefix:t,scrollable:n}=this,o=this.tmNodes.map(r=>{const{rawNode:i}=r;return i.show===!1?null:o8(i)?S(a8,{tmNode:r,key:r.key}):Pb(i)?S(Tb,{clsPrefix:t,key:r.key}):n8(i)?S(i8,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):S(Ab,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key,props:i.props,scrollable:n})});return S("div",{class:[`${t}-dropdown-menu`,n&&`${t}-dropdown-menu--scrollable`],ref:"bodyRef"},n?S(Rp,{contentClass:`${t}-dropdown-menu__content`},{default:()=>o}):o,this.showArrow?Op({clsPrefix:t,arrowStyle:this.arrowStyle,arrowClass:void 0,arrowWrapperClass:void 0,arrowWrapperStyle:void 0}):null)}}),s8=oe("dropdown-menu",` transform-origin: var(--v-transform-origin); background-color: var(--n-color); border-radius: var(--n-border-radius); @@ -885,7 +885,7 @@ ${t} padding: var(--n-padding); `),te("scrollable",[G("content",` padding: var(--n-padding); - `)])]),l8={animated:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},size:{type:String,default:"medium"},inverted:Boolean,placement:{type:String,default:"bottom"},onSelect:[Function,Array],options:{type:Array,default:()=>[]},menuProps:Function,showArrow:Boolean,renderLabel:Function,renderIcon:Function,renderOption:Function,nodeProps:Function,labelField:{type:String,default:"label"},keyField:{type:String,default:"key"},childrenField:{type:String,default:"children"},value:[String,Number]},c8=Object.keys(Is),d8=Object.assign(Object.assign(Object.assign({},Is),l8),Ee.props),u8=de({name:"Dropdown",inheritAttrs:!1,props:d8,setup(e){const t=V(!1),n=Vc(Ve(e,"show"),t),o=z(()=>{const{keyField:M,childrenField:j}=e;return fT(e.options,{getKey(ee){return ee[M]},getDisabled(ee){return ee.disabled===!0},getIgnored(ee){return ee.type==="divider"||ee.type==="render"},getChildren(ee){return ee[j]}})}),r=z(()=>o.value.treeNodes),i=V(null),a=V(null),s=V(null),l=z(()=>{var M,j,ee;return(ee=(j=(M=i.value)!==null&&M!==void 0?M:a.value)!==null&&j!==void 0?j:s.value)!==null&&ee!==void 0?ee:null}),c=z(()=>o.value.getPath(l.value).keyPath),d=z(()=>o.value.getPath(e.value).keyPath),u=Rt(()=>e.keyboard&&n.value);GC({keydown:{ArrowUp:{prevent:!0,handler:x},ArrowRight:{prevent:!0,handler:v},ArrowDown:{prevent:!0,handler:A},ArrowLeft:{prevent:!0,handler:T},Enter:{prevent:!0,handler:y},Escape:k}},u);const{mergedClsPrefixRef:h,inlineThemeDisabled:g}=dt(e),f=Ee("Dropdown","-dropdown",s8,Os,e,h);We(Ls,{labelFieldRef:Ve(e,"labelField"),childrenFieldRef:Ve(e,"childrenField"),renderLabelRef:Ve(e,"renderLabel"),renderIconRef:Ve(e,"renderIcon"),hoverKeyRef:i,keyboardKeyRef:a,lastToggledSubmenuKeyRef:s,pendingKeyPathRef:c,activeKeyPathRef:d,animatedRef:Ve(e,"animated"),mergedShowRef:n,nodePropsRef:Ve(e,"nodeProps"),renderOptionRef:Ve(e,"renderOption"),menuPropsRef:Ve(e,"menuProps"),doSelect:b,doUpdateShow:p}),ot(n,M=>{!e.animated&&!M&&m()});function b(M,j){const{onSelect:ee}=e;ee&&ze(ee,M,j)}function p(M){const{"onUpdate:show":j,onUpdateShow:ee}=e;j&&ze(j,M),ee&&ze(ee,M),t.value=M}function m(){i.value=null,a.value=null,s.value=null}function k(){p(!1)}function T(){P("left")}function v(){P("right")}function x(){P("up")}function A(){P("down")}function y(){const M=R();M!=null&&M.isLeaf&&n.value&&(b(M.key,M.rawNode),p(!1))}function R(){var M;const{value:j}=o,{value:ee}=l;return!j||ee===null?null:(M=j.getNode(ee))!==null&&M!==void 0?M:null}function P(M){const{value:j}=l,{value:{getFirstAvailableNode:ee}}=o;let B=null;if(j===null){const X=ee();X!==null&&(B=X.key)}else{const X=R();if(X){let $;switch(M){case"down":$=X.getNext();break;case"up":$=X.getPrev();break;case"right":$=X.getChild();break;case"left":$=X.getParent();break}$&&(B=$.key)}}B!==null&&(i.value=null,a.value=B)}const D=z(()=>{const{size:M,inverted:j}=e,{common:{cubicBezierEaseInOut:ee},self:B}=f.value,{padding:X,dividerColor:$,borderRadius:ie,optionOpacityDisabled:ve,[ge("optionIconSuffixWidth",M)]:ye,[ge("optionSuffixWidth",M)]:Ae,[ge("optionIconPrefixWidth",M)]:De,[ge("optionPrefixWidth",M)]:ut,[ge("fontSize",M)]:Je,[ge("optionHeight",M)]:pt,[ge("optionIconSize",M)]:_e}=B,Oe={"--n-bezier":ee,"--n-font-size":Je,"--n-padding":X,"--n-border-radius":ie,"--n-option-height":pt,"--n-option-prefix-width":ut,"--n-option-icon-prefix-width":De,"--n-option-suffix-width":Ae,"--n-option-icon-suffix-width":ye,"--n-option-icon-size":_e,"--n-divider-color":$,"--n-option-opacity-disabled":ve};return j?(Oe["--n-color"]=B.colorInverted,Oe["--n-option-color-hover"]=B.optionColorHoverInverted,Oe["--n-option-color-active"]=B.optionColorActiveInverted,Oe["--n-option-text-color"]=B.optionTextColorInverted,Oe["--n-option-text-color-hover"]=B.optionTextColorHoverInverted,Oe["--n-option-text-color-active"]=B.optionTextColorActiveInverted,Oe["--n-option-text-color-child-active"]=B.optionTextColorChildActiveInverted,Oe["--n-prefix-color"]=B.prefixColorInverted,Oe["--n-suffix-color"]=B.suffixColorInverted,Oe["--n-group-header-text-color"]=B.groupHeaderTextColorInverted):(Oe["--n-color"]=B.color,Oe["--n-option-color-hover"]=B.optionColorHover,Oe["--n-option-color-active"]=B.optionColorActive,Oe["--n-option-text-color"]=B.optionTextColor,Oe["--n-option-text-color-hover"]=B.optionTextColorHover,Oe["--n-option-text-color-active"]=B.optionTextColorActive,Oe["--n-option-text-color-child-active"]=B.optionTextColorChildActive,Oe["--n-prefix-color"]=B.prefixColor,Oe["--n-suffix-color"]=B.suffixColor,Oe["--n-group-header-text-color"]=B.groupHeaderTextColor),Oe}),W=g?Mt("dropdown",z(()=>`${e.size[0]}${e.inverted?"i":""}`),D,e):void 0;return{mergedClsPrefix:h,mergedTheme:f,tmNodes:r,mergedShow:n,handleAfterLeave:()=>{e.animated&&m()},doUpdateShow:p,cssVars:g?void 0:D,themeClass:W==null?void 0:W.themeClass,onRender:W==null?void 0:W.onRender}},render(){const e=(o,r,i,a,s)=>{var l;const{mergedClsPrefix:c,menuProps:d}=this;(l=this.onRender)===null||l===void 0||l.call(this);const u=(d==null?void 0:d(void 0,this.tmNodes.map(g=>g.rawNode)))||{},h={ref:q2(r),class:[o,`${c}-dropdown`,this.themeClass],clsPrefix:c,tmNodes:this.tmNodes,style:[...i,this.cssVars],showArrow:this.showArrow,arrowStyle:this.arrowStyle,scrollable:this.scrollable,onMouseenter:a,onMouseleave:s};return S(Rb,$n(this.$attrs,h,u))},{mergedTheme:t}=this,n={show:this.mergedShow,theme:t.peers.Popover,themeOverrides:t.peerOverrides.Popover,internalOnAfterLeave:this.handleAfterLeave,internalRenderBody:e,onUpdateShow:this.doUpdateShow,"onUpdate:show":void 0};return S(Ms,Object.assign({},or(this.$props,c8),n),{trigger:()=>{var o,r;return(r=(o=this.$slots).default)===null||r===void 0?void 0:r.call(o)}})}}),h8={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"};function Eb(e){const{popoverColor:t,textColor2:n,primaryColor:o,hoverColor:r,dividerColor:i,opacityDisabled:a,boxShadow2:s,borderRadius:l,iconColor:c,iconColorDisabled:d}=e;return Object.assign(Object.assign({},h8),{panelColor:t,panelBoxShadow:s,panelDividerColor:i,itemTextColor:n,itemTextColorActive:o,itemColorHover:r,itemOpacityDisabled:a,itemBorderRadius:l,borderRadius:l,iconColor:c,iconColorDisabled:d})}const Ib={name:"TimePicker",common:se,peers:{Scrollbar:Jt,Button:Qt,Input:fn},self:Eb},Mb={name:"TimePicker",common:ae,peers:{Scrollbar:an,Button:sn,Input:Cn},self:Eb},f8={itemSize:"24px",itemCellWidth:"38px",itemCellHeight:"32px",scrollItemWidth:"80px",scrollItemHeight:"40px",panelExtraFooterPadding:"8px 12px",panelActionPadding:"8px 12px",calendarTitlePadding:"0",calendarTitleHeight:"28px",arrowSize:"14px",panelHeaderPadding:"8px 12px",calendarDaysHeight:"32px",calendarTitleGridTempateColumns:"28px 28px 1fr 28px 28px",calendarLeftPaddingDate:"6px 12px 4px 12px",calendarLeftPaddingDatetime:"4px 12px",calendarLeftPaddingDaterange:"6px 12px 4px 12px",calendarLeftPaddingDatetimerange:"4px 12px",calendarLeftPaddingMonth:"0",calendarLeftPaddingYear:"0",calendarLeftPaddingQuarter:"0",calendarLeftPaddingMonthrange:"0",calendarLeftPaddingQuarterrange:"0",calendarLeftPaddingYearrange:"0",calendarLeftPaddingWeek:"6px 12px 4px 12px",calendarRightPaddingDate:"6px 12px 4px 12px",calendarRightPaddingDatetime:"4px 12px",calendarRightPaddingDaterange:"6px 12px 4px 12px",calendarRightPaddingDatetimerange:"4px 12px",calendarRightPaddingMonth:"0",calendarRightPaddingYear:"0",calendarRightPaddingQuarter:"0",calendarRightPaddingMonthrange:"0",calendarRightPaddingQuarterrange:"0",calendarRightPaddingYearrange:"0",calendarRightPaddingWeek:"0"};function Db(e){const{hoverColor:t,fontSize:n,textColor2:o,textColorDisabled:r,popoverColor:i,primaryColor:a,borderRadiusSmall:s,iconColor:l,iconColorDisabled:c,textColor1:d,dividerColor:u,boxShadow2:h,borderRadius:g,fontWeightStrong:f}=e;return Object.assign(Object.assign({},f8),{itemFontSize:n,calendarDaysFontSize:n,calendarTitleFontSize:n,itemTextColor:o,itemTextColorDisabled:r,itemTextColorActive:i,itemTextColorCurrent:a,itemColorIncluded:U(a,{alpha:.1}),itemColorHover:t,itemColorDisabled:t,itemColorActive:a,itemBorderRadius:s,panelColor:i,panelTextColor:o,arrowColor:l,calendarTitleTextColor:d,calendarTitleColorHover:t,calendarDaysTextColor:o,panelHeaderDividerColor:u,calendarDaysDividerColor:u,calendarDividerColor:u,panelActionDividerColor:u,panelBoxShadow:h,panelBorderRadius:g,calendarTitleFontWeight:f,scrollItemBorderRadius:g,iconColor:l,iconColorDisabled:c})}const g8={name:"DatePicker",common:se,peers:{Input:fn,Button:Qt,TimePicker:Ib,Scrollbar:Jt},self:Db},m8={name:"DatePicker",common:ae,peers:{Input:Cn,Button:sn,TimePicker:Mb,Scrollbar:an},self(e){const{popoverColor:t,hoverColor:n,primaryColor:o}=e,r=Db(e);return r.itemColorDisabled=ce(t,n),r.itemColorIncluded=U(o,{alpha:.15}),r.itemColorHover=ce(t,n),r}},p8={thPaddingBorderedSmall:"8px 12px",thPaddingBorderedMedium:"12px 16px",thPaddingBorderedLarge:"16px 24px",thPaddingSmall:"0",thPaddingMedium:"0",thPaddingLarge:"0",tdPaddingBorderedSmall:"8px 12px",tdPaddingBorderedMedium:"12px 16px",tdPaddingBorderedLarge:"16px 24px",tdPaddingSmall:"0 0 8px 0",tdPaddingMedium:"0 0 12px 0",tdPaddingLarge:"0 0 16px 0"};function Ob(e){const{tableHeaderColor:t,textColor2:n,textColor1:o,cardColor:r,modalColor:i,popoverColor:a,dividerColor:s,borderRadius:l,fontWeightStrong:c,lineHeight:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g}=e;return Object.assign(Object.assign({},p8),{lineHeight:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g,titleTextColor:o,thColor:ce(r,t),thColorModal:ce(i,t),thColorPopover:ce(a,t),thTextColor:o,thFontWeight:c,tdTextColor:n,tdColor:r,tdColorModal:i,tdColorPopover:a,borderColor:ce(r,s),borderColorModal:ce(i,s),borderColorPopover:ce(a,s),borderRadius:l})}const b8={name:"Descriptions",common:se,self:Ob},v8={name:"Descriptions",common:ae,self:Ob},y8={titleFontSize:"18px",padding:"16px 28px 20px 28px",iconSize:"28px",actionSpace:"12px",contentMargin:"8px 0 16px 0",iconMargin:"0 4px 0 0",iconMarginIconTop:"4px 0 8px 0",closeSize:"22px",closeIconSize:"18px",closeMargin:"20px 26px 0 0",closeMarginIconTop:"10px 16px 0 0"};function Lb(e){const{textColor1:t,textColor2:n,modalColor:o,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeColorHover:s,closeColorPressed:l,infoColor:c,successColor:d,warningColor:u,errorColor:h,primaryColor:g,dividerColor:f,borderRadius:b,fontWeightStrong:p,lineHeight:m,fontSize:k}=e;return Object.assign(Object.assign({},y8),{fontSize:k,lineHeight:m,border:`1px solid ${f}`,titleTextColor:t,textColor:n,color:o,closeColorHover:s,closeColorPressed:l,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeBorderRadius:b,iconColor:g,iconColorInfo:c,iconColorSuccess:d,iconColorWarning:u,iconColorError:h,borderRadius:b,titleFontWeight:p})}const kd={name:"Dialog",common:se,peers:{Button:Qt},self:Lb},Hb={name:"Dialog",common:ae,peers:{Button:sn},self:Lb},Hs={icon:Function,type:{type:String,default:"default"},title:[String,Function],closable:{type:Boolean,default:!0},negativeText:String,positiveText:String,positiveButtonProps:Object,negativeButtonProps:Object,content:[String,Function],action:Function,showIcon:{type:Boolean,default:!0},loading:Boolean,bordered:Boolean,iconPlacement:String,titleClass:[String,Array],titleStyle:[String,Object],contentClass:[String,Array],contentStyle:[String,Object],actionClass:[String,Array],actionStyle:[String,Object],onPositiveClick:Function,onNegativeClick:Function,onClose:Function},$b=ys(Hs),C8=F([oe("dialog",` + `)])]),l8={animated:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},size:{type:String,default:"medium"},inverted:Boolean,placement:{type:String,default:"bottom"},onSelect:[Function,Array],options:{type:Array,default:()=>[]},menuProps:Function,showArrow:Boolean,renderLabel:Function,renderIcon:Function,renderOption:Function,nodeProps:Function,labelField:{type:String,default:"label"},keyField:{type:String,default:"key"},childrenField:{type:String,default:"children"},value:[String,Number]},c8=Object.keys(Is),d8=Object.assign(Object.assign(Object.assign({},Is),l8),Ee.props),u8=de({name:"Dropdown",inheritAttrs:!1,props:d8,setup(e){const t=V(!1),n=Vc(Ve(e,"show"),t),o=z(()=>{const{keyField:M,childrenField:j}=e;return fT(e.options,{getKey(ee){return ee[M]},getDisabled(ee){return ee.disabled===!0},getIgnored(ee){return ee.type==="divider"||ee.type==="render"},getChildren(ee){return ee[j]}})}),r=z(()=>o.value.treeNodes),i=V(null),a=V(null),s=V(null),l=z(()=>{var M,j,ee;return(ee=(j=(M=i.value)!==null&&M!==void 0?M:a.value)!==null&&j!==void 0?j:s.value)!==null&&ee!==void 0?ee:null}),c=z(()=>o.value.getPath(l.value).keyPath),d=z(()=>o.value.getPath(e.value).keyPath),u=Rt(()=>e.keyboard&&n.value);GC({keydown:{ArrowUp:{prevent:!0,handler:x},ArrowRight:{prevent:!0,handler:v},ArrowDown:{prevent:!0,handler:A},ArrowLeft:{prevent:!0,handler:T},Enter:{prevent:!0,handler:y},Escape:k}},u);const{mergedClsPrefixRef:h,inlineThemeDisabled:g}=dt(e),f=Ee("Dropdown","-dropdown",s8,Os,e,h);je(Ls,{labelFieldRef:Ve(e,"labelField"),childrenFieldRef:Ve(e,"childrenField"),renderLabelRef:Ve(e,"renderLabel"),renderIconRef:Ve(e,"renderIcon"),hoverKeyRef:i,keyboardKeyRef:a,lastToggledSubmenuKeyRef:s,pendingKeyPathRef:c,activeKeyPathRef:d,animatedRef:Ve(e,"animated"),mergedShowRef:n,nodePropsRef:Ve(e,"nodeProps"),renderOptionRef:Ve(e,"renderOption"),menuPropsRef:Ve(e,"menuProps"),doSelect:b,doUpdateShow:p}),ot(n,M=>{!e.animated&&!M&&m()});function b(M,j){const{onSelect:ee}=e;ee&&ze(ee,M,j)}function p(M){const{"onUpdate:show":j,onUpdateShow:ee}=e;j&&ze(j,M),ee&&ze(ee,M),t.value=M}function m(){i.value=null,a.value=null,s.value=null}function k(){p(!1)}function T(){P("left")}function v(){P("right")}function x(){P("up")}function A(){P("down")}function y(){const M=R();M!=null&&M.isLeaf&&n.value&&(b(M.key,M.rawNode),p(!1))}function R(){var M;const{value:j}=o,{value:ee}=l;return!j||ee===null?null:(M=j.getNode(ee))!==null&&M!==void 0?M:null}function P(M){const{value:j}=l,{value:{getFirstAvailableNode:ee}}=o;let B=null;if(j===null){const X=ee();X!==null&&(B=X.key)}else{const X=R();if(X){let $;switch(M){case"down":$=X.getNext();break;case"up":$=X.getPrev();break;case"right":$=X.getChild();break;case"left":$=X.getParent();break}$&&(B=$.key)}}B!==null&&(i.value=null,a.value=B)}const D=z(()=>{const{size:M,inverted:j}=e,{common:{cubicBezierEaseInOut:ee},self:B}=f.value,{padding:X,dividerColor:$,borderRadius:ie,optionOpacityDisabled:ve,[ge("optionIconSuffixWidth",M)]:ye,[ge("optionSuffixWidth",M)]:Ae,[ge("optionIconPrefixWidth",M)]:De,[ge("optionPrefixWidth",M)]:ut,[ge("fontSize",M)]:Je,[ge("optionHeight",M)]:pt,[ge("optionIconSize",M)]:_e}=B,Oe={"--n-bezier":ee,"--n-font-size":Je,"--n-padding":X,"--n-border-radius":ie,"--n-option-height":pt,"--n-option-prefix-width":ut,"--n-option-icon-prefix-width":De,"--n-option-suffix-width":Ae,"--n-option-icon-suffix-width":ye,"--n-option-icon-size":_e,"--n-divider-color":$,"--n-option-opacity-disabled":ve};return j?(Oe["--n-color"]=B.colorInverted,Oe["--n-option-color-hover"]=B.optionColorHoverInverted,Oe["--n-option-color-active"]=B.optionColorActiveInverted,Oe["--n-option-text-color"]=B.optionTextColorInverted,Oe["--n-option-text-color-hover"]=B.optionTextColorHoverInverted,Oe["--n-option-text-color-active"]=B.optionTextColorActiveInverted,Oe["--n-option-text-color-child-active"]=B.optionTextColorChildActiveInverted,Oe["--n-prefix-color"]=B.prefixColorInverted,Oe["--n-suffix-color"]=B.suffixColorInverted,Oe["--n-group-header-text-color"]=B.groupHeaderTextColorInverted):(Oe["--n-color"]=B.color,Oe["--n-option-color-hover"]=B.optionColorHover,Oe["--n-option-color-active"]=B.optionColorActive,Oe["--n-option-text-color"]=B.optionTextColor,Oe["--n-option-text-color-hover"]=B.optionTextColorHover,Oe["--n-option-text-color-active"]=B.optionTextColorActive,Oe["--n-option-text-color-child-active"]=B.optionTextColorChildActive,Oe["--n-prefix-color"]=B.prefixColor,Oe["--n-suffix-color"]=B.suffixColor,Oe["--n-group-header-text-color"]=B.groupHeaderTextColor),Oe}),W=g?Mt("dropdown",z(()=>`${e.size[0]}${e.inverted?"i":""}`),D,e):void 0;return{mergedClsPrefix:h,mergedTheme:f,tmNodes:r,mergedShow:n,handleAfterLeave:()=>{e.animated&&m()},doUpdateShow:p,cssVars:g?void 0:D,themeClass:W==null?void 0:W.themeClass,onRender:W==null?void 0:W.onRender}},render(){const e=(o,r,i,a,s)=>{var l;const{mergedClsPrefix:c,menuProps:d}=this;(l=this.onRender)===null||l===void 0||l.call(this);const u=(d==null?void 0:d(void 0,this.tmNodes.map(g=>g.rawNode)))||{},h={ref:q2(r),class:[o,`${c}-dropdown`,this.themeClass],clsPrefix:c,tmNodes:this.tmNodes,style:[...i,this.cssVars],showArrow:this.showArrow,arrowStyle:this.arrowStyle,scrollable:this.scrollable,onMouseenter:a,onMouseleave:s};return S(Rb,$n(this.$attrs,h,u))},{mergedTheme:t}=this,n={show:this.mergedShow,theme:t.peers.Popover,themeOverrides:t.peerOverrides.Popover,internalOnAfterLeave:this.handleAfterLeave,internalRenderBody:e,onUpdateShow:this.doUpdateShow,"onUpdate:show":void 0};return S(Ms,Object.assign({},or(this.$props,c8),n),{trigger:()=>{var o,r;return(r=(o=this.$slots).default)===null||r===void 0?void 0:r.call(o)}})}}),h8={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"};function Eb(e){const{popoverColor:t,textColor2:n,primaryColor:o,hoverColor:r,dividerColor:i,opacityDisabled:a,boxShadow2:s,borderRadius:l,iconColor:c,iconColorDisabled:d}=e;return Object.assign(Object.assign({},h8),{panelColor:t,panelBoxShadow:s,panelDividerColor:i,itemTextColor:n,itemTextColorActive:o,itemColorHover:r,itemOpacityDisabled:a,itemBorderRadius:l,borderRadius:l,iconColor:c,iconColorDisabled:d})}const Ib={name:"TimePicker",common:se,peers:{Scrollbar:Jt,Button:Qt,Input:fn},self:Eb},Mb={name:"TimePicker",common:ae,peers:{Scrollbar:an,Button:sn,Input:kn},self:Eb},f8={itemSize:"24px",itemCellWidth:"38px",itemCellHeight:"32px",scrollItemWidth:"80px",scrollItemHeight:"40px",panelExtraFooterPadding:"8px 12px",panelActionPadding:"8px 12px",calendarTitlePadding:"0",calendarTitleHeight:"28px",arrowSize:"14px",panelHeaderPadding:"8px 12px",calendarDaysHeight:"32px",calendarTitleGridTempateColumns:"28px 28px 1fr 28px 28px",calendarLeftPaddingDate:"6px 12px 4px 12px",calendarLeftPaddingDatetime:"4px 12px",calendarLeftPaddingDaterange:"6px 12px 4px 12px",calendarLeftPaddingDatetimerange:"4px 12px",calendarLeftPaddingMonth:"0",calendarLeftPaddingYear:"0",calendarLeftPaddingQuarter:"0",calendarLeftPaddingMonthrange:"0",calendarLeftPaddingQuarterrange:"0",calendarLeftPaddingYearrange:"0",calendarLeftPaddingWeek:"6px 12px 4px 12px",calendarRightPaddingDate:"6px 12px 4px 12px",calendarRightPaddingDatetime:"4px 12px",calendarRightPaddingDaterange:"6px 12px 4px 12px",calendarRightPaddingDatetimerange:"4px 12px",calendarRightPaddingMonth:"0",calendarRightPaddingYear:"0",calendarRightPaddingQuarter:"0",calendarRightPaddingMonthrange:"0",calendarRightPaddingQuarterrange:"0",calendarRightPaddingYearrange:"0",calendarRightPaddingWeek:"0"};function Db(e){const{hoverColor:t,fontSize:n,textColor2:o,textColorDisabled:r,popoverColor:i,primaryColor:a,borderRadiusSmall:s,iconColor:l,iconColorDisabled:c,textColor1:d,dividerColor:u,boxShadow2:h,borderRadius:g,fontWeightStrong:f}=e;return Object.assign(Object.assign({},f8),{itemFontSize:n,calendarDaysFontSize:n,calendarTitleFontSize:n,itemTextColor:o,itemTextColorDisabled:r,itemTextColorActive:i,itemTextColorCurrent:a,itemColorIncluded:U(a,{alpha:.1}),itemColorHover:t,itemColorDisabled:t,itemColorActive:a,itemBorderRadius:s,panelColor:i,panelTextColor:o,arrowColor:l,calendarTitleTextColor:d,calendarTitleColorHover:t,calendarDaysTextColor:o,panelHeaderDividerColor:u,calendarDaysDividerColor:u,calendarDividerColor:u,panelActionDividerColor:u,panelBoxShadow:h,panelBorderRadius:g,calendarTitleFontWeight:f,scrollItemBorderRadius:g,iconColor:l,iconColorDisabled:c})}const g8={name:"DatePicker",common:se,peers:{Input:fn,Button:Qt,TimePicker:Ib,Scrollbar:Jt},self:Db},m8={name:"DatePicker",common:ae,peers:{Input:kn,Button:sn,TimePicker:Mb,Scrollbar:an},self(e){const{popoverColor:t,hoverColor:n,primaryColor:o}=e,r=Db(e);return r.itemColorDisabled=ce(t,n),r.itemColorIncluded=U(o,{alpha:.15}),r.itemColorHover=ce(t,n),r}},p8={thPaddingBorderedSmall:"8px 12px",thPaddingBorderedMedium:"12px 16px",thPaddingBorderedLarge:"16px 24px",thPaddingSmall:"0",thPaddingMedium:"0",thPaddingLarge:"0",tdPaddingBorderedSmall:"8px 12px",tdPaddingBorderedMedium:"12px 16px",tdPaddingBorderedLarge:"16px 24px",tdPaddingSmall:"0 0 8px 0",tdPaddingMedium:"0 0 12px 0",tdPaddingLarge:"0 0 16px 0"};function Ob(e){const{tableHeaderColor:t,textColor2:n,textColor1:o,cardColor:r,modalColor:i,popoverColor:a,dividerColor:s,borderRadius:l,fontWeightStrong:c,lineHeight:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g}=e;return Object.assign(Object.assign({},p8),{lineHeight:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g,titleTextColor:o,thColor:ce(r,t),thColorModal:ce(i,t),thColorPopover:ce(a,t),thTextColor:o,thFontWeight:c,tdTextColor:n,tdColor:r,tdColorModal:i,tdColorPopover:a,borderColor:ce(r,s),borderColorModal:ce(i,s),borderColorPopover:ce(a,s),borderRadius:l})}const b8={name:"Descriptions",common:se,self:Ob},v8={name:"Descriptions",common:ae,self:Ob},y8={titleFontSize:"18px",padding:"16px 28px 20px 28px",iconSize:"28px",actionSpace:"12px",contentMargin:"8px 0 16px 0",iconMargin:"0 4px 0 0",iconMarginIconTop:"4px 0 8px 0",closeSize:"22px",closeIconSize:"18px",closeMargin:"20px 26px 0 0",closeMarginIconTop:"10px 16px 0 0"};function Lb(e){const{textColor1:t,textColor2:n,modalColor:o,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeColorHover:s,closeColorPressed:l,infoColor:c,successColor:d,warningColor:u,errorColor:h,primaryColor:g,dividerColor:f,borderRadius:b,fontWeightStrong:p,lineHeight:m,fontSize:k}=e;return Object.assign(Object.assign({},y8),{fontSize:k,lineHeight:m,border:`1px solid ${f}`,titleTextColor:t,textColor:n,color:o,closeColorHover:s,closeColorPressed:l,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeBorderRadius:b,iconColor:g,iconColorInfo:c,iconColorSuccess:d,iconColorWarning:u,iconColorError:h,borderRadius:b,titleFontWeight:p})}const kd={name:"Dialog",common:se,peers:{Button:Qt},self:Lb},Hb={name:"Dialog",common:ae,peers:{Button:sn},self:Lb},Hs={icon:Function,type:{type:String,default:"default"},title:[String,Function],closable:{type:Boolean,default:!0},negativeText:String,positiveText:String,positiveButtonProps:Object,negativeButtonProps:Object,content:[String,Function],action:Function,showIcon:{type:Boolean,default:!0},loading:Boolean,bordered:Boolean,iconPlacement:String,titleClass:[String,Array],titleStyle:[String,Object],contentClass:[String,Array],contentStyle:[String,Object],actionClass:[String,Array],actionStyle:[String,Object],onPositiveClick:Function,onNegativeClick:Function,onClose:Function},$b=ys(Hs),C8=F([oe("dialog",` --n-icon-margin: var(--n-icon-margin-top) var(--n-icon-margin-right) var(--n-icon-margin-bottom) var(--n-icon-margin-left); word-break: break-word; line-height: var(--n-line-height); @@ -940,7 +940,7 @@ ${t} `)),oe("dialog",[cm(` width: 446px; max-width: calc(100vw - 32px); - `)])]),k8={default:()=>S(Ya,null),info:()=>S(Ya,null),success:()=>S(ld,null),warning:()=>S(cd,null),error:()=>S(sd,null)},Bb=de({name:"Dialog",alias:["NimbusConfirmCard","Confirm"],props:Object.assign(Object.assign({},Ee.props),Hs),setup(e){const{mergedComponentPropsRef:t,mergedClsPrefixRef:n,inlineThemeDisabled:o,mergedRtlRef:r}=dt(e),i=Ao("Dialog",r,n),a=z(()=>{var g,f;const{iconPlacement:b}=e;return b||((f=(g=t==null?void 0:t.value)===null||g===void 0?void 0:g.Dialog)===null||f===void 0?void 0:f.iconPlacement)||"left"});function s(g){const{onPositiveClick:f}=e;f&&f(g)}function l(g){const{onNegativeClick:f}=e;f&&f(g)}function c(){const{onClose:g}=e;g&&g()}const d=Ee("Dialog","-dialog",C8,kd,e,n),u=z(()=>{const{type:g}=e,f=a.value,{common:{cubicBezierEaseInOut:b},self:{fontSize:p,lineHeight:m,border:k,titleTextColor:T,textColor:v,color:x,closeBorderRadius:A,closeColorHover:y,closeColorPressed:R,closeIconColor:P,closeIconColorHover:D,closeIconColorPressed:W,closeIconSize:M,borderRadius:j,titleFontWeight:ee,titleFontSize:B,padding:X,iconSize:$,actionSpace:ie,contentMargin:ve,closeSize:ye,[f==="top"?"iconMarginIconTop":"iconMargin"]:Ae,[f==="top"?"closeMarginIconTop":"closeMargin"]:De,[ge("iconColor",g)]:ut}}=d.value,Je=Wi(Ae);return{"--n-font-size":p,"--n-icon-color":ut,"--n-bezier":b,"--n-close-margin":De,"--n-icon-margin-top":Je.top,"--n-icon-margin-right":Je.right,"--n-icon-margin-bottom":Je.bottom,"--n-icon-margin-left":Je.left,"--n-icon-size":$,"--n-close-size":ye,"--n-close-icon-size":M,"--n-close-border-radius":A,"--n-close-color-hover":y,"--n-close-color-pressed":R,"--n-close-icon-color":P,"--n-close-icon-color-hover":D,"--n-close-icon-color-pressed":W,"--n-color":x,"--n-text-color":v,"--n-border-radius":j,"--n-padding":X,"--n-line-height":m,"--n-border":k,"--n-content-margin":ve,"--n-title-font-size":B,"--n-title-font-weight":ee,"--n-title-text-color":T,"--n-action-space":ie}}),h=o?Mt("dialog",z(()=>`${e.type[0]}${a.value[0]}`),u,e):void 0;return{mergedClsPrefix:n,rtlEnabled:i,mergedIconPlacement:a,mergedTheme:d,handlePositiveClick:s,handleNegativeClick:l,handleCloseClick:c,cssVars:o?void 0:u,themeClass:h==null?void 0:h.themeClass,onRender:h==null?void 0:h.onRender}},render(){var e;const{bordered:t,mergedIconPlacement:n,cssVars:o,closable:r,showIcon:i,title:a,content:s,action:l,negativeText:c,positiveText:d,positiveButtonProps:u,negativeButtonProps:h,handlePositiveClick:g,handleNegativeClick:f,mergedTheme:b,loading:p,type:m,mergedClsPrefix:k}=this;(e=this.onRender)===null||e===void 0||e.call(this);const T=i?S(Co,{clsPrefix:k,class:`${k}-dialog__icon`},{default:()=>Pt(this.$slots.icon,x=>x||(this.icon?Ot(this.icon):k8[this.type]()))}):null,v=Pt(this.$slots.action,x=>x||d||c||l?S("div",{class:[`${k}-dialog__action`,this.actionClass],style:this.actionStyle},x||(l?[Ot(l)]:[this.negativeText&&S(Qa,Object.assign({theme:b.peers.Button,themeOverrides:b.peerOverrides.Button,ghost:!0,size:"small",onClick:f},h),{default:()=>Ot(this.negativeText)}),this.positiveText&&S(Qa,Object.assign({theme:b.peers.Button,themeOverrides:b.peerOverrides.Button,size:"small",type:m==="default"?"primary":m,disabled:p,loading:p,onClick:g},u),{default:()=>Ot(this.positiveText)})])):null);return S("div",{class:[`${k}-dialog`,this.themeClass,this.closable&&`${k}-dialog--closable`,`${k}-dialog--icon-${n}`,t&&`${k}-dialog--bordered`,this.rtlEnabled&&`${k}-dialog--rtl`],style:o,role:"dialog"},r?Pt(this.$slots.close,x=>{const A=[`${k}-dialog__close`,this.rtlEnabled&&`${k}-dialog--rtl`];return x?S("div",{class:A},x):S(Es,{clsPrefix:k,class:A,onClick:this.handleCloseClick})}):null,i&&n==="top"?S("div",{class:`${k}-dialog-icon-container`},T):null,S("div",{class:[`${k}-dialog__title`,this.titleClass],style:this.titleStyle},i&&n==="left"?T:null,Zo(this.$slots.header,()=>[Ot(a)])),S("div",{class:[`${k}-dialog__content`,v?"":`${k}-dialog__content--last`,this.contentClass],style:this.contentStyle},Zo(this.$slots.default,()=>[Ot(s)])),v)}}),Nb="n-dialog-provider",x8="n-dialog-api",S8="n-dialog-reactive-list";function zb(e){const{modalColor:t,textColor2:n,boxShadow3:o}=e;return{color:t,textColor:n,boxShadow:o}}const Fb={name:"Modal",common:se,peers:{Scrollbar:Jt,Dialog:kd,Card:md},self:zb},T8={name:"Modal",common:ae,peers:{Scrollbar:an,Dialog:Hb,Card:tb},self:zb},xd=Object.assign(Object.assign({},pd),Hs),w8=ys(xd),_8=de({name:"ModalBody",inheritAttrs:!1,props:Object.assign(Object.assign({show:{type:Boolean,required:!0},preset:String,displayDirective:{type:String,required:!0},trapFocus:{type:Boolean,default:!0},autoFocus:{type:Boolean,default:!0},blockScroll:Boolean},xd),{renderMask:Function,onClickoutside:Function,onBeforeLeave:{type:Function,required:!0},onAfterLeave:{type:Function,required:!0},onPositiveClick:{type:Function,required:!0},onNegativeClick:{type:Function,required:!0},onClose:{type:Function,required:!0},onAfterEnter:Function,onEsc:Function}),setup(e){const t=V(null),n=V(null),o=V(e.show),r=V(null),i=V(null);ot(Ve(e,"show"),p=>{p&&(o.value=!0)}),Dk(z(()=>e.blockScroll&&o.value));const a=Me(gm);function s(){if(a.transformOriginRef.value==="center")return"";const{value:p}=r,{value:m}=i;if(p===null||m===null)return"";if(n.value){const k=n.value.containerScrollTop;return`${p}px ${m+k}px`}return""}function l(p){if(a.transformOriginRef.value==="center")return;const m=a.getMousePosition();if(!m||!n.value)return;const k=n.value.containerScrollTop,{offsetLeft:T,offsetTop:v}=p;if(m){const x=m.y,A=m.x;r.value=-(T-A),i.value=-(v-x-k)}p.style.transformOrigin=s()}function c(p){jt(()=>{l(p)})}function d(p){p.style.transformOrigin=s(),e.onBeforeLeave()}function u(){o.value=!1,r.value=null,i.value=null,e.onAfterLeave()}function h(){const{onClose:p}=e;p&&p()}function g(){e.onNegativeClick()}function f(){e.onPositiveClick()}const b=V(null);return ot(b,p=>{p&&jt(()=>{const m=p.el;m&&t.value!==m&&(t.value=m)})}),We(Ss,t),We(Ts,null),We(Gi,null),{mergedTheme:a.mergedThemeRef,appear:a.appearRef,isMounted:a.isMountedRef,mergedClsPrefix:a.mergedClsPrefixRef,bodyRef:t,scrollbarRef:n,displayed:o,childNodeRef:b,handlePositiveClick:f,handleNegativeClick:g,handleCloseClick:h,handleAfterLeave:u,handleBeforeLeave:d,handleEnter:c}},render(){const{$slots:e,$attrs:t,handleEnter:n,handleAfterLeave:o,handleBeforeLeave:r,preset:i,mergedClsPrefix:a}=this;let s=null;if(!i){if(s=zl(e),!s){Dr("modal","default slot is empty");return}s=vn(s),s.props=$n({class:`${a}-modal`},t,s.props||{})}return this.displayDirective==="show"||this.displayed||this.show?po(S("div",{role:"none",class:`${a}-modal-body-wrapper`},S(Ki,{ref:"scrollbarRef",theme:this.mergedTheme.peers.Scrollbar,themeOverrides:this.mergedTheme.peerOverrides.Scrollbar,contentClass:`${a}-modal-scroll-content`},{default:()=>{var l;return[(l=this.renderMask)===null||l===void 0?void 0:l.call(this),S(Mm,{disabled:!this.trapFocus,active:this.show,onEsc:this.onEsc,autoFocus:this.autoFocus},{default:()=>{var c;return S(Bn,{name:"fade-in-scale-up-transition",appear:(c=this.appear)!==null&&c!==void 0?c:this.isMounted,onEnter:n,onAfterEnter:this.onAfterEnter,onAfterLeave:o,onBeforeLeave:r},{default:()=>{const d=[[Mr,this.show]],{onClickoutside:u}=this;return u&&d.push([Vl,this.onClickoutside,void 0,{capture:!0}]),po(this.preset==="confirm"||this.preset==="dialog"?S(Bb,Object.assign({},this.$attrs,{class:[`${a}-modal`,this.$attrs.class],ref:"bodyRef",theme:this.mergedTheme.peers.Dialog,themeOverrides:this.mergedTheme.peerOverrides.Dialog},or(this.$props,$b),{"aria-modal":"true"}),e):this.preset==="card"?S(Pw,Object.assign({},this.$attrs,{ref:"bodyRef",class:[`${a}-modal`,this.$attrs.class],theme:this.mergedTheme.peers.Card,themeOverrides:this.mergedTheme.peerOverrides.Card},or(this.$props,ww),{"aria-modal":"true",role:"dialog"}),e):this.childNodeRef=s,d)}})}})]}})),[[Mr,this.displayDirective==="if"||this.displayed||this.show]]):null}}),P8=F([oe("modal-container",` + `)])]),k8={default:()=>S(Ya,null),info:()=>S(Ya,null),success:()=>S(ld,null),warning:()=>S(cd,null),error:()=>S(sd,null)},Bb=de({name:"Dialog",alias:["NimbusConfirmCard","Confirm"],props:Object.assign(Object.assign({},Ee.props),Hs),setup(e){const{mergedComponentPropsRef:t,mergedClsPrefixRef:n,inlineThemeDisabled:o,mergedRtlRef:r}=dt(e),i=Ao("Dialog",r,n),a=z(()=>{var g,f;const{iconPlacement:b}=e;return b||((f=(g=t==null?void 0:t.value)===null||g===void 0?void 0:g.Dialog)===null||f===void 0?void 0:f.iconPlacement)||"left"});function s(g){const{onPositiveClick:f}=e;f&&f(g)}function l(g){const{onNegativeClick:f}=e;f&&f(g)}function c(){const{onClose:g}=e;g&&g()}const d=Ee("Dialog","-dialog",C8,kd,e,n),u=z(()=>{const{type:g}=e,f=a.value,{common:{cubicBezierEaseInOut:b},self:{fontSize:p,lineHeight:m,border:k,titleTextColor:T,textColor:v,color:x,closeBorderRadius:A,closeColorHover:y,closeColorPressed:R,closeIconColor:P,closeIconColorHover:D,closeIconColorPressed:W,closeIconSize:M,borderRadius:j,titleFontWeight:ee,titleFontSize:B,padding:X,iconSize:$,actionSpace:ie,contentMargin:ve,closeSize:ye,[f==="top"?"iconMarginIconTop":"iconMargin"]:Ae,[f==="top"?"closeMarginIconTop":"closeMargin"]:De,[ge("iconColor",g)]:ut}}=d.value,Je=Wi(Ae);return{"--n-font-size":p,"--n-icon-color":ut,"--n-bezier":b,"--n-close-margin":De,"--n-icon-margin-top":Je.top,"--n-icon-margin-right":Je.right,"--n-icon-margin-bottom":Je.bottom,"--n-icon-margin-left":Je.left,"--n-icon-size":$,"--n-close-size":ye,"--n-close-icon-size":M,"--n-close-border-radius":A,"--n-close-color-hover":y,"--n-close-color-pressed":R,"--n-close-icon-color":P,"--n-close-icon-color-hover":D,"--n-close-icon-color-pressed":W,"--n-color":x,"--n-text-color":v,"--n-border-radius":j,"--n-padding":X,"--n-line-height":m,"--n-border":k,"--n-content-margin":ve,"--n-title-font-size":B,"--n-title-font-weight":ee,"--n-title-text-color":T,"--n-action-space":ie}}),h=o?Mt("dialog",z(()=>`${e.type[0]}${a.value[0]}`),u,e):void 0;return{mergedClsPrefix:n,rtlEnabled:i,mergedIconPlacement:a,mergedTheme:d,handlePositiveClick:s,handleNegativeClick:l,handleCloseClick:c,cssVars:o?void 0:u,themeClass:h==null?void 0:h.themeClass,onRender:h==null?void 0:h.onRender}},render(){var e;const{bordered:t,mergedIconPlacement:n,cssVars:o,closable:r,showIcon:i,title:a,content:s,action:l,negativeText:c,positiveText:d,positiveButtonProps:u,negativeButtonProps:h,handlePositiveClick:g,handleNegativeClick:f,mergedTheme:b,loading:p,type:m,mergedClsPrefix:k}=this;(e=this.onRender)===null||e===void 0||e.call(this);const T=i?S(Co,{clsPrefix:k,class:`${k}-dialog__icon`},{default:()=>Pt(this.$slots.icon,x=>x||(this.icon?Ot(this.icon):k8[this.type]()))}):null,v=Pt(this.$slots.action,x=>x||d||c||l?S("div",{class:[`${k}-dialog__action`,this.actionClass],style:this.actionStyle},x||(l?[Ot(l)]:[this.negativeText&&S(Qa,Object.assign({theme:b.peers.Button,themeOverrides:b.peerOverrides.Button,ghost:!0,size:"small",onClick:f},h),{default:()=>Ot(this.negativeText)}),this.positiveText&&S(Qa,Object.assign({theme:b.peers.Button,themeOverrides:b.peerOverrides.Button,size:"small",type:m==="default"?"primary":m,disabled:p,loading:p,onClick:g},u),{default:()=>Ot(this.positiveText)})])):null);return S("div",{class:[`${k}-dialog`,this.themeClass,this.closable&&`${k}-dialog--closable`,`${k}-dialog--icon-${n}`,t&&`${k}-dialog--bordered`,this.rtlEnabled&&`${k}-dialog--rtl`],style:o,role:"dialog"},r?Pt(this.$slots.close,x=>{const A=[`${k}-dialog__close`,this.rtlEnabled&&`${k}-dialog--rtl`];return x?S("div",{class:A},x):S(Es,{clsPrefix:k,class:A,onClick:this.handleCloseClick})}):null,i&&n==="top"?S("div",{class:`${k}-dialog-icon-container`},T):null,S("div",{class:[`${k}-dialog__title`,this.titleClass],style:this.titleStyle},i&&n==="left"?T:null,Zo(this.$slots.header,()=>[Ot(a)])),S("div",{class:[`${k}-dialog__content`,v?"":`${k}-dialog__content--last`,this.contentClass],style:this.contentStyle},Zo(this.$slots.default,()=>[Ot(s)])),v)}}),Nb="n-dialog-provider",x8="n-dialog-api",S8="n-dialog-reactive-list";function zb(e){const{modalColor:t,textColor2:n,boxShadow3:o}=e;return{color:t,textColor:n,boxShadow:o}}const Fb={name:"Modal",common:se,peers:{Scrollbar:Jt,Dialog:kd,Card:md},self:zb},T8={name:"Modal",common:ae,peers:{Scrollbar:an,Dialog:Hb,Card:tb},self:zb},xd=Object.assign(Object.assign({},pd),Hs),w8=ys(xd),_8=de({name:"ModalBody",inheritAttrs:!1,props:Object.assign(Object.assign({show:{type:Boolean,required:!0},preset:String,displayDirective:{type:String,required:!0},trapFocus:{type:Boolean,default:!0},autoFocus:{type:Boolean,default:!0},blockScroll:Boolean},xd),{renderMask:Function,onClickoutside:Function,onBeforeLeave:{type:Function,required:!0},onAfterLeave:{type:Function,required:!0},onPositiveClick:{type:Function,required:!0},onNegativeClick:{type:Function,required:!0},onClose:{type:Function,required:!0},onAfterEnter:Function,onEsc:Function}),setup(e){const t=V(null),n=V(null),o=V(e.show),r=V(null),i=V(null);ot(Ve(e,"show"),p=>{p&&(o.value=!0)}),Dk(z(()=>e.blockScroll&&o.value));const a=Me(gm);function s(){if(a.transformOriginRef.value==="center")return"";const{value:p}=r,{value:m}=i;if(p===null||m===null)return"";if(n.value){const k=n.value.containerScrollTop;return`${p}px ${m+k}px`}return""}function l(p){if(a.transformOriginRef.value==="center")return;const m=a.getMousePosition();if(!m||!n.value)return;const k=n.value.containerScrollTop,{offsetLeft:T,offsetTop:v}=p;if(m){const x=m.y,A=m.x;r.value=-(T-A),i.value=-(v-x-k)}p.style.transformOrigin=s()}function c(p){jt(()=>{l(p)})}function d(p){p.style.transformOrigin=s(),e.onBeforeLeave()}function u(){o.value=!1,r.value=null,i.value=null,e.onAfterLeave()}function h(){const{onClose:p}=e;p&&p()}function g(){e.onNegativeClick()}function f(){e.onPositiveClick()}const b=V(null);return ot(b,p=>{p&&jt(()=>{const m=p.el;m&&t.value!==m&&(t.value=m)})}),je(Ss,t),je(Ts,null),je(Gi,null),{mergedTheme:a.mergedThemeRef,appear:a.appearRef,isMounted:a.isMountedRef,mergedClsPrefix:a.mergedClsPrefixRef,bodyRef:t,scrollbarRef:n,displayed:o,childNodeRef:b,handlePositiveClick:f,handleNegativeClick:g,handleCloseClick:h,handleAfterLeave:u,handleBeforeLeave:d,handleEnter:c}},render(){const{$slots:e,$attrs:t,handleEnter:n,handleAfterLeave:o,handleBeforeLeave:r,preset:i,mergedClsPrefix:a}=this;let s=null;if(!i){if(s=zl(e),!s){Dr("modal","default slot is empty");return}s=yn(s),s.props=$n({class:`${a}-modal`},t,s.props||{})}return this.displayDirective==="show"||this.displayed||this.show?po(S("div",{role:"none",class:`${a}-modal-body-wrapper`},S(Ki,{ref:"scrollbarRef",theme:this.mergedTheme.peers.Scrollbar,themeOverrides:this.mergedTheme.peerOverrides.Scrollbar,contentClass:`${a}-modal-scroll-content`},{default:()=>{var l;return[(l=this.renderMask)===null||l===void 0?void 0:l.call(this),S(Mm,{disabled:!this.trapFocus,active:this.show,onEsc:this.onEsc,autoFocus:this.autoFocus},{default:()=>{var c;return S(Bn,{name:"fade-in-scale-up-transition",appear:(c=this.appear)!==null&&c!==void 0?c:this.isMounted,onEnter:n,onAfterEnter:this.onAfterEnter,onAfterLeave:o,onBeforeLeave:r},{default:()=>{const d=[[Mr,this.show]],{onClickoutside:u}=this;return u&&d.push([Vl,this.onClickoutside,void 0,{capture:!0}]),po(this.preset==="confirm"||this.preset==="dialog"?S(Bb,Object.assign({},this.$attrs,{class:[`${a}-modal`,this.$attrs.class],ref:"bodyRef",theme:this.mergedTheme.peers.Dialog,themeOverrides:this.mergedTheme.peerOverrides.Dialog},or(this.$props,$b),{"aria-modal":"true"}),e):this.preset==="card"?S(Pw,Object.assign({},this.$attrs,{ref:"bodyRef",class:[`${a}-modal`,this.$attrs.class],theme:this.mergedTheme.peers.Card,themeOverrides:this.mergedTheme.peerOverrides.Card},or(this.$props,ww),{"aria-modal":"true",role:"dialog"}),e):this.childNodeRef=s,d)}})}})]}})),[[Mr,this.displayDirective==="if"||this.displayed||this.show]]):null}}),P8=F([oe("modal-container",` position: fixed; left: 0; top: 0; @@ -971,7 +971,7 @@ ${t} color: var(--n-text-color); margin: auto; box-shadow: var(--n-box-shadow); - `,[Ip({duration:".25s",enterScale:".5"})])]),A8=Object.assign(Object.assign(Object.assign(Object.assign({},Ee.props),{show:Boolean,unstableShowMask:{type:Boolean,default:!0},maskClosable:{type:Boolean,default:!0},preset:String,to:[String,Object],displayDirective:{type:String,default:"if"},transformOrigin:{type:String,default:"mouse"},zIndex:Number,autoFocus:{type:Boolean,default:!0},trapFocus:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},blockScroll:{type:Boolean,default:!0}}),xd),{onEsc:Function,"onUpdate:show":[Function,Array],onUpdateShow:[Function,Array],onAfterEnter:Function,onBeforeLeave:Function,onAfterLeave:Function,onClose:Function,onPositiveClick:Function,onNegativeClick:Function,onMaskClick:Function,internalDialog:Boolean,internalModal:Boolean,internalAppear:{type:Boolean,default:void 0},overlayStyle:[String,Object],onBeforeHide:Function,onAfterHide:Function,onHide:Function}),R8=de({name:"Modal",inheritAttrs:!1,props:A8,setup(e){const t=V(null),{mergedClsPrefixRef:n,namespaceRef:o,inlineThemeDisabled:r}=dt(e),i=Ee("Modal","-modal",P8,Fb,e,n),a=hm(64),s=um(),l=ji(),c=e.internalDialog?Me(Nb,null):null,d=e.internalModal?Me(UC,null):null,u=Ok();function h(A){const{onUpdateShow:y,"onUpdate:show":R,onHide:P}=e;y&&ze(y,A),R&&ze(R,A),P&&!A&&P(A)}function g(){const{onClose:A}=e;A?Promise.resolve(A()).then(y=>{y!==!1&&h(!1)}):h(!1)}function f(){const{onPositiveClick:A}=e;A?Promise.resolve(A()).then(y=>{y!==!1&&h(!1)}):h(!1)}function b(){const{onNegativeClick:A}=e;A?Promise.resolve(A()).then(y=>{y!==!1&&h(!1)}):h(!1)}function p(){const{onBeforeLeave:A,onBeforeHide:y}=e;A&&ze(A),y&&y()}function m(){const{onAfterLeave:A,onAfterHide:y}=e;A&&ze(A),y&&y()}function k(A){var y;const{onMaskClick:R}=e;R&&R(A),e.maskClosable&&!((y=t.value)===null||y===void 0)&&y.contains(Ai(A))&&h(!1)}function T(A){var y;(y=e.onEsc)===null||y===void 0||y.call(e),e.show&&e.closeOnEsc&&TC(A)&&(u.value||h(!1))}We(gm,{getMousePosition:()=>{const A=c||d;if(A){const{clickedRef:y,clickedPositionRef:R}=A;if(y.value&&R.value)return R.value}return a.value?s.value:null},mergedClsPrefixRef:n,mergedThemeRef:i,isMountedRef:l,appearRef:Ve(e,"internalAppear"),transformOriginRef:Ve(e,"transformOrigin")});const v=z(()=>{const{common:{cubicBezierEaseOut:A},self:{boxShadow:y,color:R,textColor:P}}=i.value;return{"--n-bezier-ease-out":A,"--n-box-shadow":y,"--n-color":R,"--n-text-color":P}}),x=r?Mt("theme-class",void 0,v,e):void 0;return{mergedClsPrefix:n,namespace:o,isMounted:l,containerRef:t,presetProps:z(()=>or(e,w8)),handleEsc:T,handleAfterLeave:m,handleClickoutside:k,handleBeforeLeave:p,doUpdateShow:h,handleNegativeClick:b,handlePositiveClick:f,handleCloseClick:g,cssVars:r?void 0:v,themeClass:x==null?void 0:x.themeClass,onRender:x==null?void 0:x.onRender}},render(){const{mergedClsPrefix:e}=this;return S(Cm,{to:this.to,show:this.show},{default:()=>{var t;(t=this.onRender)===null||t===void 0||t.call(this);const{unstableShowMask:n}=this;return po(S("div",{role:"none",ref:"containerRef",class:[`${e}-modal-container`,this.themeClass,this.namespace],style:this.cssVars},S(_8,Object.assign({style:this.overlayStyle},this.$attrs,{ref:"bodyWrapper",displayDirective:this.displayDirective,show:this.show,preset:this.preset,autoFocus:this.autoFocus,trapFocus:this.trapFocus,blockScroll:this.blockScroll},this.presetProps,{onEsc:this.handleEsc,onClose:this.handleCloseClick,onNegativeClick:this.handleNegativeClick,onPositiveClick:this.handlePositiveClick,onBeforeLeave:this.handleBeforeLeave,onAfterEnter:this.onAfterEnter,onAfterLeave:this.handleAfterLeave,onClickoutside:n?void 0:this.handleClickoutside,renderMask:n?()=>{var o;return S(Bn,{name:"fade-in-transition",key:"mask",appear:(o=this.internalAppear)!==null&&o!==void 0?o:this.isMounted},{default:()=>this.show?S("div",{"aria-hidden":!0,ref:"containerRef",class:`${e}-modal-mask`,onClick:this.handleClickoutside}):null})}:void 0}),this.$slots)),[[Uc,{zIndex:this.zIndex,enabled:this.show}]])}})}}),E8=Object.assign(Object.assign({},Hs),{onAfterEnter:Function,onAfterLeave:Function,transformOrigin:String,blockScroll:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},onEsc:Function,autoFocus:{type:Boolean,default:!0},internalStyle:[String,Object],maskClosable:{type:Boolean,default:!0},onPositiveClick:Function,onNegativeClick:Function,onClose:Function,onMaskClick:Function}),I8=de({name:"DialogEnvironment",props:Object.assign(Object.assign({},E8),{internalKey:{type:String,required:!0},to:[String,Object],onInternalAfterLeave:{type:Function,required:!0}}),setup(e){const t=V(!0);function n(){const{onInternalAfterLeave:d,internalKey:u,onAfterLeave:h}=e;d&&d(u),h&&h()}function o(d){const{onPositiveClick:u}=e;u?Promise.resolve(u(d)).then(h=>{h!==!1&&l()}):l()}function r(d){const{onNegativeClick:u}=e;u?Promise.resolve(u(d)).then(h=>{h!==!1&&l()}):l()}function i(){const{onClose:d}=e;d?Promise.resolve(d()).then(u=>{u!==!1&&l()}):l()}function a(d){const{onMaskClick:u,maskClosable:h}=e;u&&(u(d),h&&l())}function s(){const{onEsc:d}=e;d&&d()}function l(){t.value=!1}function c(d){t.value=d}return{show:t,hide:l,handleUpdateShow:c,handleAfterLeave:n,handleCloseClick:i,handleNegativeClick:r,handlePositiveClick:o,handleMaskClick:a,handleEsc:s}},render(){const{handlePositiveClick:e,handleUpdateShow:t,handleNegativeClick:n,handleCloseClick:o,handleAfterLeave:r,handleMaskClick:i,handleEsc:a,to:s,maskClosable:l,show:c}=this;return S(R8,{show:c,onUpdateShow:t,onMaskClick:i,onEsc:a,to:s,maskClosable:l,onAfterEnter:this.onAfterEnter,onAfterLeave:r,closeOnEsc:this.closeOnEsc,blockScroll:this.blockScroll,autoFocus:this.autoFocus,transformOrigin:this.transformOrigin,internalAppear:!0,internalDialog:!0},{default:()=>S(Bb,Object.assign({},or(this.$props,$b),{style:this.internalStyle,onClose:o,onNegativeClick:n,onPositiveClick:e}))})}}),M8={injectionKey:String,to:[String,Object]},D8=de({name:"DialogProvider",props:M8,setup(){const e=V([]),t={};function n(s={}){const l=vs(),c=wo(Object.assign(Object.assign({},s),{key:l,destroy:()=>{var d;(d=t[`n-dialog-${l}`])===null||d===void 0||d.hide()}}));return e.value.push(c),c}const o=["info","success","warning","error"].map(s=>l=>n(Object.assign(Object.assign({},l),{type:s})));function r(s){const{value:l}=e;l.splice(l.findIndex(c=>c.key===s),1)}function i(){Object.values(t).forEach(s=>{s==null||s.hide()})}const a={create:n,destroyAll:i,info:o[0],success:o[1],warning:o[2],error:o[3]};return We(x8,a),We(Nb,{clickedRef:hm(64),clickedPositionRef:um()}),We(S8,e),Object.assign(Object.assign({},a),{dialogList:e,dialogInstRefs:t,handleAfterLeave:r})},render(){var e,t;return S(He,null,[this.dialogList.map(n=>S(I8,Gc(n,["destroy","style"],{internalStyle:n.style,to:this.to,ref:o=>{o===null?delete this.dialogInstRefs[`n-dialog-${n.key}`]:this.dialogInstRefs[`n-dialog-${n.key}`]=o},internalKey:n.key,onInternalAfterLeave:this.handleAfterLeave}))),(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e)])}});function Wb(e){const{textColor1:t,dividerColor:n,fontWeightStrong:o}=e;return{textColor:t,color:n,fontWeight:o}}const jb={name:"Divider",common:se,self:Wb},O8={name:"Divider",common:ae,self:Wb},L8=oe("divider",` + `,[Ip({duration:".25s",enterScale:".5"})])]),A8=Object.assign(Object.assign(Object.assign(Object.assign({},Ee.props),{show:Boolean,unstableShowMask:{type:Boolean,default:!0},maskClosable:{type:Boolean,default:!0},preset:String,to:[String,Object],displayDirective:{type:String,default:"if"},transformOrigin:{type:String,default:"mouse"},zIndex:Number,autoFocus:{type:Boolean,default:!0},trapFocus:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},blockScroll:{type:Boolean,default:!0}}),xd),{onEsc:Function,"onUpdate:show":[Function,Array],onUpdateShow:[Function,Array],onAfterEnter:Function,onBeforeLeave:Function,onAfterLeave:Function,onClose:Function,onPositiveClick:Function,onNegativeClick:Function,onMaskClick:Function,internalDialog:Boolean,internalModal:Boolean,internalAppear:{type:Boolean,default:void 0},overlayStyle:[String,Object],onBeforeHide:Function,onAfterHide:Function,onHide:Function}),R8=de({name:"Modal",inheritAttrs:!1,props:A8,setup(e){const t=V(null),{mergedClsPrefixRef:n,namespaceRef:o,inlineThemeDisabled:r}=dt(e),i=Ee("Modal","-modal",P8,Fb,e,n),a=hm(64),s=um(),l=ji(),c=e.internalDialog?Me(Nb,null):null,d=e.internalModal?Me(UC,null):null,u=Ok();function h(A){const{onUpdateShow:y,"onUpdate:show":R,onHide:P}=e;y&&ze(y,A),R&&ze(R,A),P&&!A&&P(A)}function g(){const{onClose:A}=e;A?Promise.resolve(A()).then(y=>{y!==!1&&h(!1)}):h(!1)}function f(){const{onPositiveClick:A}=e;A?Promise.resolve(A()).then(y=>{y!==!1&&h(!1)}):h(!1)}function b(){const{onNegativeClick:A}=e;A?Promise.resolve(A()).then(y=>{y!==!1&&h(!1)}):h(!1)}function p(){const{onBeforeLeave:A,onBeforeHide:y}=e;A&&ze(A),y&&y()}function m(){const{onAfterLeave:A,onAfterHide:y}=e;A&&ze(A),y&&y()}function k(A){var y;const{onMaskClick:R}=e;R&&R(A),e.maskClosable&&!((y=t.value)===null||y===void 0)&&y.contains(Ai(A))&&h(!1)}function T(A){var y;(y=e.onEsc)===null||y===void 0||y.call(e),e.show&&e.closeOnEsc&&TC(A)&&(u.value||h(!1))}je(gm,{getMousePosition:()=>{const A=c||d;if(A){const{clickedRef:y,clickedPositionRef:R}=A;if(y.value&&R.value)return R.value}return a.value?s.value:null},mergedClsPrefixRef:n,mergedThemeRef:i,isMountedRef:l,appearRef:Ve(e,"internalAppear"),transformOriginRef:Ve(e,"transformOrigin")});const v=z(()=>{const{common:{cubicBezierEaseOut:A},self:{boxShadow:y,color:R,textColor:P}}=i.value;return{"--n-bezier-ease-out":A,"--n-box-shadow":y,"--n-color":R,"--n-text-color":P}}),x=r?Mt("theme-class",void 0,v,e):void 0;return{mergedClsPrefix:n,namespace:o,isMounted:l,containerRef:t,presetProps:z(()=>or(e,w8)),handleEsc:T,handleAfterLeave:m,handleClickoutside:k,handleBeforeLeave:p,doUpdateShow:h,handleNegativeClick:b,handlePositiveClick:f,handleCloseClick:g,cssVars:r?void 0:v,themeClass:x==null?void 0:x.themeClass,onRender:x==null?void 0:x.onRender}},render(){const{mergedClsPrefix:e}=this;return S(Cm,{to:this.to,show:this.show},{default:()=>{var t;(t=this.onRender)===null||t===void 0||t.call(this);const{unstableShowMask:n}=this;return po(S("div",{role:"none",ref:"containerRef",class:[`${e}-modal-container`,this.themeClass,this.namespace],style:this.cssVars},S(_8,Object.assign({style:this.overlayStyle},this.$attrs,{ref:"bodyWrapper",displayDirective:this.displayDirective,show:this.show,preset:this.preset,autoFocus:this.autoFocus,trapFocus:this.trapFocus,blockScroll:this.blockScroll},this.presetProps,{onEsc:this.handleEsc,onClose:this.handleCloseClick,onNegativeClick:this.handleNegativeClick,onPositiveClick:this.handlePositiveClick,onBeforeLeave:this.handleBeforeLeave,onAfterEnter:this.onAfterEnter,onAfterLeave:this.handleAfterLeave,onClickoutside:n?void 0:this.handleClickoutside,renderMask:n?()=>{var o;return S(Bn,{name:"fade-in-transition",key:"mask",appear:(o=this.internalAppear)!==null&&o!==void 0?o:this.isMounted},{default:()=>this.show?S("div",{"aria-hidden":!0,ref:"containerRef",class:`${e}-modal-mask`,onClick:this.handleClickoutside}):null})}:void 0}),this.$slots)),[[Uc,{zIndex:this.zIndex,enabled:this.show}]])}})}}),E8=Object.assign(Object.assign({},Hs),{onAfterEnter:Function,onAfterLeave:Function,transformOrigin:String,blockScroll:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},onEsc:Function,autoFocus:{type:Boolean,default:!0},internalStyle:[String,Object],maskClosable:{type:Boolean,default:!0},onPositiveClick:Function,onNegativeClick:Function,onClose:Function,onMaskClick:Function}),I8=de({name:"DialogEnvironment",props:Object.assign(Object.assign({},E8),{internalKey:{type:String,required:!0},to:[String,Object],onInternalAfterLeave:{type:Function,required:!0}}),setup(e){const t=V(!0);function n(){const{onInternalAfterLeave:d,internalKey:u,onAfterLeave:h}=e;d&&d(u),h&&h()}function o(d){const{onPositiveClick:u}=e;u?Promise.resolve(u(d)).then(h=>{h!==!1&&l()}):l()}function r(d){const{onNegativeClick:u}=e;u?Promise.resolve(u(d)).then(h=>{h!==!1&&l()}):l()}function i(){const{onClose:d}=e;d?Promise.resolve(d()).then(u=>{u!==!1&&l()}):l()}function a(d){const{onMaskClick:u,maskClosable:h}=e;u&&(u(d),h&&l())}function s(){const{onEsc:d}=e;d&&d()}function l(){t.value=!1}function c(d){t.value=d}return{show:t,hide:l,handleUpdateShow:c,handleAfterLeave:n,handleCloseClick:i,handleNegativeClick:r,handlePositiveClick:o,handleMaskClick:a,handleEsc:s}},render(){const{handlePositiveClick:e,handleUpdateShow:t,handleNegativeClick:n,handleCloseClick:o,handleAfterLeave:r,handleMaskClick:i,handleEsc:a,to:s,maskClosable:l,show:c}=this;return S(R8,{show:c,onUpdateShow:t,onMaskClick:i,onEsc:a,to:s,maskClosable:l,onAfterEnter:this.onAfterEnter,onAfterLeave:r,closeOnEsc:this.closeOnEsc,blockScroll:this.blockScroll,autoFocus:this.autoFocus,transformOrigin:this.transformOrigin,internalAppear:!0,internalDialog:!0},{default:()=>S(Bb,Object.assign({},or(this.$props,$b),{style:this.internalStyle,onClose:o,onNegativeClick:n,onPositiveClick:e}))})}}),M8={injectionKey:String,to:[String,Object]},D8=de({name:"DialogProvider",props:M8,setup(){const e=V([]),t={};function n(s={}){const l=vs(),c=wo(Object.assign(Object.assign({},s),{key:l,destroy:()=>{var d;(d=t[`n-dialog-${l}`])===null||d===void 0||d.hide()}}));return e.value.push(c),c}const o=["info","success","warning","error"].map(s=>l=>n(Object.assign(Object.assign({},l),{type:s})));function r(s){const{value:l}=e;l.splice(l.findIndex(c=>c.key===s),1)}function i(){Object.values(t).forEach(s=>{s==null||s.hide()})}const a={create:n,destroyAll:i,info:o[0],success:o[1],warning:o[2],error:o[3]};return je(x8,a),je(Nb,{clickedRef:hm(64),clickedPositionRef:um()}),je(S8,e),Object.assign(Object.assign({},a),{dialogList:e,dialogInstRefs:t,handleAfterLeave:r})},render(){var e,t;return S(He,null,[this.dialogList.map(n=>S(I8,Gc(n,["destroy","style"],{internalStyle:n.style,to:this.to,ref:o=>{o===null?delete this.dialogInstRefs[`n-dialog-${n.key}`]:this.dialogInstRefs[`n-dialog-${n.key}`]=o},internalKey:n.key,onInternalAfterLeave:this.handleAfterLeave}))),(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e)])}});function Wb(e){const{textColor1:t,dividerColor:n,fontWeightStrong:o}=e;return{textColor:t,color:n,fontWeight:o}}const jb={name:"Divider",common:se,self:Wb},O8={name:"Divider",common:ae,self:Wb},L8=oe("divider",` position: relative; display: flex; width: 100%; @@ -1012,7 +1012,7 @@ ${t} height: 1px; width: 100%; margin: 0; - `),Ht("dashed",[G("line",{backgroundColor:"var(--n-color)"})]),te("dashed",[G("line",{borderColor:"var(--n-color)"})]),te("vertical",{backgroundColor:"var(--n-color)"})]),H8=Object.assign(Object.assign({},Ee.props),{titlePlacement:{type:String,default:"center"},dashed:Boolean,vertical:Boolean}),$8=de({name:"Divider",props:H8,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Divider","-divider",L8,jb,e,t),r=z(()=>{const{common:{cubicBezierEaseInOut:a},self:{color:s,textColor:l,fontWeight:c}}=o.value;return{"--n-bezier":a,"--n-color":s,"--n-text-color":l,"--n-font-weight":c}}),i=n?Mt("divider",void 0,r,e):void 0;return{mergedClsPrefix:t,cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{$slots:t,titlePlacement:n,vertical:o,dashed:r,cssVars:i,mergedClsPrefix:a}=this;return(e=this.onRender)===null||e===void 0||e.call(this),S("div",{role:"separator",class:[`${a}-divider`,this.themeClass,{[`${a}-divider--vertical`]:o,[`${a}-divider--no-title`]:!t.default,[`${a}-divider--dashed`]:r,[`${a}-divider--title-position-${n}`]:t.default&&n}],style:i},o?null:S("div",{class:`${a}-divider__line ${a}-divider__line--left`}),!o&&t.default?S(He,null,S("div",{class:`${a}-divider__title`},this.$slots),S("div",{class:`${a}-divider__line ${a}-divider__line--right`})):null)}});function Gb(e){const{modalColor:t,textColor1:n,textColor2:o,boxShadow3:r,lineHeight:i,fontWeightStrong:a,dividerColor:s,closeColorHover:l,closeColorPressed:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,borderRadius:g,primaryColorHover:f}=e;return{bodyPadding:"16px 24px",borderRadius:g,headerPadding:"16px 24px",footerPadding:"16px 24px",color:t,textColor:o,titleTextColor:n,titleFontSize:"18px",titleFontWeight:a,boxShadow:r,lineHeight:i,headerBorderBottom:`1px solid ${s}`,footerBorderTop:`1px solid ${s}`,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,closeSize:"22px",closeIconSize:"18px",closeColorHover:l,closeColorPressed:c,closeBorderRadius:g,resizableTriggerColorHover:f}}const B8={name:"Drawer",common:se,peers:{Scrollbar:Jt},self:Gb},N8={name:"Drawer",common:ae,peers:{Scrollbar:an},self:Gb},Vb={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"},z8={name:"DynamicInput",common:ae,peers:{Input:Cn,Button:sn},self(){return Vb}};function F8(){return Vb}const W8={name:"DynamicInput",common:se,peers:{Input:fn,Button:Qt},self:F8},Ub={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},Kb={name:"Space",self(){return Ub}};function j8(){return Ub}const Sd={name:"Space",self:j8};let xl;function G8(){if(!ar)return!0;if(xl===void 0){const e=document.createElement("div");e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e);const t=e.scrollHeight===1;return document.body.removeChild(e),xl=t}return xl}const V8=Object.assign(Object.assign({},Ee.props),{align:String,justify:{type:String,default:"start"},inline:Boolean,vertical:Boolean,reverse:Boolean,size:{type:[String,Number,Array],default:"medium"},wrapItem:{type:Boolean,default:!0},itemClass:String,itemStyle:[String,Object],wrap:{type:Boolean,default:!0},internalUseGap:{type:Boolean,default:void 0}}),qb=de({name:"Space",props:V8,setup(e){const{mergedClsPrefixRef:t,mergedRtlRef:n}=dt(e),o=Ee("Space","-space",void 0,Sd,e,t),r=Ao("Space",n,t);return{useGap:G8(),rtlEnabled:r,mergedClsPrefix:t,margin:z(()=>{const{size:i}=e;if(Array.isArray(i))return{horizontal:i[0],vertical:i[1]};if(typeof i=="number")return{horizontal:i,vertical:i};const{self:{[ge("gap",i)]:a}}=o.value,{row:s,col:l}=N2(a);return{horizontal:Wa(l),vertical:Wa(s)}})}},render(){const{vertical:e,reverse:t,align:n,inline:o,justify:r,itemClass:i,itemStyle:a,margin:s,wrap:l,mergedClsPrefix:c,rtlEnabled:d,useGap:u,wrapItem:h,internalUseGap:g}=this,f=Ri(em(this),!1);if(!f.length)return null;const b=`${s.horizontal}px`,p=`${s.horizontal/2}px`,m=`${s.vertical}px`,k=`${s.vertical/2}px`,T=f.length-1,v=r.startsWith("space-");return S("div",{role:"none",class:[`${c}-space`,d&&`${c}-space--rtl`],style:{display:o?"inline-flex":"flex",flexDirection:e&&!t?"column":e&&t?"column-reverse":!e&&t?"row-reverse":"row",justifyContent:["start","end"].includes(r)?`flex-${r}`:r,flexWrap:!l||e?"nowrap":"wrap",marginTop:u||e?"":`-${k}`,marginBottom:u||e?"":`-${k}`,alignItems:n,gap:u?`${s.vertical}px ${s.horizontal}px`:""}},!h&&(u||g)?f:f.map((x,A)=>x.type===kt?x:S("div",{role:"none",class:i,style:[a,{maxWidth:"100%"},u?"":e?{marginBottom:A!==T?m:""}:d?{marginLeft:v?r==="space-between"&&A===T?"":p:A!==T?b:"",marginRight:v?r==="space-between"&&A===0?"":p:"",paddingTop:k,paddingBottom:k}:{marginRight:v?r==="space-between"&&A===T?"":p:A!==T?b:"",marginLeft:v?r==="space-between"&&A===0?"":p:"",paddingTop:k,paddingBottom:k}]},x)))}}),U8={name:"DynamicTags",common:ae,peers:{Input:Cn,Button:sn,Tag:Hp,Space:Kb},self(){return{inputWidth:"64px"}}},K8={name:"DynamicTags",common:se,peers:{Input:fn,Button:Qt,Tag:$p,Space:Sd},self(){return{inputWidth:"64px"}}},q8={name:"Element",common:ae},Xb={name:"Element",common:se},X8=Object.assign(Object.assign({},Ee.props),{tag:{type:String,default:"div"}}),Ma=de({name:"Element",alias:["El"],props:X8,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Element","-element",void 0,Xb,e,t),r=z(()=>{const{common:a}=o.value;return Object.keys(a).reduce((s,l)=>(s[`--${U6(l)}`]=a[l],s),{})}),i=n?Mt("element",void 0,r,e):void 0;return{mergedClsPrefix:t,cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{tag:t,mergedClsPrefix:n,cssVars:o,themeClass:r,onRender:i,$slots:a}=this;return i==null||i(),S(t,{role:"none",class:[`${n}-element`,r],style:o},(e=a.default)===null||e===void 0?void 0:e.call(a))}}),Zb={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},Z8={name:"Flex",self(){return Zb}};function Y8(){return Zb}const J8={name:"Flex",self:Y8},Q8={feedbackPadding:"4px 0 0 2px",feedbackHeightSmall:"24px",feedbackHeightMedium:"24px",feedbackHeightLarge:"26px",feedbackFontSizeSmall:"13px",feedbackFontSizeMedium:"14px",feedbackFontSizeLarge:"14px",labelFontSizeLeftSmall:"14px",labelFontSizeLeftMedium:"14px",labelFontSizeLeftLarge:"15px",labelFontSizeTopSmall:"13px",labelFontSizeTopMedium:"14px",labelFontSizeTopLarge:"14px",labelHeightSmall:"24px",labelHeightMedium:"26px",labelHeightLarge:"28px",labelPaddingVertical:"0 0 6px 2px",labelPaddingHorizontal:"0 12px 0 0",labelTextAlignVertical:"left",labelTextAlignHorizontal:"right",labelFontWeight:"400"};function Yb(e){const{heightSmall:t,heightMedium:n,heightLarge:o,textColor1:r,errorColor:i,warningColor:a,lineHeight:s,textColor3:l}=e;return Object.assign(Object.assign({},Q8),{blankHeightSmall:t,blankHeightMedium:n,blankHeightLarge:o,lineHeight:s,labelTextColor:r,asteriskColor:i,feedbackTextColorError:i,feedbackTextColorWarning:a,feedbackTextColor:l})}const e9={name:"Form",common:se,self:Yb},t9={name:"Form",common:ae,self:Yb},Wh=1,Jb="n-grid",Qb=1,n9={span:{type:[Number,String],default:Qb},offset:{type:[Number,String],default:0},suffix:Boolean,privateOffset:Number,privateSpan:Number,privateColStart:Number,privateShow:{type:Boolean,default:!0}},o9=de({__GRID_ITEM__:!0,name:"GridItem",alias:["Gi"],props:n9,setup(){const{isSsrRef:e,xGapRef:t,itemStyleRef:n,overflowRef:o,layoutShiftDisabledRef:r}=Me(Jb),i=rn();return{overflow:o,itemStyle:n,layoutShiftDisabled:r,mergedXGap:z(()=>Sr(t.value||0)),deriveStyle:()=>{e.value;const{privateSpan:a=Qb,privateShow:s=!0,privateColStart:l=void 0,privateOffset:c=0}=i.vnode.props,{value:d}=t,u=Sr(d||0);return{display:s?"":"none",gridColumn:`${l??`span ${a}`} / span ${a}`,marginLeft:c?`calc((100% - (${a} - 1) * ${u}) / ${a} * ${c} + ${u} * ${c})`:""}}}},render(){var e,t;if(this.layoutShiftDisabled){const{span:n,offset:o,mergedXGap:r}=this;return S("div",{style:{gridColumn:`span ${n} / span ${n}`,marginLeft:o?`calc((100% - (${n} - 1) * ${r}) / ${n} * ${o} + ${r} * ${o})`:""}},this.$slots)}return S("div",{style:[this.itemStyle,this.deriveStyle()]},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e,{overflow:this.overflow}))}}),r9={closeMargin:"16px 12px",closeSize:"20px",closeIconSize:"16px",width:"365px",padding:"16px",titleFontSize:"16px",metaFontSize:"12px",descriptionFontSize:"12px"};function e0(e){const{textColor2:t,successColor:n,infoColor:o,warningColor:r,errorColor:i,popoverColor:a,closeIconColor:s,closeIconColorHover:l,closeIconColorPressed:c,closeColorHover:d,closeColorPressed:u,textColor1:h,textColor3:g,borderRadius:f,fontWeightStrong:b,boxShadow2:p,lineHeight:m,fontSize:k}=e;return Object.assign(Object.assign({},r9),{borderRadius:f,lineHeight:m,fontSize:k,headerFontWeight:b,iconColor:t,iconColorSuccess:n,iconColorInfo:o,iconColorWarning:r,iconColorError:i,color:a,textColor:t,closeIconColor:s,closeIconColorHover:l,closeIconColorPressed:c,closeBorderRadius:f,closeColorHover:d,closeColorPressed:u,headerTextColor:h,descriptionTextColor:g,actionTextColor:t,boxShadow:p})}const t0={name:"Notification",common:se,peers:{Scrollbar:Jt},self:e0},i9={name:"Notification",common:ae,peers:{Scrollbar:an},self:e0},a9={margin:"0 0 8px 0",padding:"10px 20px",maxWidth:"720px",minWidth:"420px",iconMargin:"0 10px 0 0",closeMargin:"0 0 0 10px",closeSize:"20px",closeIconSize:"16px",iconSize:"20px",fontSize:"14px"};function n0(e){const{textColor2:t,closeIconColor:n,closeIconColorHover:o,closeIconColorPressed:r,infoColor:i,successColor:a,errorColor:s,warningColor:l,popoverColor:c,boxShadow2:d,primaryColor:u,lineHeight:h,borderRadius:g,closeColorHover:f,closeColorPressed:b}=e;return Object.assign(Object.assign({},a9),{closeBorderRadius:g,textColor:t,textColorInfo:t,textColorSuccess:t,textColorError:t,textColorWarning:t,textColorLoading:t,color:c,colorInfo:c,colorSuccess:c,colorError:c,colorWarning:c,colorLoading:c,boxShadow:d,boxShadowInfo:d,boxShadowSuccess:d,boxShadowError:d,boxShadowWarning:d,boxShadowLoading:d,iconColor:t,iconColorInfo:i,iconColorSuccess:a,iconColorWarning:l,iconColorError:s,iconColorLoading:u,closeColorHover:f,closeColorPressed:b,closeIconColor:n,closeIconColorHover:o,closeIconColorPressed:r,closeColorHoverInfo:f,closeColorPressedInfo:b,closeIconColorInfo:n,closeIconColorHoverInfo:o,closeIconColorPressedInfo:r,closeColorHoverSuccess:f,closeColorPressedSuccess:b,closeIconColorSuccess:n,closeIconColorHoverSuccess:o,closeIconColorPressedSuccess:r,closeColorHoverError:f,closeColorPressedError:b,closeIconColorError:n,closeIconColorHoverError:o,closeIconColorPressedError:r,closeColorHoverWarning:f,closeColorPressedWarning:b,closeIconColorWarning:n,closeIconColorHoverWarning:o,closeIconColorPressedWarning:r,closeColorHoverLoading:f,closeColorPressedLoading:b,closeIconColorLoading:n,closeIconColorHoverLoading:o,closeIconColorPressedLoading:r,loadingColor:u,lineHeight:h,borderRadius:g})}const o0={name:"Message",common:se,self:n0},s9={name:"Message",common:ae,self:n0},l9={name:"ButtonGroup",common:ae},c9={name:"ButtonGroup",common:se},d9={name:"GradientText",common:ae,self(e){const{primaryColor:t,successColor:n,warningColor:o,errorColor:r,infoColor:i,primaryColorSuppl:a,successColorSuppl:s,warningColorSuppl:l,errorColorSuppl:c,infoColorSuppl:d,fontWeightStrong:u}=e;return{fontWeight:u,rotate:"252deg",colorStartPrimary:t,colorEndPrimary:a,colorStartInfo:i,colorEndInfo:d,colorStartWarning:o,colorEndWarning:l,colorStartError:r,colorEndError:c,colorStartSuccess:n,colorEndSuccess:s}}};function u9(e){const{primaryColor:t,successColor:n,warningColor:o,errorColor:r,infoColor:i,fontWeightStrong:a}=e;return{fontWeight:a,rotate:"252deg",colorStartPrimary:U(t,{alpha:.6}),colorEndPrimary:t,colorStartInfo:U(i,{alpha:.6}),colorEndInfo:i,colorStartWarning:U(o,{alpha:.6}),colorEndWarning:o,colorStartError:U(r,{alpha:.6}),colorEndError:r,colorStartSuccess:U(n,{alpha:.6}),colorEndSuccess:n}}const h9={name:"GradientText",common:se,self:u9},f9={name:"InputNumber",common:ae,peers:{Button:sn,Input:Cn},self(e){const{textColorDisabled:t}=e;return{iconColorDisabled:t}}};function g9(e){const{textColorDisabled:t}=e;return{iconColorDisabled:t}}const m9={name:"InputNumber",common:se,peers:{Button:Qt,Input:fn},self:g9},p9={name:"Layout",common:ae,peers:{Scrollbar:an},self(e){const{textColor2:t,bodyColor:n,popoverColor:o,cardColor:r,dividerColor:i,scrollbarColor:a,scrollbarColorHover:s}=e;return{textColor:t,textColorInverted:t,color:n,colorEmbedded:n,headerColor:r,headerColorInverted:r,footerColor:r,footerColorInverted:r,headerBorderColor:i,headerBorderColorInverted:i,footerBorderColor:i,footerBorderColorInverted:i,siderBorderColor:i,siderBorderColorInverted:i,siderColor:r,siderColorInverted:r,siderToggleButtonBorder:"1px solid transparent",siderToggleButtonColor:o,siderToggleButtonIconColor:t,siderToggleButtonIconColorInverted:t,siderToggleBarColor:ce(n,a),siderToggleBarColorHover:ce(n,s),__invertScrollbar:"false"}}};function b9(e){const{baseColor:t,textColor2:n,bodyColor:o,cardColor:r,dividerColor:i,actionColor:a,scrollbarColor:s,scrollbarColorHover:l,invertedColor:c}=e;return{textColor:n,textColorInverted:"#FFF",color:o,colorEmbedded:a,headerColor:r,headerColorInverted:c,footerColor:a,footerColorInverted:c,headerBorderColor:i,headerBorderColorInverted:c,footerBorderColor:i,footerBorderColorInverted:c,siderBorderColor:i,siderBorderColorInverted:c,siderColor:r,siderColorInverted:c,siderToggleButtonBorder:`1px solid ${i}`,siderToggleButtonColor:t,siderToggleButtonIconColor:n,siderToggleButtonIconColorInverted:n,siderToggleBarColor:ce(o,s),siderToggleBarColorHover:ce(o,l),__invertScrollbar:"true"}}const Td={name:"Layout",common:se,peers:{Scrollbar:Jt},self:b9};function r0(e){const{textColor2:t,cardColor:n,modalColor:o,popoverColor:r,dividerColor:i,borderRadius:a,fontSize:s,hoverColor:l}=e;return{textColor:t,color:n,colorHover:l,colorModal:o,colorHoverModal:ce(o,l),colorPopover:r,colorHoverPopover:ce(r,l),borderColor:i,borderColorModal:ce(o,i),borderColorPopover:ce(r,i),borderRadius:a,fontSize:s}}const v9={name:"List",common:se,self:r0},y9={name:"List",common:ae,self:r0},C9={name:"LoadingBar",common:ae,self(e){const{primaryColor:t}=e;return{colorError:"red",colorLoading:t,height:"2px"}}};function k9(e){const{primaryColor:t,errorColor:n}=e;return{colorError:n,colorLoading:t,height:"2px"}}const i0={name:"LoadingBar",common:se,self:k9},x9={name:"Log",common:ae,peers:{Scrollbar:an,Code:ib},self(e){const{textColor2:t,inputColor:n,fontSize:o,primaryColor:r}=e;return{loaderFontSize:o,loaderTextColor:t,loaderColor:n,loaderBorder:"1px solid #0000",loadingColor:r}}};function S9(e){const{textColor2:t,modalColor:n,borderColor:o,fontSize:r,primaryColor:i}=e;return{loaderFontSize:r,loaderTextColor:t,loaderColor:n,loaderBorder:`1px solid ${o}`,loadingColor:i}}const T9={name:"Log",common:se,peers:{Scrollbar:Jt,Code:ab},self:S9},w9={name:"Mention",common:ae,peers:{InternalSelectMenu:Xi,Input:Cn},self(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}};function _9(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const P9={name:"Mention",common:se,peers:{InternalSelectMenu:qi,Input:fn},self:_9};function A9(e,t,n,o){return{itemColorHoverInverted:"#0000",itemColorActiveInverted:t,itemColorActiveHoverInverted:t,itemColorActiveCollapsedInverted:t,itemTextColorInverted:e,itemTextColorHoverInverted:n,itemTextColorChildActiveInverted:n,itemTextColorChildActiveHoverInverted:n,itemTextColorActiveInverted:n,itemTextColorActiveHoverInverted:n,itemTextColorHorizontalInverted:e,itemTextColorHoverHorizontalInverted:n,itemTextColorChildActiveHorizontalInverted:n,itemTextColorChildActiveHoverHorizontalInverted:n,itemTextColorActiveHorizontalInverted:n,itemTextColorActiveHoverHorizontalInverted:n,itemIconColorInverted:e,itemIconColorHoverInverted:n,itemIconColorActiveInverted:n,itemIconColorActiveHoverInverted:n,itemIconColorChildActiveInverted:n,itemIconColorChildActiveHoverInverted:n,itemIconColorCollapsedInverted:e,itemIconColorHorizontalInverted:e,itemIconColorHoverHorizontalInverted:n,itemIconColorActiveHorizontalInverted:n,itemIconColorActiveHoverHorizontalInverted:n,itemIconColorChildActiveHorizontalInverted:n,itemIconColorChildActiveHoverHorizontalInverted:n,arrowColorInverted:e,arrowColorHoverInverted:n,arrowColorActiveInverted:n,arrowColorActiveHoverInverted:n,arrowColorChildActiveInverted:n,arrowColorChildActiveHoverInverted:n,groupTextColorInverted:o}}function a0(e){const{borderRadius:t,textColor3:n,primaryColor:o,textColor2:r,textColor1:i,fontSize:a,dividerColor:s,hoverColor:l,primaryColorHover:c}=e;return Object.assign({borderRadius:t,color:"#0000",groupTextColor:n,itemColorHover:l,itemColorActive:U(o,{alpha:.1}),itemColorActiveHover:U(o,{alpha:.1}),itemColorActiveCollapsed:U(o,{alpha:.1}),itemTextColor:r,itemTextColorHover:r,itemTextColorActive:o,itemTextColorActiveHover:o,itemTextColorChildActive:o,itemTextColorChildActiveHover:o,itemTextColorHorizontal:r,itemTextColorHoverHorizontal:c,itemTextColorActiveHorizontal:o,itemTextColorActiveHoverHorizontal:o,itemTextColorChildActiveHorizontal:o,itemTextColorChildActiveHoverHorizontal:o,itemIconColor:i,itemIconColorHover:i,itemIconColorActive:o,itemIconColorActiveHover:o,itemIconColorChildActive:o,itemIconColorChildActiveHover:o,itemIconColorCollapsed:i,itemIconColorHorizontal:i,itemIconColorHoverHorizontal:c,itemIconColorActiveHorizontal:o,itemIconColorActiveHoverHorizontal:o,itemIconColorChildActiveHorizontal:o,itemIconColorChildActiveHoverHorizontal:o,itemHeight:"42px",arrowColor:r,arrowColorHover:r,arrowColorActive:o,arrowColorActiveHover:o,arrowColorChildActive:o,arrowColorChildActiveHover:o,colorInverted:"#0000",borderColorHorizontal:"#0000",fontSize:a,dividerColor:s},A9("#BBB",o,"#FFF","#AAA"))}const R9={name:"Menu",common:se,peers:{Tooltip:Zi,Dropdown:Os},self:a0},E9={name:"Menu",common:ae,peers:{Tooltip:Ds,Dropdown:vd},self(e){const{primaryColor:t,primaryColorSuppl:n}=e,o=a0(e);return o.itemColorActive=U(t,{alpha:.15}),o.itemColorActiveHover=U(t,{alpha:.15}),o.itemColorActiveCollapsed=U(t,{alpha:.15}),o.itemColorActiveInverted=n,o.itemColorActiveHoverInverted=n,o.itemColorActiveCollapsedInverted=n,o}},I9={titleFontSize:"18px",backSize:"22px"};function s0(e){const{textColor1:t,textColor2:n,textColor3:o,fontSize:r,fontWeightStrong:i,primaryColorHover:a,primaryColorPressed:s}=e;return Object.assign(Object.assign({},I9),{titleFontWeight:i,fontSize:r,titleTextColor:t,backColor:n,backColorHover:a,backColorPressed:s,subtitleTextColor:o})}const M9={name:"PageHeader",common:se,self:s0},D9={name:"PageHeader",common:ae,self:s0},O9={iconSize:"22px"};function l0(e){const{fontSize:t,warningColor:n}=e;return Object.assign(Object.assign({},O9),{fontSize:t,iconColor:n})}const L9={name:"Popconfirm",common:se,peers:{Button:Qt,Popover:Ro},self:l0},H9={name:"Popconfirm",common:ae,peers:{Button:sn,Popover:ur},self:l0};function c0(e){const{infoColor:t,successColor:n,warningColor:o,errorColor:r,textColor2:i,progressRailColor:a,fontSize:s,fontWeight:l}=e;return{fontSize:s,fontSizeCircle:"28px",fontWeightCircle:l,railColor:a,railHeight:"8px",iconSizeCircle:"36px",iconSizeLine:"18px",iconColor:t,iconColorInfo:t,iconColorSuccess:n,iconColorWarning:o,iconColorError:r,textColorCircle:i,textColorLineInner:"rgb(255, 255, 255)",textColorLineOuter:i,fillColor:t,fillColorInfo:t,fillColorSuccess:n,fillColorWarning:o,fillColorError:r,lineBgProcessing:"linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)"}}const d0={name:"Progress",common:se,self:c0},u0={name:"Progress",common:ae,self(e){const t=c0(e);return t.textColorLineInner="rgb(0, 0, 0)",t.lineBgProcessing="linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)",t}},$9={name:"Rate",common:ae,self(e){const{railColor:t}=e;return{itemColor:t,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}};function B9(e){const{railColor:t}=e;return{itemColor:t,itemColorActive:"#FFCC33",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}const N9={name:"Rate",common:se,self:B9},z9={titleFontSizeSmall:"26px",titleFontSizeMedium:"32px",titleFontSizeLarge:"40px",titleFontSizeHuge:"48px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",iconSizeSmall:"64px",iconSizeMedium:"80px",iconSizeLarge:"100px",iconSizeHuge:"125px",iconColor418:void 0,iconColor404:void 0,iconColor403:void 0,iconColor500:void 0};function h0(e){const{textColor2:t,textColor1:n,errorColor:o,successColor:r,infoColor:i,warningColor:a,lineHeight:s,fontWeightStrong:l}=e;return Object.assign(Object.assign({},z9),{lineHeight:s,titleFontWeight:l,titleTextColor:n,textColor:t,iconColorError:o,iconColorSuccess:r,iconColorInfo:i,iconColorWarning:a})}const F9={name:"Result",common:se,self:h0},W9={name:"Result",common:ae,self:h0},f0={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"},j9={name:"Slider",common:ae,self(e){const t="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:n,modalColor:o,primaryColorSuppl:r,popoverColor:i,textColor2:a,cardColor:s,borderRadius:l,fontSize:c,opacityDisabled:d}=e;return Object.assign(Object.assign({},f0),{fontSize:c,markFontSize:c,railColor:n,railColorHover:n,fillColor:r,fillColorHover:r,opacityDisabled:d,handleColor:"#FFF",dotColor:s,dotColorModal:o,dotColorPopover:i,handleBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowHover:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowActive:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowFocus:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",indicatorColor:i,indicatorBoxShadow:t,indicatorTextColor:a,indicatorBorderRadius:l,dotBorder:`2px solid ${n}`,dotBorderActive:`2px solid ${r}`,dotBoxShadow:""})}};function G9(e){const t="rgba(0, 0, 0, .85)",n="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:o,primaryColor:r,baseColor:i,cardColor:a,modalColor:s,popoverColor:l,borderRadius:c,fontSize:d,opacityDisabled:u}=e;return Object.assign(Object.assign({},f0),{fontSize:d,markFontSize:d,railColor:o,railColorHover:o,fillColor:r,fillColorHover:r,opacityDisabled:u,handleColor:"#FFF",dotColor:a,dotColorModal:s,dotColorPopover:l,handleBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowHover:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowActive:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowFocus:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",indicatorColor:t,indicatorBoxShadow:n,indicatorTextColor:i,indicatorBorderRadius:c,dotBorder:`2px solid ${o}`,dotBorderActive:`2px solid ${r}`,dotBoxShadow:""})}const V9={name:"Slider",common:se,self:G9};function g0(e){const{opacityDisabled:t,heightTiny:n,heightSmall:o,heightMedium:r,heightLarge:i,heightHuge:a,primaryColor:s,fontSize:l}=e;return{fontSize:l,textColor:s,sizeTiny:n,sizeSmall:o,sizeMedium:r,sizeLarge:i,sizeHuge:a,color:s,opacitySpinning:t}}const U9={name:"Spin",common:se,self:g0},K9={name:"Spin",common:ae,self:g0};function m0(e){const{textColor2:t,textColor3:n,fontSize:o,fontWeight:r}=e;return{labelFontSize:o,labelFontWeight:r,valueFontWeight:r,valueFontSize:"24px",labelTextColor:n,valuePrefixTextColor:t,valueSuffixTextColor:t,valueTextColor:t}}const q9={name:"Statistic",common:se,self:m0},X9={name:"Statistic",common:ae,self:m0},Z9={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"};function p0(e){const{fontWeightStrong:t,baseColor:n,textColorDisabled:o,primaryColor:r,errorColor:i,textColor1:a,textColor2:s}=e;return Object.assign(Object.assign({},Z9),{stepHeaderFontWeight:t,indicatorTextColorProcess:n,indicatorTextColorWait:o,indicatorTextColorFinish:r,indicatorTextColorError:i,indicatorBorderColorProcess:r,indicatorBorderColorWait:o,indicatorBorderColorFinish:r,indicatorBorderColorError:i,indicatorColorProcess:r,indicatorColorWait:"#0000",indicatorColorFinish:"#0000",indicatorColorError:"#0000",splitorColorProcess:o,splitorColorWait:o,splitorColorFinish:r,splitorColorError:o,headerTextColorProcess:a,headerTextColorWait:o,headerTextColorFinish:o,headerTextColorError:i,descriptionTextColorProcess:s,descriptionTextColorWait:o,descriptionTextColorFinish:o,descriptionTextColorError:i})}const Y9={name:"Steps",common:se,self:p0},J9={name:"Steps",common:ae,self:p0},b0={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"},Q9={name:"Switch",common:ae,self(e){const{primaryColorSuppl:t,opacityDisabled:n,borderRadius:o,primaryColor:r,textColor2:i,baseColor:a}=e;return Object.assign(Object.assign({},b0),{iconColor:a,textColor:i,loadingColor:t,opacityDisabled:n,railColor:"rgba(255, 255, 255, .20)",railColorActive:t,buttonBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",buttonColor:"#FFF",railBorderRadiusSmall:o,railBorderRadiusMedium:o,railBorderRadiusLarge:o,buttonBorderRadiusSmall:o,buttonBorderRadiusMedium:o,buttonBorderRadiusLarge:o,boxShadowFocus:`0 0 8px 0 ${U(r,{alpha:.3})}`})}};function e7(e){const{primaryColor:t,opacityDisabled:n,borderRadius:o,textColor3:r}=e;return Object.assign(Object.assign({},b0),{iconColor:r,textColor:"white",loadingColor:t,opacityDisabled:n,railColor:"rgba(0, 0, 0, .14)",railColorActive:t,buttonBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",buttonColor:"#FFF",railBorderRadiusSmall:o,railBorderRadiusMedium:o,railBorderRadiusLarge:o,buttonBorderRadiusSmall:o,buttonBorderRadiusMedium:o,buttonBorderRadiusLarge:o,boxShadowFocus:`0 0 0 2px ${U(t,{alpha:.2})}`})}const t7={name:"Switch",common:se,self:e7},n7={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"};function v0(e){const{dividerColor:t,cardColor:n,modalColor:o,popoverColor:r,tableHeaderColor:i,tableColorStriped:a,textColor1:s,textColor2:l,borderRadius:c,fontWeightStrong:d,lineHeight:u,fontSizeSmall:h,fontSizeMedium:g,fontSizeLarge:f}=e;return Object.assign(Object.assign({},n7),{fontSizeSmall:h,fontSizeMedium:g,fontSizeLarge:f,lineHeight:u,borderRadius:c,borderColor:ce(n,t),borderColorModal:ce(o,t),borderColorPopover:ce(r,t),tdColor:n,tdColorModal:o,tdColorPopover:r,tdColorStriped:ce(n,a),tdColorStripedModal:ce(o,a),tdColorStripedPopover:ce(r,a),thColor:ce(n,i),thColorModal:ce(o,i),thColorPopover:ce(r,i),thTextColor:s,tdTextColor:l,thFontWeight:d})}const o7={name:"Table",common:se,self:v0},r7={name:"Table",common:ae,self:v0},i7={tabFontSizeSmall:"14px",tabFontSizeMedium:"14px",tabFontSizeLarge:"16px",tabGapSmallLine:"36px",tabGapMediumLine:"36px",tabGapLargeLine:"36px",tabGapSmallLineVertical:"8px",tabGapMediumLineVertical:"8px",tabGapLargeLineVertical:"8px",tabPaddingSmallLine:"6px 0",tabPaddingMediumLine:"10px 0",tabPaddingLargeLine:"14px 0",tabPaddingVerticalSmallLine:"6px 12px",tabPaddingVerticalMediumLine:"8px 16px",tabPaddingVerticalLargeLine:"10px 20px",tabGapSmallBar:"36px",tabGapMediumBar:"36px",tabGapLargeBar:"36px",tabGapSmallBarVertical:"8px",tabGapMediumBarVertical:"8px",tabGapLargeBarVertical:"8px",tabPaddingSmallBar:"4px 0",tabPaddingMediumBar:"6px 0",tabPaddingLargeBar:"10px 0",tabPaddingVerticalSmallBar:"6px 12px",tabPaddingVerticalMediumBar:"8px 16px",tabPaddingVerticalLargeBar:"10px 20px",tabGapSmallCard:"4px",tabGapMediumCard:"4px",tabGapLargeCard:"4px",tabGapSmallCardVertical:"4px",tabGapMediumCardVertical:"4px",tabGapLargeCardVertical:"4px",tabPaddingSmallCard:"8px 16px",tabPaddingMediumCard:"10px 20px",tabPaddingLargeCard:"12px 24px",tabPaddingSmallSegment:"4px 0",tabPaddingMediumSegment:"6px 0",tabPaddingLargeSegment:"8px 0",tabPaddingVerticalLargeSegment:"0 8px",tabPaddingVerticalSmallCard:"8px 12px",tabPaddingVerticalMediumCard:"10px 16px",tabPaddingVerticalLargeCard:"12px 20px",tabPaddingVerticalSmallSegment:"0 4px",tabPaddingVerticalMediumSegment:"0 6px",tabGapSmallSegment:"0",tabGapMediumSegment:"0",tabGapLargeSegment:"0",tabGapSmallSegmentVertical:"0",tabGapMediumSegmentVertical:"0",tabGapLargeSegmentVertical:"0",panePaddingSmall:"8px 0 0 0",panePaddingMedium:"12px 0 0 0",panePaddingLarge:"16px 0 0 0",closeSize:"18px",closeIconSize:"14px"};function y0(e){const{textColor2:t,primaryColor:n,textColorDisabled:o,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeColorHover:s,closeColorPressed:l,tabColor:c,baseColor:d,dividerColor:u,fontWeight:h,textColor1:g,borderRadius:f,fontSize:b,fontWeightStrong:p}=e;return Object.assign(Object.assign({},i7),{colorSegment:c,tabFontSizeCard:b,tabTextColorLine:g,tabTextColorActiveLine:n,tabTextColorHoverLine:n,tabTextColorDisabledLine:o,tabTextColorSegment:g,tabTextColorActiveSegment:t,tabTextColorHoverSegment:t,tabTextColorDisabledSegment:o,tabTextColorBar:g,tabTextColorActiveBar:n,tabTextColorHoverBar:n,tabTextColorDisabledBar:o,tabTextColorCard:g,tabTextColorHoverCard:g,tabTextColorActiveCard:n,tabTextColorDisabledCard:o,barColor:n,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeColorHover:s,closeColorPressed:l,closeBorderRadius:f,tabColor:c,tabColorSegment:d,tabBorderColor:u,tabFontWeightActive:h,tabFontWeight:h,tabBorderRadius:f,paneTextColor:t,fontWeightStrong:p})}const a7={name:"Tabs",common:se,self:y0},s7={name:"Tabs",common:ae,self(e){const t=y0(e),{inputColor:n}=e;return t.colorSegment=n,t.tabColorSegment=n,t}};function C0(e){const{textColor1:t,textColor2:n,fontWeightStrong:o,fontSize:r}=e;return{fontSize:r,titleTextColor:t,textColor:n,titleFontWeight:o}}const l7={name:"Thing",common:se,self:C0},c7={name:"Thing",common:ae,self:C0},k0={titleMarginMedium:"0 0 6px 0",titleMarginLarge:"-2px 0 6px 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"},d7={name:"Timeline",common:ae,self(e){const{textColor3:t,infoColorSuppl:n,errorColorSuppl:o,successColorSuppl:r,warningColorSuppl:i,textColor1:a,textColor2:s,railColor:l,fontWeightStrong:c,fontSize:d}=e;return Object.assign(Object.assign({},k0),{contentFontSize:d,titleFontWeight:c,circleBorder:`2px solid ${t}`,circleBorderInfo:`2px solid ${n}`,circleBorderError:`2px solid ${o}`,circleBorderSuccess:`2px solid ${r}`,circleBorderWarning:`2px solid ${i}`,iconColor:t,iconColorInfo:n,iconColorError:o,iconColorSuccess:r,iconColorWarning:i,titleTextColor:a,contentTextColor:s,metaTextColor:t,lineColor:l})}};function u7(e){const{textColor3:t,infoColor:n,errorColor:o,successColor:r,warningColor:i,textColor1:a,textColor2:s,railColor:l,fontWeightStrong:c,fontSize:d}=e;return Object.assign(Object.assign({},k0),{contentFontSize:d,titleFontWeight:c,circleBorder:`2px solid ${t}`,circleBorderInfo:`2px solid ${n}`,circleBorderError:`2px solid ${o}`,circleBorderSuccess:`2px solid ${r}`,circleBorderWarning:`2px solid ${i}`,iconColor:t,iconColorInfo:n,iconColorError:o,iconColorSuccess:r,iconColorWarning:i,titleTextColor:a,contentTextColor:s,metaTextColor:t,lineColor:l})}const h7={name:"Timeline",common:se,self:u7},x0={extraFontSizeSmall:"12px",extraFontSizeMedium:"12px",extraFontSizeLarge:"14px",titleFontSizeSmall:"14px",titleFontSizeMedium:"16px",titleFontSizeLarge:"16px",closeSize:"20px",closeIconSize:"16px",headerHeightSmall:"44px",headerHeightMedium:"44px",headerHeightLarge:"50px"},f7={name:"Transfer",common:ae,peers:{Checkbox:Vr,Scrollbar:an,Input:Cn,Empty:dr,Button:sn},self(e){const{fontWeight:t,fontSizeLarge:n,fontSizeMedium:o,fontSizeSmall:r,heightLarge:i,heightMedium:a,borderRadius:s,inputColor:l,tableHeaderColor:c,textColor1:d,textColorDisabled:u,textColor2:h,textColor3:g,hoverColor:f,closeColorHover:b,closeColorPressed:p,closeIconColor:m,closeIconColorHover:k,closeIconColorPressed:T,dividerColor:v}=e;return Object.assign(Object.assign({},x0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:v,borderColor:"#0000",listColor:l,headerColor:c,titleTextColor:d,titleTextColorDisabled:u,extraTextColor:g,extraTextColorDisabled:u,itemTextColor:h,itemTextColorDisabled:u,itemColorPending:f,titleFontWeight:t,closeColorHover:b,closeColorPressed:p,closeIconColor:m,closeIconColorHover:k,closeIconColorPressed:T})}};function g7(e){const{fontWeight:t,fontSizeLarge:n,fontSizeMedium:o,fontSizeSmall:r,heightLarge:i,heightMedium:a,borderRadius:s,cardColor:l,tableHeaderColor:c,textColor1:d,textColorDisabled:u,textColor2:h,textColor3:g,borderColor:f,hoverColor:b,closeColorHover:p,closeColorPressed:m,closeIconColor:k,closeIconColorHover:T,closeIconColorPressed:v}=e;return Object.assign(Object.assign({},x0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:f,borderColor:f,listColor:l,headerColor:ce(l,c),titleTextColor:d,titleTextColorDisabled:u,extraTextColor:g,extraTextColorDisabled:u,itemTextColor:h,itemTextColorDisabled:u,itemColorPending:b,titleFontWeight:t,closeColorHover:p,closeColorPressed:m,closeIconColor:k,closeIconColorHover:T,closeIconColorPressed:v})}const m7={name:"Transfer",common:se,peers:{Checkbox:Gr,Scrollbar:Jt,Input:fn,Empty:to,Button:Qt},self:g7};function S0(e){const{borderRadiusSmall:t,dividerColor:n,hoverColor:o,pressedColor:r,primaryColor:i,textColor3:a,textColor2:s,textColorDisabled:l,fontSize:c}=e;return{fontSize:c,lineHeight:"1.5",nodeHeight:"30px",nodeWrapperPadding:"3px 0",nodeBorderRadius:t,nodeColorHover:o,nodeColorPressed:r,nodeColorActive:U(i,{alpha:.1}),arrowColor:a,nodeTextColor:s,nodeTextColorDisabled:l,loadingColor:i,dropMarkColor:i,lineColor:n}}const T0={name:"Tree",common:se,peers:{Checkbox:Gr,Scrollbar:Jt,Empty:to},self:S0},w0={name:"Tree",common:ae,peers:{Checkbox:Vr,Scrollbar:an,Empty:dr},self(e){const{primaryColor:t}=e,n=S0(e);return n.nodeColorActive=U(t,{alpha:.15}),n}},p7={name:"TreeSelect",common:ae,peers:{Tree:w0,Empty:dr,InternalSelection:gd}};function b7(e){const{popoverColor:t,boxShadow2:n,borderRadius:o,heightMedium:r,dividerColor:i,textColor2:a}=e;return{menuPadding:"4px",menuColor:t,menuBoxShadow:n,menuBorderRadius:o,menuHeight:`calc(${r} * 7.6)`,actionDividerColor:i,actionTextColor:a,actionPadding:"8px 12px"}}const v7={name:"TreeSelect",common:se,peers:{Tree:T0,Empty:to,InternalSelection:fd},self:b7},y7={headerFontSize1:"30px",headerFontSize2:"22px",headerFontSize3:"18px",headerFontSize4:"16px",headerFontSize5:"16px",headerFontSize6:"16px",headerMargin1:"28px 0 20px 0",headerMargin2:"28px 0 20px 0",headerMargin3:"28px 0 20px 0",headerMargin4:"28px 0 18px 0",headerMargin5:"28px 0 18px 0",headerMargin6:"28px 0 18px 0",headerPrefixWidth1:"16px",headerPrefixWidth2:"16px",headerPrefixWidth3:"12px",headerPrefixWidth4:"12px",headerPrefixWidth5:"12px",headerPrefixWidth6:"12px",headerBarWidth1:"4px",headerBarWidth2:"4px",headerBarWidth3:"3px",headerBarWidth4:"3px",headerBarWidth5:"3px",headerBarWidth6:"3px",pMargin:"16px 0 16px 0",liMargin:".25em 0 0 0",olPadding:"0 0 0 2em",ulPadding:"0 0 0 2em"};function _0(e){const{primaryColor:t,textColor2:n,borderColor:o,lineHeight:r,fontSize:i,borderRadiusSmall:a,dividerColor:s,fontWeightStrong:l,textColor1:c,textColor3:d,infoColor:u,warningColor:h,errorColor:g,successColor:f,codeColor:b}=e;return Object.assign(Object.assign({},y7),{aTextColor:t,blockquoteTextColor:n,blockquotePrefixColor:o,blockquoteLineHeight:r,blockquoteFontSize:i,codeBorderRadius:a,liTextColor:n,liLineHeight:r,liFontSize:i,hrColor:s,headerFontWeight:l,headerTextColor:c,pTextColor:n,pTextColor1Depth:c,pTextColor2Depth:n,pTextColor3Depth:d,pLineHeight:r,pFontSize:i,headerBarColor:t,headerBarColorPrimary:t,headerBarColorInfo:u,headerBarColorError:g,headerBarColorWarning:h,headerBarColorSuccess:f,textColor:n,textColor1Depth:c,textColor2Depth:n,textColor3Depth:d,textColorPrimary:t,textColorInfo:u,textColorSuccess:f,textColorWarning:h,textColorError:g,codeTextColor:n,codeColor:b,codeBorder:"1px solid #0000"})}const wd={name:"Typography",common:se,self:_0},C7={name:"Typography",common:ae,self:_0};function P0(e){const{iconColor:t,primaryColor:n,errorColor:o,textColor2:r,successColor:i,opacityDisabled:a,actionColor:s,borderColor:l,hoverColor:c,lineHeight:d,borderRadius:u,fontSize:h}=e;return{fontSize:h,lineHeight:d,borderRadius:u,draggerColor:s,draggerBorder:`1px dashed ${l}`,draggerBorderHover:`1px dashed ${n}`,itemColorHover:c,itemColorHoverError:U(o,{alpha:.06}),itemTextColor:r,itemTextColorError:o,itemTextColorSuccess:i,itemIconColor:t,itemDisabledOpacity:a,itemBorderImageCardError:`1px solid ${o}`,itemBorderImageCard:`1px solid ${l}`}}const k7={name:"Upload",common:se,peers:{Button:Qt,Progress:d0},self:P0},x7={name:"Upload",common:ae,peers:{Button:sn,Progress:u0},self(e){const{errorColor:t}=e,n=P0(e);return n.itemColorHoverError=U(t,{alpha:.09}),n}},S7={name:"Watermark",common:ae,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},T7={name:"Watermark",common:se,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},w7={name:"Row",common:se},_7={name:"Row",common:ae};function P7(e){const{popoverColor:t,dividerColor:n,borderRadius:o}=e;return{color:t,buttonBorderColor:n,borderRadiusSquare:o,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)"}}const A7={name:"FloatButtonGroup",common:se,self:P7},R7={name:"FloatButton",common:ae,self(e){const{popoverColor:t,textColor2:n,buttonColor2Hover:o,buttonColor2Pressed:r,primaryColor:i,primaryColorHover:a,primaryColorPressed:s,baseColor:l,borderRadius:c}=e;return{color:t,textColor:n,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)",colorHover:o,colorPressed:r,colorPrimary:i,colorPrimaryHover:a,colorPrimaryPressed:s,textColorPrimary:l,borderRadiusSquare:c}}};function E7(e){const{popoverColor:t,textColor2:n,buttonColor2Hover:o,buttonColor2Pressed:r,primaryColor:i,primaryColorHover:a,primaryColorPressed:s,borderRadius:l}=e;return{color:t,colorHover:o,colorPressed:r,colorPrimary:i,colorPrimaryHover:a,colorPrimaryPressed:s,textColor:n,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .16)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .24)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .24)",textColorPrimary:"#fff",borderRadiusSquare:l}}const I7={name:"FloatButton",common:se,self:E7},M7={xs:0,s:640,m:1024,l:1280,xl:1536,xxl:1920},A0=24,Sl="__ssr__",D7={layoutShiftDisabled:Boolean,responsive:{type:[String,Boolean],default:"self"},cols:{type:[Number,String],default:A0},itemResponsive:Boolean,collapsed:Boolean,collapsedRows:{type:Number,default:1},itemStyle:[Object,String],xGap:{type:[Number,String],default:0},yGap:{type:[Number,String],default:0}},O7=de({name:"Grid",inheritAttrs:!1,props:D7,setup(e){const{mergedClsPrefixRef:t,mergedBreakpointsRef:n}=dt(e),o=/^\d+$/,r=V(void 0),i=jC((n==null?void 0:n.value)||M7),a=Rt(()=>!!(e.itemResponsive||!o.test(e.cols.toString())||!o.test(e.xGap.toString())||!o.test(e.yGap.toString()))),s=z(()=>{if(a.value)return e.responsive==="self"?r.value:i.value}),l=Rt(()=>{var m;return(m=Number(gr(e.cols.toString(),s.value)))!==null&&m!==void 0?m:A0}),c=Rt(()=>gr(e.xGap.toString(),s.value)),d=Rt(()=>gr(e.yGap.toString(),s.value)),u=m=>{r.value=m.contentRect.width},h=m=>{Qg(u,m)},g=V(!1),f=z(()=>{if(e.responsive==="self")return h}),b=V(!1),p=V();return It(()=>{const{value:m}=p;m&&m.hasAttribute(Sl)&&(m.removeAttribute(Sl),b.value=!0)}),We(Jb,{layoutShiftDisabledRef:Ve(e,"layoutShiftDisabled"),isSsrRef:b,itemStyleRef:Ve(e,"itemStyle"),xGapRef:c,overflowRef:g}),{isSsr:!ar,contentEl:p,mergedClsPrefix:t,style:z(()=>e.layoutShiftDisabled?{width:"100%",display:"grid",gridTemplateColumns:`repeat(${e.cols}, minmax(0, 1fr))`,columnGap:Sr(e.xGap),rowGap:Sr(e.yGap)}:{width:"100%",display:"grid",gridTemplateColumns:`repeat(${l.value}, minmax(0, 1fr))`,columnGap:Sr(c.value),rowGap:Sr(d.value)}),isResponsive:a,responsiveQuery:s,responsiveCols:l,handleResize:f,overflow:g}},render(){if(this.layoutShiftDisabled)return S("div",$n({ref:"contentEl",class:`${this.mergedClsPrefix}-grid`,style:this.style},this.$attrs),this.$slots);const e=()=>{var t,n,o,r,i,a,s;this.overflow=!1;const l=Ri(em(this)),c=[],{collapsed:d,collapsedRows:u,responsiveCols:h,responsiveQuery:g}=this;l.forEach(k=>{var T,v,x,A,y;if(((T=k==null?void 0:k.type)===null||T===void 0?void 0:T.__GRID_ITEM__)!==!0)return;if(Z2(k)){const D=vn(k);D.props?D.props.privateShow=!1:D.props={privateShow:!1},c.push({child:D,rawChildSpan:0});return}k.dirs=((v=k.dirs)===null||v===void 0?void 0:v.filter(({dir:D})=>D!==Mr))||null,((x=k.dirs)===null||x===void 0?void 0:x.length)===0&&(k.dirs=null);const R=vn(k),P=Number((y=gr((A=R.props)===null||A===void 0?void 0:A.span,g))!==null&&y!==void 0?y:Wh);P!==0&&c.push({child:R,rawChildSpan:P})});let f=0;const b=(t=c[c.length-1])===null||t===void 0?void 0:t.child;if(b!=null&&b.props){const k=(n=b.props)===null||n===void 0?void 0:n.suffix;k!==void 0&&k!==!1&&(f=Number((r=gr((o=b.props)===null||o===void 0?void 0:o.span,g))!==null&&r!==void 0?r:Wh),b.props.privateSpan=f,b.props.privateColStart=h+1-f,b.props.privateShow=(i=b.props.privateShow)!==null&&i!==void 0?i:!0)}let p=0,m=!1;for(const{child:k,rawChildSpan:T}of c){if(m&&(this.overflow=!0),!m){const v=Number((s=gr((a=k.props)===null||a===void 0?void 0:a.offset,g))!==null&&s!==void 0?s:0),x=Math.min(T+v,h);if(k.props?(k.props.privateSpan=x,k.props.privateOffset=v):k.props={privateSpan:x,privateOffset:v},d){const A=p%h;x+A>h&&(p+=h-A),x+p+f>u*h?m=!0:p+=x}}m&&(k.props?k.props.privateShow!==!0&&(k.props.privateShow=!1):k.props={privateShow:!1})}return S("div",$n({ref:"contentEl",class:`${this.mergedClsPrefix}-grid`,style:this.style,[Sl]:this.isSsr||void 0},this.$attrs),c.map(({child:k})=>k))};return this.isResponsive&&this.responsive==="self"?S(Va,{onResize:this.handleResize},{default:e}):e()}});function R0(e){const{primaryColor:t,baseColor:n}=e;return{color:t,iconColor:n}}const L7={name:"IconWrapper",common:se,self:R0},H7={name:"IconWrapper",common:ae,self:R0};function $7(){return{toolbarIconColor:"rgba(255, 255, 255, .9)",toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}const B7={name:"Image",common:se,peers:{Tooltip:Zi},self:$7},N7={name:"Image",common:ae,peers:{Tooltip:Ds},self:e=>{const{textColor2:t}=e;return{toolbarIconColor:t,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}},E0={type:String,default:"static"},z7=oe("layout",` + `),Ht("dashed",[G("line",{backgroundColor:"var(--n-color)"})]),te("dashed",[G("line",{borderColor:"var(--n-color)"})]),te("vertical",{backgroundColor:"var(--n-color)"})]),H8=Object.assign(Object.assign({},Ee.props),{titlePlacement:{type:String,default:"center"},dashed:Boolean,vertical:Boolean}),$8=de({name:"Divider",props:H8,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Divider","-divider",L8,jb,e,t),r=z(()=>{const{common:{cubicBezierEaseInOut:a},self:{color:s,textColor:l,fontWeight:c}}=o.value;return{"--n-bezier":a,"--n-color":s,"--n-text-color":l,"--n-font-weight":c}}),i=n?Mt("divider",void 0,r,e):void 0;return{mergedClsPrefix:t,cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{$slots:t,titlePlacement:n,vertical:o,dashed:r,cssVars:i,mergedClsPrefix:a}=this;return(e=this.onRender)===null||e===void 0||e.call(this),S("div",{role:"separator",class:[`${a}-divider`,this.themeClass,{[`${a}-divider--vertical`]:o,[`${a}-divider--no-title`]:!t.default,[`${a}-divider--dashed`]:r,[`${a}-divider--title-position-${n}`]:t.default&&n}],style:i},o?null:S("div",{class:`${a}-divider__line ${a}-divider__line--left`}),!o&&t.default?S(He,null,S("div",{class:`${a}-divider__title`},this.$slots),S("div",{class:`${a}-divider__line ${a}-divider__line--right`})):null)}});function Gb(e){const{modalColor:t,textColor1:n,textColor2:o,boxShadow3:r,lineHeight:i,fontWeightStrong:a,dividerColor:s,closeColorHover:l,closeColorPressed:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,borderRadius:g,primaryColorHover:f}=e;return{bodyPadding:"16px 24px",borderRadius:g,headerPadding:"16px 24px",footerPadding:"16px 24px",color:t,textColor:o,titleTextColor:n,titleFontSize:"18px",titleFontWeight:a,boxShadow:r,lineHeight:i,headerBorderBottom:`1px solid ${s}`,footerBorderTop:`1px solid ${s}`,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,closeSize:"22px",closeIconSize:"18px",closeColorHover:l,closeColorPressed:c,closeBorderRadius:g,resizableTriggerColorHover:f}}const B8={name:"Drawer",common:se,peers:{Scrollbar:Jt},self:Gb},N8={name:"Drawer",common:ae,peers:{Scrollbar:an},self:Gb},Vb={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"},z8={name:"DynamicInput",common:ae,peers:{Input:kn,Button:sn},self(){return Vb}};function F8(){return Vb}const W8={name:"DynamicInput",common:se,peers:{Input:fn,Button:Qt},self:F8},Ub={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},Kb={name:"Space",self(){return Ub}};function j8(){return Ub}const Sd={name:"Space",self:j8};let xl;function G8(){if(!ar)return!0;if(xl===void 0){const e=document.createElement("div");e.style.display="flex",e.style.flexDirection="column",e.style.rowGap="1px",e.appendChild(document.createElement("div")),e.appendChild(document.createElement("div")),document.body.appendChild(e);const t=e.scrollHeight===1;return document.body.removeChild(e),xl=t}return xl}const V8=Object.assign(Object.assign({},Ee.props),{align:String,justify:{type:String,default:"start"},inline:Boolean,vertical:Boolean,reverse:Boolean,size:{type:[String,Number,Array],default:"medium"},wrapItem:{type:Boolean,default:!0},itemClass:String,itemStyle:[String,Object],wrap:{type:Boolean,default:!0},internalUseGap:{type:Boolean,default:void 0}}),qb=de({name:"Space",props:V8,setup(e){const{mergedClsPrefixRef:t,mergedRtlRef:n}=dt(e),o=Ee("Space","-space",void 0,Sd,e,t),r=Ao("Space",n,t);return{useGap:G8(),rtlEnabled:r,mergedClsPrefix:t,margin:z(()=>{const{size:i}=e;if(Array.isArray(i))return{horizontal:i[0],vertical:i[1]};if(typeof i=="number")return{horizontal:i,vertical:i};const{self:{[ge("gap",i)]:a}}=o.value,{row:s,col:l}=N2(a);return{horizontal:Wa(l),vertical:Wa(s)}})}},render(){const{vertical:e,reverse:t,align:n,inline:o,justify:r,itemClass:i,itemStyle:a,margin:s,wrap:l,mergedClsPrefix:c,rtlEnabled:d,useGap:u,wrapItem:h,internalUseGap:g}=this,f=Ri(em(this),!1);if(!f.length)return null;const b=`${s.horizontal}px`,p=`${s.horizontal/2}px`,m=`${s.vertical}px`,k=`${s.vertical/2}px`,T=f.length-1,v=r.startsWith("space-");return S("div",{role:"none",class:[`${c}-space`,d&&`${c}-space--rtl`],style:{display:o?"inline-flex":"flex",flexDirection:e&&!t?"column":e&&t?"column-reverse":!e&&t?"row-reverse":"row",justifyContent:["start","end"].includes(r)?`flex-${r}`:r,flexWrap:!l||e?"nowrap":"wrap",marginTop:u||e?"":`-${k}`,marginBottom:u||e?"":`-${k}`,alignItems:n,gap:u?`${s.vertical}px ${s.horizontal}px`:""}},!h&&(u||g)?f:f.map((x,A)=>x.type===kt?x:S("div",{role:"none",class:i,style:[a,{maxWidth:"100%"},u?"":e?{marginBottom:A!==T?m:""}:d?{marginLeft:v?r==="space-between"&&A===T?"":p:A!==T?b:"",marginRight:v?r==="space-between"&&A===0?"":p:"",paddingTop:k,paddingBottom:k}:{marginRight:v?r==="space-between"&&A===T?"":p:A!==T?b:"",marginLeft:v?r==="space-between"&&A===0?"":p:"",paddingTop:k,paddingBottom:k}]},x)))}}),U8={name:"DynamicTags",common:ae,peers:{Input:kn,Button:sn,Tag:Hp,Space:Kb},self(){return{inputWidth:"64px"}}},K8={name:"DynamicTags",common:se,peers:{Input:fn,Button:Qt,Tag:$p,Space:Sd},self(){return{inputWidth:"64px"}}},q8={name:"Element",common:ae},Xb={name:"Element",common:se},X8=Object.assign(Object.assign({},Ee.props),{tag:{type:String,default:"div"}}),Ma=de({name:"Element",alias:["El"],props:X8,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Element","-element",void 0,Xb,e,t),r=z(()=>{const{common:a}=o.value;return Object.keys(a).reduce((s,l)=>(s[`--${U6(l)}`]=a[l],s),{})}),i=n?Mt("element",void 0,r,e):void 0;return{mergedClsPrefix:t,cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{tag:t,mergedClsPrefix:n,cssVars:o,themeClass:r,onRender:i,$slots:a}=this;return i==null||i(),S(t,{role:"none",class:[`${n}-element`,r],style:o},(e=a.default)===null||e===void 0?void 0:e.call(a))}}),Zb={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},Z8={name:"Flex",self(){return Zb}};function Y8(){return Zb}const J8={name:"Flex",self:Y8},Q8={feedbackPadding:"4px 0 0 2px",feedbackHeightSmall:"24px",feedbackHeightMedium:"24px",feedbackHeightLarge:"26px",feedbackFontSizeSmall:"13px",feedbackFontSizeMedium:"14px",feedbackFontSizeLarge:"14px",labelFontSizeLeftSmall:"14px",labelFontSizeLeftMedium:"14px",labelFontSizeLeftLarge:"15px",labelFontSizeTopSmall:"13px",labelFontSizeTopMedium:"14px",labelFontSizeTopLarge:"14px",labelHeightSmall:"24px",labelHeightMedium:"26px",labelHeightLarge:"28px",labelPaddingVertical:"0 0 6px 2px",labelPaddingHorizontal:"0 12px 0 0",labelTextAlignVertical:"left",labelTextAlignHorizontal:"right",labelFontWeight:"400"};function Yb(e){const{heightSmall:t,heightMedium:n,heightLarge:o,textColor1:r,errorColor:i,warningColor:a,lineHeight:s,textColor3:l}=e;return Object.assign(Object.assign({},Q8),{blankHeightSmall:t,blankHeightMedium:n,blankHeightLarge:o,lineHeight:s,labelTextColor:r,asteriskColor:i,feedbackTextColorError:i,feedbackTextColorWarning:a,feedbackTextColor:l})}const e9={name:"Form",common:se,self:Yb},t9={name:"Form",common:ae,self:Yb},Wh=1,Jb="n-grid",Qb=1,n9={span:{type:[Number,String],default:Qb},offset:{type:[Number,String],default:0},suffix:Boolean,privateOffset:Number,privateSpan:Number,privateColStart:Number,privateShow:{type:Boolean,default:!0}},o9=de({__GRID_ITEM__:!0,name:"GridItem",alias:["Gi"],props:n9,setup(){const{isSsrRef:e,xGapRef:t,itemStyleRef:n,overflowRef:o,layoutShiftDisabledRef:r}=Me(Jb),i=rn();return{overflow:o,itemStyle:n,layoutShiftDisabled:r,mergedXGap:z(()=>Sr(t.value||0)),deriveStyle:()=>{e.value;const{privateSpan:a=Qb,privateShow:s=!0,privateColStart:l=void 0,privateOffset:c=0}=i.vnode.props,{value:d}=t,u=Sr(d||0);return{display:s?"":"none",gridColumn:`${l??`span ${a}`} / span ${a}`,marginLeft:c?`calc((100% - (${a} - 1) * ${u}) / ${a} * ${c} + ${u} * ${c})`:""}}}},render(){var e,t;if(this.layoutShiftDisabled){const{span:n,offset:o,mergedXGap:r}=this;return S("div",{style:{gridColumn:`span ${n} / span ${n}`,marginLeft:o?`calc((100% - (${n} - 1) * ${r}) / ${n} * ${o} + ${r} * ${o})`:""}},this.$slots)}return S("div",{style:[this.itemStyle,this.deriveStyle()]},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e,{overflow:this.overflow}))}}),r9={closeMargin:"16px 12px",closeSize:"20px",closeIconSize:"16px",width:"365px",padding:"16px",titleFontSize:"16px",metaFontSize:"12px",descriptionFontSize:"12px"};function e0(e){const{textColor2:t,successColor:n,infoColor:o,warningColor:r,errorColor:i,popoverColor:a,closeIconColor:s,closeIconColorHover:l,closeIconColorPressed:c,closeColorHover:d,closeColorPressed:u,textColor1:h,textColor3:g,borderRadius:f,fontWeightStrong:b,boxShadow2:p,lineHeight:m,fontSize:k}=e;return Object.assign(Object.assign({},r9),{borderRadius:f,lineHeight:m,fontSize:k,headerFontWeight:b,iconColor:t,iconColorSuccess:n,iconColorInfo:o,iconColorWarning:r,iconColorError:i,color:a,textColor:t,closeIconColor:s,closeIconColorHover:l,closeIconColorPressed:c,closeBorderRadius:f,closeColorHover:d,closeColorPressed:u,headerTextColor:h,descriptionTextColor:g,actionTextColor:t,boxShadow:p})}const t0={name:"Notification",common:se,peers:{Scrollbar:Jt},self:e0},i9={name:"Notification",common:ae,peers:{Scrollbar:an},self:e0},a9={margin:"0 0 8px 0",padding:"10px 20px",maxWidth:"720px",minWidth:"420px",iconMargin:"0 10px 0 0",closeMargin:"0 0 0 10px",closeSize:"20px",closeIconSize:"16px",iconSize:"20px",fontSize:"14px"};function n0(e){const{textColor2:t,closeIconColor:n,closeIconColorHover:o,closeIconColorPressed:r,infoColor:i,successColor:a,errorColor:s,warningColor:l,popoverColor:c,boxShadow2:d,primaryColor:u,lineHeight:h,borderRadius:g,closeColorHover:f,closeColorPressed:b}=e;return Object.assign(Object.assign({},a9),{closeBorderRadius:g,textColor:t,textColorInfo:t,textColorSuccess:t,textColorError:t,textColorWarning:t,textColorLoading:t,color:c,colorInfo:c,colorSuccess:c,colorError:c,colorWarning:c,colorLoading:c,boxShadow:d,boxShadowInfo:d,boxShadowSuccess:d,boxShadowError:d,boxShadowWarning:d,boxShadowLoading:d,iconColor:t,iconColorInfo:i,iconColorSuccess:a,iconColorWarning:l,iconColorError:s,iconColorLoading:u,closeColorHover:f,closeColorPressed:b,closeIconColor:n,closeIconColorHover:o,closeIconColorPressed:r,closeColorHoverInfo:f,closeColorPressedInfo:b,closeIconColorInfo:n,closeIconColorHoverInfo:o,closeIconColorPressedInfo:r,closeColorHoverSuccess:f,closeColorPressedSuccess:b,closeIconColorSuccess:n,closeIconColorHoverSuccess:o,closeIconColorPressedSuccess:r,closeColorHoverError:f,closeColorPressedError:b,closeIconColorError:n,closeIconColorHoverError:o,closeIconColorPressedError:r,closeColorHoverWarning:f,closeColorPressedWarning:b,closeIconColorWarning:n,closeIconColorHoverWarning:o,closeIconColorPressedWarning:r,closeColorHoverLoading:f,closeColorPressedLoading:b,closeIconColorLoading:n,closeIconColorHoverLoading:o,closeIconColorPressedLoading:r,loadingColor:u,lineHeight:h,borderRadius:g})}const o0={name:"Message",common:se,self:n0},s9={name:"Message",common:ae,self:n0},l9={name:"ButtonGroup",common:ae},c9={name:"ButtonGroup",common:se},d9={name:"GradientText",common:ae,self(e){const{primaryColor:t,successColor:n,warningColor:o,errorColor:r,infoColor:i,primaryColorSuppl:a,successColorSuppl:s,warningColorSuppl:l,errorColorSuppl:c,infoColorSuppl:d,fontWeightStrong:u}=e;return{fontWeight:u,rotate:"252deg",colorStartPrimary:t,colorEndPrimary:a,colorStartInfo:i,colorEndInfo:d,colorStartWarning:o,colorEndWarning:l,colorStartError:r,colorEndError:c,colorStartSuccess:n,colorEndSuccess:s}}};function u9(e){const{primaryColor:t,successColor:n,warningColor:o,errorColor:r,infoColor:i,fontWeightStrong:a}=e;return{fontWeight:a,rotate:"252deg",colorStartPrimary:U(t,{alpha:.6}),colorEndPrimary:t,colorStartInfo:U(i,{alpha:.6}),colorEndInfo:i,colorStartWarning:U(o,{alpha:.6}),colorEndWarning:o,colorStartError:U(r,{alpha:.6}),colorEndError:r,colorStartSuccess:U(n,{alpha:.6}),colorEndSuccess:n}}const h9={name:"GradientText",common:se,self:u9},f9={name:"InputNumber",common:ae,peers:{Button:sn,Input:kn},self(e){const{textColorDisabled:t}=e;return{iconColorDisabled:t}}};function g9(e){const{textColorDisabled:t}=e;return{iconColorDisabled:t}}const m9={name:"InputNumber",common:se,peers:{Button:Qt,Input:fn},self:g9},p9={name:"Layout",common:ae,peers:{Scrollbar:an},self(e){const{textColor2:t,bodyColor:n,popoverColor:o,cardColor:r,dividerColor:i,scrollbarColor:a,scrollbarColorHover:s}=e;return{textColor:t,textColorInverted:t,color:n,colorEmbedded:n,headerColor:r,headerColorInverted:r,footerColor:r,footerColorInverted:r,headerBorderColor:i,headerBorderColorInverted:i,footerBorderColor:i,footerBorderColorInverted:i,siderBorderColor:i,siderBorderColorInverted:i,siderColor:r,siderColorInverted:r,siderToggleButtonBorder:"1px solid transparent",siderToggleButtonColor:o,siderToggleButtonIconColor:t,siderToggleButtonIconColorInverted:t,siderToggleBarColor:ce(n,a),siderToggleBarColorHover:ce(n,s),__invertScrollbar:"false"}}};function b9(e){const{baseColor:t,textColor2:n,bodyColor:o,cardColor:r,dividerColor:i,actionColor:a,scrollbarColor:s,scrollbarColorHover:l,invertedColor:c}=e;return{textColor:n,textColorInverted:"#FFF",color:o,colorEmbedded:a,headerColor:r,headerColorInverted:c,footerColor:a,footerColorInverted:c,headerBorderColor:i,headerBorderColorInverted:c,footerBorderColor:i,footerBorderColorInverted:c,siderBorderColor:i,siderBorderColorInverted:c,siderColor:r,siderColorInverted:c,siderToggleButtonBorder:`1px solid ${i}`,siderToggleButtonColor:t,siderToggleButtonIconColor:n,siderToggleButtonIconColorInverted:n,siderToggleBarColor:ce(o,s),siderToggleBarColorHover:ce(o,l),__invertScrollbar:"true"}}const Td={name:"Layout",common:se,peers:{Scrollbar:Jt},self:b9};function r0(e){const{textColor2:t,cardColor:n,modalColor:o,popoverColor:r,dividerColor:i,borderRadius:a,fontSize:s,hoverColor:l}=e;return{textColor:t,color:n,colorHover:l,colorModal:o,colorHoverModal:ce(o,l),colorPopover:r,colorHoverPopover:ce(r,l),borderColor:i,borderColorModal:ce(o,i),borderColorPopover:ce(r,i),borderRadius:a,fontSize:s}}const v9={name:"List",common:se,self:r0},y9={name:"List",common:ae,self:r0},C9={name:"LoadingBar",common:ae,self(e){const{primaryColor:t}=e;return{colorError:"red",colorLoading:t,height:"2px"}}};function k9(e){const{primaryColor:t,errorColor:n}=e;return{colorError:n,colorLoading:t,height:"2px"}}const i0={name:"LoadingBar",common:se,self:k9},x9={name:"Log",common:ae,peers:{Scrollbar:an,Code:ib},self(e){const{textColor2:t,inputColor:n,fontSize:o,primaryColor:r}=e;return{loaderFontSize:o,loaderTextColor:t,loaderColor:n,loaderBorder:"1px solid #0000",loadingColor:r}}};function S9(e){const{textColor2:t,modalColor:n,borderColor:o,fontSize:r,primaryColor:i}=e;return{loaderFontSize:r,loaderTextColor:t,loaderColor:n,loaderBorder:`1px solid ${o}`,loadingColor:i}}const T9={name:"Log",common:se,peers:{Scrollbar:Jt,Code:ab},self:S9},w9={name:"Mention",common:ae,peers:{InternalSelectMenu:Xi,Input:kn},self(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}};function _9(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const P9={name:"Mention",common:se,peers:{InternalSelectMenu:qi,Input:fn},self:_9};function A9(e,t,n,o){return{itemColorHoverInverted:"#0000",itemColorActiveInverted:t,itemColorActiveHoverInverted:t,itemColorActiveCollapsedInverted:t,itemTextColorInverted:e,itemTextColorHoverInverted:n,itemTextColorChildActiveInverted:n,itemTextColorChildActiveHoverInverted:n,itemTextColorActiveInverted:n,itemTextColorActiveHoverInverted:n,itemTextColorHorizontalInverted:e,itemTextColorHoverHorizontalInverted:n,itemTextColorChildActiveHorizontalInverted:n,itemTextColorChildActiveHoverHorizontalInverted:n,itemTextColorActiveHorizontalInverted:n,itemTextColorActiveHoverHorizontalInverted:n,itemIconColorInverted:e,itemIconColorHoverInverted:n,itemIconColorActiveInverted:n,itemIconColorActiveHoverInverted:n,itemIconColorChildActiveInverted:n,itemIconColorChildActiveHoverInverted:n,itemIconColorCollapsedInverted:e,itemIconColorHorizontalInverted:e,itemIconColorHoverHorizontalInverted:n,itemIconColorActiveHorizontalInverted:n,itemIconColorActiveHoverHorizontalInverted:n,itemIconColorChildActiveHorizontalInverted:n,itemIconColorChildActiveHoverHorizontalInverted:n,arrowColorInverted:e,arrowColorHoverInverted:n,arrowColorActiveInverted:n,arrowColorActiveHoverInverted:n,arrowColorChildActiveInverted:n,arrowColorChildActiveHoverInverted:n,groupTextColorInverted:o}}function a0(e){const{borderRadius:t,textColor3:n,primaryColor:o,textColor2:r,textColor1:i,fontSize:a,dividerColor:s,hoverColor:l,primaryColorHover:c}=e;return Object.assign({borderRadius:t,color:"#0000",groupTextColor:n,itemColorHover:l,itemColorActive:U(o,{alpha:.1}),itemColorActiveHover:U(o,{alpha:.1}),itemColorActiveCollapsed:U(o,{alpha:.1}),itemTextColor:r,itemTextColorHover:r,itemTextColorActive:o,itemTextColorActiveHover:o,itemTextColorChildActive:o,itemTextColorChildActiveHover:o,itemTextColorHorizontal:r,itemTextColorHoverHorizontal:c,itemTextColorActiveHorizontal:o,itemTextColorActiveHoverHorizontal:o,itemTextColorChildActiveHorizontal:o,itemTextColorChildActiveHoverHorizontal:o,itemIconColor:i,itemIconColorHover:i,itemIconColorActive:o,itemIconColorActiveHover:o,itemIconColorChildActive:o,itemIconColorChildActiveHover:o,itemIconColorCollapsed:i,itemIconColorHorizontal:i,itemIconColorHoverHorizontal:c,itemIconColorActiveHorizontal:o,itemIconColorActiveHoverHorizontal:o,itemIconColorChildActiveHorizontal:o,itemIconColorChildActiveHoverHorizontal:o,itemHeight:"42px",arrowColor:r,arrowColorHover:r,arrowColorActive:o,arrowColorActiveHover:o,arrowColorChildActive:o,arrowColorChildActiveHover:o,colorInverted:"#0000",borderColorHorizontal:"#0000",fontSize:a,dividerColor:s},A9("#BBB",o,"#FFF","#AAA"))}const R9={name:"Menu",common:se,peers:{Tooltip:Zi,Dropdown:Os},self:a0},E9={name:"Menu",common:ae,peers:{Tooltip:Ds,Dropdown:vd},self(e){const{primaryColor:t,primaryColorSuppl:n}=e,o=a0(e);return o.itemColorActive=U(t,{alpha:.15}),o.itemColorActiveHover=U(t,{alpha:.15}),o.itemColorActiveCollapsed=U(t,{alpha:.15}),o.itemColorActiveInverted=n,o.itemColorActiveHoverInverted=n,o.itemColorActiveCollapsedInverted=n,o}},I9={titleFontSize:"18px",backSize:"22px"};function s0(e){const{textColor1:t,textColor2:n,textColor3:o,fontSize:r,fontWeightStrong:i,primaryColorHover:a,primaryColorPressed:s}=e;return Object.assign(Object.assign({},I9),{titleFontWeight:i,fontSize:r,titleTextColor:t,backColor:n,backColorHover:a,backColorPressed:s,subtitleTextColor:o})}const M9={name:"PageHeader",common:se,self:s0},D9={name:"PageHeader",common:ae,self:s0},O9={iconSize:"22px"};function l0(e){const{fontSize:t,warningColor:n}=e;return Object.assign(Object.assign({},O9),{fontSize:t,iconColor:n})}const L9={name:"Popconfirm",common:se,peers:{Button:Qt,Popover:Ro},self:l0},H9={name:"Popconfirm",common:ae,peers:{Button:sn,Popover:ur},self:l0};function c0(e){const{infoColor:t,successColor:n,warningColor:o,errorColor:r,textColor2:i,progressRailColor:a,fontSize:s,fontWeight:l}=e;return{fontSize:s,fontSizeCircle:"28px",fontWeightCircle:l,railColor:a,railHeight:"8px",iconSizeCircle:"36px",iconSizeLine:"18px",iconColor:t,iconColorInfo:t,iconColorSuccess:n,iconColorWarning:o,iconColorError:r,textColorCircle:i,textColorLineInner:"rgb(255, 255, 255)",textColorLineOuter:i,fillColor:t,fillColorInfo:t,fillColorSuccess:n,fillColorWarning:o,fillColorError:r,lineBgProcessing:"linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)"}}const d0={name:"Progress",common:se,self:c0},u0={name:"Progress",common:ae,self(e){const t=c0(e);return t.textColorLineInner="rgb(0, 0, 0)",t.lineBgProcessing="linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)",t}},$9={name:"Rate",common:ae,self(e){const{railColor:t}=e;return{itemColor:t,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}};function B9(e){const{railColor:t}=e;return{itemColor:t,itemColorActive:"#FFCC33",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}const N9={name:"Rate",common:se,self:B9},z9={titleFontSizeSmall:"26px",titleFontSizeMedium:"32px",titleFontSizeLarge:"40px",titleFontSizeHuge:"48px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",iconSizeSmall:"64px",iconSizeMedium:"80px",iconSizeLarge:"100px",iconSizeHuge:"125px",iconColor418:void 0,iconColor404:void 0,iconColor403:void 0,iconColor500:void 0};function h0(e){const{textColor2:t,textColor1:n,errorColor:o,successColor:r,infoColor:i,warningColor:a,lineHeight:s,fontWeightStrong:l}=e;return Object.assign(Object.assign({},z9),{lineHeight:s,titleFontWeight:l,titleTextColor:n,textColor:t,iconColorError:o,iconColorSuccess:r,iconColorInfo:i,iconColorWarning:a})}const F9={name:"Result",common:se,self:h0},W9={name:"Result",common:ae,self:h0},f0={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"},j9={name:"Slider",common:ae,self(e){const t="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:n,modalColor:o,primaryColorSuppl:r,popoverColor:i,textColor2:a,cardColor:s,borderRadius:l,fontSize:c,opacityDisabled:d}=e;return Object.assign(Object.assign({},f0),{fontSize:c,markFontSize:c,railColor:n,railColorHover:n,fillColor:r,fillColorHover:r,opacityDisabled:d,handleColor:"#FFF",dotColor:s,dotColorModal:o,dotColorPopover:i,handleBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowHover:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowActive:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowFocus:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",indicatorColor:i,indicatorBoxShadow:t,indicatorTextColor:a,indicatorBorderRadius:l,dotBorder:`2px solid ${n}`,dotBorderActive:`2px solid ${r}`,dotBoxShadow:""})}};function G9(e){const t="rgba(0, 0, 0, .85)",n="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:o,primaryColor:r,baseColor:i,cardColor:a,modalColor:s,popoverColor:l,borderRadius:c,fontSize:d,opacityDisabled:u}=e;return Object.assign(Object.assign({},f0),{fontSize:d,markFontSize:d,railColor:o,railColorHover:o,fillColor:r,fillColorHover:r,opacityDisabled:u,handleColor:"#FFF",dotColor:a,dotColorModal:s,dotColorPopover:l,handleBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowHover:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowActive:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",handleBoxShadowFocus:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",indicatorColor:t,indicatorBoxShadow:n,indicatorTextColor:i,indicatorBorderRadius:c,dotBorder:`2px solid ${o}`,dotBorderActive:`2px solid ${r}`,dotBoxShadow:""})}const V9={name:"Slider",common:se,self:G9};function g0(e){const{opacityDisabled:t,heightTiny:n,heightSmall:o,heightMedium:r,heightLarge:i,heightHuge:a,primaryColor:s,fontSize:l}=e;return{fontSize:l,textColor:s,sizeTiny:n,sizeSmall:o,sizeMedium:r,sizeLarge:i,sizeHuge:a,color:s,opacitySpinning:t}}const U9={name:"Spin",common:se,self:g0},K9={name:"Spin",common:ae,self:g0};function m0(e){const{textColor2:t,textColor3:n,fontSize:o,fontWeight:r}=e;return{labelFontSize:o,labelFontWeight:r,valueFontWeight:r,valueFontSize:"24px",labelTextColor:n,valuePrefixTextColor:t,valueSuffixTextColor:t,valueTextColor:t}}const q9={name:"Statistic",common:se,self:m0},X9={name:"Statistic",common:ae,self:m0},Z9={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"};function p0(e){const{fontWeightStrong:t,baseColor:n,textColorDisabled:o,primaryColor:r,errorColor:i,textColor1:a,textColor2:s}=e;return Object.assign(Object.assign({},Z9),{stepHeaderFontWeight:t,indicatorTextColorProcess:n,indicatorTextColorWait:o,indicatorTextColorFinish:r,indicatorTextColorError:i,indicatorBorderColorProcess:r,indicatorBorderColorWait:o,indicatorBorderColorFinish:r,indicatorBorderColorError:i,indicatorColorProcess:r,indicatorColorWait:"#0000",indicatorColorFinish:"#0000",indicatorColorError:"#0000",splitorColorProcess:o,splitorColorWait:o,splitorColorFinish:r,splitorColorError:o,headerTextColorProcess:a,headerTextColorWait:o,headerTextColorFinish:o,headerTextColorError:i,descriptionTextColorProcess:s,descriptionTextColorWait:o,descriptionTextColorFinish:o,descriptionTextColorError:i})}const Y9={name:"Steps",common:se,self:p0},J9={name:"Steps",common:ae,self:p0},b0={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"},Q9={name:"Switch",common:ae,self(e){const{primaryColorSuppl:t,opacityDisabled:n,borderRadius:o,primaryColor:r,textColor2:i,baseColor:a}=e;return Object.assign(Object.assign({},b0),{iconColor:a,textColor:i,loadingColor:t,opacityDisabled:n,railColor:"rgba(255, 255, 255, .20)",railColorActive:t,buttonBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",buttonColor:"#FFF",railBorderRadiusSmall:o,railBorderRadiusMedium:o,railBorderRadiusLarge:o,buttonBorderRadiusSmall:o,buttonBorderRadiusMedium:o,buttonBorderRadiusLarge:o,boxShadowFocus:`0 0 8px 0 ${U(r,{alpha:.3})}`})}};function e7(e){const{primaryColor:t,opacityDisabled:n,borderRadius:o,textColor3:r}=e;return Object.assign(Object.assign({},b0),{iconColor:r,textColor:"white",loadingColor:t,opacityDisabled:n,railColor:"rgba(0, 0, 0, .14)",railColorActive:t,buttonBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",buttonColor:"#FFF",railBorderRadiusSmall:o,railBorderRadiusMedium:o,railBorderRadiusLarge:o,buttonBorderRadiusSmall:o,buttonBorderRadiusMedium:o,buttonBorderRadiusLarge:o,boxShadowFocus:`0 0 0 2px ${U(t,{alpha:.2})}`})}const t7={name:"Switch",common:se,self:e7},n7={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"};function v0(e){const{dividerColor:t,cardColor:n,modalColor:o,popoverColor:r,tableHeaderColor:i,tableColorStriped:a,textColor1:s,textColor2:l,borderRadius:c,fontWeightStrong:d,lineHeight:u,fontSizeSmall:h,fontSizeMedium:g,fontSizeLarge:f}=e;return Object.assign(Object.assign({},n7),{fontSizeSmall:h,fontSizeMedium:g,fontSizeLarge:f,lineHeight:u,borderRadius:c,borderColor:ce(n,t),borderColorModal:ce(o,t),borderColorPopover:ce(r,t),tdColor:n,tdColorModal:o,tdColorPopover:r,tdColorStriped:ce(n,a),tdColorStripedModal:ce(o,a),tdColorStripedPopover:ce(r,a),thColor:ce(n,i),thColorModal:ce(o,i),thColorPopover:ce(r,i),thTextColor:s,tdTextColor:l,thFontWeight:d})}const o7={name:"Table",common:se,self:v0},r7={name:"Table",common:ae,self:v0},i7={tabFontSizeSmall:"14px",tabFontSizeMedium:"14px",tabFontSizeLarge:"16px",tabGapSmallLine:"36px",tabGapMediumLine:"36px",tabGapLargeLine:"36px",tabGapSmallLineVertical:"8px",tabGapMediumLineVertical:"8px",tabGapLargeLineVertical:"8px",tabPaddingSmallLine:"6px 0",tabPaddingMediumLine:"10px 0",tabPaddingLargeLine:"14px 0",tabPaddingVerticalSmallLine:"6px 12px",tabPaddingVerticalMediumLine:"8px 16px",tabPaddingVerticalLargeLine:"10px 20px",tabGapSmallBar:"36px",tabGapMediumBar:"36px",tabGapLargeBar:"36px",tabGapSmallBarVertical:"8px",tabGapMediumBarVertical:"8px",tabGapLargeBarVertical:"8px",tabPaddingSmallBar:"4px 0",tabPaddingMediumBar:"6px 0",tabPaddingLargeBar:"10px 0",tabPaddingVerticalSmallBar:"6px 12px",tabPaddingVerticalMediumBar:"8px 16px",tabPaddingVerticalLargeBar:"10px 20px",tabGapSmallCard:"4px",tabGapMediumCard:"4px",tabGapLargeCard:"4px",tabGapSmallCardVertical:"4px",tabGapMediumCardVertical:"4px",tabGapLargeCardVertical:"4px",tabPaddingSmallCard:"8px 16px",tabPaddingMediumCard:"10px 20px",tabPaddingLargeCard:"12px 24px",tabPaddingSmallSegment:"4px 0",tabPaddingMediumSegment:"6px 0",tabPaddingLargeSegment:"8px 0",tabPaddingVerticalLargeSegment:"0 8px",tabPaddingVerticalSmallCard:"8px 12px",tabPaddingVerticalMediumCard:"10px 16px",tabPaddingVerticalLargeCard:"12px 20px",tabPaddingVerticalSmallSegment:"0 4px",tabPaddingVerticalMediumSegment:"0 6px",tabGapSmallSegment:"0",tabGapMediumSegment:"0",tabGapLargeSegment:"0",tabGapSmallSegmentVertical:"0",tabGapMediumSegmentVertical:"0",tabGapLargeSegmentVertical:"0",panePaddingSmall:"8px 0 0 0",panePaddingMedium:"12px 0 0 0",panePaddingLarge:"16px 0 0 0",closeSize:"18px",closeIconSize:"14px"};function y0(e){const{textColor2:t,primaryColor:n,textColorDisabled:o,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeColorHover:s,closeColorPressed:l,tabColor:c,baseColor:d,dividerColor:u,fontWeight:h,textColor1:g,borderRadius:f,fontSize:b,fontWeightStrong:p}=e;return Object.assign(Object.assign({},i7),{colorSegment:c,tabFontSizeCard:b,tabTextColorLine:g,tabTextColorActiveLine:n,tabTextColorHoverLine:n,tabTextColorDisabledLine:o,tabTextColorSegment:g,tabTextColorActiveSegment:t,tabTextColorHoverSegment:t,tabTextColorDisabledSegment:o,tabTextColorBar:g,tabTextColorActiveBar:n,tabTextColorHoverBar:n,tabTextColorDisabledBar:o,tabTextColorCard:g,tabTextColorHoverCard:g,tabTextColorActiveCard:n,tabTextColorDisabledCard:o,barColor:n,closeIconColor:r,closeIconColorHover:i,closeIconColorPressed:a,closeColorHover:s,closeColorPressed:l,closeBorderRadius:f,tabColor:c,tabColorSegment:d,tabBorderColor:u,tabFontWeightActive:h,tabFontWeight:h,tabBorderRadius:f,paneTextColor:t,fontWeightStrong:p})}const a7={name:"Tabs",common:se,self:y0},s7={name:"Tabs",common:ae,self(e){const t=y0(e),{inputColor:n}=e;return t.colorSegment=n,t.tabColorSegment=n,t}};function C0(e){const{textColor1:t,textColor2:n,fontWeightStrong:o,fontSize:r}=e;return{fontSize:r,titleTextColor:t,textColor:n,titleFontWeight:o}}const l7={name:"Thing",common:se,self:C0},c7={name:"Thing",common:ae,self:C0},k0={titleMarginMedium:"0 0 6px 0",titleMarginLarge:"-2px 0 6px 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"},d7={name:"Timeline",common:ae,self(e){const{textColor3:t,infoColorSuppl:n,errorColorSuppl:o,successColorSuppl:r,warningColorSuppl:i,textColor1:a,textColor2:s,railColor:l,fontWeightStrong:c,fontSize:d}=e;return Object.assign(Object.assign({},k0),{contentFontSize:d,titleFontWeight:c,circleBorder:`2px solid ${t}`,circleBorderInfo:`2px solid ${n}`,circleBorderError:`2px solid ${o}`,circleBorderSuccess:`2px solid ${r}`,circleBorderWarning:`2px solid ${i}`,iconColor:t,iconColorInfo:n,iconColorError:o,iconColorSuccess:r,iconColorWarning:i,titleTextColor:a,contentTextColor:s,metaTextColor:t,lineColor:l})}};function u7(e){const{textColor3:t,infoColor:n,errorColor:o,successColor:r,warningColor:i,textColor1:a,textColor2:s,railColor:l,fontWeightStrong:c,fontSize:d}=e;return Object.assign(Object.assign({},k0),{contentFontSize:d,titleFontWeight:c,circleBorder:`2px solid ${t}`,circleBorderInfo:`2px solid ${n}`,circleBorderError:`2px solid ${o}`,circleBorderSuccess:`2px solid ${r}`,circleBorderWarning:`2px solid ${i}`,iconColor:t,iconColorInfo:n,iconColorError:o,iconColorSuccess:r,iconColorWarning:i,titleTextColor:a,contentTextColor:s,metaTextColor:t,lineColor:l})}const h7={name:"Timeline",common:se,self:u7},x0={extraFontSizeSmall:"12px",extraFontSizeMedium:"12px",extraFontSizeLarge:"14px",titleFontSizeSmall:"14px",titleFontSizeMedium:"16px",titleFontSizeLarge:"16px",closeSize:"20px",closeIconSize:"16px",headerHeightSmall:"44px",headerHeightMedium:"44px",headerHeightLarge:"50px"},f7={name:"Transfer",common:ae,peers:{Checkbox:Vr,Scrollbar:an,Input:kn,Empty:dr,Button:sn},self(e){const{fontWeight:t,fontSizeLarge:n,fontSizeMedium:o,fontSizeSmall:r,heightLarge:i,heightMedium:a,borderRadius:s,inputColor:l,tableHeaderColor:c,textColor1:d,textColorDisabled:u,textColor2:h,textColor3:g,hoverColor:f,closeColorHover:b,closeColorPressed:p,closeIconColor:m,closeIconColorHover:k,closeIconColorPressed:T,dividerColor:v}=e;return Object.assign(Object.assign({},x0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:v,borderColor:"#0000",listColor:l,headerColor:c,titleTextColor:d,titleTextColorDisabled:u,extraTextColor:g,extraTextColorDisabled:u,itemTextColor:h,itemTextColorDisabled:u,itemColorPending:f,titleFontWeight:t,closeColorHover:b,closeColorPressed:p,closeIconColor:m,closeIconColorHover:k,closeIconColorPressed:T})}};function g7(e){const{fontWeight:t,fontSizeLarge:n,fontSizeMedium:o,fontSizeSmall:r,heightLarge:i,heightMedium:a,borderRadius:s,cardColor:l,tableHeaderColor:c,textColor1:d,textColorDisabled:u,textColor2:h,textColor3:g,borderColor:f,hoverColor:b,closeColorHover:p,closeColorPressed:m,closeIconColor:k,closeIconColorHover:T,closeIconColorPressed:v}=e;return Object.assign(Object.assign({},x0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:f,borderColor:f,listColor:l,headerColor:ce(l,c),titleTextColor:d,titleTextColorDisabled:u,extraTextColor:g,extraTextColorDisabled:u,itemTextColor:h,itemTextColorDisabled:u,itemColorPending:b,titleFontWeight:t,closeColorHover:p,closeColorPressed:m,closeIconColor:k,closeIconColorHover:T,closeIconColorPressed:v})}const m7={name:"Transfer",common:se,peers:{Checkbox:Gr,Scrollbar:Jt,Input:fn,Empty:to,Button:Qt},self:g7};function S0(e){const{borderRadiusSmall:t,dividerColor:n,hoverColor:o,pressedColor:r,primaryColor:i,textColor3:a,textColor2:s,textColorDisabled:l,fontSize:c}=e;return{fontSize:c,lineHeight:"1.5",nodeHeight:"30px",nodeWrapperPadding:"3px 0",nodeBorderRadius:t,nodeColorHover:o,nodeColorPressed:r,nodeColorActive:U(i,{alpha:.1}),arrowColor:a,nodeTextColor:s,nodeTextColorDisabled:l,loadingColor:i,dropMarkColor:i,lineColor:n}}const T0={name:"Tree",common:se,peers:{Checkbox:Gr,Scrollbar:Jt,Empty:to},self:S0},w0={name:"Tree",common:ae,peers:{Checkbox:Vr,Scrollbar:an,Empty:dr},self(e){const{primaryColor:t}=e,n=S0(e);return n.nodeColorActive=U(t,{alpha:.15}),n}},p7={name:"TreeSelect",common:ae,peers:{Tree:w0,Empty:dr,InternalSelection:gd}};function b7(e){const{popoverColor:t,boxShadow2:n,borderRadius:o,heightMedium:r,dividerColor:i,textColor2:a}=e;return{menuPadding:"4px",menuColor:t,menuBoxShadow:n,menuBorderRadius:o,menuHeight:`calc(${r} * 7.6)`,actionDividerColor:i,actionTextColor:a,actionPadding:"8px 12px"}}const v7={name:"TreeSelect",common:se,peers:{Tree:T0,Empty:to,InternalSelection:fd},self:b7},y7={headerFontSize1:"30px",headerFontSize2:"22px",headerFontSize3:"18px",headerFontSize4:"16px",headerFontSize5:"16px",headerFontSize6:"16px",headerMargin1:"28px 0 20px 0",headerMargin2:"28px 0 20px 0",headerMargin3:"28px 0 20px 0",headerMargin4:"28px 0 18px 0",headerMargin5:"28px 0 18px 0",headerMargin6:"28px 0 18px 0",headerPrefixWidth1:"16px",headerPrefixWidth2:"16px",headerPrefixWidth3:"12px",headerPrefixWidth4:"12px",headerPrefixWidth5:"12px",headerPrefixWidth6:"12px",headerBarWidth1:"4px",headerBarWidth2:"4px",headerBarWidth3:"3px",headerBarWidth4:"3px",headerBarWidth5:"3px",headerBarWidth6:"3px",pMargin:"16px 0 16px 0",liMargin:".25em 0 0 0",olPadding:"0 0 0 2em",ulPadding:"0 0 0 2em"};function _0(e){const{primaryColor:t,textColor2:n,borderColor:o,lineHeight:r,fontSize:i,borderRadiusSmall:a,dividerColor:s,fontWeightStrong:l,textColor1:c,textColor3:d,infoColor:u,warningColor:h,errorColor:g,successColor:f,codeColor:b}=e;return Object.assign(Object.assign({},y7),{aTextColor:t,blockquoteTextColor:n,blockquotePrefixColor:o,blockquoteLineHeight:r,blockquoteFontSize:i,codeBorderRadius:a,liTextColor:n,liLineHeight:r,liFontSize:i,hrColor:s,headerFontWeight:l,headerTextColor:c,pTextColor:n,pTextColor1Depth:c,pTextColor2Depth:n,pTextColor3Depth:d,pLineHeight:r,pFontSize:i,headerBarColor:t,headerBarColorPrimary:t,headerBarColorInfo:u,headerBarColorError:g,headerBarColorWarning:h,headerBarColorSuccess:f,textColor:n,textColor1Depth:c,textColor2Depth:n,textColor3Depth:d,textColorPrimary:t,textColorInfo:u,textColorSuccess:f,textColorWarning:h,textColorError:g,codeTextColor:n,codeColor:b,codeBorder:"1px solid #0000"})}const wd={name:"Typography",common:se,self:_0},C7={name:"Typography",common:ae,self:_0};function P0(e){const{iconColor:t,primaryColor:n,errorColor:o,textColor2:r,successColor:i,opacityDisabled:a,actionColor:s,borderColor:l,hoverColor:c,lineHeight:d,borderRadius:u,fontSize:h}=e;return{fontSize:h,lineHeight:d,borderRadius:u,draggerColor:s,draggerBorder:`1px dashed ${l}`,draggerBorderHover:`1px dashed ${n}`,itemColorHover:c,itemColorHoverError:U(o,{alpha:.06}),itemTextColor:r,itemTextColorError:o,itemTextColorSuccess:i,itemIconColor:t,itemDisabledOpacity:a,itemBorderImageCardError:`1px solid ${o}`,itemBorderImageCard:`1px solid ${l}`}}const k7={name:"Upload",common:se,peers:{Button:Qt,Progress:d0},self:P0},x7={name:"Upload",common:ae,peers:{Button:sn,Progress:u0},self(e){const{errorColor:t}=e,n=P0(e);return n.itemColorHoverError=U(t,{alpha:.09}),n}},S7={name:"Watermark",common:ae,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},T7={name:"Watermark",common:se,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},w7={name:"Row",common:se},_7={name:"Row",common:ae};function P7(e){const{popoverColor:t,dividerColor:n,borderRadius:o}=e;return{color:t,buttonBorderColor:n,borderRadiusSquare:o,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)"}}const A7={name:"FloatButtonGroup",common:se,self:P7},R7={name:"FloatButton",common:ae,self(e){const{popoverColor:t,textColor2:n,buttonColor2Hover:o,buttonColor2Pressed:r,primaryColor:i,primaryColorHover:a,primaryColorPressed:s,baseColor:l,borderRadius:c}=e;return{color:t,textColor:n,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)",colorHover:o,colorPressed:r,colorPrimary:i,colorPrimaryHover:a,colorPrimaryPressed:s,textColorPrimary:l,borderRadiusSquare:c}}};function E7(e){const{popoverColor:t,textColor2:n,buttonColor2Hover:o,buttonColor2Pressed:r,primaryColor:i,primaryColorHover:a,primaryColorPressed:s,borderRadius:l}=e;return{color:t,colorHover:o,colorPressed:r,colorPrimary:i,colorPrimaryHover:a,colorPrimaryPressed:s,textColor:n,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .16)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .24)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .24)",textColorPrimary:"#fff",borderRadiusSquare:l}}const I7={name:"FloatButton",common:se,self:E7},M7={xs:0,s:640,m:1024,l:1280,xl:1536,xxl:1920},A0=24,Sl="__ssr__",D7={layoutShiftDisabled:Boolean,responsive:{type:[String,Boolean],default:"self"},cols:{type:[Number,String],default:A0},itemResponsive:Boolean,collapsed:Boolean,collapsedRows:{type:Number,default:1},itemStyle:[Object,String],xGap:{type:[Number,String],default:0},yGap:{type:[Number,String],default:0}},O7=de({name:"Grid",inheritAttrs:!1,props:D7,setup(e){const{mergedClsPrefixRef:t,mergedBreakpointsRef:n}=dt(e),o=/^\d+$/,r=V(void 0),i=jC((n==null?void 0:n.value)||M7),a=Rt(()=>!!(e.itemResponsive||!o.test(e.cols.toString())||!o.test(e.xGap.toString())||!o.test(e.yGap.toString()))),s=z(()=>{if(a.value)return e.responsive==="self"?r.value:i.value}),l=Rt(()=>{var m;return(m=Number(gr(e.cols.toString(),s.value)))!==null&&m!==void 0?m:A0}),c=Rt(()=>gr(e.xGap.toString(),s.value)),d=Rt(()=>gr(e.yGap.toString(),s.value)),u=m=>{r.value=m.contentRect.width},h=m=>{Qg(u,m)},g=V(!1),f=z(()=>{if(e.responsive==="self")return h}),b=V(!1),p=V();return It(()=>{const{value:m}=p;m&&m.hasAttribute(Sl)&&(m.removeAttribute(Sl),b.value=!0)}),je(Jb,{layoutShiftDisabledRef:Ve(e,"layoutShiftDisabled"),isSsrRef:b,itemStyleRef:Ve(e,"itemStyle"),xGapRef:c,overflowRef:g}),{isSsr:!ar,contentEl:p,mergedClsPrefix:t,style:z(()=>e.layoutShiftDisabled?{width:"100%",display:"grid",gridTemplateColumns:`repeat(${e.cols}, minmax(0, 1fr))`,columnGap:Sr(e.xGap),rowGap:Sr(e.yGap)}:{width:"100%",display:"grid",gridTemplateColumns:`repeat(${l.value}, minmax(0, 1fr))`,columnGap:Sr(c.value),rowGap:Sr(d.value)}),isResponsive:a,responsiveQuery:s,responsiveCols:l,handleResize:f,overflow:g}},render(){if(this.layoutShiftDisabled)return S("div",$n({ref:"contentEl",class:`${this.mergedClsPrefix}-grid`,style:this.style},this.$attrs),this.$slots);const e=()=>{var t,n,o,r,i,a,s;this.overflow=!1;const l=Ri(em(this)),c=[],{collapsed:d,collapsedRows:u,responsiveCols:h,responsiveQuery:g}=this;l.forEach(k=>{var T,v,x,A,y;if(((T=k==null?void 0:k.type)===null||T===void 0?void 0:T.__GRID_ITEM__)!==!0)return;if(Z2(k)){const D=yn(k);D.props?D.props.privateShow=!1:D.props={privateShow:!1},c.push({child:D,rawChildSpan:0});return}k.dirs=((v=k.dirs)===null||v===void 0?void 0:v.filter(({dir:D})=>D!==Mr))||null,((x=k.dirs)===null||x===void 0?void 0:x.length)===0&&(k.dirs=null);const R=yn(k),P=Number((y=gr((A=R.props)===null||A===void 0?void 0:A.span,g))!==null&&y!==void 0?y:Wh);P!==0&&c.push({child:R,rawChildSpan:P})});let f=0;const b=(t=c[c.length-1])===null||t===void 0?void 0:t.child;if(b!=null&&b.props){const k=(n=b.props)===null||n===void 0?void 0:n.suffix;k!==void 0&&k!==!1&&(f=Number((r=gr((o=b.props)===null||o===void 0?void 0:o.span,g))!==null&&r!==void 0?r:Wh),b.props.privateSpan=f,b.props.privateColStart=h+1-f,b.props.privateShow=(i=b.props.privateShow)!==null&&i!==void 0?i:!0)}let p=0,m=!1;for(const{child:k,rawChildSpan:T}of c){if(m&&(this.overflow=!0),!m){const v=Number((s=gr((a=k.props)===null||a===void 0?void 0:a.offset,g))!==null&&s!==void 0?s:0),x=Math.min(T+v,h);if(k.props?(k.props.privateSpan=x,k.props.privateOffset=v):k.props={privateSpan:x,privateOffset:v},d){const A=p%h;x+A>h&&(p+=h-A),x+p+f>u*h?m=!0:p+=x}}m&&(k.props?k.props.privateShow!==!0&&(k.props.privateShow=!1):k.props={privateShow:!1})}return S("div",$n({ref:"contentEl",class:`${this.mergedClsPrefix}-grid`,style:this.style,[Sl]:this.isSsr||void 0},this.$attrs),c.map(({child:k})=>k))};return this.isResponsive&&this.responsive==="self"?S(Va,{onResize:this.handleResize},{default:e}):e()}});function R0(e){const{primaryColor:t,baseColor:n}=e;return{color:t,iconColor:n}}const L7={name:"IconWrapper",common:se,self:R0},H7={name:"IconWrapper",common:ae,self:R0};function $7(){return{toolbarIconColor:"rgba(255, 255, 255, .9)",toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}const B7={name:"Image",common:se,peers:{Tooltip:Zi},self:$7},N7={name:"Image",common:ae,peers:{Tooltip:Ds},self:e=>{const{textColor2:t}=e;return{toolbarIconColor:t,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}},E0={type:String,default:"static"},z7=oe("layout",` color: var(--n-text-color); background-color: var(--n-color); box-sizing: border-box; @@ -1034,7 +1034,7 @@ ${t} right: 0; top: 0; bottom: 0; - `)]),F7={embedded:Boolean,position:E0,nativeScrollbar:{type:Boolean,default:!0},scrollbarProps:Object,onScroll:Function,contentClass:String,contentStyle:{type:[String,Object],default:""},hasSider:Boolean,siderPlacement:{type:String,default:"left"}},W7="n-layout";function I0(e){return de({name:e?"LayoutContent":"Layout",props:Object.assign(Object.assign({},Ee.props),F7),setup(t){const n=V(null),o=V(null),{mergedClsPrefixRef:r,inlineThemeDisabled:i}=dt(t),a=Ee("Layout","-layout",z7,Td,t,r);function s(b,p){if(t.nativeScrollbar){const{value:m}=n;m&&(p===void 0?m.scrollTo(b):m.scrollTo(b,p))}else{const{value:m}=o;m&&m.scrollTo(b,p)}}We(W7,t);let l=0,c=0;const d=b=>{var p;const m=b.target;l=m.scrollLeft,c=m.scrollTop,(p=t.onScroll)===null||p===void 0||p.call(t,b)};Dm(()=>{if(t.nativeScrollbar){const b=n.value;b&&(b.scrollTop=c,b.scrollLeft=l)}});const u={display:"flex",flexWrap:"nowrap",width:"100%",flexDirection:"row"},h={scrollTo:s},g=z(()=>{const{common:{cubicBezierEaseInOut:b},self:p}=a.value;return{"--n-bezier":b,"--n-color":t.embedded?p.colorEmbedded:p.color,"--n-text-color":p.textColor}}),f=i?Mt("layout",z(()=>t.embedded?"e":""),g,t):void 0;return Object.assign({mergedClsPrefix:r,scrollableElRef:n,scrollbarInstRef:o,hasSiderStyle:u,mergedTheme:a,handleNativeElScroll:d,cssVars:i?void 0:g,themeClass:f==null?void 0:f.themeClass,onRender:f==null?void 0:f.onRender},h)},render(){var t;const{mergedClsPrefix:n,hasSider:o}=this;(t=this.onRender)===null||t===void 0||t.call(this);const r=o?this.hasSiderStyle:void 0,i=[this.themeClass,e&&`${n}-layout-content`,`${n}-layout`,`${n}-layout--${this.position}-positioned`];return S("div",{class:i,style:this.cssVars},this.nativeScrollbar?S("div",{ref:"scrollableElRef",class:[`${n}-layout-scroll-container`,this.contentClass],style:[this.contentStyle,r],onScroll:this.handleNativeElScroll},this.$slots):S(Ki,Object.assign({},this.scrollbarProps,{onScroll:this.onScroll,ref:"scrollbarInstRef",theme:this.mergedTheme.peers.Scrollbar,themeOverrides:this.mergedTheme.peerOverrides.Scrollbar,contentClass:this.contentClass,contentStyle:[this.contentStyle,r]}),this.$slots))}})}const j7=I0(!1),G7=I0(!0),V7=oe("layout-footer",` + `)]),F7={embedded:Boolean,position:E0,nativeScrollbar:{type:Boolean,default:!0},scrollbarProps:Object,onScroll:Function,contentClass:String,contentStyle:{type:[String,Object],default:""},hasSider:Boolean,siderPlacement:{type:String,default:"left"}},W7="n-layout";function I0(e){return de({name:e?"LayoutContent":"Layout",props:Object.assign(Object.assign({},Ee.props),F7),setup(t){const n=V(null),o=V(null),{mergedClsPrefixRef:r,inlineThemeDisabled:i}=dt(t),a=Ee("Layout","-layout",z7,Td,t,r);function s(b,p){if(t.nativeScrollbar){const{value:m}=n;m&&(p===void 0?m.scrollTo(b):m.scrollTo(b,p))}else{const{value:m}=o;m&&m.scrollTo(b,p)}}je(W7,t);let l=0,c=0;const d=b=>{var p;const m=b.target;l=m.scrollLeft,c=m.scrollTop,(p=t.onScroll)===null||p===void 0||p.call(t,b)};Dm(()=>{if(t.nativeScrollbar){const b=n.value;b&&(b.scrollTop=c,b.scrollLeft=l)}});const u={display:"flex",flexWrap:"nowrap",width:"100%",flexDirection:"row"},h={scrollTo:s},g=z(()=>{const{common:{cubicBezierEaseInOut:b},self:p}=a.value;return{"--n-bezier":b,"--n-color":t.embedded?p.colorEmbedded:p.color,"--n-text-color":p.textColor}}),f=i?Mt("layout",z(()=>t.embedded?"e":""),g,t):void 0;return Object.assign({mergedClsPrefix:r,scrollableElRef:n,scrollbarInstRef:o,hasSiderStyle:u,mergedTheme:a,handleNativeElScroll:d,cssVars:i?void 0:g,themeClass:f==null?void 0:f.themeClass,onRender:f==null?void 0:f.onRender},h)},render(){var t;const{mergedClsPrefix:n,hasSider:o}=this;(t=this.onRender)===null||t===void 0||t.call(this);const r=o?this.hasSiderStyle:void 0,i=[this.themeClass,e&&`${n}-layout-content`,`${n}-layout`,`${n}-layout--${this.position}-positioned`];return S("div",{class:i,style:this.cssVars},this.nativeScrollbar?S("div",{ref:"scrollableElRef",class:[`${n}-layout-scroll-container`,this.contentClass],style:[this.contentStyle,r],onScroll:this.handleNativeElScroll},this.$slots):S(Ki,Object.assign({},this.scrollbarProps,{onScroll:this.onScroll,ref:"scrollbarInstRef",theme:this.mergedTheme.peers.Scrollbar,themeOverrides:this.mergedTheme.peerOverrides.Scrollbar,contentClass:this.contentClass,contentStyle:[this.contentStyle,r]}),this.$slots))}})}const j7=I0(!1),G7=I0(!0),V7=oe("layout-footer",` transition: box-shadow .3s var(--n-bezier), color .3s var(--n-bezier), @@ -1050,7 +1050,7 @@ ${t} bottom: 0; `),te("bordered",` border-top: solid 1px var(--n-border-color); - `)]),U7=Object.assign(Object.assign({},Ee.props),{inverted:Boolean,position:E0,bordered:Boolean}),K7=de({name:"LayoutFooter",props:U7,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Layout","-layout-footer",V7,Td,e,t),r=z(()=>{const{common:{cubicBezierEaseInOut:a},self:s}=o.value,l={"--n-bezier":a};return e.inverted?(l["--n-color"]=s.footerColorInverted,l["--n-text-color"]=s.textColorInverted,l["--n-border-color"]=s.footerBorderColorInverted):(l["--n-color"]=s.footerColor,l["--n-text-color"]=s.textColor,l["--n-border-color"]=s.footerBorderColor),l}),i=n?Mt("layout-footer",z(()=>e.inverted?"a":"b"),r,e):void 0;return{mergedClsPrefix:t,cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{mergedClsPrefix:t}=this;return(e=this.onRender)===null||e===void 0||e.call(this),S("div",{class:[`${t}-layout-footer`,this.themeClass,this.position&&`${t}-layout-footer--${this.position}-positioned`,this.bordered&&`${t}-layout-footer--bordered`],style:this.cssVars},this.$slots)}}),M0={extraFontSize:"12px",width:"440px"},q7={name:"Transfer",common:ae,peers:{Checkbox:Vr,Scrollbar:an,Input:Cn,Empty:dr,Button:sn},self(e){const{iconColorDisabled:t,iconColor:n,fontWeight:o,fontSizeLarge:r,fontSizeMedium:i,fontSizeSmall:a,heightLarge:s,heightMedium:l,heightSmall:c,borderRadius:d,inputColor:u,tableHeaderColor:h,textColor1:g,textColorDisabled:f,textColor2:b,hoverColor:p}=e;return Object.assign(Object.assign({},M0),{itemHeightSmall:c,itemHeightMedium:l,itemHeightLarge:s,fontSizeSmall:a,fontSizeMedium:i,fontSizeLarge:r,borderRadius:d,borderColor:"#0000",listColor:u,headerColor:h,titleTextColor:g,titleTextColorDisabled:f,extraTextColor:b,filterDividerColor:"#0000",itemTextColor:b,itemTextColorDisabled:f,itemColorPending:p,titleFontWeight:o,iconColor:n,iconColorDisabled:t})}};function X7(e){const{fontWeight:t,iconColorDisabled:n,iconColor:o,fontSizeLarge:r,fontSizeMedium:i,fontSizeSmall:a,heightLarge:s,heightMedium:l,heightSmall:c,borderRadius:d,cardColor:u,tableHeaderColor:h,textColor1:g,textColorDisabled:f,textColor2:b,borderColor:p,hoverColor:m}=e;return Object.assign(Object.assign({},M0),{itemHeightSmall:c,itemHeightMedium:l,itemHeightLarge:s,fontSizeSmall:a,fontSizeMedium:i,fontSizeLarge:r,borderRadius:d,borderColor:p,listColor:u,headerColor:ce(u,h),titleTextColor:g,titleTextColorDisabled:f,extraTextColor:b,filterDividerColor:p,itemTextColor:b,itemTextColorDisabled:f,itemColorPending:m,titleFontWeight:t,iconColor:o,iconColorDisabled:n})}const Z7={name:"Transfer",common:se,peers:{Checkbox:Gr,Scrollbar:Jt,Input:fn,Empty:to,Button:Qt},self:X7},D0="n-loading-bar",Y7="n-loading-bar-api",J7=oe("loading-bar-container",` + `)]),U7=Object.assign(Object.assign({},Ee.props),{inverted:Boolean,position:E0,bordered:Boolean}),K7=de({name:"LayoutFooter",props:U7,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Layout","-layout-footer",V7,Td,e,t),r=z(()=>{const{common:{cubicBezierEaseInOut:a},self:s}=o.value,l={"--n-bezier":a};return e.inverted?(l["--n-color"]=s.footerColorInverted,l["--n-text-color"]=s.textColorInverted,l["--n-border-color"]=s.footerBorderColorInverted):(l["--n-color"]=s.footerColor,l["--n-text-color"]=s.textColor,l["--n-border-color"]=s.footerBorderColor),l}),i=n?Mt("layout-footer",z(()=>e.inverted?"a":"b"),r,e):void 0;return{mergedClsPrefix:t,cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e;const{mergedClsPrefix:t}=this;return(e=this.onRender)===null||e===void 0||e.call(this),S("div",{class:[`${t}-layout-footer`,this.themeClass,this.position&&`${t}-layout-footer--${this.position}-positioned`,this.bordered&&`${t}-layout-footer--bordered`],style:this.cssVars},this.$slots)}}),M0={extraFontSize:"12px",width:"440px"},q7={name:"Transfer",common:ae,peers:{Checkbox:Vr,Scrollbar:an,Input:kn,Empty:dr,Button:sn},self(e){const{iconColorDisabled:t,iconColor:n,fontWeight:o,fontSizeLarge:r,fontSizeMedium:i,fontSizeSmall:a,heightLarge:s,heightMedium:l,heightSmall:c,borderRadius:d,inputColor:u,tableHeaderColor:h,textColor1:g,textColorDisabled:f,textColor2:b,hoverColor:p}=e;return Object.assign(Object.assign({},M0),{itemHeightSmall:c,itemHeightMedium:l,itemHeightLarge:s,fontSizeSmall:a,fontSizeMedium:i,fontSizeLarge:r,borderRadius:d,borderColor:"#0000",listColor:u,headerColor:h,titleTextColor:g,titleTextColorDisabled:f,extraTextColor:b,filterDividerColor:"#0000",itemTextColor:b,itemTextColorDisabled:f,itemColorPending:p,titleFontWeight:o,iconColor:n,iconColorDisabled:t})}};function X7(e){const{fontWeight:t,iconColorDisabled:n,iconColor:o,fontSizeLarge:r,fontSizeMedium:i,fontSizeSmall:a,heightLarge:s,heightMedium:l,heightSmall:c,borderRadius:d,cardColor:u,tableHeaderColor:h,textColor1:g,textColorDisabled:f,textColor2:b,borderColor:p,hoverColor:m}=e;return Object.assign(Object.assign({},M0),{itemHeightSmall:c,itemHeightMedium:l,itemHeightLarge:s,fontSizeSmall:a,fontSizeMedium:i,fontSizeLarge:r,borderRadius:d,borderColor:p,listColor:u,headerColor:ce(u,h),titleTextColor:g,titleTextColorDisabled:f,extraTextColor:b,filterDividerColor:p,itemTextColor:b,itemTextColorDisabled:f,itemColorPending:m,titleFontWeight:t,iconColor:o,iconColorDisabled:n})}const Z7={name:"Transfer",common:se,peers:{Checkbox:Gr,Scrollbar:Jt,Input:fn,Empty:to,Button:Qt},self:X7},D0="n-loading-bar",Y7="n-loading-bar-api",J7=oe("loading-bar-container",` z-index: 5999; position: fixed; top: 0; @@ -1075,7 +1075,7 @@ ${t} transition: max-width .2s linear, background .2s linear; - `)])]);var ka=function(e,t,n,o){function r(i){return i instanceof n?i:new n(function(a){a(i)})}return new(n||(n=Promise))(function(i,a){function s(d){try{c(o.next(d))}catch(u){a(u)}}function l(d){try{c(o.throw(d))}catch(u){a(u)}}function c(d){d.done?i(d.value):r(d.value).then(s,l)}c((o=o.apply(e,t||[])).next())})};function xa(e,t){return`${t}-loading-bar ${t}-loading-bar--${e}`}const Q7=de({name:"LoadingBar",props:{containerClass:String,containerStyle:[String,Object]},setup(){const{inlineThemeDisabled:e}=dt(),{props:t,mergedClsPrefixRef:n}=Me(D0),o=V(null),r=V(!1),i=V(!1),a=V(!1),s=V(!1);let l=!1;const c=V(!1),d=z(()=>{const{loadingBarStyle:x}=t;return x?x[c.value?"error":"loading"]:""});function u(){return ka(this,void 0,void 0,function*(){r.value=!1,a.value=!1,l=!1,c.value=!1,s.value=!0,yield jt(),s.value=!1})}function h(){return ka(this,arguments,void 0,function*(x=0,A=80,y="starting"){if(i.value=!0,yield u(),l)return;a.value=!0,yield jt();const R=o.value;R&&(R.style.maxWidth=`${x}%`,R.style.transition="none",R.offsetWidth,R.className=xa(y,n.value),R.style.transition="",R.style.maxWidth=`${A}%`)})}function g(){return ka(this,void 0,void 0,function*(){if(l||c.value)return;i.value&&(yield jt()),l=!0;const x=o.value;x&&(x.className=xa("finishing",n.value),x.style.maxWidth="100%",x.offsetWidth,a.value=!1)})}function f(){if(!(l||c.value))if(!a.value)h(100,100,"error").then(()=>{c.value=!0;const x=o.value;x&&(x.className=xa("error",n.value),x.offsetWidth,a.value=!1)});else{c.value=!0;const x=o.value;if(!x)return;x.className=xa("error",n.value),x.style.maxWidth="100%",x.offsetWidth,a.value=!1}}function b(){r.value=!0}function p(){r.value=!1}function m(){return ka(this,void 0,void 0,function*(){yield u()})}const k=Ee("LoadingBar","-loading-bar",J7,i0,t,n),T=z(()=>{const{self:{height:x,colorError:A,colorLoading:y}}=k.value;return{"--n-height":x,"--n-color-loading":y,"--n-color-error":A}}),v=e?Mt("loading-bar",void 0,T,t):void 0;return{mergedClsPrefix:n,loadingBarRef:o,started:i,loading:a,entering:r,transitionDisabled:s,start:h,error:f,finish:g,handleEnter:b,handleAfterEnter:p,handleAfterLeave:m,mergedLoadingBarStyle:d,cssVars:e?void 0:T,themeClass:v==null?void 0:v.themeClass,onRender:v==null?void 0:v.onRender}},render(){if(!this.started)return null;const{mergedClsPrefix:e}=this;return S(Bn,{name:"fade-in-transition",appear:!0,onEnter:this.handleEnter,onAfterEnter:this.handleAfterEnter,onAfterLeave:this.handleAfterLeave,css:!this.transitionDisabled},{default:()=>{var t;return(t=this.onRender)===null||t===void 0||t.call(this),po(S("div",{class:[`${e}-loading-bar-container`,this.themeClass,this.containerClass],style:this.containerStyle},S("div",{ref:"loadingBarRef",class:[`${e}-loading-bar`],style:[this.cssVars,this.mergedLoadingBarStyle]})),[[Mr,this.loading||!this.loading&&this.entering]])}})}}),e_=Object.assign(Object.assign({},Ee.props),{to:{type:[String,Object,Boolean],default:void 0},containerClass:String,containerStyle:[String,Object],loadingBarStyle:{type:Object}}),t_=de({name:"LoadingBarProvider",props:e_,setup(e){const t=ji(),n=V(null),o={start(){var i;t.value?(i=n.value)===null||i===void 0||i.start():jt(()=>{var a;(a=n.value)===null||a===void 0||a.start()})},error(){var i;t.value?(i=n.value)===null||i===void 0||i.error():jt(()=>{var a;(a=n.value)===null||a===void 0||a.error()})},finish(){var i;t.value?(i=n.value)===null||i===void 0||i.finish():jt(()=>{var a;(a=n.value)===null||a===void 0||a.finish()})}},{mergedClsPrefixRef:r}=dt(e);return We(Y7,o),We(D0,{props:e,mergedClsPrefixRef:r}),Object.assign(o,{loadingBarRef:n})},render(){var e,t;return S(He,null,S(hs,{disabled:this.to===!1,to:this.to||"body"},S(Q7,{ref:"loadingBarRef",containerStyle:this.containerStyle,containerClass:this.containerClass})),(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),O0={icon:Function,type:{type:String,default:"info"},content:[String,Number,Function],showIcon:{type:Boolean,default:!0},closable:Boolean,keepAliveOnHover:Boolean,onClose:Function,onMouseenter:Function,onMouseleave:Function},L0="n-message-api",H0="n-message-provider",n_=F([oe("message-wrapper",` + `)])]);var ka=function(e,t,n,o){function r(i){return i instanceof n?i:new n(function(a){a(i)})}return new(n||(n=Promise))(function(i,a){function s(d){try{c(o.next(d))}catch(u){a(u)}}function l(d){try{c(o.throw(d))}catch(u){a(u)}}function c(d){d.done?i(d.value):r(d.value).then(s,l)}c((o=o.apply(e,t||[])).next())})};function xa(e,t){return`${t}-loading-bar ${t}-loading-bar--${e}`}const Q7=de({name:"LoadingBar",props:{containerClass:String,containerStyle:[String,Object]},setup(){const{inlineThemeDisabled:e}=dt(),{props:t,mergedClsPrefixRef:n}=Me(D0),o=V(null),r=V(!1),i=V(!1),a=V(!1),s=V(!1);let l=!1;const c=V(!1),d=z(()=>{const{loadingBarStyle:x}=t;return x?x[c.value?"error":"loading"]:""});function u(){return ka(this,void 0,void 0,function*(){r.value=!1,a.value=!1,l=!1,c.value=!1,s.value=!0,yield jt(),s.value=!1})}function h(){return ka(this,arguments,void 0,function*(x=0,A=80,y="starting"){if(i.value=!0,yield u(),l)return;a.value=!0,yield jt();const R=o.value;R&&(R.style.maxWidth=`${x}%`,R.style.transition="none",R.offsetWidth,R.className=xa(y,n.value),R.style.transition="",R.style.maxWidth=`${A}%`)})}function g(){return ka(this,void 0,void 0,function*(){if(l||c.value)return;i.value&&(yield jt()),l=!0;const x=o.value;x&&(x.className=xa("finishing",n.value),x.style.maxWidth="100%",x.offsetWidth,a.value=!1)})}function f(){if(!(l||c.value))if(!a.value)h(100,100,"error").then(()=>{c.value=!0;const x=o.value;x&&(x.className=xa("error",n.value),x.offsetWidth,a.value=!1)});else{c.value=!0;const x=o.value;if(!x)return;x.className=xa("error",n.value),x.style.maxWidth="100%",x.offsetWidth,a.value=!1}}function b(){r.value=!0}function p(){r.value=!1}function m(){return ka(this,void 0,void 0,function*(){yield u()})}const k=Ee("LoadingBar","-loading-bar",J7,i0,t,n),T=z(()=>{const{self:{height:x,colorError:A,colorLoading:y}}=k.value;return{"--n-height":x,"--n-color-loading":y,"--n-color-error":A}}),v=e?Mt("loading-bar",void 0,T,t):void 0;return{mergedClsPrefix:n,loadingBarRef:o,started:i,loading:a,entering:r,transitionDisabled:s,start:h,error:f,finish:g,handleEnter:b,handleAfterEnter:p,handleAfterLeave:m,mergedLoadingBarStyle:d,cssVars:e?void 0:T,themeClass:v==null?void 0:v.themeClass,onRender:v==null?void 0:v.onRender}},render(){if(!this.started)return null;const{mergedClsPrefix:e}=this;return S(Bn,{name:"fade-in-transition",appear:!0,onEnter:this.handleEnter,onAfterEnter:this.handleAfterEnter,onAfterLeave:this.handleAfterLeave,css:!this.transitionDisabled},{default:()=>{var t;return(t=this.onRender)===null||t===void 0||t.call(this),po(S("div",{class:[`${e}-loading-bar-container`,this.themeClass,this.containerClass],style:this.containerStyle},S("div",{ref:"loadingBarRef",class:[`${e}-loading-bar`],style:[this.cssVars,this.mergedLoadingBarStyle]})),[[Mr,this.loading||!this.loading&&this.entering]])}})}}),e_=Object.assign(Object.assign({},Ee.props),{to:{type:[String,Object,Boolean],default:void 0},containerClass:String,containerStyle:[String,Object],loadingBarStyle:{type:Object}}),t_=de({name:"LoadingBarProvider",props:e_,setup(e){const t=ji(),n=V(null),o={start(){var i;t.value?(i=n.value)===null||i===void 0||i.start():jt(()=>{var a;(a=n.value)===null||a===void 0||a.start()})},error(){var i;t.value?(i=n.value)===null||i===void 0||i.error():jt(()=>{var a;(a=n.value)===null||a===void 0||a.error()})},finish(){var i;t.value?(i=n.value)===null||i===void 0||i.finish():jt(()=>{var a;(a=n.value)===null||a===void 0||a.finish()})}},{mergedClsPrefixRef:r}=dt(e);return je(Y7,o),je(D0,{props:e,mergedClsPrefixRef:r}),Object.assign(o,{loadingBarRef:n})},render(){var e,t;return S(He,null,S(hs,{disabled:this.to===!1,to:this.to||"body"},S(Q7,{ref:"loadingBarRef",containerStyle:this.containerStyle,containerClass:this.containerClass})),(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),O0={icon:Function,type:{type:String,default:"info"},content:[String,Number,Function],showIcon:{type:Boolean,default:!0},closable:Boolean,keepAliveOnHover:Boolean,onClose:Function,onMouseenter:Function,onMouseleave:Function},L0="n-message-api",H0="n-message-provider",n_=F([oe("message-wrapper",` margin: var(--n-margin); z-index: 0; transform-origin: top center; @@ -1168,7 +1168,7 @@ ${t} right: 12px; justify-content: flex-end; align-items: flex-end; - `)])]),o_={info:()=>S(Ya,null),success:()=>S(ld,null),warning:()=>S(cd,null),error:()=>S(sd,null),default:()=>null},r_=de({name:"Message",props:Object.assign(Object.assign({},O0),{render:Function}),setup(e){const{inlineThemeDisabled:t,mergedRtlRef:n}=dt(e),{props:o,mergedClsPrefixRef:r}=Me(H0),i=Ao("Message",n,r),a=Ee("Message","-message",n_,o0,o,r),s=z(()=>{const{type:c}=e,{common:{cubicBezierEaseInOut:d},self:{padding:u,margin:h,maxWidth:g,iconMargin:f,closeMargin:b,closeSize:p,iconSize:m,fontSize:k,lineHeight:T,borderRadius:v,iconColorInfo:x,iconColorSuccess:A,iconColorWarning:y,iconColorError:R,iconColorLoading:P,closeIconSize:D,closeBorderRadius:W,[ge("textColor",c)]:M,[ge("boxShadow",c)]:j,[ge("color",c)]:ee,[ge("closeColorHover",c)]:B,[ge("closeColorPressed",c)]:X,[ge("closeIconColor",c)]:$,[ge("closeIconColorPressed",c)]:ie,[ge("closeIconColorHover",c)]:ve}}=a.value;return{"--n-bezier":d,"--n-margin":h,"--n-padding":u,"--n-max-width":g,"--n-font-size":k,"--n-icon-margin":f,"--n-icon-size":m,"--n-close-icon-size":D,"--n-close-border-radius":W,"--n-close-size":p,"--n-close-margin":b,"--n-text-color":M,"--n-color":ee,"--n-box-shadow":j,"--n-icon-color-info":x,"--n-icon-color-success":A,"--n-icon-color-warning":y,"--n-icon-color-error":R,"--n-icon-color-loading":P,"--n-close-color-hover":B,"--n-close-color-pressed":X,"--n-close-icon-color":$,"--n-close-icon-color-pressed":ie,"--n-close-icon-color-hover":ve,"--n-line-height":T,"--n-border-radius":v}}),l=t?Mt("message",z(()=>e.type[0]),s,{}):void 0;return{mergedClsPrefix:r,rtlEnabled:i,messageProviderProps:o,handleClose(){var c;(c=e.onClose)===null||c===void 0||c.call(e)},cssVars:t?void 0:s,themeClass:l==null?void 0:l.themeClass,onRender:l==null?void 0:l.onRender,placement:o.placement}},render(){const{render:e,type:t,closable:n,content:o,mergedClsPrefix:r,cssVars:i,themeClass:a,onRender:s,icon:l,handleClose:c,showIcon:d}=this;s==null||s();let u;return S("div",{class:[`${r}-message-wrapper`,a],onMouseenter:this.onMouseenter,onMouseleave:this.onMouseleave,style:[{alignItems:this.placement.startsWith("top")?"flex-start":"flex-end"},i]},e?e(this.$props):S("div",{class:[`${r}-message ${r}-message--${t}-type`,this.rtlEnabled&&`${r}-message--rtl`]},(u=i_(l,t,r))&&d?S("div",{class:`${r}-message__icon ${r}-message__icon--${t}-type`},S(Rs,null,{default:()=>u})):null,S("div",{class:`${r}-message__content`},Ot(o)),n?S(Es,{clsPrefix:r,class:`${r}-message__close`,onClick:c,absolute:!0}):null))}});function i_(e,t,n){if(typeof e=="function")return e();{const o=t==="loading"?S(dd,{clsPrefix:n,strokeWidth:24,scale:.85}):o_[t]();return o?S(Co,{clsPrefix:n,key:t},{default:()=>o}):null}}const a_=de({name:"MessageEnvironment",props:Object.assign(Object.assign({},O0),{duration:{type:Number,default:3e3},onAfterLeave:Function,onLeave:Function,internalKey:{type:String,required:!0},onInternalAfterLeave:Function,onHide:Function,onAfterHide:Function}),setup(e){let t=null;const n=V(!0);It(()=>{o()});function o(){const{duration:d}=e;d&&(t=window.setTimeout(a,d))}function r(d){d.currentTarget===d.target&&t!==null&&(window.clearTimeout(t),t=null)}function i(d){d.currentTarget===d.target&&o()}function a(){const{onHide:d}=e;n.value=!1,t&&(window.clearTimeout(t),t=null),d&&d()}function s(){const{onClose:d}=e;d&&d(),a()}function l(){const{onAfterLeave:d,onInternalAfterLeave:u,onAfterHide:h,internalKey:g}=e;d&&d(),u&&u(g),h&&h()}function c(){a()}return{show:n,hide:a,handleClose:s,handleAfterLeave:l,handleMouseleave:i,handleMouseenter:r,deactivate:c}},render(){return S(xp,{appear:!0,onAfterLeave:this.handleAfterLeave,onLeave:this.onLeave},{default:()=>[this.show?S(r_,{content:this.content,type:this.type,icon:this.icon,showIcon:this.showIcon,closable:this.closable,onClose:this.handleClose,onMouseenter:this.keepAliveOnHover?this.handleMouseenter:void 0,onMouseleave:this.keepAliveOnHover?this.handleMouseleave:void 0}):null]})}}),s_=Object.assign(Object.assign({},Ee.props),{to:[String,Object],duration:{type:Number,default:3e3},keepAliveOnHover:Boolean,max:Number,placement:{type:String,default:"top"},closable:Boolean,containerClass:String,containerStyle:[String,Object]}),l_=de({name:"MessageProvider",props:s_,setup(e){const{mergedClsPrefixRef:t}=dt(e),n=V([]),o=V({}),r={create(l,c){return i(l,Object.assign({type:"default"},c))},info(l,c){return i(l,Object.assign(Object.assign({},c),{type:"info"}))},success(l,c){return i(l,Object.assign(Object.assign({},c),{type:"success"}))},warning(l,c){return i(l,Object.assign(Object.assign({},c),{type:"warning"}))},error(l,c){return i(l,Object.assign(Object.assign({},c),{type:"error"}))},loading(l,c){return i(l,Object.assign(Object.assign({},c),{type:"loading"}))},destroyAll:s};We(H0,{props:e,mergedClsPrefixRef:t}),We(L0,r);function i(l,c){const d=vs(),u=wo(Object.assign(Object.assign({},c),{content:l,key:d,destroy:()=>{var g;(g=o.value[d])===null||g===void 0||g.hide()}})),{max:h}=e;return h&&n.value.length>=h&&n.value.shift(),n.value.push(u),u}function a(l){n.value.splice(n.value.findIndex(c=>c.key===l),1),delete o.value[l]}function s(){Object.values(o.value).forEach(l=>{l.hide()})}return Object.assign({mergedClsPrefix:t,messageRefs:o,messageList:n,handleAfterLeave:a},r)},render(){var e,t,n;return S(He,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.messageList.length?S(hs,{to:(n=this.to)!==null&&n!==void 0?n:"body"},S("div",{class:[`${this.mergedClsPrefix}-message-container`,`${this.mergedClsPrefix}-message-container--${this.placement}`,this.containerClass],key:"message-container",style:this.containerStyle},this.messageList.map(o=>S(a_,Object.assign({ref:r=>{r&&(this.messageRefs[o.key]=r)},internalKey:o.key,onInternalAfterLeave:this.handleAfterLeave},Gc(o,["destroy"],void 0),{duration:o.duration===void 0?this.duration:o.duration,keepAliveOnHover:o.keepAliveOnHover===void 0?this.keepAliveOnHover:o.keepAliveOnHover,closable:o.closable===void 0?this.closable:o.closable}))))):null)}});function c_(){const e=Me(L0,null);return e===null&&tm("use-message","No outer founded. See prerequisite in https://www.naiveui.com/en-US/os-theme/components/message for more details. If you want to use `useMessage` outside setup, please check https://www.naiveui.com/zh-CN/os-theme/components/message#Q-&-A."),e}const $s="n-notification-provider",d_=de({name:"NotificationContainer",props:{scrollable:{type:Boolean,required:!0},placement:{type:String,required:!0}},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:t,wipTransitionCountRef:n}=Me($s),o=V(null);return bo(()=>{var r,i;n.value>0?(r=o==null?void 0:o.value)===null||r===void 0||r.classList.add("transitioning"):(i=o==null?void 0:o.value)===null||i===void 0||i.classList.remove("transitioning")}),{selfRef:o,mergedTheme:e,mergedClsPrefix:t,transitioning:n}},render(){const{$slots:e,scrollable:t,mergedClsPrefix:n,mergedTheme:o,placement:r}=this;return S("div",{ref:"selfRef",class:[`${n}-notification-container`,t&&`${n}-notification-container--scrollable`,`${n}-notification-container--${r}`]},t?S(Ki,{theme:o.peers.Scrollbar,themeOverrides:o.peerOverrides.Scrollbar,contentStyle:{overflow:"hidden"}},e):e)}}),u_={info:()=>S(Ya,null),success:()=>S(ld,null),warning:()=>S(cd,null),error:()=>S(sd,null),default:()=>null},_d={closable:{type:Boolean,default:!0},type:{type:String,default:"default"},avatar:Function,title:[String,Function],description:[String,Function],content:[String,Function],meta:[String,Function],action:[String,Function],onClose:{type:Function,required:!0},keepAliveOnHover:Boolean,onMouseenter:Function,onMouseleave:Function},h_=ys(_d),f_=de({name:"Notification",props:_d,setup(e){const{mergedClsPrefixRef:t,mergedThemeRef:n,props:o}=Me($s),{inlineThemeDisabled:r,mergedRtlRef:i}=dt(),a=Ao("Notification",i,t),s=z(()=>{const{type:c}=e,{self:{color:d,textColor:u,closeIconColor:h,closeIconColorHover:g,closeIconColorPressed:f,headerTextColor:b,descriptionTextColor:p,actionTextColor:m,borderRadius:k,headerFontWeight:T,boxShadow:v,lineHeight:x,fontSize:A,closeMargin:y,closeSize:R,width:P,padding:D,closeIconSize:W,closeBorderRadius:M,closeColorHover:j,closeColorPressed:ee,titleFontSize:B,metaFontSize:X,descriptionFontSize:$,[ge("iconColor",c)]:ie},common:{cubicBezierEaseOut:ve,cubicBezierEaseIn:ye,cubicBezierEaseInOut:Ae}}=n.value,{left:De,right:ut,top:Je,bottom:pt}=Wi(D);return{"--n-color":d,"--n-font-size":A,"--n-text-color":u,"--n-description-text-color":p,"--n-action-text-color":m,"--n-title-text-color":b,"--n-title-font-weight":T,"--n-bezier":Ae,"--n-bezier-ease-out":ve,"--n-bezier-ease-in":ye,"--n-border-radius":k,"--n-box-shadow":v,"--n-close-border-radius":M,"--n-close-color-hover":j,"--n-close-color-pressed":ee,"--n-close-icon-color":h,"--n-close-icon-color-hover":g,"--n-close-icon-color-pressed":f,"--n-line-height":x,"--n-icon-color":ie,"--n-close-margin":y,"--n-close-size":R,"--n-close-icon-size":W,"--n-width":P,"--n-padding-left":De,"--n-padding-right":ut,"--n-padding-top":Je,"--n-padding-bottom":pt,"--n-title-font-size":B,"--n-meta-font-size":X,"--n-description-font-size":$}}),l=r?Mt("notification",z(()=>e.type[0]),s,o):void 0;return{mergedClsPrefix:t,showAvatar:z(()=>e.avatar||e.type!=="default"),handleCloseClick(){e.onClose()},rtlEnabled:a,cssVars:r?void 0:s,themeClass:l==null?void 0:l.themeClass,onRender:l==null?void 0:l.onRender}},render(){var e;const{mergedClsPrefix:t}=this;return(e=this.onRender)===null||e===void 0||e.call(this),S("div",{class:[`${t}-notification-wrapper`,this.themeClass],onMouseenter:this.onMouseenter,onMouseleave:this.onMouseleave,style:this.cssVars},S("div",{class:[`${t}-notification`,this.rtlEnabled&&`${t}-notification--rtl`,this.themeClass,{[`${t}-notification--closable`]:this.closable,[`${t}-notification--show-avatar`]:this.showAvatar}],style:this.cssVars},this.showAvatar?S("div",{class:`${t}-notification__avatar`},this.avatar?Ot(this.avatar):this.type!=="default"?S(Co,{clsPrefix:t},{default:()=>u_[this.type]()}):null):null,this.closable?S(Es,{clsPrefix:t,class:`${t}-notification__close`,onClick:this.handleCloseClick}):null,S("div",{ref:"bodyRef",class:`${t}-notification-main`},this.title?S("div",{class:`${t}-notification-main__header`},Ot(this.title)):null,this.description?S("div",{class:`${t}-notification-main__description`},Ot(this.description)):null,this.content?S("pre",{class:`${t}-notification-main__content`},Ot(this.content)):null,this.meta||this.action?S("div",{class:`${t}-notification-main-footer`},this.meta?S("div",{class:`${t}-notification-main-footer__meta`},Ot(this.meta)):null,this.action?S("div",{class:`${t}-notification-main-footer__action`},Ot(this.action)):null):null)))}}),g_=Object.assign(Object.assign({},_d),{duration:Number,onClose:Function,onLeave:Function,onAfterEnter:Function,onAfterLeave:Function,onHide:Function,onAfterShow:Function,onAfterHide:Function}),m_=de({name:"NotificationEnvironment",props:Object.assign(Object.assign({},g_),{internalKey:{type:String,required:!0},onInternalAfterLeave:{type:Function,required:!0}}),setup(e){const{wipTransitionCountRef:t}=Me($s),n=V(!0);let o=null;function r(){n.value=!1,o&&window.clearTimeout(o)}function i(f){t.value++,jt(()=>{f.style.height=`${f.offsetHeight}px`,f.style.maxHeight="0",f.style.transition="none",f.offsetHeight,f.style.transition="",f.style.maxHeight=f.style.height})}function a(f){t.value--,f.style.height="",f.style.maxHeight="";const{onAfterEnter:b,onAfterShow:p}=e;b&&b(),p&&p()}function s(f){t.value++,f.style.maxHeight=`${f.offsetHeight}px`,f.style.height=`${f.offsetHeight}px`,f.offsetHeight}function l(f){const{onHide:b}=e;b&&b(),f.style.maxHeight="0",f.offsetHeight}function c(){t.value--;const{onAfterLeave:f,onInternalAfterLeave:b,onAfterHide:p,internalKey:m}=e;f&&f(),b(m),p&&p()}function d(){const{duration:f}=e;f&&(o=window.setTimeout(r,f))}function u(f){f.currentTarget===f.target&&o!==null&&(window.clearTimeout(o),o=null)}function h(f){f.currentTarget===f.target&&d()}function g(){const{onClose:f}=e;f?Promise.resolve(f()).then(b=>{b!==!1&&r()}):r()}return It(()=>{e.duration&&(o=window.setTimeout(r,e.duration))}),{show:n,hide:r,handleClose:g,handleAfterLeave:c,handleLeave:l,handleBeforeLeave:s,handleAfterEnter:a,handleBeforeEnter:i,handleMouseenter:u,handleMouseleave:h}},render(){return S(Bn,{name:"notification-transition",appear:!0,onBeforeEnter:this.handleBeforeEnter,onAfterEnter:this.handleAfterEnter,onBeforeLeave:this.handleBeforeLeave,onLeave:this.handleLeave,onAfterLeave:this.handleAfterLeave},{default:()=>this.show?S(f_,Object.assign({},or(this.$props,h_),{onClose:this.handleClose,onMouseenter:this.duration&&this.keepAliveOnHover?this.handleMouseenter:void 0,onMouseleave:this.duration&&this.keepAliveOnHover?this.handleMouseleave:void 0})):null})}}),p_=F([oe("notification-container",` + `)])]),o_={info:()=>S(Ya,null),success:()=>S(ld,null),warning:()=>S(cd,null),error:()=>S(sd,null),default:()=>null},r_=de({name:"Message",props:Object.assign(Object.assign({},O0),{render:Function}),setup(e){const{inlineThemeDisabled:t,mergedRtlRef:n}=dt(e),{props:o,mergedClsPrefixRef:r}=Me(H0),i=Ao("Message",n,r),a=Ee("Message","-message",n_,o0,o,r),s=z(()=>{const{type:c}=e,{common:{cubicBezierEaseInOut:d},self:{padding:u,margin:h,maxWidth:g,iconMargin:f,closeMargin:b,closeSize:p,iconSize:m,fontSize:k,lineHeight:T,borderRadius:v,iconColorInfo:x,iconColorSuccess:A,iconColorWarning:y,iconColorError:R,iconColorLoading:P,closeIconSize:D,closeBorderRadius:W,[ge("textColor",c)]:M,[ge("boxShadow",c)]:j,[ge("color",c)]:ee,[ge("closeColorHover",c)]:B,[ge("closeColorPressed",c)]:X,[ge("closeIconColor",c)]:$,[ge("closeIconColorPressed",c)]:ie,[ge("closeIconColorHover",c)]:ve}}=a.value;return{"--n-bezier":d,"--n-margin":h,"--n-padding":u,"--n-max-width":g,"--n-font-size":k,"--n-icon-margin":f,"--n-icon-size":m,"--n-close-icon-size":D,"--n-close-border-radius":W,"--n-close-size":p,"--n-close-margin":b,"--n-text-color":M,"--n-color":ee,"--n-box-shadow":j,"--n-icon-color-info":x,"--n-icon-color-success":A,"--n-icon-color-warning":y,"--n-icon-color-error":R,"--n-icon-color-loading":P,"--n-close-color-hover":B,"--n-close-color-pressed":X,"--n-close-icon-color":$,"--n-close-icon-color-pressed":ie,"--n-close-icon-color-hover":ve,"--n-line-height":T,"--n-border-radius":v}}),l=t?Mt("message",z(()=>e.type[0]),s,{}):void 0;return{mergedClsPrefix:r,rtlEnabled:i,messageProviderProps:o,handleClose(){var c;(c=e.onClose)===null||c===void 0||c.call(e)},cssVars:t?void 0:s,themeClass:l==null?void 0:l.themeClass,onRender:l==null?void 0:l.onRender,placement:o.placement}},render(){const{render:e,type:t,closable:n,content:o,mergedClsPrefix:r,cssVars:i,themeClass:a,onRender:s,icon:l,handleClose:c,showIcon:d}=this;s==null||s();let u;return S("div",{class:[`${r}-message-wrapper`,a],onMouseenter:this.onMouseenter,onMouseleave:this.onMouseleave,style:[{alignItems:this.placement.startsWith("top")?"flex-start":"flex-end"},i]},e?e(this.$props):S("div",{class:[`${r}-message ${r}-message--${t}-type`,this.rtlEnabled&&`${r}-message--rtl`]},(u=i_(l,t,r))&&d?S("div",{class:`${r}-message__icon ${r}-message__icon--${t}-type`},S(Rs,null,{default:()=>u})):null,S("div",{class:`${r}-message__content`},Ot(o)),n?S(Es,{clsPrefix:r,class:`${r}-message__close`,onClick:c,absolute:!0}):null))}});function i_(e,t,n){if(typeof e=="function")return e();{const o=t==="loading"?S(dd,{clsPrefix:n,strokeWidth:24,scale:.85}):o_[t]();return o?S(Co,{clsPrefix:n,key:t},{default:()=>o}):null}}const a_=de({name:"MessageEnvironment",props:Object.assign(Object.assign({},O0),{duration:{type:Number,default:3e3},onAfterLeave:Function,onLeave:Function,internalKey:{type:String,required:!0},onInternalAfterLeave:Function,onHide:Function,onAfterHide:Function}),setup(e){let t=null;const n=V(!0);It(()=>{o()});function o(){const{duration:d}=e;d&&(t=window.setTimeout(a,d))}function r(d){d.currentTarget===d.target&&t!==null&&(window.clearTimeout(t),t=null)}function i(d){d.currentTarget===d.target&&o()}function a(){const{onHide:d}=e;n.value=!1,t&&(window.clearTimeout(t),t=null),d&&d()}function s(){const{onClose:d}=e;d&&d(),a()}function l(){const{onAfterLeave:d,onInternalAfterLeave:u,onAfterHide:h,internalKey:g}=e;d&&d(),u&&u(g),h&&h()}function c(){a()}return{show:n,hide:a,handleClose:s,handleAfterLeave:l,handleMouseleave:i,handleMouseenter:r,deactivate:c}},render(){return S(xp,{appear:!0,onAfterLeave:this.handleAfterLeave,onLeave:this.onLeave},{default:()=>[this.show?S(r_,{content:this.content,type:this.type,icon:this.icon,showIcon:this.showIcon,closable:this.closable,onClose:this.handleClose,onMouseenter:this.keepAliveOnHover?this.handleMouseenter:void 0,onMouseleave:this.keepAliveOnHover?this.handleMouseleave:void 0}):null]})}}),s_=Object.assign(Object.assign({},Ee.props),{to:[String,Object],duration:{type:Number,default:3e3},keepAliveOnHover:Boolean,max:Number,placement:{type:String,default:"top"},closable:Boolean,containerClass:String,containerStyle:[String,Object]}),l_=de({name:"MessageProvider",props:s_,setup(e){const{mergedClsPrefixRef:t}=dt(e),n=V([]),o=V({}),r={create(l,c){return i(l,Object.assign({type:"default"},c))},info(l,c){return i(l,Object.assign(Object.assign({},c),{type:"info"}))},success(l,c){return i(l,Object.assign(Object.assign({},c),{type:"success"}))},warning(l,c){return i(l,Object.assign(Object.assign({},c),{type:"warning"}))},error(l,c){return i(l,Object.assign(Object.assign({},c),{type:"error"}))},loading(l,c){return i(l,Object.assign(Object.assign({},c),{type:"loading"}))},destroyAll:s};je(H0,{props:e,mergedClsPrefixRef:t}),je(L0,r);function i(l,c){const d=vs(),u=wo(Object.assign(Object.assign({},c),{content:l,key:d,destroy:()=>{var g;(g=o.value[d])===null||g===void 0||g.hide()}})),{max:h}=e;return h&&n.value.length>=h&&n.value.shift(),n.value.push(u),u}function a(l){n.value.splice(n.value.findIndex(c=>c.key===l),1),delete o.value[l]}function s(){Object.values(o.value).forEach(l=>{l.hide()})}return Object.assign({mergedClsPrefix:t,messageRefs:o,messageList:n,handleAfterLeave:a},r)},render(){var e,t,n;return S(He,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.messageList.length?S(hs,{to:(n=this.to)!==null&&n!==void 0?n:"body"},S("div",{class:[`${this.mergedClsPrefix}-message-container`,`${this.mergedClsPrefix}-message-container--${this.placement}`,this.containerClass],key:"message-container",style:this.containerStyle},this.messageList.map(o=>S(a_,Object.assign({ref:r=>{r&&(this.messageRefs[o.key]=r)},internalKey:o.key,onInternalAfterLeave:this.handleAfterLeave},Gc(o,["destroy"],void 0),{duration:o.duration===void 0?this.duration:o.duration,keepAliveOnHover:o.keepAliveOnHover===void 0?this.keepAliveOnHover:o.keepAliveOnHover,closable:o.closable===void 0?this.closable:o.closable}))))):null)}});function c_(){const e=Me(L0,null);return e===null&&tm("use-message","No outer founded. See prerequisite in https://www.naiveui.com/en-US/os-theme/components/message for more details. If you want to use `useMessage` outside setup, please check https://www.naiveui.com/zh-CN/os-theme/components/message#Q-&-A."),e}const $s="n-notification-provider",d_=de({name:"NotificationContainer",props:{scrollable:{type:Boolean,required:!0},placement:{type:String,required:!0}},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:t,wipTransitionCountRef:n}=Me($s),o=V(null);return bo(()=>{var r,i;n.value>0?(r=o==null?void 0:o.value)===null||r===void 0||r.classList.add("transitioning"):(i=o==null?void 0:o.value)===null||i===void 0||i.classList.remove("transitioning")}),{selfRef:o,mergedTheme:e,mergedClsPrefix:t,transitioning:n}},render(){const{$slots:e,scrollable:t,mergedClsPrefix:n,mergedTheme:o,placement:r}=this;return S("div",{ref:"selfRef",class:[`${n}-notification-container`,t&&`${n}-notification-container--scrollable`,`${n}-notification-container--${r}`]},t?S(Ki,{theme:o.peers.Scrollbar,themeOverrides:o.peerOverrides.Scrollbar,contentStyle:{overflow:"hidden"}},e):e)}}),u_={info:()=>S(Ya,null),success:()=>S(ld,null),warning:()=>S(cd,null),error:()=>S(sd,null),default:()=>null},_d={closable:{type:Boolean,default:!0},type:{type:String,default:"default"},avatar:Function,title:[String,Function],description:[String,Function],content:[String,Function],meta:[String,Function],action:[String,Function],onClose:{type:Function,required:!0},keepAliveOnHover:Boolean,onMouseenter:Function,onMouseleave:Function},h_=ys(_d),f_=de({name:"Notification",props:_d,setup(e){const{mergedClsPrefixRef:t,mergedThemeRef:n,props:o}=Me($s),{inlineThemeDisabled:r,mergedRtlRef:i}=dt(),a=Ao("Notification",i,t),s=z(()=>{const{type:c}=e,{self:{color:d,textColor:u,closeIconColor:h,closeIconColorHover:g,closeIconColorPressed:f,headerTextColor:b,descriptionTextColor:p,actionTextColor:m,borderRadius:k,headerFontWeight:T,boxShadow:v,lineHeight:x,fontSize:A,closeMargin:y,closeSize:R,width:P,padding:D,closeIconSize:W,closeBorderRadius:M,closeColorHover:j,closeColorPressed:ee,titleFontSize:B,metaFontSize:X,descriptionFontSize:$,[ge("iconColor",c)]:ie},common:{cubicBezierEaseOut:ve,cubicBezierEaseIn:ye,cubicBezierEaseInOut:Ae}}=n.value,{left:De,right:ut,top:Je,bottom:pt}=Wi(D);return{"--n-color":d,"--n-font-size":A,"--n-text-color":u,"--n-description-text-color":p,"--n-action-text-color":m,"--n-title-text-color":b,"--n-title-font-weight":T,"--n-bezier":Ae,"--n-bezier-ease-out":ve,"--n-bezier-ease-in":ye,"--n-border-radius":k,"--n-box-shadow":v,"--n-close-border-radius":M,"--n-close-color-hover":j,"--n-close-color-pressed":ee,"--n-close-icon-color":h,"--n-close-icon-color-hover":g,"--n-close-icon-color-pressed":f,"--n-line-height":x,"--n-icon-color":ie,"--n-close-margin":y,"--n-close-size":R,"--n-close-icon-size":W,"--n-width":P,"--n-padding-left":De,"--n-padding-right":ut,"--n-padding-top":Je,"--n-padding-bottom":pt,"--n-title-font-size":B,"--n-meta-font-size":X,"--n-description-font-size":$}}),l=r?Mt("notification",z(()=>e.type[0]),s,o):void 0;return{mergedClsPrefix:t,showAvatar:z(()=>e.avatar||e.type!=="default"),handleCloseClick(){e.onClose()},rtlEnabled:a,cssVars:r?void 0:s,themeClass:l==null?void 0:l.themeClass,onRender:l==null?void 0:l.onRender}},render(){var e;const{mergedClsPrefix:t}=this;return(e=this.onRender)===null||e===void 0||e.call(this),S("div",{class:[`${t}-notification-wrapper`,this.themeClass],onMouseenter:this.onMouseenter,onMouseleave:this.onMouseleave,style:this.cssVars},S("div",{class:[`${t}-notification`,this.rtlEnabled&&`${t}-notification--rtl`,this.themeClass,{[`${t}-notification--closable`]:this.closable,[`${t}-notification--show-avatar`]:this.showAvatar}],style:this.cssVars},this.showAvatar?S("div",{class:`${t}-notification__avatar`},this.avatar?Ot(this.avatar):this.type!=="default"?S(Co,{clsPrefix:t},{default:()=>u_[this.type]()}):null):null,this.closable?S(Es,{clsPrefix:t,class:`${t}-notification__close`,onClick:this.handleCloseClick}):null,S("div",{ref:"bodyRef",class:`${t}-notification-main`},this.title?S("div",{class:`${t}-notification-main__header`},Ot(this.title)):null,this.description?S("div",{class:`${t}-notification-main__description`},Ot(this.description)):null,this.content?S("pre",{class:`${t}-notification-main__content`},Ot(this.content)):null,this.meta||this.action?S("div",{class:`${t}-notification-main-footer`},this.meta?S("div",{class:`${t}-notification-main-footer__meta`},Ot(this.meta)):null,this.action?S("div",{class:`${t}-notification-main-footer__action`},Ot(this.action)):null):null)))}}),g_=Object.assign(Object.assign({},_d),{duration:Number,onClose:Function,onLeave:Function,onAfterEnter:Function,onAfterLeave:Function,onHide:Function,onAfterShow:Function,onAfterHide:Function}),m_=de({name:"NotificationEnvironment",props:Object.assign(Object.assign({},g_),{internalKey:{type:String,required:!0},onInternalAfterLeave:{type:Function,required:!0}}),setup(e){const{wipTransitionCountRef:t}=Me($s),n=V(!0);let o=null;function r(){n.value=!1,o&&window.clearTimeout(o)}function i(f){t.value++,jt(()=>{f.style.height=`${f.offsetHeight}px`,f.style.maxHeight="0",f.style.transition="none",f.offsetHeight,f.style.transition="",f.style.maxHeight=f.style.height})}function a(f){t.value--,f.style.height="",f.style.maxHeight="";const{onAfterEnter:b,onAfterShow:p}=e;b&&b(),p&&p()}function s(f){t.value++,f.style.maxHeight=`${f.offsetHeight}px`,f.style.height=`${f.offsetHeight}px`,f.offsetHeight}function l(f){const{onHide:b}=e;b&&b(),f.style.maxHeight="0",f.offsetHeight}function c(){t.value--;const{onAfterLeave:f,onInternalAfterLeave:b,onAfterHide:p,internalKey:m}=e;f&&f(),b(m),p&&p()}function d(){const{duration:f}=e;f&&(o=window.setTimeout(r,f))}function u(f){f.currentTarget===f.target&&o!==null&&(window.clearTimeout(o),o=null)}function h(f){f.currentTarget===f.target&&d()}function g(){const{onClose:f}=e;f?Promise.resolve(f()).then(b=>{b!==!1&&r()}):r()}return It(()=>{e.duration&&(o=window.setTimeout(r,e.duration))}),{show:n,hide:r,handleClose:g,handleAfterLeave:c,handleLeave:l,handleBeforeLeave:s,handleAfterEnter:a,handleBeforeEnter:i,handleMouseenter:u,handleMouseleave:h}},render(){return S(Bn,{name:"notification-transition",appear:!0,onBeforeEnter:this.handleBeforeEnter,onAfterEnter:this.handleAfterEnter,onBeforeLeave:this.handleBeforeLeave,onLeave:this.handleLeave,onAfterLeave:this.handleAfterLeave},{default:()=>this.show?S(f_,Object.assign({},or(this.$props,h_),{onClose:this.handleClose,onMouseenter:this.duration&&this.keepAliveOnHover?this.handleMouseenter:void 0,onMouseleave:this.duration&&this.keepAliveOnHover?this.handleMouseleave:void 0})):null})}}),p_=F([oe("notification-container",` z-index: 4000; position: fixed; overflow: visible; @@ -1357,7 +1357,7 @@ ${t} transform: translate(${n}, 0); `),F("&.notification-transition-leave-from, &.notification-transition-enter-to",` transform: translate(0, 0); - `)])}const b_="n-notification-api",v_=Object.assign(Object.assign({},Ee.props),{containerClass:String,containerStyle:[String,Object],to:[String,Object],scrollable:{type:Boolean,default:!0},max:Number,placement:{type:String,default:"top-right"},keepAliveOnHover:Boolean}),y_=de({name:"NotificationProvider",props:v_,setup(e){const{mergedClsPrefixRef:t}=dt(e),n=V([]),o={},r=new Set;function i(g){const f=vs(),b=()=>{r.add(f),o[f]&&o[f].hide()},p=wo(Object.assign(Object.assign({},g),{key:f,destroy:b,hide:b,deactivate:b})),{max:m}=e;if(m&&n.value.length-r.size>=m){let k=!1,T=0;for(const v of n.value){if(!r.has(v.key)){o[v.key]&&(v.destroy(),k=!0);break}T++}k||n.value.splice(T,1)}return n.value.push(p),p}const a=["info","success","warning","error"].map(g=>f=>i(Object.assign(Object.assign({},f),{type:g})));function s(g){r.delete(g),n.value.splice(n.value.findIndex(f=>f.key===g),1)}const l=Ee("Notification","-notification",p_,t0,e,t),c={create:i,info:a[0],success:a[1],warning:a[2],error:a[3],open:u,destroyAll:h},d=V(0);We(b_,c),We($s,{props:e,mergedClsPrefixRef:t,mergedThemeRef:l,wipTransitionCountRef:d});function u(g){return i(g)}function h(){Object.values(n.value).forEach(g=>{g.hide()})}return Object.assign({mergedClsPrefix:t,notificationList:n,notificationRefs:o,handleAfterLeave:s},c)},render(){var e,t,n;const{placement:o}=this;return S(He,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.notificationList.length?S(hs,{to:(n=this.to)!==null&&n!==void 0?n:"body"},S(d_,{class:this.containerClass,style:this.containerStyle,scrollable:this.scrollable&&o!=="top"&&o!=="bottom",placement:o},{default:()=>this.notificationList.map(r=>S(m_,Object.assign({ref:i=>{const a=r.key;i===null?delete this.notificationRefs[a]:this.notificationRefs[a]=i}},Gc(r,["destroy","hide","deactivate"]),{internalKey:r.key,onInternalAfterLeave:this.handleAfterLeave,keepAliveOnHover:r.keepAliveOnHover===void 0?this.keepAliveOnHover:r.keepAliveOnHover})))})):null)}}),C_={name:"QrCode",common:ae,self:e=>({borderRadius:e.borderRadius})};function k_(e){return{borderRadius:e.borderRadius}}const x_={name:"QrCode",common:se,self:k_},S_={name:"Skeleton",common:ae,self(e){const{heightSmall:t,heightMedium:n,heightLarge:o,borderRadius:r}=e;return{color:"rgba(255, 255, 255, 0.12)",colorEnd:"rgba(255, 255, 255, 0.18)",borderRadius:r,heightSmall:t,heightMedium:n,heightLarge:o}}};function T_(e){const{heightSmall:t,heightMedium:n,heightLarge:o,borderRadius:r}=e;return{color:"#eee",colorEnd:"#ddd",borderRadius:r,heightSmall:t,heightMedium:n,heightLarge:o}}const w_={name:"Skeleton",common:se,self:T_},__={name:"Split",common:ae};function P_(e){const{primaryColorHover:t,borderColor:n}=e;return{resizableTriggerColorHover:t,resizableTriggerColor:n}}const A_={name:"Split",common:se,self:P_},R_=oe("h",` + `)])}const b_="n-notification-api",v_=Object.assign(Object.assign({},Ee.props),{containerClass:String,containerStyle:[String,Object],to:[String,Object],scrollable:{type:Boolean,default:!0},max:Number,placement:{type:String,default:"top-right"},keepAliveOnHover:Boolean}),y_=de({name:"NotificationProvider",props:v_,setup(e){const{mergedClsPrefixRef:t}=dt(e),n=V([]),o={},r=new Set;function i(g){const f=vs(),b=()=>{r.add(f),o[f]&&o[f].hide()},p=wo(Object.assign(Object.assign({},g),{key:f,destroy:b,hide:b,deactivate:b})),{max:m}=e;if(m&&n.value.length-r.size>=m){let k=!1,T=0;for(const v of n.value){if(!r.has(v.key)){o[v.key]&&(v.destroy(),k=!0);break}T++}k||n.value.splice(T,1)}return n.value.push(p),p}const a=["info","success","warning","error"].map(g=>f=>i(Object.assign(Object.assign({},f),{type:g})));function s(g){r.delete(g),n.value.splice(n.value.findIndex(f=>f.key===g),1)}const l=Ee("Notification","-notification",p_,t0,e,t),c={create:i,info:a[0],success:a[1],warning:a[2],error:a[3],open:u,destroyAll:h},d=V(0);je(b_,c),je($s,{props:e,mergedClsPrefixRef:t,mergedThemeRef:l,wipTransitionCountRef:d});function u(g){return i(g)}function h(){Object.values(n.value).forEach(g=>{g.hide()})}return Object.assign({mergedClsPrefix:t,notificationList:n,notificationRefs:o,handleAfterLeave:s},c)},render(){var e,t,n;const{placement:o}=this;return S(He,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.notificationList.length?S(hs,{to:(n=this.to)!==null&&n!==void 0?n:"body"},S(d_,{class:this.containerClass,style:this.containerStyle,scrollable:this.scrollable&&o!=="top"&&o!=="bottom",placement:o},{default:()=>this.notificationList.map(r=>S(m_,Object.assign({ref:i=>{const a=r.key;i===null?delete this.notificationRefs[a]:this.notificationRefs[a]=i}},Gc(r,["destroy","hide","deactivate"]),{internalKey:r.key,onInternalAfterLeave:this.handleAfterLeave,keepAliveOnHover:r.keepAliveOnHover===void 0?this.keepAliveOnHover:r.keepAliveOnHover})))})):null)}}),C_={name:"QrCode",common:ae,self:e=>({borderRadius:e.borderRadius})};function k_(e){return{borderRadius:e.borderRadius}}const x_={name:"QrCode",common:se,self:k_},S_={name:"Skeleton",common:ae,self(e){const{heightSmall:t,heightMedium:n,heightLarge:o,borderRadius:r}=e;return{color:"rgba(255, 255, 255, 0.12)",colorEnd:"rgba(255, 255, 255, 0.18)",borderRadius:r,heightSmall:t,heightMedium:n,heightLarge:o}}};function T_(e){const{heightSmall:t,heightMedium:n,heightLarge:o,borderRadius:r}=e;return{color:"#eee",colorEnd:"#ddd",borderRadius:r,heightSmall:t,heightMedium:n,heightLarge:o}}const w_={name:"Skeleton",common:se,self:T_},__={name:"Split",common:ae};function P_(e){const{primaryColorHover:t,borderColor:n}=e;return{resizableTriggerColorHover:t,resizableTriggerColor:n}}const A_={name:"Split",common:se,self:P_},R_=oe("h",` font-size: var(--n-font-size); font-weight: var(--n-font-weight); margin: var(--n-margin); @@ -1392,30 +1392,30 @@ ${t} color: var(--n-code-text-color); background-color: var(--n-code-color); border: var(--n-code-border); - `)]),O_=Object.assign(Object.assign({},Ee.props),{code:Boolean,type:{type:String,default:"default"},delete:Boolean,strong:Boolean,italic:Boolean,underline:Boolean,depth:[String,Number],tag:String,as:{type:String,validator:()=>!0,default:void 0}}),rc=de({name:"Text",props:O_,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Typography","-text",D_,wd,e,t),r=z(()=>{const{depth:a,type:s}=e,l=s==="default"?a===void 0?"textColor":`textColor${a}Depth`:ge("textColor",s),{common:{fontWeightStrong:c,fontFamilyMono:d,cubicBezierEaseInOut:u},self:{codeTextColor:h,codeBorderRadius:g,codeColor:f,codeBorder:b,[l]:p}}=o.value;return{"--n-bezier":u,"--n-text-color":p,"--n-font-weight-strong":c,"--n-font-famliy-mono":d,"--n-code-border-radius":g,"--n-code-text-color":h,"--n-code-color":f,"--n-code-border":b}}),i=n?Mt("text",z(()=>`${e.type[0]}${e.depth||""}`),r,e):void 0;return{mergedClsPrefix:t,compitableTag:fm(e,["as","tag"]),cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e,t,n;const{mergedClsPrefix:o}=this;(e=this.onRender)===null||e===void 0||e.call(this);const r=[`${o}-text`,this.themeClass,{[`${o}-text--code`]:this.code,[`${o}-text--delete`]:this.delete,[`${o}-text--strong`]:this.strong,[`${o}-text--italic`]:this.italic,[`${o}-text--underline`]:this.underline}],i=(n=(t=this.$slots).default)===null||n===void 0?void 0:n.call(t);return this.code?S("code",{class:r,style:this.cssVars},this.delete?S("del",null,i):i):this.delete?S("del",{class:r,style:this.cssVars},i):S(this.compitableTag||"span",{class:r,style:this.cssVars},i)}}),$0=()=>({}),L_={name:"Equation",common:se,self:$0},H_={name:"Equation",common:ae,self:$0},$_={name:"FloatButtonGroup",common:ae,self(e){const{popoverColor:t,dividerColor:n,borderRadius:o}=e;return{color:t,buttonBorderColor:n,borderRadiusSquare:o,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)"}}},B_={name:"dark",common:ae,Alert:BT,Anchor:UT,AutoComplete:nw,Avatar:Kp,AvatarGroup:rw,BackTop:iw,Badge:lw,Breadcrumb:fw,Button:sn,ButtonGroup:l9,Calendar:Cw,Card:tb,Carousel:Rw,Cascader:Mw,Checkbox:Vr,Code:ib,Collapse:Lw,CollapseTransition:$w,ColorPicker:xw,DataTable:Kw,DatePicker:m8,Descriptions:v8,Dialog:Hb,Divider:O8,Drawer:N8,Dropdown:vd,DynamicInput:z8,DynamicTags:U8,Element:q8,Empty:dr,Ellipsis:vb,Equation:H_,Flex:Z8,Form:t9,GradientText:d9,Icon:Qw,IconWrapper:H7,Image:N7,Input:Cn,InputNumber:f9,LegacyTransfer:q7,Layout:p9,List:y9,LoadingBar:C9,Log:x9,Menu:E9,Mention:w9,Message:s9,Modal:T8,Notification:i9,PageHeader:D9,Pagination:pb,Popconfirm:H9,Popover:ur,Popselect:cb,Progress:u0,QrCode:C_,Radio:Cb,Rate:$9,Result:W9,Row:_7,Scrollbar:an,Select:fb,Skeleton:S_,Slider:j9,Space:Kb,Spin:K9,Statistic:X9,Steps:J9,Switch:Q9,Table:r7,Tabs:s7,Tag:Hp,Thing:c7,TimePicker:Mb,Timeline:d7,Tooltip:Ds,Transfer:f7,Tree:w0,TreeSelect:p7,Typography:C7,Upload:x7,Watermark:S7,Split:__,FloatButton:R7,FloatButtonGroup:$_},N_={name:"light",common:se,Alert:zT,Anchor:VT,AutoComplete:tw,Avatar:Up,AvatarGroup:ow,BackTop:sw,Badge:dw,Breadcrumb:hw,Button:Qt,ButtonGroup:c9,Calendar:yw,Card:md,Carousel:Aw,Cascader:Iw,Checkbox:Gr,Code:ab,Collapse:Ow,CollapseTransition:Hw,ColorPicker:kw,DataTable:Uw,DatePicker:g8,Descriptions:b8,Dialog:kd,Divider:jb,Drawer:B8,Dropdown:Os,DynamicInput:W8,DynamicTags:K8,Element:Xb,Empty:to,Equation:L_,Ellipsis:bd,Flex:J8,Form:e9,GradientText:h9,Icon:_b,IconWrapper:L7,Image:B7,Input:fn,InputNumber:m9,Layout:Td,LegacyTransfer:Z7,List:v9,LoadingBar:i0,Log:T9,Menu:R9,Mention:P9,Message:o0,Modal:Fb,Notification:t0,PageHeader:M9,Pagination:mb,Popconfirm:L9,Popover:Ro,Popselect:db,Progress:d0,QrCode:x_,Radio:kb,Rate:N9,Row:w7,Result:F9,Scrollbar:Jt,Skeleton:w_,Select:hb,Slider:V9,Space:Sd,Spin:U9,Statistic:q9,Steps:Y9,Switch:t7,Table:o7,Tabs:a7,Tag:$p,Thing:l7,TimePicker:Ib,Timeline:h7,Tooltip:Zi,Transfer:m7,Tree:T0,TreeSelect:v7,Typography:wd,Upload:k7,Watermark:T7,Split:A_,FloatButton:I7,FloatButtonGroup:A7},ic=de({__name:"Title",props:{item:{}},setup(e){const t=e,n=z(()=>t.item.title.trim()),o=new RegExp("^tetris","ig"),r=n.value.match(o);return(i,a)=>{const s=Ms,l=Ma;return i.item.title?Ne(r)?(Fe(),wt(l,{key:1},{default:Se(()=>[me(s,null,{trigger:Se(()=>a[0]||(a[0]=[Gt("i",{class:"zChan thinking not-italic text-xl mr-1"},null,-1)])),default:Se(()=>[_t(" "+Tn(Ne(r)[0]),1)]),_:1}),_t(" "+Tn(Ne(n).replace(Ne(o),"")),1)]),_:1})):(Fe(),bn(He,{key:2},[_t(Tn(i.item.title),1)],64)):(Fe(),bn(He,{key:0},[_t(" ?")],64))}}}),z_={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},F_=Gt("path",{d:"M16 2a14 14 0 1 0 14 14A14.016 14.016 0 0 0 16 2zM4.02 16.394l1.338.446L7 19.303v1.283a1 1 0 0 0 .293.707L10 24v2.377a11.994 11.994 0 0 1-5.98-9.983zM16 28a11.968 11.968 0 0 1-2.572-.285L14 26l1.805-4.512a1 1 0 0 0-.097-.926l-1.411-2.117a1 1 0 0 0-.832-.445h-4.93l-1.248-1.873L9.414 14H11v2h2v-2.734l3.868-6.77l-1.736-.992L14.277 7h-2.742L10.45 5.371A11.861 11.861 0 0 1 20 4.7V8a1 1 0 0 0 1 1h1.465a1 1 0 0 0 .832-.445l.877-1.316A12.033 12.033 0 0 1 26.894 11H22.82a1 1 0 0 0-.98.804l-.723 4.47a1 1 0 0 0 .54 1.055L25 19l.685 4.056A11.98 11.98 0 0 1 16 28z",fill:"currentColor"},null,-1),W_=[F_],j_=de({name:"EarthFilled",render:function(t,n){return Fe(),bn("svg",z_,W_)}}),G_={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},V_=Gt("path",{opacity:".3",d:"M8 7h11v14H8z",fill:"currentColor"},null,-1),U_=Gt("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z",fill:"currentColor"},null,-1),K_=[V_,U_],q_=de({name:"ContentCopyTwotone",render:function(t,n){return Fe(),bn("svg",G_,K_)}}),X_={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},Z_=Gt("path",{opacity:".3",d:"M5.08 8h2.95c.32-1.25.78-2.45 1.38-3.56c-1.84.63-3.37 1.9-4.33 3.56zm2.42 4c0-.68.06-1.34.14-2H4.26c-.16.64-.26 1.31-.26 2s.1 1.36.26 2h3.38c-.08-.66-.14-1.32-.14-2zm-2.42 4a7.987 7.987 0 0 0 4.33 3.56A15.65 15.65 0 0 1 8.03 16H5.08zM12 4.04c-.83 1.2-1.48 2.53-1.91 3.96h3.82c-.43-1.43-1.08-2.76-1.91-3.96zM18.92 8a8.03 8.03 0 0 0-4.33-3.56c.6 1.11 1.06 2.31 1.38 3.56h2.95zM12 19.96c.83-1.2 1.48-2.53 1.91-3.96h-3.82c.43 1.43 1.08 2.76 1.91 3.96zm2.59-.4A8.03 8.03 0 0 0 18.92 16h-2.95a15.65 15.65 0 0 1-1.38 3.56zM19.74 10h-3.38c.08.66.14 1.32.14 2s-.06 1.34-.14 2h3.38c.16-.64.26-1.31.26-2s-.1-1.36-.26-2zM9.66 10c-.09.65-.16 1.32-.16 2s.07 1.34.16 2h4.68c.09-.66.16-1.32.16-2s-.07-1.35-.16-2H9.66z",fill:"currentColor"},null,-1),Y_=Gt("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 0 0-1.38-3.56A8.03 8.03 0 0 1 18.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 0 1 5.08 16zm2.95-8H5.08a7.987 7.987 0 0 1 4.33-3.56A15.65 15.65 0 0 0 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z",fill:"currentColor"},null,-1),J_=[Z_,Y_],Q_=de({name:"LanguageTwotone",render:function(t,n){return Fe(),bn("svg",X_,J_)}}),eP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},tP=Gt("circle",{cx:"18",cy:"5",opacity:".3",r:"1",fill:"currentColor"},null,-1),nP=Gt("circle",{cx:"6",cy:"12",opacity:".3",r:"1",fill:"currentColor"},null,-1),oP=Gt("circle",{cx:"18",cy:"19.02",opacity:".3",r:"1",fill:"currentColor"},null,-1),rP=Gt("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92c0-1.61-1.31-2.92-2.92-2.92zM18 4c.55 0 1 .45 1 1s-.45 1-1 1s-1-.45-1-1s.45-1 1-1zM6 13c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1zm12 7.02c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1z",fill:"currentColor"},null,-1),iP=[tP,nP,oP,rP],aP=de({name:"ShareTwotone",render:function(t,n){return Fe(),bn("svg",eP,iP)}});var sP=!1;function B0(e){return Tc()?(Wf(e),!0):!1}function Bs(e){return typeof e=="function"?e():Ne(e)}const Pd=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const lP=Object.prototype.toString,cP=e=>lP.call(e)==="[object Object]",dP=()=>{};function uP(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const o=t;t=void 0,o&&await o},n}function hP(e){return rn()}function jh(e,t=!0,n){hP()?It(e,n):t?e():jt(e)}function fP(e,t,n={}){const{immediate:o=!0}=n,r=V(!1);let i=null;function a(){i&&(clearTimeout(i),i=null)}function s(){r.value=!1,a()}function l(...c){a(),r.value=!0,i=setTimeout(()=>{r.value=!1,i=null,e(...c)},Bs(t))}return o&&(r.value=!0,Pd&&l()),B0(s),{isPending:hn(r),start:l,stop:s}}function gP(e){var t;const n=Bs(e);return(t=n==null?void 0:n.$el)!=null?t:n}const mP=Pd?window:void 0,N0=Pd?window.navigator:void 0;function z0(...e){let t,n,o,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,o,r]=e,t=mP):[t,n,o,r]=e,!t)return dP;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const i=[],a=()=>{i.forEach(d=>d()),i.length=0},s=(d,u,h,g)=>(d.addEventListener(u,h,g),()=>d.removeEventListener(u,h,g)),l=ot(()=>[gP(t),Bs(r)],([d,u])=>{if(a(),!d)return;const h=cP(u)?{...u}:u;i.push(...n.flatMap(g=>o.map(f=>s(d,g,f,h))))},{immediate:!0,flush:"post"}),c=()=>{l(),a()};return B0(c),c}function pP(){const e=V(!1),t=rn();return t&&It(()=>{e.value=!0},t),e}function F0(e){const t=pP();return z(()=>(t.value,!!e()))}function Gh(e,t={}){const{controls:n=!1,navigator:o=N0}=t,r=F0(()=>o&&"permissions"in o);let i;const a=typeof e=="string"?{name:e}:e,s=V(),l=()=>{i&&(s.value=i.state)},c=uP(async()=>{if(r.value){if(!i)try{i=await o.permissions.query(a),z0(i,"change",l),l()}catch{s.value="prompt"}return i}});return c(),n?{state:s,isSupported:r,query:c}:s}function bP(e={}){const{navigator:t=N0,read:n=!1,source:o,copiedDuring:r=1500,legacy:i=!1}=e,a=F0(()=>t&&"clipboard"in t),s=Gh("clipboard-read"),l=Gh("clipboard-write"),c=z(()=>a.value||i),d=V(""),u=V(!1),h=fP(()=>u.value=!1,r);function g(){a.value&&m(s.value)?t.clipboard.readText().then(k=>{d.value=k}):d.value=p()}c.value&&n&&z0(["copy","cut"],g);async function f(k=Bs(o)){c.value&&k!=null&&(a.value&&m(l.value)?await t.clipboard.writeText(k):b(k),d.value=k,u.value=!0,h.start())}function b(k){const T=document.createElement("textarea");T.value=k??"",T.style.position="absolute",T.style.opacity="0",document.body.appendChild(T),T.select(),document.execCommand("copy"),T.remove()}function p(){var k,T,v;return(v=(T=(k=document==null?void 0:document.getSelection)==null?void 0:k.call(document))==null?void 0:T.toString())!=null?v:""}function m(k){return k==="granted"||k==="prompt"}return{isSupported:c,text:d,copied:u,copy:f}}/*! + `)]),O_=Object.assign(Object.assign({},Ee.props),{code:Boolean,type:{type:String,default:"default"},delete:Boolean,strong:Boolean,italic:Boolean,underline:Boolean,depth:[String,Number],tag:String,as:{type:String,validator:()=>!0,default:void 0}}),rc=de({name:"Text",props:O_,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=dt(e),o=Ee("Typography","-text",D_,wd,e,t),r=z(()=>{const{depth:a,type:s}=e,l=s==="default"?a===void 0?"textColor":`textColor${a}Depth`:ge("textColor",s),{common:{fontWeightStrong:c,fontFamilyMono:d,cubicBezierEaseInOut:u},self:{codeTextColor:h,codeBorderRadius:g,codeColor:f,codeBorder:b,[l]:p}}=o.value;return{"--n-bezier":u,"--n-text-color":p,"--n-font-weight-strong":c,"--n-font-famliy-mono":d,"--n-code-border-radius":g,"--n-code-text-color":h,"--n-code-color":f,"--n-code-border":b}}),i=n?Mt("text",z(()=>`${e.type[0]}${e.depth||""}`),r,e):void 0;return{mergedClsPrefix:t,compitableTag:fm(e,["as","tag"]),cssVars:n?void 0:r,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var e,t,n;const{mergedClsPrefix:o}=this;(e=this.onRender)===null||e===void 0||e.call(this);const r=[`${o}-text`,this.themeClass,{[`${o}-text--code`]:this.code,[`${o}-text--delete`]:this.delete,[`${o}-text--strong`]:this.strong,[`${o}-text--italic`]:this.italic,[`${o}-text--underline`]:this.underline}],i=(n=(t=this.$slots).default)===null||n===void 0?void 0:n.call(t);return this.code?S("code",{class:r,style:this.cssVars},this.delete?S("del",null,i):i):this.delete?S("del",{class:r,style:this.cssVars},i):S(this.compitableTag||"span",{class:r,style:this.cssVars},i)}}),$0=()=>({}),L_={name:"Equation",common:se,self:$0},H_={name:"Equation",common:ae,self:$0},$_={name:"FloatButtonGroup",common:ae,self(e){const{popoverColor:t,dividerColor:n,borderRadius:o}=e;return{color:t,buttonBorderColor:n,borderRadiusSquare:o,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)"}}},B_={name:"dark",common:ae,Alert:BT,Anchor:UT,AutoComplete:nw,Avatar:Kp,AvatarGroup:rw,BackTop:iw,Badge:lw,Breadcrumb:fw,Button:sn,ButtonGroup:l9,Calendar:Cw,Card:tb,Carousel:Rw,Cascader:Mw,Checkbox:Vr,Code:ib,Collapse:Lw,CollapseTransition:$w,ColorPicker:xw,DataTable:Kw,DatePicker:m8,Descriptions:v8,Dialog:Hb,Divider:O8,Drawer:N8,Dropdown:vd,DynamicInput:z8,DynamicTags:U8,Element:q8,Empty:dr,Ellipsis:vb,Equation:H_,Flex:Z8,Form:t9,GradientText:d9,Icon:Qw,IconWrapper:H7,Image:N7,Input:kn,InputNumber:f9,LegacyTransfer:q7,Layout:p9,List:y9,LoadingBar:C9,Log:x9,Menu:E9,Mention:w9,Message:s9,Modal:T8,Notification:i9,PageHeader:D9,Pagination:pb,Popconfirm:H9,Popover:ur,Popselect:cb,Progress:u0,QrCode:C_,Radio:Cb,Rate:$9,Result:W9,Row:_7,Scrollbar:an,Select:fb,Skeleton:S_,Slider:j9,Space:Kb,Spin:K9,Statistic:X9,Steps:J9,Switch:Q9,Table:r7,Tabs:s7,Tag:Hp,Thing:c7,TimePicker:Mb,Timeline:d7,Tooltip:Ds,Transfer:f7,Tree:w0,TreeSelect:p7,Typography:C7,Upload:x7,Watermark:S7,Split:__,FloatButton:R7,FloatButtonGroup:$_},N_={name:"light",common:se,Alert:zT,Anchor:VT,AutoComplete:tw,Avatar:Up,AvatarGroup:ow,BackTop:sw,Badge:dw,Breadcrumb:hw,Button:Qt,ButtonGroup:c9,Calendar:yw,Card:md,Carousel:Aw,Cascader:Iw,Checkbox:Gr,Code:ab,Collapse:Ow,CollapseTransition:Hw,ColorPicker:kw,DataTable:Uw,DatePicker:g8,Descriptions:b8,Dialog:kd,Divider:jb,Drawer:B8,Dropdown:Os,DynamicInput:W8,DynamicTags:K8,Element:Xb,Empty:to,Equation:L_,Ellipsis:bd,Flex:J8,Form:e9,GradientText:h9,Icon:_b,IconWrapper:L7,Image:B7,Input:fn,InputNumber:m9,Layout:Td,LegacyTransfer:Z7,List:v9,LoadingBar:i0,Log:T9,Menu:R9,Mention:P9,Message:o0,Modal:Fb,Notification:t0,PageHeader:M9,Pagination:mb,Popconfirm:L9,Popover:Ro,Popselect:db,Progress:d0,QrCode:x_,Radio:kb,Rate:N9,Row:w7,Result:F9,Scrollbar:Jt,Skeleton:w_,Select:hb,Slider:V9,Space:Sd,Spin:U9,Statistic:q9,Steps:Y9,Switch:t7,Table:o7,Tabs:a7,Tag:$p,Thing:l7,TimePicker:Ib,Timeline:h7,Tooltip:Zi,Transfer:m7,Tree:T0,TreeSelect:v7,Typography:wd,Upload:k7,Watermark:T7,Split:A_,FloatButton:I7,FloatButtonGroup:A7},ic=de({__name:"Title",props:{item:{}},setup(e){const t=e,n=z(()=>t.item.title.trim()),o=new RegExp("^tetris","ig"),r=n.value.match(o);return(i,a)=>{const s=Ms,l=Ma;return i.item.title?Ne(r)?(We(),wt(l,{key:1},{default:Se(()=>[me(s,null,{trigger:Se(()=>a[0]||(a[0]=[Gt("i",{class:"zChan thinking not-italic text-xl mr-1"},null,-1)])),default:Se(()=>[_t(" "+wn(Ne(r)[0]),1)]),_:1}),_t(" "+wn(Ne(n).replace(Ne(o),"")),1)]),_:1})):(We(),vn(He,{key:2},[_t(wn(i.item.title),1)],64)):(We(),vn(He,{key:0},[_t(" ?")],64))}}}),z_={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},F_=Gt("path",{d:"M16 2a14 14 0 1 0 14 14A14.016 14.016 0 0 0 16 2zM4.02 16.394l1.338.446L7 19.303v1.283a1 1 0 0 0 .293.707L10 24v2.377a11.994 11.994 0 0 1-5.98-9.983zM16 28a11.968 11.968 0 0 1-2.572-.285L14 26l1.805-4.512a1 1 0 0 0-.097-.926l-1.411-2.117a1 1 0 0 0-.832-.445h-4.93l-1.248-1.873L9.414 14H11v2h2v-2.734l3.868-6.77l-1.736-.992L14.277 7h-2.742L10.45 5.371A11.861 11.861 0 0 1 20 4.7V8a1 1 0 0 0 1 1h1.465a1 1 0 0 0 .832-.445l.877-1.316A12.033 12.033 0 0 1 26.894 11H22.82a1 1 0 0 0-.98.804l-.723 4.47a1 1 0 0 0 .54 1.055L25 19l.685 4.056A11.98 11.98 0 0 1 16 28z",fill:"currentColor"},null,-1),W_=[F_],j_=de({name:"EarthFilled",render:function(t,n){return We(),vn("svg",z_,W_)}}),G_={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},V_=Gt("path",{opacity:".3",d:"M8 7h11v14H8z",fill:"currentColor"},null,-1),U_=Gt("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z",fill:"currentColor"},null,-1),K_=[V_,U_],q_=de({name:"ContentCopyTwotone",render:function(t,n){return We(),vn("svg",G_,K_)}}),X_={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},Z_=Gt("path",{opacity:".3",d:"M5.08 8h2.95c.32-1.25.78-2.45 1.38-3.56c-1.84.63-3.37 1.9-4.33 3.56zm2.42 4c0-.68.06-1.34.14-2H4.26c-.16.64-.26 1.31-.26 2s.1 1.36.26 2h3.38c-.08-.66-.14-1.32-.14-2zm-2.42 4a7.987 7.987 0 0 0 4.33 3.56A15.65 15.65 0 0 1 8.03 16H5.08zM12 4.04c-.83 1.2-1.48 2.53-1.91 3.96h3.82c-.43-1.43-1.08-2.76-1.91-3.96zM18.92 8a8.03 8.03 0 0 0-4.33-3.56c.6 1.11 1.06 2.31 1.38 3.56h2.95zM12 19.96c.83-1.2 1.48-2.53 1.91-3.96h-3.82c.43 1.43 1.08 2.76 1.91 3.96zm2.59-.4A8.03 8.03 0 0 0 18.92 16h-2.95a15.65 15.65 0 0 1-1.38 3.56zM19.74 10h-3.38c.08.66.14 1.32.14 2s-.06 1.34-.14 2h3.38c.16-.64.26-1.31.26-2s-.1-1.36-.26-2zM9.66 10c-.09.65-.16 1.32-.16 2s.07 1.34.16 2h4.68c.09-.66.16-1.32.16-2s-.07-1.35-.16-2H9.66z",fill:"currentColor"},null,-1),Y_=Gt("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 0 0-1.38-3.56A8.03 8.03 0 0 1 18.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 0 1 5.08 16zm2.95-8H5.08a7.987 7.987 0 0 1 4.33-3.56A15.65 15.65 0 0 0 8.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 0 1-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z",fill:"currentColor"},null,-1),J_=[Z_,Y_],Q_=de({name:"LanguageTwotone",render:function(t,n){return We(),vn("svg",X_,J_)}}),eP={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},tP=Gt("circle",{cx:"18",cy:"5",opacity:".3",r:"1",fill:"currentColor"},null,-1),nP=Gt("circle",{cx:"6",cy:"12",opacity:".3",r:"1",fill:"currentColor"},null,-1),oP=Gt("circle",{cx:"18",cy:"19.02",opacity:".3",r:"1",fill:"currentColor"},null,-1),rP=Gt("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92c0-1.61-1.31-2.92-2.92-2.92zM18 4c.55 0 1 .45 1 1s-.45 1-1 1s-1-.45-1-1s.45-1 1-1zM6 13c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1zm12 7.02c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1z",fill:"currentColor"},null,-1),iP=[tP,nP,oP,rP],aP=de({name:"ShareTwotone",render:function(t,n){return We(),vn("svg",eP,iP)}});var sP=!1;function B0(e){return Tc()?(Wf(e),!0):!1}function Bs(e){return typeof e=="function"?e():Ne(e)}const Pd=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const lP=Object.prototype.toString,cP=e=>lP.call(e)==="[object Object]",dP=()=>{};function uP(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const o=t;t=void 0,o&&await o},n}function hP(e){return rn()}function jh(e,t=!0,n){hP()?It(e,n):t?e():jt(e)}function fP(e,t,n={}){const{immediate:o=!0}=n,r=V(!1);let i=null;function a(){i&&(clearTimeout(i),i=null)}function s(){r.value=!1,a()}function l(...c){a(),r.value=!0,i=setTimeout(()=>{r.value=!1,i=null,e(...c)},Bs(t))}return o&&(r.value=!0,Pd&&l()),B0(s),{isPending:hn(r),start:l,stop:s}}function gP(e){var t;const n=Bs(e);return(t=n==null?void 0:n.$el)!=null?t:n}const mP=Pd?window:void 0,N0=Pd?window.navigator:void 0;function z0(...e){let t,n,o,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,o,r]=e,t=mP):[t,n,o,r]=e,!t)return dP;Array.isArray(n)||(n=[n]),Array.isArray(o)||(o=[o]);const i=[],a=()=>{i.forEach(d=>d()),i.length=0},s=(d,u,h,g)=>(d.addEventListener(u,h,g),()=>d.removeEventListener(u,h,g)),l=ot(()=>[gP(t),Bs(r)],([d,u])=>{if(a(),!d)return;const h=cP(u)?{...u}:u;i.push(...n.flatMap(g=>o.map(f=>s(d,g,f,h))))},{immediate:!0,flush:"post"}),c=()=>{l(),a()};return B0(c),c}function pP(){const e=V(!1),t=rn();return t&&It(()=>{e.value=!0},t),e}function F0(e){const t=pP();return z(()=>(t.value,!!e()))}function Gh(e,t={}){const{controls:n=!1,navigator:o=N0}=t,r=F0(()=>o&&"permissions"in o);let i;const a=typeof e=="string"?{name:e}:e,s=V(),l=()=>{i&&(s.value=i.state)},c=uP(async()=>{if(r.value){if(!i)try{i=await o.permissions.query(a),z0(i,"change",l),l()}catch{s.value="prompt"}return i}});return c(),n?{state:s,isSupported:r,query:c}:s}function bP(e={}){const{navigator:t=N0,read:n=!1,source:o,copiedDuring:r=1500,legacy:i=!1}=e,a=F0(()=>t&&"clipboard"in t),s=Gh("clipboard-read"),l=Gh("clipboard-write"),c=z(()=>a.value||i),d=V(""),u=V(!1),h=fP(()=>u.value=!1,r);function g(){a.value&&m(s.value)?t.clipboard.readText().then(k=>{d.value=k}):d.value=p()}c.value&&n&&z0(["copy","cut"],g);async function f(k=Bs(o)){c.value&&k!=null&&(a.value&&m(l.value)?await t.clipboard.writeText(k):b(k),d.value=k,u.value=!0,h.start())}function b(k){const T=document.createElement("textarea");T.value=k??"",T.style.position="absolute",T.style.opacity="0",document.body.appendChild(T),T.select(),document.execCommand("copy"),T.remove()}function p(){var k,T,v;return(v=(T=(k=document==null?void 0:document.getSelection)==null?void 0:k.call(document))==null?void 0:T.toString())!=null?v:""}function m(k){return k==="granted"||k==="prompt"}return{isSupported:c,text:d,copied:u,copy:f}}/*! * shared v9.14.0 * (c) 2024 kazuya kawaguchi * Released under the MIT License. - */const es=typeof window<"u",Eo=(e,t=!1)=>t?Symbol.for(e):Symbol(e),vP=(e,t,n)=>yP({l:e,k:t,s:n}),yP=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),xt=e=>typeof e=="number"&&isFinite(e),CP=e=>j0(e)==="[object Date]",ko=e=>j0(e)==="[object RegExp]",Ns=e=>Pe(e)&&Object.keys(e).length===0,$t=Object.assign;let Vh;const qn=()=>Vh||(Vh=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Uh(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const kP=Object.prototype.hasOwnProperty;function ts(e,t){return kP.call(e,t)}const at=Array.isArray,nt=e=>typeof e=="function",ue=e=>typeof e=="string",Le=e=>typeof e=="boolean",je=e=>e!==null&&typeof e=="object",xP=e=>je(e)&&nt(e.then)&&nt(e.catch),W0=Object.prototype.toString,j0=e=>W0.call(e),Pe=e=>{if(!je(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},SP=e=>e==null?"":at(e)||Pe(e)&&e.toString===W0?JSON.stringify(e,null,2):String(e);function TP(e,t=""){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,"")}function zs(e){let t=e;return()=>++t}function wP(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const Ta=e=>!je(e)||at(e);function Da(e,t){if(Ta(e)||Ta(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:o,des:r}=n.pop();Object.keys(o).forEach(i=>{Ta(o[i])||Ta(r[i])?r[i]=o[i]:n.push({src:o[i],des:r[i]})})}}/*! + */const es=typeof window<"u",Eo=(e,t=!1)=>t?Symbol.for(e):Symbol(e),vP=(e,t,n)=>yP({l:e,k:t,s:n}),yP=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),xt=e=>typeof e=="number"&&isFinite(e),CP=e=>j0(e)==="[object Date]",ko=e=>j0(e)==="[object RegExp]",Ns=e=>Pe(e)&&Object.keys(e).length===0,$t=Object.assign;let Vh;const qn=()=>Vh||(Vh=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Uh(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const kP=Object.prototype.hasOwnProperty;function ts(e,t){return kP.call(e,t)}const at=Array.isArray,nt=e=>typeof e=="function",ue=e=>typeof e=="string",Le=e=>typeof e=="boolean",Ge=e=>e!==null&&typeof e=="object",xP=e=>Ge(e)&&nt(e.then)&&nt(e.catch),W0=Object.prototype.toString,j0=e=>W0.call(e),Pe=e=>{if(!Ge(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},SP=e=>e==null?"":at(e)||Pe(e)&&e.toString===W0?JSON.stringify(e,null,2):String(e);function TP(e,t=""){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,"")}function zs(e){let t=e;return()=>++t}function wP(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const Ta=e=>!Ge(e)||at(e);function Da(e,t){if(Ta(e)||Ta(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:o,des:r}=n.pop();Object.keys(o).forEach(i=>{Ta(o[i])||Ta(r[i])?r[i]=o[i]:n.push({src:o[i],des:r[i]})})}}/*! * message-compiler v9.14.0 * (c) 2024 kazuya kawaguchi * Released under the MIT License. */function _P(e,t,n){return{line:e,column:t,offset:n}}function ns(e,t,n){return{start:e,end:t}}const PP=/\{([0-9a-zA-Z]+)\}/g;function G0(e,...t){return t.length===1&&AP(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(PP,(n,o)=>t.hasOwnProperty(o)?t[o]:"")}const V0=Object.assign,Kh=e=>typeof e=="string",AP=e=>e!==null&&typeof e=="object";function U0(e,t=""){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,"")}const Ad={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},RP={[Ad.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function EP(e,t,...n){const o=G0(RP[e],...n||[]),r={message:String(o),code:e};return t&&(r.location=t),r}const Te={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},IP={[Te.EXPECTED_TOKEN]:"Expected token: '{0}'",[Te.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[Te.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[Te.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[Te.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[Te.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[Te.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[Te.EMPTY_PLACEHOLDER]:"Empty placeholder",[Te.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[Te.INVALID_LINKED_FORMAT]:"Invalid linked format",[Te.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[Te.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[Te.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[Te.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[Te.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[Te.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function Kr(e,t,n={}){const{domain:o,messages:r,args:i}=n,a=G0((r||IP)[e]||"",...i||[]),s=new SyntaxError(String(a));return s.code=e,t&&(s.location=t),s.domain=o,s}function MP(e){throw e}const jn=" ",DP="\r",Xt=` -`,OP="\u2028",LP="\u2029";function HP(e){const t=e;let n=0,o=1,r=1,i=0;const a=y=>t[y]===DP&&t[y+1]===Xt,s=y=>t[y]===Xt,l=y=>t[y]===LP,c=y=>t[y]===OP,d=y=>a(y)||s(y)||l(y)||c(y),u=()=>n,h=()=>o,g=()=>r,f=()=>i,b=y=>a(y)||l(y)||c(y)?Xt:t[y],p=()=>b(n),m=()=>b(n+i);function k(){return i=0,d(n)&&(o++,r=0),a(n)&&n++,n++,r++,t[n]}function T(){return a(n+i)&&i++,i++,t[n+i]}function v(){n=0,o=1,r=1,i=0}function x(y=0){i=y}function A(){const y=n+i;for(;y!==n;)k();i=0}return{index:u,line:h,column:g,peekOffset:f,charAt:b,currentChar:p,currentPeek:m,next:k,peek:T,reset:v,resetPeek:x,skipToPeek:A}}const ao=void 0,$P=".",qh="'",BP="tokenizer";function NP(e,t={}){const n=t.location!==!1,o=HP(e),r=()=>o.index(),i=()=>_P(o.line(),o.column(),o.index()),a=i(),s=r(),l={currentType:14,offset:s,startLoc:a,endLoc:a,lastType:14,lastOffset:s,lastStartLoc:a,lastEndLoc:a,braceNest:0,inLinked:!1,text:""},c=()=>l,{onError:d}=t;function u(C,w,I,...Y){const re=c();if(w.column+=I,w.offset+=I,d){const q=n?ns(re.startLoc,w):null,L=Kr(C,q,{domain:BP,args:Y});d(L)}}function h(C,w,I){C.endLoc=i(),C.currentType=w;const Y={type:w};return n&&(Y.loc=ns(C.startLoc,C.endLoc)),I!=null&&(Y.value=I),Y}const g=C=>h(C,14);function f(C,w){return C.currentChar()===w?(C.next(),w):(u(Te.EXPECTED_TOKEN,i(),0,w),"")}function b(C){let w="";for(;C.currentPeek()===jn||C.currentPeek()===Xt;)w+=C.currentPeek(),C.peek();return w}function p(C){const w=b(C);return C.skipToPeek(),w}function m(C){if(C===ao)return!1;const w=C.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w===95}function k(C){if(C===ao)return!1;const w=C.charCodeAt(0);return w>=48&&w<=57}function T(C,w){const{currentType:I}=w;if(I!==2)return!1;b(C);const Y=m(C.currentPeek());return C.resetPeek(),Y}function v(C,w){const{currentType:I}=w;if(I!==2)return!1;b(C);const Y=C.currentPeek()==="-"?C.peek():C.currentPeek(),re=k(Y);return C.resetPeek(),re}function x(C,w){const{currentType:I}=w;if(I!==2)return!1;b(C);const Y=C.currentPeek()===qh;return C.resetPeek(),Y}function A(C,w){const{currentType:I}=w;if(I!==8)return!1;b(C);const Y=C.currentPeek()===".";return C.resetPeek(),Y}function y(C,w){const{currentType:I}=w;if(I!==9)return!1;b(C);const Y=m(C.currentPeek());return C.resetPeek(),Y}function R(C,w){const{currentType:I}=w;if(!(I===8||I===12))return!1;b(C);const Y=C.currentPeek()===":";return C.resetPeek(),Y}function P(C,w){const{currentType:I}=w;if(I!==10)return!1;const Y=()=>{const q=C.currentPeek();return q==="{"?m(C.peek()):q==="@"||q==="%"||q==="|"||q===":"||q==="."||q===jn||!q?!1:q===Xt?(C.peek(),Y()):M(C,!1)},re=Y();return C.resetPeek(),re}function D(C){b(C);const w=C.currentPeek()==="|";return C.resetPeek(),w}function W(C){const w=b(C),I=C.currentPeek()==="%"&&C.peek()==="{";return C.resetPeek(),{isModulo:I,hasSpace:w.length>0}}function M(C,w=!0){const I=(re=!1,q="",L=!1)=>{const N=C.currentPeek();return N==="{"?q==="%"?!1:re:N==="@"||!N?q==="%"?!0:re:N==="%"?(C.peek(),I(re,"%",!0)):N==="|"?q==="%"||L?!0:!(q===jn||q===Xt):N===jn?(C.peek(),I(!0,jn,L)):N===Xt?(C.peek(),I(!0,Xt,L)):!0},Y=I();return w&&C.resetPeek(),Y}function j(C,w){const I=C.currentChar();return I===ao?ao:w(I)?(C.next(),I):null}function ee(C){const w=C.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36}function B(C){return j(C,ee)}function X(C){const w=C.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36||w===45}function $(C){return j(C,X)}function ie(C){const w=C.charCodeAt(0);return w>=48&&w<=57}function ve(C){return j(C,ie)}function ye(C){const w=C.charCodeAt(0);return w>=48&&w<=57||w>=65&&w<=70||w>=97&&w<=102}function Ae(C){return j(C,ye)}function De(C){let w="",I="";for(;w=ve(C);)I+=w;return I}function ut(C){p(C);const w=C.currentChar();return w!=="%"&&u(Te.EXPECTED_TOKEN,i(),0,w),C.next(),"%"}function Je(C){let w="";for(;;){const I=C.currentChar();if(I==="{"||I==="}"||I==="@"||I==="|"||!I)break;if(I==="%")if(M(C))w+=I,C.next();else break;else if(I===jn||I===Xt)if(M(C))w+=I,C.next();else{if(D(C))break;w+=I,C.next()}else w+=I,C.next()}return w}function pt(C){p(C);let w="",I="";for(;w=$(C);)I+=w;return C.currentChar()===ao&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I}function _e(C){p(C);let w="";return C.currentChar()==="-"?(C.next(),w+=`-${De(C)}`):w+=De(C),C.currentChar()===ao&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w}function Oe(C){return C!==qh&&C!==Xt}function Dt(C){p(C),f(C,"'");let w="",I="";for(;w=j(C,Oe);)w==="\\"?I+=Ie(C):I+=w;const Y=C.currentChar();return Y===Xt||Y===ao?(u(Te.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),Y===Xt&&(C.next(),f(C,"'")),I):(f(C,"'"),I)}function Ie(C){const w=C.currentChar();switch(w){case"\\":case"'":return C.next(),`\\${w}`;case"u":return bt(C,w,4);case"U":return bt(C,w,6);default:return u(Te.UNKNOWN_ESCAPE_SEQUENCE,i(),0,w),""}}function bt(C,w,I){f(C,w);let Y="";for(let re=0;re{const Y=C.currentChar();return Y==="{"||Y==="%"||Y==="@"||Y==="|"||Y==="("||Y===")"||!Y||Y===jn?I:(I+=Y,C.next(),w(I))};return w("")}function H(C){p(C);const w=f(C,"|");return p(C),w}function J(C,w){let I=null;switch(C.currentChar()){case"{":return w.braceNest>=1&&u(Te.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),C.next(),I=h(w,2,"{"),p(C),w.braceNest++,I;case"}":return w.braceNest>0&&w.currentType===2&&u(Te.EMPTY_PLACEHOLDER,i(),0),C.next(),I=h(w,3,"}"),w.braceNest--,w.braceNest>0&&p(C),w.inLinked&&w.braceNest===0&&(w.inLinked=!1),I;case"@":return w.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I=K(C,w)||g(w),w.braceNest=0,I;default:{let re=!0,q=!0,L=!0;if(D(C))return w.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I=h(w,1,H(C)),w.braceNest=0,w.inLinked=!1,I;if(w.braceNest>0&&(w.currentType===5||w.currentType===6||w.currentType===7))return u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w.braceNest=0,Z(C,w);if(re=T(C,w))return I=h(w,5,pt(C)),p(C),I;if(q=v(C,w))return I=h(w,6,_e(C)),p(C),I;if(L=x(C,w))return I=h(w,7,Dt(C)),p(C),I;if(!re&&!q&&!L)return I=h(w,13,en(C)),u(Te.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,I.value),p(C),I;break}}return I}function K(C,w){const{currentType:I}=w;let Y=null;const re=C.currentChar();switch((I===8||I===9||I===12||I===10)&&(re===Xt||re===jn)&&u(Te.INVALID_LINKED_FORMAT,i(),0),re){case"@":return C.next(),Y=h(w,8,"@"),w.inLinked=!0,Y;case".":return p(C),C.next(),h(w,9,".");case":":return p(C),C.next(),h(w,10,":");default:return D(C)?(Y=h(w,1,H(C)),w.braceNest=0,w.inLinked=!1,Y):A(C,w)||R(C,w)?(p(C),K(C,w)):y(C,w)?(p(C),h(w,12,E(C))):P(C,w)?(p(C),re==="{"?J(C,w)||Y:h(w,11,_(C))):(I===8&&u(Te.INVALID_LINKED_FORMAT,i(),0),w.braceNest=0,w.inLinked=!1,Z(C,w))}}function Z(C,w){let I={type:14};if(w.braceNest>0)return J(C,w)||g(w);if(w.inLinked)return K(C,w)||g(w);switch(C.currentChar()){case"{":return J(C,w)||g(w);case"}":return u(Te.UNBALANCED_CLOSING_BRACE,i(),0),C.next(),h(w,3,"}");case"@":return K(C,w)||g(w);default:{if(D(C))return I=h(w,1,H(C)),w.braceNest=0,w.inLinked=!1,I;const{isModulo:re,hasSpace:q}=W(C);if(re)return q?h(w,0,Je(C)):h(w,4,ut(C));if(M(C))return h(w,0,Je(C));break}}return I}function le(){const{currentType:C,offset:w,startLoc:I,endLoc:Y}=l;return l.lastType=C,l.lastOffset=w,l.lastStartLoc=I,l.lastEndLoc=Y,l.offset=r(),l.startLoc=i(),o.currentChar()===ao?h(l,14):Z(o,l)}return{nextToken:le,currentOffset:r,currentPosition:i,context:c}}const zP="parser",FP=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function WP(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const o=parseInt(t||n,16);return o<=55295||o>=57344?String.fromCodePoint(o):"�"}}}function jP(e={}){const t=e.location!==!1,{onError:n,onWarn:o}=e;function r(T,v,x,A,...y){const R=T.currentPosition();if(R.offset+=A,R.column+=A,n){const P=t?ns(x,R):null,D=Kr(v,P,{domain:zP,args:y});n(D)}}function i(T,v,x,A,...y){const R=T.currentPosition();if(R.offset+=A,R.column+=A,o){const P=t?ns(x,R):null;o(EP(v,P,y))}}function a(T,v,x){const A={type:T};return t&&(A.start=v,A.end=v,A.loc={start:x,end:x}),A}function s(T,v,x,A){t&&(T.end=v,T.loc&&(T.loc.end=x))}function l(T,v){const x=T.context(),A=a(3,x.offset,x.startLoc);return A.value=v,s(A,T.currentOffset(),T.currentPosition()),A}function c(T,v){const x=T.context(),{lastOffset:A,lastStartLoc:y}=x,R=a(5,A,y);return R.index=parseInt(v,10),T.nextToken(),s(R,T.currentOffset(),T.currentPosition()),R}function d(T,v,x){const A=T.context(),{lastOffset:y,lastStartLoc:R}=A,P=a(4,y,R);return P.key=v,x===!0&&(P.modulo=!0),T.nextToken(),s(P,T.currentOffset(),T.currentPosition()),P}function u(T,v){const x=T.context(),{lastOffset:A,lastStartLoc:y}=x,R=a(9,A,y);return R.value=v.replace(FP,WP),T.nextToken(),s(R,T.currentOffset(),T.currentPosition()),R}function h(T){const v=T.nextToken(),x=T.context(),{lastOffset:A,lastStartLoc:y}=x,R=a(8,A,y);return v.type!==12?(r(T,Te.UNEXPECTED_EMPTY_LINKED_MODIFIER,x.lastStartLoc,0),R.value="",s(R,A,y),{nextConsumeToken:v,node:R}):(v.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,x.lastStartLoc,0,kn(v)),R.value=v.value||"",s(R,T.currentOffset(),T.currentPosition()),{node:R})}function g(T,v){const x=T.context(),A=a(7,x.offset,x.startLoc);return A.value=v,s(A,T.currentOffset(),T.currentPosition()),A}function f(T){const v=T.context(),x=a(6,v.offset,v.startLoc);let A=T.nextToken();if(A.type===9){const y=h(T);x.modifier=y.node,A=y.nextConsumeToken||T.nextToken()}switch(A.type!==10&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(A)),A=T.nextToken(),A.type===2&&(A=T.nextToken()),A.type){case 11:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(A)),x.key=g(T,A.value||"");break;case 5:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(A)),x.key=d(T,A.value||"");break;case 6:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(A)),x.key=c(T,A.value||"");break;case 7:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(A)),x.key=u(T,A.value||"");break;default:{r(T,Te.UNEXPECTED_EMPTY_LINKED_KEY,v.lastStartLoc,0);const y=T.context(),R=a(7,y.offset,y.startLoc);return R.value="",s(R,y.offset,y.startLoc),x.key=R,s(x,y.offset,y.startLoc),{nextConsumeToken:A,node:x}}}return s(x,T.currentOffset(),T.currentPosition()),{node:x}}function b(T){const v=T.context(),x=v.currentType===1?T.currentOffset():v.offset,A=v.currentType===1?v.endLoc:v.startLoc,y=a(2,x,A);y.items=[];let R=null,P=null;do{const M=R||T.nextToken();switch(R=null,M.type){case 0:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(M)),y.items.push(l(T,M.value||""));break;case 6:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(M)),y.items.push(c(T,M.value||""));break;case 4:P=!0;break;case 5:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(M)),y.items.push(d(T,M.value||"",!!P)),P&&(i(T,Ad.USE_MODULO_SYNTAX,v.lastStartLoc,0,kn(M)),P=null);break;case 7:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,kn(M)),y.items.push(u(T,M.value||""));break;case 8:{const j=f(T);y.items.push(j.node),R=j.nextConsumeToken||null;break}}}while(v.currentType!==14&&v.currentType!==1);const D=v.currentType===1?v.lastOffset:T.currentOffset(),W=v.currentType===1?v.lastEndLoc:T.currentPosition();return s(y,D,W),y}function p(T,v,x,A){const y=T.context();let R=A.items.length===0;const P=a(1,v,x);P.cases=[],P.cases.push(A);do{const D=b(T);R||(R=D.items.length===0),P.cases.push(D)}while(y.currentType!==14);return R&&r(T,Te.MUST_HAVE_MESSAGES_IN_PLURAL,x,0),s(P,T.currentOffset(),T.currentPosition()),P}function m(T){const v=T.context(),{offset:x,startLoc:A}=v,y=b(T);return v.currentType===14?y:p(T,x,A,y)}function k(T){const v=NP(T,V0({},e)),x=v.context(),A=a(0,x.offset,x.startLoc);return t&&A.loc&&(A.loc.source=T),A.body=m(v),e.onCacheKey&&(A.cacheKey=e.onCacheKey(T)),x.currentType!==14&&r(v,Te.UNEXPECTED_LEXICAL_ANALYSIS,x.lastStartLoc,0,T[x.offset]||""),s(A,v.currentOffset(),v.currentPosition()),A}return{parse:k}}function kn(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function GP(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:i=>(n.helpers.add(i),i)}}function Xh(e,t){for(let n=0;nZh(n)),e}function Zh(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;ns;function c(p,m){s.code+=p}function d(p,m=!0){const k=m?r:"";c(i?k+" ".repeat(p):k)}function u(p=!0){const m=++s.indentLevel;p&&d(m)}function h(p=!0){const m=--s.indentLevel;p&&d(m)}function g(){d(s.indentLevel)}return{context:l,push:c,indent:u,deindent:h,newline:g,helper:p=>`_${p}`,needIndent:()=>s.needIndent}}function ZP(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),Lr(e,t.key),t.modifier?(e.push(", "),Lr(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function YP(e,t){const{helper:n,needIndent:o}=e;e.push(`${n("normalize")}([`),e.indent(o());const r=t.items.length;for(let i=0;i1){e.push(`${n("plural")}([`),e.indent(o());const r=t.cases.length;for(let i=0;i{const n=Kh(t.mode)?t.mode:"normal",o=Kh(t.filename)?t.filename:"message.intl",r=!!t.sourceMap,i=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":` +`,OP="\u2028",LP="\u2029";function HP(e){const t=e;let n=0,o=1,r=1,i=0;const a=y=>t[y]===DP&&t[y+1]===Xt,s=y=>t[y]===Xt,l=y=>t[y]===LP,c=y=>t[y]===OP,d=y=>a(y)||s(y)||l(y)||c(y),u=()=>n,h=()=>o,g=()=>r,f=()=>i,b=y=>a(y)||l(y)||c(y)?Xt:t[y],p=()=>b(n),m=()=>b(n+i);function k(){return i=0,d(n)&&(o++,r=0),a(n)&&n++,n++,r++,t[n]}function T(){return a(n+i)&&i++,i++,t[n+i]}function v(){n=0,o=1,r=1,i=0}function x(y=0){i=y}function A(){const y=n+i;for(;y!==n;)k();i=0}return{index:u,line:h,column:g,peekOffset:f,charAt:b,currentChar:p,currentPeek:m,next:k,peek:T,reset:v,resetPeek:x,skipToPeek:A}}const ao=void 0,$P=".",qh="'",BP="tokenizer";function NP(e,t={}){const n=t.location!==!1,o=HP(e),r=()=>o.index(),i=()=>_P(o.line(),o.column(),o.index()),a=i(),s=r(),l={currentType:14,offset:s,startLoc:a,endLoc:a,lastType:14,lastOffset:s,lastStartLoc:a,lastEndLoc:a,braceNest:0,inLinked:!1,text:""},c=()=>l,{onError:d}=t;function u(C,w,I,...Y){const re=c();if(w.column+=I,w.offset+=I,d){const q=n?ns(re.startLoc,w):null,L=Kr(C,q,{domain:BP,args:Y});d(L)}}function h(C,w,I){C.endLoc=i(),C.currentType=w;const Y={type:w};return n&&(Y.loc=ns(C.startLoc,C.endLoc)),I!=null&&(Y.value=I),Y}const g=C=>h(C,14);function f(C,w){return C.currentChar()===w?(C.next(),w):(u(Te.EXPECTED_TOKEN,i(),0,w),"")}function b(C){let w="";for(;C.currentPeek()===jn||C.currentPeek()===Xt;)w+=C.currentPeek(),C.peek();return w}function p(C){const w=b(C);return C.skipToPeek(),w}function m(C){if(C===ao)return!1;const w=C.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w===95}function k(C){if(C===ao)return!1;const w=C.charCodeAt(0);return w>=48&&w<=57}function T(C,w){const{currentType:I}=w;if(I!==2)return!1;b(C);const Y=m(C.currentPeek());return C.resetPeek(),Y}function v(C,w){const{currentType:I}=w;if(I!==2)return!1;b(C);const Y=C.currentPeek()==="-"?C.peek():C.currentPeek(),re=k(Y);return C.resetPeek(),re}function x(C,w){const{currentType:I}=w;if(I!==2)return!1;b(C);const Y=C.currentPeek()===qh;return C.resetPeek(),Y}function A(C,w){const{currentType:I}=w;if(I!==8)return!1;b(C);const Y=C.currentPeek()===".";return C.resetPeek(),Y}function y(C,w){const{currentType:I}=w;if(I!==9)return!1;b(C);const Y=m(C.currentPeek());return C.resetPeek(),Y}function R(C,w){const{currentType:I}=w;if(!(I===8||I===12))return!1;b(C);const Y=C.currentPeek()===":";return C.resetPeek(),Y}function P(C,w){const{currentType:I}=w;if(I!==10)return!1;const Y=()=>{const q=C.currentPeek();return q==="{"?m(C.peek()):q==="@"||q==="%"||q==="|"||q===":"||q==="."||q===jn||!q?!1:q===Xt?(C.peek(),Y()):M(C,!1)},re=Y();return C.resetPeek(),re}function D(C){b(C);const w=C.currentPeek()==="|";return C.resetPeek(),w}function W(C){const w=b(C),I=C.currentPeek()==="%"&&C.peek()==="{";return C.resetPeek(),{isModulo:I,hasSpace:w.length>0}}function M(C,w=!0){const I=(re=!1,q="",L=!1)=>{const N=C.currentPeek();return N==="{"?q==="%"?!1:re:N==="@"||!N?q==="%"?!0:re:N==="%"?(C.peek(),I(re,"%",!0)):N==="|"?q==="%"||L?!0:!(q===jn||q===Xt):N===jn?(C.peek(),I(!0,jn,L)):N===Xt?(C.peek(),I(!0,Xt,L)):!0},Y=I();return w&&C.resetPeek(),Y}function j(C,w){const I=C.currentChar();return I===ao?ao:w(I)?(C.next(),I):null}function ee(C){const w=C.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36}function B(C){return j(C,ee)}function X(C){const w=C.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36||w===45}function $(C){return j(C,X)}function ie(C){const w=C.charCodeAt(0);return w>=48&&w<=57}function ve(C){return j(C,ie)}function ye(C){const w=C.charCodeAt(0);return w>=48&&w<=57||w>=65&&w<=70||w>=97&&w<=102}function Ae(C){return j(C,ye)}function De(C){let w="",I="";for(;w=ve(C);)I+=w;return I}function ut(C){p(C);const w=C.currentChar();return w!=="%"&&u(Te.EXPECTED_TOKEN,i(),0,w),C.next(),"%"}function Je(C){let w="";for(;;){const I=C.currentChar();if(I==="{"||I==="}"||I==="@"||I==="|"||!I)break;if(I==="%")if(M(C))w+=I,C.next();else break;else if(I===jn||I===Xt)if(M(C))w+=I,C.next();else{if(D(C))break;w+=I,C.next()}else w+=I,C.next()}return w}function pt(C){p(C);let w="",I="";for(;w=$(C);)I+=w;return C.currentChar()===ao&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I}function _e(C){p(C);let w="";return C.currentChar()==="-"?(C.next(),w+=`-${De(C)}`):w+=De(C),C.currentChar()===ao&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w}function Oe(C){return C!==qh&&C!==Xt}function Dt(C){p(C),f(C,"'");let w="",I="";for(;w=j(C,Oe);)w==="\\"?I+=Ie(C):I+=w;const Y=C.currentChar();return Y===Xt||Y===ao?(u(Te.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),Y===Xt&&(C.next(),f(C,"'")),I):(f(C,"'"),I)}function Ie(C){const w=C.currentChar();switch(w){case"\\":case"'":return C.next(),`\\${w}`;case"u":return bt(C,w,4);case"U":return bt(C,w,6);default:return u(Te.UNKNOWN_ESCAPE_SEQUENCE,i(),0,w),""}}function bt(C,w,I){f(C,w);let Y="";for(let re=0;re{const Y=C.currentChar();return Y==="{"||Y==="%"||Y==="@"||Y==="|"||Y==="("||Y===")"||!Y||Y===jn?I:(I+=Y,C.next(),w(I))};return w("")}function H(C){p(C);const w=f(C,"|");return p(C),w}function J(C,w){let I=null;switch(C.currentChar()){case"{":return w.braceNest>=1&&u(Te.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),C.next(),I=h(w,2,"{"),p(C),w.braceNest++,I;case"}":return w.braceNest>0&&w.currentType===2&&u(Te.EMPTY_PLACEHOLDER,i(),0),C.next(),I=h(w,3,"}"),w.braceNest--,w.braceNest>0&&p(C),w.inLinked&&w.braceNest===0&&(w.inLinked=!1),I;case"@":return w.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I=K(C,w)||g(w),w.braceNest=0,I;default:{let re=!0,q=!0,L=!0;if(D(C))return w.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I=h(w,1,H(C)),w.braceNest=0,w.inLinked=!1,I;if(w.braceNest>0&&(w.currentType===5||w.currentType===6||w.currentType===7))return u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w.braceNest=0,Z(C,w);if(re=T(C,w))return I=h(w,5,pt(C)),p(C),I;if(q=v(C,w))return I=h(w,6,_e(C)),p(C),I;if(L=x(C,w))return I=h(w,7,Dt(C)),p(C),I;if(!re&&!q&&!L)return I=h(w,13,en(C)),u(Te.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,I.value),p(C),I;break}}return I}function K(C,w){const{currentType:I}=w;let Y=null;const re=C.currentChar();switch((I===8||I===9||I===12||I===10)&&(re===Xt||re===jn)&&u(Te.INVALID_LINKED_FORMAT,i(),0),re){case"@":return C.next(),Y=h(w,8,"@"),w.inLinked=!0,Y;case".":return p(C),C.next(),h(w,9,".");case":":return p(C),C.next(),h(w,10,":");default:return D(C)?(Y=h(w,1,H(C)),w.braceNest=0,w.inLinked=!1,Y):A(C,w)||R(C,w)?(p(C),K(C,w)):y(C,w)?(p(C),h(w,12,E(C))):P(C,w)?(p(C),re==="{"?J(C,w)||Y:h(w,11,_(C))):(I===8&&u(Te.INVALID_LINKED_FORMAT,i(),0),w.braceNest=0,w.inLinked=!1,Z(C,w))}}function Z(C,w){let I={type:14};if(w.braceNest>0)return J(C,w)||g(w);if(w.inLinked)return K(C,w)||g(w);switch(C.currentChar()){case"{":return J(C,w)||g(w);case"}":return u(Te.UNBALANCED_CLOSING_BRACE,i(),0),C.next(),h(w,3,"}");case"@":return K(C,w)||g(w);default:{if(D(C))return I=h(w,1,H(C)),w.braceNest=0,w.inLinked=!1,I;const{isModulo:re,hasSpace:q}=W(C);if(re)return q?h(w,0,Je(C)):h(w,4,ut(C));if(M(C))return h(w,0,Je(C));break}}return I}function le(){const{currentType:C,offset:w,startLoc:I,endLoc:Y}=l;return l.lastType=C,l.lastOffset=w,l.lastStartLoc=I,l.lastEndLoc=Y,l.offset=r(),l.startLoc=i(),o.currentChar()===ao?h(l,14):Z(o,l)}return{nextToken:le,currentOffset:r,currentPosition:i,context:c}}const zP="parser",FP=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function WP(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const o=parseInt(t||n,16);return o<=55295||o>=57344?String.fromCodePoint(o):"�"}}}function jP(e={}){const t=e.location!==!1,{onError:n,onWarn:o}=e;function r(T,v,x,A,...y){const R=T.currentPosition();if(R.offset+=A,R.column+=A,n){const P=t?ns(x,R):null,D=Kr(v,P,{domain:zP,args:y});n(D)}}function i(T,v,x,A,...y){const R=T.currentPosition();if(R.offset+=A,R.column+=A,o){const P=t?ns(x,R):null;o(EP(v,P,y))}}function a(T,v,x){const A={type:T};return t&&(A.start=v,A.end=v,A.loc={start:x,end:x}),A}function s(T,v,x,A){t&&(T.end=v,T.loc&&(T.loc.end=x))}function l(T,v){const x=T.context(),A=a(3,x.offset,x.startLoc);return A.value=v,s(A,T.currentOffset(),T.currentPosition()),A}function c(T,v){const x=T.context(),{lastOffset:A,lastStartLoc:y}=x,R=a(5,A,y);return R.index=parseInt(v,10),T.nextToken(),s(R,T.currentOffset(),T.currentPosition()),R}function d(T,v,x){const A=T.context(),{lastOffset:y,lastStartLoc:R}=A,P=a(4,y,R);return P.key=v,x===!0&&(P.modulo=!0),T.nextToken(),s(P,T.currentOffset(),T.currentPosition()),P}function u(T,v){const x=T.context(),{lastOffset:A,lastStartLoc:y}=x,R=a(9,A,y);return R.value=v.replace(FP,WP),T.nextToken(),s(R,T.currentOffset(),T.currentPosition()),R}function h(T){const v=T.nextToken(),x=T.context(),{lastOffset:A,lastStartLoc:y}=x,R=a(8,A,y);return v.type!==12?(r(T,Te.UNEXPECTED_EMPTY_LINKED_MODIFIER,x.lastStartLoc,0),R.value="",s(R,A,y),{nextConsumeToken:v,node:R}):(v.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,x.lastStartLoc,0,xn(v)),R.value=v.value||"",s(R,T.currentOffset(),T.currentPosition()),{node:R})}function g(T,v){const x=T.context(),A=a(7,x.offset,x.startLoc);return A.value=v,s(A,T.currentOffset(),T.currentPosition()),A}function f(T){const v=T.context(),x=a(6,v.offset,v.startLoc);let A=T.nextToken();if(A.type===9){const y=h(T);x.modifier=y.node,A=y.nextConsumeToken||T.nextToken()}switch(A.type!==10&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(A)),A=T.nextToken(),A.type===2&&(A=T.nextToken()),A.type){case 11:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(A)),x.key=g(T,A.value||"");break;case 5:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(A)),x.key=d(T,A.value||"");break;case 6:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(A)),x.key=c(T,A.value||"");break;case 7:A.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(A)),x.key=u(T,A.value||"");break;default:{r(T,Te.UNEXPECTED_EMPTY_LINKED_KEY,v.lastStartLoc,0);const y=T.context(),R=a(7,y.offset,y.startLoc);return R.value="",s(R,y.offset,y.startLoc),x.key=R,s(x,y.offset,y.startLoc),{nextConsumeToken:A,node:x}}}return s(x,T.currentOffset(),T.currentPosition()),{node:x}}function b(T){const v=T.context(),x=v.currentType===1?T.currentOffset():v.offset,A=v.currentType===1?v.endLoc:v.startLoc,y=a(2,x,A);y.items=[];let R=null,P=null;do{const M=R||T.nextToken();switch(R=null,M.type){case 0:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(M)),y.items.push(l(T,M.value||""));break;case 6:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(M)),y.items.push(c(T,M.value||""));break;case 4:P=!0;break;case 5:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(M)),y.items.push(d(T,M.value||"",!!P)),P&&(i(T,Ad.USE_MODULO_SYNTAX,v.lastStartLoc,0,xn(M)),P=null);break;case 7:M.value==null&&r(T,Te.UNEXPECTED_LEXICAL_ANALYSIS,v.lastStartLoc,0,xn(M)),y.items.push(u(T,M.value||""));break;case 8:{const j=f(T);y.items.push(j.node),R=j.nextConsumeToken||null;break}}}while(v.currentType!==14&&v.currentType!==1);const D=v.currentType===1?v.lastOffset:T.currentOffset(),W=v.currentType===1?v.lastEndLoc:T.currentPosition();return s(y,D,W),y}function p(T,v,x,A){const y=T.context();let R=A.items.length===0;const P=a(1,v,x);P.cases=[],P.cases.push(A);do{const D=b(T);R||(R=D.items.length===0),P.cases.push(D)}while(y.currentType!==14);return R&&r(T,Te.MUST_HAVE_MESSAGES_IN_PLURAL,x,0),s(P,T.currentOffset(),T.currentPosition()),P}function m(T){const v=T.context(),{offset:x,startLoc:A}=v,y=b(T);return v.currentType===14?y:p(T,x,A,y)}function k(T){const v=NP(T,V0({},e)),x=v.context(),A=a(0,x.offset,x.startLoc);return t&&A.loc&&(A.loc.source=T),A.body=m(v),e.onCacheKey&&(A.cacheKey=e.onCacheKey(T)),x.currentType!==14&&r(v,Te.UNEXPECTED_LEXICAL_ANALYSIS,x.lastStartLoc,0,T[x.offset]||""),s(A,v.currentOffset(),v.currentPosition()),A}return{parse:k}}function xn(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function GP(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:i=>(n.helpers.add(i),i)}}function Xh(e,t){for(let n=0;nZh(n)),e}function Zh(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;ns;function c(p,m){s.code+=p}function d(p,m=!0){const k=m?r:"";c(i?k+" ".repeat(p):k)}function u(p=!0){const m=++s.indentLevel;p&&d(m)}function h(p=!0){const m=--s.indentLevel;p&&d(m)}function g(){d(s.indentLevel)}return{context:l,push:c,indent:u,deindent:h,newline:g,helper:p=>`_${p}`,needIndent:()=>s.needIndent}}function ZP(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),Lr(e,t.key),t.modifier?(e.push(", "),Lr(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function YP(e,t){const{helper:n,needIndent:o}=e;e.push(`${n("normalize")}([`),e.indent(o());const r=t.items.length;for(let i=0;i1){e.push(`${n("plural")}([`),e.indent(o());const r=t.cases.length;for(let i=0;i{const n=Kh(t.mode)?t.mode:"normal",o=Kh(t.filename)?t.filename:"message.intl",r=!!t.sourceMap,i=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":` `,a=t.needIndent?t.needIndent:n!=="arrow",s=e.helpers||[],l=XP(e,{mode:n,filename:o,sourceMap:r,breakLineCode:i,needIndent:a});l.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(a),s.length>0&&(l.push(`const { ${U0(s.map(u=>`${u}: _${u}`),", ")} } = ctx`),l.newline()),l.push("return "),Lr(l,e),l.deindent(a),l.push("}"),delete e.helpers;const{code:c,map:d}=l.context();return{ast:e,code:c,map:d?d.toJSON():void 0}};function tA(e,t={}){const n=V0({},t),o=!!n.jit,r=!!n.minify,i=n.optimize==null?!0:n.optimize,s=jP(n).parse(e);return o?(i&&UP(s),r&&xr(s),{ast:s,code:""}):(VP(s,n),eA(s,n))}/*! * core-base v9.14.0 * (c) 2024 kazuya kawaguchi * Released under the MIT License. - */function nA(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(qn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const Io=[];Io[0]={w:[0],i:[3,0],"[":[4],o:[7]};Io[1]={w:[1],".":[2],"[":[4],o:[7]};Io[2]={w:[2],i:[3,0],0:[3,0]};Io[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};Io[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};Io[5]={"'":[4,0],o:8,l:[5,0]};Io[6]={'"':[4,0],o:8,l:[6,0]};const oA=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function rA(e){return oA.test(e)}function iA(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function aA(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function sA(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:rA(t)?iA(t):"*"+t}function lA(e){const t=[];let n=-1,o=0,r=0,i,a,s,l,c,d,u;const h=[];h[0]=()=>{a===void 0?a=s:a+=s},h[1]=()=>{a!==void 0&&(t.push(a),a=void 0)},h[2]=()=>{h[0](),r++},h[3]=()=>{if(r>0)r--,o=4,h[0]();else{if(r=0,a===void 0||(a=sA(a),a===!1))return!1;h[1]()}};function g(){const f=e[n+1];if(o===5&&f==="'"||o===6&&f==='"')return n++,s="\\"+f,h[0](),!0}for(;o!==null;)if(n++,i=e[n],!(i==="\\"&&g())){if(l=aA(i),u=Io[o],c=u[l]||u.l||8,c===8||(o=c[0],c[1]!==void 0&&(d=h[c[1]],d&&(s=i,d()===!1))))return;if(o===7)return t}}const Yh=new Map;function cA(e,t){return je(e)?e[t]:null}function dA(e,t){if(!je(e))return null;let n=Yh.get(t);if(n||(n=lA(t),n&&Yh.set(t,n)),!n)return null;const o=n.length;let r=e,i=0;for(;ie,hA=e=>"",fA="text",gA=e=>e.length===0?"":TP(e),mA=SP;function Jh(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function pA(e){const t=xt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(xt(e.named.count)||xt(e.named.n))?xt(e.named.count)?e.named.count:xt(e.named.n)?e.named.n:t:t}function bA(e,t){t.count||(t.count=e),t.n||(t.n=e)}function vA(e={}){const t=e.locale,n=pA(e),o=je(e.pluralRules)&&ue(t)&&nt(e.pluralRules[t])?e.pluralRules[t]:Jh,r=je(e.pluralRules)&&ue(t)&&nt(e.pluralRules[t])?Jh:void 0,i=m=>m[o(n,m.length,r)],a=e.list||[],s=m=>a[m],l=e.named||{};xt(e.pluralIndex)&&bA(n,l);const c=m=>l[m];function d(m){const k=nt(e.messages)?e.messages(m):je(e.messages)?e.messages[m]:!1;return k||(e.parent?e.parent.message(m):hA)}const u=m=>e.modifiers?e.modifiers[m]:uA,h=Pe(e.processor)&&nt(e.processor.normalize)?e.processor.normalize:gA,g=Pe(e.processor)&&nt(e.processor.interpolate)?e.processor.interpolate:mA,f=Pe(e.processor)&&ue(e.processor.type)?e.processor.type:fA,p={list:s,named:c,plural:i,linked:(m,...k)=>{const[T,v]=k;let x="text",A="";k.length===1?je(T)?(A=T.modifier||A,x=T.type||x):ue(T)&&(A=T||A):k.length===2&&(ue(T)&&(A=T||A),ue(v)&&(x=v||x));const y=d(m)(p),R=x==="vnode"&&at(y)&&A?y[0]:y;return A?u(A)(R,x):R},message:d,type:f,interpolate:g,normalize:h,values:$t({},a,l)};return p}let Bi=null;function yA(e){Bi=e}function CA(e,t,n){Bi&&Bi.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const kA=xA("function:translate");function xA(e){return t=>Bi&&Bi.emit(e,t)}const K0=Ad.__EXTEND_POINT__,zo=zs(K0),SA={NOT_FOUND_KEY:K0,FALLBACK_TO_TRANSLATE:zo(),CANNOT_FORMAT_NUMBER:zo(),FALLBACK_TO_NUMBER_FORMAT:zo(),CANNOT_FORMAT_DATE:zo(),FALLBACK_TO_DATE_FORMAT:zo(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:zo(),__EXTEND_POINT__:zo()},q0=Te.__EXTEND_POINT__,Fo=zs(q0),wn={INVALID_ARGUMENT:q0,INVALID_DATE_ARGUMENT:Fo(),INVALID_ISO_DATE_ARGUMENT:Fo(),NOT_SUPPORT_NON_STRING_MESSAGE:Fo(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:Fo(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:Fo(),NOT_SUPPORT_LOCALE_TYPE:Fo(),__EXTEND_POINT__:Fo()};function On(e){return Kr(e,null,void 0)}function Ed(e,t){return t.locale!=null?Qh(t.locale):Qh(e.locale)}let Tl;function Qh(e){if(ue(e))return e;if(nt(e)){if(e.resolvedOnce&&Tl!=null)return Tl;if(e.constructor.name==="Function"){const t=e();if(xP(t))throw On(wn.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Tl=t}else throw On(wn.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw On(wn.NOT_SUPPORT_LOCALE_TYPE)}function TA(e,t,n){return[...new Set([n,...at(t)?t:je(t)?Object.keys(t):ue(t)?[t]:[n]])]}function X0(e,t,n){const o=ue(n)?n:Hr,r=e;r.__localeChainCache||(r.__localeChainCache=new Map);let i=r.__localeChainCache.get(o);if(!i){i=[];let a=[n];for(;at(a);)a=ef(i,a,t);const s=at(t)||!Pe(t)?t:t.default?t.default:null;a=ue(s)?[s]:s,at(a)&&ef(i,a,!1),r.__localeChainCache.set(o,i)}return i}function ef(e,t,n){let o=!0;for(let r=0;r`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function AA(){return{upper:(e,t)=>t==="text"&&ue(e)?e.toUpperCase():t==="vnode"&&je(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&ue(e)?e.toLowerCase():t==="vnode"&&je(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&ue(e)?nf(e):t==="vnode"&&je(e)&&"__v_isVNode"in e?nf(e.children):e}}let Z0;function of(e){Z0=e}let Y0;function RA(e){Y0=e}let J0;function EA(e){J0=e}let Q0=null;const IA=e=>{Q0=e},MA=()=>Q0;let e1=null;const rf=e=>{e1=e},DA=()=>e1;let af=0;function OA(e={}){const t=nt(e.onWarn)?e.onWarn:wP,n=ue(e.version)?e.version:PA,o=ue(e.locale)||nt(e.locale)?e.locale:Hr,r=nt(o)?Hr:o,i=at(e.fallbackLocale)||Pe(e.fallbackLocale)||ue(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:r,a=Pe(e.messages)?e.messages:{[r]:{}},s=Pe(e.datetimeFormats)?e.datetimeFormats:{[r]:{}},l=Pe(e.numberFormats)?e.numberFormats:{[r]:{}},c=$t({},e.modifiers||{},AA()),d=e.pluralRules||{},u=nt(e.missing)?e.missing:null,h=Le(e.missingWarn)||ko(e.missingWarn)?e.missingWarn:!0,g=Le(e.fallbackWarn)||ko(e.fallbackWarn)?e.fallbackWarn:!0,f=!!e.fallbackFormat,b=!!e.unresolving,p=nt(e.postTranslation)?e.postTranslation:null,m=Pe(e.processor)?e.processor:null,k=Le(e.warnHtmlMessage)?e.warnHtmlMessage:!0,T=!!e.escapeParameter,v=nt(e.messageCompiler)?e.messageCompiler:Z0,x=nt(e.messageResolver)?e.messageResolver:Y0||cA,A=nt(e.localeFallbacker)?e.localeFallbacker:J0||TA,y=je(e.fallbackContext)?e.fallbackContext:void 0,R=e,P=je(R.__datetimeFormatters)?R.__datetimeFormatters:new Map,D=je(R.__numberFormatters)?R.__numberFormatters:new Map,W=je(R.__meta)?R.__meta:{};af++;const M={version:n,cid:af,locale:o,fallbackLocale:i,messages:a,modifiers:c,pluralRules:d,missing:u,missingWarn:h,fallbackWarn:g,fallbackFormat:f,unresolving:b,postTranslation:p,processor:m,warnHtmlMessage:k,escapeParameter:T,messageCompiler:v,messageResolver:x,localeFallbacker:A,fallbackContext:y,onWarn:t,__meta:W};return M.datetimeFormats=s,M.numberFormats=l,M.__datetimeFormatters=P,M.__numberFormatters=D,__INTLIFY_PROD_DEVTOOLS__&&CA(M,n,W),M}function Id(e,t,n,o,r){const{missing:i,onWarn:a}=e;if(i!==null){const s=i(e,n,t,r);return ue(s)?s:t}else return t}function ai(e,t,n){const o=e;o.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function LA(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function HA(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let o=n+1;o$A(n,e)}function $A(e,t){const n=t.b||t.body;if((n.t||n.type)===1){const o=n,r=o.c||o.cases;return e.plural(r.reduce((i,a)=>[...i,sf(e,a)],[]))}else return sf(e,n)}function sf(e,t){const n=t.s||t.static;if(n)return e.type==="text"?n:e.normalize([n]);{const o=(t.i||t.items).reduce((r,i)=>[...r,ac(e,i)],[]);return e.normalize(o)}}function ac(e,t){const n=t.t||t.type;switch(n){case 3:{const o=t;return o.v||o.value}case 9:{const o=t;return o.v||o.value}case 4:{const o=t;return e.interpolate(e.named(o.k||o.key))}case 5:{const o=t;return e.interpolate(e.list(o.i!=null?o.i:o.index))}case 6:{const o=t,r=o.m||o.modifier;return e.linked(ac(e,o.k||o.key),r?ac(e,r):void 0,e.type)}case 7:{const o=t;return o.v||o.value}case 8:{const o=t;return o.v||o.value}default:throw new Error(`unhandled node type on format message part: ${n}`)}}const t1=e=>e;let Tr=Object.create(null);const $r=e=>je(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function n1(e,t={}){let n=!1;const o=t.onError||MP;return t.onError=r=>{n=!0,o(r)},{...tA(e,t),detectError:n}}const BA=(e,t)=>{if(!ue(e))throw On(wn.NOT_SUPPORT_NON_STRING_MESSAGE);{Le(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||t1)(e),r=Tr[o];if(r)return r;const{code:i,detectError:a}=n1(e,t),s=new Function(`return ${i}`)();return a?s:Tr[o]=s}};function NA(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&ue(e)){Le(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||t1)(e),r=Tr[o];if(r)return r;const{ast:i,detectError:a}=n1(e,{...t,location:!1,jit:!0}),s=wl(i);return a?s:Tr[o]=s}else{const n=e.cacheKey;if(n){const o=Tr[n];return o||(Tr[n]=wl(e))}else return wl(e)}}const lf=()=>"",pn=e=>nt(e);function cf(e,...t){const{fallbackFormat:n,postTranslation:o,unresolving:r,messageCompiler:i,fallbackLocale:a,messages:s}=e,[l,c]=sc(...t),d=Le(c.missingWarn)?c.missingWarn:e.missingWarn,u=Le(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,h=Le(c.escapeParameter)?c.escapeParameter:e.escapeParameter,g=!!c.resolvedMessage,f=ue(c.default)||Le(c.default)?Le(c.default)?i?l:()=>l:c.default:n?i?l:()=>l:"",b=n||f!=="",p=Ed(e,c);h&&zA(c);let[m,k,T]=g?[l,p,s[p]||{}]:o1(e,l,p,a,u,d),v=m,x=l;if(!g&&!(ue(v)||$r(v)||pn(v))&&b&&(v=f,x=v),!g&&(!(ue(v)||$r(v)||pn(v))||!ue(k)))return r?Fs:l;let A=!1;const y=()=>{A=!0},R=pn(v)?v:r1(e,l,k,v,x,y);if(A)return v;const P=jA(e,k,T,c),D=vA(P),W=FA(e,R,D),M=o?o(W,l):W;if(__INTLIFY_PROD_DEVTOOLS__){const j={timestamp:Date.now(),key:ue(l)?l:pn(v)?v.key:"",locale:k||(pn(v)?v.locale:""),format:ue(v)?v:pn(v)?v.source:"",message:M};j.meta=$t({},e.__meta,MA()||{}),kA(j)}return M}function zA(e){at(e.list)?e.list=e.list.map(t=>ue(t)?Uh(t):t):je(e.named)&&Object.keys(e.named).forEach(t=>{ue(e.named[t])&&(e.named[t]=Uh(e.named[t]))})}function o1(e,t,n,o,r,i){const{messages:a,onWarn:s,messageResolver:l,localeFallbacker:c}=e,d=c(e,o,n);let u={},h,g=null;const f="translate";for(let b=0;bo;return c.locale=n,c.key=t,c}const l=a(o,WA(e,n,r,o,s,i));return l.locale=n,l.key=t,l.source=o,l}function FA(e,t,n){return t(n)}function sc(...e){const[t,n,o]=e,r={};if(!ue(t)&&!xt(t)&&!pn(t)&&!$r(t))throw On(wn.INVALID_ARGUMENT);const i=xt(t)?String(t):(pn(t),t);return xt(n)?r.plural=n:ue(n)?r.default=n:Pe(n)&&!Ns(n)?r.named=n:at(n)&&(r.list=n),xt(o)?r.plural=o:ue(o)?r.default=o:Pe(o)&&$t(r,o),[i,r]}function WA(e,t,n,o,r,i){return{locale:t,key:n,warnHtmlMessage:r,onError:a=>{throw i&&i(a),a},onCacheKey:a=>vP(t,n,a)}}function jA(e,t,n,o){const{modifiers:r,pluralRules:i,messageResolver:a,fallbackLocale:s,fallbackWarn:l,missingWarn:c,fallbackContext:d}=e,h={locale:t,modifiers:r,pluralRules:i,messages:g=>{let f=a(n,g);if(f==null&&d){const[,,b]=o1(d,g,t,s,l,c);f=a(b,g)}if(ue(f)||$r(f)){let b=!1;const m=r1(e,g,t,f,g,()=>{b=!0});return b?lf:m}else return pn(f)?f:lf}};return e.processor&&(h.processor=e.processor),o.list&&(h.list=o.list),o.named&&(h.named=o.named),xt(o.plural)&&(h.pluralIndex=o.plural),h}function df(e,...t){const{datetimeFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__datetimeFormatters:s}=e,[l,c,d,u]=lc(...t),h=Le(d.missingWarn)?d.missingWarn:e.missingWarn;Le(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=Ed(e,d),b=a(e,r,f);if(!ue(l)||l==="")return new Intl.DateTimeFormat(f,u).format(c);let p={},m,k=null;const T="datetime format";for(let A=0;A{i1.includes(l)?a[l]=n[l]:i[l]=n[l]}),ue(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function uf(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__datetimeFormatters.has(i)&&o.__datetimeFormatters.delete(i)}}function hf(e,...t){const{numberFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__numberFormatters:s}=e,[l,c,d,u]=cc(...t),h=Le(d.missingWarn)?d.missingWarn:e.missingWarn;Le(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=Ed(e,d),b=a(e,r,f);if(!ue(l)||l==="")return new Intl.NumberFormat(f,u).format(c);let p={},m,k=null;const T="number format";for(let A=0;A{a1.includes(l)?a[l]=n[l]:i[l]=n[l]}),ue(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function ff(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__numberFormatters.has(i)&&o.__numberFormatters.delete(i)}}nA();/*! + */function nA(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(qn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const Io=[];Io[0]={w:[0],i:[3,0],"[":[4],o:[7]};Io[1]={w:[1],".":[2],"[":[4],o:[7]};Io[2]={w:[2],i:[3,0],0:[3,0]};Io[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};Io[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};Io[5]={"'":[4,0],o:8,l:[5,0]};Io[6]={'"':[4,0],o:8,l:[6,0]};const oA=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function rA(e){return oA.test(e)}function iA(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function aA(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function sA(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:rA(t)?iA(t):"*"+t}function lA(e){const t=[];let n=-1,o=0,r=0,i,a,s,l,c,d,u;const h=[];h[0]=()=>{a===void 0?a=s:a+=s},h[1]=()=>{a!==void 0&&(t.push(a),a=void 0)},h[2]=()=>{h[0](),r++},h[3]=()=>{if(r>0)r--,o=4,h[0]();else{if(r=0,a===void 0||(a=sA(a),a===!1))return!1;h[1]()}};function g(){const f=e[n+1];if(o===5&&f==="'"||o===6&&f==='"')return n++,s="\\"+f,h[0](),!0}for(;o!==null;)if(n++,i=e[n],!(i==="\\"&&g())){if(l=aA(i),u=Io[o],c=u[l]||u.l||8,c===8||(o=c[0],c[1]!==void 0&&(d=h[c[1]],d&&(s=i,d()===!1))))return;if(o===7)return t}}const Yh=new Map;function cA(e,t){return Ge(e)?e[t]:null}function dA(e,t){if(!Ge(e))return null;let n=Yh.get(t);if(n||(n=lA(t),n&&Yh.set(t,n)),!n)return null;const o=n.length;let r=e,i=0;for(;ie,hA=e=>"",fA="text",gA=e=>e.length===0?"":TP(e),mA=SP;function Jh(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function pA(e){const t=xt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(xt(e.named.count)||xt(e.named.n))?xt(e.named.count)?e.named.count:xt(e.named.n)?e.named.n:t:t}function bA(e,t){t.count||(t.count=e),t.n||(t.n=e)}function vA(e={}){const t=e.locale,n=pA(e),o=Ge(e.pluralRules)&&ue(t)&&nt(e.pluralRules[t])?e.pluralRules[t]:Jh,r=Ge(e.pluralRules)&&ue(t)&&nt(e.pluralRules[t])?Jh:void 0,i=m=>m[o(n,m.length,r)],a=e.list||[],s=m=>a[m],l=e.named||{};xt(e.pluralIndex)&&bA(n,l);const c=m=>l[m];function d(m){const k=nt(e.messages)?e.messages(m):Ge(e.messages)?e.messages[m]:!1;return k||(e.parent?e.parent.message(m):hA)}const u=m=>e.modifiers?e.modifiers[m]:uA,h=Pe(e.processor)&&nt(e.processor.normalize)?e.processor.normalize:gA,g=Pe(e.processor)&&nt(e.processor.interpolate)?e.processor.interpolate:mA,f=Pe(e.processor)&&ue(e.processor.type)?e.processor.type:fA,p={list:s,named:c,plural:i,linked:(m,...k)=>{const[T,v]=k;let x="text",A="";k.length===1?Ge(T)?(A=T.modifier||A,x=T.type||x):ue(T)&&(A=T||A):k.length===2&&(ue(T)&&(A=T||A),ue(v)&&(x=v||x));const y=d(m)(p),R=x==="vnode"&&at(y)&&A?y[0]:y;return A?u(A)(R,x):R},message:d,type:f,interpolate:g,normalize:h,values:$t({},a,l)};return p}let Bi=null;function yA(e){Bi=e}function CA(e,t,n){Bi&&Bi.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const kA=xA("function:translate");function xA(e){return t=>Bi&&Bi.emit(e,t)}const K0=Ad.__EXTEND_POINT__,zo=zs(K0),SA={NOT_FOUND_KEY:K0,FALLBACK_TO_TRANSLATE:zo(),CANNOT_FORMAT_NUMBER:zo(),FALLBACK_TO_NUMBER_FORMAT:zo(),CANNOT_FORMAT_DATE:zo(),FALLBACK_TO_DATE_FORMAT:zo(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:zo(),__EXTEND_POINT__:zo()},q0=Te.__EXTEND_POINT__,Fo=zs(q0),_n={INVALID_ARGUMENT:q0,INVALID_DATE_ARGUMENT:Fo(),INVALID_ISO_DATE_ARGUMENT:Fo(),NOT_SUPPORT_NON_STRING_MESSAGE:Fo(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:Fo(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:Fo(),NOT_SUPPORT_LOCALE_TYPE:Fo(),__EXTEND_POINT__:Fo()};function On(e){return Kr(e,null,void 0)}function Ed(e,t){return t.locale!=null?Qh(t.locale):Qh(e.locale)}let Tl;function Qh(e){if(ue(e))return e;if(nt(e)){if(e.resolvedOnce&&Tl!=null)return Tl;if(e.constructor.name==="Function"){const t=e();if(xP(t))throw On(_n.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Tl=t}else throw On(_n.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw On(_n.NOT_SUPPORT_LOCALE_TYPE)}function TA(e,t,n){return[...new Set([n,...at(t)?t:Ge(t)?Object.keys(t):ue(t)?[t]:[n]])]}function X0(e,t,n){const o=ue(n)?n:Hr,r=e;r.__localeChainCache||(r.__localeChainCache=new Map);let i=r.__localeChainCache.get(o);if(!i){i=[];let a=[n];for(;at(a);)a=ef(i,a,t);const s=at(t)||!Pe(t)?t:t.default?t.default:null;a=ue(s)?[s]:s,at(a)&&ef(i,a,!1),r.__localeChainCache.set(o,i)}return i}function ef(e,t,n){let o=!0;for(let r=0;r`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function AA(){return{upper:(e,t)=>t==="text"&&ue(e)?e.toUpperCase():t==="vnode"&&Ge(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&ue(e)?e.toLowerCase():t==="vnode"&&Ge(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&ue(e)?nf(e):t==="vnode"&&Ge(e)&&"__v_isVNode"in e?nf(e.children):e}}let Z0;function of(e){Z0=e}let Y0;function RA(e){Y0=e}let J0;function EA(e){J0=e}let Q0=null;const IA=e=>{Q0=e},MA=()=>Q0;let e1=null;const rf=e=>{e1=e},DA=()=>e1;let af=0;function OA(e={}){const t=nt(e.onWarn)?e.onWarn:wP,n=ue(e.version)?e.version:PA,o=ue(e.locale)||nt(e.locale)?e.locale:Hr,r=nt(o)?Hr:o,i=at(e.fallbackLocale)||Pe(e.fallbackLocale)||ue(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:r,a=Pe(e.messages)?e.messages:{[r]:{}},s=Pe(e.datetimeFormats)?e.datetimeFormats:{[r]:{}},l=Pe(e.numberFormats)?e.numberFormats:{[r]:{}},c=$t({},e.modifiers||{},AA()),d=e.pluralRules||{},u=nt(e.missing)?e.missing:null,h=Le(e.missingWarn)||ko(e.missingWarn)?e.missingWarn:!0,g=Le(e.fallbackWarn)||ko(e.fallbackWarn)?e.fallbackWarn:!0,f=!!e.fallbackFormat,b=!!e.unresolving,p=nt(e.postTranslation)?e.postTranslation:null,m=Pe(e.processor)?e.processor:null,k=Le(e.warnHtmlMessage)?e.warnHtmlMessage:!0,T=!!e.escapeParameter,v=nt(e.messageCompiler)?e.messageCompiler:Z0,x=nt(e.messageResolver)?e.messageResolver:Y0||cA,A=nt(e.localeFallbacker)?e.localeFallbacker:J0||TA,y=Ge(e.fallbackContext)?e.fallbackContext:void 0,R=e,P=Ge(R.__datetimeFormatters)?R.__datetimeFormatters:new Map,D=Ge(R.__numberFormatters)?R.__numberFormatters:new Map,W=Ge(R.__meta)?R.__meta:{};af++;const M={version:n,cid:af,locale:o,fallbackLocale:i,messages:a,modifiers:c,pluralRules:d,missing:u,missingWarn:h,fallbackWarn:g,fallbackFormat:f,unresolving:b,postTranslation:p,processor:m,warnHtmlMessage:k,escapeParameter:T,messageCompiler:v,messageResolver:x,localeFallbacker:A,fallbackContext:y,onWarn:t,__meta:W};return M.datetimeFormats=s,M.numberFormats=l,M.__datetimeFormatters=P,M.__numberFormatters=D,__INTLIFY_PROD_DEVTOOLS__&&CA(M,n,W),M}function Id(e,t,n,o,r){const{missing:i,onWarn:a}=e;if(i!==null){const s=i(e,n,t,r);return ue(s)?s:t}else return t}function ai(e,t,n){const o=e;o.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function LA(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function HA(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let o=n+1;o$A(n,e)}function $A(e,t){const n=t.b||t.body;if((n.t||n.type)===1){const o=n,r=o.c||o.cases;return e.plural(r.reduce((i,a)=>[...i,sf(e,a)],[]))}else return sf(e,n)}function sf(e,t){const n=t.s||t.static;if(n)return e.type==="text"?n:e.normalize([n]);{const o=(t.i||t.items).reduce((r,i)=>[...r,ac(e,i)],[]);return e.normalize(o)}}function ac(e,t){const n=t.t||t.type;switch(n){case 3:{const o=t;return o.v||o.value}case 9:{const o=t;return o.v||o.value}case 4:{const o=t;return e.interpolate(e.named(o.k||o.key))}case 5:{const o=t;return e.interpolate(e.list(o.i!=null?o.i:o.index))}case 6:{const o=t,r=o.m||o.modifier;return e.linked(ac(e,o.k||o.key),r?ac(e,r):void 0,e.type)}case 7:{const o=t;return o.v||o.value}case 8:{const o=t;return o.v||o.value}default:throw new Error(`unhandled node type on format message part: ${n}`)}}const t1=e=>e;let Tr=Object.create(null);const $r=e=>Ge(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function n1(e,t={}){let n=!1;const o=t.onError||MP;return t.onError=r=>{n=!0,o(r)},{...tA(e,t),detectError:n}}const BA=(e,t)=>{if(!ue(e))throw On(_n.NOT_SUPPORT_NON_STRING_MESSAGE);{Le(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||t1)(e),r=Tr[o];if(r)return r;const{code:i,detectError:a}=n1(e,t),s=new Function(`return ${i}`)();return a?s:Tr[o]=s}};function NA(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&ue(e)){Le(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||t1)(e),r=Tr[o];if(r)return r;const{ast:i,detectError:a}=n1(e,{...t,location:!1,jit:!0}),s=wl(i);return a?s:Tr[o]=s}else{const n=e.cacheKey;if(n){const o=Tr[n];return o||(Tr[n]=wl(e))}else return wl(e)}}const lf=()=>"",pn=e=>nt(e);function cf(e,...t){const{fallbackFormat:n,postTranslation:o,unresolving:r,messageCompiler:i,fallbackLocale:a,messages:s}=e,[l,c]=sc(...t),d=Le(c.missingWarn)?c.missingWarn:e.missingWarn,u=Le(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,h=Le(c.escapeParameter)?c.escapeParameter:e.escapeParameter,g=!!c.resolvedMessage,f=ue(c.default)||Le(c.default)?Le(c.default)?i?l:()=>l:c.default:n?i?l:()=>l:"",b=n||f!=="",p=Ed(e,c);h&&zA(c);let[m,k,T]=g?[l,p,s[p]||{}]:o1(e,l,p,a,u,d),v=m,x=l;if(!g&&!(ue(v)||$r(v)||pn(v))&&b&&(v=f,x=v),!g&&(!(ue(v)||$r(v)||pn(v))||!ue(k)))return r?Fs:l;let A=!1;const y=()=>{A=!0},R=pn(v)?v:r1(e,l,k,v,x,y);if(A)return v;const P=jA(e,k,T,c),D=vA(P),W=FA(e,R,D),M=o?o(W,l):W;if(__INTLIFY_PROD_DEVTOOLS__){const j={timestamp:Date.now(),key:ue(l)?l:pn(v)?v.key:"",locale:k||(pn(v)?v.locale:""),format:ue(v)?v:pn(v)?v.source:"",message:M};j.meta=$t({},e.__meta,MA()||{}),kA(j)}return M}function zA(e){at(e.list)?e.list=e.list.map(t=>ue(t)?Uh(t):t):Ge(e.named)&&Object.keys(e.named).forEach(t=>{ue(e.named[t])&&(e.named[t]=Uh(e.named[t]))})}function o1(e,t,n,o,r,i){const{messages:a,onWarn:s,messageResolver:l,localeFallbacker:c}=e,d=c(e,o,n);let u={},h,g=null;const f="translate";for(let b=0;bo;return c.locale=n,c.key=t,c}const l=a(o,WA(e,n,r,o,s,i));return l.locale=n,l.key=t,l.source=o,l}function FA(e,t,n){return t(n)}function sc(...e){const[t,n,o]=e,r={};if(!ue(t)&&!xt(t)&&!pn(t)&&!$r(t))throw On(_n.INVALID_ARGUMENT);const i=xt(t)?String(t):(pn(t),t);return xt(n)?r.plural=n:ue(n)?r.default=n:Pe(n)&&!Ns(n)?r.named=n:at(n)&&(r.list=n),xt(o)?r.plural=o:ue(o)?r.default=o:Pe(o)&&$t(r,o),[i,r]}function WA(e,t,n,o,r,i){return{locale:t,key:n,warnHtmlMessage:r,onError:a=>{throw i&&i(a),a},onCacheKey:a=>vP(t,n,a)}}function jA(e,t,n,o){const{modifiers:r,pluralRules:i,messageResolver:a,fallbackLocale:s,fallbackWarn:l,missingWarn:c,fallbackContext:d}=e,h={locale:t,modifiers:r,pluralRules:i,messages:g=>{let f=a(n,g);if(f==null&&d){const[,,b]=o1(d,g,t,s,l,c);f=a(b,g)}if(ue(f)||$r(f)){let b=!1;const m=r1(e,g,t,f,g,()=>{b=!0});return b?lf:m}else return pn(f)?f:lf}};return e.processor&&(h.processor=e.processor),o.list&&(h.list=o.list),o.named&&(h.named=o.named),xt(o.plural)&&(h.pluralIndex=o.plural),h}function df(e,...t){const{datetimeFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__datetimeFormatters:s}=e,[l,c,d,u]=lc(...t),h=Le(d.missingWarn)?d.missingWarn:e.missingWarn;Le(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=Ed(e,d),b=a(e,r,f);if(!ue(l)||l==="")return new Intl.DateTimeFormat(f,u).format(c);let p={},m,k=null;const T="datetime format";for(let A=0;A{i1.includes(l)?a[l]=n[l]:i[l]=n[l]}),ue(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function uf(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__datetimeFormatters.has(i)&&o.__datetimeFormatters.delete(i)}}function hf(e,...t){const{numberFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__numberFormatters:s}=e,[l,c,d,u]=cc(...t),h=Le(d.missingWarn)?d.missingWarn:e.missingWarn;Le(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=Ed(e,d),b=a(e,r,f);if(!ue(l)||l==="")return new Intl.NumberFormat(f,u).format(c);let p={},m,k=null;const T="number format";for(let A=0;A{a1.includes(l)?a[l]=n[l]:i[l]=n[l]}),ue(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function ff(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__numberFormatters.has(i)&&o.__numberFormatters.delete(i)}}nA();/*! * vue-i18n v9.14.0 * (c) 2024 kazuya kawaguchi * Released under the MIT License. - */const GA="9.14.0";function VA(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(qn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(qn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(qn().__INTLIFY_PROD_DEVTOOLS__=!1)}const s1=SA.__EXTEND_POINT__,Gn=zs(s1);Gn(),Gn(),Gn(),Gn(),Gn(),Gn(),Gn(),Gn(),Gn();const l1=wn.__EXTEND_POINT__,nn=zs(l1),St={UNEXPECTED_RETURN_TYPE:l1,INVALID_ARGUMENT:nn(),MUST_BE_CALL_SETUP_TOP:nn(),NOT_INSTALLED:nn(),NOT_AVAILABLE_IN_LEGACY_MODE:nn(),REQUIRED_VALUE:nn(),INVALID_VALUE:nn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:nn(),NOT_INSTALLED_WITH_PROVIDE:nn(),UNEXPECTED_ERROR:nn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:nn(),BRIDGE_SUPPORT_VUE_2_ONLY:nn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:nn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:nn(),__EXTEND_POINT__:nn()};function Et(e,...t){return Kr(e,null,void 0)}const dc=Eo("__translateVNode"),uc=Eo("__datetimeParts"),hc=Eo("__numberParts"),c1=Eo("__setPluralRules"),d1=Eo("__injectWithOption"),fc=Eo("__dispose");function Ni(e){if(!je(e))return e;for(const t in e)if(ts(e,t))if(!t.includes("."))je(e[t])&&Ni(e[t]);else{const n=t.split("."),o=n.length-1;let r=e,i=!1;for(let a=0;a{if("locale"in s&&"resource"in s){const{locale:l,resource:c}=s;l?(a[l]=a[l]||{},Da(c,a[l])):Da(c,a)}else ue(s)&&Da(JSON.parse(s),a)}),r==null&&i)for(const s in a)ts(a,s)&&Ni(a[s]);return a}function u1(e){return e.type}function h1(e,t,n){let o=je(t.messages)?t.messages:{};"__i18nGlobal"in n&&(o=Ws(e.locale.value,{messages:o,__i18n:n.__i18nGlobal}));const r=Object.keys(o);r.length&&r.forEach(i=>{e.mergeLocaleMessage(i,o[i])});{if(je(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(a=>{e.mergeDateTimeFormat(a,t.datetimeFormats[a])})}if(je(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(a=>{e.mergeNumberFormat(a,t.numberFormats[a])})}}}function gf(e){return me(Br,null,e,0)}const mf="__INTLIFY_META__",pf=()=>[],UA=()=>!1;let bf=0;function vf(e){return(t,n,o,r)=>e(n,o,rn()||void 0,r)}const KA=()=>{const e=rn();let t=null;return e&&(t=u1(e)[mf])?{[mf]:t}:null};function Md(e={},t){const{__root:n,__injectWithOption:o}=e,r=n===void 0,i=e.flatJson,a=es?V:ds,s=!!e.translateExistCompatible;let l=Le(e.inheritLocale)?e.inheritLocale:!0;const c=a(n&&l?n.locale.value:ue(e.locale)?e.locale:Hr),d=a(n&&l?n.fallbackLocale.value:ue(e.fallbackLocale)||at(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),u=a(Ws(c.value,e)),h=a(Pe(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),g=a(Pe(e.numberFormats)?e.numberFormats:{[c.value]:{}});let f=n?n.missingWarn:Le(e.missingWarn)||ko(e.missingWarn)?e.missingWarn:!0,b=n?n.fallbackWarn:Le(e.fallbackWarn)||ko(e.fallbackWarn)?e.fallbackWarn:!0,p=n?n.fallbackRoot:Le(e.fallbackRoot)?e.fallbackRoot:!0,m=!!e.fallbackFormat,k=nt(e.missing)?e.missing:null,T=nt(e.missing)?vf(e.missing):null,v=nt(e.postTranslation)?e.postTranslation:null,x=n?n.warnHtmlMessage:Le(e.warnHtmlMessage)?e.warnHtmlMessage:!0,A=!!e.escapeParameter;const y=n?n.modifiers:Pe(e.modifiers)?e.modifiers:{};let R=e.pluralRules||n&&n.pluralRules,P;P=(()=>{r&&rf(null);const L={version:GA,locale:c.value,fallbackLocale:d.value,messages:u.value,modifiers:y,pluralRules:R,missing:T===null?void 0:T,missingWarn:f,fallbackWarn:b,fallbackFormat:m,unresolving:!0,postTranslation:v===null?void 0:v,warnHtmlMessage:x,escapeParameter:A,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};L.datetimeFormats=h.value,L.numberFormats=g.value,L.__datetimeFormatters=Pe(P)?P.__datetimeFormatters:void 0,L.__numberFormatters=Pe(P)?P.__numberFormatters:void 0;const N=OA(L);return r&&rf(N),N})(),ai(P,c.value,d.value);function W(){return[c.value,d.value,u.value,h.value,g.value]}const M=z({get:()=>c.value,set:L=>{c.value=L,P.locale=c.value}}),j=z({get:()=>d.value,set:L=>{d.value=L,P.fallbackLocale=d.value,ai(P,c.value,L)}}),ee=z(()=>u.value),B=z(()=>h.value),X=z(()=>g.value);function $(){return nt(v)?v:null}function ie(L){v=L,P.postTranslation=L}function ve(){return k}function ye(L){L!==null&&(T=vf(L)),k=L,P.missing=T}const Ae=(L,N,pe,be,Qe,Ke)=>{W();let st;try{__INTLIFY_PROD_DEVTOOLS__,r||(P.fallbackContext=n?DA():void 0),st=L(P)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(P.fallbackContext=void 0)}if(pe!=="translate exists"&&xt(st)&&st===Fs||pe==="translate exists"&&!st){const[vt,Ut]=N();return n&&p?be(n):Qe(vt)}else{if(Ke(st))return st;throw Et(St.UNEXPECTED_RETURN_TYPE)}};function De(...L){return Ae(N=>Reflect.apply(cf,null,[N,...L]),()=>sc(...L),"translate",N=>Reflect.apply(N.t,N,[...L]),N=>N,N=>ue(N))}function ut(...L){const[N,pe,be]=L;if(be&&!je(be))throw Et(St.INVALID_ARGUMENT);return De(N,pe,$t({resolvedMessage:!0},be||{}))}function Je(...L){return Ae(N=>Reflect.apply(df,null,[N,...L]),()=>lc(...L),"datetime format",N=>Reflect.apply(N.d,N,[...L]),()=>tf,N=>ue(N))}function pt(...L){return Ae(N=>Reflect.apply(hf,null,[N,...L]),()=>cc(...L),"number format",N=>Reflect.apply(N.n,N,[...L]),()=>tf,N=>ue(N))}function _e(L){return L.map(N=>ue(N)||xt(N)||Le(N)?gf(String(N)):N)}const Dt={normalize:_e,interpolate:L=>L,type:"vnode"};function Ie(...L){return Ae(N=>{let pe;const be=N;try{be.processor=Dt,pe=Reflect.apply(cf,null,[be,...L])}finally{be.processor=null}return pe},()=>sc(...L),"translate",N=>N[dc](...L),N=>[gf(N)],N=>at(N))}function bt(...L){return Ae(N=>Reflect.apply(hf,null,[N,...L]),()=>cc(...L),"number format",N=>N[hc](...L),pf,N=>ue(N)||at(N))}function Bt(...L){return Ae(N=>Reflect.apply(df,null,[N,...L]),()=>lc(...L),"datetime format",N=>N[uc](...L),pf,N=>ue(N)||at(N))}function en(L){R=L,P.pluralRules=R}function E(L,N){return Ae(()=>{if(!L)return!1;const pe=ue(N)?N:c.value,be=J(pe),Qe=P.messageResolver(be,L);return s?Qe!=null:$r(Qe)||pn(Qe)||ue(Qe)},()=>[L],"translate exists",pe=>Reflect.apply(pe.te,pe,[L,N]),UA,pe=>Le(pe))}function _(L){let N=null;const pe=X0(P,d.value,c.value);for(let be=0;be{l&&(c.value=L,P.locale=L,ai(P,c.value,d.value))}),ot(n.fallbackLocale,L=>{l&&(d.value=L,P.fallbackLocale=L,ai(P,c.value,d.value))}));const q={id:bf,locale:M,fallbackLocale:j,get inheritLocale(){return l},set inheritLocale(L){l=L,L&&n&&(c.value=n.locale.value,d.value=n.fallbackLocale.value,ai(P,c.value,d.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:ee,get modifiers(){return y},get pluralRules(){return R||{}},get isGlobal(){return r},get missingWarn(){return f},set missingWarn(L){f=L,P.missingWarn=f},get fallbackWarn(){return b},set fallbackWarn(L){b=L,P.fallbackWarn=b},get fallbackRoot(){return p},set fallbackRoot(L){p=L},get fallbackFormat(){return m},set fallbackFormat(L){m=L,P.fallbackFormat=m},get warnHtmlMessage(){return x},set warnHtmlMessage(L){x=L,P.warnHtmlMessage=L},get escapeParameter(){return A},set escapeParameter(L){A=L,P.escapeParameter=L},t:De,getLocaleMessage:J,setLocaleMessage:K,mergeLocaleMessage:Z,getPostTranslationHandler:$,setPostTranslationHandler:ie,getMissingHandler:ve,setMissingHandler:ye,[c1]:en};return q.datetimeFormats=B,q.numberFormats=X,q.rt=ut,q.te=E,q.tm=H,q.d=Je,q.n=pt,q.getDateTimeFormat=le,q.setDateTimeFormat=C,q.mergeDateTimeFormat=w,q.getNumberFormat=I,q.setNumberFormat=Y,q.mergeNumberFormat=re,q[d1]=o,q[dc]=Ie,q[uc]=Bt,q[hc]=bt,q}function qA(e){const t=ue(e.locale)?e.locale:Hr,n=ue(e.fallbackLocale)||at(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,o=nt(e.missing)?e.missing:void 0,r=Le(e.silentTranslationWarn)||ko(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=Le(e.silentFallbackWarn)||ko(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=Le(e.fallbackRoot)?e.fallbackRoot:!0,s=!!e.formatFallbackMessages,l=Pe(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,d=nt(e.postTranslation)?e.postTranslation:void 0,u=ue(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,h=!!e.escapeParameterHtml,g=Le(e.sync)?e.sync:!0;let f=e.messages;if(Pe(e.sharedMessages)){const A=e.sharedMessages;f=Object.keys(A).reduce((R,P)=>{const D=R[P]||(R[P]={});return $t(D,A[P]),R},f||{})}const{__i18n:b,__root:p,__injectWithOption:m}=e,k=e.datetimeFormats,T=e.numberFormats,v=e.flatJson,x=e.translateExistCompatible;return{locale:t,fallbackLocale:n,messages:f,flatJson:v,datetimeFormats:k,numberFormats:T,missing:o,missingWarn:r,fallbackWarn:i,fallbackRoot:a,fallbackFormat:s,modifiers:l,pluralRules:c,postTranslation:d,warnHtmlMessage:u,escapeParameter:h,messageResolver:e.messageResolver,inheritLocale:g,translateExistCompatible:x,__i18n:b,__root:p,__injectWithOption:m}}function gc(e={},t){{const n=Md(qA(e)),{__extender:o}=e,r={id:n.id,get locale(){return n.locale.value},set locale(i){n.locale.value=i},get fallbackLocale(){return n.fallbackLocale.value},set fallbackLocale(i){n.fallbackLocale.value=i},get messages(){return n.messages.value},get datetimeFormats(){return n.datetimeFormats.value},get numberFormats(){return n.numberFormats.value},get availableLocales(){return n.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(i){},get missing(){return n.getMissingHandler()},set missing(i){n.setMissingHandler(i)},get silentTranslationWarn(){return Le(n.missingWarn)?!n.missingWarn:n.missingWarn},set silentTranslationWarn(i){n.missingWarn=Le(i)?!i:i},get silentFallbackWarn(){return Le(n.fallbackWarn)?!n.fallbackWarn:n.fallbackWarn},set silentFallbackWarn(i){n.fallbackWarn=Le(i)?!i:i},get modifiers(){return n.modifiers},get formatFallbackMessages(){return n.fallbackFormat},set formatFallbackMessages(i){n.fallbackFormat=i},get postTranslation(){return n.getPostTranslationHandler()},set postTranslation(i){n.setPostTranslationHandler(i)},get sync(){return n.inheritLocale},set sync(i){n.inheritLocale=i},get warnHtmlInMessage(){return n.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(i){n.warnHtmlMessage=i!=="off"},get escapeParameterHtml(){return n.escapeParameter},set escapeParameterHtml(i){n.escapeParameter=i},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(i){},get pluralizationRules(){return n.pluralRules||{}},__composer:n,t(...i){const[a,s,l]=i,c={};let d=null,u=null;if(!ue(a))throw Et(St.INVALID_ARGUMENT);const h=a;return ue(s)?c.locale=s:at(s)?d=s:Pe(s)&&(u=s),at(l)?d=l:Pe(l)&&(u=l),Reflect.apply(n.t,n,[h,d||u||{},c])},rt(...i){return Reflect.apply(n.rt,n,[...i])},tc(...i){const[a,s,l]=i,c={plural:1};let d=null,u=null;if(!ue(a))throw Et(St.INVALID_ARGUMENT);const h=a;return ue(s)?c.locale=s:xt(s)?c.plural=s:at(s)?d=s:Pe(s)&&(u=s),ue(l)?c.locale=l:at(l)?d=l:Pe(l)&&(u=l),Reflect.apply(n.t,n,[h,d||u||{},c])},te(i,a){return n.te(i,a)},tm(i){return n.tm(i)},getLocaleMessage(i){return n.getLocaleMessage(i)},setLocaleMessage(i,a){n.setLocaleMessage(i,a)},mergeLocaleMessage(i,a){n.mergeLocaleMessage(i,a)},d(...i){return Reflect.apply(n.d,n,[...i])},getDateTimeFormat(i){return n.getDateTimeFormat(i)},setDateTimeFormat(i,a){n.setDateTimeFormat(i,a)},mergeDateTimeFormat(i,a){n.mergeDateTimeFormat(i,a)},n(...i){return Reflect.apply(n.n,n,[...i])},getNumberFormat(i){return n.getNumberFormat(i)},setNumberFormat(i,a){n.setNumberFormat(i,a)},mergeNumberFormat(i,a){n.mergeNumberFormat(i,a)},getChoiceIndex(i,a){return-1}};return r.__extender=o,r}}const Dd={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function XA({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((o,r)=>[...o,...r.type===He?r.children:[r]],[]):t.reduce((n,o)=>{const r=e[o];return r&&(n[o]=r()),n},{})}function f1(e){return He}const ZA=de({name:"i18n-t",props:$t({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>xt(e)||!isNaN(e)}},Dd),setup(e,t){const{slots:n,attrs:o}=t,r=e.i18n||Yi({useScope:e.scope,__useComponent:!0});return()=>{const i=Object.keys(n).filter(u=>u!=="_"),a={};e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=ue(e.plural)?+e.plural:e.plural);const s=XA(t,i),l=r[dc](e.keypath,s,a),c=$t({},o),d=ue(e.tag)||je(e.tag)?e.tag:f1();return S(d,c,l)}}}),yf=ZA;function YA(e){return at(e)&&!ue(e[0])}function g1(e,t,n,o){const{slots:r,attrs:i}=t;return()=>{const a={part:!0};let s={};e.locale&&(a.locale=e.locale),ue(e.format)?a.key=e.format:je(e.format)&&(ue(e.format.key)&&(a.key=e.format.key),s=Object.keys(e.format).reduce((h,g)=>n.includes(g)?$t({},h,{[g]:e.format[g]}):h,{}));const l=o(e.value,a,s);let c=[a.key];at(l)?c=l.map((h,g)=>{const f=r[h.type],b=f?f({[h.type]:h.value,index:g,parts:l}):[h.value];return YA(b)&&(b[0].key=`${h.type}-${g}`),b}):ue(l)&&(c=[l]);const d=$t({},i),u=ue(e.tag)||je(e.tag)?e.tag:f1();return S(u,d,c)}}const JA=de({name:"i18n-n",props:$t({value:{type:Number,required:!0},format:{type:[String,Object]}},Dd),setup(e,t){const n=e.i18n||Yi({useScope:e.scope,__useComponent:!0});return g1(e,t,a1,(...o)=>n[hc](...o))}}),Cf=JA,QA=de({name:"i18n-d",props:$t({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Dd),setup(e,t){const n=e.i18n||Yi({useScope:e.scope,__useComponent:!0});return g1(e,t,i1,(...o)=>n[uc](...o))}}),kf=QA;function eR(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const o=n.__getInstance(t);return o!=null?o.__composer:e.global.__composer}}function tR(e){const t=a=>{const{instance:s,modifiers:l,value:c}=a;if(!s||!s.$)throw Et(St.UNEXPECTED_ERROR);const d=eR(e,s.$),u=xf(c);return[Reflect.apply(d.t,d,[...Sf(u)]),d]};return{created:(a,s)=>{const[l,c]=t(s);es&&e.global===c&&(a.__i18nWatcher=ot(c.locale,()=>{s.instance&&s.instance.$forceUpdate()})),a.__composer=c,a.textContent=l},unmounted:a=>{es&&a.__i18nWatcher&&(a.__i18nWatcher(),a.__i18nWatcher=void 0,delete a.__i18nWatcher),a.__composer&&(a.__composer=void 0,delete a.__composer)},beforeUpdate:(a,{value:s})=>{if(a.__composer){const l=a.__composer,c=xf(s);a.textContent=Reflect.apply(l.t,l,[...Sf(c)])}},getSSRProps:a=>{const[s]=t(a);return{textContent:s}}}}function xf(e){if(ue(e))return{path:e};if(Pe(e)){if(!("path"in e))throw Et(St.REQUIRED_VALUE,"path");return e}else throw Et(St.INVALID_VALUE)}function Sf(e){const{path:t,locale:n,args:o,choice:r,plural:i}=e,a={},s=o||{};return ue(n)&&(a.locale=n),xt(r)&&(a.plural=r),xt(i)&&(a.plural=i),[t,s,a]}function nR(e,t,...n){const o=Pe(n[0])?n[0]:{},r=!!o.useI18nComponentName;(Le(o.globalInstall)?o.globalInstall:!0)&&([r?"i18n":yf.name,"I18nT"].forEach(a=>e.component(a,yf)),[Cf.name,"I18nN"].forEach(a=>e.component(a,Cf)),[kf.name,"I18nD"].forEach(a=>e.component(a,kf))),e.directive("t",tR(t))}function oR(e,t,n){return{beforeCreate(){const o=rn();if(!o)throw Et(St.UNEXPECTED_ERROR);const r=this.$options;if(r.i18n){const i=r.i18n;if(r.__i18n&&(i.__i18n=r.__i18n),i.__root=t,this===this.$root)this.$i18n=Tf(e,i);else{i.__injectWithOption=!0,i.__extender=n.__vueI18nExtend,this.$i18n=gc(i);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(r.__i18n)if(this===this.$root)this.$i18n=Tf(e,r);else{this.$i18n=gc({__i18n:r.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const i=this.$i18n;i.__extender&&(i.__disposer=i.__extender(this.$i18n))}else this.$i18n=e;r.__i18nGlobal&&h1(t,r,r),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$tc=(...i)=>this.$i18n.tc(...i),this.$te=(i,a)=>this.$i18n.te(i,a),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i),n.__setInstance(o,this.$i18n)},mounted(){},unmounted(){const o=rn();if(!o)throw Et(St.UNEXPECTED_ERROR);const r=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,r.__disposer&&(r.__disposer(),delete r.__disposer,delete r.__extender),n.__deleteInstance(o),delete this.$i18n}}}function Tf(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[c1](t.pluralizationRules||e.pluralizationRules);const n=Ws(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(o=>e.mergeLocaleMessage(o,n[o])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(o=>e.mergeDateTimeFormat(o,t.datetimeFormats[o])),t.numberFormats&&Object.keys(t.numberFormats).forEach(o=>e.mergeNumberFormat(o,t.numberFormats[o])),e}const rR=Eo("global-vue-i18n");function iR(e={},t){const n=__VUE_I18N_LEGACY_API__&&Le(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,o=Le(e.globalInjection)?e.globalInjection:!0,r=__VUE_I18N_LEGACY_API__&&n?!!e.allowComposition:!0,i=new Map,[a,s]=aR(e,n),l=Eo("");function c(h){return i.get(h)||null}function d(h,g){i.set(h,g)}function u(h){i.delete(h)}{const h={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return r},async install(g,...f){if(g.__VUE_I18N_SYMBOL__=l,g.provide(g.__VUE_I18N_SYMBOL__,h),Pe(f[0])){const m=f[0];h.__composerExtend=m.__composerExtend,h.__vueI18nExtend=m.__vueI18nExtend}let b=null;!n&&o&&(b=mR(g,h.global)),__VUE_I18N_FULL_INSTALL__&&nR(g,h,...f),__VUE_I18N_LEGACY_API__&&n&&g.mixin(oR(s,s.__composer,h));const p=g.unmount;g.unmount=()=>{b&&b(),h.dispose(),p()}},get global(){return s},dispose(){a.stop()},__instances:i,__getInstance:c,__setInstance:d,__deleteInstance:u};return h}}function Yi(e={}){const t=rn();if(t==null)throw Et(St.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Et(St.NOT_INSTALLED);const n=sR(t),o=cR(n),r=u1(t),i=lR(e,r);if(__VUE_I18N_LEGACY_API__&&n.mode==="legacy"&&!e.__useComponent){if(!n.allowComposition)throw Et(St.NOT_AVAILABLE_IN_LEGACY_MODE);return fR(t,i,o,e)}if(i==="global")return h1(o,e,r),o;if(i==="parent"){let l=dR(n,t,e.__useComponent);return l==null&&(l=o),l}const a=n;let s=a.__getInstance(t);if(s==null){const l=$t({},e);"__i18n"in r&&(l.__i18n=r.__i18n),o&&(l.__root=o),s=Md(l),a.__composerExtend&&(s[fc]=a.__composerExtend(s)),hR(a,t,s),a.__setInstance(t,s)}return s}function aR(e,t,n){const o=Sc();{const r=__VUE_I18N_LEGACY_API__&&t?o.run(()=>gc(e)):o.run(()=>Md(e));if(r==null)throw Et(St.UNEXPECTED_ERROR);return[o,r]}}function sR(e){{const t=Me(e.isCE?rR:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Et(e.isCE?St.NOT_INSTALLED_WITH_PROVIDE:St.UNEXPECTED_ERROR);return t}}function lR(e,t){return Ns(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function cR(e){return e.mode==="composition"?e.global:e.global.__composer}function dR(e,t,n=!1){let o=null;const r=t.root;let i=uR(t,n);for(;i!=null;){const a=e;if(e.mode==="composition")o=a.__getInstance(i);else if(__VUE_I18N_LEGACY_API__){const s=a.__getInstance(i);s!=null&&(o=s.__composer,n&&o&&!o[d1]&&(o=null))}if(o!=null||r===i)break;i=i.parent}return o}function uR(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function hR(e,t,n){It(()=>{},t),Bc(()=>{const o=n;e.__deleteInstance(t);const r=o[fc];r&&(r(),delete o[fc])},t)}function fR(e,t,n,o={}){const r=t==="local",i=ds(null);if(r&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw Et(St.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const a=Le(o.inheritLocale)?o.inheritLocale:!ue(o.locale),s=V(!r||a?n.locale.value:ue(o.locale)?o.locale:Hr),l=V(!r||a?n.fallbackLocale.value:ue(o.fallbackLocale)||at(o.fallbackLocale)||Pe(o.fallbackLocale)||o.fallbackLocale===!1?o.fallbackLocale:s.value),c=V(Ws(s.value,o)),d=V(Pe(o.datetimeFormats)?o.datetimeFormats:{[s.value]:{}}),u=V(Pe(o.numberFormats)?o.numberFormats:{[s.value]:{}}),h=r?n.missingWarn:Le(o.missingWarn)||ko(o.missingWarn)?o.missingWarn:!0,g=r?n.fallbackWarn:Le(o.fallbackWarn)||ko(o.fallbackWarn)?o.fallbackWarn:!0,f=r?n.fallbackRoot:Le(o.fallbackRoot)?o.fallbackRoot:!0,b=!!o.fallbackFormat,p=nt(o.missing)?o.missing:null,m=nt(o.postTranslation)?o.postTranslation:null,k=r?n.warnHtmlMessage:Le(o.warnHtmlMessage)?o.warnHtmlMessage:!0,T=!!o.escapeParameter,v=r?n.modifiers:Pe(o.modifiers)?o.modifiers:{},x=o.pluralRules||r&&n.pluralRules;function A(){return[s.value,l.value,c.value,d.value,u.value]}const y=z({get:()=>i.value?i.value.locale.value:s.value,set:_=>{i.value&&(i.value.locale.value=_),s.value=_}}),R=z({get:()=>i.value?i.value.fallbackLocale.value:l.value,set:_=>{i.value&&(i.value.fallbackLocale.value=_),l.value=_}}),P=z(()=>i.value?i.value.messages.value:c.value),D=z(()=>d.value),W=z(()=>u.value);function M(){return i.value?i.value.getPostTranslationHandler():m}function j(_){i.value&&i.value.setPostTranslationHandler(_)}function ee(){return i.value?i.value.getMissingHandler():p}function B(_){i.value&&i.value.setMissingHandler(_)}function X(_){return A(),_()}function $(..._){return i.value?X(()=>Reflect.apply(i.value.t,null,[..._])):X(()=>"")}function ie(..._){return i.value?Reflect.apply(i.value.rt,null,[..._]):""}function ve(..._){return i.value?X(()=>Reflect.apply(i.value.d,null,[..._])):X(()=>"")}function ye(..._){return i.value?X(()=>Reflect.apply(i.value.n,null,[..._])):X(()=>"")}function Ae(_){return i.value?i.value.tm(_):{}}function De(_,H){return i.value?i.value.te(_,H):!1}function ut(_){return i.value?i.value.getLocaleMessage(_):{}}function Je(_,H){i.value&&(i.value.setLocaleMessage(_,H),c.value[_]=H)}function pt(_,H){i.value&&i.value.mergeLocaleMessage(_,H)}function _e(_){return i.value?i.value.getDateTimeFormat(_):{}}function Oe(_,H){i.value&&(i.value.setDateTimeFormat(_,H),d.value[_]=H)}function Dt(_,H){i.value&&i.value.mergeDateTimeFormat(_,H)}function Ie(_){return i.value?i.value.getNumberFormat(_):{}}function bt(_,H){i.value&&(i.value.setNumberFormat(_,H),u.value[_]=H)}function Bt(_,H){i.value&&i.value.mergeNumberFormat(_,H)}const en={get id(){return i.value?i.value.id:-1},locale:y,fallbackLocale:R,messages:P,datetimeFormats:D,numberFormats:W,get inheritLocale(){return i.value?i.value.inheritLocale:a},set inheritLocale(_){i.value&&(i.value.inheritLocale=_)},get availableLocales(){return i.value?i.value.availableLocales:Object.keys(c.value)},get modifiers(){return i.value?i.value.modifiers:v},get pluralRules(){return i.value?i.value.pluralRules:x},get isGlobal(){return i.value?i.value.isGlobal:!1},get missingWarn(){return i.value?i.value.missingWarn:h},set missingWarn(_){i.value&&(i.value.missingWarn=_)},get fallbackWarn(){return i.value?i.value.fallbackWarn:g},set fallbackWarn(_){i.value&&(i.value.missingWarn=_)},get fallbackRoot(){return i.value?i.value.fallbackRoot:f},set fallbackRoot(_){i.value&&(i.value.fallbackRoot=_)},get fallbackFormat(){return i.value?i.value.fallbackFormat:b},set fallbackFormat(_){i.value&&(i.value.fallbackFormat=_)},get warnHtmlMessage(){return i.value?i.value.warnHtmlMessage:k},set warnHtmlMessage(_){i.value&&(i.value.warnHtmlMessage=_)},get escapeParameter(){return i.value?i.value.escapeParameter:T},set escapeParameter(_){i.value&&(i.value.escapeParameter=_)},t:$,getPostTranslationHandler:M,setPostTranslationHandler:j,getMissingHandler:ee,setMissingHandler:B,rt:ie,d:ve,n:ye,tm:Ae,te:De,getLocaleMessage:ut,setLocaleMessage:Je,mergeLocaleMessage:pt,getDateTimeFormat:_e,setDateTimeFormat:Oe,mergeDateTimeFormat:Dt,getNumberFormat:Ie,setNumberFormat:bt,mergeNumberFormat:Bt};function E(_){_.locale.value=s.value,_.fallbackLocale.value=l.value,Object.keys(c.value).forEach(H=>{_.mergeLocaleMessage(H,c.value[H])}),Object.keys(d.value).forEach(H=>{_.mergeDateTimeFormat(H,d.value[H])}),Object.keys(u.value).forEach(H=>{_.mergeNumberFormat(H,u.value[H])}),_.escapeParameter=T,_.fallbackFormat=b,_.fallbackRoot=f,_.fallbackWarn=g,_.missingWarn=h,_.warnHtmlMessage=k}return Nn(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw Et(St.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const _=i.value=e.proxy.$i18n.__composer;t==="global"?(s.value=_.locale.value,l.value=_.fallbackLocale.value,c.value=_.messages.value,d.value=_.datetimeFormats.value,u.value=_.numberFormats.value):r&&E(_)}),en}const gR=["locale","fallbackLocale","availableLocales"],wf=["t","rt","d","n","tm","te"];function mR(e,t){const n=Object.create(null);return gR.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i)throw Et(St.UNEXPECTED_ERROR);const a=ct(i.value)?{get(){return i.value.value},set(s){i.value.value=s}}:{get(){return i.get&&i.get()}};Object.defineProperty(n,r,a)}),e.config.globalProperties.$i18n=n,wf.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i||!i.value)throw Et(St.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,i)}),()=>{delete e.config.globalProperties.$i18n,wf.forEach(r=>{delete e.config.globalProperties[`$${r}`]})}}VA();__INTLIFY_JIT_COMPILATION__?of(NA):of(BA);RA(dA);EA(X0);if(__INTLIFY_PROD_DEVTOOLS__){const e=qn();e.__INTLIFY__=!0,yA(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const pR=de({__name:"DictViewer",props:{item:{}},emits:["tag-click"],setup(e,{emit:t}){const n=e,o=t,r=Yi(),i=c_(),a=z(()=>n.item.content.replace(/\\t/g," ".repeat(4)).replace(/\\n/g,"
")),s=z(()=>new URL(`#${n.item.id}`,location.href).toString());async function l(u){const{copy:h,isSupported:g}=bP({source:u,legacy:!0});if(!g){i.error(r.t("error"));return}await h(),i.success(r.t("copied"))}function c(u){l(s.value)}function d(u){l([u.title,"",...a.value.split("
"),"",`${r.t("copy_from")}: ${r.t("title")}`].join(`\r -`))}return It(()=>{location.replace(s.value)}),(u,h)=>{const g=M_,f=rc,b=Qa,p=qb,m=yd;return Fe(),wt(p,{vertical:""},{default:Se(()=>[me(g,null,{default:Se(()=>[me(ic,{item:u.item},null,8,["item"])]),_:1}),me(f,{class:"whitespace-pre-wrap",innerHTML:Ne(a)},null,8,["innerHTML"]),me(p,{class:"mt-10 items-end",justify:"space-between"},{default:Se(()=>[me(p,{size:"small"},{default:Se(()=>[me(f,null,{default:Se(()=>[_t(Tn(u.$t("tags"))+": ",1)]),_:1}),(Fe(!0),bn(He,null,_a(u.item.tags,k=>(Fe(),wt(b,{text:"",type:"info",onClick:T=>o("tag-click",k)},{default:Se(()=>[_t(Tn(k),1)]),_:2},1032,["onClick"]))),256))]),_:1}),me(p,null,{default:Se(()=>[u.item.link?(Fe(),wt(b,{key:0,href:u.item.link,tag:"a"},{icon:Se(()=>[me(m,{component:Ne(j_)},null,8,["component"])]),_:1},8,["href"])):Ky("",!0),me(b,{onClick:h[0]||(h[0]=k=>d(u.item))},{icon:Se(()=>[me(m,{component:Ne(q_)},null,8,["component"])]),_:1}),me(b,{onClick:h[1]||(h[1]=k=>c(u.item))},{icon:Se(()=>[me(m,{component:Ne(aP)},null,8,["component"])]),_:1})]),_:1})]),_:1})]),_:1})}}});/*! + */const GA="9.14.0";function VA(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(qn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(qn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(qn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(qn().__INTLIFY_PROD_DEVTOOLS__=!1)}const s1=SA.__EXTEND_POINT__,Gn=zs(s1);Gn(),Gn(),Gn(),Gn(),Gn(),Gn(),Gn(),Gn(),Gn();const l1=_n.__EXTEND_POINT__,nn=zs(l1),St={UNEXPECTED_RETURN_TYPE:l1,INVALID_ARGUMENT:nn(),MUST_BE_CALL_SETUP_TOP:nn(),NOT_INSTALLED:nn(),NOT_AVAILABLE_IN_LEGACY_MODE:nn(),REQUIRED_VALUE:nn(),INVALID_VALUE:nn(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:nn(),NOT_INSTALLED_WITH_PROVIDE:nn(),UNEXPECTED_ERROR:nn(),NOT_COMPATIBLE_LEGACY_VUE_I18N:nn(),BRIDGE_SUPPORT_VUE_2_ONLY:nn(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:nn(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:nn(),__EXTEND_POINT__:nn()};function Et(e,...t){return Kr(e,null,void 0)}const dc=Eo("__translateVNode"),uc=Eo("__datetimeParts"),hc=Eo("__numberParts"),c1=Eo("__setPluralRules"),d1=Eo("__injectWithOption"),fc=Eo("__dispose");function Ni(e){if(!Ge(e))return e;for(const t in e)if(ts(e,t))if(!t.includes("."))Ge(e[t])&&Ni(e[t]);else{const n=t.split("."),o=n.length-1;let r=e,i=!1;for(let a=0;a{if("locale"in s&&"resource"in s){const{locale:l,resource:c}=s;l?(a[l]=a[l]||{},Da(c,a[l])):Da(c,a)}else ue(s)&&Da(JSON.parse(s),a)}),r==null&&i)for(const s in a)ts(a,s)&&Ni(a[s]);return a}function u1(e){return e.type}function h1(e,t,n){let o=Ge(t.messages)?t.messages:{};"__i18nGlobal"in n&&(o=Ws(e.locale.value,{messages:o,__i18n:n.__i18nGlobal}));const r=Object.keys(o);r.length&&r.forEach(i=>{e.mergeLocaleMessage(i,o[i])});{if(Ge(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(a=>{e.mergeDateTimeFormat(a,t.datetimeFormats[a])})}if(Ge(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(a=>{e.mergeNumberFormat(a,t.numberFormats[a])})}}}function gf(e){return me(Br,null,e,0)}const mf="__INTLIFY_META__",pf=()=>[],UA=()=>!1;let bf=0;function vf(e){return(t,n,o,r)=>e(n,o,rn()||void 0,r)}const KA=()=>{const e=rn();let t=null;return e&&(t=u1(e)[mf])?{[mf]:t}:null};function Md(e={},t){const{__root:n,__injectWithOption:o}=e,r=n===void 0,i=e.flatJson,a=es?V:ds,s=!!e.translateExistCompatible;let l=Le(e.inheritLocale)?e.inheritLocale:!0;const c=a(n&&l?n.locale.value:ue(e.locale)?e.locale:Hr),d=a(n&&l?n.fallbackLocale.value:ue(e.fallbackLocale)||at(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),u=a(Ws(c.value,e)),h=a(Pe(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),g=a(Pe(e.numberFormats)?e.numberFormats:{[c.value]:{}});let f=n?n.missingWarn:Le(e.missingWarn)||ko(e.missingWarn)?e.missingWarn:!0,b=n?n.fallbackWarn:Le(e.fallbackWarn)||ko(e.fallbackWarn)?e.fallbackWarn:!0,p=n?n.fallbackRoot:Le(e.fallbackRoot)?e.fallbackRoot:!0,m=!!e.fallbackFormat,k=nt(e.missing)?e.missing:null,T=nt(e.missing)?vf(e.missing):null,v=nt(e.postTranslation)?e.postTranslation:null,x=n?n.warnHtmlMessage:Le(e.warnHtmlMessage)?e.warnHtmlMessage:!0,A=!!e.escapeParameter;const y=n?n.modifiers:Pe(e.modifiers)?e.modifiers:{};let R=e.pluralRules||n&&n.pluralRules,P;P=(()=>{r&&rf(null);const L={version:GA,locale:c.value,fallbackLocale:d.value,messages:u.value,modifiers:y,pluralRules:R,missing:T===null?void 0:T,missingWarn:f,fallbackWarn:b,fallbackFormat:m,unresolving:!0,postTranslation:v===null?void 0:v,warnHtmlMessage:x,escapeParameter:A,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};L.datetimeFormats=h.value,L.numberFormats=g.value,L.__datetimeFormatters=Pe(P)?P.__datetimeFormatters:void 0,L.__numberFormatters=Pe(P)?P.__numberFormatters:void 0;const N=OA(L);return r&&rf(N),N})(),ai(P,c.value,d.value);function W(){return[c.value,d.value,u.value,h.value,g.value]}const M=z({get:()=>c.value,set:L=>{c.value=L,P.locale=c.value}}),j=z({get:()=>d.value,set:L=>{d.value=L,P.fallbackLocale=d.value,ai(P,c.value,L)}}),ee=z(()=>u.value),B=z(()=>h.value),X=z(()=>g.value);function $(){return nt(v)?v:null}function ie(L){v=L,P.postTranslation=L}function ve(){return k}function ye(L){L!==null&&(T=vf(L)),k=L,P.missing=T}const Ae=(L,N,pe,be,Qe,Ke)=>{W();let st;try{__INTLIFY_PROD_DEVTOOLS__,r||(P.fallbackContext=n?DA():void 0),st=L(P)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(P.fallbackContext=void 0)}if(pe!=="translate exists"&&xt(st)&&st===Fs||pe==="translate exists"&&!st){const[vt,Ut]=N();return n&&p?be(n):Qe(vt)}else{if(Ke(st))return st;throw Et(St.UNEXPECTED_RETURN_TYPE)}};function De(...L){return Ae(N=>Reflect.apply(cf,null,[N,...L]),()=>sc(...L),"translate",N=>Reflect.apply(N.t,N,[...L]),N=>N,N=>ue(N))}function ut(...L){const[N,pe,be]=L;if(be&&!Ge(be))throw Et(St.INVALID_ARGUMENT);return De(N,pe,$t({resolvedMessage:!0},be||{}))}function Je(...L){return Ae(N=>Reflect.apply(df,null,[N,...L]),()=>lc(...L),"datetime format",N=>Reflect.apply(N.d,N,[...L]),()=>tf,N=>ue(N))}function pt(...L){return Ae(N=>Reflect.apply(hf,null,[N,...L]),()=>cc(...L),"number format",N=>Reflect.apply(N.n,N,[...L]),()=>tf,N=>ue(N))}function _e(L){return L.map(N=>ue(N)||xt(N)||Le(N)?gf(String(N)):N)}const Dt={normalize:_e,interpolate:L=>L,type:"vnode"};function Ie(...L){return Ae(N=>{let pe;const be=N;try{be.processor=Dt,pe=Reflect.apply(cf,null,[be,...L])}finally{be.processor=null}return pe},()=>sc(...L),"translate",N=>N[dc](...L),N=>[gf(N)],N=>at(N))}function bt(...L){return Ae(N=>Reflect.apply(hf,null,[N,...L]),()=>cc(...L),"number format",N=>N[hc](...L),pf,N=>ue(N)||at(N))}function Bt(...L){return Ae(N=>Reflect.apply(df,null,[N,...L]),()=>lc(...L),"datetime format",N=>N[uc](...L),pf,N=>ue(N)||at(N))}function en(L){R=L,P.pluralRules=R}function E(L,N){return Ae(()=>{if(!L)return!1;const pe=ue(N)?N:c.value,be=J(pe),Qe=P.messageResolver(be,L);return s?Qe!=null:$r(Qe)||pn(Qe)||ue(Qe)},()=>[L],"translate exists",pe=>Reflect.apply(pe.te,pe,[L,N]),UA,pe=>Le(pe))}function _(L){let N=null;const pe=X0(P,d.value,c.value);for(let be=0;be{l&&(c.value=L,P.locale=L,ai(P,c.value,d.value))}),ot(n.fallbackLocale,L=>{l&&(d.value=L,P.fallbackLocale=L,ai(P,c.value,d.value))}));const q={id:bf,locale:M,fallbackLocale:j,get inheritLocale(){return l},set inheritLocale(L){l=L,L&&n&&(c.value=n.locale.value,d.value=n.fallbackLocale.value,ai(P,c.value,d.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:ee,get modifiers(){return y},get pluralRules(){return R||{}},get isGlobal(){return r},get missingWarn(){return f},set missingWarn(L){f=L,P.missingWarn=f},get fallbackWarn(){return b},set fallbackWarn(L){b=L,P.fallbackWarn=b},get fallbackRoot(){return p},set fallbackRoot(L){p=L},get fallbackFormat(){return m},set fallbackFormat(L){m=L,P.fallbackFormat=m},get warnHtmlMessage(){return x},set warnHtmlMessage(L){x=L,P.warnHtmlMessage=L},get escapeParameter(){return A},set escapeParameter(L){A=L,P.escapeParameter=L},t:De,getLocaleMessage:J,setLocaleMessage:K,mergeLocaleMessage:Z,getPostTranslationHandler:$,setPostTranslationHandler:ie,getMissingHandler:ve,setMissingHandler:ye,[c1]:en};return q.datetimeFormats=B,q.numberFormats=X,q.rt=ut,q.te=E,q.tm=H,q.d=Je,q.n=pt,q.getDateTimeFormat=le,q.setDateTimeFormat=C,q.mergeDateTimeFormat=w,q.getNumberFormat=I,q.setNumberFormat=Y,q.mergeNumberFormat=re,q[d1]=o,q[dc]=Ie,q[uc]=Bt,q[hc]=bt,q}function qA(e){const t=ue(e.locale)?e.locale:Hr,n=ue(e.fallbackLocale)||at(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,o=nt(e.missing)?e.missing:void 0,r=Le(e.silentTranslationWarn)||ko(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=Le(e.silentFallbackWarn)||ko(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=Le(e.fallbackRoot)?e.fallbackRoot:!0,s=!!e.formatFallbackMessages,l=Pe(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,d=nt(e.postTranslation)?e.postTranslation:void 0,u=ue(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,h=!!e.escapeParameterHtml,g=Le(e.sync)?e.sync:!0;let f=e.messages;if(Pe(e.sharedMessages)){const A=e.sharedMessages;f=Object.keys(A).reduce((R,P)=>{const D=R[P]||(R[P]={});return $t(D,A[P]),R},f||{})}const{__i18n:b,__root:p,__injectWithOption:m}=e,k=e.datetimeFormats,T=e.numberFormats,v=e.flatJson,x=e.translateExistCompatible;return{locale:t,fallbackLocale:n,messages:f,flatJson:v,datetimeFormats:k,numberFormats:T,missing:o,missingWarn:r,fallbackWarn:i,fallbackRoot:a,fallbackFormat:s,modifiers:l,pluralRules:c,postTranslation:d,warnHtmlMessage:u,escapeParameter:h,messageResolver:e.messageResolver,inheritLocale:g,translateExistCompatible:x,__i18n:b,__root:p,__injectWithOption:m}}function gc(e={},t){{const n=Md(qA(e)),{__extender:o}=e,r={id:n.id,get locale(){return n.locale.value},set locale(i){n.locale.value=i},get fallbackLocale(){return n.fallbackLocale.value},set fallbackLocale(i){n.fallbackLocale.value=i},get messages(){return n.messages.value},get datetimeFormats(){return n.datetimeFormats.value},get numberFormats(){return n.numberFormats.value},get availableLocales(){return n.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(i){},get missing(){return n.getMissingHandler()},set missing(i){n.setMissingHandler(i)},get silentTranslationWarn(){return Le(n.missingWarn)?!n.missingWarn:n.missingWarn},set silentTranslationWarn(i){n.missingWarn=Le(i)?!i:i},get silentFallbackWarn(){return Le(n.fallbackWarn)?!n.fallbackWarn:n.fallbackWarn},set silentFallbackWarn(i){n.fallbackWarn=Le(i)?!i:i},get modifiers(){return n.modifiers},get formatFallbackMessages(){return n.fallbackFormat},set formatFallbackMessages(i){n.fallbackFormat=i},get postTranslation(){return n.getPostTranslationHandler()},set postTranslation(i){n.setPostTranslationHandler(i)},get sync(){return n.inheritLocale},set sync(i){n.inheritLocale=i},get warnHtmlInMessage(){return n.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(i){n.warnHtmlMessage=i!=="off"},get escapeParameterHtml(){return n.escapeParameter},set escapeParameterHtml(i){n.escapeParameter=i},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(i){},get pluralizationRules(){return n.pluralRules||{}},__composer:n,t(...i){const[a,s,l]=i,c={};let d=null,u=null;if(!ue(a))throw Et(St.INVALID_ARGUMENT);const h=a;return ue(s)?c.locale=s:at(s)?d=s:Pe(s)&&(u=s),at(l)?d=l:Pe(l)&&(u=l),Reflect.apply(n.t,n,[h,d||u||{},c])},rt(...i){return Reflect.apply(n.rt,n,[...i])},tc(...i){const[a,s,l]=i,c={plural:1};let d=null,u=null;if(!ue(a))throw Et(St.INVALID_ARGUMENT);const h=a;return ue(s)?c.locale=s:xt(s)?c.plural=s:at(s)?d=s:Pe(s)&&(u=s),ue(l)?c.locale=l:at(l)?d=l:Pe(l)&&(u=l),Reflect.apply(n.t,n,[h,d||u||{},c])},te(i,a){return n.te(i,a)},tm(i){return n.tm(i)},getLocaleMessage(i){return n.getLocaleMessage(i)},setLocaleMessage(i,a){n.setLocaleMessage(i,a)},mergeLocaleMessage(i,a){n.mergeLocaleMessage(i,a)},d(...i){return Reflect.apply(n.d,n,[...i])},getDateTimeFormat(i){return n.getDateTimeFormat(i)},setDateTimeFormat(i,a){n.setDateTimeFormat(i,a)},mergeDateTimeFormat(i,a){n.mergeDateTimeFormat(i,a)},n(...i){return Reflect.apply(n.n,n,[...i])},getNumberFormat(i){return n.getNumberFormat(i)},setNumberFormat(i,a){n.setNumberFormat(i,a)},mergeNumberFormat(i,a){n.mergeNumberFormat(i,a)},getChoiceIndex(i,a){return-1}};return r.__extender=o,r}}const Dd={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function XA({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((o,r)=>[...o,...r.type===He?r.children:[r]],[]):t.reduce((n,o)=>{const r=e[o];return r&&(n[o]=r()),n},{})}function f1(e){return He}const ZA=de({name:"i18n-t",props:$t({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>xt(e)||!isNaN(e)}},Dd),setup(e,t){const{slots:n,attrs:o}=t,r=e.i18n||Yi({useScope:e.scope,__useComponent:!0});return()=>{const i=Object.keys(n).filter(u=>u!=="_"),a={};e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=ue(e.plural)?+e.plural:e.plural);const s=XA(t,i),l=r[dc](e.keypath,s,a),c=$t({},o),d=ue(e.tag)||Ge(e.tag)?e.tag:f1();return S(d,c,l)}}}),yf=ZA;function YA(e){return at(e)&&!ue(e[0])}function g1(e,t,n,o){const{slots:r,attrs:i}=t;return()=>{const a={part:!0};let s={};e.locale&&(a.locale=e.locale),ue(e.format)?a.key=e.format:Ge(e.format)&&(ue(e.format.key)&&(a.key=e.format.key),s=Object.keys(e.format).reduce((h,g)=>n.includes(g)?$t({},h,{[g]:e.format[g]}):h,{}));const l=o(e.value,a,s);let c=[a.key];at(l)?c=l.map((h,g)=>{const f=r[h.type],b=f?f({[h.type]:h.value,index:g,parts:l}):[h.value];return YA(b)&&(b[0].key=`${h.type}-${g}`),b}):ue(l)&&(c=[l]);const d=$t({},i),u=ue(e.tag)||Ge(e.tag)?e.tag:f1();return S(u,d,c)}}const JA=de({name:"i18n-n",props:$t({value:{type:Number,required:!0},format:{type:[String,Object]}},Dd),setup(e,t){const n=e.i18n||Yi({useScope:e.scope,__useComponent:!0});return g1(e,t,a1,(...o)=>n[hc](...o))}}),Cf=JA,QA=de({name:"i18n-d",props:$t({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Dd),setup(e,t){const n=e.i18n||Yi({useScope:e.scope,__useComponent:!0});return g1(e,t,i1,(...o)=>n[uc](...o))}}),kf=QA;function eR(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const o=n.__getInstance(t);return o!=null?o.__composer:e.global.__composer}}function tR(e){const t=a=>{const{instance:s,modifiers:l,value:c}=a;if(!s||!s.$)throw Et(St.UNEXPECTED_ERROR);const d=eR(e,s.$),u=xf(c);return[Reflect.apply(d.t,d,[...Sf(u)]),d]};return{created:(a,s)=>{const[l,c]=t(s);es&&e.global===c&&(a.__i18nWatcher=ot(c.locale,()=>{s.instance&&s.instance.$forceUpdate()})),a.__composer=c,a.textContent=l},unmounted:a=>{es&&a.__i18nWatcher&&(a.__i18nWatcher(),a.__i18nWatcher=void 0,delete a.__i18nWatcher),a.__composer&&(a.__composer=void 0,delete a.__composer)},beforeUpdate:(a,{value:s})=>{if(a.__composer){const l=a.__composer,c=xf(s);a.textContent=Reflect.apply(l.t,l,[...Sf(c)])}},getSSRProps:a=>{const[s]=t(a);return{textContent:s}}}}function xf(e){if(ue(e))return{path:e};if(Pe(e)){if(!("path"in e))throw Et(St.REQUIRED_VALUE,"path");return e}else throw Et(St.INVALID_VALUE)}function Sf(e){const{path:t,locale:n,args:o,choice:r,plural:i}=e,a={},s=o||{};return ue(n)&&(a.locale=n),xt(r)&&(a.plural=r),xt(i)&&(a.plural=i),[t,s,a]}function nR(e,t,...n){const o=Pe(n[0])?n[0]:{},r=!!o.useI18nComponentName;(Le(o.globalInstall)?o.globalInstall:!0)&&([r?"i18n":yf.name,"I18nT"].forEach(a=>e.component(a,yf)),[Cf.name,"I18nN"].forEach(a=>e.component(a,Cf)),[kf.name,"I18nD"].forEach(a=>e.component(a,kf))),e.directive("t",tR(t))}function oR(e,t,n){return{beforeCreate(){const o=rn();if(!o)throw Et(St.UNEXPECTED_ERROR);const r=this.$options;if(r.i18n){const i=r.i18n;if(r.__i18n&&(i.__i18n=r.__i18n),i.__root=t,this===this.$root)this.$i18n=Tf(e,i);else{i.__injectWithOption=!0,i.__extender=n.__vueI18nExtend,this.$i18n=gc(i);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(r.__i18n)if(this===this.$root)this.$i18n=Tf(e,r);else{this.$i18n=gc({__i18n:r.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});const i=this.$i18n;i.__extender&&(i.__disposer=i.__extender(this.$i18n))}else this.$i18n=e;r.__i18nGlobal&&h1(t,r,r),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$tc=(...i)=>this.$i18n.tc(...i),this.$te=(i,a)=>this.$i18n.te(i,a),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i),n.__setInstance(o,this.$i18n)},mounted(){},unmounted(){const o=rn();if(!o)throw Et(St.UNEXPECTED_ERROR);const r=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,r.__disposer&&(r.__disposer(),delete r.__disposer,delete r.__extender),n.__deleteInstance(o),delete this.$i18n}}}function Tf(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[c1](t.pluralizationRules||e.pluralizationRules);const n=Ws(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(o=>e.mergeLocaleMessage(o,n[o])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(o=>e.mergeDateTimeFormat(o,t.datetimeFormats[o])),t.numberFormats&&Object.keys(t.numberFormats).forEach(o=>e.mergeNumberFormat(o,t.numberFormats[o])),e}const rR=Eo("global-vue-i18n");function iR(e={},t){const n=__VUE_I18N_LEGACY_API__&&Le(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,o=Le(e.globalInjection)?e.globalInjection:!0,r=__VUE_I18N_LEGACY_API__&&n?!!e.allowComposition:!0,i=new Map,[a,s]=aR(e,n),l=Eo("");function c(h){return i.get(h)||null}function d(h,g){i.set(h,g)}function u(h){i.delete(h)}{const h={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return r},async install(g,...f){if(g.__VUE_I18N_SYMBOL__=l,g.provide(g.__VUE_I18N_SYMBOL__,h),Pe(f[0])){const m=f[0];h.__composerExtend=m.__composerExtend,h.__vueI18nExtend=m.__vueI18nExtend}let b=null;!n&&o&&(b=mR(g,h.global)),__VUE_I18N_FULL_INSTALL__&&nR(g,h,...f),__VUE_I18N_LEGACY_API__&&n&&g.mixin(oR(s,s.__composer,h));const p=g.unmount;g.unmount=()=>{b&&b(),h.dispose(),p()}},get global(){return s},dispose(){a.stop()},__instances:i,__getInstance:c,__setInstance:d,__deleteInstance:u};return h}}function Yi(e={}){const t=rn();if(t==null)throw Et(St.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Et(St.NOT_INSTALLED);const n=sR(t),o=cR(n),r=u1(t),i=lR(e,r);if(__VUE_I18N_LEGACY_API__&&n.mode==="legacy"&&!e.__useComponent){if(!n.allowComposition)throw Et(St.NOT_AVAILABLE_IN_LEGACY_MODE);return fR(t,i,o,e)}if(i==="global")return h1(o,e,r),o;if(i==="parent"){let l=dR(n,t,e.__useComponent);return l==null&&(l=o),l}const a=n;let s=a.__getInstance(t);if(s==null){const l=$t({},e);"__i18n"in r&&(l.__i18n=r.__i18n),o&&(l.__root=o),s=Md(l),a.__composerExtend&&(s[fc]=a.__composerExtend(s)),hR(a,t,s),a.__setInstance(t,s)}return s}function aR(e,t,n){const o=Sc();{const r=__VUE_I18N_LEGACY_API__&&t?o.run(()=>gc(e)):o.run(()=>Md(e));if(r==null)throw Et(St.UNEXPECTED_ERROR);return[o,r]}}function sR(e){{const t=Me(e.isCE?rR:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Et(e.isCE?St.NOT_INSTALLED_WITH_PROVIDE:St.UNEXPECTED_ERROR);return t}}function lR(e,t){return Ns(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function cR(e){return e.mode==="composition"?e.global:e.global.__composer}function dR(e,t,n=!1){let o=null;const r=t.root;let i=uR(t,n);for(;i!=null;){const a=e;if(e.mode==="composition")o=a.__getInstance(i);else if(__VUE_I18N_LEGACY_API__){const s=a.__getInstance(i);s!=null&&(o=s.__composer,n&&o&&!o[d1]&&(o=null))}if(o!=null||r===i)break;i=i.parent}return o}function uR(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function hR(e,t,n){It(()=>{},t),Bc(()=>{const o=n;e.__deleteInstance(t);const r=o[fc];r&&(r(),delete o[fc])},t)}function fR(e,t,n,o={}){const r=t==="local",i=ds(null);if(r&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw Et(St.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const a=Le(o.inheritLocale)?o.inheritLocale:!ue(o.locale),s=V(!r||a?n.locale.value:ue(o.locale)?o.locale:Hr),l=V(!r||a?n.fallbackLocale.value:ue(o.fallbackLocale)||at(o.fallbackLocale)||Pe(o.fallbackLocale)||o.fallbackLocale===!1?o.fallbackLocale:s.value),c=V(Ws(s.value,o)),d=V(Pe(o.datetimeFormats)?o.datetimeFormats:{[s.value]:{}}),u=V(Pe(o.numberFormats)?o.numberFormats:{[s.value]:{}}),h=r?n.missingWarn:Le(o.missingWarn)||ko(o.missingWarn)?o.missingWarn:!0,g=r?n.fallbackWarn:Le(o.fallbackWarn)||ko(o.fallbackWarn)?o.fallbackWarn:!0,f=r?n.fallbackRoot:Le(o.fallbackRoot)?o.fallbackRoot:!0,b=!!o.fallbackFormat,p=nt(o.missing)?o.missing:null,m=nt(o.postTranslation)?o.postTranslation:null,k=r?n.warnHtmlMessage:Le(o.warnHtmlMessage)?o.warnHtmlMessage:!0,T=!!o.escapeParameter,v=r?n.modifiers:Pe(o.modifiers)?o.modifiers:{},x=o.pluralRules||r&&n.pluralRules;function A(){return[s.value,l.value,c.value,d.value,u.value]}const y=z({get:()=>i.value?i.value.locale.value:s.value,set:_=>{i.value&&(i.value.locale.value=_),s.value=_}}),R=z({get:()=>i.value?i.value.fallbackLocale.value:l.value,set:_=>{i.value&&(i.value.fallbackLocale.value=_),l.value=_}}),P=z(()=>i.value?i.value.messages.value:c.value),D=z(()=>d.value),W=z(()=>u.value);function M(){return i.value?i.value.getPostTranslationHandler():m}function j(_){i.value&&i.value.setPostTranslationHandler(_)}function ee(){return i.value?i.value.getMissingHandler():p}function B(_){i.value&&i.value.setMissingHandler(_)}function X(_){return A(),_()}function $(..._){return i.value?X(()=>Reflect.apply(i.value.t,null,[..._])):X(()=>"")}function ie(..._){return i.value?Reflect.apply(i.value.rt,null,[..._]):""}function ve(..._){return i.value?X(()=>Reflect.apply(i.value.d,null,[..._])):X(()=>"")}function ye(..._){return i.value?X(()=>Reflect.apply(i.value.n,null,[..._])):X(()=>"")}function Ae(_){return i.value?i.value.tm(_):{}}function De(_,H){return i.value?i.value.te(_,H):!1}function ut(_){return i.value?i.value.getLocaleMessage(_):{}}function Je(_,H){i.value&&(i.value.setLocaleMessage(_,H),c.value[_]=H)}function pt(_,H){i.value&&i.value.mergeLocaleMessage(_,H)}function _e(_){return i.value?i.value.getDateTimeFormat(_):{}}function Oe(_,H){i.value&&(i.value.setDateTimeFormat(_,H),d.value[_]=H)}function Dt(_,H){i.value&&i.value.mergeDateTimeFormat(_,H)}function Ie(_){return i.value?i.value.getNumberFormat(_):{}}function bt(_,H){i.value&&(i.value.setNumberFormat(_,H),u.value[_]=H)}function Bt(_,H){i.value&&i.value.mergeNumberFormat(_,H)}const en={get id(){return i.value?i.value.id:-1},locale:y,fallbackLocale:R,messages:P,datetimeFormats:D,numberFormats:W,get inheritLocale(){return i.value?i.value.inheritLocale:a},set inheritLocale(_){i.value&&(i.value.inheritLocale=_)},get availableLocales(){return i.value?i.value.availableLocales:Object.keys(c.value)},get modifiers(){return i.value?i.value.modifiers:v},get pluralRules(){return i.value?i.value.pluralRules:x},get isGlobal(){return i.value?i.value.isGlobal:!1},get missingWarn(){return i.value?i.value.missingWarn:h},set missingWarn(_){i.value&&(i.value.missingWarn=_)},get fallbackWarn(){return i.value?i.value.fallbackWarn:g},set fallbackWarn(_){i.value&&(i.value.missingWarn=_)},get fallbackRoot(){return i.value?i.value.fallbackRoot:f},set fallbackRoot(_){i.value&&(i.value.fallbackRoot=_)},get fallbackFormat(){return i.value?i.value.fallbackFormat:b},set fallbackFormat(_){i.value&&(i.value.fallbackFormat=_)},get warnHtmlMessage(){return i.value?i.value.warnHtmlMessage:k},set warnHtmlMessage(_){i.value&&(i.value.warnHtmlMessage=_)},get escapeParameter(){return i.value?i.value.escapeParameter:T},set escapeParameter(_){i.value&&(i.value.escapeParameter=_)},t:$,getPostTranslationHandler:M,setPostTranslationHandler:j,getMissingHandler:ee,setMissingHandler:B,rt:ie,d:ve,n:ye,tm:Ae,te:De,getLocaleMessage:ut,setLocaleMessage:Je,mergeLocaleMessage:pt,getDateTimeFormat:_e,setDateTimeFormat:Oe,mergeDateTimeFormat:Dt,getNumberFormat:Ie,setNumberFormat:bt,mergeNumberFormat:Bt};function E(_){_.locale.value=s.value,_.fallbackLocale.value=l.value,Object.keys(c.value).forEach(H=>{_.mergeLocaleMessage(H,c.value[H])}),Object.keys(d.value).forEach(H=>{_.mergeDateTimeFormat(H,d.value[H])}),Object.keys(u.value).forEach(H=>{_.mergeNumberFormat(H,u.value[H])}),_.escapeParameter=T,_.fallbackFormat=b,_.fallbackRoot=f,_.fallbackWarn=g,_.missingWarn=h,_.warnHtmlMessage=k}return Nn(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw Et(St.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const _=i.value=e.proxy.$i18n.__composer;t==="global"?(s.value=_.locale.value,l.value=_.fallbackLocale.value,c.value=_.messages.value,d.value=_.datetimeFormats.value,u.value=_.numberFormats.value):r&&E(_)}),en}const gR=["locale","fallbackLocale","availableLocales"],wf=["t","rt","d","n","tm","te"];function mR(e,t){const n=Object.create(null);return gR.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i)throw Et(St.UNEXPECTED_ERROR);const a=ct(i.value)?{get(){return i.value.value},set(s){i.value.value=s}}:{get(){return i.get&&i.get()}};Object.defineProperty(n,r,a)}),e.config.globalProperties.$i18n=n,wf.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i||!i.value)throw Et(St.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,i)}),()=>{delete e.config.globalProperties.$i18n,wf.forEach(r=>{delete e.config.globalProperties[`$${r}`]})}}VA();__INTLIFY_JIT_COMPILATION__?of(NA):of(BA);RA(dA);EA(X0);if(__INTLIFY_PROD_DEVTOOLS__){const e=qn();e.__INTLIFY__=!0,yA(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const pR=de({__name:"DictViewer",props:{item:{}},emits:["tag-click"],setup(e,{emit:t}){const n=e,o=t,r=Yi(),i=c_(),a=z(()=>n.item.content.replace(/\\t/g," ".repeat(4)).replace(/\\n/g,"
")),s=z(()=>new URL(`#${n.item.id}`,location.href).toString());async function l(u){const{copy:h,isSupported:g}=bP({source:u,legacy:!0});if(!g){i.error(r.t("error"));return}await h(),i.success(r.t("copied"))}function c(u){l(s.value)}function d(u){l([u.title,"",...a.value.split("
"),"",`${r.t("copy_from")}: ${r.t("title")}`].join(`\r +`))}return It(()=>{location.replace(s.value)}),(u,h)=>{const g=M_,f=rc,b=Qa,p=qb,m=yd;return We(),wt(p,{vertical:""},{default:Se(()=>[me(g,null,{default:Se(()=>[me(ic,{item:u.item},null,8,["item"])]),_:1}),me(f,{class:"whitespace-pre-wrap",innerHTML:Ne(a)},null,8,["innerHTML"]),me(p,{class:"mt-10 items-end",justify:"space-between"},{default:Se(()=>[me(p,{size:"small"},{default:Se(()=>[me(f,null,{default:Se(()=>[_t(wn(u.$t("tags"))+": ",1)]),_:1}),(We(!0),vn(He,null,_a(u.item.tags,k=>(We(),wt(b,{text:"",type:"info",onClick:T=>o("tag-click",k)},{default:Se(()=>[_t(wn(k),1)]),_:2},1032,["onClick"]))),256))]),_:1}),me(p,null,{default:Se(()=>[u.item.link?(We(),wt(b,{key:0,href:u.item.link,tag:"a"},{icon:Se(()=>[me(m,{component:Ne(j_)},null,8,["component"])]),_:1},8,["href"])):Ky("",!0),me(b,{onClick:h[0]||(h[0]=k=>d(u.item))},{icon:Se(()=>[me(m,{component:Ne(q_)},null,8,["component"])]),_:1}),me(b,{onClick:h[1]||(h[1]=k=>c(u.item))},{icon:Se(()=>[me(m,{component:Ne(aP)},null,8,["component"])]),_:1})]),_:1})]),_:1})]),_:1})}}});/*! * pinia v2.2.2 * (c) 2024 Eduardo San Martin Morote * @license MIT - */let m1;const js=e=>m1=e,p1=Symbol();function mc(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var yi;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(yi||(yi={}));function bR(){const e=Sc(!0),t=e.run(()=>V({}));let n=[],o=[];const r=xi({install(i){js(r),r._a=i,i.provide(p1,r),i.config.globalProperties.$pinia=r,o.forEach(a=>n.push(a)),o=[]},use(i){return!this._a&&!sP?o.push(i):n.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const b1=()=>{};function _f(e,t,n,o=b1){e.push(t);const r=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),o())};return!n&&Tc()&&Wf(r),r}function yr(e,...t){e.slice().forEach(n=>{n(...t)})}const vR=e=>e(),Pf=Symbol(),_l=Symbol();function pc(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,o)=>e.set(o,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const o=t[n],r=e[n];mc(r)&&mc(o)&&e.hasOwnProperty(n)&&!ct(o)&&!go(o)?e[n]=pc(r,o):e[n]=o}return e}const yR=Symbol();function CR(e){return!mc(e)||!e.hasOwnProperty(yR)}const{assign:lo}=Object;function kR(e){return!!(ct(e)&&e.effect)}function xR(e,t,n,o){const{state:r,actions:i,getters:a}=t,s=n.state.value[e];let l;function c(){s||(n.state.value[e]=r?r():{});const d=Kv(n.state.value[e]);return lo(d,i,Object.keys(a||{}).reduce((u,h)=>(u[h]=xi(z(()=>{js(n);const g=n._s.get(e);return a[h].call(g,g)})),u),{}))}return l=v1(e,c,t,n,o,!0),l}function v1(e,t,n={},o,r,i){let a;const s=lo({actions:{}},n),l={deep:!0};let c,d,u=[],h=[],g;const f=o.state.value[e];!i&&!f&&(o.state.value[e]={}),V({});let b;function p(R){let P;c=d=!1,typeof R=="function"?(R(o.state.value[e]),P={type:yi.patchFunction,storeId:e,events:g}):(pc(o.state.value[e],R),P={type:yi.patchObject,payload:R,storeId:e,events:g});const D=b=Symbol();jt().then(()=>{b===D&&(c=!0)}),d=!0,yr(u,P,o.state.value[e])}const m=i?function(){const{state:P}=n,D=P?P():{};this.$patch(W=>{lo(W,D)})}:b1;function k(){a.stop(),u=[],h=[],o._s.delete(e)}const T=(R,P="")=>{if(Pf in R)return R[_l]=P,R;const D=function(){js(o);const W=Array.from(arguments),M=[],j=[];function ee($){M.push($)}function B($){j.push($)}yr(h,{args:W,name:D[_l],store:x,after:ee,onError:B});let X;try{X=R.apply(this&&this.$id===e?this:x,W)}catch($){throw yr(j,$),$}return X instanceof Promise?X.then($=>(yr(M,$),$)).catch($=>(yr(j,$),Promise.reject($))):(yr(M,X),X)};return D[Pf]=!0,D[_l]=P,D},v={_p:o,$id:e,$onAction:_f.bind(null,h),$patch:p,$reset:m,$subscribe(R,P={}){const D=_f(u,R,P.detached,()=>W()),W=a.run(()=>ot(()=>o.state.value[e],M=>{(P.flush==="sync"?d:c)&&R({storeId:e,type:yi.direct,events:g},M)},lo({},l,P)));return D},$dispose:k},x=wo(v);o._s.set(e,x);const y=(o._a&&o._a.runWithContext||vR)(()=>o._e.run(()=>(a=Sc()).run(()=>t({action:T}))));for(const R in y){const P=y[R];if(ct(P)&&!kR(P)||go(P))i||(f&&CR(P)&&(ct(P)?P.value=f[R]:pc(P,f[R])),o.state.value[e][R]=P);else if(typeof P=="function"){const D=T(P,R);y[R]=D,s.actions[R]=P}}return lo(x,y),lo($e(x),y),Object.defineProperty(x,"$state",{get:()=>o.state.value[e],set:R=>{p(P=>{lo(P,R)})}}),o._p.forEach(R=>{lo(x,a.run(()=>R({store:x,app:o._a,pinia:o,options:s})))}),f&&i&&n.hydrate&&n.hydrate(x.$state,f),c=!0,d=!0,x}function SR(e,t,n){let o,r;const i=typeof t=="function";o=e,r=i?n:t;function a(s,l){const c=Sy();return s=s||(c?Me(p1,null):null),s&&js(s),s=m1,s._s.has(o)||(i?v1(o,t,r,s):xR(o,r,s)),s._s.get(o)}return a.$id=o,a}const y1=SR("app",{state:()=>({locale:"zh",theme:BC().value}),persist:{enabled:!0}}),TR=de({__name:"Wrapper",setup(e){const t=y1(),n=z(()=>t.theme==="light"?N_:B_);return(o,r)=>{const i=t_,a=y_,s=D8,l=l_,c=Nw;return Fe(),wt(c,{theme:Ne(n),class:"h-full"},{default:Se(()=>[me(l,null,{default:Se(()=>[me(s,null,{default:Se(()=>[me(a,null,{default:Se(()=>[me(i,null,{default:Se(()=>[xg(o.$slots,"default")]),_:3})]),_:3})]),_:3})]),_:3})]),_:3},8,["theme"])}}}),Af=(e,t)=>{const n=e.storage||sessionStorage,o=e.key||t.$id;if(e.paths){const r=e.paths.reduce((i,a)=>(i[a]=t.$state[a],i),{});n.setItem(o,JSON.stringify(r))}else n.setItem(o,JSON.stringify(t.$state))};var wR=({options:e,store:t})=>{var n,o,r,i;if((n=e.persist)!=null&&n.enabled){const a=[{key:t.$id,storage:sessionStorage}],s=(r=(o=e.persist)==null?void 0:o.strategies)!=null&&r.length?(i=e.persist)==null?void 0:i.strategies:a;s.forEach(l=>{const c=l.storage||sessionStorage,d=l.key||t.$id,u=c.getItem(d);u&&(t.$patch(JSON.parse(u)),Af(l,t))}),t.$subscribe(()=>{s.forEach(l=>{Af(l,t)})})}};const _R=bR().use(wR),PR=iR({locale:"zh",legacy:!1,messages:{en:{title:"Techmino Online Dictionary",back:"Back",search:"Search",tags:"Tags",copy_from:"Copied from",error:"Error",copied:"Copied successfully!",maker:"Created by"},ja:{title:"Techmino オンライン辞書",back:"戻る",search:"検索",tags:"タグ",copy_from:"コピー元",error:"エラー",copied:"コピーしました!",maker:"作成者"},zh:{title:"Techmino 在线词典",back:"返回",search:"搜点什么",tags:"标签",copy_from:"复制于",error:"出错了",copied:"复制成功!",maker:"制作者"},vi:{title:"Techmino Từ điển trực tuyến",back:"Quay lại",search:"Tìm kiếm",tags:"Thẻ",copy_from:"Sao chép từ",error:"Lỗi",copied:"Sao chép thành công!",maker:"Tạo bởi"}}}),Pl={help:"#fdba74",org:"#fbb741",game:"#14a3c7",term:"#ff7f7f",setup:"#94a3b8",pattern:"#bfdfa5",command:"#0284c7",english:"#2563eb",name:"#7a5299"},AR=[{title:"Translator Note 1",tags:[],category:"help",content:'This is an English translation of the Simplified Chinese version of TetroDictionary.\\n\\nThe translation may not accurately reflect the original content in Simplified Chinese.\\n\\nFeel free to visit our GitHub page if you want to view the contributors or make contributions yourself. Click the globe icon in the bottom right corner to open the webpage.\\n\\nNote that this dictionary sometimes uses the terms \\"block\\", \\"piece\\", and \\"minoes\\" interchangeably; the terms \\"field\\" and \\"matrix\\" are also interchangeable.\\n\\nTranslated and corrected by User670 & C₂₉H₂₅N₃O₅ et al.',link:"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_en.lua",id:"a4202b034ef51731afbd968c5732612c595c9bbe"},{title:"To New Players",tags:["guides","newbie","noob","readme","recommendations","suggestions","helps"],category:"help",content:'Here are our suggestions for new players of Tetris:\\nThe basics:\\n\\t\\t1. Choose a professional Tetris game with good controls. Games like Techmino, TETR.IO, Jstris, and Tetris Online are some good choices. Low quality games that deviate too much from the guidelines, or those with poor controls, are not good for your training.\\n\\t\\t2. Spend time building basic skills in the beginning. Try to spend more time on skills such as reading the next sequence and performing Tetrises consistently. Master the basics before trying more advanced skills like T-spins.\\nEssential skills:\\n\\t\\t1. Memorizing the spawn positions of the blocks.\\n\\t\\t2. Remembering the maneuvers to move the blocks to the desired locations.\\n\\t\\t3. Thinking ahead about where to place the blocks in the next sequences.\\n\\nThe globe button links to an article called \\"Suggestion for new players to Tetris Online\\" written by Tatianyi, a Chinese Tetris player (translated to English by User670).',link:"https://github.com/user670/temp/blob/master/tips_to_those_new_to_top.md",id:"0687abecb1ea80ef2bb72f117c262bfd761e1fd5"},{title:"Practice Recommendations",tags:["readme","noob","new","guides","recommendations","suggestions","helps"],category:"help",content:`Here are our recommendations for improving your Tetris skills. Having trouble improving your skills? Try relaxing and spending more time playing modes you enjoy. Have fun!\\n\\nHere are three sets of tasks that we feel are essential. Although the tasks within each group are ordered by difficulty, we recommend working on all three sets of tasks simultaneously (rather than one at a time).\\n\\nA. Stacking\\n\\tA1. Think twice before placing the block. If your first choice doesn't seem like a good fit, think again.\\n\\tA2. Keep the terrain flat, as this allows more placement possibilities for different blocks.\\n\\tA3. If you are playing a game mode that has Holds, think about the three blocks you can use — the current piece, the piece in the Hold, and the next piece. Think about the best order to place these blocks so that you can maintain a flat terrain for longer.\\nB. Efficiency & Speed\\n\\tB1. Do not rely too much on ghost pieces. Instead, think about what keys to press to get the piece to where you want it. Start manipulating the block when you have a clear idea in mind.\\n\\tB2. Use both rotation keys. Instead of rotating clockwise three times, try rotating counterclockwise just once.\\n\\tB3. It's okay to go slow when you first start learning Finesse. If you can get your keystrokes right in the beginning, it's not that hard to speed up once you've mastered it.\\nC. Stacking\\n\\tC1. Finish 40L without topping out.\\n\\tC2. Finish 40L with no Hold without topping out.\\n\\tC3. Finish 40L with Techrashes only.\\n\\tC4. Finish 40L with Techrashes only no Hold.\\n\\nSet C is more flexible for individual players, and you can also adjust the pace based on your own conditions (e.g., how stable is \\"stable\\" for you).\\n\\nKeep practicing A1 when you have finished set C. This is the most basic skill in all of Tetris, and it is easy to master everything else when you are a master of reading the Next sequence.`,link:"",id:"c0ac7760294e72a7b97ea6630123db3502b886dd"},{title:"Learning T-spins",tags:["tspins","learning","study","guides","tips","recommendations","suggestions","helps"],category:"help",content:"T-spin is a relatively advanced skill in Tetris. It is very hard to master T-spins by just focusing on the local terrain; good abilities of stacking and next-reading are also required to master this skill.\\n\\nWe strongly recommend that you master the basic skills (like stacking) before attempting to learn T-spins.\\n\\nWe recommend starting with T-Spins if you can meet the following criteria:\\n- Finishing 40L within 60 s (or 40–120s, based on personal conditions)\\n- Finishing 40L with Tetrises only\\n- Finishing 40L with Tetrises only and no Hold (without significantly slowing down)\\n\\nThis ensures that you are good at next-reading and planning.",link:"",id:"5cd6ed2e16a7d5f98ef5bda29dcfcb2d59f7320e"},{title:"Official Website",tags:["homepage","mainpage","websites"],category:"help",content:"The official website of Techmino!\\nYou can download the latest stable build of Techmino and change your profile there.\\nClick on the globe icon to open the website in your browser.",link:"http://studio26f.org",id:"051e31daedd281c3cab5e6128a9aa12d98468fa1"},{title:"Huiji Wiki",tags:["huiji","wiki"],category:"help",content:"(灰机wiki)\\nA Chinese Tetris wiki by Tetris enthusiasts from Chinese Tetris Research Community groups and affiliates. Most pages have been referenced and translated from Hard Drop Wiki and Tetris Wiki for now. Link in Simplified Chinese.",link:"https://tetris.huijiwiki.com",id:"42d751274648ebcdd498ed05651a6c1348916083"},{title:"Hard Drop Wiki",tags:["harddrop","hd","wiki"],category:"help",content:"A Tetris wiki hosted on the Hard Drop community.",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"f1b54180b79dcab2e47154d00b06111768f96ba4"},{title:"Tetris Wiki",tags:["tetris","wiki"],category:"help",content:"A Tetris wiki focusing on Tetris-related content, created by Myndzi in 2015. Over the years, thousands of contributions have been made documenting official and fan Tetris games in the series, uncovering game mechanics, and creating guides to improve the gaming experience.",link:"https://tetris.wiki",id:"391eac4ba9910be23ce6ddc9931480e97dcbf980"},{title:"Tetris Wiki Fandom",tags:["tetris","wiki","fandom"],category:"help",content:"A Tetris wiki.",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"8ea80081c57541940cf70403d3796b066a9814ed"},{title:"Four.lol",tags:["four","wiki"],category:"help",content:"A website containing collections of various openers.",link:"https://four.lol",id:"52b4b9a1c6bedae73122783d9b0f733c6a9ce2ff"},{title:"'Tetris Hall'",tags:[],category:"help",content:"(テトリス堂)\\nA Japanese website with many setups, tutorials, and minigames. It has detailed descriptions of consecutive PCs. Link in Japanese.",link:"https://shiwehi.com/tetris/",id:"a9608cfe74e7f95420eed7176a916bf9cfcb1c1a"},{title:"'Tetris Template Collections'",tags:[],category:"help",content:"(テトリステンプレ集@テト譜)\\nA Japanese website with a variety of setups and detailed categories. Most setups have images, so it is easier to share with others. Link in Japanese.",link:"https://w.atwiki.jp/tetrismaps/",id:"d85d34cfc8efb10da1cb31561d6ea897fa417834"},{title:"tetristemplate.info",tags:[],category:"help",content:"(テトリスブログ - PerfectClear)\\nA Japanese website with some setups. It doesn't contain too many setups, but there are very detailed explanations. Link in Japanese.",link:"https://tetristemplate.info/",id:"d40ad538ee0415ecdc146b11b2e1cd3fd67ae860"},{title:"Fumen",tags:["fumen"],category:"help",content:"A Japanese Tetris field editor. Commonly used to share setups, PC solutions, and more. The linked website is translated into English.",link:"http://fumen.zui.jp/#english.js",id:"d0e3779a4195ae331a24e864388f35215908cabf"},{title:"Fumen for Mobile",tags:["fumenformobile","fm"],category:"help",content:"Fumen with touch screen support.",link:"https://knewjade.github.io/fumen-for-mobile/",id:"513718557f75b71e9df0f10e72c6fe17f472a12f"},{title:"Github Repository",tags:["githubrepository","sourcecode","src"],category:"org",content:"Techmino's official Github repository. Stars are appreciated.",link:"https://github.com/26F-Studio/Techmino",id:"315aeca958c382f06824df3fcbe166c17d612c19"},{title:"Discord Server",tags:["community","communities","discord","server"],category:"org",content:"Join the Techmino server and communicate with other players! Click on the globe icon below to open the link.",link:"https://discord.gg/f9pUvkh",id:"d19baa279f5469c994709939d6f98b82ee6afa18"},{title:"Tetris OL Servers",tags:["tetrisonline","servers","tos"],category:"org",content:'Google \\"Tetris Online Poland\\" for the Poland server.\\nClick on the globe icon for information on the Tetris Online Study server in China (by Teatube).',link:"https://teatube.cn/tos/",id:"aaef4a17ec03250986bc73b06c9a21ec38eebf7e"},{title:"Support 1",tags:["support","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:"The contents in this entry were hidden due to platform restrictions. Feel free to discuss these contents on our Discord server.",link:"",id:"63e01f6305fd44f5529b9cfae41a6eb4932d1cd2"},{title:"Support 1",tags:["support","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:'To donate to Techmino via WeChat Pay or Alipay, type \\"support\\" in console and scan the QR code.',link:"",id:"b1a5db8fdd98e57cf63c003917afbfa9732ba22b"},{title:"Support 2",tags:["support","afdian","aidadian"],category:"org",content:"The contents in this entry were hidden due to platform restrictions. Feel free to discuss these contents on our Discord server.",link:"",id:"2360d40332021acea6771ba3f2570ace6a4eec74"},{title:"Support 2",tags:["support","afdian","aidadian"],category:"org",content:"To donate to Techmino via Aifadian, use the globe icon on the bottom right to open the URL. Aifadian charges a 6% commision off your purchase.",link:"https://afdian.net/@MrZ_26",id:"f349c3bfd8cf4dc628ca7345a0045373b6964b36"},{title:"Support 3",tags:["support","patreon"],category:"org",content:"The contents in this entry were hidden due to platform restrictions. Feel free to discuss these contents on our Discord server.",link:"",id:"3439db5d8c4b26e87d5d70db80ba2b80aee146d6"},{title:"Support 3",tags:["support","patreon"],category:"org",content:"To donate to Techmino via Patreon, click on the globe icon on the bottom right to open the URL. Notice that Patreon may charge you a commision for transactions over a certain amount.",link:"https://www.patreon.com/techmino",id:"1d0e790c5035e72b16b550de068bc41e4b613cd1"},{title:"TTT",tags:["tetris","trainer","tres","bien","T.T.T."],category:"game",content:'Tetris Trainer Très-Bien (by こな \\"kona\\"). A hands-on tutorial of advanced techniques in Guideline Tetris (which only supports physical keyboards).\\nRecommended for players who can complete 40L with no Hold and Tetrises only.\\nIt covered topics such as T-Spin, finesse, SRS, and some battle setups.\\nThe link below is the English version of the website, translated by User670 (Originally in Japanese).',link:"https://user670.github.io/tetris-trainer-tres-bien/",id:"06c2f5784f0c2af2028553ceb1c466dfb6fc3cfe"},{title:"TTPC",tags:["tetris","perfect","clear","challenge","T.T.P.C."],category:"game",content:"Tetris Perfect Clear Challenge (by chokotia). A tutorial on Perfect Clear openers using SRS and Bag7 (which only supports physical keyboards). Recommended for players who completed TTT and are familiar with SRS.\\n\\nLink in English, originally in Japanese.",link:"https://teatube.cn/ttpc/ttpc/",id:"bc809a28d5082dd5e91ac2a14bc3d86cd4c91286"},{title:"NAZO",tags:["nazo"],category:"game",content:"(ナゾ)\\n\\nAll kinds of SRS puzzles ranging from easy to extremely hard, including T-spins and All spins. Recommended for players who completed TTT.\\n\\nLink translated to Simplified Chinese, originally in Japanese.",link:"https://teatube.cn/nazo/",id:"b30aa5227877725a049e81f42a5195fa39696a89"},{title:"TPO",tags:["nazo","T.P.O."],category:"game",content:"Tetris Puzzle O. A Chinese website created by TCV100 with some puzzles NAZO included.",link:"http://121.36.2.245:3000/tpo",id:"be1e2fb7f7331968dbabd1812907dcc559e0fa7a"},{title:"Side Note 1",tags:["note","nb","NB","DM","notice"],category:"game",content:"The following content contains brief introductions to some official and fan-made Tetris games with relatively high popularity. We do not guarantee that they cover every Tetris game. The author of Techmino (MrZ) has made some commentaries about some of these games, which are marked in brackets in the entries. They only represent the personal opinions and recommendations of the author and do not necessarily represent the objective qualities of the games.",link:"",id:"fad8777436240f704ff267552e9b2df73d3467e0"},{title:"King of Stackers",tags:["kos","kingofstackers"],category:"game",content:"Browser | Multiplayer | Mobile Support\\nKoS for short. A turn-based browser Tetris game. Players take turns placing blocks on their fields in 7-block cycles. Attacks only enter the field when a block is placed without clearing a line. The game is highly strategic and has several options for attack mechanics.",link:"https://kingofstackers.com/games.php",id:"1a8091911b83ef151ba031256caeedbd9d10c5a8"},{title:"Tetr.js",tags:["tetrjs","tetr.js"],category:"game",content:`Browser | Singleplayer | Mobile Support\\nA browser-based Tetris game with many advanced options and modes.\\nLink to Farter's Dig Mod (which itself is a mod of another Tetris fan game). You can also check another game on Tetris Wiki called \\"Tetr.js enhanced.\\"\\n\\n[MrZ: The visuals are simple with barely any animations. Only a few, fixed virtual key combinations are available for mobile devices.]`,link:"http://farter.cn/t",id:"ea913690c09b61c00baf22bbf5374c57a176bbaa"},{title:"Tetra Legends",tags:["tl","tetralegends"],category:"game",content:"Browser | Singleplayer | No Mobile Support\\nTL for short. A variety of single-player modes and two hidden rhythm modes. It also visualizes mechanisms usually hidden in other Tetris games. Development was halted in December 2020 for various reasons.",link:"https://tetralegends.app",id:"eeaa456499f5da0ca334a9635c2e445244b333ac"},{title:"Ascension",tags:["asc","ASC"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nASC for short. It uses its own rotation system (also called ASC) and has many single-player modes. 1V1 modes are currently in alpha testing (April 16, 2022). The Stack mode in Techmino was also inspired by Ascension.",link:"https://asc.winternebs.com",id:"0d0ab0af000159054877018e257902841ddc8da8"},{title:"Jstris",tags:["js","jstris"],category:"game",content:"Browser | Singleplayer/Multiplayer | Mobile Support\\nJS for short. It has some single-player modes and some options that can be customized by the player. The virtual keys can also be customized to some extent, but this game has little (if any) animations.",link:"https://jstris.jezevec10.com",id:"0cd07f70c31e6afa20934d060e588a5d1c780596"},{title:"TETR.IO",tags:["io","tetrio","tetr.io"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nIO for short. It has a ranking system and a custom game with many adjustable parameters. It also has desktop clients for better performance and no ads.",link:"https://tetr.io",id:"ae87ac388351ef624001512ede5c48e8050bd71f"},{title:"Nuketris",tags:["nuketris"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nA block stacker game with 1V1 ranked matches and basic single-player modes.",link:"https://nuketris.com",id:"0e7650c03ef4d6f49f1c777a0fa6dcc92538e9ea"},{title:"Worldwide Combos",tags:["wwc","worldwidecombos"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nWWC for short. It has worldwide 1V1 battles, recorded battles (which allows you to battle against recorded games), several different rulesets, and bomb-style garbage line battles.",link:"https://worldwidecombos.com",id:"cdad4cda0f2baffec483fe3f4dbb07238fedd5f4"},{title:"Tetris Friends",tags:["tf","tetrisfriends","notrisfoes"],category:"game",content:'Browser | Singleplayer/Multiplayer\\nTF for short. A defunct browser-based Tetris game. The game was very popular before shutting down a few years ago. There is a private server called \\"Notris Foes\\" that still exists. Click on the globe icon to open the webpage.',link:"https://notrisfoes.com",id:"aa93737a715eea7651a81bf577117efa50489d08"},{title:"tetris.com",tags:["tetris","online","official"],category:"game",content:'Browser | Singleplayer\\nThe official Tetris game on tetris.com, with only one mode (marathon). It supports a mouse-based \\"smart\\" control system.',link:"",id:"8dbd1ac0746709b8d9226562198a1c495209a770"},{title:"Tetris Gems",tags:["tetris","online","official","gem"],category:"game",content:"Browser | Singleplayer\\nAnother Tetris game from tetris.com. It has a gravity (cascade) mechanism, and each game lasts 1 minute (which can be extended by clearing lines with special gem blocks). There are three types of gem blocks with different abilities.",link:"",id:"4aded22adef1815f63b41029ee390feda4c36721"},{title:"Tetris Mind Bender",tags:["tetris","online","official","gem"],category:"game",content:'Browser | Singleplayer\\nAnother Tetris game from tetris.com. An endless marathon with special minos called \\"Mind Benders\\". Clearing a line with a Mind Bender gives you a random effect that either helps or hinders the game.',link:"",id:"a1e3ef60a4f7c07f856105d0c439f4463f91cf23"},{title:"Techmino",tags:["techmino"],category:"game",content:"Cross-Platform | Singleplayer/Multiplayer\\nTech for short. A block stacker game developed by MrZ (and other members of 26F Studio) using LÖVE. It has many single-player modes and customizable parameters, and online multiplayer modes are currently being developed.",link:"",id:"e376ddc533df85763061ff4be412a1a60fb83675"},{title:"Falling Lightblocks",tags:["fl","fallinglightblocks"],category:"game",content:"Browser/iOS/Android/Smart TV | Singleplayer/Multiplayer\\nA multiplatform Tetris game that can be played in portrait and landscape mode. It features fixed DAS and line clear ARE, and also customizable controls on mobile. Most modes are based on the classic NES Tetris, but there are also some modern modes. Battles are half turn-based, half real-time, and garbage cannot be buffered or canceled out.",link:"https://golfgl.de/lightblocks/",id:"f7461c3d8efcface25bdfd51efa07369b904a6de"},{title:"Cambridge",tags:["cambridge"],category:"game",content:"Cross-Platform | Singleplayer\\nA Tetris game developed using LÖVE, with the goal of creating a robust, easily customizable platform for creating new, custom game modes. Originally made by Joe Zeng, development of the game was taken over by Milla on October 8, 2020, starting with V0.1.5.\\n —Tetris Wiki",link:"",id:"ce2dcd4c27a8b2d87e463d472e2dacc2f6137643"},{title:"Nanamino",tags:["nanamino"],category:"game",content:"Windows/Android | Singleplayer\\nA fan game under development with an interesting original rotation system.",link:"",id:"9a9aba9a4d09df4bbebbb40a06e5b593a5a950cd"},{title:"TGM",tags:["tetrisgrandmaster","tetristhegrandmaster"],category:"game",content:"Arcade | Singleplayer/Local Multiplayer\\nTetris The Grand Master, an arcade Tetris series. Titles like S13 and GM originate from this series.\\n\\nTGM3 is the most well-known game in this series.",link:"",id:"42bea4123a6ac7cedcbcb48eb06354c3e41f08c9"},{title:"DTET",tags:["dtet"],category:"game",content:"Windows | Singleplayer\\nA game based on TGM's Classic rule with 20G and a powerful rotation system, with decent controls but no customization other than control mappings. The game is a bit hard to find now, and you may have to install the necessary DLL files manually.",link:"https://t-sp.in/dtet",id:"b0f79b3e269c6d5d91e9636a621484f58500d7a9"},{title:"Heboris",tags:["hb","heboris"],category:"game",content:"Windows | Singleplayer\\nA game with Arcade-ish play style, capable of simulating many modes of other Tetris games.",link:"",id:"3fef424a33e6a2c5d834490667adf79c68361070"},{title:"Texmaster",tags:["txm","texmaster"],category:"game",content:"Windows | Singleplayer\\nA game that includes all modes in TGM which can be used to practice TGM. Note that the World rule in the game is slightly different, such as instant-lock soft drops and slightly different kick tables.",link:"",id:"1f66aef719535f95dd293ee4af13783b66ff8552"},{title:"Tetris Effect",tags:["tec","tetriseffectconnected"],category:"game",content:"PS/Oculus Quest/Xbox/NS/Windows | Singleplayer/Multiplayer\\nOr TE(C) for short. An official Tetris game with elaborate graphics and soundtracks that react to the player's input. The basic version (Tetris Effect) has only single player modes. The extended version, Tetris Effect Connected, has four online battle modes: Connected (VS), Zone Battle, Score Attack, and Classic Score Attack.",link:"",id:"77b024d0923fc88a7328c1cd8e58d559714fbea5"},{title:"Tetris 99",tags:["t99","tetris99"],category:"game",content:"Nintendo Switch | Singleplayer/Multiplayer\\nA game famous for its 99-player battle royale mode and novel strategies not found in traditional battle Tetris games. The game's DLC includes limited single-player modes such as Marathon and Bot Matches.",link:"",id:"88fa220383a17af0f8feb7a8970c76d7c6acf600"},{title:"Puyo Puyo Tetris",tags:["ppt","puyopuyotetris"],category:"game",content:"PS/NS/Xbox/Windows | Singleplayer/multiplayer\\nAn official Tetris game featuring a combination of Tetris and Puyo Puyo, as well as battles between the two games. It also includes many single player and online modes.\\n\\n[MrZ: The Steam PC version has worse controls and poor online experience.]",link:"",id:"035496c78d4a01b8846ac74dd4a09746e53091d3"},{title:"Tetris Online",tags:["top","tetrisonline"],category:"game",content:"Windows | Singleplayer/Multiplayer\\nA defunct Japanese Tetris game with both online and single-player modes. Featuring custom DAS and ARR (but neither can be set to zero) and minimal input delays. Private servers are still available, and it's a good choice for new players to get started.",link:"",id:"3e969c11b86072e6af2e0281c1bf2c1538e60d7d"},{title:"Tetra Online",tags:["TO","tetraonline"],category:"game",content:"Windows/macOS/Linux | Singleplayer/Multiplayer\\nTO for short. A Tetris game developed by Dr Ocelot and Mine. Delay AREs are intentionally high; players who are used to zero delays may have trouble adjusting to the game.\\nThe game was removed from Steam on December 9, 2020 due to a DMCA takedown request filed by TTC.\\nAn offline build is still available for download on GitHub.",link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"6cede01ac0733f3738cf6cd4e6c5983bcf2d8213"},{title:"Cultris II",tags:["c2","cultris2","cultrisii"],category:"game",content:"Windows/OS X | Singleplayer/Multiplayer\\nC2 for short. Based on classic Tetris, Cultris II supports customizable DAS and ARR. Battle mode focuses on time-based combos that challenge players' speed, n-wide setups, and downstacking skills.\\n\\n[MrZ: The Mac version was not being maintained for a long time. Any macOS build newer than macOS 10.15 Catalina cannot run this game at all.]",link:"",id:"20fd4d9af2f4b9bfe23253c0b8eb38916664ad8a"},{title:"Nullpomino",tags:["np","nullpomino"],category:"game",content:"Windows/macOS/Linux | Singleplayer/Multiplayer\\nNP for short. A highly-customizable professional Tetris game. Nearly every parameter in the game can be adjusted.\\n\\n[MrZ: It's UI style is like, retro. You can only control the game using keyboard, and new players may have some problems getting used to it. Also, it seems that macOS Monterey (or later) cannot run this game.]",link:"",id:"7828f9bff6b597b0cccc3d21a41fcb6c5863c969"},{title:"Misamino",tags:["misamino"],category:"game",content:"Windows | Single-player\\nA local 1V1 game with mainly turn-based mode. Supports running custom bots (but you have to learn their API).\\nMisamino is also the name of its built-in bot.",link:"",id:"1f2115b44e609c0ef002b5b57cdd6f77e525ca22"},{title:"Touhoumino",tags:["touhoumino"],category:"game",content:`Windows | Singleplayer\\nA fan-made Tetris game. A modification of Nullpomino with elements from Touhou Project. The Marathon mode features Touhou Project's \\"Spell Cards\\" (special effects added to the field to disrupt the game), which can only be broken by reaching a certain score requirement in a limited time.\\n\\n[MrZ: Recommended for players with at least half-decent skills, otherwise you don't even know how you died.]`,link:"",id:"f40fc44935f7ed9fd4caeeacd18b3d02ef25afd7"},{title:"Tetris Blitz",tags:["blitz","ea","mobile","phone"],category:"game",content:'iOS/Android | Singleplayer\\nA defunct official mobile Tetris game by Electronic Arts (EA), featuring a gravity mechanism. Many Minos fall onto the board at the beginning of the two-minute game, and a \\"Frenzy\\" mode can be entered by continuously clearing lines. The game also features various power-ups and an absent of top-out mechanism. The top rows are automatically cleared when an incoming block overlaps with existing blocks.\\n\\nThis game is no longer available as of April 2020.',link:"",id:"7e7d1f4afdc8adae71b89db8cb84d8d8b6eb01fa"},{title:"Tetris (EA)",tags:["tetris","ea","galaxy","universe","cosmos","mobile","phone"],category:"game",content:"iOS/Android | Singleplayer/Multiplayer?\\nAnother official mobile Tetris game from EA. It has two control modes—swipe and one-touch. It also has a Galaxy mode besides the Marathon mode (with gravity mechanism), and the goal of this mode is to clear all Galaxy minoes before the sequence runs out.\\n\\nThis game is no longer available as of April 2020.",link:"",id:"1e9711297dff349e79dfbe4858847efde9a24003"},{title:"Tetris (N3TWORK)",tags:["tetris","n3twork","mobile","phone"],category:"game",content:"iOS/Android | Singleplayer\\nAn official Tetris game originally developed by N3TWORK, but the development rights were transferred to PlayStudio in late November 2021. It has a Quick Play mode (3-minute Ultra), a Marathon mode, a 100-player Royale mode, and an Adventure mode (where the player must complete a goal in a limited number of moves).\\n\\nAny accounts created after late November/early December 2022 will only have access to Marathon and Adventure modes.\\n[The UI is great, but the controls are not very good.]",link:"",id:"80b2cb1535021b373cd3106c66f25b1b9068ebf8"},{title:"Tetris Beat",tags:["n3twork","rhythm"],category:"game",content:'iOS | Singleplayer\\nA mobile Tetris game by N3TWORK for Apple Arcade. In addition to the classic marathon modes, the game features a \\"beat\\" mode in which the player drops blocks to the rhythm of the BGM.\\n[Too much visual effects with less-than-ideal controls.]',link:"",id:"e29f101c6c0707a7bad170a04c244edd50467613"},{title:"Tetris Journey",tags:["tetrisjourney","mobile","phone","huanyouji"],category:"game",content:"iOS/Android | Singleplayer\\n(俄罗斯方块环游记)\\n\\nA defunct official mobile Tetris game developed by Tencent (available only in China). It had level modes, battle modes, and some single-player modes. It also had customizable virtual keys but lacked the option to adjust DAS or ARR.\\nThe battle mode would last for 2 minutes, and if both players did not top out, the one who sent more attacks would win.\\n\\nThe game was shut down on Feburary 15, 2023.",link:"",id:"1485de38b6720a13ea53d931440cd20835afb9c7"},{title:"JJ Tetris",tags:["jjtetris"],category:"game",content:"Android | Multiplayer\\n(JJ块)\\nA Chinese Tetris game distributed on JJ Card Games (JJ棋牌), a Chinese gamimg platform. It features portrait mode, low input lag, and smooth controls. It also features customizable DAS/ARR and toggleable 20G soft drop and limited virtual key customization. The game has no holds, B2B, garbage buffer, or attack cancellation. The game experience is similar to modern Tetris, except for a 4-line maximum limit on each attack and more powerful combo mechanisms.",link:"",id:"1e4d41ec95e20a17d2b0b7137209c27eff48e7e6"},{title:"Huopin Tetris",tags:["huopin","qq"],category:"game",content:"Windows | Multiplayer\\n(火拼俄罗斯)\\n\\nThe Tetris game on Tencent Game Center, a Chinese gaming platform. It has a 12-wide board, one Next, and no Hold. The DAS and ARR are the same as the keyboard settings for normal typing. Garbage lines can only be sent by Tetrises (3-line attacks) or Triples (2-line attacks). The garbage lines are also checkerboard shaped and almost impossible to dig through.",link:"",id:"4acb20925aace99380ddbda57af730ed00a1f8cc"},{title:"Translator Note 2",tags:[],category:"help",content:"Translator's note on those per-minute and per-second values:\\n\\nNot all of them are commonly used in the global communities, and not all terms mean the same across all contexts. They mainly apply to Techmino.",link:"",id:"a56915125752fd2016014eb983708ebc292649fa"},{title:"LPM",tags:["linesperminute","speed"],category:"term",content:`Lines per minute\\n\\tReflects a player's playing speed.\\n\\tDifferent games may calculate LPM in different ways. For example, Tetris Online calculates its LPM using PPS (see below), where 1 PPS is equal to 24 LPM. This ignores the effect of garbage lines and makes it deviate from the literal meaning. In Techmino, this converted LPM value is written as \\"L′PM.\\`,link:"",id:"73d894554600b983231c107f97397ef097a9e9c8"},{title:"PPS",tags:["piecespersecond","speed"],category:"term",content:"Pieces per second\\n\\tReflects a player's playing speed.",link:"",id:"e86171ebaf8ed816f65e43be6d877de8d4b6df4b"},{title:"BPM",tags:["blocksperminute","piecesperminute","speed"],category:"term",content:"Blocks per minute\\n\\tReflects the playing speed of a player.\\n\\tAlso called PPM (to avoid confusion with the musical term).",link:"",id:"e45f4746cfb8ba67dfddec7efdc4fceb57b05ce9"},{title:"KPM",tags:["keysperminute","keypressesperminute"],category:"term",content:"Keypresses per minute\\n\\tReflects how fast the player presses keys or buttons.",link:"",id:"e1cee2c9c92b4f206a23bc8b78fd2ba45e643324"},{title:"KPP",tags:["keysperpiece","keypressesperpiece"],category:"term",content:"Keypresses per piece\\n\\tThe average number of keypresses a player uses to move a piece into the desired location. This reflects how efficient the player is with the controls. It can be reduced with good finesse skills.",link:"",id:"0c18e93bac2d5c2852553a0f72d501b5a2c6d606"},{title:"APM",tags:["attackperminute"],category:"term",content:"Attack per minute\\n\\tThe average number of attack lines a player can generate per minute, regardless of whether the attacks are used to cancel incoming attacks or not. Reflects the offensive power of a player.",link:"",id:"d1d31e1138c134e9d463c82b58b3e37151b40815"},{title:"SPM",tags:["linessentperminute"],category:"term",content:"[Lines] Sent per minute\\n\\tThe average number of attack lines a player actually sends to the opponent. Reflects the *actual* offensive power of a player",link:"",id:"ef3654f907a66165d12699ab717052a060d2cc9a"},{title:"DPM",tags:["digperminute","defendperminute"],category:"term",content:"Dig/Defend per minute\\n\\tThe average number of garbage lines a player digs through per minute. Can reflect a player's ability to survive incoming garbage lines.\\n\\nSometimes this term refers to Defense (garbage canceled + garbage dug) Per Minute.",link:"",id:"ccc352200ff42c4dc323e2ee4cdb849c6fec093b"},{title:"RPM",tags:["receive","jieshou"],category:"term",content:"[Lines] Received per Minute\\n\\tThe average number of garbage lines a player receives per minute. Reflects the pressure the player is under to some extent.",link:"",id:"43b231b3c47cd64cee3d916bfbe4ba764793d9b9"},{title:"ADPM",tags:["attackdigperminute","vs"],category:"term",content:'Attack & Dig Per Minute\\n\\tReflects the skill differences between the two players within the same match. ADPM is slightly more accurate than APM.\\n\\tThe \\"vs\\" in TETR.IO is actually Atk & Dig per 100 seconds.',link:"",id:"0495aa10da5687b325ad77faa15ab18c4cc1821d"},{title:"APL",tags:["attackperline","efficiency"],category:"term",content:'Attack per line (cleared)\\n\\tAlso known as \\"efficiency.\\" Reflects the per-line efficiency of attacks. For example, Tetrises and T-spins have higher efficiencies than doubles and triples.',link:"",id:"b322d9b0703fcb54f1c315d71cacb4ed568327db"},{title:"Single",tags:["single","1"],category:"term",content:"Clearing one line at a time.",link:"",id:"cf8505ecdf54062f77507d2277018235a73920f9"},{title:"Double",tags:["double","2"],category:"term",content:"Clearing two lines at a time.",link:"",id:"24811454136cb17fb69357520b1ba1f16630ecb2"},{title:"Triple",tags:["triple","3"],category:"term",content:"Clearing three lines at a time.",link:"",id:"c9077749b29d5a57220bcb3d8fc1fdfe18540223"},{title:"Techrash",tags:["techrash","tetris","4"],category:"term",content:"*Techmino-Exclusive*\\nClearing four lines at a time.",link:"",id:"6b8efca840e689c625a7270fc5dbdb723285a769"},{title:"Tetris",tags:["tetris","4"],category:"term",content:'The name of the game (and its trademark). Also the name for clearing four lines at a time in official games.\\nIt is a portmanteau word coined from Tetra (Greek for \\"four\\" <τέτταρες>, \\"téttares\\") and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA were licensed by TTC. These two companies do not have the copyright of Tetris.',link:"",id:"873dfd5033decc84fc72a70a39b47e1c4e581960"},{title:"All Clear",tags:["pc","perfectclear","ac","allclear"],category:"term",content:"Also known as Perfect Clear (PC, preferred term by the community and used in Techmino). \\nClearing all minoes within the field.",link:"",id:"489b16d39fce243aaf62c6d74f4c197c5acb0d08"},{title:"HPC",tags:["hc","clear","halfperfectclear"],category:"term",content:"Half Perfect Clear\\nAn extension of Perfect Clear (All Clear) in Techmino. A clear is considered an HPC if it clears all minos including and above the line where the clear is performed. If only one line remains on the board after an HPC, that line must not contain any minos placed by the player. An HPC sends a small attack/defense.",link:"",id:"bc1e4b7d147c9d9d95766190f7f5b40185c45989"},{title:"Spin",tags:["spin"],category:"term",content:"(In some games) Rotating a block to an otherwise unreachable location. In certain games, this manipulation can give extra attacks or scores. Different games may have different mechanisms for the specific criteria for a spin.",link:"",id:"5d9daaaadc5360f91dcebcd62ed10b456e779563"},{title:"Mini (Spin)",tags:["mini"],category:"term",content:'A special type of spin that is considered easier than a regular spin (hence the name \\"EZ Spin\\" found in certain games). Compared to regular spins, mini spins usually have reduced attack or score bonuses. Different games may have different mechanisms for the specific criteria for a mini-spin, and the specific criteria may not be intuitive. We recommend that you memorize only a few common mini spins.',link:"",id:"83667c629d251ffdb7a7ea7cd81539a282680e7c"},{title:"All-Spin",tags:["allspin"],category:"term",content:"A ruleset where spins of all pieces are awarded extra attacks/scores, as opposed to T-spins only.",link:"",id:"2657494a801f1ad107b6092b10ce1d4cb895b384"},{title:"T-Spin",tags:["tspin"],category:"term",content:'A spin performed using the T Tetromino.\\nT-spins are usually determined using the \\"3-corner rule\\": A manipulation is considered a T-spin if the last operation applied to the T tetromino is a rotation and at least three of the four diagonal corners of the rotation are not empty. Some games may have additional rules for mini T-spins (or T-spins mini in some games), which may have reduced attacks/scores.',link:"",id:"33700873f7f2afef78198a6e876b059b6879c2a3"},{title:"TSS",tags:["t1","tspinsingle"],category:"term",content:"T-Spin Single\\nClearing one line with a T-spin.",link:"",id:"901ef2970f68b0cc302bb11f967784b1159e5767"},{title:"TSD",tags:["t2","tspindouble"],category:"term",content:"T-Spin Double\\nClearing two lines with a T-spin.",link:"",id:"967e0e2b36dff67c10606d2762ce8a2fae619c1d"},{title:"TST",tags:["t3","tspintriple"],category:"term",content:"T-Spin Triple\\nClearing three lines with a T-spin.",link:"",id:"3d229e9d3df3b0aa86ddc9d366a8613f9fd8c655"},{title:"MTSS",tags:["minitspinsingle","tsms","tspinminisingle"],category:"term",content:"Mini T-Spin Single\\nAlso known as T-Spin Mini Single (TSMS).\\nClearing one line with a Mini T-Spin.\\nDifferent games may have different mechanisms for the specific criteria for a mini T-spin.",link:"",id:"5f704bfb3825aabdffa348225e8f7c9927dbdd21"},{title:"MTSD",tags:["minitspindouble","tsmd","tspinminidouble"],category:"term",content:"Mini T-Spin Double\\nAlso known as T-Spin Mini Double (TSMD).\\nClearing two lines with a Mini T-Spin. MTSD only exists in a limited number of games and may have very different triggers.",link:"",id:"1d1a0531fc40e78e0282ff3600dc7e3206461365"},{title:"O-Spin",tags:["ospin"],category:"term",content:'Since the O tetromino does not change its shape or position after each rotation, it is usually impossible to remove an O tetromino from a \\"pit\\" or \\"hole\\" once it is stuck. Because of this, a meme about O-spins was created in the Tetris community. Someone once made a viral but fake video showing how to do an O-spin in Tetris 99 and Tetris Friend. The XRS in T-ex allows O tetrominoes to be \\"teleported\\" into a pit or hole. In the TRS of Techmino, O tetrominoes can be rotated in a special way to be teleported or transformed into another tetromino to achieve an O-spin.',link:"",id:"f8c9b4832f550d384ac65a4983c8f23b31184e8e"},{title:"Rotation Systems",tags:["wallkick","rotationsystem"],category:"term",content:'Systems that determine how blocks rotate. In most modern Tetris games, the blocks rotate around a specific center of rotation (but some games may not have it). If any of the minoes overlap with either the wall or blocks on the board, the system will try to move the blocks in certain directions to avoid overlapping. This is known as \\"wall-kicking.\\" A rotation may fail if the offset is too large. Wall kicking allows minoes to move into certain holes that would otherwise be unreachable. Different rotation systems may have different wallkick tables and orders.',link:"",id:"48b1d5f3676d7360ee79d94847e7bed571340c31"},{title:"Orientation",tags:["direction","0r2l","02","20","rl","lr"],category:"term",content:'In SRS or SRS-like rotation systems, there is a widely-accepted (though non-standard) notation for describing the orientations of the blocks:\\n\\nThe original orientation of the block (the orientation of the block when the block is spawned) is denoted as \\"0\\";\\nThe orientation of the block after a 90° clockwise (right) rotation is denoted as \\"R\\";\\nThe orientation of the block after a 90° counterclockwise (left) rotation is denoted as \\"L\\";\\nThe orientation of the block after a 180° rotation is denoted as \\"2\\".\\n\\nUnder this system, 0→L means rotating counterclockwise from the original orientation (0) to L; 0→R means rotating clockwise from the original orientation (0) to R; 2→R means rotating counterclockwise from 2 (180°) to R.',link:"",id:"05f03de5dca6dd54f36b66f248865b53b7584e49"},{title:"ARS",tags:["arikrotationsystem","atarirotationsystem"],category:"term",content:"ARS can refer to one of two rotation systems:\\nArika Rotation System, a rotation system used in the TGM series, or\\nAtari Rotation System, a rotation system that aligns pieces to the top left corner when rotating.",link:"",id:"7b82d3437646732dbf4ab0e435e51d79e5e76a97"},{title:"ASC",tags:["ascension"],category:"term",content:"A rotation system used in the Tetris game Ascension (hence the name ASC). All pieces use the two symmetric wall kick tables for the two rotations. The maximum wall kick offset is about 2 blocks in each of the four directions.",link:"",id:"3c62396860b99367fbd37fccce8f6e4a63efaa46"},{title:"ASC+",tags:["ascension","ascplus"],category:"term",content:"A modified version of ASC in Techmino that adds wall kick offsets for 180° rotations.",link:"",id:"b3ff2fa947dba1f978628fa236016f7ef98cd49c"},{title:"BRS",tags:["bulletproofsoftware"],category:"term",content:"BPS rotation system, the rotation system used in Tetris games by Bullet-Proof Software.",link:"",id:"f11a3a05eaf1cfa31978e3e9c281936c8cf8901e"},{title:"BiRS",tags:["biasrs","biasrotationsystem"],category:"term",content:"Bias Rotation System, an original rotation system used in Techmino based on XRS and SRS.\\nIn BiRS, an extra offset is triggered when either the left, right, or softdrop key is pressed and the block touches the minoes or walls in that direction. This introduces an additional offset in the specified direction, in addition to the standard offsets listed on the wall kick tables. The horizontal extra offsets indicated by the keypress must not be in the opposite direction to the composite horizontal offset, and the distance of the composite offset must not exceed √5. If the test fails, the system will perform another test without the horizontal offsets; should this also fail, a further test will be conducted without downward offsets. In contrast to XRS, BiRS uses only a single kick table, making it easier to memorize while retaining the climb-over-terrain feature of SRS.",link:"",id:"c8046c43065451cff313bc088d236bba40c59457"},{title:"C2RS",tags:["c2rs","cultris2"],category:"term",content:"Cultris II rotation system, a rotation system used in the Tetris clone Cultris II. \\nThe priority of the offsets is left 1, right 1, down 1, down left 1, down right 1, left 2, then right 2, which is shared by all rotations and pieces. Note that left has priority over right in this system.",link:"",id:"7f7f54338ec2ddc8433164f845ab6c7fc1255996"},{title:"C2sym",tags:["cultris2"],category:"term",content:"A modification of C2RS in Techmino. In C2sym, the priority of left and right offsets is optimized based on the specific shapes of the different blocks.",link:"",id:"055199177ed198531b56332690b920a08875dc6d"},{title:"DRS",tags:["dtetrotationsystem"],category:"term",content:"DTET Rotation System\\nThe rotation system used in DTET.",link:"",id:"ea6e4fd09eb379c53dd7d5d41ac7d57b96434df8"},{title:"NRS",tags:["nintendorotationsystem"],category:"term",content:"Nintendo Rotation System, the rotation system used in Tetris games on the Nintendo Entertainment System (NES) and Game Boy consoles.\\nIt has two versions that are mirror images of each other. The left-handed version is used on the Game Boy and the right-handed version is used on the NES.",link:"",id:"e37dfff196934ca5167ace859fdc6cbe57cdfbb2"},{title:"SRS",tags:["superrotationsystem"],category:"term",content:"Super Rotation System. SRS is the most widely used rotation system in modern Tetris games and the basis of many fan-made rotation systems.\\nThere are a total of 8 wall kick tables in SRS, corresponding to the two rotations of the four orientations of each tetromino (note that there are no offsets for 180° rotations). Some offsets are checked if anything overlaps with the tetrominoes.\\nDetails about the SRS Wall Kick Tables can be found on the Tetris Wiki.",link:"",id:"5c2e7d5ea1a1a5ca8b2351067a5aa319ba6ae531"},{title:"SRS+",tags:["srsplus","superrotationsystemplus"],category:"term",content:"An extension to SRS that adds supports for 180° wall kicks.",link:"",id:"302346ed1f932a5e9bd32062016483361c84a654"},{title:"TRS",tags:["techminorotationsystem"],category:"term",content:"Techmino Rotation System, a rotation system used in Techmino based on SRS. TRS added some extra useful wall kicks and fixed the problem with S and Z tetrominoes getting stuck on certain terrains. It also added wall kick tables for pentominoes based on the wall kicks for tetrominoes.\\n\\nTRS supports O-spins, where the O tetrominoes can be transformed into other tetrominoes or teleported into holes by pressing certain keys or buttons.",link:"",id:"8ab10ff5c564b655a41ffc12aff48a7239016214"},{title:"XRS",tags:["xrs"],category:"term",content:"X rotation system, a rotation system used in T-ex.\\nIn many other rotation systems, the wall kick table is fixed, so the block can only choose one direction to offset (which the player may not want). XRS solved this dilemma by altering the wall kick table when a direction key (left, right, or soft drop) is pressed to favor that direction. This makes it easier for the player to control where a block would go after a wall kick.",link:"",id:"67a5ce8bb7cc58a67229f578ff3405c35294a4ed"},{title:"Back to Back",tags:["b2b","btb","backtoback"],category:"term",content:"Or B2B for short. A back-to-back is achieved when two or more Tetrises or spins with line clears are completed without other types of line clears in between. Back-to-backs add extra attacks to these moves. Unlike combos, placing pieces that do not clear lines does not affect back-to-backs.\\nIn Techmino, multiple consecutive back-to-backs are counted as back-to-back-to-backs (B2B2B or B3B, see entry for B2B2B). Techmino also counts consecutive PCs and HPCs as B2Bs or B3Bs.",link:"",id:"8d1b5190043e497944d5181c576234b21f499d75"},{title:"B2B2B",tags:["b3b"],category:"term",content:"Back-to-back-to-back, also known as B3B. A B3B is achieved when many consecutive B2Bs are achieved. A B3B offers even more extra attacks than B2Bs. B3Bs are exclusive to Techmino.",link:"",id:"0ffe87ea83997d8c4c14f045b97aad035f41013a"},{title:"Fin, Neo, Iso",tags:["fin","neo","iso"],category:"term",content:"The names of three special types of T-spins that use special wall kicks of the T tetrominoes. Different games may have different attacks for these T-spins; some games may consider some or all of these T-spins to be mini T-spins. These T-Spins have little importance in real-world combat due to their complex setups.",link:"",id:"39ce2acf927bc79a28c143a0b68aa5e81d90183f"},{title:"Modern Tetris",tags:["modern"],category:"term",content:'A \\"modern\\" Tetris game is a Tetris game that generally follows or resembles the Tetris Design Guideline, but there is no consensus on what constitutes a modern Tetris game.\\nHere are some rules that are generally considered essential in modern Tetris games; games that fulfill most of these requirements can be considered \\"modern\\" Tetris games.\\n\\n1. The visible part of the matrix is 10 wide by 20 high. Usually there are also hidden rows above the 20th row, and most games have a hard limit of 40 high.\\n2. Blocks spawn in the center of the top row of the visible matrix. It is possible to have either the top or bottom side of the block aligned with the top row. Blocks with an odd width will spawn to the left of the center. Each piece has a consistent spawn orientation (usually flat side down) and color.\\n3. An appropriate generator (e.g. 7Bag or His) is present to prevent drought (see the entry for drought).\\n4. An appropriate rotation system with at least two rotations is present. SRS or SRS-like rotation systems are strongly preferred.\\n5. An appropriate lockdown delay system is present.\\n6. An appropriate top-out mechanism is present.\\n7. A Next queue with 3-6 previews (though 1 is also acceptable) of upcoming blocks is present, and the orientations of the blocks in the Next queue match the spawn orientation.\\n8. A Hold function is present.\\n9. A DAS system for precise and swift sideways movements is present.\\n10. IRS and IHS (see entries) are present if spawn delays and line clear delays are present. Techmino also has an IMS (see entry).',link:"",id:"d850880e5544701a44dcb347bc0db272512bbd9d"},{title:"Tetrominos' Shapes",tags:["shape","structure","form","tetromino","tetrimino"],category:"term",content:'In most standard Tetris games, all the blocks used are tetrominoes, i.e. blocks formed by connecting four minoes side by side.\\nThere are a total of seven tetrominoes when considering rotation but not flipping: Z, S, J, L, T, O, and I, named after their similarity to the corresponding letters. \\nSee the entry for \\"Shape & Name\\" for more information.',link:"",id:"24b0e2708bebcfff218180af7d7b92505f3927fd"},{title:"Tetrominos' Colors",tags:["colour","hue","tint","tetromino","tetrimino"],category:"term",content:'The same color scheme is used for most modern Tetris games: red for Z, green for S, blue for J, orange for L, purple for T, yellow for O, and cyan for I.\\nTechmino also uses this \\"standard\\" coloring for the tetrominoes.',link:"",id:"9a1f47c8445c890e38aa9d42fc155e6c846013b5"},{title:"IRS",tags:["initialrotationsystem"],category:"term",content:"Initial Rotation System (Not some government agency that collects your taxes). IRS allows the player to rotate a piece before it is spawned (during the spawn delay) to have the piece pre-rotated when it is spawned. This can prevent game over in some situations.",link:"",id:"50fbf0501e856a78382473923ae686a1588272ef"},{title:"IHS",tags:["initialholdsystem"],category:"term",content:"Initial Hold System. IHS allows the player to hold a piece before it is spawned (during the spawn delay) to swap the next piece with the held piece. This can prevent game over in some situations.",link:"",id:"6b291480a03ba31e64b27d50639da8076d91b2aa"},{title:"IMS",tags:["initialmovesystem"],category:"term",content:"Initial Movement System, a system exclusive to Techmino. IMS allows the player to move a piece sideways before it is spawned (during the spawn delay) to add a one-block offset when the block is spawned. This can prevent game over in some situations.\\nNote that DAS must be fully charged when the piece spawns.",link:"",id:"f9788b77e6ea2fd72d26706c8eb9a356ecbd9efb"},{title:"Next",tags:["nextpreview"],category:"term",content:"A preview that displays the upcoming piece(s). Planning ahead where to place the blocks in the Next queue is essential for improving your Tetris skills.\\nThere is no set number for how many pieces you should plan ahead, and the specifics may vary depending on personal conditions, modes, and the situation in the game. Some players may try to measure this by adjusting the number of next pieces visible in 40L, but the result is generally not representative because of the reason mentioned above.",link:"",id:"f1d8f687b50ea8d3e3ff9c90289ab7066334a699"},{title:"Hold",tags:["hold"],category:"term",content:"A function that allows the player to store the current block in a reserve (if there are no blocks in Hold) or swap the current block with the block in the reserve. Normally, Holds can only be used once per block. Holds allow the player to adjust the order of the blocks and make it easier to build the desired setup.\\nIt can be argued that not using Holds allows a player to concentrate more on the sequences at hand, which could reduce the player's workload. It could also reduce the variety of keys or buttons used during the game, which could increase the KPS. In fact, many world records on 40L are set without Holds. However, some people also argue that Holds are useful for adjusting the upcoming sequence and reducing the difficulty in many circumstances (such as high gravity), allowing the player to achieve more complex setups without significantly increasing the workload, which could reduce the total number of key presses.",link:"",id:"f6fc5fc4057365b81e3d3f8c525b2034723abf2f"},{title:"In-Place Hold",tags:["inplacehold","physicalhold","physics"],category:"term",content:"A special form of hold in Techmino where a block in the Hold is spawned at the same location as the current controlling block, as opposed to a normal Hold where the block is spawned in the top row. It can be enabled in custom games.",link:"",id:"9fafb5d9712bce0cbe31a1e1780421ec160221ee"},{title:"Swap",tags:["hold"],category:"term",content:"Another possible form of Hold. Swaps allow the player to swap the current block with the next block. Normally, Swap can only be used once per block (just like Holds).",link:"",id:"ab3fef4bb1af71de94e73d9099a697d474765370"},{title:"Deepdrop",tags:["shenjiang"],category:"term",content:'A special feature in Techmino that allows blocks to \\"teleport\\" through the minoes to enter a hole. A Deepdrop is activated when the current block hits the bottom and the soft drop key/button is pressed again. When this happens, the system would try to move the current block down until it finds a hole that the block could fit into, and teleport the block there if the hole exists.\\nDeepdrops are more commonly used for experiments and AIs, as they allow AIs to move a block into the appropriate hole regardless of the rotation system.',link:"",id:"cd1d87dfd11e120a14824b4c926f43697f5cc3d2"},{title:"Misdrop",tags:["md","misdrop"],category:"term",content:"Or MD for short. Accidentally placing (dropping) a block in an unintended location.",link:"",id:"f60f2ff314867ab42723088e076f99cad48e6d80"},{title:"Mishold",tags:["mh","mishold"],category:"term",content:"Or MH for short. Accidentally pressing the Hold key/button. This could result in the loss of the chance to achieve a PC or game over.",link:"",id:"28f84a85f6e014bdad9521f8a9f55d4d1ecc461c"},{title:"sub",tags:["sub"],category:"term",content:'A sub-[number] time means that the time is below a certain milestone. The unit of time is often omitted and inferred. For example, a \\"sub-30\\" for a 40-line sprint means under 30 seconds, and a \\"sub-15\\" for a 1000-line sprint means under 15 minutes. \\"Sub\\" is generally used with a round number (so expressions like \\"sub-62\\" are rarely used).',link:"",id:"90245bab61be90c8341d6230c0b2efef3d4ad9ac"},{title:"Digging",tags:["downstacking","ds"],category:"term",content:"Clearing garbage lines entered from the bottom of the field. Also known as downstacking (DS).",link:"",id:"0302bb7d296316fb2a37431841983bddf9d0d997"},{title:"Donation",tags:["donate"],category:"term",content:'Converting a hole or well (usually originally intended for Tetrises) into a T-spin setup by \\"plugging\\" it. Donation is an advanced skill for maintaining or increasing attacks. After the T-spin, the hole would open again to allow the continuation of Tetris or another donation. Plugging a hole or well not intended for Tetrises is also sometimes colloquially referred to as \\"donation.\\',link:"",id:"bb02e31b7a7959be0d2d9d7359c35d97dee10187"},{title:"'Debt'",tags:["qianzhai","debt","owe"],category:"term",content:'A term more commonly used in the Chinese Tetris community. A situation where you can only start making T-spins after the setup is completed (and no T-spins can be made before the setup is completed). It is important to observe the opponent before building a setup that could lead to a \\"debt\\" situation during the building process (or this could lead to a game over).\\n\\nThis term is commonly used to describe setups like TST towers where no real attacks can be made before the build is complete.',link:"",id:"bbd18ce851c7ccb50f180b0786aaa6d2ea52b7c2"},{title:"Attack & Defend",tags:["attacking","defending"],category:"term",content:"Attacking: Sending garbage lines to the opponent by performing special line clears (i.e. not singles).\\nDefending: Canceling the incoming attack by making special line clears.\\nCounterattacking: Sending attacks back to the opponent after canceling all incoming garbage lines.\\nIn most Tetris games, attacking and defending are equivalent.; an outgoing attack cancels an incoming garbage line.",link:"",id:"a5d0a3dfc08f2e79068e5060d9beee33df0f2c43"},{title:"Combo",tags:["ren","combo"],category:"term",content:'Achieving consecutive line clears without dropping a block that does not clear a line in between. Combos are usually counted from the second line clear (1 combo). Different games may have different attacks for combos.\\nAlso called \\"REN\\" in the Japanese Tetris community, from the Japanese kanji <連> (れん, ren).',link:"",id:"a2c1355a2eed3e853bfac2d5de58b8f0c8ebe846"},{title:"Spike",tags:["spike"],category:"term",content:"Sending large attacks in a short period of time. Techmino and TETR.IO all have spike counters that show how many attacks are sent in that time period.\\nAccumulated releases of attacks due to Internet latency are typically not considered spikes.",link:"",id:"4f5a13593d0edd6945f447b0f2a7ac7e2707b2fc"},{title:"Side well",tags:["ren","combo","sidewell"],category:"term",content:'A special stacking method where a \\"well\\" of a certain width (usually 2- to 4-wide) is built on the side of the field. A decent way to get combos for new players to send attacks. \\nHowever, side wells are prone to top-outs when the player is building the stack and the opponent sends a big attack; the efficiency of side wells is also less than ideal. Advanced players usually do not rely on side wells as the only way to send attacks. Instead, they may build side wells after building a T-spin setup and when the opponent is unlikely to send an attack shortly. In this situation, side wells can be used to increase instant attacks.',link:"",id:"8dfd0d8dfb9c98167821355cf3544b278fcd89b5"},{title:"Center well",tags:["ren","combo","centerwell"],category:"term",content:"A special stacking method that leaves a well of a certain width in the center of the field. This allows the player to make combos without the risk of topping out as in side wells if the well is wide enough.",link:"",id:"111a6f5b9755b27b2d79ac15896a337e938b4eea"},{title:"Partial well",tags:["ren","combo","partialwell"],category:"term",content:"A special stacking method that leaves a well of a certain width in a position between the center and the sides of the field.",link:"",id:"3eaba1b96b2d0778c487b6277e6db8b7fdcb3c7b"},{title:"Side 1-wide",tags:["s1w","side1wide","sidewelltetris"],category:"term",content:'Or S1W for short. Leaving a one-block-wide well on the side of the field, a classic way to make Tetris.\\nNew players can use S1Ws to make Tetrises, as they can produce decent attacks in a short time period. However, it is less commonly used by advanced players due to its low efficiency and susceptibility to incoming attacks during setup, which could lead to a game over; these players may only use S1W when the situation is very suitable for the setup.\\n\\nAlso known as \\"side well Tetris.\\',link:"",id:"bc0c0dbed99fd61372bcbb87284ff132f953603d"},{title:"Side 2-wide",tags:["s2w","side2wide"],category:"term",content:"Or S2W for short. Leaving a two-block-wide well on the side of the field, a common combo setup.\\nS2Ws are easy to build and can create relatively long combos when used with Holds. However, it is less commonly used by advanced players due to its long setup time, susceptibility to incoming attacks during that time, and its relatively low efficiency. This can result in fewer combos or even top-outs.",link:"",id:"fb18e93b0a693cbef4609659daf1714d99d3a162"},{title:"Side 3-wide",tags:["s3w","side2wide"],category:"term",content:"Or S3W for short. Leaving a three-block-wide well on the side of the field, a less common combo setup.\\nAlthough it can produce more combos than S2W, S3W is prone to breaking the combo.",link:"",id:"46e7c422a59938f5d9b0b23008df93feadb2c537"},{title:"Side 4-wide",tags:["s4w","side4wide"],category:"term",content:"Or S4W for short. Leaving a four-block-wide well on the side of the field. A common combo setup.\\nIn addition to producing very long combos, S4W requires a shorter setup time compared to other well setups. This allows the player to produce a long combo before the opponent sends attacks. Compared to C4W (see entry), S4W is more balanced because the player can be topped out during setup.",link:"",id:"c5b6dbb14894c93f7fc9c79d2079aafc447c4531"},{title:"Center 1-wide",tags:["c1w","center1wide","centerwelltetris"],category:"term",content:'Or C1W for short. Leaving a one-block-wide well at the center of the field.\\nA useful setup for both Tetrises and T-spin doubles that is not difficult to build.\\n\\nAlso known as \\"center well Tetris.\\',link:"",id:"7465ba018bc6eed61a4449e00cbe6ea208f20623"},{title:"Center 2-wide",tags:["c2w","center2wide"],category:"term",content:"Or C2W for short. Leaving a two-block-wide well at the center of the field.\\nA possible but uncommon combo setup.",link:"",id:"90dab11c89a910239eed4507cc26fddabf223cc6"},{title:"Center 3-wide",tags:["c3w","center3wide"],category:"term",content:"Or C3W for short. Leaving a three-block-wide well at the center of the field.\\nA possible but uncommon combo setup.",link:"",id:"425bb84cf103341dc42b57d13e72fb684115fa48"},{title:"Center 4-wide",tags:["c4w","center4wide"],category:"term",content:"Or C4W for short. Leaving a four-block-wide well at the center of the field.\\nA setup that can produce an obscene amount of combos if used well.\\nThis infamous combo setup is relatively easy to build, has a strong defense against incoming attacks by exploiting the death conditions of many modern Tetris games, and is extremely biased in favor of the player building it. Many players dislike or even despise this technique for these reasons. Use this technique with caution in real world battles.",link:"",id:"89d450dcdb461bd385e2d4bd29110d3ba10ee27e"},{title:"Residual",tags:["c4w","s4w"],category:"term",content:"This term refers to the number of block(s) left in the well in a 4-wide combo setup. Long combos are often achieved using a 3-residual (3-res) or 6-residual (6-res) setup.\\n3-res is easier to learn because it has fewer variations and a good chance of producing long combos.\\n6-Res is more variable and harder to learn but can produce longer combos than 3-Res if executed well.\\n\\nIn general, the order of priority for these setups in combat is 6-Res, then 3- and 5-Res, and then 4-Res.",link:"",id:"d6af6d97859b2612ce5fc2653c9ddf5036fb8c99"},{title:"6–3 Stacking",tags:["6-3stacking","63stacking","six-three","sixthree"],category:"term",content:"A special stacking method where a six-block-wide stack is placed on the left side of the board and a three-block-wide stack is placed on the right side of the board, resulting in a one-block-wide well off-center.\\nThis method could reduce the number of keypresses for a skilled player and is popular in sprint modes to increase speed. The reason for this have to do with the fact that blocks spawn with a bias to the left. Notice that this method may increase keypresses for beginners.",link:"",id:"eb2fcbe49f9d1cc78ad414c33cf2966b8c7ff49a"},{title:"Freestyle",tags:["ziyou"],category:"term",content:"A term commonly used for TSD challenges. This term means completing a certain number of T-spin doubles in a challenge without using a fixed stacking setup. Compared to such setups such as LST, freestyles are more difficult and more representative of a player's T-spin skills in real-world battles.",link:"",id:"8eea92e6c5974836aa4076c88e09f2924d5ded01"},{title:"Topping out",tags:["die","death","topout","toppingout"],category:"term",content:"Many modern Tetris games use three death conditions. Triggering any of them would result in a game over.\\n1. Block out: the newly-spawn block overlaps with existing blocks in the field.\\n2. Lock out: the block locks entirely above the visible portion of the field.\\n3. Top out: the total height of the block stack exceeds a certain amount (usually 40). This is often caused by incoming garbage lines.\\n\\nTechmino does not use the lock out and top out mechanisms by default.",link:"",id:"b60e1815dfc9542bf93d71c17456e82bad369e09"},{title:"Buffer zone",tags:["above","super","invisible","disappear"],category:"term",content:'A zone above the visible part of the field, usually from the 21st to the 40th line.\\nThe buffer zone exists because blocks on the sides may exceed the visible field after a large number of garbage lines enter the field. These blocks would return to the visible field once the garbage lines are cleared.\\nBuffer zones are usually 20 lines high, but some games may have infinite buffer zones.\\n\\nSee also the entry for \\"Vanish Zone.\\',link:"",id:"54625bca607240177cc93583ebbc4139e8448087"},{title:"Vanish zone",tags:["disappear","gone","cut","die"],category:"term",content:"An area above the buffer zone, usually above the 40th line. Blocks usually enter the vanish zone through a combination of C4W and a large influx of garbage lines. When a block reaches the vanish zone, a top-out is usually triggered, ending the game.\\nDifferent games may have different behavior for the vanish zones. In Jstris, the vanish zone is above the 22nd line, and any blocks locked above the 21st line will disappear. Some games that have poorly designed buffer zones may behave unexpectedly or even crash when a block enters the vanish zone (e.g. Tetris Online).\\n\\nClick or tap the globe icon to open a video demonstrating a vanish zone bug in Puyo Puyo Tetris, where blocks reaching the vanish zone are copied infinitely when they return to the visible area.",link:"https://youtu.be/z4WtWISkrdU",id:"5c41dccc057da0f4cfc1301c44f5099f7983bbcc"},{title:"Falling speed",tags:["fallingspeed","gravity"],category:"term",content:'The speed at which blocks move down. It is usually measured in the unit \\"G\\", which is the number of line(s) the block falls down in one frame, usually assuming a frame rate of 60 fps. For example, a block is said to have a falling speed of ¹⁄₆₀ G if it falls down one row per second. The maximum speed of modern Tetris is 20 G (since there are 20 lines in the visible field). \\nIn Techmino, speed is also described as the number of frame(s) it takes for a block to move down one line. A speed of 60 corresponds to one line per second or 1 G in this system.\\nIn practice, the term \\"20G\\" usually refers to \\"infinite speed.\\" See the entry for \\"20G\\" for more information.',link:"",id:"205d98d9b1f82e738601bf0563722d148ce6aef2"},{title:"20G",tags:["gravity","instant"],category:"term",content:'The highest falling speed in modern Tetris. In 20G modes, blocks appear instantly at the bottom of the screen without the process of falling.\\nAlthough the term may suggest a falling speed of 20 blocks per frame, 20G usually implies an infinite speed.\\nAlso, in 20G modes, falling movements have higher priority than any other user input; for example, even if the ARR is set to 0, the block would still fall straight down before moving sideways. This makes it impossible to make a block climb over a \\"hill\\" or jump out of a \\"pit\\" in some situations.',link:"",id:"80ef56f897fd0246756dacbc9b49127fc1f84a80"},{title:"Lockdown Delay",tags:["lockdelay","lockdowndelay","lockdowntimer"],category:"term",content:"Or LD for short. The delay between when the block touches the ground and when it locks (can no longer be controlled). In classic Tetris games, this delay is usually the same as the time it takes for a block to move down a row, and is independent of player input. In modern Tetris games, this delay is usually more variable and is reset after the block moves or rotates. In many games, the resets have an upper limit (usually 15 times).",link:"",id:"7d564fa7375cf771b8f8eaab3b45df1712d328ce"},{title:"ARE",tags:["spawn","appearance","delay"],category:"term",content:'Also called entry delay. This term refers to the delay between when a block locks down and when another block is spawned.\\n\\nThe word \\"ARE\\" is not an acronym or initialism. It derives from the Japanese word <あれ> (a-re), meaning \\"it\\" or \\"that.\\',link:"",id:"349e2a410c1fadbc3bd2b1cf79ce2b06618e2bfe"},{title:"Line ARE",tags:["appearance","delay"],category:"term",content:"The delay between the start of a line clear animation and the spawning of the next block.",link:"",id:"65eaf46ca8a6f0b3cc2c3396cef9c48de0790528"},{title:"Death ARE",tags:["die","delay","dd"],category:"term",content:"A special mechanism that can prevent game over in some cases. A death ARE is triggered when a newly spawned block would overlap with existing blocks (resulting in a block out). When this happens, an additional delay is added to the (spawn) ARE to allow the player to use IRS, IHS, or IMS to prevent a game over.\\nOriginally proposed by @NOT_A_ROBOT.",link:"",id:"f848cce45f49f75e1a0767b36e78dc0737cc90a4"},{title:"Finesse",tags:["finesse"],category:"term",content:`A technique that moves a block to the desired location with the minimum number of keypresses. Finesse usually doesn't consider locations that require soft drops to move into. Finesses save time and reduce the chances of misdropping a block.\\nFinesse is an essential skill in playing Tetris. We recommend that you start learning finesse as soon as possible. You can find videos about finesse on YouTube. Start by learning the basics and then start practicing, keeping accuracy as the first priority before speeding up.\\nNote that in Techmino, finesses are not exactly \\"the theoretically simplest keystroke sequence it takes to move a block to a particular location.\\" Finesses are only detected when a piece locks into a position that does not require soft drops, so the finesses strikes are not reset after a spin or a tuck.\\nIn Techmino, the finesse rate (%) is defined as 100% (Perfect) when the number of keypresses is equal to or less than the standard reference, 50% (Great) when one keypress is above the standard, 25% (Bad) when two keypresses above, and 0% (Miss) when three or more keypresses above. A Bad or Miss breaks the finesse strike.\\nFinesse is usually not considered in conditions such as locations that require soft drops, high gravity, or very high fields. The finesse counter also works the same in Techmino regardless of gravity (even in 20G modes), so the result may not be meaningful in high gravity conditions.`,link:"",id:"4f97b8462d8b08e876e39f6feb92f96975b89a13"},{title:"'Researching'",tags:["scientificresearching"],category:"term",content:"(<科研>, ké yán) A commonly used term in the Chinese Tetris community, referring to the act of experimenting or practicing advanced techniques (such as new T-spin setups) in a low-stress game mode. Techmino uses this term to refer to modes that require spins almost all the way.",link:"",id:"0098ee2953d8d532f17e4ac2a8086ecda513571b"},{title:"Keymapping",tags:["feel"],category:"term",content:"Here are our recommendations for configuring your key mappings.\\n\\n1. Avoid assigning a finger or thumb to multiple keys that may be pressed at the same time. We recommend assigning the rotation keys to one finger (since they are not typically pressed together) and one key for each of the other fingers.\\n2. Unless you are very confident, avoid assigning keys to your little fingers (because they are less agile than your other fingers or thumbs).\\n3. It's not necessary to copy someone else's key mapping. Everyone is different, and key mappings shouldn't really affect your skills if you follow rules 1 & 2.",link:"",id:"b9cedaa49f53d1225372a71a43cd8f27f33112fe"},{title:"Handling",tags:["feel","handling"],category:"term",content:"Here are some common factors that can affect handling.\\n\\n1. Input latency, which depends on device conditions and configurations. It can be reduced by rebooting or changing your devices.\\n2. Program stability, which depends on the game's programming and design. It can be alleviated by lowering graphics quality and disabling visual effects.\\n3. Intentional designs by the game.\\n4. Incorrect parameter settings. It can be alleviated by fine-tuning these parameters.\\n5. Physical postures. Try moving to a more comfortable position.\\n6. Recent changes to your devices or keyboard mapping.\\n7. Muscle fatigue, decreased responsiveness, or decreased coordination. Try resting or returning in a few days.",link:"",id:"b9a97b14e2e11e176a511e19049092d54e0f3217"},{title:"DAS & ARR (simple)",tags:["das","arr","delayedautoshift","autorepeatrate"],category:"term",content:`Imagine typing on a keyboard and holding down the \\"O\\" key to get a string of o's on the screen. On a timeline, it would look like o————o-o-o-o-o-o-o-o-o…, where the \\"————\\" part can be considered as DAS, and the \\"-\\" part can be considered as ARR.`,link:"",id:"a682e4737de91d58112414fbb9f9fde206195c7d"},{title:"DAS & ARR",tags:["das","arr","delayedautoshift","autorepeatrate"],category:"term",content:"DAS refers to Delayed Auto-Shift, the delay between when a block moves one block sideways and when the block begins to move automatically.\\nARR refers to Auto-Repeat Rate, the delay between each of the above automatic movements.\\nDAS and ARR are measured in f (frame, ¹⁄₆₀ s at 60 fps) or ms (millisecond). 1 ms is equal to 16²⁄₃ frames.",link:"",id:"7608dd8eac382e68b86388e11dcb45940d8c14a7"},{title:"DAS tuning",tags:["das","tuning"],category:"term",content:"For relatively advanced players who want to increase their speed, we recommend a DAS of 4–6 f (67–100 ms) and an ARR of 0 (blocks move to the wall immediately after DAS). If this is too fast for you, try increasing the DAS a bit, but keep the ARR below 2 f (33 ms). In general, DAS should be kept as low as possible so that taps and holds can be distinguished; ARR should be kept to a minimum (if not zero).",link:"",id:"6d6f643162cb3b8b8ac0cc6cc2fe7a6b2dd0e22d"},{title:"DAS cut",tags:["dascut","dcd"],category:"term",content:"A special delay applied to DAS when a new block is spawned. When this happens, a small delay is added before the DAS starts timing, so that a piece doesn't start moving immediately when a sideways direction key is pressed.\\nOther games may have similar mechanisms, but they may work differently.",link:"",id:"f1572d92a202c3b765675fc16f05387529934e47"},{title:"IRS cut",tags:["irscut","icd"],category:"term",content:"A special delay applied to IRS when a new block is spawned. When entry delay is disabled, this will delay IRS from being applied, allowing you to release the rotation button in the period to avoid a misdrop.",link:"",id:"0a7860f1238c08be1417ada62b1a57e84bf3799a"},{title:"Auto-lock cut",tags:["autolockcut","mdcut"],category:"term",content:"A feature in Techmino that prevents a block from being misdropped after a new block is spawned. Hard drops will be disabled for a short time after the previous block has been locked.\\nOther games may have similar mechanisms, but they may work differently.",link:"",id:"f4b36fb1760d2f061153e1dcb699c890c5de34bf"},{title:"SDF",tags:["softdropfactor"],category:"term",content:"Soft Drop Factor, a number describing the relative speed of soft drops in some games. In many modern Tetris games, soft drops are realized by speeding up the natural drop by a constant factor (SDF). Guideline Tetris games usually have an SDF of 20, i.e. the soft drop speed is 20 times the natural falling speed.\\nTechmino uses a constant soft drop speed (described by ARR) instead of the SDF to determine soft drop speeds.",link:"",id:"0c1a2da50ac9dcd8ad674794c7981f5c2ee2a405"},{title:"Shape & Names",tags:["mino"],category:"term",content:"Here is a list of the all the blocks used by Techmino and their corresponding names:\\nTetrominos:\\nZ:`CHAR.mino.Z`, S:`CHAR.mino.S`, J:`CHAR.mino.J`, L:`CHAR.mino.L`, T:`CHAR.mino.T`, O:`CHAR.mino.O`, I:`CHAR.mino.I`;\\n\\nPentominos:\\nZ5:`CHAR.mino.Z5`, S5:`CHAR.mino.S5`, P:`CHAR.mino.P`, Q:`CHAR.mino.Q`, F:`CHAR.mino.F`, E:`CHAR.mino.E`, T5:`CHAR.mino.T5`, U:`CHAR.mino.U`, V:`CHAR.mino.V`, W:`CHAR.mino.W`, X:`CHAR.mino.X`, J5:`CHAR.mino.J5`, L5:`CHAR.mino.L5`, R:`CHAR.mino.R`, Y:`CHAR.mino.Y`, N:`CHAR.mino.N`, H:`CHAR.mino.H`, I5:`CHAR.mino.I5`;\\n\\nTriminos, Domino, and Monomino:\\nI3:`CHAR.mino.I3`, C:`CHAR.mino.C`, I2:`CHAR.mino.I2`, O1:`CHAR.mino.O1.",link:"",id:"7130f45854f471c3d297dd8f2eacd0de92b435f0"},{title:"Bag7 generator",tags:["bag7bag","randomgenerator"],category:"term",content:'Also known as \\"7-bag generator,\\" officially known as \\"random generator\\". The algorithm (generator) used by most modern and official Tetris games to generate the sequence of blocks. In Bag7, the sequence of blocks is divided into groups (bags) of 7 blocks. Each bag must contain all seven tetrominoes, but the order is random. This system prevents the uneven spawning of certain blocks in the long run.\\n\\nAn example of a Bag7 block sequence would be ZSJLTOI OTSLZIJ LTISZOJ.',link:"",id:"6d9c71eb6a57501393a43f83f2e0a8e09fa4492f"},{title:"His generator",tags:["history","hisgenerator"],category:"term",content:`An algorithm (generator) used to generate the sequence of blocks, most commonly used in the TGM series. In the HIS generator, each block is first generated (rolled) randomly, and a check is made to see if this block is the same as one of the few previous blocks. If it is, the process is repeated (rerolled) until a different block is generated or an upper limit is reached.\\nThe His generator is usually described using the format\\"His [number] Roll [number],\\" where the first number is the number of previous blocks checked by the generator, and the second number is the upper limit of the number of rerolls. For example, a \\"His 4 Roll 6\\" (or \\"h4r6\\") randomizer rerolls if the block is the same as any of the previous 4 blocks and up to 6 times before moving on to the next block.\\nIn Techmino, the maximum number of rerolls is half the number of blocks checked by the randomizer (rounded up for non-integers). \\n\\nThe His randomizer is an improved version of the simple randomizer and reduces the chances of consecutive S's or Z's.`,link:"",id:"ab36b0721b5150285460f4114632a7ac32dbd641"},{title:"HisPool generator",tags:["hisPool","history","pool"],category:"term",content:`History Pool Randomizer, a derivative of the His generator. It added a \\"pool\\" mechanism from which the new blocks are spawned, as opposed to the simple random generator used by His. HisPool also increases the probability of spawning a block with the lowest presence.\\n\\nThis mechanism stabilizes the sequence and ensures that a drought (see entry) doesn't last forever. The stability of HisPool lies between His and Bag.`,link:"",id:"5bac08ced59bb2ea7e301905331016233d01b5c4"},{title:"bagES generator",tags:["bages","easy","start"],category:"term",content:"Bag Easy-Start, a derivative of the bag generator used in Techmino. The first block in the first bag will not be S, Z, S5, Z5, F, E, W, X, N, or H, which can be difficult to place at the beginning of the game.",link:"",id:"5405416adcd999f523c13847c867bc953a50e348"},{title:"Reverb generator",tags:["reverb"],category:"term",content:"A generator used in Techmino, derived from the Bag generator. The Reverb generator repeats each block several times based on the sequence of the Bag Generator. The probability of repetition decreases with the previous presence of that block. The theoretical number of repetition(s) ranges from 0 to 6.",link:"",id:"e666cf860bf1987ebd5b590694bb2fc5562cfc14"},{title:"C2 Generator",tags:["cultris2generator","cultrisiigenerator","c2generator"],category:"term",content:"The generator in Culturis 2 uses the following algorithm to generate block sequences:\\n1. Set the weight of all tetrominoes to 0 at the beginning of the game.\\n2. Divide all weights by 2, then add a random number (0-1) to all weights.\\n3. Pick the tetromino with the highest weight, then divide that tetromino's weight by 3.5.\\n4. Repeat from step 2.",link:"",id:"0a5ae9089bd85bf9e36c70bc8c67fedaf480d855"},{title:"Hypertapping",tags:["hypertapping"],category:"term",content:`A technique commonly used in classic Tetris. It involves rapidly vibrating your finger on a button to get a faster sideways movement than simply holding down the button. This is because most classic Tetris games have long, non-adjustable DAS, where tapping the button quickly is faster than waiting for the automatic movements. Hypertapping is also used in Tetris games with long, non-adjustable DAS. However, it's not necessary in most modern Tetris games because they have adjustable DASs and ARRs. A person who can use this technique is called a \\"hypertapper.\\`,link:"",id:"7f55567f8365492d7d89e5263bae13ddfd7dd110"},{title:"Rolling",tags:["rolling"],category:"term",content:"Another technique used in classic Tetris to achieve fast sideways movement under high gravity (~1 G).\\nThis technique involves partially resting the controller (or keyboard) on a surface (or your legs) with one finger or thumb on the button, and then rapidly tapping the back of the controller with the fingers of the other hand to achieve very fast key presses. This allows the player to achieve an even faster speed than hypertapping (see entry) with less effort.\\nThis method was first discovered by @Cheez-fish, who once reached a tapping speed of over 20 Hz.",link:"",id:"cce4a01162239dcae72a7c9efcbe9d34271f79dd"},{title:"Passthrough",tags:["pingthrough"],category:"term",content:"A situation where both players' attacks are sent to the opponent's board without canceling out in combat.\\nIn TETR.IO, if passthrough is enabled in custom games, it will be triggered within a short time after the opponent's attack. During this time, the player's attack is passed to the opponent without canceling the incoming attack. A player can wait for the timeout if that player wants to actually clear the garbage lines.\\nPingthrough, a related term, refers to a situation where an accidental passthrough occurs due to Internet delays. A Tetris game with only basic support for Internet battles may experience pingthroughs.",link:"",id:"df7b059100be419ab627bfadbc922d138496657a"},{title:"Tetris OL attack",tags:["top","tetrisonlineattack"],category:"term",content:"- Singles, doubles, triples, and Tetrises send 0, 1, 2, and 4 attacks respectively.\\n- T-spin singles, doubles, and triples send 2, 4, and 6 attacks respectively; the attack is halved if it is a T-Spin Mini.\\n- Combos add the following number of attacks (starting with 1 combo) 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, etc.\\n- Back-to-backs add 1 extra line of attack (3 if it is a TST).\\n- Perfect Clear adds 6 extra lines of attack. Note that these 6 lines are immediately sent to the opponent without canceling incoming attacks.",link:"",id:"005a7c5f67a30ee4498db0018a8db3c93b9c540b"},{title:"Techmino attack",tags:["techminoattack"],category:"term",content:"See the User Guide in the lower right corner of the home page.",link:"",id:"71e2c71f28dcfc49b7f601bcecb47b50f36ebb55"},{title:"Stacking",tags:["stacking"],category:"term",content:"Stacking the tetrominoes without leaving any holes. An essential skill that requires a good next-reading ability. It can be practiced by playing 40L with only Tetrises and no Hold.",link:"",id:"3e8b953a8419c105e1f64a0d1181d1dea10781dc"},{title:"Rotation buttons",tags:["doublerotation","triplerotation"],category:"term",content:"Using both rotation buttons (clockwise and counterclockwise) would reduce the number of keystrokes, since rotating three times in one direction is the same as rotating once in the opposite direction. This is also a prerequisite for learning finesse.\\nBy using all three rotation buttons (adding 180° rotation), one can use one keypress to rotate any block into its desired orientation (when spins are not considered). \\nHowever, we do not recommend that you spend too much time practicing with all three rotation buttons. This is because not all Tetris games have 180° rotations, and using three rotations would not increase your speed significantly compared to using just two. It is not a necessary skill unless you want to pursue extremely high speed.",link:"",id:"5eb2e8c6610f57b15de914409e168d8678fd525e"},{title:"Drought",tags:["drought"],category:"term",content:"A situation in which a block desired by a player does not spawn for a long time. This usually refers to I tetrominoes (the long bar) in classic Tetris games, since they often use a simple random generator.\\nIn most modern Tetris games, droughts are impossible because of the Bag7 generator (see entry). With the Bag7 generator, the maximum distance between two identical blocks is 13.",link:"",id:"de3322bcc2a57ff2077da77926f37dd42fd7d531"},{title:"Bone block",tags:["bone","tgm"],category:"term",content:'The block skin used by early versions of Tetris.\\nMany early computer systems used command line interfaces as the main way for a user to interact with the computer. This is similar to the Command Prompt in Windows, the Terminal in MacOS, and the Console in Linux. These computer systems can only display text and icons on the screen. Because of this limitation, many early versions of Tetris used a pair of brackets [ ] to represent a single mino. This is called a \\"bone block\\" because of its appearance.\\nIn Techmino and many other modern Tetris games, a bone block is a single but distracting block skin used by all blocks. Different block skins may come with their own bone block designs.',link:"",id:"612ec806b0212de8c33c7849db89cf7921305aca"},{title:"Semi-invisible",tags:["half","invisible","semi"],category:"term",content:"A rule where blocks become invisible after a certain amount of time after locking down. This time interval doesn't have to be a fixed value.",link:"",id:"772fe38d6c7282941520475509279f88d4cd11c8"},{title:"Invisible",tags:["invisible"],category:"term",content:'A rule where blocks disappear immediately after locking down. A disappearing animation can also be present, but it would reduce the difficulty of the game. In Techmino, invisible modes without this animation are called \\"sudden invisible.\\',link:"",id:"ebee4647097ebcde67f7476561b47ef02f16f239"},{title:"MPH mode",tags:["mph"],category:"term",content:"A game mode. MPH is an initialism for Memoryless (the mode uses a simple random generator), Previewless (no next queue), Holdless (no hold). This mode challenges the player's reaction speed.",link:"",id:"867143c6f4fe150954b1c03a3e4f052419ae5f7f"},{title:"Input delay",tags:["input","delay"],category:"term",content:"Regardless of the specific input device, all inputs would take some time to reach the game, usually ranging from a few to a few tens of milliseconds. If the input delay is too large, the controls will become noticeably jerky and interfere with the gaming experience. This effect can be seen in games such as Tetris Online or Tetris Effect.\\nInput delay is usually influenced by hardware performance and usage, which usually cannot be eliminated. Turning off low-power mode and turning on performance or gaming mode on your devices can help alleviate this problem.",link:"",id:"af0b93e9d1405a3d40966d52cf65c6c97a09aeef"},{title:"Secret Grade",tags:["larger","than"],category:"term",content:'An easter egg mode from the TGM series. In a \\"secret grade\\" gameplay, the player tries to make a \\">\\" shape (with a hole in each line) on the board. The goal is to complete the shape with 19 lines.\\nClick on the globe icon to open a web page with techniques to help you achieve the secret grade.',link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"fa5be3452195cb4c64bc484187d16e3b7ff826e8"},{title:"Cold Clear",tags:["cc","coldclear","ai","bot"],category:"term",content:"A Tetris bot originally developed by MinusKelvin for Puyo Puyo Tetris. The Cold Clear build used in Techmino also supports all spins and TRS.",link:"",id:"82effb328f058f0c9c688fd3bd6efac733ffc2de"},{title:"ZZZbot",tags:["ai","bot","zzztoj"],category:"term",content:"A Tetris bot developed by the Chinese Tetris player Zòu Zhī Zhāng (<奏之章>) and has good performance in many games.",link:"",id:"05333e02ab6b243b185cfe8cabd36f0023bbffe8"},{title:"Openers",tags:["setup","openers"],category:"setup",content:"A fixed setup that can be built at the beginning of a game. Technically, an opener setup can also be built mid-game, but it may require different block placements.\\n\\nA good opener usually meets at least two of the following criteria:\\n- Can adapt to different block sequences.\\n- Has a strong attack and minimal T-block waste.\\n- Does not require too many soft drops; most operations can be accomplished with finesse.\\n- Has clear follow-up strategies with few branches.\\n\\nNote that most openers are designed based on the Bag7 generator because of its predictability. They may not work properly with other generators.",link:"",id:"e7099b61ef50965da5215bcc48163a36951e7971"},{title:"DT Cannon",tags:["dtcannon","doubletriplecannon"],category:"setup",content:"Double-Triple Cannon.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=dt",id:"825f400c22ff321ee14cb6c24bbdec79eb7679ed"},{title:"DTPC",tags:["dtcannon","doubletriplecannon"],category:"setup",content:"A follow up to DT Cannon that ends with a perfect clear.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=dt",id:"00ea1c8b138ca0e94b30eb70514241c954374143"},{title:"BT Cannon",tags:["btcannon","betacannon"],category:"setup",content:"Beta (β) Cannon.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=bt_cannon",id:"32c882a5452d010f3b318eacb459bbd888c570b9"},{title:"BTPC",tags:["btcannon","betacannon"],category:"setup",content:"A follow-up to BT Cannon that ends with a perfect clear.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=bt_cannon",id:"ffc52c269d5306b4abe069c7dfb34ba6058e713e"},{title:"TKI 3 Perfect Clear",tags:["ddpc","tki3perfectclear"],category:"setup",content:"A TSD opener that leads to a sequence of Double–Double–Perfect Clear.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"359c94332c19bc4ae7d3b27e1e8466354b8e468a"},{title:"QT Cannon",tags:["qtcannon"],category:"setup",content:"A DT Cannon-like setup with a higher probability of sending a TSD–TST attack.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=QT_cannon",id:"56a69c656d51244f3988cf1263f22bebaba8842d"},{title:"Mini-Triple",tags:["mt","minitriple"],category:"setup",content:"A Mini T-Spin—TST setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=mt",id:"3bd99182008224ed25add58cc10a3e41173134e4"},{title:"Trinity",tags:["trinity"],category:"setup",content:"A TSD + TSD + TSD or TSMS + TST+ TSD setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=trinity",id:"8a966740d196e0ba079bb2b47ab68d3e3aace2c5"},{title:"Wolfmoon Cannon",tags:["wolfmooncannon"],category:"setup",content:"An opener.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"fddffb96cf2eda7128b93daf4700245840df6a51"},{title:"Sewer",tags:["sewer"],category:"setup",content:"An opener.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=sewer",id:"b79d47b6d03b962bcbd5cc75ace4bc9c6f4190b2"},{title:"TKI",tags:["tki-3","tki3"],category:"setup",content:"TKI-3. It can refer to either a TKI-3 starting with a TSD or a C-spin starting with a TST.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=tki_3_opening",id:"43886079c0f13610faaf00d9ca7dee5f55f76031"},{title:"God Spin",tags:["godspin"],category:"setup",content:"A setup invented by @windkey that looks fancy but has limited real-world combat value.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=godspin",id:"1dbd09ba25834a7281a7758d9e4a90d41afab3bd"},{title:"Albatross",tags:["albatross"],category:"setup",content:"A fancy, fast paced opener with a sequence of TSD-TST-TSD-Perfect Clear that hardly wastes any T blocks.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"62e12e5df8c9ee006b58432b4f2a68ed115b31c9"},{title:"Pelican",tags:[],category:"setup",content:"An Albatross-like opener that can be used when the block sequence does not allow the Albatross setup.",link:"https://harddrop.com/wiki?search=Pelican",id:"6a9ca12c5d2ee32bff38b69550ee9e1f1b782bb2"},{title:"Perfect Clear Opener",tags:["7piecepuzzle"],category:"setup",content:"A perfect clear opener that is easy to set up and has a high success rate (~84.6% with an I in the hold and ~61.2% otherwise). This opener is included in the PC training modes of Techmino (the one with the irregular empty space). \\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"c8a0f5bb27cc9fdd2db40c164c4cb9aedfe1d7a2"},{title:"Grace System",tags:["liuqiaoban","gracesystem","1stpc"],category:"setup",content:"A PC opener with a success rate of ~88.57%. This opener is included in the PC training modes of Techmino (the one with the 4×4 square opening).",link:"https://four.lol/perfect-clears/grace-system",id:"e2bcb9f89bdf4a3ed28dace5f7ab1996762e3abe"},{title:"DPC",tags:["DPC"],category:"setup",content:"A PC opener with an almost 100% success rate in many scenarios when there is one block left in the 7Bag (in the Next queue) and an empty field.\\nFor more information, visit tetristemplate.info by clicking on the globe icon (Link in Japanese).",link:"https://tetristemplate.info/dpc/",id:"e812f63c7d1cebe6ebfc1c0df01d367ce53797f1"},{title:"Gamushiro Stacking",tags:["gamushiro"],category:"setup",content:"(<ガムシロ積み>, Gamushiro Tsumi)\\nA TD-Attack opener.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"3c016f28de7338317c076399e79dccd4df77c895"},{title:"Mid-game Setups",tags:["midgamesetups"],category:"pattern",content:"Setups that can generate strong mid-game attacks. Some of these setups could also be used as openers, although they are unnecessary.",link:"",id:"b4491b3063705e886fcce818e4d43029385c5b51"},{title:"C-spin",tags:["cspin"],category:"pattern",content:"A T-Spin Triple + T-Spin Double setup, known as TKI in Japan.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=c-spin",id:"5efb9c21dbdde3893732c32d2d3a710c622ba606"},{title:"STSD",tags:["stsd"],category:"pattern",content:"Super T-Spin Double, a setup that produces two T-Spin Doubles.\\nA weakness of this setup is that no TSD can be performed if the garbage hole is directly under the setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=stsd",id:"6b0e6c980b91de0873674f9b4a7d749d1de40b6d"},{title:"STMB Cave",tags:["stmb"],category:"pattern",content:"A donation setup that uses an S or Z to block a 3-wide well and produce a T-spin double.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=stmb_cave",id:"7a9f93dc4e742ef564a57e71b7967a192c6350c4"},{title:"Fractal",tags:["shuangrenjian","fractal","spider"],category:"pattern",content:"A setup where two TSD setups are stacked on top of each other.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Fractal",id:"29b12d8030f33a21265f78caaa1d15b7f4129e17"},{title:"LST stacking",tags:["lst"],category:"pattern",content:"An infinite T-Spin Double setup.",link:"https://four.lol/stacking/lst",id:"774b52eaed2c775146516a910a686b517056ed41"},{title:"Hamburger",tags:["hamburger"],category:"pattern",content:"A T-spin single donation setup that opens up for Tetrises after the T-spins.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=hamburger",id:"9aee64c6803871ff0bafc4d4cfd016360ff1c827"},{title:"Imperial Cross",tags:["imperialcross"],category:"pattern",content:"A setup that involves building an overhang on a cross-shaped hole to perform two TSDs.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=imperial_cross",id:"914127e70d29100d7e56a67a9cb8926bc035451f"},{title:"Kaidan",tags:["jieti","kaidan","stairs"],category:"pattern",content:'From the Japanese words for \\"stairs\\" (<階段>, kaidan).\\nA setup that donates a TSD on stair-like terrains.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.',link:"https://harddrop.com/wiki?search=kaidan",id:"979e233899a40823416160d6e8929ba0fce0b4ed"},{title:"Shachiku Train",tags:["shachikutrain","shechu"],category:"pattern",content:"A setup that donates two TSDs on top of a TST setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"dfa8128341595f1af9034d5888f601b45446c79b"},{title:"Cut Copy",tags:["qianniao","cutcopy"],category:"pattern",content:"A setup that donates a TSD on a small hole and performs another TSD after the first.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Cut_copy",id:"d388fd5b2310a85d10c12dc7ffa63a0f1a4491c7"},{title:"King Crimson",tags:["kingcrimson"],category:"pattern",content:"A setup that stacks multiple TST setups on top of an STSD setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=King_Crimson",id:"ee4d1363ba8655e185548fe4f11efc14815dcfa1"},{title:"Consecutive PCs (1/2)",tags:["pcloop"],category:"pattern",content:"Four.lol has a tutorial on how to achieve consecutive PCs. After finishing the 7th PC, exactly 70 blocks will be used (10 whole bags), so the situation returns to the setup of the 1st PC.",link:"https://four.lol/",id:"d16bffbe57086583517ae87ca2fd02f118cdeed3"},{title:"Consecutive PCs (2/2)",tags:["pcloop"],category:"pattern",content:"A complete PC-loop tutorial written by NitenTeria (in Simplified Chinese).",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"66dc9dee0001ef27ec25a5eb022eb569fe62d75b"},{title:"Console",tags:["cmd","commamd","minglinghang","kongzhitai","terminal"],category:"command",content:'Techmino has a console for debugging, enabling advanced settings, and more.\\nTo access the Techmino Console, click or tap on the Techmino logo in the main menu, or press the C key on your keyboard several times. Type \\"help\\" in the Console and press Enter/Return to get more information.\\n\\nUse the Console responsibly, as careless actions can cause corruption or loss of game data.',link:"",id:"7ecdaf88bce56cd24ba047b93460435726bd0889"},{title:"Reset all settings",tags:["reset","setting"],category:"command",content:'To reset all the settings, go to the Console, type \\"rm conf/setting\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, you can cancel this operation by going to Settings and returning to the main menu.',link:"",id:"da1bf555021704d34a46f62d95dd3b55819e1fe3"},{title:"Reset statistics",tags:["reset","statistic","data"],category:"command",content:'To reset all statistics, go to the Console, type \\"rm conf/data\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, you can cancel this operation by starting a game and winning or losing that game.',link:"",id:"dfd06a63b6e7e22b88dfe5c50b72b9a1640c4381"},{title:"Reset map progress",tags:["reset","unlock"],category:"command",content:'To reset your map progress, go to the Console, type \\"rm conf/unlock\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, you can cancel this operation by updating the status of any mode on the map. Note that this operation does not affect the existing grades on the map.',link:"",id:"3bad8c77ed030c8bba1cd27134d4e751fdb3c6a9"},{title:"Reset records",tags:["reset","record"],category:"command",content:`To reset your local records (leaderboard), go to the Console, type \\"rm -s record\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, if you update a mode's leaderboard, the records for that mode will be preserved after you restart the game.`,link:"",id:"9e619f0153c598b23c720a4d3a9e4ba962c3e137"},{title:"Reset key settings",tags:["reset","virtualkey"],category:"command",content:'To reset key settings, go to the Console, type \\"rm conf/[key settings]\\" and press Enter/Return. You can type different commands for [key settings] to delete different settings. Type \\"key\\" to delete key mappings, and type \\"virtualkey\\" to delete virtual key settings. You can also type \\"vkSave1\\" or \\"vkSave2\\" to delete specific virtual key configurations. Restart Techmino for the first two commands to take effect; the last two are effective immediately.\\nBefore exiting the game, you can cancel the operation by entering and exiting their corresponding settings.',link:"",id:"97c36276637b63b77b82d4ba3841b2ac83f107ef"},{title:"Delete replays",tags:["delete","recording"],category:"command",content:'To delete all recordings, go to the Console, type \\"rm -s replay\\" and press Enter/Return. Effective immediately.',link:"",id:"ea68b06044081b0efaeca964c52ed4e36f00735f"},{title:"Delete cache",tags:["delete","cache"],category:"command",content:'To delete all caches, go to the Console, type \\"rm -s cache\\" and press Enter/Return. Effective immediately.',link:"",id:"c7b8ba787d0998486e9439635f2910ccef98e88e"},{title:"SFX",tags:["soundeffects"],category:"english",content:'Initialism for \\"Sound Effects.\\" Also abbreviated as \\"SE\\" in Japan.',link:"",id:"09731a9aea03079ef1e612facc4b927af79d1178"},{title:"BGM",tags:["backgroundmusic"],category:"english",content:'Initialism for \\"Background Music.\\',link:"",id:"a025fe6ea05e932a72f4b1de36f396da30531d3e"},{title:"TAS",tags:["tas"],category:"english",content:`Acronym for \\"Tool-Assisted Speedrun (or Superplay).\\" TAS refers to the act of playing a game with special tools that allow a player to achieve supra-human levels of play without breaking the game's rules. In other words, TAS allows a player to \\"play like a god\\" without breaking or modifying the programming itself. TAS is usually used to reach the theoretical extreme of a game or to achieve a specific goal that may not be practically possible. \\n\\nTechmino has a simple TAS tool built in.`,link:"",id:"ce44e41a48ba32311458e07dd1c34e29bff3a70c"},{title:"AFK",tags:["afk"],category:"english",content:'Initialism for \\"Away From Keyboard.\\" This term refers to a period of time when a player is not actively playing a game in order to rest. Taking regular breaks can help relieve muscle tension and restore stamina and responsiveness when you return to gemeplay.',link:"",id:"f78ce564692852c965794021f5fafdd333a980f0"},{title:"Timing",tags:["timing","shiji","fanji"],category:"term",content:"In Tetris, timing refers to the choice of moments to attack with optimal effort. Good timing can help you to defend yourself while crushing your opponent. However, we recommend new players focus on their own fields and improve their speeds before learning timing.",link:"",id:"94fbe2663990ac1c6d258d319844309905033850"}],RR=[{title:"翻訳者からのメッセージ 1",tags:[],category:"help",content:"この日本語版TetroDictionary(通称:Zictionary)は、英語版を通して翻訳されています\\nそのため中国語版の内容を正確に反映していない可能性があります\\n\\n翻訳者を知りたい、翻訳に協力したい場合は地球儀ボタンをクリックしてGithubのページにアクセスしましょう!",link:"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_ja.lua",id:"0e104c0c3fce7bf740f86e7a27e2803ba34bac1f"},{title:"初心者へ",tags:["readme","初心者","下級者","コツ","ガイド","上達"],category:"help",content:"テトリス初心者の方へ\\n\\t2つの大事なこと:\\n\\t\\t1.操作性のいいテトリスを選びましょう(TechminoやTETR.IO, Jstris, Tetr.js)\\nガイドラインから大きく離れ、プログラミング教材に使われているような操作性の悪いものはプレイしないでください\\n\\t\\t2.ネクストを見る、テトリスを安定して行う等の基本的な能力育成に時間を費やしましょう\\nとりあえず今は、Tspinみたいな技は置いときましょう\\nどうせ基礎に費やす時間は変わりません\\n\\t2つの技術:\\n\\t\\t1.ミノの出現位置と操作方法を覚えて、好きな場所に移動できるようになりましょう\\n\\t\\t2.次のミノの置く場所をあらかじめ決められるようになりましょう\\n\\n地球儀ボタンをクリックすると中国のテトリスプレイヤー、Tatianyiさんが書いた「Suggestion for new players to Tetris Online」という記事の英語版(翻訳者:User670)が見れます",link:"https://github.com/user670/temp/blob/master/tips_to_those_new_to_top.md",id:"62513ab00ef43cc8f592b18636aa3e58560fb4dc"},{title:"おすすめの練習法",tags:["readme","初心者","下級者","コツ","ガイド","上達","練習"],category:"help",content:"ここでは、おすすめの練習方法を紹介します\\nもし煮詰まった場合は、リラックスして好きなモードを楽しみましょう!楽しむことが一番大事です!!\\n\\n以下は、達成してほしい目標のリストです\\nA,B,Cとセットがあり、更にその中に複数の目標がありますがセット単位で複数の目標を同時にこなすのがおすすめです\\n\\nA.積み(1)\\n\\tA1.ミノを置く前に次のミノも考慮に入れてください\\nもし次のミノが置きづらい場合には、今持ってるミノの置き場所を考え直してください\\n\\tA2.地形を平らにするよう意識するとどんなミノでも置きやすくなります(一部ではより具体的に横置きを意識するとも言われています)\\n\\tA3.ホールドが使える時は、今持っているミノ、ホールドにあるミノ、ネクストにあるミノの3つを意識するとより長い時間平らな地形を維持できます\\n\\nB.効率と速さ\\n\\tB1.ゴーストを見ながら置かないでください\\nこのミノをここに置くにはこの操作をするというのを頭の中で処理してください\\n\\tB2.回転キーは左右両方使ってください\\n一回の入力で済む操作は一回で処理しましょう\\n\\tB3.最適化を覚え始めてきたら速さはあまり気にしないでください\\n最適化は癖付けるものなので一度身につければ、精度を保ったまま速くなれます\\n\\nC.積み(2)\\n\\tC1.スプリント(40Line)を完走する\\n\\tC2.ホールドなしでスプリント(40Line)を完走する \\n\\tC3.Techrashだけでスプリント(40Line)を完走する\\n\\tC4.ノーホールド、Techrashだけでスプリント(40Line)を完走する\\n\\nCは難易度を調整しやすいので、自身の能力に合わせて難易度を調整してください\\n\\nCが終わった場合は、A1の練習をしてください\\nこれはテトリスの基本技術の一つでネクストの把握量が多ければどんなゲームモードでもすぐに上達できます",link:"",id:"d7c155467bc05a540df6d622489be9938a1a8579"},{title:"Tspinを学ぼう",tags:["t","tspin","t-spin","tスピン","上達法","初心者","下級者","ガイド","tip","おすすめ","練習","helps"],category:"help",content:"Tspinはテトリスの中でも高等技術なのでTspinの地形を見ているだけでは、習得できません\\nまた積みの技術やネクスト把握能力も必要になってきます\\nもし本当にTspin技術を上達させたい場合は、積みの技術などの土台となる技術をしっかり習得しましょう\\n\\nおすすめの習得タイミング:スプリント(40Line)を60秒(条件によっては40~120秒)以内に完走、Techrashだけで完走、ホールドなしで大きく減速せずに完走\\nこれらで十分にネクストを考慮した思考ができるようになってからTspinを学び始めることをおすすめします",link:"",id:"25dcd9af20341683587e6deb864a98599175b37e"},{title:"Techmino公式web",tags:["homepage","web","mainpage","ホームページ ウェブ メインページ","テクミノ","テックミノ","techmino"],category:"help",content:"Techminoの公式ホームページです!\\n最新の安定版Techminoをダウンロードしたり、プロフィールを編集したりできます\\n地球儀ボタンから是非アクセスしてください",link:"http://studio26f.org",id:"37a6ef13ad5deb346ef08a6998213cb61af288a7"},{title:"灰机wiki",tags:["huiji","wiki","ウィキ","うぃき","灰机","フイジ"],category:"help",content:"huiji wiki\\n\\n中国のテトリス研究グループとそのサブグループに所属しているテトリスプレーヤー達が管理している中国のテトリスwikiです\\n現在、大部分のページがHard drop wikiとTetris wikiから参照、翻訳されたページになっています",link:"https://tetris.huijiwiki.com",id:"e884700884d40b3c5a6f4fab018df5f32766754b"},{title:"HardDrop wiki",tags:["harddrop","hd","wiki","ハードドロップ","ハードロ","ウィキ","うぃき"],category:"help",content:"テトリス最大コミュニティ、HardDropが運営している英語テトリスwikiです",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"d5d959f9e39623358927f1cfbbefcdaa9c80b12e"},{title:"Tetris wiki",tags:["tetris","テトリス","てとりす","wiki","ウィキ","うぃき"],category:"help",content:"Tetris wikiはテトリス関連の情報に焦点を当てたwikiです\\nMyndziが2015年に開設しました\\n公式テトリス及びファン製作の落ちものパズルゲームの記録、ゲームの仕様の解析、上達のためのガイドの作成など様々な記事が長年にわたり何千も投稿されています",link:"https://tetris.wiki",id:"a55c3f66f84f44ac33b6a5781b11c1ad9edc6a6d"},{title:"Tetris Wiki Fandom",tags:["tetris","テトリス","てとりす","wiki","ウィキ","うぃき","fandom","ファンダム","ふぁんだむ"],category:"help",content:"英語のテトリスwikiです\\n公式テトリスを重点的にまとめています",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"c5bbbc35a43754e6897f6bac88cfdbae1e239309"},{title:"Four.lol",tags:["four","wiki","lol","fourlol","フォー","ウィキ","うぃき","テンプレ","template"],category:"help",content:"様々な開幕や連パフェが集められたテトリスwikiです",link:"https://four.lol",id:"e5e912965097ab58a0f7fdc15c4e692e8b631f56"},{title:"テトリス堂",tags:["tetris","テトリス","てとりす","hall","はる","日本語","japanese","テンプレ","template"],category:"help",content:"日本語サイトです\\n開幕のチュートリアル、パフェクイズなどのミニゲーム、連パフェの詳細な解説があります",link:"https://shiwehi.com/tetris/",id:"45b625b6d06fa4f5ec41fbce1f168c021ceed3ac"},{title:"テトリステンプレ集@テト譜",tags:["wiki","ウィキ","うぃき","atwiki","テンプレ","template","日本語","japanese"],category:"help",content:"非常に多くのテンプレを保有している日本語atwikiです",link:"https://w.atwiki.jp/tetrismaps/",id:"5189c30ead94b2ec37436bdce26fb310a04239ee"},{title:"テトリスブログ - PerfectClear",tags:["テンプレ","template","日本語","japanese","開幕"],category:"help",content:"数は多くないですが開幕テンプレのセットアップが詳細に解説されている日本語サイトです",link:"https://tetristemplate.info/",id:"9ebbf569478850a1aee48fe3d2d8c85a575c965e"},{title:"ほゐスライド",tags:["上達","練習","ほゐ","スライド"],category:"help",content:"日本のテトリスプレイヤー、whipemerald氏が作ったテトリスを上達させるためのスライド\\nテトリスフレンズの時代に作られたものだが今の時代でも問題なく通じる",link:"https://docs.google.com/presentation/d/1kYU2T6Kb-CVVshOa3BHGIhCoOWbbbKUekQqq-TsZgoY/mobilepresent?slide=id.p",id:"dad34eb1cd4cf2d65ad81bc4f1d9fe103f012f81"},{title:"テト譜",tags:["fumen","テト譜","譜面","研究 解析"],category:"help",content:"Mihys氏が開発したテトリスの地形を描画や共有ができる偉大なサイト\\n他のテトリスツールを使用する際にもよく使われる\\nAdd-onからframe.jsを選択することでさらに拡張した機能が使えます",link:"http://fumen.zui.jp",id:"038fe994b899244fa5411523a29d9cd5b6147a59"},{title:"Fumen for Mobile",tags:["fumenformobile","fm","fumen","テト譜","譜面","モバイル","mobile","もばいる","研究","解析"],category:"help",content:"Newjade氏によってテト譜をスマホ等でより直感的に使えるように開発されたテト譜サイトです\\nフィールドの画像出力や範囲塗りなどの公式のテト譜にはない機能も多数あります",link:"https://knewjade.github.io/fumen-for-mobile/",id:"7797ee759d76872fa714861b22806c84c372b723"},{title:"テト譜ブラウザ",tags:["fm","fumen","テト譜","譜面","研究","解析"],category:"help",content:"主にテト譜を管理するためのソフト\\n大量にテト譜を管理する人は持っていて損はない",link:"https://com.nicovideo.jp/community/co1370000",id:"ee78fefca55ccff685a7285c13c61c5d8dfe5202"},{title:"solution-finder",tags:["fm","fumen","テト譜","譜面","研究","解析"],category:"help",content:"Newjade氏によって開発されたパフェの確率やパターン、最大ren数など様々な解を見つけたり確率を計算できるツール\\n日本ではテンプレ制作、それ以外ではパフェ関連に使われることが多い",link:"https://solution-finder.readthedocs.io/ja/latest/",id:"adc1fd2f9abbf331dd763dc7360160528841dd89"},{title:"path-filter",tags:["fm","fumen","テト譜","譜面","研究","解析","パフェ","perfect","all","最小"],category:"help",content:"Newjade氏によって開発されたパフェ率を維持したまま最小パターンを求めるためのツール\\nただし近似解を出力するので複数回もしくは、長時間使うことが前提である",link:"https://github.com/knewjade/path-filter/releases",id:"63dfd5f3b19fceb530cb5cec6e41464ce651d358"},{title:"Github Repository",tags:["githubrepository","sourcecode","src","ソース","リポジトリ","りぽじとり","github"],category:"org",content:"Techminoの公式Githubです\\n星をお願いします!",link:"https://github.com/26F-Studio/Techmino",id:"67a03558cd33e7ed5417573b963bfb210bc65739"},{title:"Discord コミュニティ",tags:["community","コミュニティ","コミュ","こみゅにてぃ","こみゅ","discord","ディスコード"],category:"org",content:"Techminoコミュニティに参加して、他のプレイヤーと交流しよう!地球儀ボタンからTechminoのdiscordサーバーにアクセスできます",link:"https://discord.gg/f9pUvkh",id:"461bb2bdad0b1d3ee9ee4c1804a0ddeaa4dbcfa3"},{title:"テトリスオンラインポーランド",tags:["tetrisonline","servers","top","toj","toz","poland","japan","zapan"],category:"org",content:"地球儀ボタンをクリックするとTOPクライアントの情報にアクセスできますが2023年4月10日現在、2種類の日本サーバーはダウンしており、TOPサーバーのみ使えます",link:"http://tetrisonline.pl/",id:"ad1dcb4e840578a4c786fdbf31261a71ff0ca0ad"},{title:"Tetris OL Servers",tags:["tetrisonline","servers","tos"],category:"org",content:"地球儀ボタンをクリックするとTeatube氏作成の中国のTetris Online Studyの情報にアクセスできます",link:"https://teatube.cn/tos/",id:"9c8089870ca2a2da08629d0c8e9a2b2c65ee73ff"},{title:"サポート1",tags:["support","サポート","寄付","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:"こちらの内容はプラットフォームの関係により非表示にされています\\\\n詳しくはTechminoのdiscordサーバーにて聞いてください",link:"",id:"5aa1529044416f9dbd5fd02e3ec4147719b06fe7"},{title:"サポート1",tags:["support","サポート","寄付","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:"WechatやAlipayを使ってTechminoに寄付してくださる場合は、ゲームメイン画面の「TECHMINO」のTを連打→コンソール画面で「support」と入力→QRコードを読み取って寄付してください",link:"",id:"f7563dd66b79b13ae8f2c9571d64ed5f80ade7b8"},{title:"サポート2",tags:["support","サポート","寄付","afdian","aidadian"],category:"org",content:"こちらの内容はプラットフォームの関係により非表示にされています\\\\n詳しくはTechminoのdiscordサーバーにて聞いてください",link:"",id:"4df40576f4d90fe7ac801a7dd5e51b98b866dc33"},{title:"サポート2",tags:["support","サポート","寄付","afdian","aidadian"],category:"org",content:"Aifadianを使ってTechminoに寄付してくださる場合は、地球儀ボタンからURLを開いてください\\nAifadianの場合、寄付金額から6%の手数料がかかります",link:"https://afdian.net/@MrZ_26",id:"ca3744b5d38de9ec03b563a974075c339f59e254"},{title:"サポート3",tags:["support","サポート","寄付","patreon","patreon"],category:"org",content:"こちらの内容はプラットフォームの関係により非表示にされています\\\\n詳しくはTechminoのdiscordサーバーにて聞いてください",link:"",id:"27530a59f5cf6f4c103b32f41a42c1169075048a"},{title:"サポート3",tags:["support","サポート","寄付","patreon","patreon"],category:"org",content:"Patreonを使ってTechminoに寄付してくださる場合は、地球儀ボタンからURLを開いてください\\nPatreonの場合、一定額以上の寄付に対して手数料がかかります",link:"https://www.patreon.com/techmino",id:"e5a7df6767bb2f79b07ed34e1d111394999e3943"},{title:"テトリス トレーナー トレビアン",tags:["tetris","trainer","tres","bien","上達","練習","テトリス","トレーナー","トレビアン"],category:"game",content:"こな氏によって開発されたチュートリアルサイトです\\nTspinや最適化、SRS等の対戦テトリスで使う技術を学べます\\nノーホールド、Techrashだけでスプリント(40Line)を完走できたプレイヤーにおすすめです",link:"http://taninkona.web.fc2.com/ttt/",id:"2b7d64e58dd8d33caa2ec7e1a4c819a4f07a32ea"},{title:"テトリス パフェチャレンジ",tags:["tetris","perfect","clear","challenge","パフェ","連パフェ","上達","練習"],category:"game",content:"Chokotia氏によって開発された開幕パフェのチュートリアルサイトです\\nテトリス トレーナー トレビアンをクリアし、SRSに慣れたプレイヤーにおすすめです",link:"https://davdav1233.github.io/ttpc/",id:"94e34cbb20b17a5ea194abe22319ace7466e952a"},{title:"ナゾテト",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"Tspinやオールスピン、簡単な問題から難しい問題まで様々な謎テトがあります\\nテトリス トレーナー トレビアンをクリアしたプレイヤーにおすすめです",link:"http://klyuchevskayanazoteto.web.fc2.com/",id:"5f60680c17d9d0fb539deba7c6158bb19d3f9e86"},{title:"TPO",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"Tetris puzzle O(テトリスパズルオー)はTCV100によって開発された中国の謎テトサイトです\\nナゾテトのパズルをいくつか含んでいます",link:"http://121.36.2.245:3000/tpo",id:"5816c6bc0f913e152ec8fbaf1c4ed288a1aabe6d"},{title:"詰めテトリス",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"ナゾテトよりも実践向けの謎テトがまとめられたatwiki\\nテトリスDS時代のものなのでパフェとren火力はなし、TSMはTSS扱い",link:"https://w.atwiki.jp/tetrisds/pages/26.html",id:"c43155ffd23a114b5d16ed226d046909e713156c"},{title:"twowide",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"多数の高難易度謎テト、豊富なモードがある謎テトサイトです\\nオンラインランキングもあるので他のプレイヤーと競い合うことができます",link:"https://twowi.de",id:"ab70e042fe947dceead72be2fcc479cfb52822ad"},{title:"downstack-practice",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"downstackと書いてあるが掘以外にもTspinや途中パフェ等の謎テトを生成する謎テトサイトです\\n中盤テンプレも練習でき、より実践に近い謎テトを解くことができます",link:"https://himitsuconfidential.github.io/downstack-practice/",id:"f2e5b92f1e6f53391001f260a16d1d9e74055ec5"},{title:"途中メモ 1",tags:["note","memo","ノート","メモ","nb","NB","DM","notice"],category:"game",content:"次からは公式テトリスや落ちものパズルゲームの簡単な紹介です\\n\\nもちろんここにあるゲームがすべてではありません\\nまたTechmino制作者がコメントをしていることがありますが、あくまで主観的な意見でありそのゲームの良し悪しを決めるものではないことに注意してください\\n事実と意見を明確に区別するために意見は大括弧([,])で囲んでいます",link:"",id:"1936f35ddcc61ca5c183e35637929e5f803a3d41"},{title:"King of Stackers",tags:["kos","kingofstackers","こす","コス","キング","スタッカーズ"],category:"game",content:"ブラウザ | マルチプレイ | モバイル端末可\\n略称はkos\\nターン制の非公式テトリスです\\n基本的なルール:\\nプレイヤーは1ターンにつき7つずつミノを設置していきます\\n相手から火力が送られてもLine消去をしている間はせり上がりません\\nこのゲームはppsの概念がないためとても戦略的です\\nまた試合設定で様々な攻撃ルールに設定できます(通常はExclusive+)",link:"https://kingofstackers.com/",id:"03976adc8d56d6b7bfefe31ffcf2f49d40d8ccda"},{title:"Tetr.js",tags:["tetrjs","tetr.js","js"],category:"game",content:"ブラウザ | シングルプレイ | モバイル端末可\\nオリジナルは単純な1人用の非公式テトリスです[見た目もシンプルでアニメーションはほとんどありません]\\nしかし有志により細かいチューニングや多くのモード、仮想キーボードの追加等が行われました\\n地球儀ボタンのリンクはfarter氏によるDig Modへのリンクです",link:"http://farter.cn/t",id:"1e8934e62413a391f35e2c0cb955283834712889"},{title:"Tetra Legends",tags:["tl","tetralegends","レジェンズ","レジェンド","てとら","テトラ"],category:"game",content:"ブラウザ | シングルプレイ | モバイル端末不可\\n略称はTL\\n多くの1人用モードと2つの隠しリズムゲームを持っている1人用の非公式テトリスです\\n通常他のゲームでは隠されている部分まで可視化されています\\nしかし複合的な理由により2020年12月に開発が中止されました",link:"https://tetralegends.app",id:"f29beb5810b660bc321ec5360484123374053a4a"},{title:"Ascension",tags:["asc","ASC","ascension","アズセシオン"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はASC\\n同じくASCと呼ばれる独自の回転法則があり、多くの一人用モードがあります\\n1vs1モードは2022年11月26日現在、α版です\\nTechminoのstackモードはASCからアイデアを得ています",link:"https://asc.winternebs.com",id:"d00f385b962369aa081c12118d2f2d6b4f08cf06"},{title:"Jstris",tags:["js","jstris","じぇすとりす","ジェストリス"],category:"game",content:"ブラウザ | シングル/マルチプレイ | モバイル端末可\\n略称はjs\\n現在、主流の非公式テトリスの1つであり、様々なシングルモードと豊富な設定、自由に配置できる仮想キーボードを備えています\\nまたjstris+を導入することでさらに拡張されたjstrisを楽しむことができます",link:"https://jstris.jezevec10.com",id:"7b7444e1cecfe3104cbc2f7b50d7be1c39bfb43b"},{title:"TETR.IO",tags:["io","tetrio","tetr.io","てとりお","テトリオ","tetr","てとらいお","テトライオ"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はテトリオ\\n現在、主流の非公式テトリスの1つであり、レーティングシステムや多くのゲーム設定を変更できるカスタムゲーム、FFAなど様々な要素を備えています\\nまた安定して動作しやすいデスクトップクライアント版が存在します\\nそしてTETR.IO+を導入することでさらに拡張されたテトリオを楽しむことができます\\n[safariじゃテトリオはできないようです]",link:"https://tetr.io",id:"c6f5576019f448b6ddfcfa96c50a623b4505842a"},{title:"Nuketris",tags:["nuketris","nuke","ぬけ","ヌケ","ぬけとりす","ヌケトリス"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n基本的な1人用モードやレーティングシステムを備えた非公式テトリスです\\n独特なゲームルールをしており、Ospinもできます",link:"https://nuketris.com",id:"83a8c15193c8bc6e8afe48811a3c039042813da7"},{title:"Worldwide Combos",tags:["wwc","worldwidecombos","ワールド","ワイド","コンボ","コンボズ"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はWWC\\n世界規模の1vs1やリプレイと戦えるモード、豊富なゲーム設定など様々な機能を備えた非公式テトリスです",link:"https://worldwidecombos.com",id:"94081db2455fec7e83df266bc94308d0df55c83a"},{title:"Tetris Friends",tags:["tf","tetrisfriends","notrisfoes テトリス","てとふれ","テトフレ","のとりす","ノトリス","official","公式"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はテトフレ\\n今は亡き公式テトリス\\n昔はとても人気があったが数年前にサービス終了した\\n現在は「Notris Foes」という非公式プライベートサーバーが存在している",link:"https://notrisfoes.com",id:"ccf010be3f3b7a49dd78cef7d4e5d262bd305761"},{title:"tetris.com",tags:["tetris","テトリス","online","オンライン","official","公式"],category:"game",content:"ブラウザ | シングルプレイ\\ntetris.comにある公式テトリス\\nゲームモードはマラソンのみです\\n公式テトリスでは珍しくマウス操作に対応しています",link:"https://tetris.com/play-tetris/?utm_source=top_nav_link&utm_medium=webnav&utm_campaign=playNow_btm_tst&utm_content=text_play_now",id:"1b03e40d2c4fe9736f5c83f458215856ffcd5493"},{title:"Tetris Gems",tags:["tetris","テトリス","online","オンライン","official","公式","gem","ジェム"],category:"game",content:"ブラウザ | シングルプレイ\\ntetris.comにある公式テトリス\\n横1列を揃えると揃えた部分が重力の影響を受ける特殊なブロックになり、連鎖的にLine消去が可能なゲームである\\nさらに3種類の宝石ブロックが存在し、それぞれ特殊能力を持っています",link:"https://tetris.com/play-tetrisgems",id:"34196d46abd0d04928115af84c89abee3bb2fcc8"},{title:"Tetris Mind Bender",tags:["tetris","テトリス","online","オンライン","official","公式","gem","ジェム"],category:"game",content:"ブラウザ | シングルプレイ\\ntetris.comにある公式テトリス\\nルールはマラソンと同じですが「マインドベンダー」という特殊なブロックが出現します\\nマインドベンダーを消すことで様々なイベントが起こります",link:"https://tetris.com/play-tetrismindbender",id:"ead36dcde213c8a667268eefeee10a713a89db9b"},{title:"Techmino",tags:["techmino","テクミノ","テックミノ"],category:"game",content:"クロスプラットフォーム | シングル/マルチプレイ\\n日本語だとテクミノと呼ばれます\\nMrZを筆頭にLÖVEを使って開発された落ちものパズルゲームです\\n多くの一人用モード、多彩なカスタマイズ性を持ち、オンラインマルチプレイも徐々に開発されています",link:"",id:"06eed6ff342747e1a656db3a15d515d58e48a5b7"},{title:"Falling Lightblocks",tags:["fl","fallinglightblocks","ライト","フォーリング"],category:"game",content:"ブラウザ/iOS/Android | シングル/マルチプレイ\\n縦でも横でも遊べるマルチプラットフォームの非公式テトリス\\nDASやLine消去時間は固定されています\\nまたモバイル端末では操作を一部カスタマイズ可能です\\nFalling Lightblocks内にあるゲームのほとんどはファミコンのクラッシクテトリスがベースになっていますがモダンテトリスも存在します\\nバトルシステムは半分ターン制、半分リアルタイム制になっており、相殺システムはありません",link:"https://golfgl.de/lightblocks/",id:"a81cfbe60982260231080c7c719952f32edb51a4"},{title:"HATETRIS",tags:["hatetris","へいと","ヘイト","はてとりす","ハテトリス"],category:"game",content:"ブラウザ | シングルプレイ\\n常に嫌なブロックが出現する一風変わった非公式テトリス\\nLine消去数がそのままスコアになる\\nテトリス全体で見ても非常に難しいことから人間によるスコア更新よりも機械を使った研究の方が盛んである",link:"https://qntm.org/files/hatetris/hatetris.html",id:"3323487eefb08dba7d967e468152712b876df0ed"},{title:"Cambridge",tags:["cambridge","ケンブリッジ"],category:"game",content:"クロスプラットフォーム | シングルプレイ\\nLÖVEを使って開発された非公式テトリスです\\n簡単かつ高度にカスタマイズできる新しいゲームモードがあります\\n元々はJoe Zeng氏が開発していましたが2020年10月8日のver.0.1.5からMilla氏が引継ぎました\\n-Tetris wikiより",link:"",id:"571f5617b8e5a22421ad17096aca033c621c9cd3"},{title:"Nanamino",tags:["nanamino","ななみの","なな","ナナミノ","ナナ"],category:"game",content:"Windows/Android | シングルプレイ\\n面白い回転システムを持っている開発中の非公式テトリスです",link:"",id:"57e1dba48f0e84a44115c1c1732f6285d50a994a"},{title:"TGM",tags:["tetrisgrandmaster","tetristhegrandmaster","gm","グランド","マスター"],category:"game",content:"アーケード/PS/NS | シングル/ローカルマルチプレイ\\nTetris The Grand Masterはアーケードテトリスです\\nS13やGM等のモードはこのシリーズから始まりました\\nTGM3はシリーズの中で最も有名なタイトルです\\nNintendo SwitchやPlaystation 4に移植されてます",link:"",id:"9b19cb62836cdcf86dde298e8ee43d84db484ac6"},{title:"DTET",tags:["dtet","デテト","でてと","ディテト","でぃてと"],category:"game",content:"Windows | シングルプレイ\\nTGMのクラッシクルールをベースに20Gや強力な回転システムを導入した非公式テトリスです\\n現在、このゲームを見つけ出すのは難しく、見つからないDLLファイルを自分で補う必要があります",link:"",id:"dec506036ab50bd7d57f0a81bbebc91c38bdb04e"},{title:"Heboris",tags:["hb","heboris","へぼ","ヘボリス","へぼりす"],category:"game",content:"Windows | シングルプレイ\\nアーケードのような雰囲気の非公式テトリスです\\n他のテトリスの様々なゲームモードをシミュレーションできます",link:"",id:"2dd2156b95d39cee9e75fc358a447fd28b263a4f"},{title:"Texmaster",tags:["txm","texmaster","テクス","マスター"],category:"game",content:"Windows | シングルプレイ\\nTGMの全モードを収録している非公式テトリスです\\nただしインスタントソフトドロップやキックテーブルの仕様がワールドルールと少し異なります",link:"",id:"e23fd55f36113cce57e439e9807ddffc482d9f6f"},{title:"Tetris Effect",tags:["te","tec","tetriseffectconnected","TE:C","テック","テトエフェ","エフェクト","コネクテッド"],category:"game",content:"PS/Oculus Quest/Xbox/NS/Windows | シングル/マルチプレイ\\n略称はテトエフェ(TEC)\\n入力に反応するド派手なグラフィックとサウンドを備えた現在、主流の公式テトリスの1つ\\n「Connected」の文字がない基本版では1人用モードしかない\\nコネクテッドの方ではコネクテッドバトル、Zoneバトル、スコアアタック、クラッシクスコアアタックの計4つのモードで対戦が可能となっている(ただしフレンドマッチやローカルマッチではZoneなし等のルール設定が可能)",link:"",id:"e07a87fc2fb8f6261c38ab8c9b12659d382d7740"},{title:"Tetris 99",tags:["t99","tetris99","99"],category:"game",content:"Nintendo Switch | シングル/マルチプレイ\\n99人でバトルロイヤルを行う公式テトリス\\n従来の対戦テトリスにはない戦略が多く存在する\\nまたDLCをダウンロードすることでマラソンやcpuとの試合、キャラクタースキンなどが追加される",link:"",id:"c3a206118294bb16dfa68326b5ba44547721bee9"},{title:"ぷよぷよテトリス",tags:["ppt","puyopuyotetris ぷよテト","ぷよぷよ","テトリス","ぷて"],category:"game",content:"PS/NS/Xbox/Windows | シングル/マルチプレイ\\nぷよぷよとテトリスの2つが入ったゲーム\\n異種対戦もでき、多くのゲームモードが存在する\\n\\n[steam版は操作性が悪く、オンライン対戦も酷い]",link:"",id:"e2826ac7cd9388a0415de4af9f48e62b47284f47"},{title:"Tetris online",tags:["top","toj","toz","tetrisonline","poland","japan","zapan","テトオン"],category:"game",content:"Windows | シングル/マルチプレイ\\n今は亡き日本の公式テトリス\\nDASとARRの値を設定できますがどちらも0にはできません\\nプライベートサーバーで稼働していましたが2023年4月10日現在、2種類の日本サーバーはダウンしており、TOPサーバーのみ使えます",link:"",id:"9aa9fc1b2edb0ac3b6e93880666249a82fe50a67"},{title:"Tetra Online",tags:["TO","tetraonline","tetraoffline","offline","テトラ","てとら","オンライン","オフライン"],category:"game",content:"Windows/macOS/Linux | シングル/マルチプレイ\\nDr OceloとMineによって開発された非公式テトリスです\\n操作性は意図的にAREが高い値に設定されているのでぷよテトなどに近い\\nThe tetris companyがDMCA(デジタルミレニアム著作権法)を理由にsteamから削除されました\\nしかしオフライン版は現在もGithubから入手可能です\\n\\nテトラオフライン",link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"0cbac115bf5d7b331ca6ca308c1632ed88e47748"},{title:"Cultris II",tags:["c2","cultris2","cultrisii","カルトリス"],category:"game",content:"Windows/OS X | シングル/マルチプレイ\\nクラッシクテトリスをベースにデザインされた非公式テトリス\\n対戦モードはコンボ(ren)に重点を置いたものとなっており、コンボ地形を組み立てる速さ、コンボ消化速度、掘のスキルが試されるゲームとなっている\\n\\n[Mac版は長い間メンテナンスされてなく、macOS Catalineよりも新しいビルドのmac OSではこのゲームをプレイできません]",link:"",id:"64fbaeee90c074afcbd634a3f1c63e11d47a072e"},{title:"Nullpomino",tags:["np","nullpomino","ぬるぽ","ヌルポ","ぬるぽみの","ヌルポミノ","ぬる"],category:"game",content:"Windows/macOS/Linux | シングル/マルチプレイ\\nカスタマイズ性の高い非公式テトリス\\nゲーム内のほぼ全ての設定を変更できる\\n\\n[しかしUIが時代遅れでフルキーボードでの操作が必須になります\\nNullpommino初心者は慣れるまで問題がある可能性があります\\nまたmac OS Montereyではこのゲームは動作しません]",link:"",id:"1c72f973378aea11668b493c6510c28f47809ff1"},{title:"Misamino",tags:["misamino","ミサミノ","みさみの","みさかみの","ミサカミノ"],category:"game",content:"Windows | シングルプレイ\\nローカルでMisaminoというbotと対戦できる非公式テトリス\\nAPIを学ぶことで自分でbotを作ることもできる",link:"",id:"b747f78de7ffc395c97fbdef1f9486f76b0535da"},{title:"four-tris",tags:["four","練習","上達","解析","研究"],category:"game",content:"Windows | シングルプレイ\\n主に試合を解析するためのソフト\\n盤面の取り込みは画像解析によって行う(かなり精度が高い)\\n n回目のパフェやren、チーズの練習もできる",link:"https://github.com/fiorescarlatto/four-tris/releases",id:"a7620b74fc36a6fe90c35c1006b192c492c8eb71"},{title:"Touhoumino",tags:["touhoumino","東方","touhou","とうほう","トウホウ"],category:"game",content:"Windows | シングルプレイ\\nNullpominoを改造し、東方projectの要素を追加した非公式テトリス\\nマラソンではスペルカードが存在し、制限時間内に必要なスコアに到達しないといけない\\n\\n[自分の腕に自信がある人におすすめ\\nそうじゃないとどうやって死んだのかすらわからない]",link:"",id:"55261fceb03a3b7bfcc10b6fb4f61589323c739c"},{title:"Tetris Blitz",tags:["blitz","ea","mobile","phone","ブリッツ","イーエー","スマホ","スマートフォン","モバイル"],category:"game",content:"iOS/Android | シングルプレイ\\nEAによって開発されたスマートフォン用の公式テトリス\\nゲーム開始時に多くのミノが落ちて来たり、Line消去を連続で行うことで「Frenzy」モードに入ることができたり、トップアウトが存在しなかったりと様々な特殊な仕様がある\\n\\nこのゲームは2020年4月に配信を終了しています",link:"",id:"2b00bb03ff88085a42156fabd9e118fe1944eb68"},{title:"Tetris (EA)",tags:["tetris","ea","galaxy","universe","cosmos","mobile","phone","テトリス","イーエー","スマホ","スマートフォン","モバイル ギャラクシー","銀河","宇宙","ユニバーサル","コスモス"],category:"game",content:"iOS/Android | シングル/マルチプレイ(?)\\nEAが開発したもう1つのスマートフォン用公式テトリス\\nスワイプとワンタッチの2つの操作方法がある\\nまたマラソンの他にギャラクシーモードというものが存在する\\nこのモードのクリア条件は指定されたミノを使い切る前にギャラクシーミノを消去することです\\n\\nこのゲームは2020年4月に配信を終了しています",link:"",id:"1155aa6fb77bd574703ed5c7e591e6c4abd0e463"},{title:"Tetris (N3TWORK)",tags:["tetris","n3twork","mobile","phone","テトリス","スマホ","スマートフォン","モバイル"],category:"game",content:"iOS/Android |シングルプレイ\\nN3TWORKが開発したスマートフォン用の公式テトリス\\n3分のウルトラ、マラソン、100人(cpu)のバトルロイヤルモードがある\\n\\n[UIは素晴らしいが操作性が良くない]",link:"",id:"e8f98017658c97afea81daac7c4adc0589777a41"},{title:"Tetris Beat",tags:["n3twork","rhythm","リズム","ビート","beat","スマホ","スマートフォン","モバイル","mobile","phone"],category:"game",content:"iOS | シングルプレイ\\nN3TWORKがAppleアーケードで配信しているスマートフォン用の公式テトリス\\nマラソンの他にビートモードがあるがBGMのリズムに合わせてミノを置いて行くだけである\\n\\n[エフェクトが重いし操作性もイマイチ]",link:"",id:"682435396857b8e212bea51bf5da2631027b1266"},{title:"Tetris Journey",tags:["tetrisjourney","mobile","phone","huanyouji","スマホ","スマートフォン","モバイル","ジャーニー"],category:"game",content:"iOS/Android | シングルプレイ\\nTencentによって開発され、中国限定で配信されたスマートフォン用の公式テトリス\\nレベルモードや対戦モード、いくつかの1人用モードがある\\n対戦モードでは2分間の時間制限があり、対戦者がトップアウトしない場合、より多く火力を送った方が勝者となる\\n仮想キーボードの配置や大きさを調整できる",link:"",id:"993ca1647332708fa733c91a0a2cb843b2627a62"},{title:"JJ Tetris",tags:["jjtetris","じぇーじぇー","ジェージェー","じぇじぇ","ジェジェ"],category:"game",content:"Android | マルチプレイ\\n正式名称:JJ块\\nJJ棋牌のカジュアルゲーム\\n縦画面、低入力遅延と操作性が高い\\nDASやARR、20Gソフトドロップなども制限はありますが設定可能です\\nホールドやB2Bシステム、相殺システムはありません\\n他にもそれぞれの攻撃の火力の上限が4、コンボが強いという特徴がありますが、それ以外はモダンテトリスに似ています",link:"",id:"fa9d980dbe25a5c2a2556d20dd0cdcd5814bedb4"},{title:"Huopin Tetris",tags:["huopin","qq","ほうぴん"],category:"game",content:"Windows |マルチプレイ\\n正式名称:火拼俄罗斯\\nTencent Game Centerが開発した公式テトリス\\n幅12の盤面、DASやARRはキーボードのタイピングと同じ、ネクストは1つ、ホールドはない\\n3line消し(火力:2)とテトリス(火力:3)でしか攻撃を送れない\\n下穴が市松模様のようになっているので掘ることはほぼ不可能",link:"",id:"0b0f47c275a7204e506301511a348c113d630809"},{title:"途中メモ 2",tags:["note","memo","ノート","メモ","nb","NB","DM","notice"],category:"term",content:"ここからは用語解説になります\\n\\nこれらの用語は全てのコミュニティで通じるとは限らず、また全ての用語が常に同じ意味になるとは限らないことに注意してください\\nここでは主にTechmino内で使うことを想定しています",link:"",id:"cf8827a90b9fca025a0568606c955c3c53fe5464"},{title:"LPM",tags:["linesperminute","speed","速さ","早さ","はやさ","lpm","l'pm"],category:"term",content:"Lines per minute\\n\\tプレイヤーの速さを計る指標です\\nゲームによってLPMの計算方法が異なります\\n例えばテトリスオンラインの場合、PPSという値からLPMを計算しています(1PPS=24LPM)\\nこの時、下穴消去が無視されているので文字通りのLPMとは異なります\\nTechmino内ではこのLPMを「L'PM」と表記しています",link:"",id:"dfe71d3ef5f74af842acc0ca6833cfe80340e7c0"},{title:"PPS",tags:["piecespersecond","speed","速さ","早さ","はやさ","pps"],category:"term",content:"Pieces per second\\n\\tプレイヤーの速さを計る指標です",link:"",id:"5b7dc17dbae6b67d5223ed36b73bacabeab77a22"},{title:"BPM",tags:["blocksperminute","piecesperminute","speed","速さ","早さ","はやさ","bpm","ppm"],category:"term",content:"Blocks per minute\\n\\tプレイヤーの速さを計る指標です\\n音楽用語との混同を避けるためにPPMと呼ばれることもあります",link:"",id:"473fe1b7aadb624780218f6304bf844f0e84dc2f"},{title:"KPM",tags:["keysperminute","keypressesperminute","速さ","早さ","はやさ","入力","kpm"],category:"term",content:"Keypresses per minute\\n\\tプレイヤーの入力の速さを計る指標です",link:"",id:"a1576db8f140501bfee4cfb414de249cdacf2852"},{title:"KPP",tags:["keysperpiece","keypressesperpiece","速さ","早さ","はやさ","効率","入力"],category:"term",content:"Keypresses per piece\\n\\tミノ操作の効率を計る指標です\\n最適化を習得することでこの値を下げることができます",link:"",id:"ac69f23822921b2b6f08964277ea2fe77a54a800"},{title:"APM",tags:["attackperminute","火力","攻撃"],category:"term",content:"Attack per minute\\n\\tプレイヤーが出した火力を計る指標です",link:"",id:"cec83d48a002ee0f5752fe842f2d3b767b0dee73"},{title:"SPM",tags:["linessentperminute","火力","攻撃"],category:"term",content:"[lines] Sent per minute\\n\\tプレイヤーの攻撃力を計る指標です\\nここでは相殺に使用した火力はカウントされず、相手の火力ゲージに送った火力だけがカウントされます",link:"",id:"f4a4c43d06a70fe2b158f7c5cb4d6aa6fd11d0f3"},{title:"DPM",tags:["digperminute","defendperminute","防御","火力","相殺","サバイバル","生存","掘り"],category:"term",content:"Dig(またはDefend) per minute\\n\\tプレイヤーの掘り、若しくは防御力(相殺火力+掘ったLine数)を計る指標です",link:"",id:"52248f61c1be44c4fe7194ec304854f0db944e1e"},{title:"RPM",tags:["receive","jieshou","受け","外し","相殺外し"],category:"term",content:"[lines] Receive per Minute\\n\\tプレイヤーが受けた攻撃量を計る指標です",link:"",id:"45604b2d6449601e616f86b6f336d2e612f07f9e"},{title:"ADPM",tags:["attackdigperminute","vs"],category:"term",content:"(Attack + Dig) per minute\\n\\tその試合で対戦者間のスキルを比較するための指標です\\nTETR.IOのVSスコアはこれと違い、100(Attack+Dig)/sで計算しています",link:"",id:"2ffd518aa9b41380402c774b4a3c422d214e82ab"},{title:"APL",tags:["attackperline","efficiency","効率","火力","攻撃"],category:"term",content:"Attack per line (cleared)\\n\\tよく「効率」という言葉で置き換えられます\\n1Line単位の火力を算出している値であり、ここではTSSがテトリスやTSDよりも効率が良いとされる",link:"",id:"bbcd87c56cca8b72d58cfb41a18d7ee80637f410"},{title:"Single",tags:["single","1","シングル"],category:"term",content:"1回で1Line消すこと",link:"",id:"37880ca2d93f61a696b5fea6aa6ce5f21d437a24"},{title:"Double",tags:["double","2","ダブル"],category:"term",content:"1回で2Line消すこと",link:"",id:"a53a2529ffaf4fe90f7dcaa3ebcef48896262376"},{title:"Triple",tags:["triple","3","トリプル"],category:"term",content:"1回で3Line消すこと",link:"",id:"6e7c234815285108ed77b7a2cb357091a87bce29"},{title:"Techrash",tags:["techrash","tetris","4","quad","クアッド"],category:"term",content:"*Techmino用語*\\n1回で4Line消すこと",link:"",id:"f54542633cc7c0f657b1950e77ab63abb01484dc"},{title:"Tetris",tags:["tetris","4","quad","クアッド"],category:"term",content:"ゲームの名称(商標)\\nまた公式テトリスにおいて1回に4Line消すことを指す言葉\\n\\nTetra(ギリシャ語で「4」を意味する)とTennis(テトリスの制作者が好きなスポーツ)を組み合わせた造語\\n\\nまた任天堂とセガが開発したテトリスはThe Tetris Companyのライセンス登録を受けていますが、この2社がテトリスそのものの著作権を保有しているわけではありません\\n\\n-- Alexey Pajitnovに感謝を!",link:"",id:"53003ed2f9c60a215e4b78d07b152f9ccae50b53"},{title:"All Clear",tags:["pc","perfectclear","ac","allclear","パフェ","オール","パーフェクト"],category:"term",content:"Perfect Clear(PC、パフェ)とも言われる\\n盤面内にある全てのミノを消去すること\\n明らかにあるのに見逃した場合、「今パ」と言われることがある(逆にこれに言い返すフレーズも存在する)",link:"",id:"951bcb1c86529c4418c41c0a7918a4a8daafb257"},{title:"HPC",tags:["hc","clear","halfperfectclear","ハーフ","セミ"],category:"term",content:"Techmino用語\\nHalf Perfect Clearの略\\n下穴以外のミノを全て消去するとHPCとなり、軽い火力強化が行われる\\n\\n俗に言う実質パフェ",link:"",id:"b57a9021cc5f22e8d1c0afaf771d214ba0faf522"},{title:"Spin(回転入れ)",tags:["spin","回転","スピン"],category:"term",content:"任意のミノを回転システムを使うことにより入れること\\nこれを使うことにより通常では置けない場所にでも置くことが可能になります\\nまたこの操作により火力やスコアに補正がかかることがあります\\nゲームによって回転システムが異なる場合がある",link:"",id:"c81c86bfb792e16d7f85e293759ede4f04c819f1"},{title:"Mini",tags:["mini","ミニ","みに"],category:"term",content:"ゲーム側が簡単すぎると判断したspinに適用されるシステムです\\nそのために昔のゲームでは「EZ T-spin」とも呼ばれていました\\nminiの付いたspinは火力やスコアボーナスが通常のspinよりも少なくなるように設定されています\\n\\n基本は細かい仕様を覚えずにminiになる地形だけ覚えておけば大丈夫です",link:"",id:"d445305f9c8bc06b1447c50fb0a761dba94a81cd"},{title:"All-Spin",tags:["allspin","オール","全"],category:"term",content:"全てのミノのspinに火力、スコア補正がかかるルールのこと(通常ルールはTspinのみ)\\nまた稀にルールではなくAll-spinという回転法則を指すこともある",link:"",id:"e86babd5253f73a9ae28c904ed9e73023e01411a"},{title:"T-Spin",tags:["tspin","ティ","ts","ふんどし"],category:"term",content:"Tミノを回転入れ(spin)すること\\n\\n最近の公式テトリスでは3コーナールールを採用している\\nこれは回転入れをした時にTミノの回転軸を中心として斜め4マスの内3マス以上が埋まっていた場合にTspinとして判断するというものである\\nゲームによっては一部のTspinをmini扱いしている",link:"",id:"79fa79179aabd566fb5794617de3ebe4df508804"},{title:"TSS",tags:["t1","tspinsingle","ティ","シングル"],category:"term",content:"T-Spin Single\\nTspinで1Line消去すること",link:"",id:"3273810a3a0478ea2e9baa8554542aa255ad2c00"},{title:"TSD",tags:["t2","tspindouble","ティ","ダブル"],category:"term",content:"T-Spin Double\\nTspinで2Line消去すること",link:"",id:"3b66d09aeaaa25de906a858f3124345d9ffa7eda"},{title:"TST",tags:["t3","tspintriple","ティ","トリプル"],category:"term",content:"T-Spin Triple\\nTspinで3Line消去すること",link:"",id:"d2b30723c0d620269675f8b486a6c3e69a1be264"},{title:"MTSS",tags:["minitspinsingle","tsms","tspinminisingle","tsm","mini","1","シングル"],category:"term",content:"Mini T-spin Single\\n通称:T-spin Mini Single(TSMS)\\nTSSだがmini判定のもののこと\\n\\nゲームによってどのTSSがminiなのか判定が異なっていたり、そもそもなかったりする",link:"",id:"3323cf30e494b45e52b3052a95021ed85ac92e29"},{title:"MTSD",tags:["minitspindouble","tsmd","tspinminidouble","tsm","mini","2","ダブル"],category:"term",content:"Mini T-Spin Double\\n通称:T-spin Mini Double(TSMD)\\nTSDだがmini判定のもののこと\\nMTSDは一部のゲームにしか存在せず、発生する地形も異なる場合がある\\n\\nさらに一部のテトリスではMTSDを想定しておらず最悪の場合、フリーズや強制終了する",link:"",id:"9c38b240170b244a00e2f2c2981c605d302f6350"},{title:"O-Spin",tags:["ospin","o","オー","2"],category:"term",content:"Oミノはどんなに回転させても形が変化しないため回転入れが不可能でした(一部では毎秒500~600回転させることでOミノが熱膨張したり溶けたり変形したりするという噂があります)\\nそのためテトリスコミュニティ内でミームのように扱われ、フェイクビデオ等も作成されました\\n\\nXRSという回転法則ではOミノを特定の地形で回転させると穴にテレポートするように設計し、それをOspinとしています\\nまたTRSでは同様にすることでテレポートさせるだけでなく、他のミノの形に変形することによってOspinを実現しています",link:"",id:"c2438b38e3d412b7e59d8eb950853ab5ac321f80"},{title:"Rotation Systems(回転システム、回転法則)",tags:["wallkick","rotationsystem","回転","壁","法則"],category:"term",content:"ミノがどのように回転するかを決定しているシステムのこと\\nモダンテトリスの場合、ミノは特定の回転軸を中心に回転している(もちろんそれがないゲームもある)\\nそして回転させたときに壁や既にマスが埋まっている場所にミノが重なると通常「壁蹴り」という処理が行われ、あらかじめ決められた位置にズレ、再び壁蹴りが必要かの判定が行われる\\nこれを繰り返しミノは設置可能な穴に移動する\\nまたこの時、spin判定が出る場合がある",link:"",id:"0375a1b3830488cae13fe02b727d03b73de3eea0"},{title:"方向表記",tags:["direction","0r2l","02","20","rl","lr","表記","ミッション"],category:"term",content:"SRS系統の回転システムではミノの向きを記述する表記法がある\\n「0」や「正の向き」の場合は出現した時と同じ向き、「R」や「右」、「1」という場合は90°右回転(CW)した向き、「L」や「左」、「2」や「逆の向き」の場合は180°回転させた向き、「3」の場合は90°左回転(CCW)した向きを表す\\n\\n例えば0->Lは左回転1回、2->右は逆の向きの状態から左回転1回となる(これは回転方向ではなくミノの向きを表す表記法なので右回転ではない)\\nカスタムモードにあるミッションはこの表記を使っている\\n\\n「->」や数字使った表記は日本であまり使われない",link:"",id:"169218700f77094ee396025d2ca70756fbc0a75a"},{title:"ARS",tags:["arikrotationsystem","atarirotationsystem","あたり","アタリ","ありか","アリカ"],category:"term",content:"これは以下の2つの意味があります\\n\\nTGMにて採用されているArika Rotation Systemのこと\\n\\n回転した時にミノを左上に揃えるように回転方向するAtari Rotation Systemのこと",link:"",id:"b08793e8c88ed97811e6ffc2324504a60a317ced"},{title:"ASC",tags:["ascension","アスセンション","アズセンション"],category:"term",content:"テトリスクローン「Ascension」にて使用されている回転法則\\n全てのミノに同じ2つのキックテーブルが使用されている\\nキック範囲は右回転、左回転両方で±2マスとなっています",link:"",id:"a5387c0b6e4410c66ad1e4c19e2b76b20462ef98"},{title:"ASC+",tags:["ascension","ascplus","アスセンション","アズセンション"],category:"term",content:"ASCをTechminoのために修正したもの\\n180°回転の壁蹴りをサポートしています",link:"",id:"2de14efed2877667050ce125d31c18ddc8fc5015"},{title:"BRS",tags:["bulletproofsoftware","バレット"],category:"term",content:"BPS rotation system\\nBullet-Proof Software社のテトリスで使用されている回転法則",link:"",id:"d0675584ad76a94fffc11a93f45e8b20166d64f7"},{title:"BiRS",tags:["biasrs","biasrotationsystem"],category:"term",content:"*Techmino用語*\\nBias Rotation System\\nXRSとSRSを基に作られたTechmino独自の回転法則\\n回転時に右や左、ソフトドロップを入力しているとその方向にミノがズレるように回転に補正がかけられます\\n下方向に補正がかかっているときに回転に失敗(既存のマスと重なる)と下方向への補正をかけずに再試行します\\nそしてそれにも失敗した場合は右、または左の補正をかけずに再試行します\\nそれにも失敗した場合には回転されません\\n\\nBiRSはXRSに比べてキックテーブルが1つのため覚えやすく、さらにSRSの特徴である地形に沿った壁超え等も備えています\\n\\n追加事項:最後の回転補正を試行する時のルールとして移動するユークリッド距離が√5を超えてはいけない、また右または左に補正がかかっている場合には最後の回転補正はもう一方の方向には行かないという2つのルールがBiRSにあります",link:"",id:"41c0af2646e5815b09a6821fe6e83532239c30de"},{title:"C2RS",tags:["c2rs","cultris","2","カルトリス"],category:"term",content:"Cultris II rotation system\\nCultris IIで使われている回転法則\\n全ての回転、全てのミノのキックテーブルが同じ(ズレ方:左、右、下、左下、右下、左に2、右に2)\\nまた左右は左が優先される\\n\\nTechminoではこの回転法則を改良したC2symという回転法則があり、そちらは左右の優先順位をミノと回転によって決定している",link:"",id:"62a5c7b090a2979b58768504b166332a70a18666"},{title:"C2sym",tags:["cultris2","カルトリス","c2rs"],category:"term",content:"C2RSを改良した回転法則\\nミノと回転によって左右の優先順位を変えています",link:"",id:"cb0059cdcb6a74ca3c363b10f4a34e3fb53ffe1f"},{title:"DRS",tags:["dtetrotationsystem","dtet","デテト","でてと","ディテト","でぃてと"],category:"term",content:"DTET Rotation System\\nDTETで使われている回転法則",link:"",id:"a8ac1bcd736078d77d19f589aeccb48e7356da76"},{title:"NRS",tags:["nintendorotationsystem","任天堂","ニンテンドー"],category:"term",content:"Nintendo Rotation System\\nファミコンやゲームボーイ時代のテトリスに使用された回転法則\\nゲームボーイ用の左手用とファミコン用の右手用の2種類があります",link:"",id:"1fcbba8820c777bc421ac1c2dba445c896eefda5"},{title:"SRS",tags:["superrotationsystem","回転"],category:"term",content:"Super Rotation System\\n最もポピュラーな回転法則であり、多くの自作回転法則の基礎にもなっている\\nそれぞれのミノには上下左右4方向あり、右回転、左回転の2つの方向に回転できる(この回転法則では180°は存在しない)\\nそして回転した時にミノが既に埋められているマスや壁、床に重なった場合、位置ズレが発生し床や壁を蹴ることができます(通称:壁蹴り)\\nキックテーブルの詳細はTetris wikiやHardDropにて調べられます",link:"",id:"fe329572f8c280a48db48996ecf6276166a43283"},{title:"SRS+",tags:["srsplus","superrotationsystemplus","tetr"],category:"term",content:"SRSを180°に対応させ、さらに一部の回転に対称性を持たせた回転法則です",link:"",id:"06663b6165e4f3de5c2634a62fb2be4ae66cff52"},{title:"TRS",tags:["techminorotationsystem","techmino"],category:"term",content:"*Techmino用語*\\nTechmino Rotation System\\nSRSを基にした回転法則\\nSとZが回転しない場合を修正し、いくつかの便利なキックテーブルがあります\\n\\nTRSはOspinをサポートしています",link:"",id:"71dd364fad01829c910f46108bb9f026d7937635"},{title:"XRS",tags:["xrs"],category:"term",content:"X rotation system\\nTetris.grのT-EXで使われている回転法則\\n方向を入力していると別のキックテーブルを使えるという機能を備えておりプレイヤーがミノのズレる先を操作できるようになっている",link:"",id:"2d1d479ea535d60b3120f6ec1523575b004b6920"},{title:"Back to Back",tags:["b2b","btb","backtoback","バック"],category:"term",content:"略称はBtB(B2B)\\n他のLine消去を挟まずにspinやテトリスをすること\\n火力やスコアに補正がかる\\nコンボとは違い、Line消去に関わらないミノを置いてもBtBには影響がない",link:"",id:"e8e071ffb7ef406f92748c1a23e438359f60b2a9"},{title:"B2B2B",tags:["b3b","b2b","btb","backtoback","バック"],category:"term",content:"*Techmino用語*\\nBack to Back to Back、略称はB3B\\nBtBを続けて維持し、BtBゲージを満タンにすることでB3Bになり、火力やスコアに更に強力な補正がかかる",link:"",id:"c433b2e201993e1d301a8ce4aaaa00ccea045f29"},{title:"Fin, Neo, Iso",tags:["fin","neo","iso","特殊","フィン","ネオ","アイエスオー","ふぃん","ねお","あいえすおー"],category:"term",content:"Tspinのキックテーブルと成立条件を利用した特殊なTspinです\\nゲームによってはminiになったりと価値が異なりますが実戦では限られた場面でしか使われません",link:"",id:"44696117b28725326db731e0d17e1f02b3ff6375"},{title:"モダンテトリス",tags:["modern","モダン","現代"],category:"term",content:"“モダン“テトリスや落ちものパズルゲームのコンセプトは曖昧です\\n一般的にテトリスガイドラインに準じて作られたテトリス(公式テトリス)に似ている落ちものパズルゲームはモダン(現代的)ゲームと言われます\\nこれに共通するルールを以下に挙げますがこれは厳密な定義ではありません\\n\\n1.可視部分の盤面は横10×縦20、さらにこの上に見えない盤面があることが多い\\n2.ミノは盤面可視部分の中央上部に生成され、それぞれ一貫した方向と色を持っています\\n3.7-BagやHisのような適当な生成機構がある\\n4.適当な回転システムを持ち、最低でも左右、両回転が可能\\n5.適当な設置システムがある\\n6.適当なトップアウト条件がある\\n7.複数個(通常3~6個)のネクストが表示されており、ネクストに表示されているミノが出現時にの方向と一致している\\n8.ホールドがある\\n9.ミノの出現時間やLine消去時間がある場合、通常IRSやIHSがある\\n10.正確かつ素早い横移動のためのDASシステムがある",link:"",id:"4c50dcb1b2b062e3b11f19942e292b26d37da0b3"},{title:"テトロミノの形",tags:["shape","structure","form","tetromino","tetrimino","ミノ","テトロミノ","テトリミノ","ブロック","ピース","形"],category:"term",content:"通常のテトリスの場合、使用するミノは全てテトロミノ、つまり4つの正方形が最低でも1辺それぞれ共有するように並べたブロックです\\n回転して合同になることは許し、反転で合同になることは許さなかった場合、全部で7種類のテトロミノができます\\nこれらのテトロミノはアルファベットに似ていることからそれぞれZ,S,J,L,T,O,Iと名前が付けられている\\n詳しくは「形と名前」の項目を参照",link:"",id:"ef69d60a3cc8b49ef0b8d6510a14e97517cb2049"},{title:"テトロミノの色",tags:["colour","hue","tint","tetromino","tetrimino","ミノ","テトロミノ","テトリミノ","ブロック","ピース","色"],category:"term",content:"最近のモダンテトリスではそれぞれのテトロミノに同じ配色をしています\\n\\nZ-赤、S-緑、J-青、L-オレンジ、T-紫、O-黄色、I-水色\\n\\nTechminoも例にもれずこの配色を使っています",link:"",id:"dea2749f91e6ddcbde63c93d9c870ae9f78756c3"},{title:"IRS",tags:["initialrotationsystem","先行","操作"],category:"term",content:"Initial Rotation System\\nミノ出現前に回転を入力し続けることでミノが回転した状態で出現するシステム\\nミノの重なりによる死亡判定を回避することが可能",link:"",id:"26a39cddcceef76eec2d0ee3a603f4eeba023756"},{title:"IHS",tags:["initialholdsystem","先行","操作"],category:"term",content:"Initial Hold System\\nミノ出現前にホールドを入力し続けることでホールドを行った後のミノが出現するシステム\\nミノの重なりによる死亡判定を回避することが可能",link:"",id:"2e6c8326dd0ff1debd849bb11d6b29e11a2eed38"},{title:"IMS",tags:["initialmovesystem","先行","操作"],category:"term",content:"*Techmino用語*\\nInitial Movement System\\nミノ出現前に横移動を入力し続けることでミノが1つ横にズレた状態で出現するシステム\\nミノの重なりによる死亡判定を回避することが可能\\n\\n補足:横移動を入力し始めてからミノ出現までの時間がDAS時間よりも長くなければいけません",link:"",id:"bbd943e376c3847e6617fd252acc7e0046eab1d8"},{title:"Next(ネクスト)",tags:["nextpreview","next","ネク","ネクスト","ねく","ねくすと","次","上達","練習"],category:"term",content:"次に来るミノをいくつか表示している部分のこと\\nネクストを処理することによって前もってミノの置く場所を決めることができ、テトリスを上手くなるには必須技術です",link:"",id:"c92cf9183c2e48a86e30f2ef323d04198fa52a5f"},{title:"Hold(ホールド)",tags:["hold","ホールド","一時","保留"],category:"term",content:"その時点で操作しているミノがホールド部分に移動し、代わりに元々ホールド部分にあったミノを取り出します(もしホールド部分にミノがなかった場合、ネクストのミノが操作ミノになります)\\nこの操作は通常繰り返すことはできず、一度ホールド部分に移動したミノは再びホールドすることはできません\\n\\n*Techmino用語*\\nTechminoには「その場ホールド」という機能があります\\nこの機能を有効にしていた場合、ホールドから取り出されるミノは従来の出現位置ではなく、その時ミノがある位置に出現します",link:"",id:"d47a553f2352803ffa500b2637c7d69c3f4f13da"},{title:"Swap",tags:["hold","ホールド","一時","保留","スワップ"],category:"term",content:"ホールドと似た機能ですが、swapはネクストとミノを入れ替えます\\nつまりこの操作をした場合、swapしたミノは次の操作ミノになります\\n\\nこの操作は通常繰り返すことはできず、一度swapしたミノは再びswapすることはできません",link:"",id:"a579efcbdc1313f01ee4052715b31ab8d8764b67"},{title:"Deepdrop(ディープドロップ)",tags:["shenjiang","ディープ","deep"],category:"term",content:"*Techmino用語*\\nこの機能を有効にした場合、床を貫通して回転入れのようにテレポートします\\nミノと同じ形の穴があり、その穴が埋まっている時に下までソフトドロップし、もう一度ソフトドロップを入力することで埋まっている穴にテレポートします\\nこの機能はAIが回転法則の違いを無視できるようになるため特にAIに有効な機能です",link:"",id:"e66932715be581f84b57cd16e806d3e2130f9b64"},{title:"Misdrop(置きミス)",tags:["md","misdrop","ミス","置き"],category:"term",content:"意図しない場所にミノを置いてしまうこと\\n\\n日本では、テトリスするためのIミノが縦のまま1つ横にズレることを「あるぎミス」と言ったりする",link:"",id:"01080f102e9d954f8d2752605e0d6531089c3f95"},{title:"Mishold(ホールドミス)",tags:["mh","mishold","ホールド","ミス"],category:"term",content:"意図しないタイミングでホールドしてしまうこと\\n置きミスにつながったりパフェを逃す原因になります",link:"",id:"ac2aa3ff1c8ee16a4258bf8b331034d285c9da33"},{title:"sub(切り)",tags:["sub","切り","タイム","秒","分"],category:"term",content:"sub<時間>(<時間>切り)はスプリント(40Line)などのタイムが<時間>未満であることを意味する\\nsubの場合は時間の単位が省かれることが多い\\n例えば、スプリント(40Line)の場合はsub30(30秒切り)、1000Lineの場合はsub15(15分切り)と表す",link:"",id:"2e2feb8592af85d898cd4f928c4cb1bb5c31a2d2"},{title:"Digging(掘り)",tags:["downstacking","ds","掘り","堀り","dig","ダウン"],category:"term",content:"盤面の下にある下穴などを消していくこと\\n「堀り」ではなく、「掘り」",link:"",id:"35fb2f3c5c6f9596510318459846f4096df49a8d"},{title:"Downstack",tags:["downstacking","down","ds","掘り","dig","ダウン","upstack","up","ud","積み","stack"],category:"term",content:"大きく見た時に地形を下げる積み方のこと\\n掘りはこれの1種である\\n対義語としてUpstackがある\\n\\n1巡毎に2Line消去をする場合、盤面内は1巡につき8つブロックが増えていく\\nつまり毎巡TSDをすると火力が送れる上にリソースが溜まっていくのである。",link:"",id:"aa5600b84be1854f3439f4aa41c07d9b181001d2"},{title:"削り",tags:["削り","整地"],category:"term",content:"主に整地を目的として1~3Line消去をすること\\n無駄な削りもあるが必要な削りも世の中には存在する",link:"",id:"1a16267b0b7c3f428030e5cb10b1e3e56b3f95ea"},{title:"Donation(ドネイト)",tags:["donate","ドネイト","空中"],category:"term",content:"穴を一旦塞いでTspinの地形を作ること\\n特にTspinの後に塞いだ穴が空く形状となるもの",link:"",id:"eafbc1723a0844d66292009fccfb17dda1728173"},{title:"‘Debt’",tags:["qianzhai","debt","owe"],category:"term",content:"中国のテトリスコミュニティで使われる用語(欠债と呼ばれている)\\n\\n特定の地形を完成させないとまともな攻撃(Tspinやテトリス)ができない状況や地形を表す用語\\n端的に言えばTSTタワーやキングクリムゾンのような大型テンプレを組み終わるまでの隙のことを指す\\n大型テンプレを実践でする場合には凝視等で安全なことを確認してから行わないと不利な状況になります",link:"",id:"494a79a3b7c09476e9b602f0de65d7444af7db6a"},{title:"謎テト",tags:["クイズ","quiz","謎","上達","練習"],category:"term",content:"特定の状況とお題が与えられ、それを満たすような答えを探す詰将棋みたいなもの\\n謎テトがまとめられたサイトもある",link:"",id:"f5d2a8bf4275cae881388c7e38388bddf4872d0a"},{title:"てとぼ",tags:["募集","上達","練習","tetobo"],category:"term",content:"テトリス募集の略\\nTwitterやDiscord上で対戦相手を募る時に使う言葉\\nTwitterではてとぼをRTしてくれるbotが存在する",link:"",id:"372008da2c8cc0a291a67e428a209f5a0d31a978"},{title:"テト譜コード",tags:["開発","テト譜","譜面","コード"],category:"term",content:"テト譜URLの「v115@~」以降の部分のこと\\nこれにはテト譜地形やコメント等の情報が収められている\\n「v115@」の部分は「m115@」だったり「v095@」だったりする\\n詳しくはnewjade氏が作成した「テト譜v115のデータ構造」というスライド参照",link:"https://docs.google.com/presentation/d/1P5xt0vPGuxSb9hbRW6hvQFYKFoIccfNTJkWTdjtyigc/edit#slide=id.p",id:"e777f175dd22978ab4fe72da0032e69e5f7374c7"},{title:"地力",tags:["実力","上達"],category:"term",content:"あらゆる場面に対応できる総合的な能力のこと\\n要はテトリスの実力\\n\\n実際には速さや見える手、凝視等の根本的な能力の総称として使われることが多い",link:"",id:"297a557493aa8dad2ab34028f5cf135ed7390caf"},{title:"パリティ",tags:["開発","テト譜","譜面","研究","練習"],category:"term",content:"地形を特定の法則に従って2色以上で塗り分けた時の性質のこと\\n今までは主に市松パリティや縦パリティでパフェが取れる条件を絞り込みだけだったが、最近では研究が進みアップスタック時に安定して火力が出せる地形を維持する条件などが解明されている",link:"",id:"51a0c20b3b6f8cabcfbebfc77851c74475f5884a"},{title:"Attack & Defend",tags:["attacking","defending","攻撃","防御","攻防","アタック","ディフェンス","火力","相殺"],category:"term",content:"attack:相手の火力ゲージに到達した攻撃のこと\\ndefend:相手から送られてきた火力に自分の火力を当てること(日本では「相殺」と呼ばれる)\\nカウンター:相手からの火力を受ける(相殺外し)、または相手の火力を相殺してから相手に攻撃を送り返すこと\\nほとんどのゲームでは1:1で相殺が計算されます\\nつまり相手が火力4で攻撃してきた時に自分がテトリス等で火力4を出した場合、4-4=0 で完全相殺となります",link:"",id:"631de8b698d9d53d8e8787bceeef14436277349e"},{title:"Combo(コンボ)",tags:["ren","combo","れん","レン","こんぼ","コンボ","連"],category:"term",content:"日本では「ren」とも言う\\n連続してLien消去を行うこと\\n1回目のLine消去を0ren目、2回目を1ren目、3回目を2ren目としてカウントアップしていく\\nもちろんLine消去せずにミノを置いたらren数はリセットになる",link:"",id:"4128f2188446f8b8d722d9a805311a67b2199f74"},{title:"Spike(スパイク)",tags:["spike","スパイク","すぱいく","まとめ"],category:"term",content:"短時間で高火力を出すこと\\nただしネットのラグによって大量の火力が行き来することを「ラグスパイク」と呼ぶことがあるが厳密にはスパイクではない\\nTechminoとTETR.IOにはスパイクカウンターがあり、これによって短時間でどれだけ高火力を出したかがわかる",link:"",id:"0600eadaec48d6c22ec000240a27fe964584e7e8"},{title:"端開け(端空け)",tags:["sidewell","端","開け","空け","ren","combo","レン","れん","コンボ"],category:"term",content:"端を任意の幅開ける積み方\\nつまり端開け1列はテトリス積みになります\\n端開け2~4列はren地形になります\\n\\n端開けは幅を広げる程、短時間で積み上げられますがその分相手からの攻撃が簡単に刺さります\\nそのため上級者が端ren等をする場合は相手に隙があるかを確認してから組み始めます",link:"",id:"32eac94ecf78f188c3274e7d106ea8cffb52e8a7"},{title:"中開け(中空け)",tags:["centerwell","中","開け","空け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中を任意の幅開ける積み方\\n基本的に左右から5,6列目を中心に開けることを指す\\nミノを左右に移動させる回数が端開けに比べ多くなるため積み込む速さは遅くなるがそれ以上に選択肢が増えるので好まれる",link:"",id:"cd92890afb1e74dfcd16135ae67aa31ef56e8c6a"},{title:"Partial well",tags:["partialwell","開け","空け","ren","combo","レン","れん","コンボ"],category:"term",content:"日本では使われない用語\\n中でも端でもない左右から2,3,4列目を中心に任意の幅開ける積み方\\n定義的には63積みやヤンキーrenなどがこれにあたる",link:"",id:"ba121cf78df0cbf688ed4cd5881123c443058db6"},{title:"Side 1-wide(端開け1列、端空け1列)",tags:["s1w","side1wide","sidewelltetris","端","1","空け","開け","テトリス"],category:"term",content:"つまり端を開けてテトリス積みをすること\\n最も伝統的な積み方\\n最も簡単に積め、簡単に火力を送れる\\nただし攻撃の幅が狭い(テトリスかドネイトTspinぐらい)ので上に行くほどあまり好まれない",link:"",id:"b48962188262aa932c589c90f2fc7ac2deccb9ab"},{title:"Side 2-wide(端開け2列、端空け2列)",tags:["s2w","side2wide","端","2","空け","開け","ren","combo","レン","れん","コンボ","初心者","下級者"],category:"term",content:"端に2列幅を持たせるrenの積み方\\n積みやすくrenによって簡単に火力が出せるので初心者におすすめ\\n上に行くほどren数を稼ぎづらいことからあまり使われない",link:"",id:"e83445bc508d7f1124b6feca371ed67ddb4c89d3"},{title:"Side 3-wide(端開け3列、端空け3列)",tags:["s3w","side3wide","端","3","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"端に3列幅を持たせるrenの積み方\\n2列開けよりもren数を稼ぎやすいが、2列開けよりもrenが途切れやすい",link:"",id:"7491d2d3b3caf7e53faeb3dc1455b2753dc9eaa9"},{title:"Side 4-wide(端開け4列、端空け4列)",tags:["s4w","side4wide","端","4","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"端に4列幅を持たせるrenの積み方\\nren地形を作る時によく使われる\\n積む幅が狭いので速く積み上げることができ、上手くいった場合にはren数を大きく稼ぐことができる\\nただしrenを繋げるのは少し難しく、また地形が高くなるのが早いので油断していると簡単に刺さる",link:"",id:"71c8467d053ba0a54355f293b5373ffe5c9463f0"},{title:"Center 1-wide(中開け1列、中空け1列)",tags:["c1w","center1wide","centerwelltetris","中","1","空け","開け","テトリス"],category:"term",content:"つまり真ん中を開けてテトリス積みをすること\\n攻撃の幅が広く、また簡単に攻撃を組み立てることができるため対戦で好まれる",link:"",id:"ab48b2a2126432736dafb7ace4e6afdf4cbe773e"},{title:"Center 2-wide(中開け2列、中空け2列)",tags:["c2w","center2wide","中","2","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中に2列の幅を持たせるrenの積み方\\nTミノが遠い時にTspinを作るとなりやすいが意図的に使われることは少ない",link:"",id:"e1574eb512b691a48938b87003b2eb5e510a066c"},{title:"Center 3-wide(中開け3列、中空け3列)",tags:["c3w","center3wide","中","3","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中に3列の幅を持たせるrenの積み方\\nSTSDやSTMB-ケイブ、TSTタワー等テンプレを組みやすい幅ではあるが精々10段ぐらいしか積まれない",link:"",id:"184a16cc5afe7488759acf9cdf9a8534f2341e3a"},{title:"Center 4-wide(中開け4列、中空け4列)",tags:["c4w","center4wide","中","4","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中に4列の幅を持たせるrenの積み方\\nren数を稼ぎやすく、相手から20段以上の攻撃を受けないと出現ミノの位置にブロックが重ならないのでrenを狙う場合によく使われる\\nrenの調整が強いゲームだと嫌われやすい",link:"",id:"1139463af9eb74645054bc7a85c718b52755e583"},{title:"ヤンキーren",tags:["partial","ヤンキー","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中でも端でもない左右一方から2,3列目を中心に2~3列の幅を持たせるrenの積み方\\n積み込み難易度の高さや最適化のしづらさからあまり使われることはない",link:"",id:"091334e842c6b8c0a73c5ab5e17b853f398eb6e0"},{title:"Residual(種)",tags:["res","種","residual","c4w","s4w","端","中","ren","combo","れん","レン","こんぼ","コンボ"],category:"term",content:"端開けや中開けをした時に幅を持たせた部分にあるブロックの数のこと\\n特に4列renの時に使われる\\nよく使われる種数は種3、または種6だが種3n(n:1以上の整数)なら理論上多くのren数を稼げる\\nまた3nじゃなくても種2などは1ミノLine消去せずに置くことで種6になったりする\\n\\n種3の特徴:消し方の種類が少ないので簡単に習得でき、積みに使うブロック数が多くなるので速く積み上げられるが種6等よりも繋げられないパターンが多い\\n種6の特徴:消し方の種類が多いので難しいですが安定してrenがつなげやすく、途中でTSSを加えられるためゲームによっては非常に強力な攻撃になります",link:"",id:"acbe02a42704d282d8c35f0ab5fcb391488188ce"},{title:"6–3 Stacking(63積み)",tags:["63stacking","six-three","sixthree","6","3","積み","初心者","下級者","40","スプリント"],category:"term",content:"左側に幅6、右側に幅3で積む積み方\\n最適化をある程度習得していれば横2入力が少なくなるのでKPPが少なくなり、積みに使うIミノの割合を下げることができるのでより効率よくテトリスを撃つことができます\\n特にスプリント(40Line)で使われる積み方です\\nしかし端開け(90積み、09積み)と比べ積める幅が狭いので少し練習が必要になります",link:"",id:"b28ddc88b0bbab182034906177510057be37b223"},{title:"Freestyle(フリースタイル)",tags:["ziyou","フリー"],category:"term",content:"主に20TSDで使われる用語\\nLST等のループできるテンプレを使わずに20TSDを完走することを指します\\nLST等のテンプレを使わない分難易度は高いがプレイヤーのTspinスキルを見せることができます",link:"",id:"b6e37d62b1c693ec9ca5923f4d1c84c8af6d790b"},{title:"Topping out(トップアウト)",tags:["die","death","topout","toppingout","トップ","死","刺"],category:"term",content:"モダンテトリスの死亡判定は3つあり、どれか1つを満たすとゲームオーバーとなる\\n\\n1.ブロックアウト:出現したミノが盤面上にあるブロックと重なる\\n2:ロックアウト:致死Lineよりも上にブロックを置く\\n3.トップアウト:せり上がりなどにより地形の高さが40を超える\\n\\nTechminoの場合はブロックアウトの判定しか行っておらず、ロックアウトとトップアウトはない",link:"",id:"59960b31d11165c89d47787c2de99bc38b8264a5"},{title:"Buffer zone",tags:["above","super","invisible","disappear","猶予","盤面","上部"],category:"term",content:"通常、盤面は縦20段だが実際には21段目以上が存在し、21段目から40段前後までをBuffer Zoneという(日本ではあまり使われない)\\n通常は40段までで十分なのだがゲームによっては足りない場合がある\\n詳しくは「Vanish zone」参照",link:"",id:"130c8afeaebcef1c72c7c9571e6c690afc184d3d"},{title:"Vanish zone",tags:["disappear","gone","cut","die","猶予","盤面","上部","死","バグ","無限"],category:"term",content:"Buffer zoneよりも上の領域を指す\\n通常はVanish zoneに到達できないが開発者の設計ミスによって到達できるゲームがいくつかある\\nそしてこの領域に侵入すると一般的には強制終了になるがゲームによっては異なる振る舞いをする\\n例えばぷよぷよテトリスではBuffer zoneが43段必要だが十分に確保されていないためLine消去時に最上段のブロックをコピーし続けるバグがあります(具体的な活用方法は地球儀ボタンのリンクをご覧ください)\\nまたJstrisのVanish zoneは22段以上の領域となっており、21段よりも上のブロックは消滅します",link:"https://youtu.be/z4WtWISkrdU",id:"1451f8bbada0acd2857a81be0e7c9f5471da89b4"},{title:"Falling speed(落下速度)",tags:["fallingspeed","gravity","落下","重力","20","g"],category:"term",content:"1フレーム(通常は60fps)に何段自由落下するかを計る指標\\n単位は「G」\\nGは通常時には大きすぎる単位であり、例えばマラソンのLv.1は1/60Gの落下速度で1GはLv.13相当になります\\nモダンテトリスの最高落下速度は20Gでこれは盤面の高さが20段なことから来ています\\nしかし実際には20Gと表記されていても無限なことが多く、盤面の高さが21段以上でも出現した瞬間にミノが一番下に落ちるようになっている\\n詳しくは「20G」の項目参照\\nTechminoでの落下速度は1ブロック落ちるのに必要なフレーム数で表現されます\\n例えば落下速度60の場合、1秒間に1マス下に落ちます(ゲームがデフォルト60fpsで動作しているため)",link:"",id:"6d8efed7f848a629b55b0b29f5c9968b0f925ad4"},{title:"20G",tags:["gravity","instant","瞬間","落下","重力","20","g"],category:"term",content:"モダンテトリスの最高落下速度\\n20Gモードでは実際に20Gで動いているわけでなく、ミノが一番下に出現するようになっている\\nこれによってミノが段差や壁を登れないことがある\\n単位「G」は「Falling speed(落下速度)」の項目参照",link:"",id:"333426ad906acc63675dfe7cbe18d8e8e4a5a946"},{title:"Lockdown Delay(設置時間)",tags:["lockdelay","lockdowndelay","lockdowntimer","設置","ロック","接着","ディレイ","遅延","時間"],category:"term",content:"ミノが地面に接してから完全に設置するまでの時間のこと\\nモダンテトリスでは設置時間が比較的緩く、さらに移動や回転によって設置時間をリセットできることが多い\\nほとんどのゲームでは最大15回まで設置時間をリセットできるようになっているが、この回数も操作ミノがあった最低高度を更新することでリセットすることができる\\nこれを使うことで時間稼ぎができる\\nクラッシクテトリスでは設置時間が厳しいことが多々あります",link:"",id:"c4f509e16a53c734429ba87ceedb780e2049b895"},{title:"ARE(出現時間)",tags:["spawn","appearance","delay","are","出現","スポーン","遅延","ディレイ","時間"],category:"term",content:"ミノが設置してから次の操作ミノが出現するまでの時間のこと",link:"",id:"032d579b840c30205575f1aca46ca1d9a8e5b4ee"},{title:"Line ARE(Line消去時間)",tags:["appearance","delay","line","ライン","are","消去","遅延","ディレイ","時間"],category:"term",content:"Lineを消去するのにかかる時間",link:"",id:"864a47d70caa0cbb7779cc4fd62ac8e3ba3d6579"},{title:"Death ARE(死後硬直時間)",tags:["die","delay","dd","死","硬直","are","出現","スポーン","残機","復活","遅延","ディレイ","時間"],category:"term",content:"残機制などが有効になっている時に死亡してから復活するまでの時間\\nTechminoの場合はブロックアウトで死亡した時、次のミノの出現時間に死後硬直時間が加算されます\\nまたIHSやIRSなどを使うことによってブロックアウトを回避できる場合があります\\n\\nこのシステムはNOT_A_ROBOT氏によるアイデアです",link:"",id:"72179608811dccdf6be8b38d0c12a13fdd342f3e"},{title:"Finesse(最適化)",tags:["finesse","最適化","効率","操作","初心者","下級者","上達","練習"],category:"term",content:"ミスなく最低限の操作で目的の場所にミノを移動させる技術\\n速さが上がり、ミスも減ります\\nJstrisの「restart on finesse error」やTechminoの最適化失敗音を有効にすることで練習できます\\n厳密にはTechminoの最適化判定は「理論上の最小入力数」ではなく、「ソフトドロップを必要としない位置の時、一定回数以下の入力かどうか」で判定しています\\nそのためソフトドロップが必要なspinなどの時は最適化の判定を行っていません\\nまたTechminoの最適化率は一定回数以下の場合100%、一定回数より入力が1多い場合50%、入力が2多い場合25%、入力が3以上多い場合0%とされています\\nまた0Gと20Gで最適化の算出方法を変えていないため落下速度が速い時は不正確なことに注意してください",link:"",id:"e50e3567a81e2fae61f08dc025de8ce31529fa00"},{title:"‘Doing Research’",tags:["scientificresearch","研究","上達","練習","科研"],category:"term",content:"「科研」という中国のテトリスコミュニティで使われる言葉\\n落下速度の低い1人用モードで技術やテンプレを研究・練習することを言います(日本でもこの練習はありますがその行為のみを指す単語は存在しません)",link:"",id:"9278144ec951e80b757cec593b1d8c7fcd4c1e25"},{title:"Keymapping(キー配置)",tags:["feel","キー","key","操作"],category:"term",content:"ここではキーボードでのキーコンフィグについて言及します\\nキーコンフィグの原則\\n1.同時に押される可能性がある複数のキーを1本の指に割り当てないでください\\n基本的には回転3種類(右、左、180°)と左右移動(右、左)はそれぞれ同時に押されることはありません\\n2.既に他のゲームで小指を鍛えていない限り小指を使わないキー配置にしてください\\n基本的には人差し指と中指を中心に組み立てるといいでしょう\\n3.人によって最適なキー配置は違うので使っている人を理由に変える必要はないです\\n\\n最低限の原則を守っていればキー配置による優劣は非常に薄いと考えられます",link:"",id:"0a7f368c96fef419be637b9c6ab6da06aab5adbc"},{title:"Handling(ハンドリング)",tags:["feel","handling","チューニング","das","arr","ハンドリング","操作"],category:"term",content:"操作に悪影響を与える主な要因を以下に挙げます\\n1.デバイスの設定や状態による遅延\\nゲームを再起動したりデバイスを変えたりすることで改善されます\\n2.ゲームが重い\\n機器の性能不足やプログラムコードが不安定、設計の不具合が原因です\\nエフェクト設定などを軽くすることで緩和される場合があります\\n3.意図的に操作性を悪くされている\\n適応するしかありません\\n4.DASやARR等のチューニング設定が合っていない\\n適当な値に変更しましょう\\n5.姿勢が悪い\\n腰痛めますよ?\\n6.姿勢やキー配置、チューニングを変えて慣れていない\\n慣れるの諦めるか根気強く頑張りましょう\\n7.疲労\\n早急に休んでください",link:"",id:"46fb746364907d6eaac6a1399a6ae5199f90eb6f"},{title:"DAS (横溜め)(簡易な説明)",tags:["das","arr","delayedautoshift","autorepeatrate","ダス","だす","ため","溜め","横"],category:"term",content:"キーボードの「O」を長押しすると長いOの文字列ができます\\nこのときOがどのように出現したかというと「O->(長い溜め時間)->O->(僅かな溜め時間)->O->(僅かな溜め時間)->...」のようになります\\nこの長い溜め時間のことをDAS(delay auto shift、別名:横溜め)、僅かな溜め時間のことをARR(auto repeat rate)と呼びます",link:"",id:"6237720d40b10ea8fd1c5cb959db17d238b4e501"},{title:"DAS & ARR",tags:["das","arr","delayedautoshift","autorepeatrate","ダス","だす","ため","溜め","横"],category:"term",content:"Delay Auto Shiftの略、日本だと「横溜め」とも言われる\\n左右入力をした時に横に移動する仕組みのこと\\nまた長時間左右入力した時に最初の横に1つズレる移動から次の移動までの時間のこと\\n\\nARRはAuto Repeat Rateの略\\n左右入力を長時間すると連続して横に動き始めるがその時の移動周期のこと\\nゲームによってはDASやARRをフレームで計算しています\\n60fpsで動作するゲームの場合、f(フレーム)×16.7でms(ミリ秒)に換算できます",link:"",id:"d79af5ba7f2a4e057d7aeec842d9d8ee8e737c9d"},{title:"DAS tuning(DASチューニング)",tags:["das","tuning","チューニング","操作"],category:"term",content:"より速くプレイしたい人はDASを4~6f(67~100ms)、ARRを0f(0ms)にすることをおすすめします(ARR:0というのはDASより長く入力を続けた瞬間、端にミノが移動する設定です)\\n理想の操作方法としては単時間入力と長時間入力を確実にコントロールできるようにし、ARRを0にDASやそれ以外の設定は可能な限り低くすることです",link:"",id:"323c1b9c140407542738b97fd8e10f3564c39397"},{title:"DAS cut(DASカット)",tags:["dascut","dcd","カット"],category:"term",content:"*Techmino用語*通常、ミノが出現する前にDAS時間以上入力をしているとミノが出現した瞬間に動き出します\\nDASカットはこのような現象を減らすためにDAS時間以上入力していても出現時にDASカット分減算する機能です\\n他のゲームにも似たようなものがありますが恐らく異なるでしょう",link:"",id:"8b5b2ebc0da01b3cd80a4d798703d721c14bf30d"},{title:"Auto-lock cut(自動設置カット)",tags:["autolockcut","mdcut","自動","カット"],category:"term",content:"ミノが自由落下により設置された時にハードドロップを入力してしまうことで暴発するという事故を防ぐ機能です\\n自由落下によって設置した場合、自動設置カット時間の間ハードドロップが無効化されます\\n他のゲームにも似たようなものがありますが恐らく異なるでしょう",link:"",id:"a5d401a9ffa0de7bf066b91005d40cbc6a79d2fc"},{title:"SDF",tags:["softdropfactor","ソフトドロップ"],category:"term",content:"Soft Drop Factor\\n\\nソフトドロップの速さを自由落下の速さの倍数で表現する方法\\nガイドラインテトリスではSDF20、つまりソフトドロップの速さは自由落下の速さの20倍と定められている\\nなおTechminoではSDFを使用してません",link:"",id:"e530adfdb37a1128fe34adb56f1b60622fa67381"},{title:"形と名前",tags:["mino","ミノ","みの"],category:"term",content:"Techminoで使われる全ブロックとその名前のリストです:\\nTetrominos:\\nZ:`CHAR.mino.Z`, S:`CHAR.mino.S`, J:`CHAR.mino.J`, L:`CHAR.mino.L`, T:`CHAR.mino.T`, O:`CHAR.mino.O`, I:`CHAR.mino.I`;\\n\\nPentominos:\\nZ5:`CHAR.mino.Z5`, S5:`CHAR.mino.S5`, P:`CHAR.mino.P`, Q:`CHAR.mino.Q`, F:`CHAR.mino.F`, E:`CHAR.mino.E`, T5:`CHAR.mino.T5`, U:`CHAR.mino.U`, V:`CHAR.mino.V`, W:`CHAR.mino.W`, X:`CHAR.mino.X`, J5:`CHAR.mino.J5`, L5:`CHAR.mino.L5`, R:`CHAR.mino.R`, Y:`CHAR.mino.Y`, N:`CHAR.mino.N`, H:`CHAR.mino.H`, I5:`CHAR.mino.I5`;\\n\\nTriminos, Domino, and Mino:\\nI3:`CHAR.mino.I3`, C:`CHAR.mino.C`, I2:`CHAR.mino.I2`, O1:`CHAR.mino.O1.",link:"",id:"99622ced67e536423468cc866d74f22551c91f14"},{title:"7種1巡",tags:["bag","7bag","randomgenerator","7","種","1","巡","生成","出現","法","則"],category:"term",content:"別名:7-bag、正式名称:Random Generator\\n公式テトリスがミノを生成するのに使うアルゴリズムのこと\\nテトリスには通常7種類のミノがあるが全種類が同じ数出現することが保証されている\\n例:ZSJLOIT OJSIZLT TOILSZJ...",link:"",id:"aa006bc1bae0390132268713ec7aa91e6b923ddd"},{title:"His generator",tags:["history","hisgenerator","tgm","生成","出現","法","則"],category:"term",content:"History generator\\nTGMに使われるミノを生成するときの法則\\n毎回ランダムに7種類の中から選択されるが、もし選択されたものが数個前と同じな場合はまたランダムに7種類の中から選択され最終的に別のミノが選択されるか再選択回数が限界に達して同じミノが選択される\\n例えば「his 4 roll 6」と設定されているジェネレータの場合、選択したミノが前に使った4つのミノの中にある場合、最大6回まで違うミノが出るまで再選択する\\n他に「his 4 roll 6 pool 35」のようにさらにランダム性を減らしたものもある\\nTechminoではrollの値はネクストの長さの半分、小数点以下切り上げになっています",link:"",id:"0b1eb1158396d0061c6b94476c6d87ee72e8b384"},{title:"HisPool generator",tags:["hisPool","history","pool","tgm","生成","出現","法","則"],category:"term",content:"History Pool generator\\nHis generatorを基に「Pool」という機能を導入した生成法則\\nミノを選択する場合にPoolという袋の中から選択されている\\nPoolの中にあるミノは選択された回数に基づいて選択される確率が変動しており、出現頻度が低いものほど確率が高くなっている\\nこの仕組みによってランダム性が大きく減らされ、同じようなミノばかり来るということはなくなった",link:"",id:"1579c44475d98d4fc1e131ddc7fb4144a14f6d84"},{title:"bagES generator",tags:["bages","easy","start","生成","出現","法","則"],category:"term",content:"*Techmino用語*\\nBag Easy-Start\\n7種1巡を更に改良した生成法則\\n最初に置きづらいミノ(S/Z/O/S5/Z5/F/E/W/X/N/H)が選択されません",link:"",id:"62a9f13c56314bb19e8c762b0d98064e7e1fd01d"},{title:"Reverb generator",tags:["reverb","生成","出現","法","則"],category:"term",content:"*Techmino用語*\\n7種1巡から派生した生成法則\\n7種1巡を基にしてそれぞれのミノが数回連続して出ようとします\\n特定のミノが頻繫に連続して出ようとすると連続して出る確率が下がり、逆にあまり連続して出ないミノは連続して出るように確率が上げられます",link:"",id:"27828cfe25f21b50d405a8ae6e6c77458c0ac953"},{title:"C2 Generator",tags:["cultris2generator","cultrisiigenerator","c2generator","カルトリス","生成","出現","法","則"],category:"term",content:"Cultris IIで使われる生成法則\\nミノに重みを付けて計算しています\\n初期は全ミノの重みは0に設定されています\\nそしてミノを選択する時、全てのミノそれぞれに次のような処理を施します:\\n現在の重みを半分にし、そこに0~1の間で生成された乱数を加算する((重み/2)+(0~1の乱数))\\n\\nそして算出された値を新たな重みとし、最も重みが大きいミノを選択します\\nまた選択されたミノの重みは3.5で割られ、それを新たな重みとします\\nつまり選択されたミノの新しい重みは((元の重み/2)+(0~1の乱数))/3.5、選択されなかったミノの新しい重みは(元の重み/2)+(0~1の乱数)となります",link:"",id:"11aed6c53ccae54ddd4a72fffda1e036fd9fbc7e"},{title:"Hypertapping(ハイパータッピング)",tags:["hypertapping","ハイパー","コントローラー","操作"],category:"term",content:"指をコントローラー上で振動させることでARRよりも速い周期で横移動させる技術\\nDASが遅いクラッシクテトリスでよく使われる\\nモダンテトリスのほとんどはDASが十分に短いためこの技術は不要です",link:"",id:"9ab46b9602ef4876d2d3c4135e6d55543cdffcd2"},{title:"Rolling(ローリング)",tags:["rolling","ローリング","ピアノ","コントローラー","操作"],category:"term",content:"DASやARRが遅いクラッシクテトリスの高重力(1G以上)下で安定してプレイするための操作方法\\n片方の手とコントローラーを固定し、もう片方の手でコントローラーの背面を叩くこと高速入力を実現している\\nこの操作方法はハイパータッピングよりも速く、さらに少ない力で行うことができます\\nこの操作方法はCheez-fishが最初に発見し、理論上1fに1回操作できると言われています",link:"",id:"7447bee82c2ebb9d75a06834d0f5fa82af1b99ca"},{title:"Passthrough(貫通)",tags:["pingthrough","ピンスルー","貫通","すり抜け"],category:"term",content:"双方の火力が互いに相殺されず相手の火力ゲージに火力が到達すること\\nまたインターネットのラグにより貫通が発生することを「pingthrough」と言う",link:"",id:"97d0af68b1bdbc346e8a149678b92cbb7469f19f"},{title:"Tetris OL attack",tags:["top","tetrisonlineattack","テトオン","toj","toz","オンライン","テトリス","火力","攻撃","計算"],category:"term",content:"テトリスオンラインの火力計算\\nSingle,double,triple,tetrisの火力はそれぞれ0,1,2,4となっており、TSS,TSD,TSTの場合は2,4,6となる\\nまたTspin mini判定になると火力が半分になります\\nrenの火力は1ren目から+0,+1,+1,+2,+2,+3,+3,+4,+4,+5,+5,+5...と上限5まで上昇し、元の火力に加算されます\\nBtBの火力は+1、ただしTSTの場合は+2で元の火力に加算されます\\nパーフェクトクリアの火力は+6で元の火力に加算されます\\nただしパーフェクトクリア分の火力は相殺が当たらず、直接相手に送られます",link:"",id:"bd2933b1c8eb8beeb91305a7a8f61a07c1f5ad86"},{title:"Techmino attack",tags:["techminoattack","Techmino","てくみの","テクミノ","てっくみの","テックミノ","火力","攻撃","計算"],category:"term",content:"少し複雑なためメイン画面の右下にある「?」を参照",link:"",id:"91ddf25ab71c366ce480fc8ab618df3d85debcc9"},{title:"Stacking(積み)",tags:["stacking","積み","つみ","置く"],category:"term",content:"ミノを置いて行くこと\\n必須技術の1つ",link:"",id:"210b1e4de5cb0e2cbeab5d39429ae822f94ec2e8"},{title:"Rotation buttons(左右回転)",tags:["doublerotation","回転","左","右","2"],category:"term",content:"左右回転両方を使うことで3回転操作がなくなり、入力数が減少します\\n最適化は左右回転のみを使うことを前提に設計されています",link:"",id:"723cb9c2cefa08da4c6288f1554fd591b8a3e981"},{title:"Rotation buttons (左右180°回転)",tags:["triplerotation","回転","左","右","180","3"],category:"term",content:"左右,180°回転の全てを使えばどんな回転方向でも1回の入力で済みます\\nしかし全てのゲームに180°回転があるわけでなく、この技術を習得しても左右回転を習得した時ほどの上達はないでしょう\\n最適化という点では速さを極端に求めない限り必要ありません(ただし180°の回転入れは覚える必要があります)",link:"",id:"4b9a4bce9c37f9a3a454f189c8e4838a480ec6bd"},{title:"ザンギ",tags:["操作","ザンギ","ざんぎ","zangi"],category:"term",content:"左右移動->ソニックドロップ->もう一方の左右移動と行われる操作のこと\\n例えば左ザンギの場合、左端へ一瞬で移動->ソニックドロップ->右へ壁に衝突するまで移動 となる",link:"",id:"31a18dc0e9d6d131fd39f02b0b642e8c32424757"},{title:"Drought(ドラウト)",tags:["drought","ドラウト","干ばつ","連続"],category:"term",content:"欲しいミノが全く来ない状況のこと\\nクラッシクテトリスでよく起こることで地形やプレイが乱れる原因になります\\nモダンテトリスではランダムではなく、ある程度生成されるミノが制御されているのでほとんど起こらず、最大でも13ミノ引けば欲しいミノが1つは出現します",link:"",id:"c132569d13682aef326885b940b503d59c76e98a"},{title:"Bone block(骨ブロック)",tags:["bone","tgm","骨","ボーン","ブロック","スキン"],category:"term",content:"初期のテトリスで使われているミノスキン\\n昔のコンピュータはコマンドラインインターフェイス(WindowsのcmdやMacのterminalなど)を主に使っていたのでテトリスのミノは「[]」の集合で表現されていました\\nこれが骨のように見えるので骨ブロックと呼ばれています\\n\\nTechminoでは骨ブロックを「全てのミノが使用できるミノスキン」と定義されています\\nミノスキンが異なる場合、骨ブロックのスタイルも異なる可能性があります",link:"",id:"7ab2e8eef5d2257d9a5ec3d9dfcae72b89a5ae7c"},{title:"Semi-invisible(セミインビジブル)",tags:["half","invisible","semi","セミ","半","インビジブル","透明"],category:"term",content:"時間が経過すると設置されたミノが透明になるルール\\nこの透明になるまでの時間は明確ではないので「数秒後に消える」と表現しても問題ない",link:"",id:"494bab8fad0a90fbf1dc6d8843843e07f945014d"},{title:"Invisible(インビジブル)",tags:["invisible","透明","インビジブル"],category:"term",content:"瞬時に設置したミノが透明になるルール\\n消えるアニメーションがあるインビジブルルールのことを指すことがあるが、Techminoではそのようなルールは簡単になりすぎると判断し、アニメーションなしのインビジブルルールを「Sudden Invisible」と読んでいます",link:"",id:"8e0158e3951e4788f501f5ff57e7d076008a7b00"},{title:"MPH mode",tags:["mph"],category:"term",content:"生成法則なし(ランダム生成)、ネクストなし、ホールドなし\\nかなりの反応速度が要求される",link:"",id:"d58b1888eea0850399c8fd1599ca980ae84f22dd"},{title:"Input delay(入力遅延)",tags:["input","delay","入力","遅延","硬直","ディレイ","時間"],category:"term",content:"どんなデバイスでも入力してからゲームに反映されるまでに遅延があります(通常、数ms~数十ms)\\n入力遅延が大きすぎると操作に違和感を覚えます\\nこの遅延は使用するハードウェアやソフトウェアの性能が主な原因であり、機器のパフォーマンスモードを有効(または省電力モードを無効)にしたり、モニターのゲーミングモードを有効にすると軽減されるかもしれません",link:"",id:"211d5c4499361cc1310a22c40d675f90a6ff13a0"},{title:"Secret Grade(裏GM)",tags:["larger","than","裏","gm","ジグザグ"],category:"term",content:"TGMシリーズに登場するイースターエッグモード\\n19段使って「>」の形に穴を作ることでクリアとなる\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"1e1b169684a9570ad29f7d5fb52d0faef4306e72"},{title:"Cold Clear",tags:["cc","coldclear","ai","bot","コールド"],category:"term",content:"テトリスのbot\\n元々はMinus Kelvin氏がぷよぷよテトリス用に開発したbotだがTechminoではAllspinとTRSに対応できるよう改良されている",link:"",id:"990c511aa61eac6e04105edca1735021f986f0e2"},{title:"ZZZbot",tags:["ai","bot","zzztoj","misamino"],category:"term",content:"テトリスのbot\\n中国のテトリスプレイヤー、奏之章 (Zòu Zhī Zhāng)氏が開発し、多くのゲームで動作する",link:"",id:"812877aa04577bb0767f153f62550039dbfd9b51"},{title:"Zetris",tags:["ai","bot","zetris","misamino"],category:"term",content:"テトリスのbot\\nmat氏がぷよぷよテトリス用に開発したbot\\nmisaminoを元に開発された\\n凝視はしてないが受けた後に一定段以下になる攻撃は外すような仕様になっている",link:"",id:"cc72b3c988608a786278634124a67a1886dcd2b1"},{title:"ほいこ",tags:["ai","bot","hoiko","howyiko","ほゐこ"],category:"term",content:"テトリスのbot\\nうかん氏がぷよぷよテトリス用に開発したbot\\n相手から送られる火力を見ており、直列になる確率と待ち時間から相殺外しを判断している",link:"",id:"9718855de3396e159778bfca45f51da47d6bd6da"},{title:"wataame",tags:["ai","bot","わたあめ","watame"],category:"term",content:"テトリスのbot\\n雨安氏がぷよぷよテトリス用に開発したbot\\n多様なモードを搭載している",link:"",id:"445012f5aa4527fae7038257b224397ec874eed1"},{title:"Openers(開幕テンプレ)",tags:["setup","openers","開幕","テンプレ"],category:"setup",content:"ゲーム開始時に組むテンプレのこと\\n中盤でも作れるものがあるが完全に同じになるとは限らない\\n強い開幕テンプレは基本以下の点を満たしている\\n1.強い攻撃を持ち、積みに使っているTの割合が低い\\n2.必要なソフトドロップが少ない\\n3.多くのミノ順で組める\\n4.中盤へ移行しやすく、分岐が少ない\\nほとんどの開幕テンプレは通常7種1巡を利用して作られているために安定して組める",link:"",id:"d69b3b4545e814a8a1df17ba7442947c77f537e4"},{title:"DT Cannon(DT砲)",tags:["dtcannon","doubletriplecannon","dt","砲"],category:"setup",content:"Double-Triple 砲\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=dt",id:"cedc9e6ea84c71f2f7d828d0c2aae5581e65cab7"},{title:"DTパフェ",tags:["dtcannon","doubletriplecannon","パフェ","パーフェクト","dt","砲"],category:"setup",content:"DT砲の後にパフェを取る派生のこと\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=double_triple_cannon_opener",id:"7826dfa7c56f5ad74e4b0123a448b28a0da23487"},{title:"BT砲",tags:["btcannon","betacannon","砲"],category:"setup",content:"β砲, Beta砲\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=bt_cannon",id:"d8b9e8effcd0ea9c8440705b6902abcff9261775"},{title:"BTパフェ",tags:["btcannon","betacannon","ループ","5","パフェ"],category:"setup",content:"BT砲の後にパフェを取る派生のこと\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=bt_cannon",id:"2b5e1b305ef8a160791b11ed9deee4ce4bdc3f79"},{title:"TKI 3 Perfect Clear(DDパフェ)",tags:["ddpc","tki3perfectclear","d","パフェ","tsd","tki"],category:"setup",content:"開幕TSDからもう一度TSDを撃ち、パフェを取るテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"de5ec7511c2104bb5288b4fefb14f96a8027bee8"},{title:"MKO積み",tags:["mko","むこうみず"],category:"setup",content:"派生を含めれば大体のことはできる開幕テンプレ\\nHarddropのwikiを載せるがmko全体の内、1割も情報が書かれていない\\n使い方がかなり重要な開幕テンプレなので使う場合は積極的に情報収集することをおすすめする",link:"https://harddrop.com/wiki?search=MKO_Stacking",id:"bda30a7753e93928e38a5e48e70100ee2cd56af5"},{title:"QT砲",tags:["qtcannon","砲"],category:"setup",content:"DT砲より安定してTSDとTSTを撃てるように作られた開幕テンプレ\\nただし下穴が端にあると二巡目が組めない\\nTD派生がしやすい",link:"https://tetrisopener.wicurio.com/index.php?QT%E7%A0%B2",id:"3de3372167a377ead69b0780ea5a918b5bd32325"},{title:"Mini-Triple(MT)",tags:["mt","minitriple","ミニ","トリプル","ts"],category:"setup",content:"TSMからTSTを撃つ形",link:"https://knewjade.github.io/fumen-for-mobile/#?d=v115@tgB8IeA8DeD8AeH8BeH8BeG8CeE8JeAgWJAteEfEXU?b9ARAAAAvhG1bfdmfdrf1vBAAAdrBAAAtgB8IeA8DeD8AeG?8CeG8BeAAAeF8AeB8AeD8JeAAPJAteEfEXUb9ASAAAAvhF1?bfdmf1qfNqBAAAdrB",id:"2f139c99f2863c049a75827dbe04214f683d672d"},{title:"Trinity(トリニティ)",tags:["trinity","トリニティ","tsd"],category:"setup",content:"TSD3回かTSM->TST->TSDを撃つテンプレ",link:"https://harddrop.com/wiki?search=trinity",id:"44c6aa6ec48f5e82469829ca27e72f911bec10bc"},{title:"Wolfmoon Cannon",tags:["wolfmooncannon","砲"],category:"setup",content:"形が特殊な開幕テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"17ca3a1f4b46085a67798b5b2d651f04015fdf10"},{title:"Sewer(TZT砲)",tags:["sewer"],category:"setup",content:"形が特殊な開幕テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=sewer",id:"f974ed3f0712d9d4e0cf4674de8214c41a78a590"},{title:"TKI",tags:["tki-3","tki3","tsd","c","td"],category:"setup",content:"開幕TSD、またはTDの形をしたTKIという開幕テンプレを指す(日本では後者の方が多い)\\nここでは後者のリンクを置いておく\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=C-Spin",id:"3c313d703e4a8340db43e4e702184f92dffba465"},{title:"God Spin",tags:["godspin","神","ゴッド"],category:"setup",content:"派手な開幕テンプレ[しかし実際に使うのは難しい]\\nWindkey氏考案\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=godspin",id:"3cd8c7d5f3275348741b07f56c3a9df69cf2a625"},{title:"AlbatrossSP(アルバトロスSP)",tags:["albatross","アルバトロス","アルバ","sp"],category:"setup",content:"TSD->TST->TSD->パフェを撃つ開幕テンプレ\\nほとんどのTミノをTspinに使う、派手で素早いテンプレです\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"28426d77b9b2d3681590fd8543415f4c103df3e3"},{title:"Pelican(無名砲)",tags:["うーみん","ウーミン","無名","むめい"],category:"setup",content:"日本では無名砲(3文字で「うーみん」と読む)と呼ばれる\\nアルバトロスSPに似た流れを持つ開幕テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Pelican",id:"a0ffb2601adf5127b35fe5d8992cc78a55861838"},{title:"Perfect Clear Opener(パフェ積み)",tags:["7piecepuzzle","パフェ","積み"],category:"setup",content:"7ミノ置いた後、パフェを取れる確率が最も高い形\\n通常はパフェ率61.2%だがIミノを置かず残り4ミノからパフェを見抜くことで84.6%までパフェ率が上昇する\\nTechminoのパフェトレーニングでジグザグの形が出たらこのテンプレの形です\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"053e9a88a14c6916bdda0d4a6d89aa489f1e029d"},{title:"Grace System(グレースシステム)",tags:["liuqiaoban","gracesystem","1stpc","グレース","パフェ"],category:"setup",content:"6ミノ置いた後、パフェが取れる確率が最も高い形\\nパフェ率88.57%\\nパフェチャレンジの4×4の形が出たらこのテンプレの形です",link:"https://four.lol/perfect-clears/grace-system",id:"5723b8d6eb11a1b334300616ac602b468a1e5646"},{title:"DPC",tags:["DPC","3","1"],category:"setup",content:"2連パフェや8段パフェ(TD系テンプレのパフェ、SDパフェ等)を取った後に余った1ミノとその後の2巡を使ってDパフェ、もしくはDDパフェを取るテンプレ\\nまたは開幕TSDのパフェ派生のこと\\n\\n前者でDパフェを取る場合、ほぼ100%パフェが取れる",link:"https://tetristemplate.info/dpc/",id:"2db8d886781e45cfcee1ccd39674af938368e580"},{title:"Gamushiro Stacking(ガムシロ積み)",tags:["gamushiro","ガムシロ","td"],category:"setup",content:"TDパフェ系統のテンプレで最初に作られた開幕TDテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"7efbf694f00c69a173d3f54d8eca154b336f5517"},{title:"Mid-game Setups(中盤テンプレ)",tags:["midgamesetups","中盤"],category:"pattern",content:"中盤で使われるテンプレのこと\\n中には開幕テンプレとして使用されるものがある",link:"",id:"4d7b549aafe26a449e2b8022476aaf8848e32879"},{title:"TD",tags:["cspin","tki","td"],category:"pattern",content:"TST->TSDと撃てる形\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Triple Double_Attack_Setups",id:"06a82f4a956e1f94fa0c7430d6b7247f1e4cd9ca"},{title:"STSD",tags:["stsd"],category:"pattern",content:"Super T-Spin Double\\n2回TSDを撃てる形\\nしかし盤面の底に作った場合、相手からの下穴により1/10の確率で最初のTSDが撃てなくなる\\nこの確率は100%と言う人もいる\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=stsd",id:"6e5f658dc6a43206e6c19edc413a0b306ed60b22"},{title:"STMB Cave(STMBケイブ)",tags:["stmb","ケイブ","ドネイト"],category:"pattern",content:"幅3がある時にS(Z)を壁に引っ掛けてTSDドネイトを作るテンプレ\\nSTMBはテトリスDS時代のプレイヤーの名前\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=stmb_cave",id:"8f963631c25795afa82a8463eb49d8e69bfe1694"},{title:"Fractal(ダブルダガー)",tags:["shuangrenjian","fractal","spider","ダブル","2","ダガー","フラクタル","ダブダ"],category:"pattern",content:"TSDの上にTSDが乗った形\\nS(Z)が引っ掛かってTSDが2つできてる場合はSTMBケイブとなり、引っ掛けておらず1つの屋根で2回TSDを撃てる場合はダブルダガーとなる\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Fractal",id:"a1d1b007ea622f66dc039b3d15fb0a6cb1605c21"},{title:"LST stacking(LST積み)",tags:["lst","積み"],category:"pattern",content:"半永久的にTSDとテトリスをし続ける積み方",link:"https://four.lol/stacking/lst",id:"3586c5870b5b47acd10dbf3b283095107b602b47"},{title:"Hamburger(ハンバーガー)",tags:["hamburger","ハンバーグ","ハンバーガー"],category:"pattern",content:"S(Z)でTSSをするドネイトテンプレ\\n半永久的にTSSとテトリスができる\\n当初はSを使った場合をハンバーガー、Zを使った場合をハンバーグと言っていたが廃れた\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=hamburger",id:"f078a94fec15dab371d5235998f57be7e1a9183a"},{title:"Imperial Cross(インペリアルクロス)",tags:["imperialcross","インペリ"],category:"pattern",content:"十字上の穴に屋根を付けて2回TSDをする形\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=imperial_cross",id:"29157abc349d599865ddaca4db1350299aab317e"},{title:"Kaidan(階段ドネイト)",tags:["jieti","kaidan","stairs","階段"],category:"pattern",content:"段々になっている地形にS(Z)を置くことでTSD地形を作るドネイトテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=kaidan",id:"9ff425533e9b19c5aa5ab1c7ade5b05a19a6e914"},{title:"Shachiku Train(社畜トレイン)",tags:["shachikutrain","shechu","社畜","トレイン"],category:"pattern",content:"2回TSDを撃つテンプレ\\nテンプレ名は制作者が満員電車で思い付いたことに由来する\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"ff36c5a882fd03017ed42fdcc2069f4e4be2cac3"},{title:"Cut Copy",tags:["qianniao","cutcopy","千鳥","カット"],category:"pattern",content:"Tspin地形がある時にさらにTspinできるような地形を作ること\\n千鳥格子はこの技術を使った中盤テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Cut_copy",id:"44c082ce08afeff03790181a113e952962270cce"},{title:"King Crimson(キングクリムゾン)",tags:["kingcrimson","キンクリ","キング","jojo","ジョジョ"],category:"pattern",content:"STSDの上にTSTを足したテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=King_Crimson",id:"dc20f54cbaf3c6b0eb0f430680495b34a699be7c"},{title:"連パフェ(1/3)",tags:["pcloop","パフェ","ループ","連"],category:"pattern",content:"テトリス堂にて1~5回目と7回目のパフェについて詳しく知れます\\n7回目のパフェがキレイに終わると丁度70ミノ、つまり10巡終わったことになりゲーム開始時と同じ状態になります",link:"https://shiwehi.com/tetris/template/consecutivepc.php",id:"04afeaf59cc711c2281c7cae8ed12ad31bb25897"},{title:"連パフェ(2/3)",tags:["pcloop","パフェ","ループ","連"],category:"pattern",content:"four.lolに1~7回目のパフェについて詳しく知れます",link:"https://four.lol/perfect-clears/5th",id:"58a9e9b70e64aef8087c4e26f33820dcd05b2e1f"},{title:"連パフェ(3/3)",tags:["pcloop","パフェ","ループ","連"],category:"pattern",content:"ナイテン(NitenTeria)によって作成された連パフェについての情報がまとめられているドキュメント\\nただし情報量の多さ等から自分である程度吟味する必要がある",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"088838a86728371647247dbe6613f4f14f768ef6"},{title:"Console(コンソール)",tags:["cmd","commamd","minglinghang","kongzhitai","terminal","コンソール","ターミナル","コンソール","console"],category:"command",content:"Techminoにはデバッグや高度な機能を実行するためのコンソールがあります\\nコンソールにはメイン画面のTechminoのロゴを連打するかメイン画面で「C」を連打することで移動できます\\nコンソールの使用は自己責任です",link:"",id:"26c4d964b179ac687cdccf369e93e9011078eb20"},{title:"Reset setting",tags:["reset","setting","リセット","設定"],category:"command",content:"コンソールに「rm conf/setting」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n設定をリセットします",link:"",id:"8a6b43bb26bf99c9bad1f05cd83ed45a1f6b998f"},{title:"Reset statistics",tags:["reset","statistic","data","リセット","統計","データ"],category:"command",content:"コンソールに「rm conf/data」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n統計をリセットします",link:"",id:"81893334c9e3e29e0965cb352bbbd5ac3af42962"},{title:"Reset unlock",tags:["reset","unlock","リセット","未開封"],category:"command",content:"コンソールに「rm conf/unlock」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n1人用モードのランクをリセットします",link:"",id:"33cdac7adaca836660b7c4f0d7caba89a1196e66"},{title:"Reset records",tags:["reset","record","リセット","レコード","記録"],category:"command",content:"コンソールに「rm -s record」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n記録をリセットします",link:"",id:"357dff0ef2aa18233d411ce73d1dcb98a7c6f089"},{title:"Reset key",tags:["reset","virtualkey","リセット","キー","仮想"],category:"command",content:"コンソールに「rm conf/[keyFile]」(キーボード:key、仮想キーボード:virtualkey、仮想キーボード設定を保存:vkSave1(2))と入力し、Enterもしくはreturnを押す\\nそしてキーボードと仮想キーボードの場合は再起動すると有効になります\\n仮想キーボード設定保存の場合はEnterもしくはreturnを押した時に1つのファイルを出力します",link:"",id:"985d4b939e2e49a0aaf0228de0ca6a969684084c"},{title:"Delete replays",tags:["delete","recording","削除","消去","リセット","デリート","リプレイ"],category:"command",content:"コンソールに「rm -s replay」と入力し、Enterもしくはreturnを押すと即座に実行されます\\nリプレイデータを消去します",link:"",id:"bab349d70bb116a33e63aeddefd1beee6cb3b572"},{title:"Delete cache",tags:["delete","cache","消去","削除","リセット","デリート","キャッシュ"],category:"command",content:"コンソールに「rm -s cache」と入力し、Enterもしくはreturnを押すと即座に実行されます\\nキャッシュを消去します",link:"",id:"8de9f2442a4b880b608aadfd6d58dd049f93f232"},{title:"SFX",tags:["soundeffects","効果音"],category:"english",content:"日本語で「効果音」や「SE」と言われるもの",link:"",id:"d7ae9e4e443839dee2b712bc094701daf186350a"},{title:"BGM",tags:["backgroundmusic","音楽"],category:"english",content:"ゲーム中に流れている音楽のこと",link:"",id:"a13f52cde8db05647691f27c214480010504d836"},{title:"TAS",tags:["tas"],category:"english",content:"「Tool-Assisted Speedrun (Superplay)」の略\\nゲームのルールを破ることなく特殊なツールを用いてプレイすること\\n途中セーブやゲーム内時間の進みを弄る等して最高得点を出したりユニークな目標を達成している\\n簡単なTASはTechminoに内蔵されている",link:"",id:"fe88da9820ec746210644a7109aefbd97829d56f"},{title:"AFK",tags:["afk"],category:"english",content:"Away From Keyboardの略\\n画面前から離れる時だけじゃなく、休憩するときにも使われる\\n適度に休憩することで身体と頭が休み、より質の高いプレイができる",link:"",id:"39766d41a5cc0a50dc678025627e2f0f1876b2c3"},{title:"BRB",tags:["brb"],category:"english",content:"Be right backの略\\n一旦離れるけどすぐに戻るときに使われる\\n人によっては試合中にbrbというが結局セットが終わるまで戻らない人もいる",link:"",id:"47c78999a8300e45749d8f7f05eb2ff2a6e6dc44"},{title:"sweep",tags:["sweep","ストレート"],category:"english",content:"日本語で言うストレートのこと\\n例えば、7先の試合で1本も取られずに勝利した場合、相手をsweepしたと言う",link:"",id:"da36a1615f31d9d62ca90000721f15f5cf683334"},{title:"Timing",tags:["timing","shiji","fanji","タイミング"],category:"term",content:"主に攻撃をするタイミングのこと\\n攻撃をするタイミングを考えることで相手からの攻撃を相殺したり、逆に相殺を外して自分の攻撃を相手に送れたりできます\\n要は相殺管理の1つです",link:"",id:"2bf4d1f08aeac96a1e54d12679ce99785ddf0c4d"}],ER=[{title:"=[NHÓM 01]=",tags:["nhom01","giới","thiệu","bản","dịch"],category:"",content:`NHÓM 01: VỀ ZICTIONARY & BẢN DỊCH + */let m1;const js=e=>m1=e,p1=Symbol();function mc(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var yi;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(yi||(yi={}));function bR(){const e=Sc(!0),t=e.run(()=>V({}));let n=[],o=[];const r=xi({install(i){js(r),r._a=i,i.provide(p1,r),i.config.globalProperties.$pinia=r,o.forEach(a=>n.push(a)),o=[]},use(i){return!this._a&&!sP?o.push(i):n.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const b1=()=>{};function _f(e,t,n,o=b1){e.push(t);const r=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),o())};return!n&&Tc()&&Wf(r),r}function yr(e,...t){e.slice().forEach(n=>{n(...t)})}const vR=e=>e(),Pf=Symbol(),_l=Symbol();function pc(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,o)=>e.set(o,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const o=t[n],r=e[n];mc(r)&&mc(o)&&e.hasOwnProperty(n)&&!ct(o)&&!go(o)?e[n]=pc(r,o):e[n]=o}return e}const yR=Symbol();function CR(e){return!mc(e)||!e.hasOwnProperty(yR)}const{assign:lo}=Object;function kR(e){return!!(ct(e)&&e.effect)}function xR(e,t,n,o){const{state:r,actions:i,getters:a}=t,s=n.state.value[e];let l;function c(){s||(n.state.value[e]=r?r():{});const d=Kv(n.state.value[e]);return lo(d,i,Object.keys(a||{}).reduce((u,h)=>(u[h]=xi(z(()=>{js(n);const g=n._s.get(e);return a[h].call(g,g)})),u),{}))}return l=v1(e,c,t,n,o,!0),l}function v1(e,t,n={},o,r,i){let a;const s=lo({actions:{}},n),l={deep:!0};let c,d,u=[],h=[],g;const f=o.state.value[e];!i&&!f&&(o.state.value[e]={}),V({});let b;function p(R){let P;c=d=!1,typeof R=="function"?(R(o.state.value[e]),P={type:yi.patchFunction,storeId:e,events:g}):(pc(o.state.value[e],R),P={type:yi.patchObject,payload:R,storeId:e,events:g});const D=b=Symbol();jt().then(()=>{b===D&&(c=!0)}),d=!0,yr(u,P,o.state.value[e])}const m=i?function(){const{state:P}=n,D=P?P():{};this.$patch(W=>{lo(W,D)})}:b1;function k(){a.stop(),u=[],h=[],o._s.delete(e)}const T=(R,P="")=>{if(Pf in R)return R[_l]=P,R;const D=function(){js(o);const W=Array.from(arguments),M=[],j=[];function ee($){M.push($)}function B($){j.push($)}yr(h,{args:W,name:D[_l],store:x,after:ee,onError:B});let X;try{X=R.apply(this&&this.$id===e?this:x,W)}catch($){throw yr(j,$),$}return X instanceof Promise?X.then($=>(yr(M,$),$)).catch($=>(yr(j,$),Promise.reject($))):(yr(M,X),X)};return D[Pf]=!0,D[_l]=P,D},v={_p:o,$id:e,$onAction:_f.bind(null,h),$patch:p,$reset:m,$subscribe(R,P={}){const D=_f(u,R,P.detached,()=>W()),W=a.run(()=>ot(()=>o.state.value[e],M=>{(P.flush==="sync"?d:c)&&R({storeId:e,type:yi.direct,events:g},M)},lo({},l,P)));return D},$dispose:k},x=wo(v);o._s.set(e,x);const y=(o._a&&o._a.runWithContext||vR)(()=>o._e.run(()=>(a=Sc()).run(()=>t({action:T}))));for(const R in y){const P=y[R];if(ct(P)&&!kR(P)||go(P))i||(f&&CR(P)&&(ct(P)?P.value=f[R]:pc(P,f[R])),o.state.value[e][R]=P);else if(typeof P=="function"){const D=T(P,R);y[R]=D,s.actions[R]=P}}return lo(x,y),lo($e(x),y),Object.defineProperty(x,"$state",{get:()=>o.state.value[e],set:R=>{p(P=>{lo(P,R)})}}),o._p.forEach(R=>{lo(x,a.run(()=>R({store:x,app:o._a,pinia:o,options:s})))}),f&&i&&n.hydrate&&n.hydrate(x.$state,f),c=!0,d=!0,x}function SR(e,t,n){let o,r;const i=typeof t=="function";o=e,r=i?n:t;function a(s,l){const c=Sy();return s=s||(c?Me(p1,null):null),s&&js(s),s=m1,s._s.has(o)||(i?v1(o,t,r,s):xR(o,r,s)),s._s.get(o)}return a.$id=o,a}const y1=SR("app",{state:()=>({locale:"zh",theme:BC().value}),persist:{enabled:!0}}),TR=de({__name:"Wrapper",setup(e){const t=y1(),n=z(()=>t.theme==="light"?N_:B_);return(o,r)=>{const i=t_,a=y_,s=D8,l=l_,c=Nw;return We(),wt(c,{theme:Ne(n),class:"h-full"},{default:Se(()=>[me(l,null,{default:Se(()=>[me(s,null,{default:Se(()=>[me(a,null,{default:Se(()=>[me(i,null,{default:Se(()=>[xg(o.$slots,"default")]),_:3})]),_:3})]),_:3})]),_:3})]),_:3},8,["theme"])}}}),Af=(e,t)=>{const n=e.storage||sessionStorage,o=e.key||t.$id;if(e.paths){const r=e.paths.reduce((i,a)=>(i[a]=t.$state[a],i),{});n.setItem(o,JSON.stringify(r))}else n.setItem(o,JSON.stringify(t.$state))};var wR=({options:e,store:t})=>{var n,o,r,i;if((n=e.persist)!=null&&n.enabled){const a=[{key:t.$id,storage:sessionStorage}],s=(r=(o=e.persist)==null?void 0:o.strategies)!=null&&r.length?(i=e.persist)==null?void 0:i.strategies:a;s.forEach(l=>{const c=l.storage||sessionStorage,d=l.key||t.$id,u=c.getItem(d);u&&(t.$patch(JSON.parse(u)),Af(l,t))}),t.$subscribe(()=>{s.forEach(l=>{Af(l,t)})})}};const _R=bR().use(wR),PR=iR({locale:"zh",legacy:!1,messages:{en:{title:"Techmino Online Dictionary",back:"Back",search:"Search",tags:"Tags",copy_from:"Copied from",error:"Error",copied:"Copied successfully!",maker:"Created by"},ja:{title:"Techmino オンライン辞書",back:"戻る",search:"検索",tags:"タグ",copy_from:"コピー元",error:"エラー",copied:"コピーしました!",maker:"作成者"},zh:{title:"Techmino 在线词典",back:"返回",search:"搜点什么",tags:"标签",copy_from:"复制于",error:"出错了",copied:"复制成功!",maker:"制作者"},vi:{title:"Techmino Từ điển trực tuyến",back:"Quay lại",search:"Tìm kiếm",tags:"Thẻ",copy_from:"Sao chép từ",error:"Lỗi",copied:"Sao chép thành công!",maker:"Tạo bởi"}}}),Pl={help:"#fdba74",org:"#fbb741",game:"#14a3c7",term:"#ff7f7f",setup:"#94a3b8",pattern:"#bfdfa5",command:"#0284c7",english:"#2563eb",name:"#7a5299"},AR=[{title:"Translator Note 1",tags:[],category:"help",content:'This is an English translation of the Simplified Chinese version of TetroDictionary.\\n\\nThe translation may not accurately reflect the original content in Simplified Chinese.\\n\\nFeel free to visit our GitHub page if you want to view the contributors or make contributions yourself. Click the globe icon in the bottom right corner to open the webpage.\\n\\nNote that this dictionary sometimes uses the terms \\"block\\", \\"piece\\", and \\"minoes\\" interchangeably; the terms \\"field\\" and \\"matrix\\" are also interchangeable.\\n\\nTranslated and corrected by User670 & C₂₉H₂₅N₃O₅ et al.',link:"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_en.lua",id:"a4202b034ef51731afbd968c5732612c595c9bbe"},{title:"To New Players",tags:["guides","newbie","noob","readme","recommendations","suggestions","helps"],category:"help",content:'Here are our suggestions for new players of Tetris:\\nThe basics:\\n\\t\\t1. Choose a professional Tetris game with good controls. Games like Techmino, TETR.IO, Jstris, and Tetris Online are some good choices. Low quality games that deviate too much from the guidelines, or those with poor controls, are not good for your training.\\n\\t\\t2. Spend time building basic skills in the beginning. Try to spend more time on skills such as reading the next sequence and performing Tetrises consistently. Master the basics before trying more advanced skills like T-spins.\\nEssential skills:\\n\\t\\t1. Memorizing the spawn positions of the blocks.\\n\\t\\t2. Remembering the maneuvers to move the blocks to the desired locations.\\n\\t\\t3. Thinking ahead about where to place the blocks in the next sequences.\\n\\nThe globe button links to an article called \\"Suggestion for new players to Tetris Online\\" written by Tatianyi, a Chinese Tetris player (translated to English by User670).',link:"https://github.com/user670/temp/blob/master/tips_to_those_new_to_top.md",id:"0687abecb1ea80ef2bb72f117c262bfd761e1fd5"},{title:"Practice Recommendations",tags:["readme","noob","new","guides","recommendations","suggestions","helps"],category:"help",content:`Here are our recommendations for improving your Tetris skills. Having trouble improving your skills? Try relaxing and spending more time playing modes you enjoy. Have fun!\\n\\nHere are three sets of tasks that we feel are essential. Although the tasks within each group are ordered by difficulty, we recommend working on all three sets of tasks simultaneously (rather than one at a time).\\n\\nA. Stacking\\n\\tA1. Think twice before placing the block. If your first choice doesn't seem like a good fit, think again.\\n\\tA2. Keep the terrain flat, as this allows more placement possibilities for different blocks.\\n\\tA3. If you are playing a game mode that has Holds, think about the three blocks you can use — the current piece, the piece in the Hold, and the next piece. Think about the best order to place these blocks so that you can maintain a flat terrain for longer.\\nB. Efficiency & Speed\\n\\tB1. Do not rely too much on ghost pieces. Instead, think about what keys to press to get the piece to where you want it. Start manipulating the block when you have a clear idea in mind.\\n\\tB2. Use both rotation keys. Instead of rotating clockwise three times, try rotating counterclockwise just once.\\n\\tB3. It's okay to go slow when you first start learning Finesse. If you can get your keystrokes right in the beginning, it's not that hard to speed up once you've mastered it.\\nC. Stacking\\n\\tC1. Finish 40L without topping out.\\n\\tC2. Finish 40L with no Hold without topping out.\\n\\tC3. Finish 40L with Techrashes only.\\n\\tC4. Finish 40L with Techrashes only no Hold.\\n\\nSet C is more flexible for individual players, and you can also adjust the pace based on your own conditions (e.g., how stable is \\"stable\\" for you).\\n\\nKeep practicing A1 when you have finished set C. This is the most basic skill in all of Tetris, and it is easy to master everything else when you are a master of reading the Next sequence.`,link:"",id:"c0ac7760294e72a7b97ea6630123db3502b886dd"},{title:"Learning T-spins",tags:["tspins","learning","study","guides","tips","recommendations","suggestions","helps"],category:"help",content:"T-spin is a relatively advanced skill in Tetris. It is very hard to master T-spins by just focusing on the local terrain; good abilities of stacking and next-reading are also required to master this skill.\\n\\nWe strongly recommend that you master the basic skills (like stacking) before attempting to learn T-spins.\\n\\nWe recommend starting with T-Spins if you can meet the following criteria:\\n- Finishing 40L within 60 s (or 40–120s, based on personal conditions)\\n- Finishing 40L with Tetrises only\\n- Finishing 40L with Tetrises only and no Hold (without significantly slowing down)\\n\\nThis ensures that you are good at next-reading and planning.",link:"",id:"5cd6ed2e16a7d5f98ef5bda29dcfcb2d59f7320e"},{title:"Official Website",tags:["homepage","mainpage","websites"],category:"help",content:"The official website of Techmino!\\nYou can download the latest stable build of Techmino and change your profile there.\\nClick on the globe icon to open the website in your browser.",link:"http://studio26f.org",id:"051e31daedd281c3cab5e6128a9aa12d98468fa1"},{title:"Huiji Wiki",tags:["huiji","wiki"],category:"help",content:"(灰机wiki)\\nA Chinese Tetris wiki by Tetris enthusiasts from Chinese Tetris Research Community groups and affiliates. Most pages have been referenced and translated from Hard Drop Wiki and Tetris Wiki for now. Link in Simplified Chinese.",link:"https://tetris.huijiwiki.com",id:"42d751274648ebcdd498ed05651a6c1348916083"},{title:"Hard Drop Wiki",tags:["harddrop","hd","wiki"],category:"help",content:"A Tetris wiki hosted on the Hard Drop community.",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"f1b54180b79dcab2e47154d00b06111768f96ba4"},{title:"Tetris Wiki",tags:["tetris","wiki"],category:"help",content:"A Tetris wiki focusing on Tetris-related content, created by Myndzi in 2015. Over the years, thousands of contributions have been made documenting official and fan Tetris games in the series, uncovering game mechanics, and creating guides to improve the gaming experience.",link:"https://tetris.wiki",id:"391eac4ba9910be23ce6ddc9931480e97dcbf980"},{title:"Tetris Wiki Fandom",tags:["tetris","wiki","fandom"],category:"help",content:"A Tetris wiki.",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"8ea80081c57541940cf70403d3796b066a9814ed"},{title:"Four.lol",tags:["four","wiki"],category:"help",content:"A website containing collections of various openers.",link:"https://four.lol",id:"52b4b9a1c6bedae73122783d9b0f733c6a9ce2ff"},{title:"'Tetris Hall'",tags:[],category:"help",content:"(テトリス堂)\\nA Japanese website with many setups, tutorials, and minigames. It has detailed descriptions of consecutive PCs. Link in Japanese.",link:"https://shiwehi.com/tetris/",id:"a9608cfe74e7f95420eed7176a916bf9cfcb1c1a"},{title:"'Tetris Template Collections'",tags:[],category:"help",content:"(テトリステンプレ集@テト譜)\\nA Japanese website with a variety of setups and detailed categories. Most setups have images, so it is easier to share with others. Link in Japanese.",link:"https://w.atwiki.jp/tetrismaps/",id:"d85d34cfc8efb10da1cb31561d6ea897fa417834"},{title:"tetristemplate.info",tags:[],category:"help",content:"(テトリスブログ - PerfectClear)\\nA Japanese website with some setups. It doesn't contain too many setups, but there are very detailed explanations. Link in Japanese.",link:"https://tetristemplate.info/",id:"d40ad538ee0415ecdc146b11b2e1cd3fd67ae860"},{title:"Fumen",tags:["fumen"],category:"help",content:"A Japanese Tetris field editor. Commonly used to share setups, PC solutions, and more. The linked website is translated into English.",link:"http://fumen.zui.jp/#english.js",id:"d0e3779a4195ae331a24e864388f35215908cabf"},{title:"Fumen for Mobile",tags:["fumenformobile","fm"],category:"help",content:"Fumen with touch screen support.",link:"https://knewjade.github.io/fumen-for-mobile/",id:"513718557f75b71e9df0f10e72c6fe17f472a12f"},{title:"Github Repository",tags:["githubrepository","sourcecode","src"],category:"org",content:"Techmino's official Github repository. Stars are appreciated.",link:"https://github.com/26F-Studio/Techmino",id:"315aeca958c382f06824df3fcbe166c17d612c19"},{title:"Discord Server",tags:["community","communities","discord","server"],category:"org",content:"Join the Techmino server and communicate with other players! Click on the globe icon below to open the link.",link:"https://discord.gg/f9pUvkh",id:"d19baa279f5469c994709939d6f98b82ee6afa18"},{title:"Tetris OL Servers",tags:["tetrisonline","servers","tos"],category:"org",content:'Google \\"Tetris Online Poland\\" for the Poland server.\\nClick on the globe icon for information on the Tetris Online Study server in China (by Teatube).',link:"https://teatube.cn/tos/",id:"aaef4a17ec03250986bc73b06c9a21ec38eebf7e"},{title:"Support 1",tags:["support","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:"The contents in this entry were hidden due to platform restrictions. Feel free to discuss these contents on our Discord server.",link:"",id:"63e01f6305fd44f5529b9cfae41a6eb4932d1cd2"},{title:"Support 1",tags:["support","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:'To donate to Techmino via WeChat Pay or Alipay, type \\"support\\" in console and scan the QR code.',link:"",id:"b1a5db8fdd98e57cf63c003917afbfa9732ba22b"},{title:"Support 2",tags:["support","afdian","aidadian"],category:"org",content:"The contents in this entry were hidden due to platform restrictions. Feel free to discuss these contents on our Discord server.",link:"",id:"2360d40332021acea6771ba3f2570ace6a4eec74"},{title:"Support 2",tags:["support","afdian","aidadian"],category:"org",content:"To donate to Techmino via Aifadian, use the globe icon on the bottom right to open the URL. Aifadian charges a 6% commision off your purchase.",link:"https://afdian.net/@MrZ_26",id:"f349c3bfd8cf4dc628ca7345a0045373b6964b36"},{title:"Support 3",tags:["support","patreon"],category:"org",content:"The contents in this entry were hidden due to platform restrictions. Feel free to discuss these contents on our Discord server.",link:"",id:"3439db5d8c4b26e87d5d70db80ba2b80aee146d6"},{title:"Support 3",tags:["support","patreon"],category:"org",content:"To donate to Techmino via Patreon, click on the globe icon on the bottom right to open the URL. Notice that Patreon may charge you a commision for transactions over a certain amount.",link:"https://www.patreon.com/techmino",id:"1d0e790c5035e72b16b550de068bc41e4b613cd1"},{title:"TTT",tags:["tetris","trainer","tres","bien","T.T.T."],category:"game",content:'Tetris Trainer Très-Bien (by こな \\"kona\\"). A hands-on tutorial of advanced techniques in Guideline Tetris (which only supports physical keyboards).\\nRecommended for players who can complete 40L with no Hold and Tetrises only.\\nIt covered topics such as T-Spin, finesse, SRS, and some battle setups.\\nThe link below is the English version of the website, translated by User670 (Originally in Japanese).',link:"https://user670.github.io/tetris-trainer-tres-bien/",id:"06c2f5784f0c2af2028553ceb1c466dfb6fc3cfe"},{title:"TTPC",tags:["tetris","perfect","clear","challenge","T.T.P.C."],category:"game",content:"Tetris Perfect Clear Challenge (by chokotia). A tutorial on Perfect Clear openers using SRS and Bag7 (which only supports physical keyboards). Recommended for players who completed TTT and are familiar with SRS.\\n\\nLink in English, originally in Japanese.",link:"https://teatube.cn/ttpc/ttpc/",id:"bc809a28d5082dd5e91ac2a14bc3d86cd4c91286"},{title:"NAZO",tags:["nazo"],category:"game",content:"(ナゾ)\\n\\nAll kinds of SRS puzzles ranging from easy to extremely hard, including T-spins and All spins. Recommended for players who completed TTT.\\n\\nLink translated to Simplified Chinese, originally in Japanese.",link:"https://teatube.cn/nazo/",id:"b30aa5227877725a049e81f42a5195fa39696a89"},{title:"TPO",tags:["nazo","T.P.O."],category:"game",content:"Tetris Puzzle O. A Chinese website created by TCV100 with some puzzles NAZO included.",link:"http://121.36.2.245:3000/tpo",id:"be1e2fb7f7331968dbabd1812907dcc559e0fa7a"},{title:"Side Note 1",tags:["note","nb","NB","DM","notice"],category:"game",content:"The following content contains brief introductions to some official and fan-made Tetris games with relatively high popularity. We do not guarantee that they cover every Tetris game. The author of Techmino (MrZ) has made some commentaries about some of these games, which are marked in brackets in the entries. They only represent the personal opinions and recommendations of the author and do not necessarily represent the objective qualities of the games.",link:"",id:"fad8777436240f704ff267552e9b2df73d3467e0"},{title:"King of Stackers",tags:["kos","kingofstackers"],category:"game",content:"Browser | Multiplayer | Mobile Support\\nKoS for short. A turn-based browser Tetris game. Players take turns placing blocks on their fields in 7-block cycles. Attacks only enter the field when a block is placed without clearing a line. The game is highly strategic and has several options for attack mechanics.",link:"https://kingofstackers.com/games.php",id:"1a8091911b83ef151ba031256caeedbd9d10c5a8"},{title:"Tetr.js",tags:["tetrjs","tetr.js"],category:"game",content:`Browser | Singleplayer | Mobile Support\\nA browser-based Tetris game with many advanced options and modes.\\nLink to Farter's Dig Mod (which itself is a mod of another Tetris fan game). You can also check another game on Tetris Wiki called \\"Tetr.js enhanced.\\"\\n\\n[MrZ: The visuals are simple with barely any animations. Only a few, fixed virtual key combinations are available for mobile devices.]`,link:"http://farter.cn/t",id:"ea913690c09b61c00baf22bbf5374c57a176bbaa"},{title:"Tetra Legends",tags:["tl","tetralegends"],category:"game",content:"Browser | Singleplayer | No Mobile Support\\nTL for short. A variety of single-player modes and two hidden rhythm modes. It also visualizes mechanisms usually hidden in other Tetris games. Development was halted in December 2020 for various reasons.",link:"https://tetralegends.app",id:"eeaa456499f5da0ca334a9635c2e445244b333ac"},{title:"Ascension",tags:["asc","ASC"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nASC for short. It uses its own rotation system (also called ASC) and has many single-player modes. 1V1 modes are currently in alpha testing (April 16, 2022). The Stack mode in Techmino was also inspired by Ascension.",link:"https://asc.winternebs.com",id:"0d0ab0af000159054877018e257902841ddc8da8"},{title:"Jstris",tags:["js","jstris"],category:"game",content:"Browser | Singleplayer/Multiplayer | Mobile Support\\nJS for short. It has some single-player modes and some options that can be customized by the player. The virtual keys can also be customized to some extent, but this game has little (if any) animations.",link:"https://jstris.jezevec10.com",id:"0cd07f70c31e6afa20934d060e588a5d1c780596"},{title:"TETR.IO",tags:["io","tetrio","tetr.io"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nIO for short. It has a ranking system and a custom game with many adjustable parameters. It also has desktop clients for better performance and no ads.",link:"https://tetr.io",id:"ae87ac388351ef624001512ede5c48e8050bd71f"},{title:"Nuketris",tags:["nuketris"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nA block stacker game with 1V1 ranked matches and basic single-player modes.",link:"https://nuketris.com",id:"0e7650c03ef4d6f49f1c777a0fa6dcc92538e9ea"},{title:"Worldwide Combos",tags:["wwc","worldwidecombos"],category:"game",content:"Browser | Singleplayer/Multiplayer\\nWWC for short. It has worldwide 1V1 battles, recorded battles (which allows you to battle against recorded games), several different rulesets, and bomb-style garbage line battles.",link:"https://worldwidecombos.com",id:"cdad4cda0f2baffec483fe3f4dbb07238fedd5f4"},{title:"Tetris Friends",tags:["tf","tetrisfriends","notrisfoes"],category:"game",content:'Browser | Singleplayer/Multiplayer\\nTF for short. A defunct browser-based Tetris game. The game was very popular before shutting down a few years ago. There is a private server called \\"Notris Foes\\" that still exists. Click on the globe icon to open the webpage.',link:"https://notrisfoes.com",id:"aa93737a715eea7651a81bf577117efa50489d08"},{title:"tetris.com",tags:["tetris","online","official"],category:"game",content:'Browser | Singleplayer\\nThe official Tetris game on tetris.com, with only one mode (marathon). It supports a mouse-based \\"smart\\" control system.',link:"",id:"8dbd1ac0746709b8d9226562198a1c495209a770"},{title:"Tetris Gems",tags:["tetris","online","official","gem"],category:"game",content:"Browser | Singleplayer\\nAnother Tetris game from tetris.com. It has a gravity (cascade) mechanism, and each game lasts 1 minute (which can be extended by clearing lines with special gem blocks). There are three types of gem blocks with different abilities.",link:"",id:"4aded22adef1815f63b41029ee390feda4c36721"},{title:"Tetris Mind Bender",tags:["tetris","online","official","gem"],category:"game",content:'Browser | Singleplayer\\nAnother Tetris game from tetris.com. An endless marathon with special minos called \\"Mind Benders\\". Clearing a line with a Mind Bender gives you a random effect that either helps or hinders the game.',link:"",id:"a1e3ef60a4f7c07f856105d0c439f4463f91cf23"},{title:"Techmino",tags:["techmino"],category:"game",content:"Cross-Platform | Singleplayer/Multiplayer\\nTech for short. A block stacker game developed by MrZ (and other members of 26F Studio) using LÖVE. It has many single-player modes and customizable parameters, and online multiplayer modes are currently being developed.",link:"",id:"e376ddc533df85763061ff4be412a1a60fb83675"},{title:"Falling Lightblocks",tags:["fl","fallinglightblocks"],category:"game",content:"Browser/iOS/Android/Smart TV | Singleplayer/Multiplayer\\nA multiplatform Tetris game that can be played in portrait and landscape mode. It features fixed DAS and line clear ARE, and also customizable controls on mobile. Most modes are based on the classic NES Tetris, but there are also some modern modes. Battles are half turn-based, half real-time, and garbage cannot be buffered or canceled out.",link:"https://golfgl.de/lightblocks/",id:"f7461c3d8efcface25bdfd51efa07369b904a6de"},{title:"Cambridge",tags:["cambridge"],category:"game",content:"Cross-Platform | Singleplayer\\nA Tetris game developed using LÖVE, with the goal of creating a robust, easily customizable platform for creating new, custom game modes. Originally made by Joe Zeng, development of the game was taken over by Milla on October 8, 2020, starting with V0.1.5.\\n —Tetris Wiki",link:"",id:"ce2dcd4c27a8b2d87e463d472e2dacc2f6137643"},{title:"Nanamino",tags:["nanamino"],category:"game",content:"Windows/Android | Singleplayer\\nA fan game under development with an interesting original rotation system.",link:"",id:"9a9aba9a4d09df4bbebbb40a06e5b593a5a950cd"},{title:"TGM",tags:["tetrisgrandmaster","tetristhegrandmaster"],category:"game",content:"Arcade | Singleplayer/Local Multiplayer\\nTetris The Grand Master, an arcade Tetris series. Titles like S13 and GM originate from this series.\\n\\nTGM3 is the most well-known game in this series.",link:"",id:"42bea4123a6ac7cedcbcb48eb06354c3e41f08c9"},{title:"DTET",tags:["dtet"],category:"game",content:"Windows | Singleplayer\\nA game based on TGM's Classic rule with 20G and a powerful rotation system, with decent controls but no customization other than control mappings. The game is a bit hard to find now, and you may have to install the necessary DLL files manually.",link:"https://t-sp.in/dtet",id:"b0f79b3e269c6d5d91e9636a621484f58500d7a9"},{title:"Heboris",tags:["hb","heboris"],category:"game",content:"Windows | Singleplayer\\nA game with Arcade-ish play style, capable of simulating many modes of other Tetris games.",link:"",id:"3fef424a33e6a2c5d834490667adf79c68361070"},{title:"Texmaster",tags:["txm","texmaster"],category:"game",content:"Windows | Singleplayer\\nA game that includes all modes in TGM which can be used to practice TGM. Note that the World rule in the game is slightly different, such as instant-lock soft drops and slightly different kick tables.",link:"",id:"1f66aef719535f95dd293ee4af13783b66ff8552"},{title:"Tetris Effect",tags:["tec","tetriseffectconnected"],category:"game",content:"PS/Oculus Quest/Xbox/NS/Windows | Singleplayer/Multiplayer\\nOr TE(C) for short. An official Tetris game with elaborate graphics and soundtracks that react to the player's input. The basic version (Tetris Effect) has only single player modes. The extended version, Tetris Effect Connected, has four online battle modes: Connected (VS), Zone Battle, Score Attack, and Classic Score Attack.",link:"",id:"77b024d0923fc88a7328c1cd8e58d559714fbea5"},{title:"Tetris 99",tags:["t99","tetris99"],category:"game",content:"Nintendo Switch | Singleplayer/Multiplayer\\nA game famous for its 99-player battle royale mode and novel strategies not found in traditional battle Tetris games. The game's DLC includes limited single-player modes such as Marathon and Bot Matches.",link:"",id:"88fa220383a17af0f8feb7a8970c76d7c6acf600"},{title:"Puyo Puyo Tetris",tags:["ppt","puyopuyotetris"],category:"game",content:"PS/NS/Xbox/Windows | Singleplayer/multiplayer\\nAn official Tetris game featuring a combination of Tetris and Puyo Puyo, as well as battles between the two games. It also includes many single player and online modes.\\n\\n[MrZ: The Steam PC version has worse controls and poor online experience.]",link:"",id:"035496c78d4a01b8846ac74dd4a09746e53091d3"},{title:"Tetris Online",tags:["top","tetrisonline"],category:"game",content:"Windows | Singleplayer/Multiplayer\\nA defunct Japanese Tetris game with both online and single-player modes. Featuring custom DAS and ARR (but neither can be set to zero) and minimal input delays. Private servers are still available, and it's a good choice for new players to get started.",link:"",id:"3e969c11b86072e6af2e0281c1bf2c1538e60d7d"},{title:"Tetra Online",tags:["TO","tetraonline"],category:"game",content:"Windows/macOS/Linux | Singleplayer/Multiplayer\\nTO for short. A Tetris game developed by Dr Ocelot and Mine. Delay AREs are intentionally high; players who are used to zero delays may have trouble adjusting to the game.\\nThe game was removed from Steam on December 9, 2020 due to a DMCA takedown request filed by TTC.\\nAn offline build is still available for download on GitHub.",link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"6cede01ac0733f3738cf6cd4e6c5983bcf2d8213"},{title:"Cultris II",tags:["c2","cultris2","cultrisii"],category:"game",content:"Windows/OS X | Singleplayer/Multiplayer\\nC2 for short. Based on classic Tetris, Cultris II supports customizable DAS and ARR. Battle mode focuses on time-based combos that challenge players' speed, n-wide setups, and downstacking skills.\\n\\n[MrZ: The Mac version was not being maintained for a long time. Any macOS build newer than macOS 10.15 Catalina cannot run this game at all.]",link:"",id:"20fd4d9af2f4b9bfe23253c0b8eb38916664ad8a"},{title:"Nullpomino",tags:["np","nullpomino"],category:"game",content:"Windows/macOS/Linux | Singleplayer/Multiplayer\\nNP for short. A highly-customizable professional Tetris game. Nearly every parameter in the game can be adjusted.\\n\\n[MrZ: It's UI style is like, retro. You can only control the game using keyboard, and new players may have some problems getting used to it. Also, it seems that macOS Monterey (or later) cannot run this game.]",link:"",id:"7828f9bff6b597b0cccc3d21a41fcb6c5863c969"},{title:"Misamino",tags:["misamino"],category:"game",content:"Windows | Single-player\\nA local 1V1 game with mainly turn-based mode. Supports running custom bots (but you have to learn their API).\\nMisamino is also the name of its built-in bot.",link:"",id:"1f2115b44e609c0ef002b5b57cdd6f77e525ca22"},{title:"Touhoumino",tags:["touhoumino"],category:"game",content:`Windows | Singleplayer\\nA fan-made Tetris game. A modification of Nullpomino with elements from Touhou Project. The Marathon mode features Touhou Project's \\"Spell Cards\\" (special effects added to the field to disrupt the game), which can only be broken by reaching a certain score requirement in a limited time.\\n\\n[MrZ: Recommended for players with at least half-decent skills, otherwise you don't even know how you died.]`,link:"",id:"f40fc44935f7ed9fd4caeeacd18b3d02ef25afd7"},{title:"Tetris Blitz",tags:["blitz","ea","mobile","phone"],category:"game",content:'iOS/Android | Singleplayer\\nA defunct official mobile Tetris game by Electronic Arts (EA), featuring a gravity mechanism. Many Minos fall onto the board at the beginning of the two-minute game, and a \\"Frenzy\\" mode can be entered by continuously clearing lines. The game also features various power-ups and an absent of top-out mechanism. The top rows are automatically cleared when an incoming block overlaps with existing blocks.\\n\\nThis game is no longer available as of April 2020.',link:"",id:"7e7d1f4afdc8adae71b89db8cb84d8d8b6eb01fa"},{title:"Tetris (EA)",tags:["tetris","ea","galaxy","universe","cosmos","mobile","phone"],category:"game",content:"iOS/Android | Singleplayer/Multiplayer?\\nAnother official mobile Tetris game from EA. It has two control modes—swipe and one-touch. It also has a Galaxy mode besides the Marathon mode (with gravity mechanism), and the goal of this mode is to clear all Galaxy minoes before the sequence runs out.\\n\\nThis game is no longer available as of April 2020.",link:"",id:"1e9711297dff349e79dfbe4858847efde9a24003"},{title:"Tetris (N3TWORK)",tags:["tetris","n3twork","mobile","phone"],category:"game",content:"iOS/Android | Singleplayer\\nAn official Tetris game originally developed by N3TWORK, but the development rights were transferred to PlayStudio in late November 2021. It has a Quick Play mode (3-minute Ultra), a Marathon mode, a 100-player Royale mode, and an Adventure mode (where the player must complete a goal in a limited number of moves).\\n\\nAny accounts created after late November/early December 2022 will only have access to Marathon and Adventure modes.\\n[The UI is great, but the controls are not very good.]",link:"",id:"80b2cb1535021b373cd3106c66f25b1b9068ebf8"},{title:"Tetris Beat",tags:["n3twork","rhythm"],category:"game",content:'iOS | Singleplayer\\nA mobile Tetris game by N3TWORK for Apple Arcade. In addition to the classic marathon modes, the game features a \\"beat\\" mode in which the player drops blocks to the rhythm of the BGM.\\n[Too much visual effects with less-than-ideal controls.]',link:"",id:"e29f101c6c0707a7bad170a04c244edd50467613"},{title:"Tetris Journey",tags:["tetrisjourney","mobile","phone","huanyouji"],category:"game",content:"iOS/Android | Singleplayer\\n(俄罗斯方块环游记)\\n\\nA defunct official mobile Tetris game developed by Tencent (available only in China). It had level modes, battle modes, and some single-player modes. It also had customizable virtual keys but lacked the option to adjust DAS or ARR.\\nThe battle mode would last for 2 minutes, and if both players did not top out, the one who sent more attacks would win.\\n\\nThe game was shut down on Feburary 15, 2023.",link:"",id:"1485de38b6720a13ea53d931440cd20835afb9c7"},{title:"JJ Tetris",tags:["jjtetris"],category:"game",content:"Android | Multiplayer\\n(JJ块)\\nA Chinese Tetris game distributed on JJ Card Games (JJ棋牌), a Chinese gamimg platform. It features portrait mode, low input lag, and smooth controls. It also features customizable DAS/ARR and toggleable 20G soft drop and limited virtual key customization. The game has no holds, B2B, garbage buffer, or attack cancellation. The game experience is similar to modern Tetris, except for a 4-line maximum limit on each attack and more powerful combo mechanisms.",link:"",id:"1e4d41ec95e20a17d2b0b7137209c27eff48e7e6"},{title:"Huopin Tetris",tags:["huopin","qq"],category:"game",content:"Windows | Multiplayer\\n(火拼俄罗斯)\\n\\nThe Tetris game on Tencent Game Center, a Chinese gaming platform. It has a 12-wide board, one Next, and no Hold. The DAS and ARR are the same as the keyboard settings for normal typing. Garbage lines can only be sent by Tetrises (3-line attacks) or Triples (2-line attacks). The garbage lines are also checkerboard shaped and almost impossible to dig through.",link:"",id:"4acb20925aace99380ddbda57af730ed00a1f8cc"},{title:"Translator Note 2",tags:[],category:"help",content:"Translator's note on those per-minute and per-second values:\\n\\nNot all of them are commonly used in the global communities, and not all terms mean the same across all contexts. They mainly apply to Techmino.",link:"",id:"a56915125752fd2016014eb983708ebc292649fa"},{title:"LPM",tags:["linesperminute","speed"],category:"term",content:`Lines per minute\\n\\tReflects a player's playing speed.\\n\\tDifferent games may calculate LPM in different ways. For example, Tetris Online calculates its LPM using PPS (see below), where 1 PPS is equal to 24 LPM. This ignores the effect of garbage lines and makes it deviate from the literal meaning. In Techmino, this converted LPM value is written as \\"L′PM.\\`,link:"",id:"73d894554600b983231c107f97397ef097a9e9c8"},{title:"PPS",tags:["piecespersecond","speed"],category:"term",content:"Pieces per second\\n\\tReflects a player's playing speed.",link:"",id:"e86171ebaf8ed816f65e43be6d877de8d4b6df4b"},{title:"BPM",tags:["blocksperminute","piecesperminute","speed"],category:"term",content:"Blocks per minute\\n\\tReflects the playing speed of a player.\\n\\tAlso called PPM (to avoid confusion with the musical term).",link:"",id:"e45f4746cfb8ba67dfddec7efdc4fceb57b05ce9"},{title:"KPM",tags:["keysperminute","keypressesperminute"],category:"term",content:"Keypresses per minute\\n\\tReflects how fast the player presses keys or buttons.",link:"",id:"e1cee2c9c92b4f206a23bc8b78fd2ba45e643324"},{title:"KPP",tags:["keysperpiece","keypressesperpiece"],category:"term",content:"Keypresses per piece\\n\\tThe average number of keypresses a player uses to move a piece into the desired location. This reflects how efficient the player is with the controls. It can be reduced with good finesse skills.",link:"",id:"0c18e93bac2d5c2852553a0f72d501b5a2c6d606"},{title:"APM",tags:["attackperminute"],category:"term",content:"Attack per minute\\n\\tThe average number of attack lines a player can generate per minute, regardless of whether the attacks are used to cancel incoming attacks or not. Reflects the offensive power of a player.",link:"",id:"d1d31e1138c134e9d463c82b58b3e37151b40815"},{title:"SPM",tags:["linessentperminute"],category:"term",content:"[Lines] Sent per minute\\n\\tThe average number of attack lines a player actually sends to the opponent. Reflects the *actual* offensive power of a player",link:"",id:"ef3654f907a66165d12699ab717052a060d2cc9a"},{title:"DPM",tags:["digperminute","defendperminute"],category:"term",content:"Dig/Defend per minute\\n\\tThe average number of garbage lines a player digs through per minute. Can reflect a player's ability to survive incoming garbage lines.\\n\\nSometimes this term refers to Defense (garbage canceled + garbage dug) Per Minute.",link:"",id:"ccc352200ff42c4dc323e2ee4cdb849c6fec093b"},{title:"RPM",tags:["receive","jieshou"],category:"term",content:"[Lines] Received per Minute\\n\\tThe average number of garbage lines a player receives per minute. Reflects the pressure the player is under to some extent.",link:"",id:"43b231b3c47cd64cee3d916bfbe4ba764793d9b9"},{title:"ADPM",tags:["attackdigperminute","vs"],category:"term",content:'Attack & Dig Per Minute\\n\\tReflects the skill differences between the two players within the same match. ADPM is slightly more accurate than APM.\\n\\tThe \\"vs\\" in TETR.IO is actually Atk & Dig per 100 seconds.',link:"",id:"0495aa10da5687b325ad77faa15ab18c4cc1821d"},{title:"APL",tags:["attackperline","efficiency"],category:"term",content:'Attack per line (cleared)\\n\\tAlso known as \\"efficiency.\\" Reflects the per-line efficiency of attacks. For example, Tetrises and T-spins have higher efficiencies than doubles and triples.',link:"",id:"b322d9b0703fcb54f1c315d71cacb4ed568327db"},{title:"Single",tags:["single","1"],category:"term",content:"Clearing one line at a time.",link:"",id:"cf8505ecdf54062f77507d2277018235a73920f9"},{title:"Double",tags:["double","2"],category:"term",content:"Clearing two lines at a time.",link:"",id:"24811454136cb17fb69357520b1ba1f16630ecb2"},{title:"Triple",tags:["triple","3"],category:"term",content:"Clearing three lines at a time.",link:"",id:"c9077749b29d5a57220bcb3d8fc1fdfe18540223"},{title:"Techrash",tags:["techrash","tetris","4"],category:"term",content:"*Techmino-Exclusive*\\nClearing four lines at a time.",link:"",id:"6b8efca840e689c625a7270fc5dbdb723285a769"},{title:"Tetris",tags:["tetris","4"],category:"term",content:'The name of the game (and its trademark). Also the name for clearing four lines at a time in official games.\\nIt is a portmanteau word coined from Tetra (Greek for \\"four\\" <τέτταρες>, \\"téttares\\") and Tennis (favorite sport of the creator of Tetris). Also, the Tetris games developed by Nintendo and SEGA were licensed by TTC. These two companies do not have the copyright of Tetris.',link:"",id:"873dfd5033decc84fc72a70a39b47e1c4e581960"},{title:"All Clear",tags:["pc","perfectclear","ac","allclear"],category:"term",content:"Also known as Perfect Clear (PC, preferred term by the community and used in Techmino). \\nClearing all minoes within the field.",link:"",id:"489b16d39fce243aaf62c6d74f4c197c5acb0d08"},{title:"HPC",tags:["hc","clear","halfperfectclear"],category:"term",content:"Half Perfect Clear\\nAn extension of Perfect Clear (All Clear) in Techmino. A clear is considered an HPC if it clears all minos including and above the line where the clear is performed. If only one line remains on the board after an HPC, that line must not contain any minos placed by the player. An HPC sends a small attack/defense.",link:"",id:"bc1e4b7d147c9d9d95766190f7f5b40185c45989"},{title:"Spin",tags:["spin"],category:"term",content:"(In some games) Rotating a block to an otherwise unreachable location. In certain games, this manipulation can give extra attacks or scores. Different games may have different mechanisms for the specific criteria for a spin.",link:"",id:"5d9daaaadc5360f91dcebcd62ed10b456e779563"},{title:"Mini (Spin)",tags:["mini"],category:"term",content:'A special type of spin that is considered easier than a regular spin (hence the name \\"EZ Spin\\" found in certain games). Compared to regular spins, mini spins usually have reduced attack or score bonuses. Different games may have different mechanisms for the specific criteria for a mini-spin, and the specific criteria may not be intuitive. We recommend that you memorize only a few common mini spins.',link:"",id:"83667c629d251ffdb7a7ea7cd81539a282680e7c"},{title:"All-Spin",tags:["allspin"],category:"term",content:"A ruleset where spins of all pieces are awarded extra attacks/scores, as opposed to T-spins only.",link:"",id:"2657494a801f1ad107b6092b10ce1d4cb895b384"},{title:"T-Spin",tags:["tspin"],category:"term",content:'A spin performed using the T Tetromino.\\nT-spins are usually determined using the \\"3-corner rule\\": A manipulation is considered a T-spin if the last operation applied to the T tetromino is a rotation and at least three of the four diagonal corners of the rotation are not empty. Some games may have additional rules for mini T-spins (or T-spins mini in some games), which may have reduced attacks/scores.',link:"",id:"33700873f7f2afef78198a6e876b059b6879c2a3"},{title:"TSS",tags:["t1","tspinsingle"],category:"term",content:"T-Spin Single\\nClearing one line with a T-spin.",link:"",id:"901ef2970f68b0cc302bb11f967784b1159e5767"},{title:"TSD",tags:["t2","tspindouble"],category:"term",content:"T-Spin Double\\nClearing two lines with a T-spin.",link:"",id:"967e0e2b36dff67c10606d2762ce8a2fae619c1d"},{title:"TST",tags:["t3","tspintriple"],category:"term",content:"T-Spin Triple\\nClearing three lines with a T-spin.",link:"",id:"3d229e9d3df3b0aa86ddc9d366a8613f9fd8c655"},{title:"MTSS",tags:["minitspinsingle","tsms","tspinminisingle"],category:"term",content:"Mini T-Spin Single\\nAlso known as T-Spin Mini Single (TSMS).\\nClearing one line with a Mini T-Spin.\\nDifferent games may have different mechanisms for the specific criteria for a mini T-spin.",link:"",id:"5f704bfb3825aabdffa348225e8f7c9927dbdd21"},{title:"MTSD",tags:["minitspindouble","tsmd","tspinminidouble"],category:"term",content:"Mini T-Spin Double\\nAlso known as T-Spin Mini Double (TSMD).\\nClearing two lines with a Mini T-Spin. MTSD only exists in a limited number of games and may have very different triggers.",link:"",id:"1d1a0531fc40e78e0282ff3600dc7e3206461365"},{title:"O-Spin",tags:["ospin"],category:"term",content:'Since the O tetromino does not change its shape or position after each rotation, it is usually impossible to remove an O tetromino from a \\"pit\\" or \\"hole\\" once it is stuck. Because of this, a meme about O-spins was created in the Tetris community. Someone once made a viral but fake video showing how to do an O-spin in Tetris 99 and Tetris Friend. The XRS in T-ex allows O tetrominoes to be \\"teleported\\" into a pit or hole. In the TRS of Techmino, O tetrominoes can be rotated in a special way to be teleported or transformed into another tetromino to achieve an O-spin.',link:"",id:"f8c9b4832f550d384ac65a4983c8f23b31184e8e"},{title:"Rotation Systems",tags:["wallkick","rotationsystem"],category:"term",content:'Systems that determine how blocks rotate. In most modern Tetris games, the blocks rotate around a specific center of rotation (but some games may not have it). If any of the minoes overlap with either the wall or blocks on the board, the system will try to move the blocks in certain directions to avoid overlapping. This is known as \\"wall-kicking.\\" A rotation may fail if the offset is too large. Wall kicking allows minoes to move into certain holes that would otherwise be unreachable. Different rotation systems may have different wallkick tables and orders.',link:"",id:"48b1d5f3676d7360ee79d94847e7bed571340c31"},{title:"Orientation",tags:["direction","0r2l","02","20","rl","lr"],category:"term",content:'In SRS or SRS-like rotation systems, there is a widely-accepted (though non-standard) notation for describing the orientations of the blocks:\\n\\nThe original orientation of the block (the orientation of the block when the block is spawned) is denoted as \\"0\\";\\nThe orientation of the block after a 90° clockwise (right) rotation is denoted as \\"R\\";\\nThe orientation of the block after a 90° counterclockwise (left) rotation is denoted as \\"L\\";\\nThe orientation of the block after a 180° rotation is denoted as \\"2\\".\\n\\nUnder this system, 0→L means rotating counterclockwise from the original orientation (0) to L; 0→R means rotating clockwise from the original orientation (0) to R; 2→R means rotating counterclockwise from 2 (180°) to R.',link:"",id:"05f03de5dca6dd54f36b66f248865b53b7584e49"},{title:"ARS",tags:["arikrotationsystem","atarirotationsystem"],category:"term",content:"ARS can refer to one of two rotation systems:\\nArika Rotation System, a rotation system used in the TGM series, or\\nAtari Rotation System, a rotation system that aligns pieces to the top left corner when rotating.",link:"",id:"7b82d3437646732dbf4ab0e435e51d79e5e76a97"},{title:"ASC",tags:["ascension"],category:"term",content:"A rotation system used in the Tetris game Ascension (hence the name ASC). All pieces use the two symmetric wall kick tables for the two rotations. The maximum wall kick offset is about 2 blocks in each of the four directions.",link:"",id:"3c62396860b99367fbd37fccce8f6e4a63efaa46"},{title:"ASC+",tags:["ascension","ascplus"],category:"term",content:"A modified version of ASC in Techmino that adds wall kick offsets for 180° rotations.",link:"",id:"b3ff2fa947dba1f978628fa236016f7ef98cd49c"},{title:"BRS",tags:["bulletproofsoftware"],category:"term",content:"BPS rotation system, the rotation system used in Tetris games by Bullet-Proof Software.",link:"",id:"f11a3a05eaf1cfa31978e3e9c281936c8cf8901e"},{title:"BiRS",tags:["biasrs","biasrotationsystem"],category:"term",content:"Bias Rotation System, an original rotation system used in Techmino based on XRS and SRS.\\nIn BiRS, an extra offset is triggered when either the left, right, or softdrop key is pressed and the block touches the minoes or walls in that direction. This introduces an additional offset in the specified direction, in addition to the standard offsets listed on the wall kick tables. The horizontal extra offsets indicated by the keypress must not be in the opposite direction to the composite horizontal offset, and the distance of the composite offset must not exceed √5. If the test fails, the system will perform another test without the horizontal offsets; should this also fail, a further test will be conducted without downward offsets. In contrast to XRS, BiRS uses only a single kick table, making it easier to memorize while retaining the climb-over-terrain feature of SRS.",link:"",id:"c8046c43065451cff313bc088d236bba40c59457"},{title:"C2RS",tags:["c2rs","cultris2"],category:"term",content:"Cultris II rotation system, a rotation system used in the Tetris clone Cultris II. \\nThe priority of the offsets is left 1, right 1, down 1, down left 1, down right 1, left 2, then right 2, which is shared by all rotations and pieces. Note that left has priority over right in this system.",link:"",id:"7f7f54338ec2ddc8433164f845ab6c7fc1255996"},{title:"C2sym",tags:["cultris2"],category:"term",content:"A modification of C2RS in Techmino. In C2sym, the priority of left and right offsets is optimized based on the specific shapes of the different blocks.",link:"",id:"055199177ed198531b56332690b920a08875dc6d"},{title:"DRS",tags:["dtetrotationsystem"],category:"term",content:"DTET Rotation System\\nThe rotation system used in DTET.",link:"",id:"ea6e4fd09eb379c53dd7d5d41ac7d57b96434df8"},{title:"NRS",tags:["nintendorotationsystem"],category:"term",content:"Nintendo Rotation System, the rotation system used in Tetris games on the Nintendo Entertainment System (NES) and Game Boy consoles.\\nIt has two versions that are mirror images of each other. The left-handed version is used on the Game Boy and the right-handed version is used on the NES.",link:"",id:"e37dfff196934ca5167ace859fdc6cbe57cdfbb2"},{title:"SRS",tags:["superrotationsystem"],category:"term",content:"Super Rotation System. SRS is the most widely used rotation system in modern Tetris games and the basis of many fan-made rotation systems.\\nThere are a total of 8 wall kick tables in SRS, corresponding to the two rotations of the four orientations of each tetromino (note that there are no offsets for 180° rotations). Some offsets are checked if anything overlaps with the tetrominoes.\\nDetails about the SRS Wall Kick Tables can be found on the Tetris Wiki.",link:"",id:"5c2e7d5ea1a1a5ca8b2351067a5aa319ba6ae531"},{title:"SRS+",tags:["srsplus","superrotationsystemplus"],category:"term",content:"An extension to SRS that adds supports for 180° wall kicks.",link:"",id:"302346ed1f932a5e9bd32062016483361c84a654"},{title:"TRS",tags:["techminorotationsystem"],category:"term",content:"Techmino Rotation System, a rotation system used in Techmino based on SRS. TRS added some extra useful wall kicks and fixed the problem with S and Z tetrominoes getting stuck on certain terrains. It also added wall kick tables for pentominoes based on the wall kicks for tetrominoes.\\n\\nTRS supports O-spins, where the O tetrominoes can be transformed into other tetrominoes or teleported into holes by pressing certain keys or buttons.",link:"",id:"8ab10ff5c564b655a41ffc12aff48a7239016214"},{title:"XRS",tags:["xrs"],category:"term",content:"X rotation system, a rotation system used in T-ex.\\nIn many other rotation systems, the wall kick table is fixed, so the block can only choose one direction to offset (which the player may not want). XRS solved this dilemma by altering the wall kick table when a direction key (left, right, or soft drop) is pressed to favor that direction. This makes it easier for the player to control where a block would go after a wall kick.",link:"",id:"67a5ce8bb7cc58a67229f578ff3405c35294a4ed"},{title:"Back to Back",tags:["b2b","btb","backtoback"],category:"term",content:"Or B2B for short. A back-to-back is achieved when two or more Tetrises or spins with line clears are completed without other types of line clears in between. Back-to-backs add extra attacks to these moves. Unlike combos, placing pieces that do not clear lines does not affect back-to-backs.\\nIn Techmino, multiple consecutive back-to-backs are counted as back-to-back-to-backs (B2B2B or B3B, see entry for B2B2B). Techmino also counts consecutive PCs and HPCs as B2Bs or B3Bs.",link:"",id:"8d1b5190043e497944d5181c576234b21f499d75"},{title:"B2B2B",tags:["b3b"],category:"term",content:"Back-to-back-to-back, also known as B3B. A B3B is achieved when many consecutive B2Bs are achieved. A B3B offers even more extra attacks than B2Bs. B3Bs are exclusive to Techmino.",link:"",id:"0ffe87ea83997d8c4c14f045b97aad035f41013a"},{title:"Fin, Neo, Iso",tags:["fin","neo","iso"],category:"term",content:"The names of three special types of T-spins that use special wall kicks of the T tetrominoes. Different games may have different attacks for these T-spins; some games may consider some or all of these T-spins to be mini T-spins. These T-Spins have little importance in real-world combat due to their complex setups.",link:"",id:"39ce2acf927bc79a28c143a0b68aa5e81d90183f"},{title:"Modern Tetris",tags:["modern"],category:"term",content:'A \\"modern\\" Tetris game is a Tetris game that generally follows or resembles the Tetris Design Guideline, but there is no consensus on what constitutes a modern Tetris game.\\nHere are some rules that are generally considered essential in modern Tetris games; games that fulfill most of these requirements can be considered \\"modern\\" Tetris games.\\n\\n1. The visible part of the matrix is 10 wide by 20 high. Usually there are also hidden rows above the 20th row, and most games have a hard limit of 40 high.\\n2. Blocks spawn in the center of the top row of the visible matrix. It is possible to have either the top or bottom side of the block aligned with the top row. Blocks with an odd width will spawn to the left of the center. Each piece has a consistent spawn orientation (usually flat side down) and color.\\n3. An appropriate generator (e.g. 7Bag or His) is present to prevent drought (see the entry for drought).\\n4. An appropriate rotation system with at least two rotations is present. SRS or SRS-like rotation systems are strongly preferred.\\n5. An appropriate lockdown delay system is present.\\n6. An appropriate top-out mechanism is present.\\n7. A Next queue with 3-6 previews (though 1 is also acceptable) of upcoming blocks is present, and the orientations of the blocks in the Next queue match the spawn orientation.\\n8. A Hold function is present.\\n9. A DAS system for precise and swift sideways movements is present.\\n10. IRS and IHS (see entries) are present if spawn delays and line clear delays are present. Techmino also has an IMS (see entry).',link:"",id:"d850880e5544701a44dcb347bc0db272512bbd9d"},{title:"Tetrominos' Shapes",tags:["shape","structure","form","tetromino","tetrimino"],category:"term",content:'In most standard Tetris games, all the blocks used are tetrominoes, i.e. blocks formed by connecting four minoes side by side.\\nThere are a total of seven tetrominoes when considering rotation but not flipping: Z, S, J, L, T, O, and I, named after their similarity to the corresponding letters. \\nSee the entry for \\"Shape & Name\\" for more information.',link:"",id:"24b0e2708bebcfff218180af7d7b92505f3927fd"},{title:"Tetrominos' Colors",tags:["colour","hue","tint","tetromino","tetrimino"],category:"term",content:'The same color scheme is used for most modern Tetris games: red for Z, green for S, blue for J, orange for L, purple for T, yellow for O, and cyan for I.\\nTechmino also uses this \\"standard\\" coloring for the tetrominoes.',link:"",id:"9a1f47c8445c890e38aa9d42fc155e6c846013b5"},{title:"IRS",tags:["initialrotationsystem"],category:"term",content:"Initial Rotation System (Not some government agency that collects your taxes). IRS allows the player to rotate a piece before it is spawned (during the spawn delay) to have the piece pre-rotated when it is spawned. This can prevent game over in some situations.",link:"",id:"50fbf0501e856a78382473923ae686a1588272ef"},{title:"IHS",tags:["initialholdsystem"],category:"term",content:"Initial Hold System. IHS allows the player to hold a piece before it is spawned (during the spawn delay) to swap the next piece with the held piece. This can prevent game over in some situations.",link:"",id:"6b291480a03ba31e64b27d50639da8076d91b2aa"},{title:"IMS",tags:["initialmovesystem"],category:"term",content:"Initial Movement System, a system exclusive to Techmino. IMS allows the player to move a piece sideways before it is spawned (during the spawn delay) to add a one-block offset when the block is spawned. This can prevent game over in some situations.\\nNote that DAS must be fully charged when the piece spawns.",link:"",id:"f9788b77e6ea2fd72d26706c8eb9a356ecbd9efb"},{title:"Next",tags:["nextpreview"],category:"term",content:"A preview that displays the upcoming piece(s). Planning ahead where to place the blocks in the Next queue is essential for improving your Tetris skills.\\nThere is no set number for how many pieces you should plan ahead, and the specifics may vary depending on personal conditions, modes, and the situation in the game. Some players may try to measure this by adjusting the number of next pieces visible in 40L, but the result is generally not representative because of the reason mentioned above.",link:"",id:"f1d8f687b50ea8d3e3ff9c90289ab7066334a699"},{title:"Hold",tags:["hold"],category:"term",content:"A function that allows the player to store the current block in a reserve (if there are no blocks in Hold) or swap the current block with the block in the reserve. Normally, Holds can only be used once per block. Holds allow the player to adjust the order of the blocks and make it easier to build the desired setup.\\nIt can be argued that not using Holds allows a player to concentrate more on the sequences at hand, which could reduce the player's workload. It could also reduce the variety of keys or buttons used during the game, which could increase the KPS. In fact, many world records on 40L are set without Holds. However, some people also argue that Holds are useful for adjusting the upcoming sequence and reducing the difficulty in many circumstances (such as high gravity), allowing the player to achieve more complex setups without significantly increasing the workload, which could reduce the total number of key presses.",link:"",id:"f6fc5fc4057365b81e3d3f8c525b2034723abf2f"},{title:"In-Place Hold",tags:["inplacehold","physicalhold","physics"],category:"term",content:"A special form of hold in Techmino where a block in the Hold is spawned at the same location as the current controlling block, as opposed to a normal Hold where the block is spawned in the top row. It can be enabled in custom games.",link:"",id:"9fafb5d9712bce0cbe31a1e1780421ec160221ee"},{title:"Swap",tags:["hold"],category:"term",content:"Another possible form of Hold. Swaps allow the player to swap the current block with the next block. Normally, Swap can only be used once per block (just like Holds).",link:"",id:"ab3fef4bb1af71de94e73d9099a697d474765370"},{title:"Deepdrop",tags:["shenjiang"],category:"term",content:'A special feature in Techmino that allows blocks to \\"teleport\\" through the minoes to enter a hole. A Deepdrop is activated when the current block hits the bottom and the soft drop key/button is pressed again. When this happens, the system would try to move the current block down until it finds a hole that the block could fit into, and teleport the block there if the hole exists.\\nDeepdrops are more commonly used for experiments and AIs, as they allow AIs to move a block into the appropriate hole regardless of the rotation system.',link:"",id:"cd1d87dfd11e120a14824b4c926f43697f5cc3d2"},{title:"Misdrop",tags:["md","misdrop"],category:"term",content:"Or MD for short. Accidentally placing (dropping) a block in an unintended location.",link:"",id:"f60f2ff314867ab42723088e076f99cad48e6d80"},{title:"Mishold",tags:["mh","mishold"],category:"term",content:"Or MH for short. Accidentally pressing the Hold key/button. This could result in the loss of the chance to achieve a PC or game over.",link:"",id:"28f84a85f6e014bdad9521f8a9f55d4d1ecc461c"},{title:"sub",tags:["sub"],category:"term",content:'A sub-[number] time means that the time is below a certain milestone. The unit of time is often omitted and inferred. For example, a \\"sub-30\\" for a 40-line sprint means under 30 seconds, and a \\"sub-15\\" for a 1000-line sprint means under 15 minutes. \\"Sub\\" is generally used with a round number (so expressions like \\"sub-62\\" are rarely used).',link:"",id:"90245bab61be90c8341d6230c0b2efef3d4ad9ac"},{title:"Digging",tags:["downstacking","ds"],category:"term",content:"Clearing garbage lines entered from the bottom of the field. Also known as downstacking (DS).",link:"",id:"0302bb7d296316fb2a37431841983bddf9d0d997"},{title:"Donation",tags:["donate"],category:"term",content:'Converting a hole or well (usually originally intended for Tetrises) into a T-spin setup by \\"plugging\\" it. Donation is an advanced skill for maintaining or increasing attacks. After the T-spin, the hole would open again to allow the continuation of Tetris or another donation. Plugging a hole or well not intended for Tetrises is also sometimes colloquially referred to as \\"donation.\\',link:"",id:"bb02e31b7a7959be0d2d9d7359c35d97dee10187"},{title:"'Debt'",tags:["qianzhai","debt","owe"],category:"term",content:'A term more commonly used in the Chinese Tetris community. A situation where you can only start making T-spins after the setup is completed (and no T-spins can be made before the setup is completed). It is important to observe the opponent before building a setup that could lead to a \\"debt\\" situation during the building process (or this could lead to a game over).\\n\\nThis term is commonly used to describe setups like TST towers where no real attacks can be made before the build is complete.',link:"",id:"bbd18ce851c7ccb50f180b0786aaa6d2ea52b7c2"},{title:"Attack & Defend",tags:["attacking","defending"],category:"term",content:"Attacking: Sending garbage lines to the opponent by performing special line clears (i.e. not singles).\\nDefending: Canceling the incoming attack by making special line clears.\\nCounterattacking: Sending attacks back to the opponent after canceling all incoming garbage lines.\\nIn most Tetris games, attacking and defending are equivalent.; an outgoing attack cancels an incoming garbage line.",link:"",id:"a5d0a3dfc08f2e79068e5060d9beee33df0f2c43"},{title:"Combo",tags:["ren","combo"],category:"term",content:'Achieving consecutive line clears without dropping a block that does not clear a line in between. Combos are usually counted from the second line clear (1 combo). Different games may have different attacks for combos.\\nAlso called \\"REN\\" in the Japanese Tetris community, from the Japanese kanji <連> (れん, ren).',link:"",id:"a2c1355a2eed3e853bfac2d5de58b8f0c8ebe846"},{title:"Spike",tags:["spike"],category:"term",content:"Sending large attacks in a short period of time. Techmino and TETR.IO all have spike counters that show how many attacks are sent in that time period.\\nAccumulated releases of attacks due to Internet latency are typically not considered spikes.",link:"",id:"4f5a13593d0edd6945f447b0f2a7ac7e2707b2fc"},{title:"Side well",tags:["ren","combo","sidewell"],category:"term",content:'A special stacking method where a \\"well\\" of a certain width (usually 2- to 4-wide) is built on the side of the field. A decent way to get combos for new players to send attacks. \\nHowever, side wells are prone to top-outs when the player is building the stack and the opponent sends a big attack; the efficiency of side wells is also less than ideal. Advanced players usually do not rely on side wells as the only way to send attacks. Instead, they may build side wells after building a T-spin setup and when the opponent is unlikely to send an attack shortly. In this situation, side wells can be used to increase instant attacks.',link:"",id:"8dfd0d8dfb9c98167821355cf3544b278fcd89b5"},{title:"Center well",tags:["ren","combo","centerwell"],category:"term",content:"A special stacking method that leaves a well of a certain width in the center of the field. This allows the player to make combos without the risk of topping out as in side wells if the well is wide enough.",link:"",id:"111a6f5b9755b27b2d79ac15896a337e938b4eea"},{title:"Partial well",tags:["ren","combo","partialwell"],category:"term",content:"A special stacking method that leaves a well of a certain width in a position between the center and the sides of the field.",link:"",id:"3eaba1b96b2d0778c487b6277e6db8b7fdcb3c7b"},{title:"Side 1-wide",tags:["s1w","side1wide","sidewelltetris"],category:"term",content:'Or S1W for short. Leaving a one-block-wide well on the side of the field, a classic way to make Tetris.\\nNew players can use S1Ws to make Tetrises, as they can produce decent attacks in a short time period. However, it is less commonly used by advanced players due to its low efficiency and susceptibility to incoming attacks during setup, which could lead to a game over; these players may only use S1W when the situation is very suitable for the setup.\\n\\nAlso known as \\"side well Tetris.\\',link:"",id:"bc0c0dbed99fd61372bcbb87284ff132f953603d"},{title:"Side 2-wide",tags:["s2w","side2wide"],category:"term",content:"Or S2W for short. Leaving a two-block-wide well on the side of the field, a common combo setup.\\nS2Ws are easy to build and can create relatively long combos when used with Holds. However, it is less commonly used by advanced players due to its long setup time, susceptibility to incoming attacks during that time, and its relatively low efficiency. This can result in fewer combos or even top-outs.",link:"",id:"fb18e93b0a693cbef4609659daf1714d99d3a162"},{title:"Side 3-wide",tags:["s3w","side2wide"],category:"term",content:"Or S3W for short. Leaving a three-block-wide well on the side of the field, a less common combo setup.\\nAlthough it can produce more combos than S2W, S3W is prone to breaking the combo.",link:"",id:"46e7c422a59938f5d9b0b23008df93feadb2c537"},{title:"Side 4-wide",tags:["s4w","side4wide"],category:"term",content:"Or S4W for short. Leaving a four-block-wide well on the side of the field. A common combo setup.\\nIn addition to producing very long combos, S4W requires a shorter setup time compared to other well setups. This allows the player to produce a long combo before the opponent sends attacks. Compared to C4W (see entry), S4W is more balanced because the player can be topped out during setup.",link:"",id:"c5b6dbb14894c93f7fc9c79d2079aafc447c4531"},{title:"Center 1-wide",tags:["c1w","center1wide","centerwelltetris"],category:"term",content:'Or C1W for short. Leaving a one-block-wide well at the center of the field.\\nA useful setup for both Tetrises and T-spin doubles that is not difficult to build.\\n\\nAlso known as \\"center well Tetris.\\',link:"",id:"7465ba018bc6eed61a4449e00cbe6ea208f20623"},{title:"Center 2-wide",tags:["c2w","center2wide"],category:"term",content:"Or C2W for short. Leaving a two-block-wide well at the center of the field.\\nA possible but uncommon combo setup.",link:"",id:"90dab11c89a910239eed4507cc26fddabf223cc6"},{title:"Center 3-wide",tags:["c3w","center3wide"],category:"term",content:"Or C3W for short. Leaving a three-block-wide well at the center of the field.\\nA possible but uncommon combo setup.",link:"",id:"425bb84cf103341dc42b57d13e72fb684115fa48"},{title:"Center 4-wide",tags:["c4w","center4wide"],category:"term",content:"Or C4W for short. Leaving a four-block-wide well at the center of the field.\\nA setup that can produce an obscene amount of combos if used well.\\nThis infamous combo setup is relatively easy to build, has a strong defense against incoming attacks by exploiting the death conditions of many modern Tetris games, and is extremely biased in favor of the player building it. Many players dislike or even despise this technique for these reasons. Use this technique with caution in real world battles.",link:"",id:"89d450dcdb461bd385e2d4bd29110d3ba10ee27e"},{title:"Residual",tags:["c4w","s4w"],category:"term",content:"This term refers to the number of block(s) left in the well in a 4-wide combo setup. Long combos are often achieved using a 3-residual (3-res) or 6-residual (6-res) setup.\\n3-res is easier to learn because it has fewer variations and a good chance of producing long combos.\\n6-Res is more variable and harder to learn but can produce longer combos than 3-Res if executed well.\\n\\nIn general, the order of priority for these setups in combat is 6-Res, then 3- and 5-Res, and then 4-Res.",link:"",id:"d6af6d97859b2612ce5fc2653c9ddf5036fb8c99"},{title:"6–3 Stacking",tags:["6-3stacking","63stacking","six-three","sixthree"],category:"term",content:"A special stacking method where a six-block-wide stack is placed on the left side of the board and a three-block-wide stack is placed on the right side of the board, resulting in a one-block-wide well off-center.\\nThis method could reduce the number of keypresses for a skilled player and is popular in sprint modes to increase speed. The reason for this have to do with the fact that blocks spawn with a bias to the left. Notice that this method may increase keypresses for beginners.",link:"",id:"eb2fcbe49f9d1cc78ad414c33cf2966b8c7ff49a"},{title:"Freestyle",tags:["ziyou"],category:"term",content:"A term commonly used for TSD challenges. This term means completing a certain number of T-spin doubles in a challenge without using a fixed stacking setup. Compared to such setups such as LST, freestyles are more difficult and more representative of a player's T-spin skills in real-world battles.",link:"",id:"8eea92e6c5974836aa4076c88e09f2924d5ded01"},{title:"Topping out",tags:["die","death","topout","toppingout"],category:"term",content:"Many modern Tetris games use three death conditions. Triggering any of them would result in a game over.\\n1. Block out: the newly-spawn block overlaps with existing blocks in the field.\\n2. Lock out: the block locks entirely above the visible portion of the field.\\n3. Top out: the total height of the block stack exceeds a certain amount (usually 40). This is often caused by incoming garbage lines.\\n\\nTechmino does not use the lock out and top out mechanisms by default.",link:"",id:"b60e1815dfc9542bf93d71c17456e82bad369e09"},{title:"Buffer zone",tags:["above","super","invisible","disappear"],category:"term",content:'A zone above the visible part of the field, usually from the 21st to the 40th line.\\nThe buffer zone exists because blocks on the sides may exceed the visible field after a large number of garbage lines enter the field. These blocks would return to the visible field once the garbage lines are cleared.\\nBuffer zones are usually 20 lines high, but some games may have infinite buffer zones.\\n\\nSee also the entry for \\"Vanish Zone.\\',link:"",id:"54625bca607240177cc93583ebbc4139e8448087"},{title:"Vanish zone",tags:["disappear","gone","cut","die"],category:"term",content:"An area above the buffer zone, usually above the 40th line. Blocks usually enter the vanish zone through a combination of C4W and a large influx of garbage lines. When a block reaches the vanish zone, a top-out is usually triggered, ending the game.\\nDifferent games may have different behavior for the vanish zones. In Jstris, the vanish zone is above the 22nd line, and any blocks locked above the 21st line will disappear. Some games that have poorly designed buffer zones may behave unexpectedly or even crash when a block enters the vanish zone (e.g. Tetris Online).\\n\\nClick or tap the globe icon to open a video demonstrating a vanish zone bug in Puyo Puyo Tetris, where blocks reaching the vanish zone are copied infinitely when they return to the visible area.",link:"https://youtu.be/z4WtWISkrdU",id:"5c41dccc057da0f4cfc1301c44f5099f7983bbcc"},{title:"Falling speed",tags:["fallingspeed","gravity"],category:"term",content:'The speed at which blocks move down. It is usually measured in the unit \\"G\\", which is the number of line(s) the block falls down in one frame, usually assuming a frame rate of 60 fps. For example, a block is said to have a falling speed of ¹⁄₆₀ G if it falls down one row per second. The maximum speed of modern Tetris is 20 G (since there are 20 lines in the visible field). \\nIn Techmino, speed is also described as the number of frame(s) it takes for a block to move down one line. A speed of 60 corresponds to one line per second or 1 G in this system.\\nIn practice, the term \\"20G\\" usually refers to \\"infinite speed.\\" See the entry for \\"20G\\" for more information.',link:"",id:"205d98d9b1f82e738601bf0563722d148ce6aef2"},{title:"20G",tags:["gravity","instant"],category:"term",content:'The highest falling speed in modern Tetris. In 20G modes, blocks appear instantly at the bottom of the screen without the process of falling.\\nAlthough the term may suggest a falling speed of 20 blocks per frame, 20G usually implies an infinite speed.\\nAlso, in 20G modes, falling movements have higher priority than any other user input; for example, even if the ARR is set to 0, the block would still fall straight down before moving sideways. This makes it impossible to make a block climb over a \\"hill\\" or jump out of a \\"pit\\" in some situations.',link:"",id:"80ef56f897fd0246756dacbc9b49127fc1f84a80"},{title:"Lockdown Delay",tags:["lockdelay","lockdowndelay","lockdowntimer"],category:"term",content:"Or LD for short. The delay between when the block touches the ground and when it locks (can no longer be controlled). In classic Tetris games, this delay is usually the same as the time it takes for a block to move down a row, and is independent of player input. In modern Tetris games, this delay is usually more variable and is reset after the block moves or rotates. In many games, the resets have an upper limit (usually 15 times).",link:"",id:"7d564fa7375cf771b8f8eaab3b45df1712d328ce"},{title:"ARE",tags:["spawn","appearance","delay"],category:"term",content:'Also called entry delay. This term refers to the delay between when a block locks down and when another block is spawned.\\n\\nThe word \\"ARE\\" is not an acronym or initialism. It derives from the Japanese word <あれ> (a-re), meaning \\"it\\" or \\"that.\\',link:"",id:"349e2a410c1fadbc3bd2b1cf79ce2b06618e2bfe"},{title:"Line ARE",tags:["appearance","delay"],category:"term",content:"The delay between the start of a line clear animation and the spawning of the next block.",link:"",id:"65eaf46ca8a6f0b3cc2c3396cef9c48de0790528"},{title:"Death ARE",tags:["die","delay","dd"],category:"term",content:"A special mechanism that can prevent game over in some cases. A death ARE is triggered when a newly spawned block would overlap with existing blocks (resulting in a block out). When this happens, an additional delay is added to the (spawn) ARE to allow the player to use IRS, IHS, or IMS to prevent a game over.\\nOriginally proposed by @NOT_A_ROBOT.",link:"",id:"f848cce45f49f75e1a0767b36e78dc0737cc90a4"},{title:"Finesse",tags:["finesse"],category:"term",content:`A technique that moves a block to the desired location with the minimum number of keypresses. Finesse usually doesn't consider locations that require soft drops to move into. Finesses save time and reduce the chances of misdropping a block.\\nFinesse is an essential skill in playing Tetris. We recommend that you start learning finesse as soon as possible. You can find videos about finesse on YouTube. Start by learning the basics and then start practicing, keeping accuracy as the first priority before speeding up.\\nNote that in Techmino, finesses are not exactly \\"the theoretically simplest keystroke sequence it takes to move a block to a particular location.\\" Finesses are only detected when a piece locks into a position that does not require soft drops, so the finesses strikes are not reset after a spin or a tuck.\\nIn Techmino, the finesse rate (%) is defined as 100% (Perfect) when the number of keypresses is equal to or less than the standard reference, 50% (Great) when one keypress is above the standard, 25% (Bad) when two keypresses above, and 0% (Miss) when three or more keypresses above. A Bad or Miss breaks the finesse strike.\\nFinesse is usually not considered in conditions such as locations that require soft drops, high gravity, or very high fields. The finesse counter also works the same in Techmino regardless of gravity (even in 20G modes), so the result may not be meaningful in high gravity conditions.`,link:"",id:"4f97b8462d8b08e876e39f6feb92f96975b89a13"},{title:"'Researching'",tags:["scientificresearching"],category:"term",content:"(<科研>, ké yán) A commonly used term in the Chinese Tetris community, referring to the act of experimenting or practicing advanced techniques (such as new T-spin setups) in a low-stress game mode. Techmino uses this term to refer to modes that require spins almost all the way.",link:"",id:"0098ee2953d8d532f17e4ac2a8086ecda513571b"},{title:"Keymapping",tags:["feel"],category:"term",content:"Here are our recommendations for configuring your key mappings.\\n\\n1. Avoid assigning a finger or thumb to multiple keys that may be pressed at the same time. We recommend assigning the rotation keys to one finger (since they are not typically pressed together) and one key for each of the other fingers.\\n2. Unless you are very confident, avoid assigning keys to your little fingers (because they are less agile than your other fingers or thumbs).\\n3. It's not necessary to copy someone else's key mapping. Everyone is different, and key mappings shouldn't really affect your skills if you follow rules 1 & 2.",link:"",id:"b9cedaa49f53d1225372a71a43cd8f27f33112fe"},{title:"Handling",tags:["feel","handling"],category:"term",content:"Here are some common factors that can affect handling.\\n\\n1. Input latency, which depends on device conditions and configurations. It can be reduced by rebooting or changing your devices.\\n2. Program stability, which depends on the game's programming and design. It can be alleviated by lowering graphics quality and disabling visual effects.\\n3. Intentional designs by the game.\\n4. Incorrect parameter settings. It can be alleviated by fine-tuning these parameters.\\n5. Physical postures. Try moving to a more comfortable position.\\n6. Recent changes to your devices or keyboard mapping.\\n7. Muscle fatigue, decreased responsiveness, or decreased coordination. Try resting or returning in a few days.",link:"",id:"b9a97b14e2e11e176a511e19049092d54e0f3217"},{title:"DAS & ARR (simple)",tags:["das","arr","delayedautoshift","autorepeatrate"],category:"term",content:`Imagine typing on a keyboard and holding down the \\"O\\" key to get a string of o's on the screen. On a timeline, it would look like o————o-o-o-o-o-o-o-o-o…, where the \\"————\\" part can be considered as DAS, and the \\"-\\" part can be considered as ARR.`,link:"",id:"a682e4737de91d58112414fbb9f9fde206195c7d"},{title:"DAS & ARR",tags:["das","arr","delayedautoshift","autorepeatrate"],category:"term",content:"DAS refers to Delayed Auto-Shift, the delay between when a block moves one block sideways and when the block begins to move automatically.\\nARR refers to Auto-Repeat Rate, the delay between each of the above automatic movements.\\nDAS and ARR are measured in f (frame, ¹⁄₆₀ s at 60 fps) or ms (millisecond). 1 ms is equal to 16²⁄₃ frames.",link:"",id:"7608dd8eac382e68b86388e11dcb45940d8c14a7"},{title:"DAS tuning",tags:["das","tuning"],category:"term",content:"For relatively advanced players who want to increase their speed, we recommend a DAS of 4–6 f (67–100 ms) and an ARR of 0 (blocks move to the wall immediately after DAS). If this is too fast for you, try increasing the DAS a bit, but keep the ARR below 2 f (33 ms). In general, DAS should be kept as low as possible so that taps and holds can be distinguished; ARR should be kept to a minimum (if not zero).",link:"",id:"6d6f643162cb3b8b8ac0cc6cc2fe7a6b2dd0e22d"},{title:"DAS cut",tags:["dascut","dcd"],category:"term",content:"A special delay applied to DAS when a new block is spawned. When this happens, a small delay is added before the DAS starts timing, so that a piece doesn't start moving immediately when a sideways direction key is pressed.\\nOther games may have similar mechanisms, but they may work differently.",link:"",id:"f1572d92a202c3b765675fc16f05387529934e47"},{title:"IRS cut",tags:["irscut","icd"],category:"term",content:"A special delay applied to IRS when a new block is spawned. When entry delay is disabled, this will delay IRS from being applied, allowing you to release the rotation button in the period to avoid a misdrop.",link:"",id:"0a7860f1238c08be1417ada62b1a57e84bf3799a"},{title:"Auto-lock cut",tags:["autolockcut","mdcut"],category:"term",content:"A feature in Techmino that prevents a block from being misdropped after a new block is spawned. Hard drops will be disabled for a short time after the previous block has been locked.\\nOther games may have similar mechanisms, but they may work differently.",link:"",id:"f4b36fb1760d2f061153e1dcb699c890c5de34bf"},{title:"SDF",tags:["softdropfactor"],category:"term",content:"Soft Drop Factor, a number describing the relative speed of soft drops in some games. In many modern Tetris games, soft drops are realized by speeding up the natural drop by a constant factor (SDF). Guideline Tetris games usually have an SDF of 20, i.e. the soft drop speed is 20 times the natural falling speed.\\nTechmino uses a constant soft drop speed (described by ARR) instead of the SDF to determine soft drop speeds.",link:"",id:"0c1a2da50ac9dcd8ad674794c7981f5c2ee2a405"},{title:"Shape & Names",tags:["mino"],category:"term",content:"Here is a list of the all the blocks used by Techmino and their corresponding names:\\nTetrominos:\\nZ:`CHAR.mino.Z`, S:`CHAR.mino.S`, J:`CHAR.mino.J`, L:`CHAR.mino.L`, T:`CHAR.mino.T`, O:`CHAR.mino.O`, I:`CHAR.mino.I`;\\n\\nPentominos:\\nZ5:`CHAR.mino.Z5`, S5:`CHAR.mino.S5`, P:`CHAR.mino.P`, Q:`CHAR.mino.Q`, F:`CHAR.mino.F`, E:`CHAR.mino.E`, T5:`CHAR.mino.T5`, U:`CHAR.mino.U`, V:`CHAR.mino.V`, W:`CHAR.mino.W`, X:`CHAR.mino.X`, J5:`CHAR.mino.J5`, L5:`CHAR.mino.L5`, R:`CHAR.mino.R`, Y:`CHAR.mino.Y`, N:`CHAR.mino.N`, H:`CHAR.mino.H`, I5:`CHAR.mino.I5`;\\n\\nTriminos, Domino, and Monomino:\\nI3:`CHAR.mino.I3`, C:`CHAR.mino.C`, I2:`CHAR.mino.I2`, O1:`CHAR.mino.O1.",link:"",id:"7130f45854f471c3d297dd8f2eacd0de92b435f0"},{title:"Bag7 generator",tags:["bag7bag","randomgenerator"],category:"term",content:'Also known as \\"7-bag generator,\\" officially known as \\"random generator\\". The algorithm (generator) used by most modern and official Tetris games to generate the sequence of blocks. In Bag7, the sequence of blocks is divided into groups (bags) of 7 blocks. Each bag must contain all seven tetrominoes, but the order is random. This system prevents the uneven spawning of certain blocks in the long run.\\n\\nAn example of a Bag7 block sequence would be ZSJLTOI OTSLZIJ LTISZOJ.',link:"",id:"6d9c71eb6a57501393a43f83f2e0a8e09fa4492f"},{title:"His generator",tags:["history","hisgenerator"],category:"term",content:`An algorithm (generator) used to generate the sequence of blocks, most commonly used in the TGM series. In the HIS generator, each block is first generated (rolled) randomly, and a check is made to see if this block is the same as one of the few previous blocks. If it is, the process is repeated (rerolled) until a different block is generated or an upper limit is reached.\\nThe His generator is usually described using the format\\"His [number] Roll [number],\\" where the first number is the number of previous blocks checked by the generator, and the second number is the upper limit of the number of rerolls. For example, a \\"His 4 Roll 6\\" (or \\"h4r6\\") randomizer rerolls if the block is the same as any of the previous 4 blocks and up to 6 times before moving on to the next block.\\nIn Techmino, the maximum number of rerolls is half the number of blocks checked by the randomizer (rounded up for non-integers). \\n\\nThe His randomizer is an improved version of the simple randomizer and reduces the chances of consecutive S's or Z's.`,link:"",id:"ab36b0721b5150285460f4114632a7ac32dbd641"},{title:"HisPool generator",tags:["hisPool","history","pool"],category:"term",content:`History Pool Randomizer, a derivative of the His generator. It added a \\"pool\\" mechanism from which the new blocks are spawned, as opposed to the simple random generator used by His. HisPool also increases the probability of spawning a block with the lowest presence.\\n\\nThis mechanism stabilizes the sequence and ensures that a drought (see entry) doesn't last forever. The stability of HisPool lies between His and Bag.`,link:"",id:"5bac08ced59bb2ea7e301905331016233d01b5c4"},{title:"bagES generator",tags:["bages","easy","start"],category:"term",content:"Bag Easy-Start, a derivative of the bag generator used in Techmino. The first block in the first bag will not be S, Z, S5, Z5, F, E, W, X, N, or H, which can be difficult to place at the beginning of the game.",link:"",id:"5405416adcd999f523c13847c867bc953a50e348"},{title:"Reverb generator",tags:["reverb"],category:"term",content:"A generator used in Techmino, derived from the Bag generator. The Reverb generator repeats each block several times based on the sequence of the Bag Generator. The probability of repetition decreases with the previous presence of that block. The theoretical number of repetition(s) ranges from 0 to 6.",link:"",id:"e666cf860bf1987ebd5b590694bb2fc5562cfc14"},{title:"C2 Generator",tags:["cultris2generator","cultrisiigenerator","c2generator"],category:"term",content:"The generator in Culturis 2 uses the following algorithm to generate block sequences:\\n1. Set the weight of all tetrominoes to 0 at the beginning of the game.\\n2. Divide all weights by 2, then add a random number (0-1) to all weights.\\n3. Pick the tetromino with the highest weight, then divide that tetromino's weight by 3.5.\\n4. Repeat from step 2.",link:"",id:"0a5ae9089bd85bf9e36c70bc8c67fedaf480d855"},{title:"Hypertapping",tags:["hypertapping"],category:"term",content:`A technique commonly used in classic Tetris. It involves rapidly vibrating your finger on a button to get a faster sideways movement than simply holding down the button. This is because most classic Tetris games have long, non-adjustable DAS, where tapping the button quickly is faster than waiting for the automatic movements. Hypertapping is also used in Tetris games with long, non-adjustable DAS. However, it's not necessary in most modern Tetris games because they have adjustable DASs and ARRs. A person who can use this technique is called a \\"hypertapper.\\`,link:"",id:"7f55567f8365492d7d89e5263bae13ddfd7dd110"},{title:"Rolling",tags:["rolling"],category:"term",content:"Another technique used in classic Tetris to achieve fast sideways movement under high gravity (~1 G).\\nThis technique involves partially resting the controller (or keyboard) on a surface (or your legs) with one finger or thumb on the button, and then rapidly tapping the back of the controller with the fingers of the other hand to achieve very fast key presses. This allows the player to achieve an even faster speed than hypertapping (see entry) with less effort.\\nThis method was first discovered by @Cheez-fish, who once reached a tapping speed of over 20 Hz.",link:"",id:"cce4a01162239dcae72a7c9efcbe9d34271f79dd"},{title:"Passthrough",tags:["pingthrough"],category:"term",content:"A situation where both players' attacks are sent to the opponent's board without canceling out in combat.\\nIn TETR.IO, if passthrough is enabled in custom games, it will be triggered within a short time after the opponent's attack. During this time, the player's attack is passed to the opponent without canceling the incoming attack. A player can wait for the timeout if that player wants to actually clear the garbage lines.\\nPingthrough, a related term, refers to a situation where an accidental passthrough occurs due to Internet delays. A Tetris game with only basic support for Internet battles may experience pingthroughs.",link:"",id:"df7b059100be419ab627bfadbc922d138496657a"},{title:"Tetris OL attack",tags:["top","tetrisonlineattack"],category:"term",content:"- Singles, doubles, triples, and Tetrises send 0, 1, 2, and 4 attacks respectively.\\n- T-spin singles, doubles, and triples send 2, 4, and 6 attacks respectively; the attack is halved if it is a T-Spin Mini.\\n- Combos add the following number of attacks (starting with 1 combo) 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, etc.\\n- Back-to-backs add 1 extra line of attack (3 if it is a TST).\\n- Perfect Clear adds 6 extra lines of attack. Note that these 6 lines are immediately sent to the opponent without canceling incoming attacks.",link:"",id:"005a7c5f67a30ee4498db0018a8db3c93b9c540b"},{title:"Techmino attack",tags:["techminoattack"],category:"term",content:"See the User Guide in the lower right corner of the home page.",link:"",id:"71e2c71f28dcfc49b7f601bcecb47b50f36ebb55"},{title:"Stacking",tags:["stacking"],category:"term",content:"Stacking the tetrominoes without leaving any holes. An essential skill that requires a good next-reading ability. It can be practiced by playing 40L with only Tetrises and no Hold.",link:"",id:"3e8b953a8419c105e1f64a0d1181d1dea10781dc"},{title:"Rotation buttons",tags:["doublerotation","triplerotation"],category:"term",content:"Using both rotation buttons (clockwise and counterclockwise) would reduce the number of keystrokes, since rotating three times in one direction is the same as rotating once in the opposite direction. This is also a prerequisite for learning finesse.\\nBy using all three rotation buttons (adding 180° rotation), one can use one keypress to rotate any block into its desired orientation (when spins are not considered). \\nHowever, we do not recommend that you spend too much time practicing with all three rotation buttons. This is because not all Tetris games have 180° rotations, and using three rotations would not increase your speed significantly compared to using just two. It is not a necessary skill unless you want to pursue extremely high speed.",link:"",id:"5eb2e8c6610f57b15de914409e168d8678fd525e"},{title:"Drought",tags:["drought"],category:"term",content:"A situation in which a block desired by a player does not spawn for a long time. This usually refers to I tetrominoes (the long bar) in classic Tetris games, since they often use a simple random generator.\\nIn most modern Tetris games, droughts are impossible because of the Bag7 generator (see entry). With the Bag7 generator, the maximum distance between two identical blocks is 13.",link:"",id:"de3322bcc2a57ff2077da77926f37dd42fd7d531"},{title:"Bone block",tags:["bone","tgm"],category:"term",content:'The block skin used by early versions of Tetris.\\nMany early computer systems used command line interfaces as the main way for a user to interact with the computer. This is similar to the Command Prompt in Windows, the Terminal in MacOS, and the Console in Linux. These computer systems can only display text and icons on the screen. Because of this limitation, many early versions of Tetris used a pair of brackets [ ] to represent a single mino. This is called a \\"bone block\\" because of its appearance.\\nIn Techmino and many other modern Tetris games, a bone block is a single but distracting block skin used by all blocks. Different block skins may come with their own bone block designs.',link:"",id:"612ec806b0212de8c33c7849db89cf7921305aca"},{title:"Semi-invisible",tags:["half","invisible","semi"],category:"term",content:"A rule where blocks become invisible after a certain amount of time after locking down. This time interval doesn't have to be a fixed value.",link:"",id:"772fe38d6c7282941520475509279f88d4cd11c8"},{title:"Invisible",tags:["invisible"],category:"term",content:'A rule where blocks disappear immediately after locking down. A disappearing animation can also be present, but it would reduce the difficulty of the game. In Techmino, invisible modes without this animation are called \\"sudden invisible.\\',link:"",id:"ebee4647097ebcde67f7476561b47ef02f16f239"},{title:"MPH mode",tags:["mph"],category:"term",content:"A game mode. MPH is an initialism for Memoryless (the mode uses a simple random generator), Previewless (no next queue), Holdless (no hold). This mode challenges the player's reaction speed.",link:"",id:"867143c6f4fe150954b1c03a3e4f052419ae5f7f"},{title:"Input delay",tags:["input","delay"],category:"term",content:"Regardless of the specific input device, all inputs would take some time to reach the game, usually ranging from a few to a few tens of milliseconds. If the input delay is too large, the controls will become noticeably jerky and interfere with the gaming experience. This effect can be seen in games such as Tetris Online or Tetris Effect.\\nInput delay is usually influenced by hardware performance and usage, which usually cannot be eliminated. Turning off low-power mode and turning on performance or gaming mode on your devices can help alleviate this problem.",link:"",id:"af0b93e9d1405a3d40966d52cf65c6c97a09aeef"},{title:"Secret Grade",tags:["larger","than"],category:"term",content:'An easter egg mode from the TGM series. In a \\"secret grade\\" gameplay, the player tries to make a \\">\\" shape (with a hole in each line) on the board. The goal is to complete the shape with 19 lines.\\nClick on the globe icon to open a web page with techniques to help you achieve the secret grade.',link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"fa5be3452195cb4c64bc484187d16e3b7ff826e8"},{title:"Cold Clear",tags:["cc","coldclear","ai","bot"],category:"term",content:"A Tetris bot originally developed by MinusKelvin for Puyo Puyo Tetris. The Cold Clear build used in Techmino also supports all spins and TRS.",link:"",id:"82effb328f058f0c9c688fd3bd6efac733ffc2de"},{title:"ZZZbot",tags:["ai","bot","zzztoj"],category:"term",content:"A Tetris bot developed by the Chinese Tetris player Zòu Zhī Zhāng (<奏之章>) and has good performance in many games.",link:"",id:"05333e02ab6b243b185cfe8cabd36f0023bbffe8"},{title:"Openers",tags:["setup","openers"],category:"setup",content:"A fixed setup that can be built at the beginning of a game. Technically, an opener setup can also be built mid-game, but it may require different block placements.\\n\\nA good opener usually meets at least two of the following criteria:\\n- Can adapt to different block sequences.\\n- Has a strong attack and minimal T-block waste.\\n- Does not require too many soft drops; most operations can be accomplished with finesse.\\n- Has clear follow-up strategies with few branches.\\n\\nNote that most openers are designed based on the Bag7 generator because of its predictability. They may not work properly with other generators.",link:"",id:"e7099b61ef50965da5215bcc48163a36951e7971"},{title:"DT Cannon",tags:["dtcannon","doubletriplecannon"],category:"setup",content:"Double-Triple Cannon.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=dt",id:"825f400c22ff321ee14cb6c24bbdec79eb7679ed"},{title:"DTPC",tags:["dtcannon","doubletriplecannon"],category:"setup",content:"A follow up to DT Cannon that ends with a perfect clear.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=dt",id:"00ea1c8b138ca0e94b30eb70514241c954374143"},{title:"BT Cannon",tags:["btcannon","betacannon"],category:"setup",content:"Beta (β) Cannon.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=bt_cannon",id:"32c882a5452d010f3b318eacb459bbd888c570b9"},{title:"BTPC",tags:["btcannon","betacannon"],category:"setup",content:"A follow-up to BT Cannon that ends with a perfect clear.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=bt_cannon",id:"ffc52c269d5306b4abe069c7dfb34ba6058e713e"},{title:"TKI 3 Perfect Clear",tags:["ddpc","tki3perfectclear"],category:"setup",content:"A TSD opener that leads to a sequence of Double–Double–Perfect Clear.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"359c94332c19bc4ae7d3b27e1e8466354b8e468a"},{title:"QT Cannon",tags:["qtcannon"],category:"setup",content:"A DT Cannon-like setup with a higher probability of sending a TSD–TST attack.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=QT_cannon",id:"56a69c656d51244f3988cf1263f22bebaba8842d"},{title:"Mini-Triple",tags:["mt","minitriple"],category:"setup",content:"A Mini T-Spin—TST setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=mt",id:"3bd99182008224ed25add58cc10a3e41173134e4"},{title:"Trinity",tags:["trinity"],category:"setup",content:"A TSD + TSD + TSD or TSMS + TST+ TSD setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=trinity",id:"8a966740d196e0ba079bb2b47ab68d3e3aace2c5"},{title:"Wolfmoon Cannon",tags:["wolfmooncannon"],category:"setup",content:"An opener.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"fddffb96cf2eda7128b93daf4700245840df6a51"},{title:"Sewer",tags:["sewer"],category:"setup",content:"An opener.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=sewer",id:"b79d47b6d03b962bcbd5cc75ace4bc9c6f4190b2"},{title:"TKI",tags:["tki-3","tki3"],category:"setup",content:"TKI-3. It can refer to either a TKI-3 starting with a TSD or a C-spin starting with a TST.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=tki_3_opening",id:"43886079c0f13610faaf00d9ca7dee5f55f76031"},{title:"God Spin",tags:["godspin"],category:"setup",content:"A setup invented by @windkey that looks fancy but has limited real-world combat value.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=godspin",id:"1dbd09ba25834a7281a7758d9e4a90d41afab3bd"},{title:"Albatross",tags:["albatross"],category:"setup",content:"A fancy, fast paced opener with a sequence of TSD-TST-TSD-Perfect Clear that hardly wastes any T blocks.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"62e12e5df8c9ee006b58432b4f2a68ed115b31c9"},{title:"Pelican",tags:[],category:"setup",content:"An Albatross-like opener that can be used when the block sequence does not allow the Albatross setup.",link:"https://harddrop.com/wiki?search=Pelican",id:"6a9ca12c5d2ee32bff38b69550ee9e1f1b782bb2"},{title:"Perfect Clear Opener",tags:["7piecepuzzle"],category:"setup",content:"A perfect clear opener that is easy to set up and has a high success rate (~84.6% with an I in the hold and ~61.2% otherwise). This opener is included in the PC training modes of Techmino (the one with the irregular empty space). \\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"c8a0f5bb27cc9fdd2db40c164c4cb9aedfe1d7a2"},{title:"Grace System",tags:["liuqiaoban","gracesystem","1stpc"],category:"setup",content:"A PC opener with a success rate of ~88.57%. This opener is included in the PC training modes of Techmino (the one with the 4×4 square opening).",link:"https://four.lol/perfect-clears/grace-system",id:"e2bcb9f89bdf4a3ed28dace5f7ab1996762e3abe"},{title:"DPC",tags:["DPC"],category:"setup",content:"A PC opener with an almost 100% success rate in many scenarios when there is one block left in the 7Bag (in the Next queue) and an empty field.\\nFor more information, visit tetristemplate.info by clicking on the globe icon (Link in Japanese).",link:"https://tetristemplate.info/dpc/",id:"e812f63c7d1cebe6ebfc1c0df01d367ce53797f1"},{title:"Gamushiro Stacking",tags:["gamushiro"],category:"setup",content:"(<ガムシロ積み>, Gamushiro Tsumi)\\nA TD-Attack opener.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"3c016f28de7338317c076399e79dccd4df77c895"},{title:"Mid-game Setups",tags:["midgamesetups"],category:"pattern",content:"Setups that can generate strong mid-game attacks. Some of these setups could also be used as openers, although they are unnecessary.",link:"",id:"b4491b3063705e886fcce818e4d43029385c5b51"},{title:"C-spin",tags:["cspin"],category:"pattern",content:"A T-Spin Triple + T-Spin Double setup, known as TKI in Japan.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=c-spin",id:"5efb9c21dbdde3893732c32d2d3a710c622ba606"},{title:"STSD",tags:["stsd"],category:"pattern",content:"Super T-Spin Double, a setup that produces two T-Spin Doubles.\\nA weakness of this setup is that no TSD can be performed if the garbage hole is directly under the setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=stsd",id:"6b0e6c980b91de0873674f9b4a7d749d1de40b6d"},{title:"STMB Cave",tags:["stmb"],category:"pattern",content:"A donation setup that uses an S or Z to block a 3-wide well and produce a T-spin double.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=stmb_cave",id:"7a9f93dc4e742ef564a57e71b7967a192c6350c4"},{title:"Fractal",tags:["shuangrenjian","fractal","spider"],category:"pattern",content:"A setup where two TSD setups are stacked on top of each other.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Fractal",id:"29b12d8030f33a21265f78caaa1d15b7f4129e17"},{title:"LST stacking",tags:["lst"],category:"pattern",content:"An infinite T-Spin Double setup.",link:"https://four.lol/stacking/lst",id:"774b52eaed2c775146516a910a686b517056ed41"},{title:"Hamburger",tags:["hamburger"],category:"pattern",content:"A T-spin single donation setup that opens up for Tetrises after the T-spins.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=hamburger",id:"9aee64c6803871ff0bafc4d4cfd016360ff1c827"},{title:"Imperial Cross",tags:["imperialcross"],category:"pattern",content:"A setup that involves building an overhang on a cross-shaped hole to perform two TSDs.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=imperial_cross",id:"914127e70d29100d7e56a67a9cb8926bc035451f"},{title:"Kaidan",tags:["jieti","kaidan","stairs"],category:"pattern",content:'From the Japanese words for \\"stairs\\" (<階段>, kaidan).\\nA setup that donates a TSD on stair-like terrains.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.',link:"https://harddrop.com/wiki?search=kaidan",id:"979e233899a40823416160d6e8929ba0fce0b4ed"},{title:"Shachiku Train",tags:["shachikutrain","shechu"],category:"pattern",content:"A setup that donates two TSDs on top of a TST setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"dfa8128341595f1af9034d5888f601b45446c79b"},{title:"Cut Copy",tags:["qianniao","cutcopy"],category:"pattern",content:"A setup that donates a TSD on a small hole and performs another TSD after the first.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=Cut_copy",id:"d388fd5b2310a85d10c12dc7ffa63a0f1a4491c7"},{title:"King Crimson",tags:["kingcrimson"],category:"pattern",content:"A setup that stacks multiple TST setups on top of an STSD setup.\\nFor more information, visit the Hard Drop Wiki by clicking on the globe icon.",link:"https://harddrop.com/wiki?search=King_Crimson",id:"ee4d1363ba8655e185548fe4f11efc14815dcfa1"},{title:"Consecutive PCs (1/2)",tags:["pcloop"],category:"pattern",content:"Four.lol has a tutorial on how to achieve consecutive PCs. After finishing the 7th PC, exactly 70 blocks will be used (10 whole bags), so the situation returns to the setup of the 1st PC.",link:"https://four.lol/",id:"d16bffbe57086583517ae87ca2fd02f118cdeed3"},{title:"Consecutive PCs (2/2)",tags:["pcloop"],category:"pattern",content:"A complete PC-loop tutorial written by NitenTeria (in Simplified Chinese).",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"66dc9dee0001ef27ec25a5eb022eb569fe62d75b"},{title:"Console",tags:["cmd","commamd","minglinghang","kongzhitai","terminal"],category:"command",content:'Techmino has a console for debugging, enabling advanced settings, and more.\\nTo access the Techmino Console, click or tap on the Techmino logo in the main menu, or press the C key on your keyboard several times. Type \\"help\\" in the Console and press Enter/Return to get more information.\\n\\nUse the Console responsibly, as careless actions can cause corruption or loss of game data.',link:"",id:"7ecdaf88bce56cd24ba047b93460435726bd0889"},{title:"Reset all settings",tags:["reset","setting"],category:"command",content:'To reset all the settings, go to the Console, type \\"rm conf/setting\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, you can cancel this operation by going to Settings and returning to the main menu.',link:"",id:"da1bf555021704d34a46f62d95dd3b55819e1fe3"},{title:"Reset statistics",tags:["reset","statistic","data"],category:"command",content:'To reset all statistics, go to the Console, type \\"rm conf/data\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, you can cancel this operation by starting a game and winning or losing that game.',link:"",id:"dfd06a63b6e7e22b88dfe5c50b72b9a1640c4381"},{title:"Reset map progress",tags:["reset","unlock"],category:"command",content:'To reset your map progress, go to the Console, type \\"rm conf/unlock\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, you can cancel this operation by updating the status of any mode on the map. Note that this operation does not affect the existing grades on the map.',link:"",id:"3bad8c77ed030c8bba1cd27134d4e751fdb3c6a9"},{title:"Reset records",tags:["reset","record"],category:"command",content:`To reset your local records (leaderboard), go to the Console, type \\"rm -s record\\" and press Enter/Return. Restart Techmino for this operation to take effect.\\nBefore exiting the game, if you update a mode's leaderboard, the records for that mode will be preserved after you restart the game.`,link:"",id:"9e619f0153c598b23c720a4d3a9e4ba962c3e137"},{title:"Reset key settings",tags:["reset","virtualkey"],category:"command",content:'To reset key settings, go to the Console, type \\"rm conf/[key settings]\\" and press Enter/Return. You can type different commands for [key settings] to delete different settings. Type \\"key\\" to delete key mappings, and type \\"virtualkey\\" to delete virtual key settings. You can also type \\"vkSave1\\" or \\"vkSave2\\" to delete specific virtual key configurations. Restart Techmino for the first two commands to take effect; the last two are effective immediately.\\nBefore exiting the game, you can cancel the operation by entering and exiting their corresponding settings.',link:"",id:"97c36276637b63b77b82d4ba3841b2ac83f107ef"},{title:"Delete replays",tags:["delete","recording"],category:"command",content:'To delete all recordings, go to the Console, type \\"rm -s replay\\" and press Enter/Return. Effective immediately.',link:"",id:"ea68b06044081b0efaeca964c52ed4e36f00735f"},{title:"Delete cache",tags:["delete","cache"],category:"command",content:'To delete all caches, go to the Console, type \\"rm -s cache\\" and press Enter/Return. Effective immediately.',link:"",id:"c7b8ba787d0998486e9439635f2910ccef98e88e"},{title:"SFX",tags:["soundeffects"],category:"english",content:'Initialism for \\"Sound Effects.\\" Also abbreviated as \\"SE\\" in Japan.',link:"",id:"09731a9aea03079ef1e612facc4b927af79d1178"},{title:"BGM",tags:["backgroundmusic"],category:"english",content:'Initialism for \\"Background Music.\\',link:"",id:"a025fe6ea05e932a72f4b1de36f396da30531d3e"},{title:"TAS",tags:["tas"],category:"english",content:`Acronym for \\"Tool-Assisted Speedrun (or Superplay).\\" TAS refers to the act of playing a game with special tools that allow a player to achieve supra-human levels of play without breaking the game's rules. In other words, TAS allows a player to \\"play like a god\\" without breaking or modifying the programming itself. TAS is usually used to reach the theoretical extreme of a game or to achieve a specific goal that may not be practically possible. \\n\\nTechmino has a simple TAS tool built in.`,link:"",id:"ce44e41a48ba32311458e07dd1c34e29bff3a70c"},{title:"AFK",tags:["afk"],category:"english",content:'Initialism for \\"Away From Keyboard.\\" This term refers to a period of time when a player is not actively playing a game in order to rest. Taking regular breaks can help relieve muscle tension and restore stamina and responsiveness when you return to gemeplay.',link:"",id:"f78ce564692852c965794021f5fafdd333a980f0"},{title:"Timing",tags:["timing","shiji","fanji"],category:"term",content:"In Tetris, timing refers to the choice of moments to attack with optimal effort. Good timing can help you to defend yourself while crushing your opponent. However, we recommend new players focus on their own fields and improve their speeds before learning timing.",link:"",id:"94fbe2663990ac1c6d258d319844309905033850"}],RR=[{title:"翻訳者からのメッセージ 1",tags:[],category:"help",content:"この日本語版TetroDictionary(通称:Zictionary)は、英語版を通して翻訳されています\\nそのため中国語版の内容を正確に反映していない可能性があります\\n\\n翻訳者を知りたい、翻訳に協力したい場合は地球儀ボタンをクリックしてGithubのページにアクセスしましょう!",link:"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_ja.lua",id:"0e104c0c3fce7bf740f86e7a27e2803ba34bac1f"},{title:"初心者へ",tags:["readme","初心者","下級者","コツ","ガイド","上達"],category:"help",content:"テトリス初心者の方へ\\n\\t2つの大事なこと:\\n\\t\\t1.操作性のいいテトリスを選びましょう(TechminoやTETR.IO, Jstris, Tetr.js)\\nガイドラインから大きく離れ、プログラミング教材に使われているような操作性の悪いものはプレイしないでください\\n\\t\\t2.ネクストを見る、テトリスを安定して行う等の基本的な能力育成に時間を費やしましょう\\nとりあえず今は、Tspinみたいな技は置いときましょう\\nどうせ基礎に費やす時間は変わりません\\n\\t2つの技術:\\n\\t\\t1.ミノの出現位置と操作方法を覚えて、好きな場所に移動できるようになりましょう\\n\\t\\t2.次のミノの置く場所をあらかじめ決められるようになりましょう\\n\\n地球儀ボタンをクリックすると中国のテトリスプレイヤー、Tatianyiさんが書いた「Suggestion for new players to Tetris Online」という記事の英語版(翻訳者:User670)が見れます",link:"https://github.com/user670/temp/blob/master/tips_to_those_new_to_top.md",id:"62513ab00ef43cc8f592b18636aa3e58560fb4dc"},{title:"おすすめの練習法",tags:["readme","初心者","下級者","コツ","ガイド","上達","練習"],category:"help",content:"ここでは、おすすめの練習方法を紹介します\\nもし煮詰まった場合は、リラックスして好きなモードを楽しみましょう!楽しむことが一番大事です!!\\n\\n以下は、達成してほしい目標のリストです\\nA,B,Cとセットがあり、更にその中に複数の目標がありますがセット単位で複数の目標を同時にこなすのがおすすめです\\n\\nA.積み(1)\\n\\tA1.ミノを置く前に次のミノも考慮に入れてください\\nもし次のミノが置きづらい場合には、今持ってるミノの置き場所を考え直してください\\n\\tA2.地形を平らにするよう意識するとどんなミノでも置きやすくなります(一部ではより具体的に横置きを意識するとも言われています)\\n\\tA3.ホールドが使える時は、今持っているミノ、ホールドにあるミノ、ネクストにあるミノの3つを意識するとより長い時間平らな地形を維持できます\\n\\nB.効率と速さ\\n\\tB1.ゴーストを見ながら置かないでください\\nこのミノをここに置くにはこの操作をするというのを頭の中で処理してください\\n\\tB2.回転キーは左右両方使ってください\\n一回の入力で済む操作は一回で処理しましょう\\n\\tB3.最適化を覚え始めてきたら速さはあまり気にしないでください\\n最適化は癖付けるものなので一度身につければ、精度を保ったまま速くなれます\\n\\nC.積み(2)\\n\\tC1.スプリント(40Line)を完走する\\n\\tC2.ホールドなしでスプリント(40Line)を完走する \\n\\tC3.Techrashだけでスプリント(40Line)を完走する\\n\\tC4.ノーホールド、Techrashだけでスプリント(40Line)を完走する\\n\\nCは難易度を調整しやすいので、自身の能力に合わせて難易度を調整してください\\n\\nCが終わった場合は、A1の練習をしてください\\nこれはテトリスの基本技術の一つでネクストの把握量が多ければどんなゲームモードでもすぐに上達できます",link:"",id:"d7c155467bc05a540df6d622489be9938a1a8579"},{title:"Tspinを学ぼう",tags:["t","tspin","t-spin","tスピン","上達法","初心者","下級者","ガイド","tip","おすすめ","練習","helps"],category:"help",content:"Tspinはテトリスの中でも高等技術なのでTspinの地形を見ているだけでは、習得できません\\nまた積みの技術やネクスト把握能力も必要になってきます\\nもし本当にTspin技術を上達させたい場合は、積みの技術などの土台となる技術をしっかり習得しましょう\\n\\nおすすめの習得タイミング:スプリント(40Line)を60秒(条件によっては40~120秒)以内に完走、Techrashだけで完走、ホールドなしで大きく減速せずに完走\\nこれらで十分にネクストを考慮した思考ができるようになってからTspinを学び始めることをおすすめします",link:"",id:"25dcd9af20341683587e6deb864a98599175b37e"},{title:"Techmino公式web",tags:["homepage","web","mainpage","ホームページ ウェブ メインページ","テクミノ","テックミノ","techmino"],category:"help",content:"Techminoの公式ホームページです!\\n最新の安定版Techminoをダウンロードしたり、プロフィールを編集したりできます\\n地球儀ボタンから是非アクセスしてください",link:"http://studio26f.org",id:"37a6ef13ad5deb346ef08a6998213cb61af288a7"},{title:"灰机wiki",tags:["huiji","wiki","ウィキ","うぃき","灰机","フイジ"],category:"help",content:"huiji wiki\\n\\n中国のテトリス研究グループとそのサブグループに所属しているテトリスプレーヤー達が管理している中国のテトリスwikiです\\n現在、大部分のページがHard drop wikiとTetris wikiから参照、翻訳されたページになっています",link:"https://tetris.huijiwiki.com",id:"e884700884d40b3c5a6f4fab018df5f32766754b"},{title:"HardDrop wiki",tags:["harddrop","hd","wiki","ハードドロップ","ハードロ","ウィキ","うぃき"],category:"help",content:"テトリス最大コミュニティ、HardDropが運営している英語テトリスwikiです",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"d5d959f9e39623358927f1cfbbefcdaa9c80b12e"},{title:"Tetris wiki",tags:["tetris","テトリス","てとりす","wiki","ウィキ","うぃき"],category:"help",content:"Tetris wikiはテトリス関連の情報に焦点を当てたwikiです\\nMyndziが2015年に開設しました\\n公式テトリス及びファン製作の落ちものパズルゲームの記録、ゲームの仕様の解析、上達のためのガイドの作成など様々な記事が長年にわたり何千も投稿されています",link:"https://tetris.wiki",id:"a55c3f66f84f44ac33b6a5781b11c1ad9edc6a6d"},{title:"Tetris Wiki Fandom",tags:["tetris","テトリス","てとりす","wiki","ウィキ","うぃき","fandom","ファンダム","ふぁんだむ"],category:"help",content:"英語のテトリスwikiです\\n公式テトリスを重点的にまとめています",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"c5bbbc35a43754e6897f6bac88cfdbae1e239309"},{title:"Four.lol",tags:["four","wiki","lol","fourlol","フォー","ウィキ","うぃき","テンプレ","template"],category:"help",content:"様々な開幕や連パフェが集められたテトリスwikiです",link:"https://four.lol",id:"e5e912965097ab58a0f7fdc15c4e692e8b631f56"},{title:"テトリス堂",tags:["tetris","テトリス","てとりす","hall","はる","日本語","japanese","テンプレ","template"],category:"help",content:"日本語サイトです\\n開幕のチュートリアル、パフェクイズなどのミニゲーム、連パフェの詳細な解説があります",link:"https://shiwehi.com/tetris/",id:"45b625b6d06fa4f5ec41fbce1f168c021ceed3ac"},{title:"テトリステンプレ集@テト譜",tags:["wiki","ウィキ","うぃき","atwiki","テンプレ","template","日本語","japanese"],category:"help",content:"非常に多くのテンプレを保有している日本語atwikiです",link:"https://w.atwiki.jp/tetrismaps/",id:"5189c30ead94b2ec37436bdce26fb310a04239ee"},{title:"テトリスブログ - PerfectClear",tags:["テンプレ","template","日本語","japanese","開幕"],category:"help",content:"数は多くないですが開幕テンプレのセットアップが詳細に解説されている日本語サイトです",link:"https://tetristemplate.info/",id:"9ebbf569478850a1aee48fe3d2d8c85a575c965e"},{title:"ほゐスライド",tags:["上達","練習","ほゐ","スライド"],category:"help",content:"日本のテトリスプレイヤー、whipemerald氏が作ったテトリスを上達させるためのスライド\\nテトリスフレンズの時代に作られたものだが今の時代でも問題なく通じる",link:"https://docs.google.com/presentation/d/1kYU2T6Kb-CVVshOa3BHGIhCoOWbbbKUekQqq-TsZgoY/mobilepresent?slide=id.p",id:"dad34eb1cd4cf2d65ad81bc4f1d9fe103f012f81"},{title:"テト譜",tags:["fumen","テト譜","譜面","研究 解析"],category:"help",content:"Mihys氏が開発したテトリスの地形を描画や共有ができる偉大なサイト\\n他のテトリスツールを使用する際にもよく使われる\\nAdd-onからframe.jsを選択することでさらに拡張した機能が使えます",link:"http://fumen.zui.jp",id:"038fe994b899244fa5411523a29d9cd5b6147a59"},{title:"Fumen for Mobile",tags:["fumenformobile","fm","fumen","テト譜","譜面","モバイル","mobile","もばいる","研究","解析"],category:"help",content:"Newjade氏によってテト譜をスマホ等でより直感的に使えるように開発されたテト譜サイトです\\nフィールドの画像出力や範囲塗りなどの公式のテト譜にはない機能も多数あります",link:"https://knewjade.github.io/fumen-for-mobile/",id:"7797ee759d76872fa714861b22806c84c372b723"},{title:"テト譜ブラウザ",tags:["fm","fumen","テト譜","譜面","研究","解析"],category:"help",content:"主にテト譜を管理するためのソフト\\n大量にテト譜を管理する人は持っていて損はない",link:"https://com.nicovideo.jp/community/co1370000",id:"ee78fefca55ccff685a7285c13c61c5d8dfe5202"},{title:"solution-finder",tags:["fm","fumen","テト譜","譜面","研究","解析"],category:"help",content:"Newjade氏によって開発されたパフェの確率やパターン、最大ren数など様々な解を見つけたり確率を計算できるツール\\n日本ではテンプレ制作、それ以外ではパフェ関連に使われることが多い",link:"https://solution-finder.readthedocs.io/ja/latest/",id:"adc1fd2f9abbf331dd763dc7360160528841dd89"},{title:"path-filter",tags:["fm","fumen","テト譜","譜面","研究","解析","パフェ","perfect","all","最小"],category:"help",content:"Newjade氏によって開発されたパフェ率を維持したまま最小パターンを求めるためのツール\\nただし近似解を出力するので複数回もしくは、長時間使うことが前提である",link:"https://github.com/knewjade/path-filter/releases",id:"63dfd5f3b19fceb530cb5cec6e41464ce651d358"},{title:"Github Repository",tags:["githubrepository","sourcecode","src","ソース","リポジトリ","りぽじとり","github"],category:"org",content:"Techminoの公式Githubです\\n星をお願いします!",link:"https://github.com/26F-Studio/Techmino",id:"67a03558cd33e7ed5417573b963bfb210bc65739"},{title:"Discord コミュニティ",tags:["community","コミュニティ","コミュ","こみゅにてぃ","こみゅ","discord","ディスコード"],category:"org",content:"Techminoコミュニティに参加して、他のプレイヤーと交流しよう!地球儀ボタンからTechminoのdiscordサーバーにアクセスできます",link:"https://discord.gg/f9pUvkh",id:"461bb2bdad0b1d3ee9ee4c1804a0ddeaa4dbcfa3"},{title:"テトリスオンラインポーランド",tags:["tetrisonline","servers","top","toj","toz","poland","japan","zapan"],category:"org",content:"地球儀ボタンをクリックするとTOPクライアントの情報にアクセスできますが2023年4月10日現在、2種類の日本サーバーはダウンしており、TOPサーバーのみ使えます",link:"http://tetrisonline.pl/",id:"ad1dcb4e840578a4c786fdbf31261a71ff0ca0ad"},{title:"Tetris OL Servers",tags:["tetrisonline","servers","tos"],category:"org",content:"地球儀ボタンをクリックするとTeatube氏作成の中国のTetris Online Studyの情報にアクセスできます",link:"https://teatube.cn/tos/",id:"9c8089870ca2a2da08629d0c8e9a2b2c65ee73ff"},{title:"サポート1",tags:["support","サポート","寄付","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:"こちらの内容はプラットフォームの関係により非表示にされています\\\\n詳しくはTechminoのdiscordサーバーにて聞いてください",link:"",id:"5aa1529044416f9dbd5fd02e3ec4147719b06fe7"},{title:"サポート1",tags:["support","サポート","寄付","wechat","vx","weixin","alipay","zfb","zhifubao"],category:"org",content:"WechatやAlipayを使ってTechminoに寄付してくださる場合は、ゲームメイン画面の「TECHMINO」のTを連打→コンソール画面で「support」と入力→QRコードを読み取って寄付してください",link:"",id:"f7563dd66b79b13ae8f2c9571d64ed5f80ade7b8"},{title:"サポート2",tags:["support","サポート","寄付","afdian","aidadian"],category:"org",content:"こちらの内容はプラットフォームの関係により非表示にされています\\\\n詳しくはTechminoのdiscordサーバーにて聞いてください",link:"",id:"4df40576f4d90fe7ac801a7dd5e51b98b866dc33"},{title:"サポート2",tags:["support","サポート","寄付","afdian","aidadian"],category:"org",content:"Aifadianを使ってTechminoに寄付してくださる場合は、地球儀ボタンからURLを開いてください\\nAifadianの場合、寄付金額から6%の手数料がかかります",link:"https://afdian.net/@MrZ_26",id:"ca3744b5d38de9ec03b563a974075c339f59e254"},{title:"サポート3",tags:["support","サポート","寄付","patreon","patreon"],category:"org",content:"こちらの内容はプラットフォームの関係により非表示にされています\\\\n詳しくはTechminoのdiscordサーバーにて聞いてください",link:"",id:"27530a59f5cf6f4c103b32f41a42c1169075048a"},{title:"サポート3",tags:["support","サポート","寄付","patreon","patreon"],category:"org",content:"Patreonを使ってTechminoに寄付してくださる場合は、地球儀ボタンからURLを開いてください\\nPatreonの場合、一定額以上の寄付に対して手数料がかかります",link:"https://www.patreon.com/techmino",id:"e5a7df6767bb2f79b07ed34e1d111394999e3943"},{title:"テトリス トレーナー トレビアン",tags:["tetris","trainer","tres","bien","上達","練習","テトリス","トレーナー","トレビアン"],category:"game",content:"こな氏によって開発されたチュートリアルサイトです\\nTspinや最適化、SRS等の対戦テトリスで使う技術を学べます\\nノーホールド、Techrashだけでスプリント(40Line)を完走できたプレイヤーにおすすめです",link:"http://taninkona.web.fc2.com/ttt/",id:"2b7d64e58dd8d33caa2ec7e1a4c819a4f07a32ea"},{title:"テトリス パフェチャレンジ",tags:["tetris","perfect","clear","challenge","パフェ","連パフェ","上達","練習"],category:"game",content:"Chokotia氏によって開発された開幕パフェのチュートリアルサイトです\\nテトリス トレーナー トレビアンをクリアし、SRSに慣れたプレイヤーにおすすめです",link:"https://davdav1233.github.io/ttpc/",id:"94e34cbb20b17a5ea194abe22319ace7466e952a"},{title:"ナゾテト",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"Tspinやオールスピン、簡単な問題から難しい問題まで様々な謎テトがあります\\nテトリス トレーナー トレビアンをクリアしたプレイヤーにおすすめです",link:"http://klyuchevskayanazoteto.web.fc2.com/",id:"5f60680c17d9d0fb539deba7c6158bb19d3f9e86"},{title:"TPO",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"Tetris puzzle O(テトリスパズルオー)はTCV100によって開発された中国の謎テトサイトです\\nナゾテトのパズルをいくつか含んでいます",link:"http://121.36.2.245:3000/tpo",id:"5816c6bc0f913e152ec8fbaf1c4ed288a1aabe6d"},{title:"詰めテトリス",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"ナゾテトよりも実践向けの謎テトがまとめられたatwiki\\nテトリスDS時代のものなのでパフェとren火力はなし、TSMはTSS扱い",link:"https://w.atwiki.jp/tetrisds/pages/26.html",id:"c43155ffd23a114b5d16ed226d046909e713156c"},{title:"twowide",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"多数の高難易度謎テト、豊富なモードがある謎テトサイトです\\nオンラインランキングもあるので他のプレイヤーと競い合うことができます",link:"https://twowi.de",id:"ab70e042fe947dceead72be2fcc479cfb52822ad"},{title:"downstack-practice",tags:["nazo","なぞ","ナゾ","謎","上達","練習"],category:"game",content:"downstackと書いてあるが掘以外にもTspinや途中パフェ等の謎テトを生成する謎テトサイトです\\n中盤テンプレも練習でき、より実践に近い謎テトを解くことができます",link:"https://himitsuconfidential.github.io/downstack-practice/",id:"f2e5b92f1e6f53391001f260a16d1d9e74055ec5"},{title:"途中メモ 1",tags:["note","memo","ノート","メモ","nb","NB","DM","notice"],category:"game",content:"次からは公式テトリスや落ちものパズルゲームの簡単な紹介です\\n\\nもちろんここにあるゲームがすべてではありません\\nまたTechmino制作者がコメントをしていることがありますが、あくまで主観的な意見でありそのゲームの良し悪しを決めるものではないことに注意してください\\n事実と意見を明確に区別するために意見は大括弧([,])で囲んでいます",link:"",id:"1936f35ddcc61ca5c183e35637929e5f803a3d41"},{title:"King of Stackers",tags:["kos","kingofstackers","こす","コス","キング","スタッカーズ"],category:"game",content:"ブラウザ | マルチプレイ | モバイル端末可\\n略称はkos\\nターン制の非公式テトリスです\\n基本的なルール:\\nプレイヤーは1ターンにつき7つずつミノを設置していきます\\n相手から火力が送られてもLine消去をしている間はせり上がりません\\nこのゲームはppsの概念がないためとても戦略的です\\nまた試合設定で様々な攻撃ルールに設定できます(通常はExclusive+)",link:"https://kingofstackers.com/",id:"03976adc8d56d6b7bfefe31ffcf2f49d40d8ccda"},{title:"Tetr.js",tags:["tetrjs","tetr.js","js"],category:"game",content:"ブラウザ | シングルプレイ | モバイル端末可\\nオリジナルは単純な1人用の非公式テトリスです[見た目もシンプルでアニメーションはほとんどありません]\\nしかし有志により細かいチューニングや多くのモード、仮想キーボードの追加等が行われました\\n地球儀ボタンのリンクはfarter氏によるDig Modへのリンクです",link:"http://farter.cn/t",id:"1e8934e62413a391f35e2c0cb955283834712889"},{title:"Tetra Legends",tags:["tl","tetralegends","レジェンズ","レジェンド","てとら","テトラ"],category:"game",content:"ブラウザ | シングルプレイ | モバイル端末不可\\n略称はTL\\n多くの1人用モードと2つの隠しリズムゲームを持っている1人用の非公式テトリスです\\n通常他のゲームでは隠されている部分まで可視化されています\\nしかし複合的な理由により2020年12月に開発が中止されました",link:"https://tetralegends.app",id:"f29beb5810b660bc321ec5360484123374053a4a"},{title:"Ascension",tags:["asc","ASC","ascension","アズセシオン"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はASC\\n同じくASCと呼ばれる独自の回転法則があり、多くの一人用モードがあります\\n1vs1モードは2022年11月26日現在、α版です\\nTechminoのstackモードはASCからアイデアを得ています",link:"https://asc.winternebs.com",id:"d00f385b962369aa081c12118d2f2d6b4f08cf06"},{title:"Jstris",tags:["js","jstris","じぇすとりす","ジェストリス"],category:"game",content:"ブラウザ | シングル/マルチプレイ | モバイル端末可\\n略称はjs\\n現在、主流の非公式テトリスの1つであり、様々なシングルモードと豊富な設定、自由に配置できる仮想キーボードを備えています\\nまたjstris+を導入することでさらに拡張されたjstrisを楽しむことができます",link:"https://jstris.jezevec10.com",id:"7b7444e1cecfe3104cbc2f7b50d7be1c39bfb43b"},{title:"TETR.IO",tags:["io","tetrio","tetr.io","てとりお","テトリオ","tetr","てとらいお","テトライオ"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はテトリオ\\n現在、主流の非公式テトリスの1つであり、レーティングシステムや多くのゲーム設定を変更できるカスタムゲーム、FFAなど様々な要素を備えています\\nまた安定して動作しやすいデスクトップクライアント版が存在します\\nそしてTETR.IO+を導入することでさらに拡張されたテトリオを楽しむことができます\\n[safariじゃテトリオはできないようです]",link:"https://tetr.io",id:"c6f5576019f448b6ddfcfa96c50a623b4505842a"},{title:"Nuketris",tags:["nuketris","nuke","ぬけ","ヌケ","ぬけとりす","ヌケトリス"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n基本的な1人用モードやレーティングシステムを備えた非公式テトリスです\\n独特なゲームルールをしており、Ospinもできます",link:"https://nuketris.com",id:"83a8c15193c8bc6e8afe48811a3c039042813da7"},{title:"Worldwide Combos",tags:["wwc","worldwidecombos","ワールド","ワイド","コンボ","コンボズ"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はWWC\\n世界規模の1vs1やリプレイと戦えるモード、豊富なゲーム設定など様々な機能を備えた非公式テトリスです",link:"https://worldwidecombos.com",id:"94081db2455fec7e83df266bc94308d0df55c83a"},{title:"Tetris Friends",tags:["tf","tetrisfriends","notrisfoes テトリス","てとふれ","テトフレ","のとりす","ノトリス","official","公式"],category:"game",content:"ブラウザ | シングル/マルチプレイ\\n略称はテトフレ\\n今は亡き公式テトリス\\n昔はとても人気があったが数年前にサービス終了した\\n現在は「Notris Foes」という非公式プライベートサーバーが存在している",link:"https://notrisfoes.com",id:"ccf010be3f3b7a49dd78cef7d4e5d262bd305761"},{title:"tetris.com",tags:["tetris","テトリス","online","オンライン","official","公式"],category:"game",content:"ブラウザ | シングルプレイ\\ntetris.comにある公式テトリス\\nゲームモードはマラソンのみです\\n公式テトリスでは珍しくマウス操作に対応しています",link:"https://tetris.com/play-tetris/?utm_source=top_nav_link&utm_medium=webnav&utm_campaign=playNow_btm_tst&utm_content=text_play_now",id:"1b03e40d2c4fe9736f5c83f458215856ffcd5493"},{title:"Tetris Gems",tags:["tetris","テトリス","online","オンライン","official","公式","gem","ジェム"],category:"game",content:"ブラウザ | シングルプレイ\\ntetris.comにある公式テトリス\\n横1列を揃えると揃えた部分が重力の影響を受ける特殊なブロックになり、連鎖的にLine消去が可能なゲームである\\nさらに3種類の宝石ブロックが存在し、それぞれ特殊能力を持っています",link:"https://tetris.com/play-tetrisgems",id:"34196d46abd0d04928115af84c89abee3bb2fcc8"},{title:"Tetris Mind Bender",tags:["tetris","テトリス","online","オンライン","official","公式","gem","ジェム"],category:"game",content:"ブラウザ | シングルプレイ\\ntetris.comにある公式テトリス\\nルールはマラソンと同じですが「マインドベンダー」という特殊なブロックが出現します\\nマインドベンダーを消すことで様々なイベントが起こります",link:"https://tetris.com/play-tetrismindbender",id:"ead36dcde213c8a667268eefeee10a713a89db9b"},{title:"Techmino",tags:["techmino","テクミノ","テックミノ"],category:"game",content:"クロスプラットフォーム | シングル/マルチプレイ\\n日本語だとテクミノと呼ばれます\\nMrZを筆頭にLÖVEを使って開発された落ちものパズルゲームです\\n多くの一人用モード、多彩なカスタマイズ性を持ち、オンラインマルチプレイも徐々に開発されています",link:"",id:"06eed6ff342747e1a656db3a15d515d58e48a5b7"},{title:"Falling Lightblocks",tags:["fl","fallinglightblocks","ライト","フォーリング"],category:"game",content:"ブラウザ/iOS/Android | シングル/マルチプレイ\\n縦でも横でも遊べるマルチプラットフォームの非公式テトリス\\nDASやLine消去時間は固定されています\\nまたモバイル端末では操作を一部カスタマイズ可能です\\nFalling Lightblocks内にあるゲームのほとんどはファミコンのクラッシクテトリスがベースになっていますがモダンテトリスも存在します\\nバトルシステムは半分ターン制、半分リアルタイム制になっており、相殺システムはありません",link:"https://golfgl.de/lightblocks/",id:"a81cfbe60982260231080c7c719952f32edb51a4"},{title:"HATETRIS",tags:["hatetris","へいと","ヘイト","はてとりす","ハテトリス"],category:"game",content:"ブラウザ | シングルプレイ\\n常に嫌なブロックが出現する一風変わった非公式テトリス\\nLine消去数がそのままスコアになる\\nテトリス全体で見ても非常に難しいことから人間によるスコア更新よりも機械を使った研究の方が盛んである",link:"https://qntm.org/files/hatetris/hatetris.html",id:"3323487eefb08dba7d967e468152712b876df0ed"},{title:"Cambridge",tags:["cambridge","ケンブリッジ"],category:"game",content:"クロスプラットフォーム | シングルプレイ\\nLÖVEを使って開発された非公式テトリスです\\n簡単かつ高度にカスタマイズできる新しいゲームモードがあります\\n元々はJoe Zeng氏が開発していましたが2020年10月8日のver.0.1.5からMilla氏が引継ぎました\\n-Tetris wikiより",link:"",id:"571f5617b8e5a22421ad17096aca033c621c9cd3"},{title:"Nanamino",tags:["nanamino","ななみの","なな","ナナミノ","ナナ"],category:"game",content:"Windows/Android | シングルプレイ\\n面白い回転システムを持っている開発中の非公式テトリスです",link:"",id:"57e1dba48f0e84a44115c1c1732f6285d50a994a"},{title:"TGM",tags:["tetrisgrandmaster","tetristhegrandmaster","gm","グランド","マスター"],category:"game",content:"アーケード/PS/NS | シングル/ローカルマルチプレイ\\nTetris The Grand Masterはアーケードテトリスです\\nS13やGM等のモードはこのシリーズから始まりました\\nTGM3はシリーズの中で最も有名なタイトルです\\nNintendo SwitchやPlaystation 4に移植されてます",link:"",id:"9b19cb62836cdcf86dde298e8ee43d84db484ac6"},{title:"DTET",tags:["dtet","デテト","でてと","ディテト","でぃてと"],category:"game",content:"Windows | シングルプレイ\\nTGMのクラッシクルールをベースに20Gや強力な回転システムを導入した非公式テトリスです\\n現在、このゲームを見つけ出すのは難しく、見つからないDLLファイルを自分で補う必要があります",link:"",id:"dec506036ab50bd7d57f0a81bbebc91c38bdb04e"},{title:"Heboris",tags:["hb","heboris","へぼ","ヘボリス","へぼりす"],category:"game",content:"Windows | シングルプレイ\\nアーケードのような雰囲気の非公式テトリスです\\n他のテトリスの様々なゲームモードをシミュレーションできます",link:"",id:"2dd2156b95d39cee9e75fc358a447fd28b263a4f"},{title:"Texmaster",tags:["txm","texmaster","テクス","マスター"],category:"game",content:"Windows | シングルプレイ\\nTGMの全モードを収録している非公式テトリスです\\nただしインスタントソフトドロップやキックテーブルの仕様がワールドルールと少し異なります",link:"",id:"e23fd55f36113cce57e439e9807ddffc482d9f6f"},{title:"Tetris Effect",tags:["te","tec","tetriseffectconnected","TE:C","テック","テトエフェ","エフェクト","コネクテッド"],category:"game",content:"PS/Oculus Quest/Xbox/NS/Windows | シングル/マルチプレイ\\n略称はテトエフェ(TEC)\\n入力に反応するド派手なグラフィックとサウンドを備えた現在、主流の公式テトリスの1つ\\n「Connected」の文字がない基本版では1人用モードしかない\\nコネクテッドの方ではコネクテッドバトル、Zoneバトル、スコアアタック、クラッシクスコアアタックの計4つのモードで対戦が可能となっている(ただしフレンドマッチやローカルマッチではZoneなし等のルール設定が可能)",link:"",id:"e07a87fc2fb8f6261c38ab8c9b12659d382d7740"},{title:"Tetris 99",tags:["t99","tetris99","99"],category:"game",content:"Nintendo Switch | シングル/マルチプレイ\\n99人でバトルロイヤルを行う公式テトリス\\n従来の対戦テトリスにはない戦略が多く存在する\\nまたDLCをダウンロードすることでマラソンやcpuとの試合、キャラクタースキンなどが追加される",link:"",id:"c3a206118294bb16dfa68326b5ba44547721bee9"},{title:"ぷよぷよテトリス",tags:["ppt","puyopuyotetris ぷよテト","ぷよぷよ","テトリス","ぷて"],category:"game",content:"PS/NS/Xbox/Windows | シングル/マルチプレイ\\nぷよぷよとテトリスの2つが入ったゲーム\\n異種対戦もでき、多くのゲームモードが存在する\\n\\n[steam版は操作性が悪く、オンライン対戦も酷い]",link:"",id:"e2826ac7cd9388a0415de4af9f48e62b47284f47"},{title:"Tetris online",tags:["top","toj","toz","tetrisonline","poland","japan","zapan","テトオン"],category:"game",content:"Windows | シングル/マルチプレイ\\n今は亡き日本の公式テトリス\\nDASとARRの値を設定できますがどちらも0にはできません\\nプライベートサーバーで稼働していましたが2023年4月10日現在、2種類の日本サーバーはダウンしており、TOPサーバーのみ使えます",link:"",id:"9aa9fc1b2edb0ac3b6e93880666249a82fe50a67"},{title:"Tetra Online",tags:["TO","tetraonline","tetraoffline","offline","テトラ","てとら","オンライン","オフライン"],category:"game",content:"Windows/macOS/Linux | シングル/マルチプレイ\\nDr OceloとMineによって開発された非公式テトリスです\\n操作性は意図的にAREが高い値に設定されているのでぷよテトなどに近い\\nThe tetris companyがDMCA(デジタルミレニアム著作権法)を理由にsteamから削除されました\\nしかしオフライン版は現在もGithubから入手可能です\\n\\nテトラオフライン",link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"0cbac115bf5d7b331ca6ca308c1632ed88e47748"},{title:"Cultris II",tags:["c2","cultris2","cultrisii","カルトリス"],category:"game",content:"Windows/OS X | シングル/マルチプレイ\\nクラッシクテトリスをベースにデザインされた非公式テトリス\\n対戦モードはコンボ(ren)に重点を置いたものとなっており、コンボ地形を組み立てる速さ、コンボ消化速度、掘のスキルが試されるゲームとなっている\\n\\n[Mac版は長い間メンテナンスされてなく、macOS Catalineよりも新しいビルドのmac OSではこのゲームをプレイできません]",link:"",id:"64fbaeee90c074afcbd634a3f1c63e11d47a072e"},{title:"Nullpomino",tags:["np","nullpomino","ぬるぽ","ヌルポ","ぬるぽみの","ヌルポミノ","ぬる"],category:"game",content:"Windows/macOS/Linux | シングル/マルチプレイ\\nカスタマイズ性の高い非公式テトリス\\nゲーム内のほぼ全ての設定を変更できる\\n\\n[しかしUIが時代遅れでフルキーボードでの操作が必須になります\\nNullpommino初心者は慣れるまで問題がある可能性があります\\nまたmac OS Montereyではこのゲームは動作しません]",link:"",id:"1c72f973378aea11668b493c6510c28f47809ff1"},{title:"Misamino",tags:["misamino","ミサミノ","みさみの","みさかみの","ミサカミノ"],category:"game",content:"Windows | シングルプレイ\\nローカルでMisaminoというbotと対戦できる非公式テトリス\\nAPIを学ぶことで自分でbotを作ることもできる",link:"",id:"b747f78de7ffc395c97fbdef1f9486f76b0535da"},{title:"four-tris",tags:["four","練習","上達","解析","研究"],category:"game",content:"Windows | シングルプレイ\\n主に試合を解析するためのソフト\\n盤面の取り込みは画像解析によって行う(かなり精度が高い)\\n n回目のパフェやren、チーズの練習もできる",link:"https://github.com/fiorescarlatto/four-tris/releases",id:"a7620b74fc36a6fe90c35c1006b192c492c8eb71"},{title:"Touhoumino",tags:["touhoumino","東方","touhou","とうほう","トウホウ"],category:"game",content:"Windows | シングルプレイ\\nNullpominoを改造し、東方projectの要素を追加した非公式テトリス\\nマラソンではスペルカードが存在し、制限時間内に必要なスコアに到達しないといけない\\n\\n[自分の腕に自信がある人におすすめ\\nそうじゃないとどうやって死んだのかすらわからない]",link:"",id:"55261fceb03a3b7bfcc10b6fb4f61589323c739c"},{title:"Tetris Blitz",tags:["blitz","ea","mobile","phone","ブリッツ","イーエー","スマホ","スマートフォン","モバイル"],category:"game",content:"iOS/Android | シングルプレイ\\nEAによって開発されたスマートフォン用の公式テトリス\\nゲーム開始時に多くのミノが落ちて来たり、Line消去を連続で行うことで「Frenzy」モードに入ることができたり、トップアウトが存在しなかったりと様々な特殊な仕様がある\\n\\nこのゲームは2020年4月に配信を終了しています",link:"",id:"2b00bb03ff88085a42156fabd9e118fe1944eb68"},{title:"Tetris (EA)",tags:["tetris","ea","galaxy","universe","cosmos","mobile","phone","テトリス","イーエー","スマホ","スマートフォン","モバイル ギャラクシー","銀河","宇宙","ユニバーサル","コスモス"],category:"game",content:"iOS/Android | シングル/マルチプレイ(?)\\nEAが開発したもう1つのスマートフォン用公式テトリス\\nスワイプとワンタッチの2つの操作方法がある\\nまたマラソンの他にギャラクシーモードというものが存在する\\nこのモードのクリア条件は指定されたミノを使い切る前にギャラクシーミノを消去することです\\n\\nこのゲームは2020年4月に配信を終了しています",link:"",id:"1155aa6fb77bd574703ed5c7e591e6c4abd0e463"},{title:"Tetris (N3TWORK)",tags:["tetris","n3twork","mobile","phone","テトリス","スマホ","スマートフォン","モバイル"],category:"game",content:"iOS/Android |シングルプレイ\\nN3TWORKが開発したスマートフォン用の公式テトリス\\n3分のウルトラ、マラソン、100人(cpu)のバトルロイヤルモードがある\\n\\n[UIは素晴らしいが操作性が良くない]",link:"",id:"e8f98017658c97afea81daac7c4adc0589777a41"},{title:"Tetris Beat",tags:["n3twork","rhythm","リズム","ビート","beat","スマホ","スマートフォン","モバイル","mobile","phone"],category:"game",content:"iOS | シングルプレイ\\nN3TWORKがAppleアーケードで配信しているスマートフォン用の公式テトリス\\nマラソンの他にビートモードがあるがBGMのリズムに合わせてミノを置いて行くだけである\\n\\n[エフェクトが重いし操作性もイマイチ]",link:"",id:"682435396857b8e212bea51bf5da2631027b1266"},{title:"Tetris Journey",tags:["tetrisjourney","mobile","phone","huanyouji","スマホ","スマートフォン","モバイル","ジャーニー"],category:"game",content:"iOS/Android | シングルプレイ\\nTencentによって開発され、中国限定で配信されたスマートフォン用の公式テトリス\\nレベルモードや対戦モード、いくつかの1人用モードがある\\n対戦モードでは2分間の時間制限があり、対戦者がトップアウトしない場合、より多く火力を送った方が勝者となる\\n仮想キーボードの配置や大きさを調整できる",link:"",id:"993ca1647332708fa733c91a0a2cb843b2627a62"},{title:"JJ Tetris",tags:["jjtetris","じぇーじぇー","ジェージェー","じぇじぇ","ジェジェ"],category:"game",content:"Android | マルチプレイ\\n正式名称:JJ块\\nJJ棋牌のカジュアルゲーム\\n縦画面、低入力遅延と操作性が高い\\nDASやARR、20Gソフトドロップなども制限はありますが設定可能です\\nホールドやB2Bシステム、相殺システムはありません\\n他にもそれぞれの攻撃の火力の上限が4、コンボが強いという特徴がありますが、それ以外はモダンテトリスに似ています",link:"",id:"fa9d980dbe25a5c2a2556d20dd0cdcd5814bedb4"},{title:"Huopin Tetris",tags:["huopin","qq","ほうぴん"],category:"game",content:"Windows |マルチプレイ\\n正式名称:火拼俄罗斯\\nTencent Game Centerが開発した公式テトリス\\n幅12の盤面、DASやARRはキーボードのタイピングと同じ、ネクストは1つ、ホールドはない\\n3line消し(火力:2)とテトリス(火力:3)でしか攻撃を送れない\\n下穴が市松模様のようになっているので掘ることはほぼ不可能",link:"",id:"0b0f47c275a7204e506301511a348c113d630809"},{title:"途中メモ 2",tags:["note","memo","ノート","メモ","nb","NB","DM","notice"],category:"term",content:"ここからは用語解説になります\\n\\nこれらの用語は全てのコミュニティで通じるとは限らず、また全ての用語が常に同じ意味になるとは限らないことに注意してください\\nここでは主にTechmino内で使うことを想定しています",link:"",id:"cf8827a90b9fca025a0568606c955c3c53fe5464"},{title:"LPM",tags:["linesperminute","speed","速さ","早さ","はやさ","lpm","l'pm"],category:"term",content:"Lines per minute\\n\\tプレイヤーの速さを計る指標です\\nゲームによってLPMの計算方法が異なります\\n例えばテトリスオンラインの場合、PPSという値からLPMを計算しています(1PPS=24LPM)\\nこの時、下穴消去が無視されているので文字通りのLPMとは異なります\\nTechmino内ではこのLPMを「L'PM」と表記しています",link:"",id:"dfe71d3ef5f74af842acc0ca6833cfe80340e7c0"},{title:"PPS",tags:["piecespersecond","speed","速さ","早さ","はやさ","pps"],category:"term",content:"Pieces per second\\n\\tプレイヤーの速さを計る指標です",link:"",id:"5b7dc17dbae6b67d5223ed36b73bacabeab77a22"},{title:"BPM",tags:["blocksperminute","piecesperminute","speed","速さ","早さ","はやさ","bpm","ppm"],category:"term",content:"Blocks per minute\\n\\tプレイヤーの速さを計る指標です\\n音楽用語との混同を避けるためにPPMと呼ばれることもあります",link:"",id:"473fe1b7aadb624780218f6304bf844f0e84dc2f"},{title:"KPM",tags:["keysperminute","keypressesperminute","速さ","早さ","はやさ","入力","kpm"],category:"term",content:"Keypresses per minute\\n\\tプレイヤーの入力の速さを計る指標です",link:"",id:"a1576db8f140501bfee4cfb414de249cdacf2852"},{title:"KPP",tags:["keysperpiece","keypressesperpiece","速さ","早さ","はやさ","効率","入力"],category:"term",content:"Keypresses per piece\\n\\tミノ操作の効率を計る指標です\\n最適化を習得することでこの値を下げることができます",link:"",id:"ac69f23822921b2b6f08964277ea2fe77a54a800"},{title:"APM",tags:["attackperminute","火力","攻撃"],category:"term",content:"Attack per minute\\n\\tプレイヤーが出した火力を計る指標です",link:"",id:"cec83d48a002ee0f5752fe842f2d3b767b0dee73"},{title:"SPM",tags:["linessentperminute","火力","攻撃"],category:"term",content:"[lines] Sent per minute\\n\\tプレイヤーの攻撃力を計る指標です\\nここでは相殺に使用した火力はカウントされず、相手の火力ゲージに送った火力だけがカウントされます",link:"",id:"f4a4c43d06a70fe2b158f7c5cb4d6aa6fd11d0f3"},{title:"DPM",tags:["digperminute","defendperminute","防御","火力","相殺","サバイバル","生存","掘り"],category:"term",content:"Dig(またはDefend) per minute\\n\\tプレイヤーの掘り、若しくは防御力(相殺火力+掘ったLine数)を計る指標です",link:"",id:"52248f61c1be44c4fe7194ec304854f0db944e1e"},{title:"RPM",tags:["receive","jieshou","受け","外し","相殺外し"],category:"term",content:"[lines] Receive per Minute\\n\\tプレイヤーが受けた攻撃量を計る指標です",link:"",id:"45604b2d6449601e616f86b6f336d2e612f07f9e"},{title:"ADPM",tags:["attackdigperminute","vs"],category:"term",content:"(Attack + Dig) per minute\\n\\tその試合で対戦者間のスキルを比較するための指標です\\nTETR.IOのVSスコアはこれと違い、100(Attack+Dig)/sで計算しています",link:"",id:"2ffd518aa9b41380402c774b4a3c422d214e82ab"},{title:"APL",tags:["attackperline","efficiency","効率","火力","攻撃"],category:"term",content:"Attack per line (cleared)\\n\\tよく「効率」という言葉で置き換えられます\\n1Line単位の火力を算出している値であり、ここではTSSがテトリスやTSDよりも効率が良いとされる",link:"",id:"bbcd87c56cca8b72d58cfb41a18d7ee80637f410"},{title:"Single",tags:["single","1","シングル"],category:"term",content:"1回で1Line消すこと",link:"",id:"37880ca2d93f61a696b5fea6aa6ce5f21d437a24"},{title:"Double",tags:["double","2","ダブル"],category:"term",content:"1回で2Line消すこと",link:"",id:"a53a2529ffaf4fe90f7dcaa3ebcef48896262376"},{title:"Triple",tags:["triple","3","トリプル"],category:"term",content:"1回で3Line消すこと",link:"",id:"6e7c234815285108ed77b7a2cb357091a87bce29"},{title:"Techrash",tags:["techrash","tetris","4","quad","クアッド"],category:"term",content:"*Techmino用語*\\n1回で4Line消すこと",link:"",id:"f54542633cc7c0f657b1950e77ab63abb01484dc"},{title:"Tetris",tags:["tetris","4","quad","クアッド"],category:"term",content:"ゲームの名称(商標)\\nまた公式テトリスにおいて1回に4Line消すことを指す言葉\\n\\nTetra(ギリシャ語で「4」を意味する)とTennis(テトリスの制作者が好きなスポーツ)を組み合わせた造語\\n\\nまた任天堂とセガが開発したテトリスはThe Tetris Companyのライセンス登録を受けていますが、この2社がテトリスそのものの著作権を保有しているわけではありません\\n\\n-- Alexey Pajitnovに感謝を!",link:"",id:"53003ed2f9c60a215e4b78d07b152f9ccae50b53"},{title:"All Clear",tags:["pc","perfectclear","ac","allclear","パフェ","オール","パーフェクト"],category:"term",content:"Perfect Clear(PC、パフェ)とも言われる\\n盤面内にある全てのミノを消去すること\\n明らかにあるのに見逃した場合、「今パ」と言われることがある(逆にこれに言い返すフレーズも存在する)",link:"",id:"951bcb1c86529c4418c41c0a7918a4a8daafb257"},{title:"HPC",tags:["hc","clear","halfperfectclear","ハーフ","セミ"],category:"term",content:"Techmino用語\\nHalf Perfect Clearの略\\n下穴以外のミノを全て消去するとHPCとなり、軽い火力強化が行われる\\n\\n俗に言う実質パフェ",link:"",id:"b57a9021cc5f22e8d1c0afaf771d214ba0faf522"},{title:"Spin(回転入れ)",tags:["spin","回転","スピン"],category:"term",content:"任意のミノを回転システムを使うことにより入れること\\nこれを使うことにより通常では置けない場所にでも置くことが可能になります\\nまたこの操作により火力やスコアに補正がかかることがあります\\nゲームによって回転システムが異なる場合がある",link:"",id:"c81c86bfb792e16d7f85e293759ede4f04c819f1"},{title:"Mini",tags:["mini","ミニ","みに"],category:"term",content:"ゲーム側が簡単すぎると判断したspinに適用されるシステムです\\nそのために昔のゲームでは「EZ T-spin」とも呼ばれていました\\nminiの付いたspinは火力やスコアボーナスが通常のspinよりも少なくなるように設定されています\\n\\n基本は細かい仕様を覚えずにminiになる地形だけ覚えておけば大丈夫です",link:"",id:"d445305f9c8bc06b1447c50fb0a761dba94a81cd"},{title:"All-Spin",tags:["allspin","オール","全"],category:"term",content:"全てのミノのspinに火力、スコア補正がかかるルールのこと(通常ルールはTspinのみ)\\nまた稀にルールではなくAll-spinという回転法則を指すこともある",link:"",id:"e86babd5253f73a9ae28c904ed9e73023e01411a"},{title:"T-Spin",tags:["tspin","ティ","ts","ふんどし"],category:"term",content:"Tミノを回転入れ(spin)すること\\n\\n最近の公式テトリスでは3コーナールールを採用している\\nこれは回転入れをした時にTミノの回転軸を中心として斜め4マスの内3マス以上が埋まっていた場合にTspinとして判断するというものである\\nゲームによっては一部のTspinをmini扱いしている",link:"",id:"79fa79179aabd566fb5794617de3ebe4df508804"},{title:"TSS",tags:["t1","tspinsingle","ティ","シングル"],category:"term",content:"T-Spin Single\\nTspinで1Line消去すること",link:"",id:"3273810a3a0478ea2e9baa8554542aa255ad2c00"},{title:"TSD",tags:["t2","tspindouble","ティ","ダブル"],category:"term",content:"T-Spin Double\\nTspinで2Line消去すること",link:"",id:"3b66d09aeaaa25de906a858f3124345d9ffa7eda"},{title:"TST",tags:["t3","tspintriple","ティ","トリプル"],category:"term",content:"T-Spin Triple\\nTspinで3Line消去すること",link:"",id:"d2b30723c0d620269675f8b486a6c3e69a1be264"},{title:"MTSS",tags:["minitspinsingle","tsms","tspinminisingle","tsm","mini","1","シングル"],category:"term",content:"Mini T-spin Single\\n通称:T-spin Mini Single(TSMS)\\nTSSだがmini判定のもののこと\\n\\nゲームによってどのTSSがminiなのか判定が異なっていたり、そもそもなかったりする",link:"",id:"3323cf30e494b45e52b3052a95021ed85ac92e29"},{title:"MTSD",tags:["minitspindouble","tsmd","tspinminidouble","tsm","mini","2","ダブル"],category:"term",content:"Mini T-Spin Double\\n通称:T-spin Mini Double(TSMD)\\nTSDだがmini判定のもののこと\\nMTSDは一部のゲームにしか存在せず、発生する地形も異なる場合がある\\n\\nさらに一部のテトリスではMTSDを想定しておらず最悪の場合、フリーズや強制終了する",link:"",id:"9c38b240170b244a00e2f2c2981c605d302f6350"},{title:"O-Spin",tags:["ospin","o","オー","2"],category:"term",content:"Oミノはどんなに回転させても形が変化しないため回転入れが不可能でした(一部では毎秒500~600回転させることでOミノが熱膨張したり溶けたり変形したりするという噂があります)\\nそのためテトリスコミュニティ内でミームのように扱われ、フェイクビデオ等も作成されました\\n\\nXRSという回転法則ではOミノを特定の地形で回転させると穴にテレポートするように設計し、それをOspinとしています\\nまたTRSでは同様にすることでテレポートさせるだけでなく、他のミノの形に変形することによってOspinを実現しています",link:"",id:"c2438b38e3d412b7e59d8eb950853ab5ac321f80"},{title:"Rotation Systems(回転システム、回転法則)",tags:["wallkick","rotationsystem","回転","壁","法則"],category:"term",content:"ミノがどのように回転するかを決定しているシステムのこと\\nモダンテトリスの場合、ミノは特定の回転軸を中心に回転している(もちろんそれがないゲームもある)\\nそして回転させたときに壁や既にマスが埋まっている場所にミノが重なると通常「壁蹴り」という処理が行われ、あらかじめ決められた位置にズレ、再び壁蹴りが必要かの判定が行われる\\nこれを繰り返しミノは設置可能な穴に移動する\\nまたこの時、spin判定が出る場合がある",link:"",id:"0375a1b3830488cae13fe02b727d03b73de3eea0"},{title:"方向表記",tags:["direction","0r2l","02","20","rl","lr","表記","ミッション"],category:"term",content:"SRS系統の回転システムではミノの向きを記述する表記法がある\\n「0」や「正の向き」の場合は出現した時と同じ向き、「R」や「右」、「1」という場合は90°右回転(CW)した向き、「L」や「左」、「2」や「逆の向き」の場合は180°回転させた向き、「3」の場合は90°左回転(CCW)した向きを表す\\n\\n例えば0->Lは左回転1回、2->右は逆の向きの状態から左回転1回となる(これは回転方向ではなくミノの向きを表す表記法なので右回転ではない)\\nカスタムモードにあるミッションはこの表記を使っている\\n\\n「->」や数字使った表記は日本であまり使われない",link:"",id:"169218700f77094ee396025d2ca70756fbc0a75a"},{title:"ARS",tags:["arikrotationsystem","atarirotationsystem","あたり","アタリ","ありか","アリカ"],category:"term",content:"これは以下の2つの意味があります\\n\\nTGMにて採用されているArika Rotation Systemのこと\\n\\n回転した時にミノを左上に揃えるように回転方向するAtari Rotation Systemのこと",link:"",id:"b08793e8c88ed97811e6ffc2324504a60a317ced"},{title:"ASC",tags:["ascension","アスセンション","アズセンション"],category:"term",content:"テトリスクローン「Ascension」にて使用されている回転法則\\n全てのミノに同じ2つのキックテーブルが使用されている\\nキック範囲は右回転、左回転両方で±2マスとなっています",link:"",id:"a5387c0b6e4410c66ad1e4c19e2b76b20462ef98"},{title:"ASC+",tags:["ascension","ascplus","アスセンション","アズセンション"],category:"term",content:"ASCをTechminoのために修正したもの\\n180°回転の壁蹴りをサポートしています",link:"",id:"2de14efed2877667050ce125d31c18ddc8fc5015"},{title:"BRS",tags:["bulletproofsoftware","バレット"],category:"term",content:"BPS rotation system\\nBullet-Proof Software社のテトリスで使用されている回転法則",link:"",id:"d0675584ad76a94fffc11a93f45e8b20166d64f7"},{title:"BiRS",tags:["biasrs","biasrotationsystem"],category:"term",content:"*Techmino用語*\\nBias Rotation System\\nXRSとSRSを基に作られたTechmino独自の回転法則\\n回転時に右や左、ソフトドロップを入力しているとその方向にミノがズレるように回転に補正がかけられます\\n下方向に補正がかかっているときに回転に失敗(既存のマスと重なる)と下方向への補正をかけずに再試行します\\nそしてそれにも失敗した場合は右、または左の補正をかけずに再試行します\\nそれにも失敗した場合には回転されません\\n\\nBiRSはXRSに比べてキックテーブルが1つのため覚えやすく、さらにSRSの特徴である地形に沿った壁超え等も備えています\\n\\n追加事項:最後の回転補正を試行する時のルールとして移動するユークリッド距離が√5を超えてはいけない、また右または左に補正がかかっている場合には最後の回転補正はもう一方の方向には行かないという2つのルールがBiRSにあります",link:"",id:"41c0af2646e5815b09a6821fe6e83532239c30de"},{title:"C2RS",tags:["c2rs","cultris","2","カルトリス"],category:"term",content:"Cultris II rotation system\\nCultris IIで使われている回転法則\\n全ての回転、全てのミノのキックテーブルが同じ(ズレ方:左、右、下、左下、右下、左に2、右に2)\\nまた左右は左が優先される\\n\\nTechminoではこの回転法則を改良したC2symという回転法則があり、そちらは左右の優先順位をミノと回転によって決定している",link:"",id:"62a5c7b090a2979b58768504b166332a70a18666"},{title:"C2sym",tags:["cultris2","カルトリス","c2rs"],category:"term",content:"C2RSを改良した回転法則\\nミノと回転によって左右の優先順位を変えています",link:"",id:"cb0059cdcb6a74ca3c363b10f4a34e3fb53ffe1f"},{title:"DRS",tags:["dtetrotationsystem","dtet","デテト","でてと","ディテト","でぃてと"],category:"term",content:"DTET Rotation System\\nDTETで使われている回転法則",link:"",id:"a8ac1bcd736078d77d19f589aeccb48e7356da76"},{title:"NRS",tags:["nintendorotationsystem","任天堂","ニンテンドー"],category:"term",content:"Nintendo Rotation System\\nファミコンやゲームボーイ時代のテトリスに使用された回転法則\\nゲームボーイ用の左手用とファミコン用の右手用の2種類があります",link:"",id:"1fcbba8820c777bc421ac1c2dba445c896eefda5"},{title:"SRS",tags:["superrotationsystem","回転"],category:"term",content:"Super Rotation System\\n最もポピュラーな回転法則であり、多くの自作回転法則の基礎にもなっている\\nそれぞれのミノには上下左右4方向あり、右回転、左回転の2つの方向に回転できる(この回転法則では180°は存在しない)\\nそして回転した時にミノが既に埋められているマスや壁、床に重なった場合、位置ズレが発生し床や壁を蹴ることができます(通称:壁蹴り)\\nキックテーブルの詳細はTetris wikiやHardDropにて調べられます",link:"",id:"fe329572f8c280a48db48996ecf6276166a43283"},{title:"SRS+",tags:["srsplus","superrotationsystemplus","tetr"],category:"term",content:"SRSを180°に対応させ、さらに一部の回転に対称性を持たせた回転法則です",link:"",id:"06663b6165e4f3de5c2634a62fb2be4ae66cff52"},{title:"TRS",tags:["techminorotationsystem","techmino"],category:"term",content:"*Techmino用語*\\nTechmino Rotation System\\nSRSを基にした回転法則\\nSとZが回転しない場合を修正し、いくつかの便利なキックテーブルがあります\\n\\nTRSはOspinをサポートしています",link:"",id:"71dd364fad01829c910f46108bb9f026d7937635"},{title:"XRS",tags:["xrs"],category:"term",content:"X rotation system\\nTetris.grのT-EXで使われている回転法則\\n方向を入力していると別のキックテーブルを使えるという機能を備えておりプレイヤーがミノのズレる先を操作できるようになっている",link:"",id:"2d1d479ea535d60b3120f6ec1523575b004b6920"},{title:"Back to Back",tags:["b2b","btb","backtoback","バック"],category:"term",content:"略称はBtB(B2B)\\n他のLine消去を挟まずにspinやテトリスをすること\\n火力やスコアに補正がかる\\nコンボとは違い、Line消去に関わらないミノを置いてもBtBには影響がない",link:"",id:"e8e071ffb7ef406f92748c1a23e438359f60b2a9"},{title:"B2B2B",tags:["b3b","b2b","btb","backtoback","バック"],category:"term",content:"*Techmino用語*\\nBack to Back to Back、略称はB3B\\nBtBを続けて維持し、BtBゲージを満タンにすることでB3Bになり、火力やスコアに更に強力な補正がかかる",link:"",id:"c433b2e201993e1d301a8ce4aaaa00ccea045f29"},{title:"Fin, Neo, Iso",tags:["fin","neo","iso","特殊","フィン","ネオ","アイエスオー","ふぃん","ねお","あいえすおー"],category:"term",content:"Tspinのキックテーブルと成立条件を利用した特殊なTspinです\\nゲームによってはminiになったりと価値が異なりますが実戦では限られた場面でしか使われません",link:"",id:"44696117b28725326db731e0d17e1f02b3ff6375"},{title:"モダンテトリス",tags:["modern","モダン","現代"],category:"term",content:"“モダン“テトリスや落ちものパズルゲームのコンセプトは曖昧です\\n一般的にテトリスガイドラインに準じて作られたテトリス(公式テトリス)に似ている落ちものパズルゲームはモダン(現代的)ゲームと言われます\\nこれに共通するルールを以下に挙げますがこれは厳密な定義ではありません\\n\\n1.可視部分の盤面は横10×縦20、さらにこの上に見えない盤面があることが多い\\n2.ミノは盤面可視部分の中央上部に生成され、それぞれ一貫した方向と色を持っています\\n3.7-BagやHisのような適当な生成機構がある\\n4.適当な回転システムを持ち、最低でも左右、両回転が可能\\n5.適当な設置システムがある\\n6.適当なトップアウト条件がある\\n7.複数個(通常3~6個)のネクストが表示されており、ネクストに表示されているミノが出現時にの方向と一致している\\n8.ホールドがある\\n9.ミノの出現時間やLine消去時間がある場合、通常IRSやIHSがある\\n10.正確かつ素早い横移動のためのDASシステムがある",link:"",id:"4c50dcb1b2b062e3b11f19942e292b26d37da0b3"},{title:"テトロミノの形",tags:["shape","structure","form","tetromino","tetrimino","ミノ","テトロミノ","テトリミノ","ブロック","ピース","形"],category:"term",content:"通常のテトリスの場合、使用するミノは全てテトロミノ、つまり4つの正方形が最低でも1辺それぞれ共有するように並べたブロックです\\n回転して合同になることは許し、反転で合同になることは許さなかった場合、全部で7種類のテトロミノができます\\nこれらのテトロミノはアルファベットに似ていることからそれぞれZ,S,J,L,T,O,Iと名前が付けられている\\n詳しくは「形と名前」の項目を参照",link:"",id:"ef69d60a3cc8b49ef0b8d6510a14e97517cb2049"},{title:"テトロミノの色",tags:["colour","hue","tint","tetromino","tetrimino","ミノ","テトロミノ","テトリミノ","ブロック","ピース","色"],category:"term",content:"最近のモダンテトリスではそれぞれのテトロミノに同じ配色をしています\\n\\nZ-赤、S-緑、J-青、L-オレンジ、T-紫、O-黄色、I-水色\\n\\nTechminoも例にもれずこの配色を使っています",link:"",id:"dea2749f91e6ddcbde63c93d9c870ae9f78756c3"},{title:"IRS",tags:["initialrotationsystem","先行","操作"],category:"term",content:"Initial Rotation System\\nミノ出現前に回転を入力し続けることでミノが回転した状態で出現するシステム\\nミノの重なりによる死亡判定を回避することが可能",link:"",id:"26a39cddcceef76eec2d0ee3a603f4eeba023756"},{title:"IHS",tags:["initialholdsystem","先行","操作"],category:"term",content:"Initial Hold System\\nミノ出現前にホールドを入力し続けることでホールドを行った後のミノが出現するシステム\\nミノの重なりによる死亡判定を回避することが可能",link:"",id:"2e6c8326dd0ff1debd849bb11d6b29e11a2eed38"},{title:"IMS",tags:["initialmovesystem","先行","操作"],category:"term",content:"*Techmino用語*\\nInitial Movement System\\nミノ出現前に横移動を入力し続けることでミノが1つ横にズレた状態で出現するシステム\\nミノの重なりによる死亡判定を回避することが可能\\n\\n補足:横移動を入力し始めてからミノ出現までの時間がDAS時間よりも長くなければいけません",link:"",id:"bbd943e376c3847e6617fd252acc7e0046eab1d8"},{title:"Next(ネクスト)",tags:["nextpreview","next","ネク","ネクスト","ねく","ねくすと","次","上達","練習"],category:"term",content:"次に来るミノをいくつか表示している部分のこと\\nネクストを処理することによって前もってミノの置く場所を決めることができ、テトリスを上手くなるには必須技術です",link:"",id:"c92cf9183c2e48a86e30f2ef323d04198fa52a5f"},{title:"Hold(ホールド)",tags:["hold","ホールド","一時","保留"],category:"term",content:"その時点で操作しているミノがホールド部分に移動し、代わりに元々ホールド部分にあったミノを取り出します(もしホールド部分にミノがなかった場合、ネクストのミノが操作ミノになります)\\nこの操作は通常繰り返すことはできず、一度ホールド部分に移動したミノは再びホールドすることはできません\\n\\n*Techmino用語*\\nTechminoには「その場ホールド」という機能があります\\nこの機能を有効にしていた場合、ホールドから取り出されるミノは従来の出現位置ではなく、その時ミノがある位置に出現します",link:"",id:"d47a553f2352803ffa500b2637c7d69c3f4f13da"},{title:"Swap",tags:["hold","ホールド","一時","保留","スワップ"],category:"term",content:"ホールドと似た機能ですが、swapはネクストとミノを入れ替えます\\nつまりこの操作をした場合、swapしたミノは次の操作ミノになります\\n\\nこの操作は通常繰り返すことはできず、一度swapしたミノは再びswapすることはできません",link:"",id:"a579efcbdc1313f01ee4052715b31ab8d8764b67"},{title:"Deepdrop(ディープドロップ)",tags:["shenjiang","ディープ","deep"],category:"term",content:"*Techmino用語*\\nこの機能を有効にした場合、床を貫通して回転入れのようにテレポートします\\nミノと同じ形の穴があり、その穴が埋まっている時に下までソフトドロップし、もう一度ソフトドロップを入力することで埋まっている穴にテレポートします\\nこの機能はAIが回転法則の違いを無視できるようになるため特にAIに有効な機能です",link:"",id:"e66932715be581f84b57cd16e806d3e2130f9b64"},{title:"Misdrop(置きミス)",tags:["md","misdrop","ミス","置き"],category:"term",content:"意図しない場所にミノを置いてしまうこと\\n\\n日本では、テトリスするためのIミノが縦のまま1つ横にズレることを「あるぎミス」と言ったりする",link:"",id:"01080f102e9d954f8d2752605e0d6531089c3f95"},{title:"Mishold(ホールドミス)",tags:["mh","mishold","ホールド","ミス"],category:"term",content:"意図しないタイミングでホールドしてしまうこと\\n置きミスにつながったりパフェを逃す原因になります",link:"",id:"ac2aa3ff1c8ee16a4258bf8b331034d285c9da33"},{title:"sub(切り)",tags:["sub","切り","タイム","秒","分"],category:"term",content:"sub<時間>(<時間>切り)はスプリント(40Line)などのタイムが<時間>未満であることを意味する\\nsubの場合は時間の単位が省かれることが多い\\n例えば、スプリント(40Line)の場合はsub30(30秒切り)、1000Lineの場合はsub15(15分切り)と表す",link:"",id:"2e2feb8592af85d898cd4f928c4cb1bb5c31a2d2"},{title:"Digging(掘り)",tags:["downstacking","ds","掘り","堀り","dig","ダウン"],category:"term",content:"盤面の下にある下穴などを消していくこと\\n「堀り」ではなく、「掘り」",link:"",id:"35fb2f3c5c6f9596510318459846f4096df49a8d"},{title:"Downstack",tags:["downstacking","down","ds","掘り","dig","ダウン","upstack","up","ud","積み","stack"],category:"term",content:"大きく見た時に地形を下げる積み方のこと\\n掘りはこれの1種である\\n対義語としてUpstackがある\\n\\n1巡毎に2Line消去をする場合、盤面内は1巡につき8つブロックが増えていく\\nつまり毎巡TSDをすると火力が送れる上にリソースが溜まっていくのである。",link:"",id:"aa5600b84be1854f3439f4aa41c07d9b181001d2"},{title:"削り",tags:["削り","整地"],category:"term",content:"主に整地を目的として1~3Line消去をすること\\n無駄な削りもあるが必要な削りも世の中には存在する",link:"",id:"1a16267b0b7c3f428030e5cb10b1e3e56b3f95ea"},{title:"Donation(ドネイト)",tags:["donate","ドネイト","空中"],category:"term",content:"穴を一旦塞いでTspinの地形を作ること\\n特にTspinの後に塞いだ穴が空く形状となるもの",link:"",id:"eafbc1723a0844d66292009fccfb17dda1728173"},{title:"‘Debt’",tags:["qianzhai","debt","owe"],category:"term",content:"中国のテトリスコミュニティで使われる用語(欠债と呼ばれている)\\n\\n特定の地形を完成させないとまともな攻撃(Tspinやテトリス)ができない状況や地形を表す用語\\n端的に言えばTSTタワーやキングクリムゾンのような大型テンプレを組み終わるまでの隙のことを指す\\n大型テンプレを実践でする場合には凝視等で安全なことを確認してから行わないと不利な状況になります",link:"",id:"494a79a3b7c09476e9b602f0de65d7444af7db6a"},{title:"謎テト",tags:["クイズ","quiz","謎","上達","練習"],category:"term",content:"特定の状況とお題が与えられ、それを満たすような答えを探す詰将棋みたいなもの\\n謎テトがまとめられたサイトもある",link:"",id:"f5d2a8bf4275cae881388c7e38388bddf4872d0a"},{title:"てとぼ",tags:["募集","上達","練習","tetobo"],category:"term",content:"テトリス募集の略\\nTwitterやDiscord上で対戦相手を募る時に使う言葉\\nTwitterではてとぼをRTしてくれるbotが存在する",link:"",id:"372008da2c8cc0a291a67e428a209f5a0d31a978"},{title:"テト譜コード",tags:["開発","テト譜","譜面","コード"],category:"term",content:"テト譜URLの「v115@~」以降の部分のこと\\nこれにはテト譜地形やコメント等の情報が収められている\\n「v115@」の部分は「m115@」だったり「v095@」だったりする\\n詳しくはnewjade氏が作成した「テト譜v115のデータ構造」というスライド参照",link:"https://docs.google.com/presentation/d/1P5xt0vPGuxSb9hbRW6hvQFYKFoIccfNTJkWTdjtyigc/edit#slide=id.p",id:"e777f175dd22978ab4fe72da0032e69e5f7374c7"},{title:"地力",tags:["実力","上達"],category:"term",content:"あらゆる場面に対応できる総合的な能力のこと\\n要はテトリスの実力\\n\\n実際には速さや見える手、凝視等の根本的な能力の総称として使われることが多い",link:"",id:"297a557493aa8dad2ab34028f5cf135ed7390caf"},{title:"パリティ",tags:["開発","テト譜","譜面","研究","練習"],category:"term",content:"地形を特定の法則に従って2色以上で塗り分けた時の性質のこと\\n今までは主に市松パリティや縦パリティでパフェが取れる条件を絞り込みだけだったが、最近では研究が進みアップスタック時に安定して火力が出せる地形を維持する条件などが解明されている",link:"",id:"51a0c20b3b6f8cabcfbebfc77851c74475f5884a"},{title:"Attack & Defend",tags:["attacking","defending","攻撃","防御","攻防","アタック","ディフェンス","火力","相殺"],category:"term",content:"attack:相手の火力ゲージに到達した攻撃のこと\\ndefend:相手から送られてきた火力に自分の火力を当てること(日本では「相殺」と呼ばれる)\\nカウンター:相手からの火力を受ける(相殺外し)、または相手の火力を相殺してから相手に攻撃を送り返すこと\\nほとんどのゲームでは1:1で相殺が計算されます\\nつまり相手が火力4で攻撃してきた時に自分がテトリス等で火力4を出した場合、4-4=0 で完全相殺となります",link:"",id:"631de8b698d9d53d8e8787bceeef14436277349e"},{title:"Combo(コンボ)",tags:["ren","combo","れん","レン","こんぼ","コンボ","連"],category:"term",content:"日本では「ren」とも言う\\n連続してLien消去を行うこと\\n1回目のLine消去を0ren目、2回目を1ren目、3回目を2ren目としてカウントアップしていく\\nもちろんLine消去せずにミノを置いたらren数はリセットになる",link:"",id:"4128f2188446f8b8d722d9a805311a67b2199f74"},{title:"Spike(スパイク)",tags:["spike","スパイク","すぱいく","まとめ"],category:"term",content:"短時間で高火力を出すこと\\nただしネットのラグによって大量の火力が行き来することを「ラグスパイク」と呼ぶことがあるが厳密にはスパイクではない\\nTechminoとTETR.IOにはスパイクカウンターがあり、これによって短時間でどれだけ高火力を出したかがわかる",link:"",id:"0600eadaec48d6c22ec000240a27fe964584e7e8"},{title:"端開け(端空け)",tags:["sidewell","端","開け","空け","ren","combo","レン","れん","コンボ"],category:"term",content:"端を任意の幅開ける積み方\\nつまり端開け1列はテトリス積みになります\\n端開け2~4列はren地形になります\\n\\n端開けは幅を広げる程、短時間で積み上げられますがその分相手からの攻撃が簡単に刺さります\\nそのため上級者が端ren等をする場合は相手に隙があるかを確認してから組み始めます",link:"",id:"32eac94ecf78f188c3274e7d106ea8cffb52e8a7"},{title:"中開け(中空け)",tags:["centerwell","中","開け","空け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中を任意の幅開ける積み方\\n基本的に左右から5,6列目を中心に開けることを指す\\nミノを左右に移動させる回数が端開けに比べ多くなるため積み込む速さは遅くなるがそれ以上に選択肢が増えるので好まれる",link:"",id:"cd92890afb1e74dfcd16135ae67aa31ef56e8c6a"},{title:"Partial well",tags:["partialwell","開け","空け","ren","combo","レン","れん","コンボ"],category:"term",content:"日本では使われない用語\\n中でも端でもない左右から2,3,4列目を中心に任意の幅開ける積み方\\n定義的には63積みやヤンキーrenなどがこれにあたる",link:"",id:"ba121cf78df0cbf688ed4cd5881123c443058db6"},{title:"Side 1-wide(端開け1列、端空け1列)",tags:["s1w","side1wide","sidewelltetris","端","1","空け","開け","テトリス"],category:"term",content:"つまり端を開けてテトリス積みをすること\\n最も伝統的な積み方\\n最も簡単に積め、簡単に火力を送れる\\nただし攻撃の幅が狭い(テトリスかドネイトTspinぐらい)ので上に行くほどあまり好まれない",link:"",id:"b48962188262aa932c589c90f2fc7ac2deccb9ab"},{title:"Side 2-wide(端開け2列、端空け2列)",tags:["s2w","side2wide","端","2","空け","開け","ren","combo","レン","れん","コンボ","初心者","下級者"],category:"term",content:"端に2列幅を持たせるrenの積み方\\n積みやすくrenによって簡単に火力が出せるので初心者におすすめ\\n上に行くほどren数を稼ぎづらいことからあまり使われない",link:"",id:"e83445bc508d7f1124b6feca371ed67ddb4c89d3"},{title:"Side 3-wide(端開け3列、端空け3列)",tags:["s3w","side3wide","端","3","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"端に3列幅を持たせるrenの積み方\\n2列開けよりもren数を稼ぎやすいが、2列開けよりもrenが途切れやすい",link:"",id:"7491d2d3b3caf7e53faeb3dc1455b2753dc9eaa9"},{title:"Side 4-wide(端開け4列、端空け4列)",tags:["s4w","side4wide","端","4","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"端に4列幅を持たせるrenの積み方\\nren地形を作る時によく使われる\\n積む幅が狭いので速く積み上げることができ、上手くいった場合にはren数を大きく稼ぐことができる\\nただしrenを繋げるのは少し難しく、また地形が高くなるのが早いので油断していると簡単に刺さる",link:"",id:"71c8467d053ba0a54355f293b5373ffe5c9463f0"},{title:"Center 1-wide(中開け1列、中空け1列)",tags:["c1w","center1wide","centerwelltetris","中","1","空け","開け","テトリス"],category:"term",content:"つまり真ん中を開けてテトリス積みをすること\\n攻撃の幅が広く、また簡単に攻撃を組み立てることができるため対戦で好まれる",link:"",id:"ab48b2a2126432736dafb7ace4e6afdf4cbe773e"},{title:"Center 2-wide(中開け2列、中空け2列)",tags:["c2w","center2wide","中","2","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中に2列の幅を持たせるrenの積み方\\nTミノが遠い時にTspinを作るとなりやすいが意図的に使われることは少ない",link:"",id:"e1574eb512b691a48938b87003b2eb5e510a066c"},{title:"Center 3-wide(中開け3列、中空け3列)",tags:["c3w","center3wide","中","3","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中に3列の幅を持たせるrenの積み方\\nSTSDやSTMB-ケイブ、TSTタワー等テンプレを組みやすい幅ではあるが精々10段ぐらいしか積まれない",link:"",id:"184a16cc5afe7488759acf9cdf9a8534f2341e3a"},{title:"Center 4-wide(中開け4列、中空け4列)",tags:["c4w","center4wide","中","4","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中に4列の幅を持たせるrenの積み方\\nren数を稼ぎやすく、相手から20段以上の攻撃を受けないと出現ミノの位置にブロックが重ならないのでrenを狙う場合によく使われる\\nrenの調整が強いゲームだと嫌われやすい",link:"",id:"1139463af9eb74645054bc7a85c718b52755e583"},{title:"ヤンキーren",tags:["partial","ヤンキー","空け","開け","ren","combo","レン","れん","コンボ"],category:"term",content:"真ん中でも端でもない左右一方から2,3列目を中心に2~3列の幅を持たせるrenの積み方\\n積み込み難易度の高さや最適化のしづらさからあまり使われることはない",link:"",id:"091334e842c6b8c0a73c5ab5e17b853f398eb6e0"},{title:"Residual(種)",tags:["res","種","residual","c4w","s4w","端","中","ren","combo","れん","レン","こんぼ","コンボ"],category:"term",content:"端開けや中開けをした時に幅を持たせた部分にあるブロックの数のこと\\n特に4列renの時に使われる\\nよく使われる種数は種3、または種6だが種3n(n:1以上の整数)なら理論上多くのren数を稼げる\\nまた3nじゃなくても種2などは1ミノLine消去せずに置くことで種6になったりする\\n\\n種3の特徴:消し方の種類が少ないので簡単に習得でき、積みに使うブロック数が多くなるので速く積み上げられるが種6等よりも繋げられないパターンが多い\\n種6の特徴:消し方の種類が多いので難しいですが安定してrenがつなげやすく、途中でTSSを加えられるためゲームによっては非常に強力な攻撃になります",link:"",id:"acbe02a42704d282d8c35f0ab5fcb391488188ce"},{title:"6–3 Stacking(63積み)",tags:["63stacking","six-three","sixthree","6","3","積み","初心者","下級者","40","スプリント"],category:"term",content:"左側に幅6、右側に幅3で積む積み方\\n最適化をある程度習得していれば横2入力が少なくなるのでKPPが少なくなり、積みに使うIミノの割合を下げることができるのでより効率よくテトリスを撃つことができます\\n特にスプリント(40Line)で使われる積み方です\\nしかし端開け(90積み、09積み)と比べ積める幅が狭いので少し練習が必要になります",link:"",id:"b28ddc88b0bbab182034906177510057be37b223"},{title:"Freestyle(フリースタイル)",tags:["ziyou","フリー"],category:"term",content:"主に20TSDで使われる用語\\nLST等のループできるテンプレを使わずに20TSDを完走することを指します\\nLST等のテンプレを使わない分難易度は高いがプレイヤーのTspinスキルを見せることができます",link:"",id:"b6e37d62b1c693ec9ca5923f4d1c84c8af6d790b"},{title:"Topping out(トップアウト)",tags:["die","death","topout","toppingout","トップ","死","刺"],category:"term",content:"モダンテトリスの死亡判定は3つあり、どれか1つを満たすとゲームオーバーとなる\\n\\n1.ブロックアウト:出現したミノが盤面上にあるブロックと重なる\\n2:ロックアウト:致死Lineよりも上にブロックを置く\\n3.トップアウト:せり上がりなどにより地形の高さが40を超える\\n\\nTechminoの場合はブロックアウトの判定しか行っておらず、ロックアウトとトップアウトはない",link:"",id:"59960b31d11165c89d47787c2de99bc38b8264a5"},{title:"Buffer zone",tags:["above","super","invisible","disappear","猶予","盤面","上部"],category:"term",content:"通常、盤面は縦20段だが実際には21段目以上が存在し、21段目から40段前後までをBuffer Zoneという(日本ではあまり使われない)\\n通常は40段までで十分なのだがゲームによっては足りない場合がある\\n詳しくは「Vanish zone」参照",link:"",id:"130c8afeaebcef1c72c7c9571e6c690afc184d3d"},{title:"Vanish zone",tags:["disappear","gone","cut","die","猶予","盤面","上部","死","バグ","無限"],category:"term",content:"Buffer zoneよりも上の領域を指す\\n通常はVanish zoneに到達できないが開発者の設計ミスによって到達できるゲームがいくつかある\\nそしてこの領域に侵入すると一般的には強制終了になるがゲームによっては異なる振る舞いをする\\n例えばぷよぷよテトリスではBuffer zoneが43段必要だが十分に確保されていないためLine消去時に最上段のブロックをコピーし続けるバグがあります(具体的な活用方法は地球儀ボタンのリンクをご覧ください)\\nまたJstrisのVanish zoneは22段以上の領域となっており、21段よりも上のブロックは消滅します",link:"https://youtu.be/z4WtWISkrdU",id:"1451f8bbada0acd2857a81be0e7c9f5471da89b4"},{title:"Falling speed(落下速度)",tags:["fallingspeed","gravity","落下","重力","20","g"],category:"term",content:"1フレーム(通常は60fps)に何段自由落下するかを計る指標\\n単位は「G」\\nGは通常時には大きすぎる単位であり、例えばマラソンのLv.1は1/60Gの落下速度で1GはLv.13相当になります\\nモダンテトリスの最高落下速度は20Gでこれは盤面の高さが20段なことから来ています\\nしかし実際には20Gと表記されていても無限なことが多く、盤面の高さが21段以上でも出現した瞬間にミノが一番下に落ちるようになっている\\n詳しくは「20G」の項目参照\\nTechminoでの落下速度は1ブロック落ちるのに必要なフレーム数で表現されます\\n例えば落下速度60の場合、1秒間に1マス下に落ちます(ゲームがデフォルト60fpsで動作しているため)",link:"",id:"6d8efed7f848a629b55b0b29f5c9968b0f925ad4"},{title:"20G",tags:["gravity","instant","瞬間","落下","重力","20","g"],category:"term",content:"モダンテトリスの最高落下速度\\n20Gモードでは実際に20Gで動いているわけでなく、ミノが一番下に出現するようになっている\\nこれによってミノが段差や壁を登れないことがある\\n単位「G」は「Falling speed(落下速度)」の項目参照",link:"",id:"333426ad906acc63675dfe7cbe18d8e8e4a5a946"},{title:"Lockdown Delay(設置時間)",tags:["lockdelay","lockdowndelay","lockdowntimer","設置","ロック","接着","ディレイ","遅延","時間"],category:"term",content:"ミノが地面に接してから完全に設置するまでの時間のこと\\nモダンテトリスでは設置時間が比較的緩く、さらに移動や回転によって設置時間をリセットできることが多い\\nほとんどのゲームでは最大15回まで設置時間をリセットできるようになっているが、この回数も操作ミノがあった最低高度を更新することでリセットすることができる\\nこれを使うことで時間稼ぎができる\\nクラッシクテトリスでは設置時間が厳しいことが多々あります",link:"",id:"c4f509e16a53c734429ba87ceedb780e2049b895"},{title:"ARE(出現時間)",tags:["spawn","appearance","delay","are","出現","スポーン","遅延","ディレイ","時間"],category:"term",content:"ミノが設置してから次の操作ミノが出現するまでの時間のこと",link:"",id:"032d579b840c30205575f1aca46ca1d9a8e5b4ee"},{title:"Line ARE(Line消去時間)",tags:["appearance","delay","line","ライン","are","消去","遅延","ディレイ","時間"],category:"term",content:"Lineを消去するのにかかる時間",link:"",id:"864a47d70caa0cbb7779cc4fd62ac8e3ba3d6579"},{title:"Death ARE(死後硬直時間)",tags:["die","delay","dd","死","硬直","are","出現","スポーン","残機","復活","遅延","ディレイ","時間"],category:"term",content:"残機制などが有効になっている時に死亡してから復活するまでの時間\\nTechminoの場合はブロックアウトで死亡した時、次のミノの出現時間に死後硬直時間が加算されます\\nまたIHSやIRSなどを使うことによってブロックアウトを回避できる場合があります\\n\\nこのシステムはNOT_A_ROBOT氏によるアイデアです",link:"",id:"72179608811dccdf6be8b38d0c12a13fdd342f3e"},{title:"Finesse(最適化)",tags:["finesse","最適化","効率","操作","初心者","下級者","上達","練習"],category:"term",content:"ミスなく最低限の操作で目的の場所にミノを移動させる技術\\n速さが上がり、ミスも減ります\\nJstrisの「restart on finesse error」やTechminoの最適化失敗音を有効にすることで練習できます\\n厳密にはTechminoの最適化判定は「理論上の最小入力数」ではなく、「ソフトドロップを必要としない位置の時、一定回数以下の入力かどうか」で判定しています\\nそのためソフトドロップが必要なspinなどの時は最適化の判定を行っていません\\nまたTechminoの最適化率は一定回数以下の場合100%、一定回数より入力が1多い場合50%、入力が2多い場合25%、入力が3以上多い場合0%とされています\\nまた0Gと20Gで最適化の算出方法を変えていないため落下速度が速い時は不正確なことに注意してください",link:"",id:"e50e3567a81e2fae61f08dc025de8ce31529fa00"},{title:"‘Doing Research’",tags:["scientificresearch","研究","上達","練習","科研"],category:"term",content:"「科研」という中国のテトリスコミュニティで使われる言葉\\n落下速度の低い1人用モードで技術やテンプレを研究・練習することを言います(日本でもこの練習はありますがその行為のみを指す単語は存在しません)",link:"",id:"9278144ec951e80b757cec593b1d8c7fcd4c1e25"},{title:"Keymapping(キー配置)",tags:["feel","キー","key","操作"],category:"term",content:"ここではキーボードでのキーコンフィグについて言及します\\nキーコンフィグの原則\\n1.同時に押される可能性がある複数のキーを1本の指に割り当てないでください\\n基本的には回転3種類(右、左、180°)と左右移動(右、左)はそれぞれ同時に押されることはありません\\n2.既に他のゲームで小指を鍛えていない限り小指を使わないキー配置にしてください\\n基本的には人差し指と中指を中心に組み立てるといいでしょう\\n3.人によって最適なキー配置は違うので使っている人を理由に変える必要はないです\\n\\n最低限の原則を守っていればキー配置による優劣は非常に薄いと考えられます",link:"",id:"0a7f368c96fef419be637b9c6ab6da06aab5adbc"},{title:"Handling(ハンドリング)",tags:["feel","handling","チューニング","das","arr","ハンドリング","操作"],category:"term",content:"操作に悪影響を与える主な要因を以下に挙げます\\n1.デバイスの設定や状態による遅延\\nゲームを再起動したりデバイスを変えたりすることで改善されます\\n2.ゲームが重い\\n機器の性能不足やプログラムコードが不安定、設計の不具合が原因です\\nエフェクト設定などを軽くすることで緩和される場合があります\\n3.意図的に操作性を悪くされている\\n適応するしかありません\\n4.DASやARR等のチューニング設定が合っていない\\n適当な値に変更しましょう\\n5.姿勢が悪い\\n腰痛めますよ?\\n6.姿勢やキー配置、チューニングを変えて慣れていない\\n慣れるの諦めるか根気強く頑張りましょう\\n7.疲労\\n早急に休んでください",link:"",id:"46fb746364907d6eaac6a1399a6ae5199f90eb6f"},{title:"DAS (横溜め)(簡易な説明)",tags:["das","arr","delayedautoshift","autorepeatrate","ダス","だす","ため","溜め","横"],category:"term",content:"キーボードの「O」を長押しすると長いOの文字列ができます\\nこのときOがどのように出現したかというと「O->(長い溜め時間)->O->(僅かな溜め時間)->O->(僅かな溜め時間)->...」のようになります\\nこの長い溜め時間のことをDAS(delay auto shift、別名:横溜め)、僅かな溜め時間のことをARR(auto repeat rate)と呼びます",link:"",id:"6237720d40b10ea8fd1c5cb959db17d238b4e501"},{title:"DAS & ARR",tags:["das","arr","delayedautoshift","autorepeatrate","ダス","だす","ため","溜め","横"],category:"term",content:"Delay Auto Shiftの略、日本だと「横溜め」とも言われる\\n左右入力をした時に横に移動する仕組みのこと\\nまた長時間左右入力した時に最初の横に1つズレる移動から次の移動までの時間のこと\\n\\nARRはAuto Repeat Rateの略\\n左右入力を長時間すると連続して横に動き始めるがその時の移動周期のこと\\nゲームによってはDASやARRをフレームで計算しています\\n60fpsで動作するゲームの場合、f(フレーム)×16.7でms(ミリ秒)に換算できます",link:"",id:"d79af5ba7f2a4e057d7aeec842d9d8ee8e737c9d"},{title:"DAS tuning(DASチューニング)",tags:["das","tuning","チューニング","操作"],category:"term",content:"より速くプレイしたい人はDASを4~6f(67~100ms)、ARRを0f(0ms)にすることをおすすめします(ARR:0というのはDASより長く入力を続けた瞬間、端にミノが移動する設定です)\\n理想の操作方法としては単時間入力と長時間入力を確実にコントロールできるようにし、ARRを0にDASやそれ以外の設定は可能な限り低くすることです",link:"",id:"323c1b9c140407542738b97fd8e10f3564c39397"},{title:"DAS cut(DASカット)",tags:["dascut","dcd","カット"],category:"term",content:"*Techmino用語*通常、ミノが出現する前にDAS時間以上入力をしているとミノが出現した瞬間に動き出します\\nDASカットはこのような現象を減らすためにDAS時間以上入力していても出現時にDASカット分減算する機能です\\n他のゲームにも似たようなものがありますが恐らく異なるでしょう",link:"",id:"8b5b2ebc0da01b3cd80a4d798703d721c14bf30d"},{title:"Auto-lock cut(自動設置カット)",tags:["autolockcut","mdcut","自動","カット"],category:"term",content:"ミノが自由落下により設置された時にハードドロップを入力してしまうことで暴発するという事故を防ぐ機能です\\n自由落下によって設置した場合、自動設置カット時間の間ハードドロップが無効化されます\\n他のゲームにも似たようなものがありますが恐らく異なるでしょう",link:"",id:"a5d401a9ffa0de7bf066b91005d40cbc6a79d2fc"},{title:"SDF",tags:["softdropfactor","ソフトドロップ"],category:"term",content:"Soft Drop Factor\\n\\nソフトドロップの速さを自由落下の速さの倍数で表現する方法\\nガイドラインテトリスではSDF20、つまりソフトドロップの速さは自由落下の速さの20倍と定められている\\nなおTechminoではSDFを使用してません",link:"",id:"e530adfdb37a1128fe34adb56f1b60622fa67381"},{title:"形と名前",tags:["mino","ミノ","みの"],category:"term",content:"Techminoで使われる全ブロックとその名前のリストです:\\nTetrominos:\\nZ:`CHAR.mino.Z`, S:`CHAR.mino.S`, J:`CHAR.mino.J`, L:`CHAR.mino.L`, T:`CHAR.mino.T`, O:`CHAR.mino.O`, I:`CHAR.mino.I`;\\n\\nPentominos:\\nZ5:`CHAR.mino.Z5`, S5:`CHAR.mino.S5`, P:`CHAR.mino.P`, Q:`CHAR.mino.Q`, F:`CHAR.mino.F`, E:`CHAR.mino.E`, T5:`CHAR.mino.T5`, U:`CHAR.mino.U`, V:`CHAR.mino.V`, W:`CHAR.mino.W`, X:`CHAR.mino.X`, J5:`CHAR.mino.J5`, L5:`CHAR.mino.L5`, R:`CHAR.mino.R`, Y:`CHAR.mino.Y`, N:`CHAR.mino.N`, H:`CHAR.mino.H`, I5:`CHAR.mino.I5`;\\n\\nTriminos, Domino, and Mino:\\nI3:`CHAR.mino.I3`, C:`CHAR.mino.C`, I2:`CHAR.mino.I2`, O1:`CHAR.mino.O1.",link:"",id:"99622ced67e536423468cc866d74f22551c91f14"},{title:"7種1巡",tags:["bag","7bag","randomgenerator","7","種","1","巡","生成","出現","法","則"],category:"term",content:"別名:7-bag、正式名称:Random Generator\\n公式テトリスがミノを生成するのに使うアルゴリズムのこと\\nテトリスには通常7種類のミノがあるが全種類が同じ数出現することが保証されている\\n例:ZSJLOIT OJSIZLT TOILSZJ...",link:"",id:"aa006bc1bae0390132268713ec7aa91e6b923ddd"},{title:"His generator",tags:["history","hisgenerator","tgm","生成","出現","法","則"],category:"term",content:"History generator\\nTGMに使われるミノを生成するときの法則\\n毎回ランダムに7種類の中から選択されるが、もし選択されたものが数個前と同じな場合はまたランダムに7種類の中から選択され最終的に別のミノが選択されるか再選択回数が限界に達して同じミノが選択される\\n例えば「his 4 roll 6」と設定されているジェネレータの場合、選択したミノが前に使った4つのミノの中にある場合、最大6回まで違うミノが出るまで再選択する\\n他に「his 4 roll 6 pool 35」のようにさらにランダム性を減らしたものもある\\nTechminoではrollの値はネクストの長さの半分、小数点以下切り上げになっています",link:"",id:"0b1eb1158396d0061c6b94476c6d87ee72e8b384"},{title:"HisPool generator",tags:["hisPool","history","pool","tgm","生成","出現","法","則"],category:"term",content:"History Pool generator\\nHis generatorを基に「Pool」という機能を導入した生成法則\\nミノを選択する場合にPoolという袋の中から選択されている\\nPoolの中にあるミノは選択された回数に基づいて選択される確率が変動しており、出現頻度が低いものほど確率が高くなっている\\nこの仕組みによってランダム性が大きく減らされ、同じようなミノばかり来るということはなくなった",link:"",id:"1579c44475d98d4fc1e131ddc7fb4144a14f6d84"},{title:"bagES generator",tags:["bages","easy","start","生成","出現","法","則"],category:"term",content:"*Techmino用語*\\nBag Easy-Start\\n7種1巡を更に改良した生成法則\\n最初に置きづらいミノ(S/Z/O/S5/Z5/F/E/W/X/N/H)が選択されません",link:"",id:"62a9f13c56314bb19e8c762b0d98064e7e1fd01d"},{title:"Reverb generator",tags:["reverb","生成","出現","法","則"],category:"term",content:"*Techmino用語*\\n7種1巡から派生した生成法則\\n7種1巡を基にしてそれぞれのミノが数回連続して出ようとします\\n特定のミノが頻繫に連続して出ようとすると連続して出る確率が下がり、逆にあまり連続して出ないミノは連続して出るように確率が上げられます",link:"",id:"27828cfe25f21b50d405a8ae6e6c77458c0ac953"},{title:"C2 Generator",tags:["cultris2generator","cultrisiigenerator","c2generator","カルトリス","生成","出現","法","則"],category:"term",content:"Cultris IIで使われる生成法則\\nミノに重みを付けて計算しています\\n初期は全ミノの重みは0に設定されています\\nそしてミノを選択する時、全てのミノそれぞれに次のような処理を施します:\\n現在の重みを半分にし、そこに0~1の間で生成された乱数を加算する((重み/2)+(0~1の乱数))\\n\\nそして算出された値を新たな重みとし、最も重みが大きいミノを選択します\\nまた選択されたミノの重みは3.5で割られ、それを新たな重みとします\\nつまり選択されたミノの新しい重みは((元の重み/2)+(0~1の乱数))/3.5、選択されなかったミノの新しい重みは(元の重み/2)+(0~1の乱数)となります",link:"",id:"11aed6c53ccae54ddd4a72fffda1e036fd9fbc7e"},{title:"Hypertapping(ハイパータッピング)",tags:["hypertapping","ハイパー","コントローラー","操作"],category:"term",content:"指をコントローラー上で振動させることでARRよりも速い周期で横移動させる技術\\nDASが遅いクラッシクテトリスでよく使われる\\nモダンテトリスのほとんどはDASが十分に短いためこの技術は不要です",link:"",id:"9ab46b9602ef4876d2d3c4135e6d55543cdffcd2"},{title:"Rolling(ローリング)",tags:["rolling","ローリング","ピアノ","コントローラー","操作"],category:"term",content:"DASやARRが遅いクラッシクテトリスの高重力(1G以上)下で安定してプレイするための操作方法\\n片方の手とコントローラーを固定し、もう片方の手でコントローラーの背面を叩くこと高速入力を実現している\\nこの操作方法はハイパータッピングよりも速く、さらに少ない力で行うことができます\\nこの操作方法はCheez-fishが最初に発見し、理論上1fに1回操作できると言われています",link:"",id:"7447bee82c2ebb9d75a06834d0f5fa82af1b99ca"},{title:"Passthrough(貫通)",tags:["pingthrough","ピンスルー","貫通","すり抜け"],category:"term",content:"双方の火力が互いに相殺されず相手の火力ゲージに火力が到達すること\\nまたインターネットのラグにより貫通が発生することを「pingthrough」と言う",link:"",id:"97d0af68b1bdbc346e8a149678b92cbb7469f19f"},{title:"Tetris OL attack",tags:["top","tetrisonlineattack","テトオン","toj","toz","オンライン","テトリス","火力","攻撃","計算"],category:"term",content:"テトリスオンラインの火力計算\\nSingle,double,triple,tetrisの火力はそれぞれ0,1,2,4となっており、TSS,TSD,TSTの場合は2,4,6となる\\nまたTspin mini判定になると火力が半分になります\\nrenの火力は1ren目から+0,+1,+1,+2,+2,+3,+3,+4,+4,+5,+5,+5...と上限5まで上昇し、元の火力に加算されます\\nBtBの火力は+1、ただしTSTの場合は+2で元の火力に加算されます\\nパーフェクトクリアの火力は+6で元の火力に加算されます\\nただしパーフェクトクリア分の火力は相殺が当たらず、直接相手に送られます",link:"",id:"bd2933b1c8eb8beeb91305a7a8f61a07c1f5ad86"},{title:"Techmino attack",tags:["techminoattack","Techmino","てくみの","テクミノ","てっくみの","テックミノ","火力","攻撃","計算"],category:"term",content:"少し複雑なためメイン画面の右下にある「?」を参照",link:"",id:"91ddf25ab71c366ce480fc8ab618df3d85debcc9"},{title:"Stacking(積み)",tags:["stacking","積み","つみ","置く"],category:"term",content:"ミノを置いて行くこと\\n必須技術の1つ",link:"",id:"210b1e4de5cb0e2cbeab5d39429ae822f94ec2e8"},{title:"Rotation buttons(左右回転)",tags:["doublerotation","回転","左","右","2"],category:"term",content:"左右回転両方を使うことで3回転操作がなくなり、入力数が減少します\\n最適化は左右回転のみを使うことを前提に設計されています",link:"",id:"723cb9c2cefa08da4c6288f1554fd591b8a3e981"},{title:"Rotation buttons (左右180°回転)",tags:["triplerotation","回転","左","右","180","3"],category:"term",content:"左右,180°回転の全てを使えばどんな回転方向でも1回の入力で済みます\\nしかし全てのゲームに180°回転があるわけでなく、この技術を習得しても左右回転を習得した時ほどの上達はないでしょう\\n最適化という点では速さを極端に求めない限り必要ありません(ただし180°の回転入れは覚える必要があります)",link:"",id:"4b9a4bce9c37f9a3a454f189c8e4838a480ec6bd"},{title:"ザンギ",tags:["操作","ザンギ","ざんぎ","zangi"],category:"term",content:"左右移動->ソニックドロップ->もう一方の左右移動と行われる操作のこと\\n例えば左ザンギの場合、左端へ一瞬で移動->ソニックドロップ->右へ壁に衝突するまで移動 となる",link:"",id:"31a18dc0e9d6d131fd39f02b0b642e8c32424757"},{title:"Drought(ドラウト)",tags:["drought","ドラウト","干ばつ","連続"],category:"term",content:"欲しいミノが全く来ない状況のこと\\nクラッシクテトリスでよく起こることで地形やプレイが乱れる原因になります\\nモダンテトリスではランダムではなく、ある程度生成されるミノが制御されているのでほとんど起こらず、最大でも13ミノ引けば欲しいミノが1つは出現します",link:"",id:"c132569d13682aef326885b940b503d59c76e98a"},{title:"Bone block(骨ブロック)",tags:["bone","tgm","骨","ボーン","ブロック","スキン"],category:"term",content:"初期のテトリスで使われているミノスキン\\n昔のコンピュータはコマンドラインインターフェイス(WindowsのcmdやMacのterminalなど)を主に使っていたのでテトリスのミノは「[]」の集合で表現されていました\\nこれが骨のように見えるので骨ブロックと呼ばれています\\n\\nTechminoでは骨ブロックを「全てのミノが使用できるミノスキン」と定義されています\\nミノスキンが異なる場合、骨ブロックのスタイルも異なる可能性があります",link:"",id:"7ab2e8eef5d2257d9a5ec3d9dfcae72b89a5ae7c"},{title:"Semi-invisible(セミインビジブル)",tags:["half","invisible","semi","セミ","半","インビジブル","透明"],category:"term",content:"時間が経過すると設置されたミノが透明になるルール\\nこの透明になるまでの時間は明確ではないので「数秒後に消える」と表現しても問題ない",link:"",id:"494bab8fad0a90fbf1dc6d8843843e07f945014d"},{title:"Invisible(インビジブル)",tags:["invisible","透明","インビジブル"],category:"term",content:"瞬時に設置したミノが透明になるルール\\n消えるアニメーションがあるインビジブルルールのことを指すことがあるが、Techminoではそのようなルールは簡単になりすぎると判断し、アニメーションなしのインビジブルルールを「Sudden Invisible」と読んでいます",link:"",id:"8e0158e3951e4788f501f5ff57e7d076008a7b00"},{title:"MPH mode",tags:["mph"],category:"term",content:"生成法則なし(ランダム生成)、ネクストなし、ホールドなし\\nかなりの反応速度が要求される",link:"",id:"d58b1888eea0850399c8fd1599ca980ae84f22dd"},{title:"Input delay(入力遅延)",tags:["input","delay","入力","遅延","硬直","ディレイ","時間"],category:"term",content:"どんなデバイスでも入力してからゲームに反映されるまでに遅延があります(通常、数ms~数十ms)\\n入力遅延が大きすぎると操作に違和感を覚えます\\nこの遅延は使用するハードウェアやソフトウェアの性能が主な原因であり、機器のパフォーマンスモードを有効(または省電力モードを無効)にしたり、モニターのゲーミングモードを有効にすると軽減されるかもしれません",link:"",id:"211d5c4499361cc1310a22c40d675f90a6ff13a0"},{title:"Secret Grade(裏GM)",tags:["larger","than","裏","gm","ジグザグ"],category:"term",content:"TGMシリーズに登場するイースターエッグモード\\n19段使って「>」の形に穴を作ることでクリアとなる\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"1e1b169684a9570ad29f7d5fb52d0faef4306e72"},{title:"Cold Clear",tags:["cc","coldclear","ai","bot","コールド"],category:"term",content:"テトリスのbot\\n元々はMinus Kelvin氏がぷよぷよテトリス用に開発したbotだがTechminoではAllspinとTRSに対応できるよう改良されている",link:"",id:"990c511aa61eac6e04105edca1735021f986f0e2"},{title:"ZZZbot",tags:["ai","bot","zzztoj","misamino"],category:"term",content:"テトリスのbot\\n中国のテトリスプレイヤー、奏之章 (Zòu Zhī Zhāng)氏が開発し、多くのゲームで動作する",link:"",id:"812877aa04577bb0767f153f62550039dbfd9b51"},{title:"Zetris",tags:["ai","bot","zetris","misamino"],category:"term",content:"テトリスのbot\\nmat氏がぷよぷよテトリス用に開発したbot\\nmisaminoを元に開発された\\n凝視はしてないが受けた後に一定段以下になる攻撃は外すような仕様になっている",link:"",id:"cc72b3c988608a786278634124a67a1886dcd2b1"},{title:"ほいこ",tags:["ai","bot","hoiko","howyiko","ほゐこ"],category:"term",content:"テトリスのbot\\nうかん氏がぷよぷよテトリス用に開発したbot\\n相手から送られる火力を見ており、直列になる確率と待ち時間から相殺外しを判断している",link:"",id:"9718855de3396e159778bfca45f51da47d6bd6da"},{title:"wataame",tags:["ai","bot","わたあめ","watame"],category:"term",content:"テトリスのbot\\n雨安氏がぷよぷよテトリス用に開発したbot\\n多様なモードを搭載している",link:"",id:"445012f5aa4527fae7038257b224397ec874eed1"},{title:"Openers(開幕テンプレ)",tags:["setup","openers","開幕","テンプレ"],category:"setup",content:"ゲーム開始時に組むテンプレのこと\\n中盤でも作れるものがあるが完全に同じになるとは限らない\\n強い開幕テンプレは基本以下の点を満たしている\\n1.強い攻撃を持ち、積みに使っているTの割合が低い\\n2.必要なソフトドロップが少ない\\n3.多くのミノ順で組める\\n4.中盤へ移行しやすく、分岐が少ない\\nほとんどの開幕テンプレは通常7種1巡を利用して作られているために安定して組める",link:"",id:"d69b3b4545e814a8a1df17ba7442947c77f537e4"},{title:"DT Cannon(DT砲)",tags:["dtcannon","doubletriplecannon","dt","砲"],category:"setup",content:"Double-Triple 砲\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=dt",id:"cedc9e6ea84c71f2f7d828d0c2aae5581e65cab7"},{title:"DTパフェ",tags:["dtcannon","doubletriplecannon","パフェ","パーフェクト","dt","砲"],category:"setup",content:"DT砲の後にパフェを取る派生のこと\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=double_triple_cannon_opener",id:"7826dfa7c56f5ad74e4b0123a448b28a0da23487"},{title:"BT砲",tags:["btcannon","betacannon","砲"],category:"setup",content:"β砲, Beta砲\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=bt_cannon",id:"d8b9e8effcd0ea9c8440705b6902abcff9261775"},{title:"BTパフェ",tags:["btcannon","betacannon","ループ","5","パフェ"],category:"setup",content:"BT砲の後にパフェを取る派生のこと\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=bt_cannon",id:"2b5e1b305ef8a160791b11ed9deee4ce4bdc3f79"},{title:"TKI 3 Perfect Clear(DDパフェ)",tags:["ddpc","tki3perfectclear","d","パフェ","tsd","tki"],category:"setup",content:"開幕TSDからもう一度TSDを撃ち、パフェを取るテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"de5ec7511c2104bb5288b4fefb14f96a8027bee8"},{title:"MKO積み",tags:["mko","むこうみず"],category:"setup",content:"派生を含めれば大体のことはできる開幕テンプレ\\nHarddropのwikiを載せるがmko全体の内、1割も情報が書かれていない\\n使い方がかなり重要な開幕テンプレなので使う場合は積極的に情報収集することをおすすめする",link:"https://harddrop.com/wiki?search=MKO_Stacking",id:"bda30a7753e93928e38a5e48e70100ee2cd56af5"},{title:"QT砲",tags:["qtcannon","砲"],category:"setup",content:"DT砲より安定してTSDとTSTを撃てるように作られた開幕テンプレ\\nただし下穴が端にあると二巡目が組めない\\nTD派生がしやすい",link:"https://tetrisopener.wicurio.com/index.php?QT%E7%A0%B2",id:"3de3372167a377ead69b0780ea5a918b5bd32325"},{title:"Mini-Triple(MT)",tags:["mt","minitriple","ミニ","トリプル","ts"],category:"setup",content:"TSMからTSTを撃つ形",link:"https://knewjade.github.io/fumen-for-mobile/#?d=v115@tgB8IeA8DeD8AeH8BeH8BeG8CeE8JeAgWJAteEfEXU?b9ARAAAAvhG1bfdmfdrf1vBAAAdrBAAAtgB8IeA8DeD8AeG?8CeG8BeAAAeF8AeB8AeD8JeAAPJAteEfEXUb9ASAAAAvhF1?bfdmf1qfNqBAAAdrB",id:"2f139c99f2863c049a75827dbe04214f683d672d"},{title:"Trinity(トリニティ)",tags:["trinity","トリニティ","tsd"],category:"setup",content:"TSD3回かTSM->TST->TSDを撃つテンプレ",link:"https://harddrop.com/wiki?search=trinity",id:"44c6aa6ec48f5e82469829ca27e72f911bec10bc"},{title:"Wolfmoon Cannon",tags:["wolfmooncannon","砲"],category:"setup",content:"形が特殊な開幕テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"17ca3a1f4b46085a67798b5b2d651f04015fdf10"},{title:"Sewer(TZT砲)",tags:["sewer"],category:"setup",content:"形が特殊な開幕テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=sewer",id:"f974ed3f0712d9d4e0cf4674de8214c41a78a590"},{title:"TKI",tags:["tki-3","tki3","tsd","c","td"],category:"setup",content:"開幕TSD、またはTDの形をしたTKIという開幕テンプレを指す(日本では後者の方が多い)\\nここでは後者のリンクを置いておく\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=C-Spin",id:"3c313d703e4a8340db43e4e702184f92dffba465"},{title:"God Spin",tags:["godspin","神","ゴッド"],category:"setup",content:"派手な開幕テンプレ[しかし実際に使うのは難しい]\\nWindkey氏考案\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=godspin",id:"3cd8c7d5f3275348741b07f56c3a9df69cf2a625"},{title:"AlbatrossSP(アルバトロスSP)",tags:["albatross","アルバトロス","アルバ","sp"],category:"setup",content:"TSD->TST->TSD->パフェを撃つ開幕テンプレ\\nほとんどのTミノをTspinに使う、派手で素早いテンプレです\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"28426d77b9b2d3681590fd8543415f4c103df3e3"},{title:"Pelican(無名砲)",tags:["うーみん","ウーミン","無名","むめい"],category:"setup",content:"日本では無名砲(3文字で「うーみん」と読む)と呼ばれる\\nアルバトロスSPに似た流れを持つ開幕テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Pelican",id:"a0ffb2601adf5127b35fe5d8992cc78a55861838"},{title:"Perfect Clear Opener(パフェ積み)",tags:["7piecepuzzle","パフェ","積み"],category:"setup",content:"7ミノ置いた後、パフェを取れる確率が最も高い形\\n通常はパフェ率61.2%だがIミノを置かず残り4ミノからパフェを見抜くことで84.6%までパフェ率が上昇する\\nTechminoのパフェトレーニングでジグザグの形が出たらこのテンプレの形です\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"053e9a88a14c6916bdda0d4a6d89aa489f1e029d"},{title:"Grace System(グレースシステム)",tags:["liuqiaoban","gracesystem","1stpc","グレース","パフェ"],category:"setup",content:"6ミノ置いた後、パフェが取れる確率が最も高い形\\nパフェ率88.57%\\nパフェチャレンジの4×4の形が出たらこのテンプレの形です",link:"https://four.lol/perfect-clears/grace-system",id:"5723b8d6eb11a1b334300616ac602b468a1e5646"},{title:"DPC",tags:["DPC","3","1"],category:"setup",content:"2連パフェや8段パフェ(TD系テンプレのパフェ、SDパフェ等)を取った後に余った1ミノとその後の2巡を使ってDパフェ、もしくはDDパフェを取るテンプレ\\nまたは開幕TSDのパフェ派生のこと\\n\\n前者でDパフェを取る場合、ほぼ100%パフェが取れる",link:"https://tetristemplate.info/dpc/",id:"2db8d886781e45cfcee1ccd39674af938368e580"},{title:"Gamushiro Stacking(ガムシロ積み)",tags:["gamushiro","ガムシロ","td"],category:"setup",content:"TDパフェ系統のテンプレで最初に作られた開幕TDテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"7efbf694f00c69a173d3f54d8eca154b336f5517"},{title:"Mid-game Setups(中盤テンプレ)",tags:["midgamesetups","中盤"],category:"pattern",content:"中盤で使われるテンプレのこと\\n中には開幕テンプレとして使用されるものがある",link:"",id:"4d7b549aafe26a449e2b8022476aaf8848e32879"},{title:"TD",tags:["cspin","tki","td"],category:"pattern",content:"TST->TSDと撃てる形\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Triple Double_Attack_Setups",id:"06a82f4a956e1f94fa0c7430d6b7247f1e4cd9ca"},{title:"STSD",tags:["stsd"],category:"pattern",content:"Super T-Spin Double\\n2回TSDを撃てる形\\nしかし盤面の底に作った場合、相手からの下穴により1/10の確率で最初のTSDが撃てなくなる\\nこの確率は100%と言う人もいる\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=stsd",id:"6e5f658dc6a43206e6c19edc413a0b306ed60b22"},{title:"STMB Cave(STMBケイブ)",tags:["stmb","ケイブ","ドネイト"],category:"pattern",content:"幅3がある時にS(Z)を壁に引っ掛けてTSDドネイトを作るテンプレ\\nSTMBはテトリスDS時代のプレイヤーの名前\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=stmb_cave",id:"8f963631c25795afa82a8463eb49d8e69bfe1694"},{title:"Fractal(ダブルダガー)",tags:["shuangrenjian","fractal","spider","ダブル","2","ダガー","フラクタル","ダブダ"],category:"pattern",content:"TSDの上にTSDが乗った形\\nS(Z)が引っ掛かってTSDが2つできてる場合はSTMBケイブとなり、引っ掛けておらず1つの屋根で2回TSDを撃てる場合はダブルダガーとなる\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Fractal",id:"a1d1b007ea622f66dc039b3d15fb0a6cb1605c21"},{title:"LST stacking(LST積み)",tags:["lst","積み"],category:"pattern",content:"半永久的にTSDとテトリスをし続ける積み方",link:"https://four.lol/stacking/lst",id:"3586c5870b5b47acd10dbf3b283095107b602b47"},{title:"Hamburger(ハンバーガー)",tags:["hamburger","ハンバーグ","ハンバーガー"],category:"pattern",content:"S(Z)でTSSをするドネイトテンプレ\\n半永久的にTSSとテトリスができる\\n当初はSを使った場合をハンバーガー、Zを使った場合をハンバーグと言っていたが廃れた\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=hamburger",id:"f078a94fec15dab371d5235998f57be7e1a9183a"},{title:"Imperial Cross(インペリアルクロス)",tags:["imperialcross","インペリ"],category:"pattern",content:"十字上の穴に屋根を付けて2回TSDをする形\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=imperial_cross",id:"29157abc349d599865ddaca4db1350299aab317e"},{title:"Kaidan(階段ドネイト)",tags:["jieti","kaidan","stairs","階段"],category:"pattern",content:"段々になっている地形にS(Z)を置くことでTSD地形を作るドネイトテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=kaidan",id:"9ff425533e9b19c5aa5ab1c7ade5b05a19a6e914"},{title:"Shachiku Train(社畜トレイン)",tags:["shachikutrain","shechu","社畜","トレイン"],category:"pattern",content:"2回TSDを撃つテンプレ\\nテンプレ名は制作者が満員電車で思い付いたことに由来する\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"ff36c5a882fd03017ed42fdcc2069f4e4be2cac3"},{title:"Cut Copy",tags:["qianniao","cutcopy","千鳥","カット"],category:"pattern",content:"Tspin地形がある時にさらにTspinできるような地形を作ること\\n千鳥格子はこの技術を使った中盤テンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=Cut_copy",id:"44c082ce08afeff03790181a113e952962270cce"},{title:"King Crimson(キングクリムゾン)",tags:["kingcrimson","キンクリ","キング","jojo","ジョジョ"],category:"pattern",content:"STSDの上にTSTを足したテンプレ\\n詳しい情報は、地球儀ボタンをクリックしてHarddrop wikiにあります!",link:"https://harddrop.com/wiki?search=King_Crimson",id:"dc20f54cbaf3c6b0eb0f430680495b34a699be7c"},{title:"連パフェ(1/3)",tags:["pcloop","パフェ","ループ","連"],category:"pattern",content:"テトリス堂にて1~5回目と7回目のパフェについて詳しく知れます\\n7回目のパフェがキレイに終わると丁度70ミノ、つまり10巡終わったことになりゲーム開始時と同じ状態になります",link:"https://shiwehi.com/tetris/template/consecutivepc.php",id:"04afeaf59cc711c2281c7cae8ed12ad31bb25897"},{title:"連パフェ(2/3)",tags:["pcloop","パフェ","ループ","連"],category:"pattern",content:"four.lolに1~7回目のパフェについて詳しく知れます",link:"https://four.lol/perfect-clears/5th",id:"58a9e9b70e64aef8087c4e26f33820dcd05b2e1f"},{title:"連パフェ(3/3)",tags:["pcloop","パフェ","ループ","連"],category:"pattern",content:"ナイテン(NitenTeria)によって作成された連パフェについての情報がまとめられているドキュメント\\nただし情報量の多さ等から自分である程度吟味する必要がある",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"088838a86728371647247dbe6613f4f14f768ef6"},{title:"Console(コンソール)",tags:["cmd","commamd","minglinghang","kongzhitai","terminal","コンソール","ターミナル","コンソール","console"],category:"command",content:"Techminoにはデバッグや高度な機能を実行するためのコンソールがあります\\nコンソールにはメイン画面のTechminoのロゴを連打するかメイン画面で「C」を連打することで移動できます\\nコンソールの使用は自己責任です",link:"",id:"26c4d964b179ac687cdccf369e93e9011078eb20"},{title:"Reset setting",tags:["reset","setting","リセット","設定"],category:"command",content:"コンソールに「rm conf/setting」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n設定をリセットします",link:"",id:"8a6b43bb26bf99c9bad1f05cd83ed45a1f6b998f"},{title:"Reset statistics",tags:["reset","statistic","data","リセット","統計","データ"],category:"command",content:"コンソールに「rm conf/data」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n統計をリセットします",link:"",id:"81893334c9e3e29e0965cb352bbbd5ac3af42962"},{title:"Reset unlock",tags:["reset","unlock","リセット","未開封"],category:"command",content:"コンソールに「rm conf/unlock」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n1人用モードのランクをリセットします",link:"",id:"33cdac7adaca836660b7c4f0d7caba89a1196e66"},{title:"Reset records",tags:["reset","record","リセット","レコード","記録"],category:"command",content:"コンソールに「rm -s record」と入力し、Enterもしくはreturnを押す\\nそしてTechminoを再起動すると有効になります\\n記録をリセットします",link:"",id:"357dff0ef2aa18233d411ce73d1dcb98a7c6f089"},{title:"Reset key",tags:["reset","virtualkey","リセット","キー","仮想"],category:"command",content:"コンソールに「rm conf/[keyFile]」(キーボード:key、仮想キーボード:virtualkey、仮想キーボード設定を保存:vkSave1(2))と入力し、Enterもしくはreturnを押す\\nそしてキーボードと仮想キーボードの場合は再起動すると有効になります\\n仮想キーボード設定保存の場合はEnterもしくはreturnを押した時に1つのファイルを出力します",link:"",id:"985d4b939e2e49a0aaf0228de0ca6a969684084c"},{title:"Delete replays",tags:["delete","recording","削除","消去","リセット","デリート","リプレイ"],category:"command",content:"コンソールに「rm -s replay」と入力し、Enterもしくはreturnを押すと即座に実行されます\\nリプレイデータを消去します",link:"",id:"bab349d70bb116a33e63aeddefd1beee6cb3b572"},{title:"Delete cache",tags:["delete","cache","消去","削除","リセット","デリート","キャッシュ"],category:"command",content:"コンソールに「rm -s cache」と入力し、Enterもしくはreturnを押すと即座に実行されます\\nキャッシュを消去します",link:"",id:"8de9f2442a4b880b608aadfd6d58dd049f93f232"},{title:"SFX",tags:["soundeffects","効果音"],category:"english",content:"日本語で「効果音」や「SE」と言われるもの",link:"",id:"d7ae9e4e443839dee2b712bc094701daf186350a"},{title:"BGM",tags:["backgroundmusic","音楽"],category:"english",content:"ゲーム中に流れている音楽のこと",link:"",id:"a13f52cde8db05647691f27c214480010504d836"},{title:"TAS",tags:["tas"],category:"english",content:"「Tool-Assisted Speedrun (Superplay)」の略\\nゲームのルールを破ることなく特殊なツールを用いてプレイすること\\n途中セーブやゲーム内時間の進みを弄る等して最高得点を出したりユニークな目標を達成している\\n簡単なTASはTechminoに内蔵されている",link:"",id:"fe88da9820ec746210644a7109aefbd97829d56f"},{title:"AFK",tags:["afk"],category:"english",content:"Away From Keyboardの略\\n画面前から離れる時だけじゃなく、休憩するときにも使われる\\n適度に休憩することで身体と頭が休み、より質の高いプレイができる",link:"",id:"39766d41a5cc0a50dc678025627e2f0f1876b2c3"},{title:"BRB",tags:["brb"],category:"english",content:"Be right backの略\\n一旦離れるけどすぐに戻るときに使われる\\n人によっては試合中にbrbというが結局セットが終わるまで戻らない人もいる",link:"",id:"47c78999a8300e45749d8f7f05eb2ff2a6e6dc44"},{title:"sweep",tags:["sweep","ストレート"],category:"english",content:"日本語で言うストレートのこと\\n例えば、7先の試合で1本も取られずに勝利した場合、相手をsweepしたと言う",link:"",id:"da36a1615f31d9d62ca90000721f15f5cf683334"},{title:"Timing",tags:["timing","shiji","fanji","タイミング"],category:"term",content:"主に攻撃をするタイミングのこと\\n攻撃をするタイミングを考えることで相手からの攻撃を相殺したり、逆に相殺を外して自分の攻撃を相手に送れたりできます\\n要は相殺管理の1つです",link:"",id:"2bf4d1f08aeac96a1e54d12679ce99785ddf0c4d"}],ER=[{title:"=[NHÓM 01]=",tags:["nhom01","giới","thiệu","bản","dịch"],category:"",content:`NHÓM 01: VỀ ZICTIONARY & BẢN DỊCH Zictionary là một bộ từ điển về game xếp gạch cực kì hữu ích. Ở đây, bạn có thể tìm hiểu hầu hết mọi thứ liên quan đến trò chơi này. @@ -1871,4 +1871,4 @@ Combo gửi thêm 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5 hàng rác. Back to Back gửi thêm 1 (hoặc 2 nếu T-spin Triple). All Clear gửi thêm 6 hàng rác -nhưng gửi thẳng vào bảng đối thủ thay vì không hủy rác tới.`,link:"",id:"4765c7bf8080dc446727783cbfb98218e2d6d1cb"},{title:"Techmino attack",tags:["nhom13","techminoattack"],category:"term",content:'Cách tính tấn công trong Techmino\\n\\nĐể biết công thức tính, hãy xem \\"hướng dẫn sử dụng\\" bằng cách nhấn nút`CHAR.icon.helpở màn hình chính của game.\\n\\nNhấn nút hình địa cầu sẽ dẫn bạn tới một bảng tấn công đã được tính sẵn và bạn chỉ cần cộng dồn lại các giá trị bạn muốn để biết kết quả.',link:"https://media.discordapp.net/attachments/743861514057941204/1093386431096950815/Untitled.jpg",id:"bbb10059789fa25b2075ebc36ab81951fe6d159a"},{title:"=[NHÓM 14]=",tags:["nhom14"],category:"",content:"NHÓM 14: CONSOLE VÀ CHUYỆN QUẢN LÝ DỮ LIỆU GAME",link:"",id:"0f625146ccf71925c820a7deea6185e2e327db43"},{title:"Console",tags:["nhom14","cmd","commamd","terminal","console"],category:"command",content:"Techmino có một console cho phép kích hoạt tính năng gỡ lỗi và bật các tính năng nâng cao.\\nĐể truy cập, hãy chạm vào logo Techmino / nhấn phím C 4 lần, tại màn hình chính.\\n\\nCẢNH BÁO! CÓ RỦI RO KHI TIẾN HÀNH\\nHành động bất cẩn trong console có thể dẫn đến HƯ HỎNG\\nhoặc MẤT TOÀN BỘ dữ liệu đã lưu KHÔNG THỂ PHỤC HỒI.",link:"",id:"c4701699df064f6742c450c9f0713b5e8b602584"},{title:"Đặt lại thiết lập",tags:["nhom14","reset","setting"],category:"command",content:'Vào console, gõ \\"rm conf / setting\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nĐể hoàn tác / hủy bỏ thay đổi đã thực hiện, hãy vào Cài đặt rồi trở ra.',link:"",id:"46bfb4151deb3340b4565c5df3feef7b2e16adbe"},{title:"Xóa t.bộ thành tích",tags:["nhom14","reset","statistic","data"],category:"command",content:'Xóa toàn bộ thành tích\\n\\nVào console, gõ \\"rm conf / data\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nĐể hoàn tác / hủy bỏ thay đổi đã thực hiện, chơi một chế độ bất kỳ sau đó nhận màn hình Thắng / Thua',link:"",id:"9380af19a9eb44c593811bef033438d35ab745e4"},{title:"Khóa t.bộ map",tags:["nhom14","reset","unlock"],category:"command",content:'Tất cả các mode sẽ bị khóa lại như khi bạn vừa mới vào chơi lần đầu.\\n\\nVào console, gõ \\"rm conf / unlock\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nĐể hoàn tác / hủy bỏ thay đổi đã thực hiện, cập nhật lại tình trạng của một chế độ bất kỳ.',link:"",id:"7a138f3a53a945c1ebbe1d09e19791b16ab8cb43"},{title:"Xóa t.bộ kỷ lục",tags:["nhom14","reset","record"],category:"command",content:'Xóa toàn bộ kỷ lục\\n\\nVào console, gõ \\"rm -s record\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nBạn có thể hoàn nguyên hành động này trên cơ sở từng chế độ; chơi một chế độ và cập nhật bảng xếp hạng để khôi phục bảng xếp hạng của chế độ đó.',link:"",id:"e9fa1b2a3f8909dfa1168c6014f6b1e2171ff815"},{title:"Đặt lại bố cục phím",tags:["nhom14","reset","virtualkey"],category:"command",content:'Vào console, gõ \\"rm conf / [File_bố_cục_phím]\\" sau đó nhấn Enter / Return.\\nThay [File_bố_cục_phím] với file cần xóa:\\n\\t- File bố cục bàn phím trên máy tính: key;\\n\\t- File bố cục nút trên màn hình: virtualkey;\\n\\t- File chứa 2 slot bố cục nút trên màn hình: vkSave1, vkSave2\\n\\nKhởi động lại Techmino để hai thay đổi đầu tiên có hiệu lực.\\nVào một trang chỉnh sửa bố cục phím / nút sau đó trở ra để lấy lại file tương ứng.',link:"",id:"9c323e24fbce329e97460310e919a7cb7856986f"},{title:"Xóa t.bộ replay",tags:["nhom14","delete","recording"],category:"command",content:'Xóa toàn bộ bản phát lại\\n\\nVào console, gõ \\"rm -s replay\\" sau đó nhấn Enter / Return.\\nHiệu lực tức thì, KHÔNG THỂ HOÀN TÁC',link:"",id:"4a9bcc267ddba7abc283e0add9f228a23ec2e735"},{title:"Xóa bộ nhớ đệm",tags:["nhom14","delete","cache"],category:"command",content:'Vào console, gõ \\"rm -s cache\\" sau đó nhấn Enter / Return.\\nHiệu lực tức thì, KHÔNG THỂ HOÀN TÁC',link:"",id:"c0bffec2ae22b2b65d8895513ec607aaeff79d36"},{title:"=[NHÓM 15]=",tags:["nhom15"],category:"",content:"NHÓM 15: CÁC THUẬT NGỮ KHÔNG LIÊN QUAN TỚI TETRIS (TIẾNG ANH)",link:"",id:"5aa188a1092b739c02013c789b2c87549ea5f3db"},{title:"SFX",tags:["nhom15","soundeffects"],category:"english",content:'Từ viết tắt của \\"Sound Effects\\" (Hiệu ứng âm thanh). Ở Nhật Bản, từ này được viết tắt là \\"SE\\".',link:"",id:"3716fe2cf35bd0f840b748adb1588c09c7f7daa7"},{title:"BGM",tags:["nhom15","backgroundmusic"],category:"english",content:'Từ viết tắt của \\"Background Music (Nhạc nền).\\',link:"",id:"0e5eb85ca4390fbb0e8f302a9fee918bec29b137"},{title:"TAS",tags:["nhom15"],category:"english",content:'Từ viết tắt của \\"Tool-Assisted Speedrun (Superplay)\\" (Công cụ hỗ trợ Speedrun)\\nChơi một game nào đó mà không cần công cụ đặc biệt để phá vỡ quy tắc của game (ở cấp độ chương trình / phần mềm).\\nNó thường được sử dụng để đạt điểm tối đa theo lý thuyết / đạt được những mục tiêu thú vị\\nMột công cụ TAS như vậy cũng có sẵn, nhưng là bản nhỏ gọn, được đi kèm với Techmino.',link:"",id:"071cfabe02ce9bc29cd5aa03055b6b828ea97e57"},{title:"AFK",tags:["nhom15"],category:"english",content:'Từ viết tắt của \\"Away From Keyboard\\" nghĩa là hiện đang nghỉ ngơi / làm việc khác VÀ không đụng game.\\nNghỉ giải lao thường xuyên giúp bạn giảm căng cơ và giúp bạn chơi tốt hơn khi quay trở lại.',link:"",id:"250f02dc717d92615423049ab28ed843fb748247"}],IR=[{title:"新人须知",tags:["读我","必读","萌新","xinren","new","noob","readme"],category:"help",content:"致想深入玩下去的新人:\\n\\n\\t两大根本原则:\\n\\t\\t1. 选手感好的版本(Tech/Tetr.io/Jstris/TOP/Tetr.js),别用编程练习渣版本\\n\\t\\t2. 踏实打好基础(预判next稳定消四等),别总想着炫酷T旋,对未来实力提升没好处。\\n\\t两大主要技巧:\\n\\t\\t1. 熟悉初始位置以及到各个位置的初始操作;\\n\\t\\t2. 提前计算好下一块能放哪。\\n\\n推荐阅读专栏《给TOP新人的几点建议》\\n\\n[点击右下角地球按钮打开链接]",link:"https://bilibili.com/read/cv2352939",id:"0a7f60cc442b74f1d47083b3b095ce71e115b516"},{title:"新人学习/练习路线",tags:["读我","必读","萌新","xinren","new","noob","readme"],category:"help",content:"以下是关于提升真正打块能力的指引,如果在以下任何项目练习过程中感到有困难,可以适当回去玩玩自己喜欢的项目。别忘了你是来 “玩” 游戏的,兴趣最重要。\\n以下给出几个新手时期的主线任务树,前期主要就应该练习以下内容,学定式和T-Spin什么的对实力帮助很小(我们不认为靠定式对战秒其他萌新是有效实力):\\n(注意,三段应当同时进行,不是A→B→C)\\nA. 堆叠能力练习方法\\n\\tA1. 手上的块可以放的时候先别急着放,看看下一块有没有地方,如果放不下去就看看手上的能不能换个地方\\n\\tA2. 尝试把地形尽量控制得平整,因为大多数情况比较平的地形来啥块都比较容易放得下去\\n\\tA3. 允许hold的时候可以多想想手里和hold的块和后续几块应该怎么安排顺序,长远地使地形平整\\nB. 操作效率与速度练习方法\\n\\tB1. 不要每一块都拿影子去对形状对位置,要自己想象这个块转一下是什么方向,想好了再开始按按键\\n\\tB2. 学习双旋,能逆时针转一次就不要顺时针转三次,费手\\n\\tB3. 学习极简,刚开始不用管速度,保证正确率最重要,养成良好习惯以后再提速快得很\\nC. 堆叠能力考核\\n\\tC1. 稳定完成40行不死(可以用hold)\\n\\tC2. 稳定完成40行不死(不能用hold)\\n\\tC3. 稳定全程消四完成40行(可以用hold)\\n\\tC4. 稳定全程消四完成40行(不能用hold)\\n以上都是根据社区和个人经验总结的模糊方法与目标,所以C的考核可以根据自身情况调整严格程度(例如 “稳定” 的具体成功率)。\\n注:完成C的考核后,需要在未来一直注意没有上限的A1,这是方块的根本元素之一,强大的读next能力可以让你快速上手任何变种玩法。",link:"",id:"264b46107c883cf31e6bfd50e4d246ed6a06c2d7"},{title:"关于T-spin学习",tags:["T旋","T转","tspins"],category:"help",content:"首先指出:要能熟练做出各种T-spin并不是只看着T-spin的那一小部分地形就可以玩好的,对玩家堆叠能力和计算next能力同样也有较高的要求。\\n\\n如果不只是出于娱乐、随便玩玩的目的,是真的想不断提升T-spin能力变强,请在基础能力达到一定要求前不要刻意去学习太多的T-spin,而先把重点放在堆叠等基本功上。\\n\\n参考学T门槛水平:40L达到60s以内(可以视个人情况调整为40~120s)、能够轻松完成全程消四的40L、不使用Hold不降太多速度的前提下比较轻松完成全程消四的40L(培养看next的意识和算力)。",link:"",id:"34d83bef9c4cc157fe476af478f20e62d814f9cc"},{title:"游戏官网",tags:["official","website","homepage","mainpage","guanwang"],category:"help",content:"Techmino的官网!\\n可以在上面下载游戏本体,或者修改头像以及个人信息。\\n\\n游戏作者的一些话:强烈不建议在任何公开场合提及甚至宣传Techmino,更不要随便对外发送我们的官网链接!请务必只在私下里向有基础或真的很有兴趣入坑认真玩的玩家推荐,不然很容易拉低社群质量破坏交流氛围,比较难处理,甚至有可能影响游戏的未来发展。为了保证游戏能够变得越来越好玩,千万慎重考虑您对游戏的推广方式!感谢您对Techmino的大力支持!!",link:"http://studio26f.org",id:"2625248b708d92cdc3012ad29165b45f0b233580"},{title:"灰机Wiki",tags:["huiji"],category:"help",content:"俄罗斯方块中文维基,由一群来自俄罗斯方块研究群及下属群的方块同好建立的关于俄罗斯方块的中文百科全书。\\n\\n目前其大部分页面翻译和参考来自Hard Drop Wiki和Tetris Wiki",link:"https://tetris.huijiwiki.com",id:"5ab1ab58819556c2edb521531547cc697911b7be"},{title:"HardDrop Wiki",tags:["hd"],category:"help",content:"(英文)位于Hard Drop全球俄罗斯方块社区的Wiki百科",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"2e536d6d326cb196c661304142440abf14c924ed"},{title:"Tetris Wiki",tags:[],category:"help",content:"(英文)一个专注于创建俄罗斯方块相关内容的Wiki百科,由Myndzi在 2015创办。年复一年,上千玩家贡献了一系列的官块和自制块的说明,游戏的隐藏机制,和提升游戏体验的教程",link:"https://tetris.wiki",id:"da01b04fbc6a1f85b4fd84732f442c08d7365aab"},{title:"Tetris Wiki Fandom",tags:[],category:"help",content:"(英文)一个俄罗斯方块维基",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"8af06a2a586d93d02a1da92fba6bd1e7e6b03857"},{title:"Four.lol",tags:[],category:"help",content:"(英文,很可能打不开)一个开局定式收集网站",link:"https://four.lol",id:"144ee24e93ce282b01e011edf4b1bb6192f37024"},{title:"テトリス堂",tags:[],category:"help",content:"(日文)包含很多定式、教程和小游戏。内涵2nd、3rd、4th、7th PC的详细说明",link:"https://shiwehi.com/tetris/",id:"0e0315ab5e7bea8a85f720cecfd8b9bff4b7ba85"},{title:"テトリステンプレ集",tags:[],category:"help",content:"(日文)テトリステンプレ集@テト譜,包含非常多定式,有很详细的分类。大部分定式带有图片,可以很方便的分享给别人。",link:"https://w.atwiki.jp/tetrismaps/",id:"d25b66428e157f372d4aca1bb2d021b942ebdfa2"},{title:"tetristemplate.info",tags:[],category:"help",content:"(日文)テトリスブログ - PerfectClear,一个收集了定式的网站,量很少但是内容很精细。",link:"https://tetristemplate.info/",id:"b65e8ab3052ab2215718cf049cbbf8bd53d39d43"},{title:"Fumen",tags:["fumen"],category:"help",content:"(日文)一个方块版面编辑器,可以用于分享定式,PC解法等,用处很多。设置里可以启用英文版。",link:"http://fumen.zui.jp",id:"a227cea79776724a2f4a8095a13b575f55ef8350"},{title:"Fumen for Mobile",tags:["fumenformobile","fm"],category:"help",content:"(英文)一个方块版面编辑器,添加了对触屏的控制,可以用于分享定式,PC解法等,用处很多。",link:"https://knewjade.github.io/fumen-for-mobile/",id:"bc8430a802c402a52dd26af1f6fa40f7629de617"},{title:"GitHub仓库",tags:["源代码","源码","github","git","sourcecode","yuandaima","src"],category:"org",content:"Techmino的GitHub仓库地址,欢迎Star",link:"https://github.com/26F-Studio/Techmino",id:"92d9eb2dd827cfbe656752b86529d51658dc4e10"},{title:"Discord服务器",tags:["不和谐","discord"],category:"org",content:"点击下面的按钮加入Techmino的Discord服务器,和大家一起交流!",link:"https://discord.gg/f9pUvkh",id:"b5a088b565f9942f298729dd9bccc7767aca3d25"},{title:"研究群",tags:["yanjiu","study","research"],category:"org",content:"俄罗斯方块·[研究]群QQ号764916351,“中国俄罗斯方块总群”",link:"",id:"addea241ef4758fb0245900d77bb40ffd3d1f8ba"},{title:"茶服",tags:["tos","tea","study","chafu"],category:"org",content:"TO-S的添加方法、说明等关于茶服的一切",link:"https://teatube.cn/tos/",id:"43af91fdc0b252a62da928cad64072e523346513"},{title:"赞助1",tags:["support","weixin","vx","zhifubao","zfb","zanzhu","daqian"],category:"org",content:"vx/zfb-控制台-support",link:"",id:"45e8b2e11f94f07d444bf5b247c378cec678df4b"},{title:"赞助1",tags:["support","weixin","vx","zhifubao","zfb","zanzhu","daqian"],category:"org",content:"vx/zfb-控制台-support",link:"",id:"45e8b2e11f94f07d444bf5b247c378cec678df4b"},{title:"赞助2",tags:["support","aifadian","afdian","zanzhu","daqian"],category:"org",content:"Afdian",link:"https://afdian.net/@MrZ_26",id:"c2c204a88d358d3568951ccfe8363e25c01122e1"},{title:"赞助3",tags:["support","zanzhu","daqian"],category:"org",content:"Patreon",link:"",id:"3705b429dd183cfd86db61915b1d3b8784bc8c6d"},{title:"赞助3",tags:["support","zanzhu","daqian"],category:"org",content:"Patreon",link:"https://www.patreon.com/techmino",id:"6b979d9c5e5d30383fe76ed00f8336076b4fb662"},{title:"TTT",tags:["教程","trainer","tres","bien"],category:"game",content:"全称Tetris Trainer Très-Bien (by こな)。现代方块特殊操作手把手教程(只能键盘操作)\\n\\t推荐能纯消四完成40L挑战的人学习\\n\\t内含T-spin、极简、SRS、部分对战定式介绍等教程\\n注:提供的链接是翻译后挂在茶服的版本",link:"https://teatube.cn/ttt/index.html",id:"7a6c90de9455659d93e3c4b3db0bef632ec8eb50"},{title:"TTPC",tags:["pc教程"],category:"game",content:"全称TETRIS Perfect Clear Challenge (by chokotia)。SRS+Bag7方块游戏Perfect Clear Opener教程(只能键盘操作)。推荐完成了TTT的人学习(必须先学会SRS)\\n\\n注:提供的链接是翻译后挂在茶服的版本。",link:"https://teatube.cn/ttpc/",id:"bf90e29e221453daf3179302c3b582a84dcaef3c"},{title:"NAZO",tags:["题库"],category:"game",content:"各类SRS试题\\n\\t推荐能通过TTT的玩家尝试。\\n\\t内含各种T-spin/All spin题目,简单到极难题目都有。\\n\\n注:提供的链接是翻译后挂在茶服的版本。",link:"https://teatube.cn/nazo/",id:"cafd691a5666c7faecf410f7a4c974396e3c0db6"},{title:"TPO",tags:["题库","nazo"],category:"game",content:"全称Tetris Puzzle O。由TCV100制作的题库网站,内含nazo的部分题库。",link:"http://121.36.2.245:3000/tpo",id:"75cafcb6649c2daac2d480d33808d90c590680e0"},{title:"注[1]",tags:["备注","notice"],category:"game",content:"以下内容是为部分官方和较高人气同人方块游戏的简介。\\n其中可能包含一些只代表个人观点的主观评价写在方括号里仅供参考,顺便也请不要因为某个方面有欠缺就直接认为 “这个游戏不好”。",link:"",id:"2c54dc7f51ee24e586ae3b7461e24a2854832d8b"},{title:"King of Stackers",tags:["回合制","网页","手机","kos","kingofstackers"],category:"game",content:"网页游戏 | 多人 | 支持移动端\\n简称KoS。网页版回合制对战方块点击即玩(可能很卡),主要规则为:以7块为一个回合,双方轮流在自己场地中放置方块,任何的攻击只在对方回合放一块不消行后生效,策略性很强。有不同的伤害表设置。",link:"https://kingofstackers.com/games.php",id:"2eb87bfa2dc0357481e496d684398e28837d377f"},{title:"Tetr.js",tags:["网页","手机","tetrjs"],category:"game",content:"网页游戏 | 单机 | 支持移动端\\n简称屁块(因为作者网名叫Farter)。设置内容足够专业,模式很多,但画面很简单,几乎没有动画,而且移动端只有几套固定的按键组合(不能自由拖放)。",link:"http://farter.cn/t",id:"69161929631d21aa66d338cc3ff228a0a9375529"},{title:"Tetra Legends",tags:["网页","tl","tetralegends"],category:"game",content:"网页游戏 | 单机 | [服务器在国外可能卡]\\n简称TL。单机模式比较丰富,有两个隐藏的节奏模式,并且将一些其他游戏中不可见的机制进行了可视化,动效也很多。在2020年12月,基本确定由于各种原因不再继续开发。",link:"https://tetralegends.app",id:"f472bf0b72c82192dc749df5f6824baedf634f02"},{title:"Ascension",tags:["网页"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n简称ASC,使用自己的ASC旋转系统,有不少单机模式(Techmino的堆积模式就来自ASC),对战模式目前处在测试阶段(2022/04/16)",link:"https://asc.winternebs.com",id:"560071698ce28870c4c5fc91fdeca3ff99bf31b5"},{title:"Jstris",tags:["网页","手机"],category:"game",content:"网页游戏 | 单机/多人 | 支持移动端 | [服务器在国外可能卡]\\n简称JS,有常用的科研向单机模式和自定义各种参数的功能,允许拖放固定尺寸的正方形虚拟按键,没有任何动画效果",link:"https://jstris.jezevec10.com",id:"3598a46c34385966fe8d7332fd135ac9d3b93986"},{title:"TETR.IO",tags:["网页","io","tetrio"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n简称IO,有排位系统和功能全面的自定义模式,单机模式只有三个。有电脑客户端下载(优化性能,无广告)。\\n[Safari浏览器似乎打不开]",link:"https://tetr.io",id:"ee1f029709eab03cdfcd0ef9b4ce848031debaa6"},{title:"Nuketris",tags:["网页","核","he"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n有几个基础单机模式和1V1排位。",link:"https://nuketris.com/",id:"9602f55e119bb6460baf3ae9812e844d89001303"},{title:"Worldwide Combos",tags:["网页","wwc"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n简称WWC,全世界匹配制1V1。特色:有录像战,匹配的对手可以不是真人;几种不同风格的大规则;炸弹垃圾行对战。",link:"https://worldwidecombos.com",id:"a805fd1fb030f6d8c013e070517d1409ef14f0fc"},{title:"Tetris Friends",tags:["网页","tf"],category:"game",content:"网页游戏 | 单机/多人\\n简称TF,已经关服了的网页版方块。以前人比较多,后来官服倒闭了热度下去了,不过现在有人架了私服还可以体验到。",link:"https://notrisfoes.com",id:"6c1d763488655dec67c218972c1a3082e9c2b608"},{title:"tetris.com",tags:["网页","手机"],category:"game",content:"网页游戏 | 单机 | 支持移动端\\ntetris.com官网上的俄罗斯方块,只有马拉松一种模式,特色是支持基于鼠标指针位置的智能控制。",link:"",id:"85ef9a571e012d79fe95974cb1d245a0c02ffbd8"},{title:"Tetris Gems",tags:["网页","宝石"],category:"game",content:"网页游戏 | 单机\\ntetris.com官网上的俄罗斯方块,限时1分钟挖掘,有重力机制。\\n有三种消除后可以获得不同功能的宝石方块。",link:"",id:"1a93945d8f9e6126847577ab26992468eb3f9e91"},{title:"Tetris Mind Bender",tags:["网页","技能"],category:"game",content:"网页游戏 | 单机\\ntetris.com官网上的俄罗斯方块,在马拉松基础上添加了技能,场地上会随机冒出技能方块,消除后会得到各种各样或好或坏的技能。",link:"",id:"5a82a770b0963ca9e947c70068a96bcac40323d2"},{title:"Techmino",tags:["铁壳米诺","方块研究所","tieke"],category:"game",content:"跨平台 | 单机/多人\\n简称Tech,使用LÖVE引擎开发的一款方块游戏,单机模式和各种设置都很齐全,联机正在逐渐开发中。",link:"",id:"119d49a5aec943440eec35179d71577b475d78d9"},{title:"Falling Lightblocks",tags:["手机","fl"],category:"game",content:"网页游戏/iOS/Android | 单机/多人\\n一个全平台块,横竖屏,有延迟并且不可调。手机支持自定义键位,主要玩法基于NES块设计,也有现代模式。对战为半即时半回合制,无攻击缓冲不可抵消。",link:"",id:"089ac2a359bdfafacaa30b575eb29d0dfb76541d"},{title:"Cambridge",tags:["剑桥"],category:"game",content:"跨平台 | 单机\\n使用LÖVE引擎开发的一款方块游戏,致力于创建一个轻松高度自定义新模式的方块平台。最初由Joe Zeng开发,于2020/10/08的0.1.5版开始Milla接管了开发。 — Tetris Wiki.",link:"",id:"10942d6a5b0e548a032a6b99980908625af9d0db"},{title:"Nanamino",tags:[],category:"game",content:"Windows/Android | 单机\\n块圈玩家自制方块,正在开发中,有一个原创旋转系统。",link:"",id:"ecd35b9b559147cda839697d07292cb0d6ee1689"},{title:"TGM",tags:["俄罗斯方块大师","tetrisgrandmaster"],category:"game",content:"Windows | 单机/本地双人\\n全称Tetris The Grand Master,一个街机方块系列(有修改过的版本可以在大多数Windows电脑运行),S13/GM等称号都出自该作。\\n\\n其中TGM3目前玩得最普遍,部分模式说明:\\n\\nMaster:大师模式,有段位评价,拿到更高段位点的要求:非消一的连击和消四,字幕战中消除和通关,每100的前70小于【标准时间,上一个0~70秒数+2】中小的一个,每100总用时不能超过限定值(不然取消上一个方法的加分并反扣点数);到500若没有进标准时间会强制结束游戏(称为铁门);字幕战有两个难度,半隐和全隐,后者必须拿到几乎全部的段位点才能进,消除奖励的段位点也更多。\\n\\nShirase:死亡模式,类似于techmino中的20G-极限,开局就是高速20G,500和1000有铁门,500开始底下开始涨垃圾行,1000开始出现骨块,1300通关进入大方块字幕战;段位结算:每通100加1段从S1到S13,如果通关了字幕战就会有金色的S13\\n\\n更多内容详见链接",link:"https://teatube.cn/TGMGUIDE/",id:"8ef6dad86868eb6560ac4397850a431f67c84dc7"},{title:"DTET",tags:[],category:"game",content:"Windows | 单机\\n单机方块游戏,基于经典规则加入了20G和一个强大的旋转系统,但是除了键位其他参数都不可自定义。有点难找到,而且找到后可能还要自己补齐缺的DLL文件。",link:"",id:"e8aa386b53a95638b334195c76f3558b9a314044"},{title:"Heboris",tags:["hb"],category:"game",content:"Windows | 单机\\n一个仿街机方块游戏,可以模拟多个方块游戏的部分模式。",link:"",id:"3d450984eb899811c1757c96bde9cb8bc3a7adae"},{title:"Texmaster",tags:["txm"],category:"game",content:"Windows | 单机\\n简称Tex,包含TGM的所有模式,可以用来练习TGM,但World规则不完全一样(如软降到底无锁延,踢墙表有细节不同等)。",link:"",id:"de2d8f090681e37b52dfabd4047d6c4a3b77ad91"},{title:"Tetris Effect",tags:["效应","tec","tetriseffectconnected","xiaoyinglianjie"],category:"game",content:"PS/Oculus Quest/Xbox/NS/Windows | 单机/多人\\n简称TE(C),特效方块游戏。不带Connected的基础版本只有单机模式。\\n拓展版本Tetris Effect: Connected增加了联网对战,包含Boss战、Zone对战、经典块对战和分数对战四个模式。",link:"",id:"0e6ba1cb4dd77fcc051416727b866d200b4bf074"},{title:"Tetris 99",tags:["吃鸡","t99"],category:"game",content:"NS | 单机/多人\\n简称T99,主玩99人混战的吃鸡模式,战术比重比较大,胜率不只由玩家在平时1V1时的水平决定。\\n也有一些常用单机模式如马拉松等。",link:"",id:"1ba05b6596856f9cc0ca2b4b459c4cb52a367249"},{title:"Puyo Puyo Tetris",tags:["噗哟方块","ppt","puyopuyotetris"],category:"game",content:"PS/NS/Xbox/Windows | 单机/多人\\n简称PPT,将方块和 Puyo Puyo 两个下落消除游戏放到一个游戏里,二者可以对战,联机单机模式都很多。另有一拓展版本Puyo Puyo Tetris 2。\\n[Steam PC版相对NS版手感和网络等都不太好]",link:"",id:"085c31a67986e72210f44a2fa0367c9986d312e7"},{title:"Tetris Online",tags:["top","study"],category:"game",content:"Windows | 单机/多人\\n简称TO,主要用来6人内对战/单挑/刷每日40L榜/挖掘模式/打机器人。支持自定义DAS/ARR但都不能到0。\\n现在还开着的服务器有:\\nTO-P(波兰服,服务器在波兰,可能会卡顿)\\nTO-S(研究服,研究群群友自己开的服,很稳定,需要进群注册)",link:"",id:"abc6cf003dae8fd7a5ea24fe449c7f4a520b0c21"},{title:"Tetra Online",tags:["to"],category:"game",content:"Windows/macOS/Linux | 单机/多人\\n简称TO,由Dr Ocelot和Mine两人开发\\n故意设计为延迟较多,平时玩无延迟方块的玩家可能会不习惯。\\n2020年12月9日收到来自TTC的DMCA警告信于是被迫停止开发,在一段时间后关服并下架Steam。\\n现在在GitHub上面还可以下到Windows的Offline Build。\\n[UI部分模仿了PPT,音乐不错,攻击特效好看。]",link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"eae66386205bf56959209b8569a4ae2ea53ba74d"},{title:"Cultris II",tags:["文艺方块","c2","cultris2"],category:"game",content:"Windows/OS X | 单机/多人\\n简称C2,设计基于经典规则出发,支持自定义DAS/ARR,对战的主要玩法是基于时间的连击,考验玩家速度/Wide打法/挖掘。\\n[游戏作者太久没有更新Mac版导致macOS Catalina以后的系统无法运行]",link:"",id:"146a485103a6d96465f30968a8e98a3e09e0aa7f"},{title:"Nullpomino",tags:["np"],category:"game",content:"Windows/macOS/Linux | 单机/多人\\n简称NP,整个游戏自定义程度极高,几乎任何参数都可以自己设置,是一个专业级方块。\\n[不过UI风格比较老,需要全键盘操作,刚开始可能不习惯。macOS Monterey貌似无法运行。]",link:"",id:"4ca1f726a8d4565d0be64b0fbe18cb94173c63d7"},{title:"Misamino",tags:["回合制"],category:"game",content:"Windows | 单机\\n块圈玩家自制方块,单机1v1,主玩回合制模式,可以自定义AI(自己写的话需要了解接口)。",link:"",id:"15610a0899101f47ff3749b09be8cbb5de829763"},{title:"Touhoumino",tags:["东方","车万","偷猴","chewan","dongfang","th"],category:"game",content:"Windows | 单机\\n块圈玩家自制方块,一个Nullpomino的自带资源包的改版,将东方Project元素与俄罗斯方块结合。马拉松模式结合了东方Project里的 “符卡” 机制,需要在一定时间内达成目标分数才能击破。\\n[难度较大,适合有方块基础并且各项能力都较强的玩家游玩(不然都不知道自己怎么死的)。]",link:"",id:"68be7252aef0911f363e144f548fde38478dfd91"},{title:"Tetris Blitz",tags:["闪电战","ea"],category:"game",content:"iOS/Android | 单机/多人\\n简称闪电战,EA代理的一款移动端方块,有重力连锁机制,限时2分钟,游戏开始会掉下一堆小方块;持续消行会进入Frenzy模式(场地下方会不断冒出垃圾行,帮助玩家制造大连锁,如果多次落块没有消行会强制结束Frenzy)。有非常多的道具。\\n当新出现的方块与场地现有方块重叠时,场地最上方的几行会被自动清除,游戏不结束。已于2020年4月下架。",link:"",id:"a5c738adc280fad07bfbb4dd1476d7b7f904ed19"},{title:"Tetris (EA)",tags:["tetris","ea"],category:"game",content:"iOS/Android | 单机/多人?\\nEA代理的一款宇宙主题的移动端方块。有滑动操控和单点触控两种操作模式;除经典的马拉松外还有一个星系模式(地图挖掘),有重力连锁机制,目标是在限定块数内消除所有地图块。\\n已于2020年4月下架。",link:"",id:"027f9038af9c7e4d791be8f584b668a35a2cc51e"},{title:"Tetris Beat",tags:["节奏","n3twork"],category:"game",content:"iOS | 单机\\nN3TWORK代理的一款移动端方块。除了马拉松以外游戏还有一个 “Beat” 模式,但只需根据BGM的节奏落块就可以得到额外分数。\\n[特效比较瞎眼,不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",link:"",id:"2b5e658415906134fc5c084c815256cd029516b3"},{title:"Tetris (N3TWORK)",tags:["Tetris","n3twork"],category:"game",content:"iOS/Android | 单机/多人\\nN3TWORK代理的一款移动端方块,有马拉松、3分钟限时打分和Royale(最多100人对战)模式。\\n[UI设计比较不错,但不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",link:"",id:"4eca9f2aa25d69d08fd239754108be323894eccb"},{title:"俄罗斯方块环游记",tags:["tetris","journey","huanyouji"],category:"game",content:"iOS/Android | 单机/多人\\n简称环游记,国内第一款正版授权手游方块。有闯关模式、对战模式和几个单机模式。闯关模式有各种各样有趣规则大多数有重力连锁,对战规则同现代方块,可以自定义虚拟按键的大小和位置,但是不能自定义DAS/ARR。已于2023年2月15日停服。",link:"",id:"775c32db1ab6f2e15de9655a6d2c017243dfa554"},{title:"JJ块",tags:["手机","gougou"],category:"game",content:"Android | 单机/多人\\nJJ棋牌平台下一个休闲游戏,Android端百度 “JJ比赛” 官网下载平台后可以找到(找不到的原因是iOS系统或者没在官网下载或者被限制不可直接访问游戏)。竖屏,输入延迟很小,可自定义DAS/ARR/20G软降,简单自定义键位,无Hold,没有B2B,无攻击缓冲不可抵消,每次攻击上限为4,连击较强,其他同现代方块。",link:"",id:"0abb741e07432d757fe5f63dfc049c4abd4371a6"},{title:"火拼俄罗斯",tags:["huopin","qq"],category:"game",content:"Windows | 多人\\n腾讯游戏大厅的方块,场地12列,打字的 DAS 和 ARR,1 Next无 Hold,攻击途径只有消4打3、 消3打2,垃圾行为国际象棋棋盘式,几乎不可能挖掘。",link:"",id:"17f9bdeb539060af71e18f559429b15181f1a095"},{title:"LPM",tags:["速度","sudu"],category:"term",content:"Line Per Minute\\n行每分,体现玩家下块速度。\\n\\n注:不同游戏中显示的LPM算法可能不一样,例如TO中的LPM是用PPS换算的,每1PPS=24LPM,忽略掉了垃圾行的影响,不再是字面意思,Techmino中使用L’PM代表这种换算后的LPM。",link:"",id:"34a29ee483d8263bd7c41d5bfc0276e5e6cfb3f0"},{title:"PPS",tags:["速度","sudu"],category:"term",content:"Piece Per Second\\n块每秒,体现玩家下块速度。",link:"",id:"ffc6860263cb78c06b27cf924b3c23be71d33588"},{title:"BPM",tags:["速度","sudu"],category:"term",content:"Block Per Minute\\n块每分,体现玩家下块速度\\n又称PPM(Piece Per Minute)",link:"",id:"2bb26b9db018e582adf2ab859ab7f0beafa803d7"},{title:"KPM",tags:["速度","sudu"],category:"term",content:"Key Per Minute\\n按键每分,体现玩家按键速度。",link:"",id:"21e8b4fdd11dd2e25184216e21d37c0584ee1861"},{title:"KPP",tags:["按键","anjian"],category:"term",content:"Key Per Piece\\n按键每块,体现玩家操作是否繁琐。\\n学会极简提升操作效率以减少此数字。",link:"",id:"0dbca35263a0ac4bf7ef07824164d688b5837b11"},{title:"APM",tags:["攻击","attack","gongji"],category:"term",content:"Attack Per Minute\\n攻击每分,即玩家每分钟能打出的垃圾行数。\\n一定程度体现玩家攻击力。",link:"",id:"3b43c123b81f067da1fa99361828f2693142cd6a"},{title:"SPM",tags:["发送","送出","发出","send","gongji"],category:"term",content:"[lines] Sent per minute\\n送出每分,即玩家每分钟实际打出去给对手的垃圾行数。\\n一定程度体现玩家给对手实际造成的攻击力。",link:"",id:"076e116c297ac25392f513c03caad89bbae272db"},{title:"DPM",tags:["挖掘","防御","防守","dig","defend"],category:"term",content:"Dig/Defend Per Minute\\n挖掘每分,即玩家每分钟向下挖掘的垃圾行数。\\n某些时候可以体现玩家生存能力。\\n\\n或:防御(抵消+挖掘)每分。",link:"",id:"48ef5bdcf1fbd21b65c2f0282d3e94e7ab4a6878"},{title:"RPM",tags:["接收","接受","receive","jieshou"],category:"term",content:"Receive Per Minute\\n接收每分,即玩家每分钟收到来自对手的垃圾行数。\\n一定程度体现玩家被对手施加的压力。",link:"",id:"3ccaaf97407f07bc42542ec866e3bc4d52ef8cce"},{title:"ADPM",tags:["攻击","防御","防守","attack","defend","vs"],category:"term",content:"Atk & Dig Per Minute\\n攻击+挖掘每分,用于在同一局游戏内对比玩家间水平差距,比APM更准确一些。在TETR.IO中叫 “VS” 的数据就是ADPM(调整过比例,具体是Atk & Dig per 100s)",link:"",id:"8237c467e748e3db42d92d104b965e627b51fe22"},{title:"APL",tags:["效率","xiaolv","xiaolyu"],category:"term",content:"Attack Per Line\\n攻击每行,也叫效率,体现玩家攻击的行利用率。例如消四和T旋的效率就比消二和消三高。",link:"",id:"d9eda030b7074aedca43c15dddb4740c494f031a"},{title:"Single",tags:["1","xiaoyi"],category:"term",content:"一次消除一行。",link:"",id:"ede51272f574cbc9179024de514922e880faa573"},{title:"Double",tags:["2","xiaoer"],category:"term",content:"一次消除两行。",link:"",id:"4f80c5857d262da97bf9b0c6c06f3af811a426af"},{title:"Triple",tags:["3","xiaosan"],category:"term",content:"一次消除三行。",link:"",id:"fb5c4efc591d1b3c612c45e1f7de99ffd8f20cd8"},{title:"Techrash",tags:["4","tetris","xiaosi"],category:"term",content:"一次消除四行(Techmino限定)。",link:"",id:"d035e86d6bdff444a54e62e1e43c233e94d7bf89"},{title:"Tetris",tags:["4","xiaosi"],category:"term",content:"商标,Tetris游戏名,同时也是别的方块游戏里消四行的名字。\\n含义是Tetra(古希腊语, 四 <τέτταρες>)+ Tennis(网球 游戏原作者喜欢的运动)。\\n现在版权在TTC(The Tetris Company)手上,任天堂和世嘉开发游戏是 TTC 授权的, 它们自己并没有Tetris的版权。",link:"",id:"d62b4326976a335c6e1e5739e07fceb8c78e80bc"},{title:"PC",tags:["全消","全清","perfectclear","ac","allclear","quanxiao","quanqing"],category:"term",content:"Perfect Clear(也叫All Clear,全消,或全清)。\\n消除场地上所有的方块。",link:"",id:"3cc484e4922fa08d3cdcb4ce642ff241cfa2d527"},{title:"HPC",tags:["hc","clear","banqing","banquanqing","banquanxiao"],category:"term",content:"Half PC\\nPC(全消)的外延,“下方有剩余方块” 的全消(特别地,如果只消1行则必须不剩余玩家放置的方块),能打出一些攻击和防御(Techmino限定)。",link:"",id:"3a3e7e310a0a82040d6c4e70abd1d7c8048a4b30"},{title:"Spin",tags:["转","xuanzhuan","zuandong"],category:"term",content:"(部分游戏中)使用旋转将方块卡进不能直接移动进入的位置,具体判定规则不同游戏不一样,可能会有攻击加成。",link:"",id:"dc33dec4942ac1f43c0e1edb5ccb6b9e30f571b1"},{title:"Mini",tags:["迷你"],category:"term",content:"Spin附加Mini后攻击会弱化,用于平衡不同难易度的T-spin攻击,判定在不同游戏都不一样,而且大多数很不好理解,建议只记住常见形状即可。",link:"",id:"fb751efa013e9078a2af3d576946af0bad65e89b"},{title:"All Spin",tags:["allspin"],category:"term",content:"一种规则,指所有方块的Spin都有攻击力,而不止是T-spin才有攻击(即T-Spin Only)。",link:"",id:"76934acf334799e0ad76194c34b1ddee98dc5b67"},{title:"T-Spin",tags:["T转","T旋","旋转","tspin","txuan"],category:"term",content:"在官方规则中,当T方块在锁定前的最后一个操作是旋转,并且锁定后旋转中心对应的四个斜角位置有三个不是空气,那么这就是一个T-spin。\\nPS:如果满足一些额外条件会被打上mini标签减少攻击力。",link:"",id:"e811f591780c7c7ee0d7abd134e5a67c25289154"},{title:"TSS",tags:["t1","tspin"],category:"term",content:"T-Spin Single\\n指使用T方块Spin并一次消除1行。简称T1。",link:"",id:"a260a00814f9b634c252dc26e855206380a7e305"},{title:"TSD",tags:["t2","tspin"],category:"term",content:"T-spin Double\\n指使用T方块Spin并一次消除2行。简称T2。",link:"",id:"af05e0d65e32bca9b7c80a7da2c3e7f25f105090"},{title:"TST",tags:["t3","tspin"],category:"term",content:"T-spin Triple\\n指使用T方块Spin并一次消除3行。简称T3。",link:"",id:"513fe5fb6e3c7f3f286253eac090967f68b8597b"},{title:"MTSS",tags:["mini","tspin","minitspinsingle","tsms","tspinminisingle"],category:"term",content:"Mini T-spin Single\\n指T方块Mini Spin消1行(不同游戏判定不一样)。\\n部分游戏中可能叫做 “T-Spin Mini”。",link:"",id:"eabb16e756dd8b65ec3dc5f816b937c0d1e4f8ee"},{title:"MTSD",tags:["mini","tspin","minitspindouble","tsmd","tspinminidouble"],category:"term",content:"Mini T-spin Double\\n指T方块Mini Spin消2行(仅部分游戏内存在且判定不一样)。",link:"",id:"a1a53ac67d39e9ac378561223bdd1332f2ed615c"},{title:"O-spin",tags:["o转","o旋","ospin","oxuan","ozhuan"],category:"term",content:"由于O方块旋转后形状不变,只能左右移动,所以经常被卡住,于是方块圈就有了O-spin的梗:\\n有人做过T99/TF中的O变形的特效视频且广为流传;\\nT-ex设计的旋转系统可以用spin使O传送进坑;\\nTech设计的变形系统中可以旋转O来变形/传送进入一些特定形状的洞。",link:"",id:"e8dc50817739b8a0330f8b39f2cef5dda6440eba"},{title:"旋转系统 (踢墙)",tags:["旋转系统","踢墙","xuanzhuanxitong","wallkick","tiqiang"],category:"term",content:"现代方块游戏中,方块可以绕着旋转中心(Techmino中可见)旋转(部分游戏没有固定中心),如果旋转后和场地或墙壁有重合,会根据<从哪个方向转到哪个方向>进行一些偏移测试(这个偏移称为踢墙),不会卡住转不动,同时也可以让方块钻进入一些特定形状的洞。不同的旋转系统偏移位置顺序都不一样,具体数据去各大Wiki上查,一堆数字这里就不放了",link:"",id:"05b13c428c8769505583fde30a481558c935ab2c"},{title:"方块朝向",tags:["旋转","朝向","xuanzhuan","chaoxiang","orientation","direction","0r2l","02","20","rl","lr"],category:"term",content:"在SRS或者类SRS的旋转系统中需要说明方块朝向的时候,“朝下” “竖着” 等词描述太模糊。\\nSRS中每种方块的初始状态固定,所以我们使用0(原位)、R(右,即顺时针转一次)、2(转两下,即180°)、L(左,即逆时针转一次)四个字符表示方块的四种状态,从原位(0)开始顺时针转一圈四个状态是0R2L。\\n最早见于SRS踢墙表的行首,0→L表示原位逆时针转一次到L状态,0→R表示原位顺时针转一次到R状态,2→R代表从180°状态逆时针转一次到R状态。",link:"",id:"573a634040e4e2b48f3a6f63d3ffef40e48ca2f1"},{title:"ARS",tags:["旋转系统","rotate"],category:"term",content:"Arika Rotation System,TGM系列使用的旋转系统(3代中的C模式)\\n或者\\nAtari Rotation System,一个左上对齐旋转系统。",link:"",id:"9e89bb00c1d2aa2fd01276461d2e6948b6a94e2b"},{title:"ASC RS",tags:["旋转系统","ascrs","rotate"],category:"term",content:"ASC Rotation System\\nASC块使用的旋转系统,所有块所有形状只根据旋转方向(顺时针和逆时针)使用两个对称的表,踢墙范围大概是±2, ±2。",link:"",id:"564007c0f886861ba0794982d64ee13a5c91c773"},{title:"ASC+ RS",tags:["旋转系统","asc+rs","ascplusrs","rotate"],category:"term",content:"Techmino中ASC的修改版本,添加了180°转的踢墙表。",link:"",id:"ce0ec58b494b2db6c68836d072215d1ce6f8f87c"},{title:"BRS",tags:["旋转系统","rotate"],category:"term",content:"BPS Rotation System\\nBPS块使用的旋转系统。",link:"",id:"94e15bca792e79f612af7db8a19039689c09d210"},{title:"BiRS",tags:["旋转系统","rotate"],category:"term",content:"Bias Rotation System\\nTechmino原创旋转系统,基于XRS和SRS设计。\\n当左/右/下(软降)被按下并且那个方向顶住了墙,会在旋转时添加一个额外偏移(三个键朝各自方向加1格),和基础踢墙表叠加(额外偏移和叠加偏移的水平方向不能相反,且叠加偏移的位移大小不能超过√5)。如果失败,会取消向左右的偏移然后重试,还不行就取消向下的偏移。\\nBiRS相比XRS只使用一个踢墙表更容易记忆,并且保留了SRS翻越地形的功能。",link:"",id:"f0092b86f5518d7adff7ca8b062c6ac42c11f472"},{title:"C2RS",tags:["旋转系统","rotate","cultris2"],category:"term",content:"Cultris II Rotation System\\nCultris II原创的旋转系统,所有旋转共用一个表,顺序是:\\n左1→右1→下1→左下→右下→左2→右2\\n注意,左优先于右。",link:"",id:"220cefe0dc94d636dedc322b4318795ed34837a3"},{title:"C2sym",tags:["旋转系统","rotate","cultris2"],category:"term",content:"Techmino中C2RS的修改版本,根据不同的方块形状和状态,各自选择优先测试左还是右。",link:"",id:"a556f52f54e6fbc01a552e13d5e457226db9f1ab"},{title:"DRS",tags:["旋转系统","rotate"],category:"term",content:"DTET Rotation System.",link:"",id:"c5643df577b8666a346e1ec09c2b93ed22b333d6"},{title:"NRS",tags:["旋转系统","rotate"],category:"term",content:"Nintendo Rotation System,NES和GB块使用的旋转系统。NRS有两个互为镜像的版本,左旋版用于GB,右旋版用于NES。",link:"",id:"c21f8a4f8ad7208a795a57ded5d060919649cef4"},{title:"SRS",tags:["超级旋转系统","rotate"],category:"term",content:"Super Rotation System\\n现代方块最常用的旋转系统,也是不少自制旋转系统的设计模板。\\n对于SRS,每个方块有四个方向,可以朝两边转(180°不算,最开始没有这个设计),所以总共8种,对应8个偏移表,具体数据去Wiki上查,这里就不放了。",link:"https://tetris.wiki/Super_Rotation_System",id:"6ee42d75e1000923b204826b1b13f846209a5481"},{title:"SRS+",tags:["超级旋转系统","srsplus","rotate"],category:"term",content:"SRS的拓展版,添加了180°转的踢墙表。",link:"",id:"fcc36d4cbebb42c03eff3307b06c46c6ed8379a4"},{title:"TRS",tags:["旋转系统","rotate"],category:"term",content:"Techmino Rotation System\\nTechmino原创旋转系统,基于SRS设计,修补了一些常见SZ卡死的地形,增加了不少实用踢墙。\\n每个五连块也基本按照SRS的Spin逻辑单独设计了踢墙表。\\n更有神奇O-spin等你探索!",link:"",id:"704dcda3c49ae4bbec88bf09f155c0b7fcfe1387"},{title:"XRS",tags:["旋转系统","rotate"],category:"term",content:"X Rotation System\\nT-ex原创旋转系统,引入了 “按住方向键换一套踢墙表” 的设定(在对应的方向需要顶住墙),让 “想去哪” 能被游戏捕获从而转到玩家希望到达的位置。\\n\\n其他旋转系统无论踢墙表怎么设计,块处在某个位置时旋转后最终只能按固定顺序测试,这导致不同的踢墙是竞争的,若存在两个可能想去的位置就只能二选一,XRS解决了这个问题。",link:"",id:"9dcd64344bfe1b26c2a4d1128e23fa8e215b6b68"},{title:"B2B",tags:["大满贯","btb","backtoback"],category:"term",content:"Back to Back\\n连续打出两次特殊消行(Spin或消四),中间不夹杂普通消行,可以提供额外的攻击(在Techmino中B2B为满贯,大满贯是B3B)。连续PC/HPC在Techmino中也算B2B/B3B。",link:"",id:"25c9c3013a9ba18daf3a397dfa0127da915ecdd0"},{title:"B2B2B",tags:["大满贯","b3b","backtobacktoback"],category:"term",content:"Back to Back to Back\\nB2B的加强版,缩写B3B,大量B2B后连续B2B会变成B2B2B,提供更强的攻击(仅Techmino中有)。",link:"",id:"93abe814c9a4acbd50d6c2ee3b81704c36acae69"},{title:"Fin/Neo/Iso",tags:["特殊","fin","neo","iso"],category:"term",content:"三类特殊T2的名字,不同的游戏内的攻击可能不一样,实战中基本没有特殊价值,可以不详细了解。",link:"",id:"49a9dddd3e75b7be40c59555e26b82cd895be3bd"},{title:"现代方块",tags:["modern","xiandaikuai","tetris"],category:"term",content:"现代方块是一个模糊的概念,这里列出一部分 “标准” 规则,满足大部分的都可以认为是现代方块:\\n1.可见场地大小是10×20,不过上方空间也是存在的,上限可以自己定,一些游戏用的是40;\\n2.七种方块从顶部正中间出现(奇数宽方块偏左,高度可以是方块底部或顶部贴着场地顶),同一种方块的朝向(一般是平的面朝下)和颜色都一致;\\n3.一个合适的随机出块机制(常见的详见Bag7词条和His词条);\\n4.一个合适的的旋转系统(至少有双旋,详见双旋词条)(最好是SRS或类SRS,详见SRS词条);\\n5.一个合适的锁定延迟系统,详见锁定延迟词条;\\n6.一个合适的死亡判定,详见死亡判定词条;\\n7.有Next功能(一般是3~6个,也有1个的),详见Next词条,并且方向和出现时候的方向一致;\\n8.有Hold功能,详见Hold词条;\\n9.有DAS系统负责精密并且快速的左右移动,详见DAS词条;\\n10.如果有出块延迟和消行延迟,那么需要有提前旋转/Hold系统,详见IRS和IHS词条,IMS是Techmino特有。",link:"",id:"3b374d011cae4bbd4f76daabce342beef755c6b0"},{title:"方块形状",tags:["xingzhuang","shape","tetromino","tetrimino"],category:"term",content:"在标准的方块游戏中,用到的方块是所有的 “四连块”,即四个正方形共用边连接成的形状。\\n在不允许翻转,只允许旋转的情况下,四连块一共有七种,根据它们的形状一般分别叫做Z、S、J、L、T、O、I。\\n\\n详见下方 “方块名称”。",link:"",id:"4f07a542caea12ff764123563fe86c36fcf50e07"},{title:"方块颜色",tags:["yanse","color","colour","tetromino","tetrimino"],category:"term",content:"主流方块游戏中七种块的颜色会使用同一套彩虹配色:\\nZ:红 S:绿 J:蓝 L:橙 T:紫 O:黄 I:青\\n\\nTechmino默认也使用这一套 “标准” 配色。",link:"",id:"eaf19687d159758acc974e4c87723dae786ad13f"},{title:"提前旋转(IRS)",tags:["tiqianxuanzhuan","irs","initialrotatesystem"],category:"term",content:"Initial Rotation System 提前旋转系统\\n方块出现前提前按下旋转后,出现时就是转好的形状,有时可以避免死亡。",link:"",id:"4cb89551b37799daad035fd7837ab7d71cb81e6c"},{title:"提前暂存(IHS)",tags:["tiqianzancun","ihs","initialholdsystem"],category:"term",content:"Initial Hold System 提前Hold系统\\n方块出现前提前按下hold后,直接出现hold里的方块,有时可以避免死亡。",link:"",id:"db0614d1d8b6363c7bd031ff8b45f048d3f92553"},{title:"提前移动(IMS)",tags:["tiqianyidong","ims","initialmovesystem"],category:"term",content:"Initial Move System 提前移动系统\\n方块出现前提前按住移动后,出现时会朝移动方向偏一格,有时可以避免死亡(Techmino限定)。\\n注:需要块出现时das已充满",link:"",id:"a4bd52c8408f799c4c5fc47f5537f1b98f690a10"},{title:"预览(Next)",tags:["下一个","next","yulan","xiayige"],category:"term",content:"指示后边几个块的顺序。\\n提前思考手上这块怎么摆可以让后面轻松是玩家提升的必需技能。\\n\\n关于玩家玩的时候到底看了几个Next:这个数字并不固定,不同玩家、不同模式、不同局面,计算next的数量都不一样,通过调整可见Next数量打40L比较时间等方式测得的数据并不准确。\\n\\n具体例如,一个比较熟练的玩家几乎永远会提前算好一个Next,不然不会锁定手里的块;场地上将要出现或可以构造消四洞(T坑)的时候会找最近的I(T)什么时候来,如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立,有很多介于中间的情况。所以,一个玩家看的Next数量是时刻在变的,“某人看几个Next” 没有精确答案,必须在指明情况的时候数字才能作为参考。",link:"",id:"5ede2f721df7f80f287a68fcd175ee1db254e642"},{title:"暂存(Hold)",tags:["交换","hold","zancun"],category:"term",content:"将手里的方块和Hold槽中的交换,一般不能连续使用。\\n用来调整块序,更容易摆出你想要的形状。\\nTechmino中有一个 “物理Hold” 机制,开启后Hold换出的方块会直接出现在当前方块所在的位置\\n\\n用不用Hold各有好处,不用的话看到序列是什么就是什么,减少了思考量;并且减少了按键的种类,操作简单容易提升KPS,有些人的40L记录就是不用Hold打出的。用Hold可以灵活地调整序列,减少高重力等规则带来的难度,算力足够的情况下可以达成更复杂的目标,甚至反过来显著减少总按键数。",link:"",id:"af7a53d05fef8964e93ddc5e922fe7ead80c663e"},{title:"置换(Swap)",tags:["交换","swap","hold","jiaohuan","zancun"],category:"term",content:"Hold的另一种表现形式,将手里的方块和Next槽中的第一个交换,一般同样不能连续使用。",link:"",id:"007c6a9f7ce2fc7064cbcbaeeed1089ffa985356"},{title:"深降",tags:["深降","deepdrop","shenjiang"],category:"term",content:"开启后当方块触底时,再次按下软降会让方块尝试向下穿墙寻找放得下的地方,如果有就会直接瞬移到那\\n该功能更偏向用于技术研究,对于AI来说有了它可以完全不用再考虑旋转系统,形状能容得下的地方一定都能到达",link:"",id:"78894c860ead15409ce3eb1c30c535ebb2433c69"},{title:"Misdrop",tags:["误","md"],category:"term",content:"误放,就是不小心放错了地方。简称MD。",link:"",id:"1f8a0276433dcc22d354aaceee5a13d193037691"},{title:"Mishold",tags:["误hold","mh"],category:"term",content:"误hold,就是不小心按到Hold导致死亡或失去PC机会等。简称MH。",link:"",id:"c5ca3c00e538070148fb09a03ab68339d90d64f9"},{title:"sub",tags:[],category:"term",content:"在……之下\\n用于表示成绩,单位一般可不写,比如40L成绩Sub 30是秒,1000行Sub 15是分钟,不写项目默认是40L\\n\\n例:39.95s是Sub 40,40.###s不是Sub 40。\\n请不要使用Sub 62之类的词,因为sub本身就是表示大约, 一分钟左右的成绩精确到5~10s就可以了,一般30s以内的成绩用sub## 的时候才会精确到1s。",link:"",id:"fac0180b895f2a661421f4e7dad325e8f3feb12d"},{title:"挖掘(Dig)",tags:["挖掘","downstack","ds","wajue"],category:"term",content:"指消除从场地底部进入的垃圾行(对手攻击打过来或者模式中自动生成)。也叫downstack(DS)。",link:"",id:"795ab336844cf40d0b587e03f6c8ce391fe0f67f"},{title:"捐赠(Donate)",tags:["捐献","juanzeng"],category:"term",content:"指刻意临时堵住(可以消四的)洞做T-spin,打出T-spin后就会解开,是比较进阶的保持/提升火力的技巧。\\n不标准用法:有时候只要堵住了个坑,即使不是消四洞也会用这个词。",link:"",id:"094cb87b474108286d1b050eb94b7034582d9123"},{title:"欠债",tags:["qianzhai","debt"],category:"term",content:"欠债\\n指必须完全堆好才能开始转下T旋打出攻击,堆完之前T下不去的形状。对战实战中如果要做此类(中局)定式时一定要观察对手情况确保自己安全,不然可能被半途打死\\n\\n一般只用来描述类似双T3/T3塔的大型组合炮,堆完之前完全不能打出攻击。",link:"",id:"2c9c9d2a29d452bdcc50f89b9efcb32e5ef824f7"},{title:"攻防",tags:["gongfang","gongshou"],category:"term",content:"攻击指通过消除给对手发送垃圾行;\\n防御(相杀)指别人打过来攻击之后用攻击抵消;\\n反击指抵消/吃下所有攻击后打出攻击。\\n\\n注:大多数方块游戏的攻防是1:1的,4行攻击抵消对手的4行攻击。",link:"",id:"c5cc86404df3ec167323a6dd389f658d3619dda2"},{title:"连击(Combo)",tags:["ren","lianji"],category:"term",content:"从第二次消除起叫1 REN/Combo,打出的攻击根据游戏设计的不同也不同。“REN” 这个名称来源于日语中的 “連”(れん)。",link:"",id:"9f87a8b08381af9fac76021f4af2f897895834b4"},{title:"Spike",tags:["baofa","xingbao"],category:"term",content:"爆发攻击\\n指短时间内打出大量的攻击,Techmino和TETR.IO中有Spike计数器,可以看到自己短时间内打出了多少攻击。\\n注意,网络卡顿导致的累计攻击瞬间释放不算Spike。",link:"",id:"c463c53088e461253bcbda48795858024b3c49ce"},{title:"Side",tags:["连击","sidewell"],category:"term",content:"在场地旁边空出几列的堆叠法\\n用来制造连击,对于新人是一个不错的进攻方法。但由于起楼的时候可能会被顶死而且总效率不高,导致高端玩家不会单独做Wide,更可能会在中局堆好炮并且观察到对手短时间内不会打出伤害的时候可以造,用来大幅加强瞬时火力。",link:"",id:"6a78522114f9684c67c66a49bf79f64da244e117"},{title:"Center",tags:["连击","centerwell"],category:"term",content:"在场地正中间空出几列的堆叠法",link:"",id:"437c97420ef53ab10e30f2805a9d1e2d9a0965fd"},{title:"Partial",tags:["连击","partialwell"],category:"term",content:"在场地边和正中之间的位置空出几列的堆叠法",link:"",id:"4067a95f88506ff7bf801b43f45dcdaaa4c45600"},{title:"S1W",tags:["side1wide","tetrisstacking"],category:"term",content:"Side 1 Wide\\n旁边空1列,是传统方块游戏里常见的消四打法。\\n在现代方块对战中新手可以使用,短时间能打出大量攻击,但在高手场出场率不高,因为效率低,容易被对面一波打死,故只在极少数情况合适的时候用。",link:"",id:"895231397015bfce6167338f919a8248e9671edc"},{title:"S2W",tags:["连击","lianji","ren","side2wide"],category:"term",content:"Side 2 Wide\\n旁边空2列,是常见的连击打法。\\n难度很低,现代方块对战中新手可以使用,结合Hold可以很轻松地打出大连击。高手场使用不多,因为准备时间太长,会被对面提前打进垃圾行,导致连击数减少或者直接Top Out,效率也没有特别高,故一套打完也不一定能杀人。",link:"",id:"07f6a6ae39c6f305f69df7429220ff63a6071cfa"},{title:"S3W",tags:["连击","lianji","ren","side2wide"],category:"term",content:"Side 3 Wide\\n旁边空3列,不如2w常见的连击打法。能打出的连击数比2w多,但是难度偏大很容易断连。",link:"",id:"2cca6c01af79e69e759f86f4570f6ad664ff8cbc"},{title:"S4W",tags:["连击","lianji","ren","side4wide"],category:"term",content:"Side 4 Wide\\n旁边空4列,一种连击打法,能打出很高的连击,并且准备时间比别的Wide打法短,故动作快的话可以抢在对手打进垃圾之前堆很高然后打出超大连击。\\n(因为可能会被提前打死,风险挺大,所以没有c4w那么不平衡)。",link:"",id:"7a14de9326959417e5c811ebd340880f56332283"},{title:"C1W",tags:["center1wide","centre1wide"],category:"term",content:"Center 1 Wide\\n中间空1列,一种实战里消4同时辅助打TSD的打法,需要玩家理解<平衡法>,熟练之后可以轻松消四+T2输出,难度也不是特别大。",link:"",id:"b4ce63d567c37c06f097c45d017ffb70605e1713"},{title:"C2W",tags:["连击","lianji","ren","center2wide","centre2wide"],category:"term",content:"Center 2 Wide\\n中间空2列,一种可能的连击打法(不常见)。",link:"",id:"aa0d1a282bb055ddc26a7ba114734e046bb22a91"},{title:"C3W",tags:["连击","lianji","ren","center3wide","centre3wide"],category:"term",content:"Center 3 Wide\\n中间空3列,一种可能的连击打法(不常见)。",link:"",id:"80f81c662953d26694fd224ea11744c527f23145"},{title:"C4W",tags:["连击","lianji","ren","center4wide","centre4wide"],category:"term",content:"Center 4 Wide\\n中间空四列,一种连击打法,能打出很高的连击,利用了大多数专业对战方块游戏的死亡判定机制,可以放心堆高不担心被顶死,然后开始连击。是一种利用游戏机制的不平衡策略(尤其在开局时),观赏性不是很强还可以以弱胜强,成本太低所以成为了部分游戏中约定的类似 “禁招” 的东西,请在了解情况后再使用,不然可能会被别人骂。\\nTechmino中虑到了平衡问题,所以c4w的强度没有别的游戏那么夸张。",link:"",id:"d950d193130534afc1172812686626925d48fa7c"},{title:"N-Res",tags:["连击","lianji","ren","residual","c4w","s4w"],category:"term",content:"N-Residual\\nN-剩余,指4w连击楼底部留几个方格,常用的是3-Res和6-Res。\\n3-Res路线少比较好学,成功率也很高,实战完全够用\\n6-Res路线多更难用,但是计算力很强的话比3-Res更稳,也可以用来完成特殊挑战(比如Techmino的c4w练习要求100连击通关)。\\n\\n注:优先使用6-Res,然后是3-res和5-Res,最后是4-Res",link:"",id:"ae65d17fba55bc34655d7d2fccdce8c28b567f1a"},{title:"6–3堆叠法",tags:["六三","63"],category:"term",content:"指左边6列右边3列的堆叠方式。在玩家有足够的计算能力后可以减少堆叠所用的按键数(反之可能甚至会增加),是主流的用于减少操作数的高端40L堆叠方式,原理跟出块位置是中间偏左有关。",link:"",id:"abe1c123e7488798c10a4d4f860486ed30291164"},{title:"Freestyle",tags:["ziyou"],category:"term",content:"自由发挥的意思,常用于freestyle TSD(T2),指不用固定的堆叠方式而是随机应变完成20TSD。比用LST或者垃圾分类完成的20 TSD的难度要大,成绩也更能代表实战水平。",link:"",id:"73f52db58a03c13e29d26f80d0699c11ba402a3e"},{title:"死亡判定",tags:["die","death","siwang"],category:"term",content:"现代方块普遍使用的死亡判定:\\n1. 新出现的方块和场地方块有重叠(窒息,Block Out)(c4w比s4w强的原因,因为被打进18行都不会窒息);\\n2. 方块锁定时完全在场地的外面(Lock Out);\\n3. 场地内现存方块总高度大于40。(超高,Top Out)\\n\\n注:Techmino使用的死亡判定默认不开启第二、三条。",link:"",id:"77ed2d81178ee7f847cd269f297deeaa69478138"},{title:"缓冲区",tags:["buffer","zone","huanchongqu"],category:"term",content:"(不是所有游戏都有这个概念)指10×20可见场地之上的21~40行。因为垃圾行顶起后两边堆高的方块可能会超出屏幕,消行后这些方块要重新回到场地内所以需要保存下来,由于程序上要求场地尺寸有限(部分游戏可以无限),故设定为40,一般都够用。\\n\\n另见 “消失区” 词条。",link:"",id:"6e9167b52a766606983edbf678f3989105a69fea"},{title:"消失区",tags:["vanish","zone","xiaoshiqu"],category:"term",content:"在缓冲区的基础上,指比40行缓冲区还高的区域。\\n标准的死亡判定涉及了这个概念,在垃圾行升起后如果场地上有任何方块超出了40高的缓冲区(也就是达到了消失区)时游戏直接结束。\\n但事实上这块区域在不同游戏中表现不同,甚至有设计者考虑不周导致方块挪到40行以上,但是程序没考虑导致方块接触消失区直接报错闪退的游戏。通常出现在玩家堆了c4w然后被打入大量垃圾行时才会考虑这个概念。其他游戏中方块进入消失区可能直接导致游戏结束,也有可能会出现一些奇怪的bug(附带链接是ppt的复制40行无限Ren视频)。\\n\\n另,Jstris中22行及以上可以理解为消失区,锁定在21行之外的格子会消失。",link:"https://www.bilibili.com/video/BV1ZE411Y7GD",id:"813f5047623daa972c4156c40645df95566a6c65"},{title:"下落速度",tags:["重力","drop","speed","zhongli","gravity"],category:"term",content:"一般用*G表示方块的下落速度,意思是每一帧方块往下移动多少格,一秒下落一格就是1/60G(默认60fps),可以看出G是一个很大的单位。因为场地就20格,所以一般认为20G即为上限,详见20G词条。\\n在Techmino中描述重力的方式是 “每过多少帧下落一格”,例如一秒落一格就对应60(默认60fps)",link:"",id:"fd716418d5981636329309c09701f86a6c62ac3a"},{title:"20G",tags:["高重力"],category:"term",content:"现代方块的最高下落速度,表观就是方块瞬间到底,不存在中间的下落过程,可能会让方块无法跨越壕沟/从山谷爬出。\\n20G一般指的其实是 “无限下落速度” ,就算场地不止20格,“20G” 也会让方块瞬间到底。\\nTechmino(和部分其他游戏,推荐这么设计)中20G的优先级比其他玩家操作都高,即使是0arr的水平方向 “瞬间移动” 中途也会受到20G的影响。",link:"",id:"593ac92b3bffd69d630b1f3578abe4a46c009245"},{title:"锁定延迟(LD)",tags:["重力","lock","delay","lockdown","delay","suoyan","zhongli","gravity"],category:"term",content:"方块<碰到地面到锁定>之间的时间。经典块仅方块下落一格时刷新倒计时,而现代方块中往往任何操作都将重置该倒计时(但是方块本身必须可以移动/旋转),所以连续移动和操作可以让方块不马上锁定,拖一会时间(Techmino和部分游戏重置次数有限,一般是15)。",link:"",id:"cba42b52458bcc1cd1a22af04860ea8ca314cfc5"},{title:"出块延迟(ARE)",tags:["delay","chukuaiyanchi"],category:"term",content:"ARE。方块<锁定完成到下一个方块出现>之间的时间。",link:"",id:"db2eeaa21340ea8a0fe30088d44c2367d2a745d2"},{title:"消行延迟(ARE)",tags:["line","delay","xiaohangyanchi"],category:"term",content:"Line ARE。方块<锁定完成能消行时的消行动画>占据的时间。",link:"",id:"6b6ca1350f6b8147c19409da013707376353660a"},{title:"窒息延迟(DD)",tags:["choke","are","delay","zhixiyanchi"],category:"term",content:"当前方块锁定后如果下一块的生成位置被阻挡,那么下一块的出块延迟会被再额外加上这个延迟的值,方便使用提前系统来避免死亡\\n想法来自NOT_A_ROBOT",link:"",id:"ec00c3637ea72a7bc6ad2fcbf8048c6c3d56176c"},{title:"极简(Finesse)",tags:["极简操作","最简操作","finesse","jijiancaozuo","zuijiancaozuo"],category:"term",content:"用最少的按键数将方块移到想去的位置的技术(大多数时候只考虑纯硬降的落点),节约时间和减少Misdrop。\\n\\n该技能学习越早越好,建议先去找教程视频,看懂了然后自己多练习,开始以准确率第一,速度快慢不重要,熟练后自然就快了。\\n\\n注意,Techmino使用的极简判定系统不是说完全和理论最少操作数一样,而是不需要软降就能达到的位置才会按照标准出块方向和你的按键次数执行极简检测,故在此不像js存在软降后误杀。但是多了一些新的条件,比如已经按了超过3次按键后再hold后按键次数不重置(让下一块极简失误)。\\n极简率计算:\\n没有超过标准极简法操作数的为Perfect计100%,超出一步为Great计50%,超出两步为Bad计25%,两步以上为Miss计0%,其中Bad和Miss会断连\\n\\n注1:一般说的极简不考虑带软降/高重力/场地很高的情况,仅研究空中移动/旋转后硬降。绝对理想的“极简”建议使用“最少按键数/操作数”表达。\\n注2:20G下极简系统和0G一样工作,所以得到的数值不准确,参考价值偏低。",link:"",id:"9f0916c40b130f851a7d9ede8d7c0974eec449c9"},{title:"科研",tags:["keyan"],category:"term",content:"常用语,指在低重力的单人模式里减速研究怎么做各种T-spin,Techmino中拓展了含义,用于称呼几乎需要全程Spin的游戏模式。",link:"",id:"0828e6d1cd44af7467e73713ade3b25590fcc121"},{title:"键位",tags:["keyboard","mapping","jianwei"],category:"term",content:"键位设置原则参考:\\n1.不要让一个手指管两个可能同时按的键,通常只有几个旋转键不需要同时按,其他功能推荐都单独给一个手指\\n2.除非已经在别的游戏里锻炼过小拇指,最好不要用,一般食指和中指最灵活,自己觉得舒服为准\\n3.没必要参考别人的键位设置,每个人都不一样,只要不违反前几条规则,就几乎不会对成绩产生影响。",link:"",id:"b6d25ace7abeac07b7182bbae8c3ae0d9c3a0388"},{title:"手感(Handling)",tags:["手感","feel","shougan"],category:"term",content:"决定手感的几个主要因素:\\n1. 输入延迟受设备配置或者设备状况影响。可以重启/换设备解决;\\n2. 程序运行稳定性程序设计或.实现)得不好,时不时会卡一下。把设置画面效果拉低可能可以缓解;\\n3. 游戏设计故意的。自己适应;\\n4. 参数设置设置不当。去改设置;\\n5. 游玩姿势姿势不当。不便用力,换个姿势;\\n6. 换键位或者换设备后不适应,操作不习惯。多习惯习惯,改改设置;\\n7. 肌肉疲劳反应和协调能力下降。睡一觉或者做点体育运动,过段时间(也可能要几天)再来玩。",link:"",id:"ba1f5e400e9e260fcb22478326e450b1374bc4de"},{title:"DAS通俗",tags:["das","arr","simple","tongsu"],category:"term",content:"打字时按住o,你会看到:ooooooooooo…\\n在时间轴上:o—————o-o-o-o-o-o-o-o-o…\\n—————就是das长度,-就是arr长度。\\n详见 DAS & ARR 词条。",link:"",id:"0d9a27fed35a633c199478e89b4877e22c091be6"},{title:"DAS & ARR",tags:["灵敏度","arr"],category:"term",content:"DAS(Delay-auto-shift,自动加(延迟)具体指从<按下移动键时动了一格>到<开始自动移动>之间的时间。\\nARR(Auto-repeat-rate),自动重复速率,指<每次自动移动>之间的时间\\n单位都是f(帧,1帧=1/60秒)\\n别的游戏里用的单位可能是ms(毫秒),乘16.7就可得出大约的对应数值,例如4f≈67ms。",link:"",id:"8d76369c3989fdbad47f194a6721a15745c5215a"},{title:"DAS调节",tags:["调节","arr","tuning","tiaojie"],category:"term",content:"对于不是刚入门的并且了解极简操作的玩家来说推荐ARR=0,DAS=4~6(具体看个人手部协调性,只要能控制区别就不大)。\\n新人如果实在觉得太快可以适当增加一点DAS,ARR要改的话强烈建议不要超过2\\n\\n最佳调整方法:DAS越小越好,小到依然能准确区分单点/长按为止;ARR能0就0,游戏不允许的话就能拉多小拉多小。",link:"",id:"714a9aa32a049c16cdc992faa8ea0bf6d9e31bd8"},{title:"DAS打断(DCD)",tags:["dascut","dcd","daduan"],category:"term",content:"Techmino中指玩家的操作焦点转移到新方块的瞬间,此时减小(重置)DAS计时器,让自动移动不会立刻生效,减少 “移动键松开晚了导致下一块一出来就立即开始移动” 的情况\\n注:其他游戏中的DAS打断机制可能和Techmino的有区别,仅供参考。",link:"",id:"2724d9482ca6cf5f7780bf4adb94080661c784bd"},{title:"IRS打断(ICD)",tags:["irscut","icd","daduan"],category:"term",content:"(由Electra设计)新方块生成时触发IRS的特殊延迟。在没有生成延迟时,这会让预输入的旋转动作延迟一段时间再生效,允许晚一点松开旋转键防止md。",link:"",id:"4013cf3d649aabed16375e601951cbdf05ba40d2"},{title:"误硬降打断(HCD)",tags:["autolockcut","mdcut","daduan"],category:"term",content:"为了防止玩家硬降时当前方块已经锁定,下一块出现就被立刻硬降导致严重md,所以设计了此打断参数。\\n方块自然锁定之后几帧内硬降键是无效的,具体看设置了多久。\\n注:其他游戏中的防误硬降机制可能和Techmino的有区别,仅供参考。",link:"",id:"02327feae6a40b0064139219288c54efccffe95b"},{title:"软降倍率(SDF)",tags:["软降速度","sdf","softdropfactor"],category:"term",content:"Soft Drop Factor,软降速度因子(倍率)\\n部分游戏中的软降机制就是在按住软降键时方块受到的重力变为原来的若干倍,SDF就是这个变大的倍数。\\n基本所有官块和TETR.IO使用这个机制,但Techmino不使用。",link:"",id:"ed0dcb1d6b8c94f29128c763c43bcba65efb23c9"},{title:"方块名称",tags:["mino","name"],category:"term",content:"这是一个Techmino使用的所有方块的名称和其对应的形状:\\n四连块:\\nZ:`CHAR.mino.Z`, S:`CHAR.mino.S`, J:`CHAR.mino.J`, L:`CHAR.mino.L`, T:`CHAR.mino.T`, O:`CHAR.mino.O`, I:`CHAR.mino.I`;\\n\\n五连块:\\nZ5:`CHAR.mino.Z5`, S5:`CHAR.mino.S5`, P:`CHAR.mino.P`, Q:`CHAR.mino.Q`, F:`CHAR.mino.F`, E:`CHAR.mino.E`, T5:`CHAR.mino.T5`, U:`CHAR.mino.U`, V:`CHAR.mino.V`, W:`CHAR.mino.W`, X:`CHAR.mino.X`, J5:`CHAR.mino.J5`, L5:`CHAR.mino.L5`, R:`CHAR.mino.R`, Y:`CHAR.mino.Y`, N:`CHAR.mino.N`, H:`CHAR.mino.H`, I5:`CHAR.mino.I5`;\\n\\n一至三连块:\\nI3:`CHAR.mino.I3`, C:`CHAR.mino.C`, I2:`CHAR.mino.I2`, O1:`CHAR.mino.O1.",link:"",id:"d51b01e8c89b952743576b83d33b2834a6274475"},{title:"Bag7出块",tags:["sequence","bag出块","bag7bag"],category:"term",content:"一种出块方式,现代方块普遍使用该规则,开局起每7个块是7种形状各出现一次,避免了很久不出某个块和某个块来得特别多,是一些现代方块战术的基础。\\n\\n例如:\\nZSJLTOI OTSLZIJ LTISZOJ",link:"",id:"92406cc044213853fc3bd31c024d68b4b20c1e46"},{title:"His出块",tags:["sequence","His出块","history","h4r6"],category:"term",content:"一种的出块方式,例如His4 Roll6 (h4r6)就是在随机生成新的 Next 的时候,随机一个跟最后4次生成的Next中有一样的,就重新随机,直到已经尝试6次或和那4个都不一样。\\nTechmino的His序列模式中最大Roll次数为序列长度的一半(向上取整)\\n\\n是纯随机出块的一大改进,大大减小了连续出几个SZ(洪水)的概率。",link:"",id:"423effd78b3021cc3b55cd952f3cc4d6680a65fb"},{title:"HisPool出块",tags:["sequence","HisPool出块","history","h4r6","pool","hispool"],category:"term",content:"一种出块方式,History Pool,his算法的分支,比较复杂,这里只提供大概的说明:\\n在His的基础上添加了一个Pool(池),在取块的时候his是直接随机和历史序列(最后4次生成的next)比较,而HisPool是从Pool里面随机取(然后补充一个最旱的块增加他的概率)然后和历史序列比较。\\n\\n这个算法让序列更稳定,介于His和Bag之间,在理论上保证了干旱时间不会无限长。",link:"",id:"2e5deaf94db4d556279b0858fa1d812a14c75fb0"},{title:"bagES出块",tags:["sequence","bages出块","easystart"],category:"term",content:"(该词仅在Techmino内使用)Bag Easy-Start(Bag简单开局),Bag算法的分支,开局第一包的第一块不会是S/Z/O/S5/Z5/F/E/W/X/N/H。",link:"",id:"b4388de53409c80e4752ec3630b7eaf179c23fa1"},{title:"Reverb出块",tags:["sequence","reverb出块"],category:"term",content:"(该词仅在Techmino内使用)回声出块,Bag算法的分支,把Bag的每一块重复随机次数(重复越多概率越小,理论范围是0~6,具体比较复杂这里不展开)",link:"",id:"e0e9047ea536cae2e9bde52ac2abb519f57bcabd"},{title:"C2出块",tags:["sequence","C2出块","cultris2"],category:"term",content:"(七个块初始权重设为0)把七个块的权重都除以2然后加上0~1的随机数,哪个权重最大就出哪个块,然后将其权重除以3.5\\n循环。",link:"",id:"c39a6f5bc5e49f3ee15690e18428f5e73b70d31a"},{title:"超连点(Hypertap)",tags:["chaoliandian"],category:"term",content:"快速震动手指,实现比长按更快速+灵活的高速单点移动,主要在经典块的高难度下(因为DAS不可调而且特别慢,高速下很容易md导致失败,此时手动连点就比自动移动更快)或者受特殊情况限制不适合用自动移动时使用。会使用这个技术的人称为 “Hypertapper”。",link:"",id:"c1498de2cb7e50a3d271293b10d0f4c1fce52958"},{title:"轮指(Rolling)",tags:["lunzhi","liandian"],category:"term",content:"另一种快速连点方法,用于DAS/ARR设置非常慢时的高重力(1G左右)模式。\\n先把手柄(键盘……可能也行吧)悬空摆好,比如架在腿上,要连点某个键的时候一只手虚按按键,另外一只手的几根手指轮流敲打手柄背面, “反向按键” 实现连点。这种控制方法可以让玩家更轻松地获得比直接抖动手指的Hypertap(详见超连点词条)更快的控制速度。\\n此方法最先由Cheez-fish发明,他本人则使用Rolling达到过超过20Hz的点击频率。",link:"",id:"14f9e9ad51eb3c6b0b82a8b06434a6c8b4bf02c9"},{title:"穿透(Passthrough)",tags:["pingthrough","chuantou"],category:"term",content:"(攻击)穿透,指双方的攻击打出后没有抵消,互相都收到的现象。\\nTETR.IO中自定义房间如果开启Passthrough规则(曾经天梯默认开启),那么对手消行攻击的瞬间能看到自己的红条出现但其处于 “无敌时间” 内,不会触发也不能抵消,此时你的攻击会直接打给对手。(应该是给攻击的飞行动画预留时间,同时也让玩家能反应过来并主动选择要不要抵消,要的话就再等一会)\\n另有pingthrough的说法,只是原因是由于不可避免的网络传输延迟,效果同passthrough,设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",link:"",id:"b1b57177465e540c5d10340a25ceac66587d9548"},{title:"TOP攻击表",tags:["攻击表","top","attack"],category:"term",content:"消1/2/3/4打0/1/2/4\\nTspin攻击为消行数×2,如果符合Mini条件则÷2\\n连击攻击:001122334445+\\nb2b攻击+1(如果是T3则+2)\\nPC攻击+6(该部分攻击AOE直接打出到所有对手,不抵消缓冲槽中的攻击)。",link:"",id:"4daf8d019b2eb498b905f00ea3815c997957a3c1"},{title:"Techmino攻击表",tags:["攻击表","tech","attack"],category:"term",content:"详见主菜单右下角的说明书页面。",link:"",id:"f88d073399916d52e4576228ab74680da960ce86"},{title:"堆叠(Stack)",tags:["duidie","stacking"],category:"term",content:"将方块无缝隙地堆起来,需要玩家有预读Next的能力,可以通过不使用Hold并且用十个消四完成40L模式进行练习。\\n这项能力从入坑到封神都是非常重要的。",link:"",id:"e1111237dcf2dedead39b5ad821680fd3e54968c"},{title:"双旋",tags:["shuangxuan"],category:"term",content:"指能够使用顺时针+逆时针两个旋转键的技术,原来要转三下的情况可以反向转一下就够,减少烦琐操作。\\n同时双旋也是学习Finesse的必要前提。\\n\\n另见 三旋。",link:"",id:"75fbfc8a44f1c4e7ad7442c8d2bf3bbeee964f84"},{title:"三旋",tags:["sanxuan"],category:"term",content:"指能够使用顺+逆时针+180°旋转三个旋转键的技术,任何方块放哪只需要旋转一次即可(Spin不算)。\\n但由于只有部分游戏有180°旋转所以改操作并不通用,而且对速度提升的效果不如从单旋转双旋显著,不追求极限速度的玩家可不学。",link:"",id:"2b9fb0b0a34906a3e0661bfc42cdd4f5d22d1bdc"},{title:"干旱(Drought)",tags:["ganhan"],category:"term",content:"经典块术语,指长时间不来I方块(长条)。现代方块使用的Bag7出块规则下干旱几乎不可能,平均7块就会有一个I,理论极限两个I最远中间隔12块。",link:"",id:"a7354647df19e4542dd2c518a87cc5a34dc07c3d"},{title:"骨块(Bone)",tags:["gukuai","bone","tgm"],category:"term",content:"最早的方块游戏使用的方块样式。\\n很久以前的电脑没有可以显示复杂图案的屏幕,只能往上打字,所以一格方块用两个方括号[ ]表示,长得像骨头所以叫骨块。\\n基于骨块的特点,Techmino把骨块重新定义为, “所有形状使用的同一个比较花眼的贴图”,不同的皮肤有不同的骨块样式。",link:"",id:"fa88022dae3dd8d347497269989b0c970fb331e8"},{title:"半隐",tags:["banyin","half","semi","invisible"],category:"term",content:"指方块锁定经过一段时间后会变隐形的规则\\n注:从锁定开始到消失的具体时长不定,可以描述为 “过几秒种后消失”。",link:"",id:"47bab3efe4a80330b0e3296dd5cefa2ef5947479"},{title:"全隐",tags:["quanyin","invisible"],category:"term",content:"指方块锁定后会马上完全隐藏\\n注:锁定时有消失动画的话也可以叫全隐,但其实难度会小一点,故Techmino中没有动画的隐形模式叫瞬隐。",link:"",id:"7fde031fd2c446dcc6febc1460e7a176aea0f76f"},{title:"场地重力",tags:["重力","zhongli","liansuo","cascade","chain"],category:"term",content:"(由于 “重力” 有歧义所以本词典里称为场地重力,也有重力连锁等叫法。)\\n部分游戏的部分模式可能包含此规则。此规则下玩家的四格方块四个方向有连接关系,连起来的几个格整体会受到重力影响,悬空了会往下落。在这个规则下可以构造复杂的连锁消除,一个主打连锁消除对战的游戏是Qudra(老游戏,现在基本没人玩)。",link:"",id:"5c34f773590a91d1ead56e3ee96f72ac256becf0"},{title:"MPH模式",tags:[],category:"term",content:"一个游戏模式:\\nMemoryless,Previewless,Holdless\\n纯随机块序+无Next+无Hold完成40L,一个非常考验玩家反应速度的模式。",link:"",id:"eee83ba245a28aa022fef3efc11326147659b7ff"},{title:"输入延迟",tags:["input","delay","yanchi"],category:"term",content:"用任何设备玩任何游戏时,所有的操作(按键盘,点鼠标等)都会晚一点点(很短,几毫秒到几十毫秒)才到达游戏,如果过长就会很影响游戏手感,作用效果类似于你拿QQ远程控制打FPS游戏\\nTOP、TE等游戏比较明显\\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点。",link:"",id:"4b8c50985cdd542e3c94c9a2b79395c49418d15e"},{title:"秘密段位",tags:["大于号","secret","grade","dayuhao"],category:"term",content:"出自TGM系列的彩蛋玩法。不按照TGM的一般目标去玩,而是去拼图拼出 “每行仅有一个洞的大于号” 图形(不能是小于号),拼得越多获得的秘密段位越高(没特殊功能,只是好玩),最高目标是完成19行并封顶\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"b263f6c990a57a26633cc7bd003908670ee7f646"},{title:"Cold Clear",tags:["机器人","电脑","cc","coldclear","ai","bot","jiqiren"],category:"term",content:"一个AI的名字(就跟AlphaGo一样)\\n由MinusKelvin开发,本来是用于PPT的。在Techmino中经过调整后支持all-spin和TRS旋转系统",link:"",id:"aa68bfd12693bbbe20dff6ffd916a3dac4a6e3c9"},{title:"ZZZbot",tags:["机器人","电脑","ai","bot","jiqiren","zzztoj"],category:"term",content:"一个AI的名字(就跟AlphaGo一样)\\n由研究群群友奏之章开发,重新调参后在各个游戏平台上的表现都很不错。",link:"",id:"9af34345ce55a382489268c7758029aafa1a9163"},{title:"开局定式(Setup)",tags:["opening","kaijudingshi","opener"],category:"setup",content:"开局定式,定式一般指开局定式这个概念。\\n指开局后可以使用的套路摆法。局中情况合适的时候也可以摆出同样的形状,但是和摆法开局一般都不一样。\\n\\n能称为定式的摆法要尽量满足以下至少2~3条:\\n能适应大多数块序\\n输出高,尽量不浪费T块\\n很多方块无需软降,极简操作数少\\n有明确后续,分支尽量少。\\n\\n注:绝大多数定式基于bag7,序列规律性强才有发明定式的可能。",link:"",id:"df652018abcf82abc6dbe1a339e8e6a376a20c35"},{title:"DT炮",tags:["dt","cannon"],category:"setup",content:"Double-Triple Cannon。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=dt",id:"c84eb90518d81cc527fbe8233887f47772125423"},{title:"DTPC",tags:["dtpc"],category:"setup",content:"DT炮一个能接PC的分支。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=dt",id:"a5d683b4cf6ae65cb6633c7f0d69b62c5d1c58d5"},{title:"BT炮",tags:["bt","cannon"],category:"setup",content:"β炮(Beta炮)。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=bt_cannon",id:"854c5cc7f35829e88a6eccf9fbbb6fa89edaa8ab"},{title:"BTPC",tags:["btpc"],category:"setup",content:"BT炮一个能接PC的分支。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=bt_cannon",id:"d758cb387934a6b3d01fbd987a7aafc0b97de136"},{title:"DDPC",tags:["ddpc"],category:"setup",content:"开局TSD的一个能接Double-Double-PC的分支。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"eb6ac16e737090768cffadbf9d024d232d3ff7af"},{title:"QT炮",tags:["qt","cannon"],category:"setup",content:"一种能以更高的概率搭出开局DT Attack的类似DT炮的定式。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=dt",id:"608966e445c2fdd79a54e70ebc9fedeb7d1d7122"},{title:"MT",tags:["mt"],category:"setup",content:"Mini-Triple\\n一个TSM+TST的结构。",link:"https://harddrop.com/wiki?search=mt",id:"6fed69798ff5f0e5689ae087f81e5cefd51d95a2"},{title:"Trinity",tags:["trinity"],category:"setup",content:"Trinity\\n一个TSD+TSD+TSD或TSM+TST+TSD的结构。",link:"https://harddrop.com/wiki?search=trinity",id:"23311c901e3148d98252db6bfcb25186c997d400"},{title:"狼月炮",tags:["wolfmoon"],category:"setup",content:"狼月炮。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"1cb20b42ac498a3b3ae7032b112e66984a9cfed1"},{title:"Sewer",tags:["sewer"],category:"setup",content:"Sewer开局。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=sewer",id:"2dc57fa414902fa0d8b754ed37593d60ef925fb0"},{title:"TKI",tags:["tki-3"],category:"setup",content:"TKI-3开局\\n有两种解释,一个是TSD开局的TKI-3,另一个是TST开局的TKI堆积(C-Spin)。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=TKI_3_Opening",id:"a0ddc8f6275de58166709571717aa865521fff23"},{title:"God Spin",tags:["god"],category:"setup",content:"God Spin\\nwindkey发明的一个观赏性很强但实战没啥用的炫酷特殊T2+T3开局定式。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=godspin",id:"861f1341d8cf426b7482a71a3dd9a10efa1c7318"},{title:"信天翁",tags:["xintianweng","albatrosssp","albatrossspecial"],category:"setup",content:"一种高观赏性几乎不浪费T的快节奏强力T2-T3-T2-PC开局。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"ffb2e6595a86705f093e21e6db7b9ae0188f04b6"},{title:"鹈鹕",tags:["tihu","pelican"],category:"setup",content:"一种类似信天翁的定式,在块序不能信天翁的时候可以用。",link:"https://harddrop.com/wiki?search=Pelican",id:"016a737dc0e2d0cd07623cef2e04b365f7bb6175"},{title:"全清开局",tags:["qiqiaoban","tangram","pco","1stpc"],category:"setup",content:"Perfect Clear Opener,一种极大概率能摆出来,有概率(hold I约84.6%,不hold I约61.2%)能做到PC的定式,Techmino中的pc练习中空出不规则区域的那个就是PCO。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"6a8be4405e98915f6655789010f64ea014202aa9"},{title:"六巧板",tags:["liuqiaoban","gracesystem","1stpc"],category:"setup",content:"Grace System,大约有88.57%概率能做到PC的定式,Techmino中的PC练习中空出4×4方形区域就是六巧板。",link:"",id:"bf995e4847e5cd95771228fcf7bd6fe129b6615e"},{title:"DPC",tags:["DPC"],category:"setup",content:"在场地空白,7bag还剩一块的情况下,能在很多情况下达到100%搭建率的TSD+PC的定式。更多信息见tetristemplate.info",link:"https://tetristemplate.info/dpc/",id:"5f2e2f1cc0015f54f03388e081451126c9294593"},{title:"Gamushiro堆叠",tags:["gamushiro"],category:"setup",content:"ガムシロ積み(Gamushiro堆叠),一种开局TD-Attack的定式。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"9ea080e44e71da0764fb3bf657b608d9877ea469"},{title:"中局定式",tags:["setup","dingshi"],category:"pattern",content:"指一些特定的能打出较高伤害的常见典型形状,是中局输出的途径之一,部分也可以在开局做不过不是很有必要,主要见于中局\\n另见开局定式,只说定式两个字一般指开局定式而非中局。",link:"",id:"b8a0ea574618943723ad374fd32c184ee33555f6"},{title:"C-Spin",tags:["cspin","tki","tdattack"],category:"pattern",content:"也被称为TKI堆积,TD-Attack。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=c-spin",id:"80bd39535beca0977d6ef4b4e1da7f1dd78e8666"},{title:"STSD",tags:["stsd"],category:"pattern",content:"Super T-spin Double\\n一种能做两个T2的形状。\\n如果垃圾行正好空在STSD正下方会暴毙。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=stsd",id:"4c2dddaa7f9e3e890715087dfa785b71988d0fab"},{title:"STMB",tags:["stmb"],category:"pattern",content:"STMB cave\\n在3宽坑架SZ捐一个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=stmb_cave",id:"7d7819f74cdba0e2ba8956c291e372334897409f"},{title:"双刃剑",tags:["shuangrenjian","fractal","spider"],category:"pattern",content:"两个T2形状叠在一起。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Fractal",id:"3fe3869cbb75d97edff943068639e1a0dd56cb77"},{title:"LST堆叠",tags:["lst"],category:"pattern",content:"一种不断b2b一直做T2的堆叠方法。",link:"https://www.bilibili.com/read/cv7946210",id:"eae9d6dffafeeac8a7683d47fa35bf1387b161e1"},{title:"汉堡包",tags:["hamburger","hanbaobao"],category:"pattern",content:"一种边缘捐T不影响消四的堆叠法。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=hamburger",id:"8e717c458a3b14f828d5b3829abe39109fb9e7ba"},{title:"皇家十字",tags:["皇十","imperial","cross","huangjiashizi","huangshi"],category:"pattern",content:"在一个十字形洞口盖屋檐后可以做两个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=imperial_cross",id:"cf30af122ab4aad55cb2d90d17c2d22f77d677e6"},{title:"阶梯捐",tags:["jieti","kaidan","stairs"],category:"pattern",content:"一种在看起来像阶梯的洞口捐一个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=kaidan",id:"035364df33e068fd79e878d2303b70187bee5f4a"},{title:"社畜train",tags:["shachikutrain","shechu"],category:"pattern",content:"一种在常见T3屋檐上捐两个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"e015095785d0949e6898d105da1a796bbe580de9"},{title:"千鸟格子",tags:["qianniaoge","cutcopy"],category:"pattern",content:"一种在小洞上捐一个T2后还能做一个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Cut_copy",id:"6a0f2dbe037b8fb75aabb6240edf036b4ea2d47e"},{title:"绯红之王",tags:["feihongzhiwang","king","crimson"],category:"pattern",content:"在STSD上叠若干个T3的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=King_Crimson",id:"bf80c9c23c1f3b4f479cdc131ee85967ed70903a"},{title:"连续PC",tags:["lianxuquanxiao","lianxupc","pcloop"],category:"pattern",content:"研究群群友加加编写的一份连续PC教程",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"e52690d229e9ebba6cdbc9c6a3a16f4a144ad223"},{title:"控制台",tags:["console","cmd","commamd","minglinghang","kongzhitai"],category:"command",content:"目前进入控制台的方式是在主菜单 点特定位置/按键盘某个键 数次。\\n\\n进入之后输入help并回车获取更多信息。\\n来探索Techmino的隐藏内容和计算机更底层的操作吧!",link:"",id:"58bfbde2b073f0a77bb297ea9cf87bb9e69a7ddd"},{title:"重置设置",tags:["reset","setting","chongzhi","qingkong","shezhi"],category:"command",content:"前往控制台输入 “rm conf/setting” 并回车\\n需要重启游戏生效,若反悔,进入设置菜单再退出即可恢复文件。",link:"",id:"5cf66cac5ce8974668c71eaf7447618388f55dfd"},{title:"重置统计数据",tags:["reset","statistic","data","chongzhi","tongji","shuju"],category:"command",content:"前往控制台输入 “rm conf/data” 并回车\\n需要重启游戏生效,若反悔,玩一局并触发结算即可恢复文件。",link:"",id:"fe34cb829dd263aae56f93719b6da410047b17c6"},{title:"重置解锁状态",tags:["reset","unlock","chongzhi","qingkong","jiesuo"],category:"command",content:"前往控制台输入 “rm conf/unlock” 并回车\\n需要重启游戏生效,若反悔,刷新任意一个模式在地图上的状态即可恢复文件。",link:"",id:"8d5f7b81b58cbe28222bef8dbf42b07f8567c1bc"},{title:"重置本地排行榜",tags:["reset","chongzhi","paihangbang"],category:"command",content:"前往控制台输入 “rm -s record” 并回车\\n需要重启游戏生效,若反悔,玩一局并更新模式排行榜即可恢复对应模式的单个排行榜文件。",link:"",id:"e4dc5fc185f02353923de956ac63bd744d936941"},{title:"删除键位",tags:["reset","virtualkey"],category:"command",content:"前往控制台输入 “rm conf/键位文件” 并回车\\n键盘是key,虚拟按键是virtualkey,虚拟按键预设是vkSave1(2)\\n前两者重启生效,若反悔,进入对应的设置菜单再返回即可恢复文件。",link:"",id:"437023db6d0bee3d8e0c81f8c2f301475e93eec0"},{title:"删除录像",tags:["reset","replay","luxiang"],category:"command",content:"前往控制台输入 “rm -s replay” 并回车。\\n立即生效。",link:"",id:"c9905d35c87bcb02cb6576609738534e93ee738e"},{title:"删除缓存",tags:["reset","cache","huancun","touxiang"],category:"command",content:"前往控制台输入 “rm -s cache” 并回车。\\n立即生效。",link:"",id:"870fc3b86c4332d84a0e9291d1b0cda4e6e9d74b"},{title:"SFX",tags:[],category:"english",content:"Sound Effects\\n音效(也叫SE)。",link:"",id:"b0c8b2616fcf55db02517b967976e5aef6ba218b"},{title:"BGM",tags:[],category:"english",content:"Background Music\\n背景音乐。",link:"",id:"3a8fc0e11631d265ee0184469d7f69816f5f50ec"},{title:"TAS",tags:[],category:"english",content:"Tool-Assisted Speedrun(Supergaming)\\n使用特殊工具在不破坏游戏规则(允许超越人类操作,只是在程序层面不作弊)进行的游戏。\\n一般用于冲击理论值或者达成各种有趣的目标用来观赏。\\nTechmino中内置了非常简单的TAS工具。",link:"",id:"140296e9534655c0627b934e13cbc2ee04786f64"},{title:"AFK",tags:[],category:"english",content:"Away from keyboard\\n一段时间不接触键盘,就是不玩一段时间,可以缓解手部疲劳,休息好之后马上破纪录也是可能的。",link:"",id:"62acb2a49a166fd8b2db6a593c4d07c4f7b6cfca"},{title:"Timing",tags:["timing","shiji","fanji"],category:"term",content:"Time作动词时的动名词形式,意为抓时机。在方块中往往指根据双方形势选择打出攻击的时机,和要不要故意吃下对手的攻击防止抵消,然后再把自己的攻击打过去。可以一定程度上提高对战的优势,但对于新人来说连自己场地都看不明白还看啥对面,有时间分析形势不如提速提效来得更好。",link:"",id:"4c1cfa04c2082a6eaeccc2526824dfb211e2ca27"}],MR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},DR=Gt("path",{d:"M12 3h.393a7.5 7.5 0 0 0 7.92 12.446A9 9 0 1 1 12 2.992z",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),OR=[DR],LR=de({name:"Moon",render:function(t,n){return Fe(),bn("svg",MR,OR)}}),HR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},$R=Gt("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[Gt("circle",{cx:"12",cy:"12",r:"4"}),Gt("path",{d:"M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7l-.7.7m0 11.4l.7.7m-12.1-.7l-.7.7"})],-1),BR=[$R],NR=de({name:"Sun",render:function(t,n){return Fe(),bn("svg",HR,BR)}});var zR=function(e,t,n){if(n||arguments.length===2)for(var o=0,r=t.length,i;oscreen.width<640),a=Yi(),s={en:AR,ja:RR,zh:IR,vi:ER},l=z(()=>s[a.locale.value]);jh(()=>{function f(){location.hash.length>1&&(o.value=os([...s.en,...s.ja,...s.zh,...s.vi],b=>b.id===location.hash.substring(1)))}window.addEventListener("hashchange",()=>{f()}),f()});const c=z(()=>{const f=l.value.filter(b=>{const p=r.value.toLowerCase();return[!!b.title.toLowerCase().match(p),b.tags.map(m=>m.toLowerCase()).includes(p)].includes(!0)});return bc(f,b=>b.category)});function d(){if(t.theme==="light"){t.theme="dark";return}t.theme="light"}function u(){o.value=void 0,location.replace(new URL(location.pathname,location.href).toString())}function h(f){u(),r.value=f}function g(f){t.locale=f,a.locale.value=f}return jh(()=>{a.locale.value=t.locale}),(f,b)=>{const p=yd,m=Qa,k=u8,T=qb,v=I_,x=ew,A=$8,y=Jw,R=o9,P=O7,D=G7,W=K7,M=j7;return Fe(),wt(TR,null,{default:Se(()=>[me(M,{"native-scrollbar":"",position:"absolute"},{default:Se(()=>[me(D,{class:"pb-16 mx-2","native-scrollbar":""},{default:Se(()=>[me(T,{class:"mt-2",justify:"space-between"},{default:Se(()=>[me(m,{onClick:d},{icon:Se(()=>[me(p,{component:Ne(t).theme==="light"?Ne(LR):Ne(NR)},null,8,["component"])]),_:1}),me(k,{options:n,value:f.$i18n.locale,animated:"",trigger:"click",onSelect:g},{default:Se(()=>[me(m,null,{icon:Se(()=>[me(p,{component:Ne(Q_)},null,8,["component"])]),_:1})]),_:1},8,["value"])]),_:1}),me(T,{class:"sm:w-1/3 mx-auto mt-20",vertical:""},{default:Se(()=>[me(Ne(Ma),{class:"text-center"},{default:Se(()=>[me(v,null,{default:Se(()=>[_t(Tn(f.$t("title")),1)]),_:1}),Ne(o)?(Fe(),wt(T,{key:1,justify:"center"},{default:Se(()=>[me(m,{onClick:u},{default:Se(()=>[_t(Tn(f.$t("back")),1)]),_:1})]),_:1})):(Fe(),wt(x,{key:0,value:Ne(r),"onUpdate:value":b[0]||(b[0]=j=>ct(r)?r.value=j:null),placeholder:f.$t("search"),clearable:""},null,8,["value","placeholder"]))]),_:1}),me(A)]),_:1}),me(T,{size:"large",vertical:""},{default:Se(()=>[Ne(o)?(Fe(),wt(Ne(Ma),{key:1,class:"sm:w-1/3 mx-auto"},{default:Se(()=>[me(pR,{item:Ne(o),onTagClick:h},null,8,["item"])]),_:1})):(Fe(),wt(T,{key:0,vertical:""},{default:Se(()=>[(Fe(!0),bn(He,null,_a(Ne(c),(j,ee)=>(Fe(),wt(T,{class:"text-center",vertical:""},{default:Se(()=>[me(Ne(rc),{style:ss({color:Ne(Pl)[ee]}),class:"font-bold text-2xl",type:"info"},{default:Se(()=>[_t(Tn(ee),1)]),_:2},1032,["style"]),Ne(i)?(Fe(),wt(P,{key:1,cols:3,"x-gap":10,"y-gap":10,class:"text-center"},{default:Se(()=>[(Fe(!0),bn(He,null,_a(j,B=>(Fe(),wt(R,null,{default:Se(()=>[me(m,{color:Ne(Pl)[ee],class:"w-full",onClick:X=>o.value=B},{default:Se(()=>[me(Ne(Ms),null,{trigger:Se(()=>[me(y,null,{default:Se(()=>[me(ic,{item:B},null,8,["item"])]),_:2},1024)]),default:Se(()=>[_t(" "+Tn(B.title),1)]),_:2},1024)]),_:2},1032,["color","onClick"])]),_:2},1024))),256))]),_:2},1024)):(Fe(),wt(T,{key:0,justify:"center"},{default:Se(()=>[(Fe(!0),bn(He,null,_a(j,B=>(Fe(),wt(m,{color:Ne(Pl)[ee],size:"small",onClick:X=>o.value=B},{default:Se(()=>[me(ic,{item:B},null,8,["item"])]),_:2},1032,["color","onClick"]))),256))]),_:2},1024))]),_:2},1024))),256))]),_:1}))]),_:1})]),_:1}),me(W,{class:"py-2",position:"absolute"},{default:Se(()=>[me(T,{size:0,justify:"center"},{default:Se(()=>[me(Ne(Ma),null,{default:Se(()=>[me(Ne(rc),null,{default:Se(()=>[_t(Tn(f.$t("maker"))+": ",1)]),_:1}),me(m,{href:"https://zhazha120.cn",tag:"a",text:"",type:"primary"},{default:Se(()=>b[1]||(b[1]=[_t(" WOSHIZHAZHA120")])),_:1})]),_:1}),me(A,{vertical:""}),me(m,{href:"https://github.com/26F-Studio/techmino-online-dict",tag:"a",text:"",type:"primary"},{default:Se(()=>b[2]||(b[2]=[_t(" Github ")])),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}}),Od=O2({render:()=>S(jR)});Od.use(_R);Od.use(PR);Od.mount("#app")});export default GR(); +nhưng gửi thẳng vào bảng đối thủ thay vì không hủy rác tới.`,link:"",id:"4765c7bf8080dc446727783cbfb98218e2d6d1cb"},{title:"Techmino attack",tags:["nhom13","techminoattack"],category:"term",content:'Cách tính tấn công trong Techmino\\n\\nĐể biết công thức tính, hãy xem \\"hướng dẫn sử dụng\\" bằng cách nhấn nút`CHAR.icon.helpở màn hình chính của game.\\n\\nNhấn nút hình địa cầu sẽ dẫn bạn tới một bảng tấn công đã được tính sẵn và bạn chỉ cần cộng dồn lại các giá trị bạn muốn để biết kết quả.',link:"https://media.discordapp.net/attachments/743861514057941204/1093386431096950815/Untitled.jpg",id:"bbb10059789fa25b2075ebc36ab81951fe6d159a"},{title:"=[NHÓM 14]=",tags:["nhom14"],category:"",content:"NHÓM 14: CONSOLE VÀ CHUYỆN QUẢN LÝ DỮ LIỆU GAME",link:"",id:"0f625146ccf71925c820a7deea6185e2e327db43"},{title:"Console",tags:["nhom14","cmd","commamd","terminal","console"],category:"command",content:"Techmino có một console cho phép kích hoạt tính năng gỡ lỗi và bật các tính năng nâng cao.\\nĐể truy cập, hãy chạm vào logo Techmino / nhấn phím C 4 lần, tại màn hình chính.\\n\\nCẢNH BÁO! CÓ RỦI RO KHI TIẾN HÀNH\\nHành động bất cẩn trong console có thể dẫn đến HƯ HỎNG\\nhoặc MẤT TOÀN BỘ dữ liệu đã lưu KHÔNG THỂ PHỤC HỒI.",link:"",id:"c4701699df064f6742c450c9f0713b5e8b602584"},{title:"Đặt lại thiết lập",tags:["nhom14","reset","setting"],category:"command",content:'Vào console, gõ \\"rm conf / setting\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nĐể hoàn tác / hủy bỏ thay đổi đã thực hiện, hãy vào Cài đặt rồi trở ra.',link:"",id:"46bfb4151deb3340b4565c5df3feef7b2e16adbe"},{title:"Xóa t.bộ thành tích",tags:["nhom14","reset","statistic","data"],category:"command",content:'Xóa toàn bộ thành tích\\n\\nVào console, gõ \\"rm conf / data\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nĐể hoàn tác / hủy bỏ thay đổi đã thực hiện, chơi một chế độ bất kỳ sau đó nhận màn hình Thắng / Thua',link:"",id:"9380af19a9eb44c593811bef033438d35ab745e4"},{title:"Khóa t.bộ map",tags:["nhom14","reset","unlock"],category:"command",content:'Tất cả các mode sẽ bị khóa lại như khi bạn vừa mới vào chơi lần đầu.\\n\\nVào console, gõ \\"rm conf / unlock\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nĐể hoàn tác / hủy bỏ thay đổi đã thực hiện, cập nhật lại tình trạng của một chế độ bất kỳ.',link:"",id:"7a138f3a53a945c1ebbe1d09e19791b16ab8cb43"},{title:"Xóa t.bộ kỷ lục",tags:["nhom14","reset","record"],category:"command",content:'Xóa toàn bộ kỷ lục\\n\\nVào console, gõ \\"rm -s record\\" sau đó nhấn Enter / Return.\\nKhởi động lại Techmino để thay đổi có hiệu lực.\\nBạn có thể hoàn nguyên hành động này trên cơ sở từng chế độ; chơi một chế độ và cập nhật bảng xếp hạng để khôi phục bảng xếp hạng của chế độ đó.',link:"",id:"e9fa1b2a3f8909dfa1168c6014f6b1e2171ff815"},{title:"Đặt lại bố cục phím",tags:["nhom14","reset","virtualkey"],category:"command",content:'Vào console, gõ \\"rm conf / [File_bố_cục_phím]\\" sau đó nhấn Enter / Return.\\nThay [File_bố_cục_phím] với file cần xóa:\\n\\t- File bố cục bàn phím trên máy tính: key;\\n\\t- File bố cục nút trên màn hình: virtualkey;\\n\\t- File chứa 2 slot bố cục nút trên màn hình: vkSave1, vkSave2\\n\\nKhởi động lại Techmino để hai thay đổi đầu tiên có hiệu lực.\\nVào một trang chỉnh sửa bố cục phím / nút sau đó trở ra để lấy lại file tương ứng.',link:"",id:"9c323e24fbce329e97460310e919a7cb7856986f"},{title:"Xóa t.bộ replay",tags:["nhom14","delete","recording"],category:"command",content:'Xóa toàn bộ bản phát lại\\n\\nVào console, gõ \\"rm -s replay\\" sau đó nhấn Enter / Return.\\nHiệu lực tức thì, KHÔNG THỂ HOÀN TÁC',link:"",id:"4a9bcc267ddba7abc283e0add9f228a23ec2e735"},{title:"Xóa bộ nhớ đệm",tags:["nhom14","delete","cache"],category:"command",content:'Vào console, gõ \\"rm -s cache\\" sau đó nhấn Enter / Return.\\nHiệu lực tức thì, KHÔNG THỂ HOÀN TÁC',link:"",id:"c0bffec2ae22b2b65d8895513ec607aaeff79d36"},{title:"=[NHÓM 15]=",tags:["nhom15"],category:"",content:"NHÓM 15: CÁC THUẬT NGỮ KHÔNG LIÊN QUAN TỚI TETRIS (TIẾNG ANH)",link:"",id:"5aa188a1092b739c02013c789b2c87549ea5f3db"},{title:"SFX",tags:["nhom15","soundeffects"],category:"english",content:'Từ viết tắt của \\"Sound Effects\\" (Hiệu ứng âm thanh). Ở Nhật Bản, từ này được viết tắt là \\"SE\\".',link:"",id:"3716fe2cf35bd0f840b748adb1588c09c7f7daa7"},{title:"BGM",tags:["nhom15","backgroundmusic"],category:"english",content:'Từ viết tắt của \\"Background Music (Nhạc nền).\\',link:"",id:"0e5eb85ca4390fbb0e8f302a9fee918bec29b137"},{title:"TAS",tags:["nhom15"],category:"english",content:'Từ viết tắt của \\"Tool-Assisted Speedrun (Superplay)\\" (Công cụ hỗ trợ Speedrun)\\nChơi một game nào đó mà không cần công cụ đặc biệt để phá vỡ quy tắc của game (ở cấp độ chương trình / phần mềm).\\nNó thường được sử dụng để đạt điểm tối đa theo lý thuyết / đạt được những mục tiêu thú vị\\nMột công cụ TAS như vậy cũng có sẵn, nhưng là bản nhỏ gọn, được đi kèm với Techmino.',link:"",id:"071cfabe02ce9bc29cd5aa03055b6b828ea97e57"},{title:"AFK",tags:["nhom15"],category:"english",content:'Từ viết tắt của \\"Away From Keyboard\\" nghĩa là hiện đang nghỉ ngơi / làm việc khác VÀ không đụng game.\\nNghỉ giải lao thường xuyên giúp bạn giảm căng cơ và giúp bạn chơi tốt hơn khi quay trở lại.',link:"",id:"250f02dc717d92615423049ab28ed843fb748247"}],IR=[{title:"新人须知",tags:["读我","必读","萌新","xinren","new","noob","readme"],category:"help",content:"致想深入玩下去的新人:\\n\\n\\t两大根本原则:\\n\\t\\t1. 选手感好的版本(Tech/Tetr.io/Jstris/TOP/Tetr.js),别用编程练习渣版本\\n\\t\\t2. 踏实打好基础(预判next稳定消四等),别总想着炫酷T旋,对未来实力提升没好处。\\n\\t两大主要技巧:\\n\\t\\t1. 熟悉初始位置以及到各个位置的初始操作;\\n\\t\\t2. 提前计算好下一块能放哪。\\n\\n推荐阅读专栏《给TOP新人的几点建议》\\n\\n[点击右下角地球按钮打开链接]",link:"https://bilibili.com/read/cv2352939",id:"0a7f60cc442b74f1d47083b3b095ce71e115b516"},{title:"新人学习/练习路线",tags:["读我","必读","萌新","xinren","new","noob","readme"],category:"help",content:"以下是关于提升真正打块能力的指引,如果在以下任何项目练习过程中感到有困难,可以适当回去玩玩自己喜欢的项目。别忘了你是来 “玩” 游戏的,兴趣最重要。\\n以下给出几个新手时期的主线任务树,前期主要就应该练习以下内容,学定式和T-Spin什么的对实力帮助很小(我们不认为靠定式对战秒其他萌新是有效实力):\\n(注意,三段应当同时进行,不是A→B→C)\\nA. 堆叠能力练习方法\\n\\tA1. 手上的块可以放的时候先别急着放,看看下一块有没有地方,如果放不下去就看看手上的能不能换个地方\\n\\tA2. 尝试把地形尽量控制得平整,因为大多数情况比较平的地形来啥块都比较容易放得下去\\n\\tA3. 允许hold的时候可以多想想手里和hold的块和后续几块应该怎么安排顺序,长远地使地形平整\\nB. 操作效率与速度练习方法\\n\\tB1. 不要每一块都拿影子去对形状对位置,要自己想象这个块转一下是什么方向,想好了再开始按按键\\n\\tB2. 学习双旋,能逆时针转一次就不要顺时针转三次,费手\\n\\tB3. 学习极简,刚开始不用管速度,保证正确率最重要,养成良好习惯以后再提速快得很\\nC. 堆叠能力考核\\n\\tC1. 稳定完成40行不死(可以用hold)\\n\\tC2. 稳定完成40行不死(不能用hold)\\n\\tC3. 稳定全程消四完成40行(可以用hold)\\n\\tC4. 稳定全程消四完成40行(不能用hold)\\n以上都是根据社区和个人经验总结的模糊方法与目标,所以C的考核可以根据自身情况调整严格程度(例如 “稳定” 的具体成功率)。\\n注:完成C的考核后,需要在未来一直注意没有上限的A1,这是方块的根本元素之一,强大的读next能力可以让你快速上手任何变种玩法。",link:"",id:"264b46107c883cf31e6bfd50e4d246ed6a06c2d7"},{title:"关于T-spin学习",tags:["T旋","T转","tspins"],category:"help",content:"首先指出:要能熟练做出各种T-spin并不是只看着T-spin的那一小部分地形就可以玩好的,对玩家堆叠能力和计算next能力同样也有较高的要求。\\n\\n如果不只是出于娱乐、随便玩玩的目的,是真的想不断提升T-spin能力变强,请在基础能力达到一定要求前不要刻意去学习太多的T-spin,而先把重点放在堆叠等基本功上。\\n\\n参考学T门槛水平:40L达到60s以内(可以视个人情况调整为40~120s)、能够轻松完成全程消四的40L、不使用Hold不降太多速度的前提下比较轻松完成全程消四的40L(培养看next的意识和算力)。",link:"",id:"34d83bef9c4cc157fe476af478f20e62d814f9cc"},{title:"游戏官网",tags:["official","website","homepage","mainpage","guanwang"],category:"help",content:"Techmino的官网!\\n可以在上面下载游戏本体,或者修改头像以及个人信息。\\n\\n游戏作者的一些话:强烈不建议在任何公开场合提及甚至宣传Techmino,更不要随便对外发送我们的官网链接!请务必只在私下里向有基础或真的很有兴趣入坑认真玩的玩家推荐,不然很容易拉低社群质量破坏交流氛围,比较难处理,甚至有可能影响游戏的未来发展。为了保证游戏能够变得越来越好玩,千万慎重考虑您对游戏的推广方式!感谢您对Techmino的大力支持!!",link:"http://studio26f.org",id:"2625248b708d92cdc3012ad29165b45f0b233580"},{title:"灰机Wiki",tags:["huiji"],category:"help",content:"俄罗斯方块中文维基,由一群来自俄罗斯方块研究群及下属群的方块同好建立的关于俄罗斯方块的中文百科全书。\\n\\n目前其大部分页面翻译和参考来自Hard Drop Wiki和Tetris Wiki",link:"https://tetris.huijiwiki.com",id:"5ab1ab58819556c2edb521531547cc697911b7be"},{title:"HardDrop Wiki",tags:["hd"],category:"help",content:"(英文)位于Hard Drop全球俄罗斯方块社区的Wiki百科",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"2e536d6d326cb196c661304142440abf14c924ed"},{title:"Tetris Wiki",tags:[],category:"help",content:"(英文)一个专注于创建俄罗斯方块相关内容的Wiki百科,由Myndzi在 2015创办。年复一年,上千玩家贡献了一系列的官块和自制块的说明,游戏的隐藏机制,和提升游戏体验的教程",link:"https://tetris.wiki",id:"da01b04fbc6a1f85b4fd84732f442c08d7365aab"},{title:"Tetris Wiki Fandom",tags:[],category:"help",content:"(英文)一个俄罗斯方块维基",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"8af06a2a586d93d02a1da92fba6bd1e7e6b03857"},{title:"Four.lol",tags:[],category:"help",content:"(英文,很可能打不开)一个开局定式收集网站",link:"https://four.lol",id:"144ee24e93ce282b01e011edf4b1bb6192f37024"},{title:"テトリス堂",tags:[],category:"help",content:"(日文)包含很多定式、教程和小游戏。内涵2nd、3rd、4th、7th PC的详细说明",link:"https://shiwehi.com/tetris/",id:"0e0315ab5e7bea8a85f720cecfd8b9bff4b7ba85"},{title:"テトリステンプレ集",tags:[],category:"help",content:"(日文)テトリステンプレ集@テト譜,包含非常多定式,有很详细的分类。大部分定式带有图片,可以很方便的分享给别人。",link:"https://w.atwiki.jp/tetrismaps/",id:"d25b66428e157f372d4aca1bb2d021b942ebdfa2"},{title:"tetristemplate.info",tags:[],category:"help",content:"(日文)テトリスブログ - PerfectClear,一个收集了定式的网站,量很少但是内容很精细。",link:"https://tetristemplate.info/",id:"b65e8ab3052ab2215718cf049cbbf8bd53d39d43"},{title:"Fumen",tags:["fumen"],category:"help",content:"(日文)一个方块版面编辑器,可以用于分享定式,PC解法等,用处很多。设置里可以启用英文版。",link:"http://fumen.zui.jp",id:"a227cea79776724a2f4a8095a13b575f55ef8350"},{title:"Fumen for Mobile",tags:["fumenformobile","fm"],category:"help",content:"(英文)一个方块版面编辑器,添加了对触屏的控制,可以用于分享定式,PC解法等,用处很多。",link:"https://knewjade.github.io/fumen-for-mobile/",id:"bc8430a802c402a52dd26af1f6fa40f7629de617"},{title:"GitHub仓库",tags:["源代码","源码","github","git","sourcecode","yuandaima","src"],category:"org",content:"Techmino的GitHub仓库地址,欢迎Star",link:"https://github.com/26F-Studio/Techmino",id:"92d9eb2dd827cfbe656752b86529d51658dc4e10"},{title:"Discord服务器",tags:["不和谐","discord"],category:"org",content:"点击下面的按钮加入Techmino的Discord服务器,和大家一起交流!",link:"https://discord.gg/f9pUvkh",id:"b5a088b565f9942f298729dd9bccc7767aca3d25"},{title:"研究群",tags:["yanjiu","study","research"],category:"org",content:"俄罗斯方块·[研究]群QQ号764916351,“中国俄罗斯方块总群”",link:"",id:"addea241ef4758fb0245900d77bb40ffd3d1f8ba"},{title:"茶服",tags:["tos","tea","study","chafu"],category:"org",content:"TO-S的添加方法、说明等关于茶服的一切",link:"https://teatube.cn/tos/",id:"43af91fdc0b252a62da928cad64072e523346513"},{title:"赞助1",tags:["support","weixin","vx","zhifubao","zfb","zanzhu","daqian"],category:"org",content:"vx/zfb-控制台-support",link:"",id:"45e8b2e11f94f07d444bf5b247c378cec678df4b"},{title:"赞助1",tags:["support","weixin","vx","zhifubao","zfb","zanzhu","daqian"],category:"org",content:"vx/zfb-控制台-support",link:"",id:"45e8b2e11f94f07d444bf5b247c378cec678df4b"},{title:"赞助2",tags:["support","aifadian","afdian","zanzhu","daqian"],category:"org",content:"Afdian",link:"https://afdian.net/@MrZ_26",id:"c2c204a88d358d3568951ccfe8363e25c01122e1"},{title:"赞助3",tags:["support","zanzhu","daqian"],category:"org",content:"Patreon",link:"",id:"3705b429dd183cfd86db61915b1d3b8784bc8c6d"},{title:"赞助3",tags:["support","zanzhu","daqian"],category:"org",content:"Patreon",link:"https://www.patreon.com/techmino",id:"6b979d9c5e5d30383fe76ed00f8336076b4fb662"},{title:"TTT",tags:["教程","trainer","tres","bien"],category:"game",content:"全称Tetris Trainer Très-Bien (by こな)。现代方块特殊操作手把手教程(只能键盘操作)\\n\\t推荐能纯消四完成40L挑战的人学习\\n\\t内含T-spin、极简、SRS、部分对战定式介绍等教程\\n注:提供的链接是翻译后挂在茶服的版本",link:"https://teatube.cn/ttt/index.html",id:"7a6c90de9455659d93e3c4b3db0bef632ec8eb50"},{title:"TTPC",tags:["pc教程"],category:"game",content:"全称TETRIS Perfect Clear Challenge (by chokotia)。SRS+Bag7方块游戏Perfect Clear Opener教程(只能键盘操作)。推荐完成了TTT的人学习(必须先学会SRS)\\n\\n注:提供的链接是翻译后挂在茶服的版本。",link:"https://teatube.cn/ttpc/",id:"bf90e29e221453daf3179302c3b582a84dcaef3c"},{title:"NAZO",tags:["题库"],category:"game",content:"各类SRS试题\\n\\t推荐能通过TTT的玩家尝试。\\n\\t内含各种T-spin/All spin题目,简单到极难题目都有。\\n\\n注:提供的链接是翻译后挂在茶服的版本。",link:"https://teatube.cn/nazo/",id:"cafd691a5666c7faecf410f7a4c974396e3c0db6"},{title:"TPO",tags:["题库","nazo"],category:"game",content:"全称Tetris Puzzle O。由TCV100制作的题库网站,内含nazo的部分题库。",link:"http://121.36.2.245:3000/tpo",id:"75cafcb6649c2daac2d480d33808d90c590680e0"},{title:"注[1]",tags:["备注","notice"],category:"game",content:"以下内容是为部分官方和较高人气同人方块游戏的简介。\\n其中可能包含一些只代表个人观点的主观评价写在方括号里仅供参考,顺便也请不要因为某个方面有欠缺就直接认为 “这个游戏不好”。",link:"",id:"2c54dc7f51ee24e586ae3b7461e24a2854832d8b"},{title:"King of Stackers",tags:["回合制","网页","手机","kos","kingofstackers"],category:"game",content:"网页游戏 | 多人 | 支持移动端\\n简称KoS。网页版回合制对战方块点击即玩(可能很卡),主要规则为:以7块为一个回合,双方轮流在自己场地中放置方块,任何的攻击只在对方回合放一块不消行后生效,策略性很强。有不同的伤害表设置。",link:"https://kingofstackers.com/games.php",id:"2eb87bfa2dc0357481e496d684398e28837d377f"},{title:"Tetr.js",tags:["网页","手机","tetrjs"],category:"game",content:"网页游戏 | 单机 | 支持移动端\\n简称屁块(因为作者网名叫Farter)。设置内容足够专业,模式很多,但画面很简单,几乎没有动画,而且移动端只有几套固定的按键组合(不能自由拖放)。",link:"http://farter.cn/t",id:"69161929631d21aa66d338cc3ff228a0a9375529"},{title:"Tetra Legends",tags:["网页","tl","tetralegends"],category:"game",content:"网页游戏 | 单机 | [服务器在国外可能卡]\\n简称TL。单机模式比较丰富,有两个隐藏的节奏模式,并且将一些其他游戏中不可见的机制进行了可视化,动效也很多。在2020年12月,基本确定由于各种原因不再继续开发。",link:"https://tetralegends.app",id:"f472bf0b72c82192dc749df5f6824baedf634f02"},{title:"Ascension",tags:["网页"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n简称ASC,使用自己的ASC旋转系统,有不少单机模式(Techmino的堆积模式就来自ASC),对战模式目前处在测试阶段(2022/04/16)",link:"https://asc.winternebs.com",id:"560071698ce28870c4c5fc91fdeca3ff99bf31b5"},{title:"Jstris",tags:["网页","手机"],category:"game",content:"网页游戏 | 单机/多人 | 支持移动端 | [服务器在国外可能卡]\\n简称JS,有常用的科研向单机模式和自定义各种参数的功能,允许拖放固定尺寸的正方形虚拟按键,没有任何动画效果",link:"https://jstris.jezevec10.com",id:"3598a46c34385966fe8d7332fd135ac9d3b93986"},{title:"TETR.IO",tags:["网页","io","tetrio"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n简称IO,有排位系统和功能全面的自定义模式,单机模式只有三个。有电脑客户端下载(优化性能,无广告)。\\n[Safari浏览器似乎打不开]",link:"https://tetr.io",id:"ee1f029709eab03cdfcd0ef9b4ce848031debaa6"},{title:"Nuketris",tags:["网页","核","he"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n有几个基础单机模式和1V1排位。",link:"https://nuketris.com/",id:"9602f55e119bb6460baf3ae9812e844d89001303"},{title:"Worldwide Combos",tags:["网页","wwc"],category:"game",content:"网页游戏 | 单机/多人 | [服务器在国外可能卡]\\n简称WWC,全世界匹配制1V1。特色:有录像战,匹配的对手可以不是真人;几种不同风格的大规则;炸弹垃圾行对战。",link:"https://worldwidecombos.com",id:"a805fd1fb030f6d8c013e070517d1409ef14f0fc"},{title:"Tetris Friends",tags:["网页","tf"],category:"game",content:"网页游戏 | 单机/多人\\n简称TF,已经关服了的网页版方块。以前人比较多,后来官服倒闭了热度下去了,不过现在有人架了私服还可以体验到。",link:"https://notrisfoes.com",id:"6c1d763488655dec67c218972c1a3082e9c2b608"},{title:"tetris.com",tags:["网页","手机"],category:"game",content:"网页游戏 | 单机 | 支持移动端\\ntetris.com官网上的俄罗斯方块,只有马拉松一种模式,特色是支持基于鼠标指针位置的智能控制。",link:"",id:"85ef9a571e012d79fe95974cb1d245a0c02ffbd8"},{title:"Tetris Gems",tags:["网页","宝石"],category:"game",content:"网页游戏 | 单机\\ntetris.com官网上的俄罗斯方块,限时1分钟挖掘,有重力机制。\\n有三种消除后可以获得不同功能的宝石方块。",link:"",id:"1a93945d8f9e6126847577ab26992468eb3f9e91"},{title:"Tetris Mind Bender",tags:["网页","技能"],category:"game",content:"网页游戏 | 单机\\ntetris.com官网上的俄罗斯方块,在马拉松基础上添加了技能,场地上会随机冒出技能方块,消除后会得到各种各样或好或坏的技能。",link:"",id:"5a82a770b0963ca9e947c70068a96bcac40323d2"},{title:"Techmino",tags:["铁壳米诺","方块研究所","tieke"],category:"game",content:"跨平台 | 单机/多人\\n简称Tech,使用LÖVE引擎开发的一款方块游戏,单机模式和各种设置都很齐全,联机正在逐渐开发中。",link:"",id:"119d49a5aec943440eec35179d71577b475d78d9"},{title:"Falling Lightblocks",tags:["手机","fl"],category:"game",content:"网页游戏/iOS/Android | 单机/多人\\n一个全平台块,横竖屏,有延迟并且不可调。手机支持自定义键位,主要玩法基于NES块设计,也有现代模式。对战为半即时半回合制,无攻击缓冲不可抵消。",link:"",id:"089ac2a359bdfafacaa30b575eb29d0dfb76541d"},{title:"Cambridge",tags:["剑桥"],category:"game",content:"跨平台 | 单机\\n使用LÖVE引擎开发的一款方块游戏,致力于创建一个轻松高度自定义新模式的方块平台。最初由Joe Zeng开发,于2020/10/08的0.1.5版开始Milla接管了开发。 — Tetris Wiki.",link:"",id:"10942d6a5b0e548a032a6b99980908625af9d0db"},{title:"Nanamino",tags:[],category:"game",content:"Windows/Android | 单机\\n块圈玩家自制方块,正在开发中,有一个原创旋转系统。",link:"",id:"ecd35b9b559147cda839697d07292cb0d6ee1689"},{title:"TGM",tags:["俄罗斯方块大师","tetrisgrandmaster"],category:"game",content:"Windows | 单机/本地双人\\n全称Tetris The Grand Master,一个街机方块系列(有修改过的版本可以在大多数Windows电脑运行),S13/GM等称号都出自该作。\\n\\n其中TGM3目前玩得最普遍,部分模式说明:\\n\\nMaster:大师模式,有段位评价,拿到更高段位点的要求:非消一的连击和消四,字幕战中消除和通关,每100的前70小于【标准时间,上一个0~70秒数+2】中小的一个,每100总用时不能超过限定值(不然取消上一个方法的加分并反扣点数);到500若没有进标准时间会强制结束游戏(称为铁门);字幕战有两个难度,半隐和全隐,后者必须拿到几乎全部的段位点才能进,消除奖励的段位点也更多。\\n\\nShirase:死亡模式,类似于techmino中的20G-极限,开局就是高速20G,500和1000有铁门,500开始底下开始涨垃圾行,1000开始出现骨块,1300通关进入大方块字幕战;段位结算:每通100加1段从S1到S13,如果通关了字幕战就会有金色的S13\\n\\n更多内容详见链接",link:"https://teatube.cn/TGMGUIDE/",id:"8ef6dad86868eb6560ac4397850a431f67c84dc7"},{title:"DTET",tags:[],category:"game",content:"Windows | 单机\\n单机方块游戏,基于经典规则加入了20G和一个强大的旋转系统,但是除了键位其他参数都不可自定义。有点难找到,而且找到后可能还要自己补齐缺的DLL文件。",link:"",id:"e8aa386b53a95638b334195c76f3558b9a314044"},{title:"Heboris",tags:["hb"],category:"game",content:"Windows | 单机\\n一个仿街机方块游戏,可以模拟多个方块游戏的部分模式。",link:"",id:"3d450984eb899811c1757c96bde9cb8bc3a7adae"},{title:"Texmaster",tags:["txm"],category:"game",content:"Windows | 单机\\n简称Tex,包含TGM的所有模式,可以用来练习TGM,但World规则不完全一样(如软降到底无锁延,踢墙表有细节不同等)。",link:"",id:"de2d8f090681e37b52dfabd4047d6c4a3b77ad91"},{title:"Tetris Effect",tags:["效应","tec","tetriseffectconnected","xiaoyinglianjie"],category:"game",content:"PS/Oculus Quest/Xbox/NS/Windows | 单机/多人\\n简称TE(C),特效方块游戏。不带Connected的基础版本只有单机模式。\\n拓展版本Tetris Effect: Connected增加了联网对战,包含Boss战、Zone对战、经典块对战和分数对战四个模式。",link:"",id:"0e6ba1cb4dd77fcc051416727b866d200b4bf074"},{title:"Tetris 99",tags:["吃鸡","t99"],category:"game",content:"NS | 单机/多人\\n简称T99,主玩99人混战的吃鸡模式,战术比重比较大,胜率不只由玩家在平时1V1时的水平决定。\\n也有一些常用单机模式如马拉松等。",link:"",id:"1ba05b6596856f9cc0ca2b4b459c4cb52a367249"},{title:"Puyo Puyo Tetris",tags:["噗哟方块","ppt","puyopuyotetris"],category:"game",content:"PS/NS/Xbox/Windows | 单机/多人\\n简称PPT,将方块和 Puyo Puyo 两个下落消除游戏放到一个游戏里,二者可以对战,联机单机模式都很多。另有一拓展版本Puyo Puyo Tetris 2。\\n[Steam PC版相对NS版手感和网络等都不太好]",link:"",id:"085c31a67986e72210f44a2fa0367c9986d312e7"},{title:"Tetris Online",tags:["top","study"],category:"game",content:"Windows | 单机/多人\\n简称TO,主要用来6人内对战/单挑/刷每日40L榜/挖掘模式/打机器人。支持自定义DAS/ARR但都不能到0。\\n现在还开着的服务器有:\\nTO-P(波兰服,服务器在波兰,可能会卡顿)\\nTO-S(研究服,研究群群友自己开的服,很稳定,需要进群注册)",link:"",id:"abc6cf003dae8fd7a5ea24fe449c7f4a520b0c21"},{title:"Tetra Online",tags:["to"],category:"game",content:"Windows/macOS/Linux | 单机/多人\\n简称TO,由Dr Ocelot和Mine两人开发\\n故意设计为延迟较多,平时玩无延迟方块的玩家可能会不习惯。\\n2020年12月9日收到来自TTC的DMCA警告信于是被迫停止开发,在一段时间后关服并下架Steam。\\n现在在GitHub上面还可以下到Windows的Offline Build。\\n[UI部分模仿了PPT,音乐不错,攻击特效好看。]",link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"eae66386205bf56959209b8569a4ae2ea53ba74d"},{title:"Cultris II",tags:["文艺方块","c2","cultris2"],category:"game",content:"Windows/OS X | 单机/多人\\n简称C2,设计基于经典规则出发,支持自定义DAS/ARR,对战的主要玩法是基于时间的连击,考验玩家速度/Wide打法/挖掘。\\n[游戏作者太久没有更新Mac版导致macOS Catalina以后的系统无法运行]",link:"",id:"146a485103a6d96465f30968a8e98a3e09e0aa7f"},{title:"Nullpomino",tags:["np"],category:"game",content:"Windows/macOS/Linux | 单机/多人\\n简称NP,整个游戏自定义程度极高,几乎任何参数都可以自己设置,是一个专业级方块。\\n[不过UI风格比较老,需要全键盘操作,刚开始可能不习惯。macOS Monterey貌似无法运行。]",link:"",id:"4ca1f726a8d4565d0be64b0fbe18cb94173c63d7"},{title:"Misamino",tags:["回合制"],category:"game",content:"Windows | 单机\\n块圈玩家自制方块,单机1v1,主玩回合制模式,可以自定义AI(自己写的话需要了解接口)。",link:"",id:"15610a0899101f47ff3749b09be8cbb5de829763"},{title:"Touhoumino",tags:["东方","车万","偷猴","chewan","dongfang","th"],category:"game",content:"Windows | 单机\\n块圈玩家自制方块,一个Nullpomino的自带资源包的改版,将东方Project元素与俄罗斯方块结合。马拉松模式结合了东方Project里的 “符卡” 机制,需要在一定时间内达成目标分数才能击破。\\n[难度较大,适合有方块基础并且各项能力都较强的玩家游玩(不然都不知道自己怎么死的)。]",link:"",id:"68be7252aef0911f363e144f548fde38478dfd91"},{title:"Tetris Blitz",tags:["闪电战","ea"],category:"game",content:"iOS/Android | 单机/多人\\n简称闪电战,EA代理的一款移动端方块,有重力连锁机制,限时2分钟,游戏开始会掉下一堆小方块;持续消行会进入Frenzy模式(场地下方会不断冒出垃圾行,帮助玩家制造大连锁,如果多次落块没有消行会强制结束Frenzy)。有非常多的道具。\\n当新出现的方块与场地现有方块重叠时,场地最上方的几行会被自动清除,游戏不结束。已于2020年4月下架。",link:"",id:"a5c738adc280fad07bfbb4dd1476d7b7f904ed19"},{title:"Tetris (EA)",tags:["tetris","ea"],category:"game",content:"iOS/Android | 单机/多人?\\nEA代理的一款宇宙主题的移动端方块。有滑动操控和单点触控两种操作模式;除经典的马拉松外还有一个星系模式(地图挖掘),有重力连锁机制,目标是在限定块数内消除所有地图块。\\n已于2020年4月下架。",link:"",id:"027f9038af9c7e4d791be8f584b668a35a2cc51e"},{title:"Tetris Beat",tags:["节奏","n3twork"],category:"game",content:"iOS | 单机\\nN3TWORK代理的一款移动端方块。除了马拉松以外游戏还有一个 “Beat” 模式,但只需根据BGM的节奏落块就可以得到额外分数。\\n[特效比较瞎眼,不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",link:"",id:"2b5e658415906134fc5c084c815256cd029516b3"},{title:"Tetris (N3TWORK)",tags:["Tetris","n3twork"],category:"game",content:"iOS/Android | 单机/多人\\nN3TWORK代理的一款移动端方块,有马拉松、3分钟限时打分和Royale(最多100人对战)模式。\\n[UI设计比较不错,但不支持自定义键位,而且默认的按钮也很小导致控制也不是很舒服]",link:"",id:"4eca9f2aa25d69d08fd239754108be323894eccb"},{title:"俄罗斯方块环游记",tags:["tetris","journey","huanyouji"],category:"game",content:"iOS/Android | 单机/多人\\n简称环游记,国内第一款正版授权手游方块。有闯关模式、对战模式和几个单机模式。闯关模式有各种各样有趣规则大多数有重力连锁,对战规则同现代方块,可以自定义虚拟按键的大小和位置,但是不能自定义DAS/ARR。已于2023年2月15日停服。",link:"",id:"775c32db1ab6f2e15de9655a6d2c017243dfa554"},{title:"JJ块",tags:["手机","gougou"],category:"game",content:"Android | 单机/多人\\nJJ棋牌平台下一个休闲游戏,Android端百度 “JJ比赛” 官网下载平台后可以找到(找不到的原因是iOS系统或者没在官网下载或者被限制不可直接访问游戏)。竖屏,输入延迟很小,可自定义DAS/ARR/20G软降,简单自定义键位,无Hold,没有B2B,无攻击缓冲不可抵消,每次攻击上限为4,连击较强,其他同现代方块。",link:"",id:"0abb741e07432d757fe5f63dfc049c4abd4371a6"},{title:"火拼俄罗斯",tags:["huopin","qq"],category:"game",content:"Windows | 多人\\n腾讯游戏大厅的方块,场地12列,打字的 DAS 和 ARR,1 Next无 Hold,攻击途径只有消4打3、 消3打2,垃圾行为国际象棋棋盘式,几乎不可能挖掘。",link:"",id:"17f9bdeb539060af71e18f559429b15181f1a095"},{title:"LPM",tags:["速度","sudu"],category:"term",content:"Line Per Minute\\n行每分,体现玩家下块速度。\\n\\n注:不同游戏中显示的LPM算法可能不一样,例如TO中的LPM是用PPS换算的,每1PPS=24LPM,忽略掉了垃圾行的影响,不再是字面意思,Techmino中使用L’PM代表这种换算后的LPM。",link:"",id:"34a29ee483d8263bd7c41d5bfc0276e5e6cfb3f0"},{title:"PPS",tags:["速度","sudu"],category:"term",content:"Piece Per Second\\n块每秒,体现玩家下块速度。",link:"",id:"ffc6860263cb78c06b27cf924b3c23be71d33588"},{title:"BPM",tags:["速度","sudu"],category:"term",content:"Block Per Minute\\n块每分,体现玩家下块速度\\n又称PPM(Piece Per Minute)",link:"",id:"2bb26b9db018e582adf2ab859ab7f0beafa803d7"},{title:"KPM",tags:["速度","sudu"],category:"term",content:"Key Per Minute\\n按键每分,体现玩家按键速度。",link:"",id:"21e8b4fdd11dd2e25184216e21d37c0584ee1861"},{title:"KPP",tags:["按键","anjian"],category:"term",content:"Key Per Piece\\n按键每块,体现玩家操作是否繁琐。\\n学会极简提升操作效率以减少此数字。",link:"",id:"0dbca35263a0ac4bf7ef07824164d688b5837b11"},{title:"APM",tags:["攻击","attack","gongji"],category:"term",content:"Attack Per Minute\\n攻击每分,即玩家每分钟能打出的垃圾行数。\\n一定程度体现玩家攻击力。",link:"",id:"3b43c123b81f067da1fa99361828f2693142cd6a"},{title:"SPM",tags:["发送","送出","发出","send","gongji"],category:"term",content:"[lines] Sent per minute\\n送出每分,即玩家每分钟实际打出去给对手的垃圾行数。\\n一定程度体现玩家给对手实际造成的攻击力。",link:"",id:"076e116c297ac25392f513c03caad89bbae272db"},{title:"DPM",tags:["挖掘","防御","防守","dig","defend"],category:"term",content:"Dig/Defend Per Minute\\n挖掘每分,即玩家每分钟向下挖掘的垃圾行数。\\n某些时候可以体现玩家生存能力。\\n\\n或:防御(抵消+挖掘)每分。",link:"",id:"48ef5bdcf1fbd21b65c2f0282d3e94e7ab4a6878"},{title:"RPM",tags:["接收","接受","receive","jieshou"],category:"term",content:"Receive Per Minute\\n接收每分,即玩家每分钟收到来自对手的垃圾行数。\\n一定程度体现玩家被对手施加的压力。",link:"",id:"3ccaaf97407f07bc42542ec866e3bc4d52ef8cce"},{title:"ADPM",tags:["攻击","防御","防守","attack","defend","vs"],category:"term",content:"Atk & Dig Per Minute\\n攻击+挖掘每分,用于在同一局游戏内对比玩家间水平差距,比APM更准确一些。在TETR.IO中叫 “VS” 的数据就是ADPM(调整过比例,具体是Atk & Dig per 100s)",link:"",id:"8237c467e748e3db42d92d104b965e627b51fe22"},{title:"APL",tags:["效率","xiaolv","xiaolyu"],category:"term",content:"Attack Per Line\\n攻击每行,也叫效率,体现玩家攻击的行利用率。例如消四和T旋的效率就比消二和消三高。",link:"",id:"d9eda030b7074aedca43c15dddb4740c494f031a"},{title:"Single",tags:["1","xiaoyi"],category:"term",content:"一次消除一行。",link:"",id:"ede51272f574cbc9179024de514922e880faa573"},{title:"Double",tags:["2","xiaoer"],category:"term",content:"一次消除两行。",link:"",id:"4f80c5857d262da97bf9b0c6c06f3af811a426af"},{title:"Triple",tags:["3","xiaosan"],category:"term",content:"一次消除三行。",link:"",id:"fb5c4efc591d1b3c612c45e1f7de99ffd8f20cd8"},{title:"Techrash",tags:["4","tetris","xiaosi"],category:"term",content:"一次消除四行(Techmino限定)。",link:"",id:"d035e86d6bdff444a54e62e1e43c233e94d7bf89"},{title:"Tetris",tags:["4","xiaosi"],category:"term",content:"商标,Tetris游戏名,同时也是别的方块游戏里消四行的名字。\\n含义是Tetra(古希腊语, 四 <τέτταρες>)+ Tennis(网球 游戏原作者喜欢的运动)。\\n现在版权在TTC(The Tetris Company)手上,任天堂和世嘉开发游戏是 TTC 授权的, 它们自己并没有Tetris的版权。",link:"",id:"d62b4326976a335c6e1e5739e07fceb8c78e80bc"},{title:"PC",tags:["全消","全清","perfectclear","ac","allclear","quanxiao","quanqing"],category:"term",content:"Perfect Clear(也叫All Clear,全消,或全清)。\\n消除场地上所有的方块。",link:"",id:"3cc484e4922fa08d3cdcb4ce642ff241cfa2d527"},{title:"HPC",tags:["hc","clear","banqing","banquanqing","banquanxiao"],category:"term",content:"Half PC\\nPC(全消)的外延,“下方有剩余方块” 的全消(特别地,如果只消1行则必须不剩余玩家放置的方块),能打出一些攻击和防御(Techmino限定)。",link:"",id:"3a3e7e310a0a82040d6c4e70abd1d7c8048a4b30"},{title:"Spin",tags:["转","xuanzhuan","zuandong"],category:"term",content:"(部分游戏中)使用旋转将方块卡进不能直接移动进入的位置,具体判定规则不同游戏不一样,可能会有攻击加成。",link:"",id:"dc33dec4942ac1f43c0e1edb5ccb6b9e30f571b1"},{title:"Mini",tags:["迷你"],category:"term",content:"Spin附加Mini后攻击会弱化,用于平衡不同难易度的T-spin攻击,判定在不同游戏都不一样,而且大多数很不好理解,建议只记住常见形状即可。",link:"",id:"fb751efa013e9078a2af3d576946af0bad65e89b"},{title:"All Spin",tags:["allspin"],category:"term",content:"一种规则,指所有方块的Spin都有攻击力,而不止是T-spin才有攻击(即T-Spin Only)。",link:"",id:"76934acf334799e0ad76194c34b1ddee98dc5b67"},{title:"T-Spin",tags:["T转","T旋","旋转","tspin","txuan"],category:"term",content:"在官方规则中,当T方块在锁定前的最后一个操作是旋转,并且锁定后旋转中心对应的四个斜角位置有三个不是空气,那么这就是一个T-spin。\\nPS:如果满足一些额外条件会被打上mini标签减少攻击力。",link:"",id:"e811f591780c7c7ee0d7abd134e5a67c25289154"},{title:"TSS",tags:["t1","tspin"],category:"term",content:"T-Spin Single\\n指使用T方块Spin并一次消除1行。简称T1。",link:"",id:"a260a00814f9b634c252dc26e855206380a7e305"},{title:"TSD",tags:["t2","tspin"],category:"term",content:"T-spin Double\\n指使用T方块Spin并一次消除2行。简称T2。",link:"",id:"af05e0d65e32bca9b7c80a7da2c3e7f25f105090"},{title:"TST",tags:["t3","tspin"],category:"term",content:"T-spin Triple\\n指使用T方块Spin并一次消除3行。简称T3。",link:"",id:"513fe5fb6e3c7f3f286253eac090967f68b8597b"},{title:"MTSS",tags:["mini","tspin","minitspinsingle","tsms","tspinminisingle"],category:"term",content:"Mini T-spin Single\\n指T方块Mini Spin消1行(不同游戏判定不一样)。\\n部分游戏中可能叫做 “T-Spin Mini”。",link:"",id:"eabb16e756dd8b65ec3dc5f816b937c0d1e4f8ee"},{title:"MTSD",tags:["mini","tspin","minitspindouble","tsmd","tspinminidouble"],category:"term",content:"Mini T-spin Double\\n指T方块Mini Spin消2行(仅部分游戏内存在且判定不一样)。",link:"",id:"a1a53ac67d39e9ac378561223bdd1332f2ed615c"},{title:"O-spin",tags:["o转","o旋","ospin","oxuan","ozhuan"],category:"term",content:"由于O方块旋转后形状不变,只能左右移动,所以经常被卡住,于是方块圈就有了O-spin的梗:\\n有人做过T99/TF中的O变形的特效视频且广为流传;\\nT-ex设计的旋转系统可以用spin使O传送进坑;\\nTech设计的变形系统中可以旋转O来变形/传送进入一些特定形状的洞。",link:"",id:"e8dc50817739b8a0330f8b39f2cef5dda6440eba"},{title:"旋转系统 (踢墙)",tags:["旋转系统","踢墙","xuanzhuanxitong","wallkick","tiqiang"],category:"term",content:"现代方块游戏中,方块可以绕着旋转中心(Techmino中可见)旋转(部分游戏没有固定中心),如果旋转后和场地或墙壁有重合,会根据<从哪个方向转到哪个方向>进行一些偏移测试(这个偏移称为踢墙),不会卡住转不动,同时也可以让方块钻进入一些特定形状的洞。不同的旋转系统偏移位置顺序都不一样,具体数据去各大Wiki上查,一堆数字这里就不放了",link:"",id:"05b13c428c8769505583fde30a481558c935ab2c"},{title:"方块朝向",tags:["旋转","朝向","xuanzhuan","chaoxiang","orientation","direction","0r2l","02","20","rl","lr"],category:"term",content:"在SRS或者类SRS的旋转系统中需要说明方块朝向的时候,“朝下” “竖着” 等词描述太模糊。\\nSRS中每种方块的初始状态固定,所以我们使用0(原位)、R(右,即顺时针转一次)、2(转两下,即180°)、L(左,即逆时针转一次)四个字符表示方块的四种状态,从原位(0)开始顺时针转一圈四个状态是0R2L。\\n最早见于SRS踢墙表的行首,0→L表示原位逆时针转一次到L状态,0→R表示原位顺时针转一次到R状态,2→R代表从180°状态逆时针转一次到R状态。",link:"",id:"573a634040e4e2b48f3a6f63d3ffef40e48ca2f1"},{title:"ARS",tags:["旋转系统","rotate"],category:"term",content:"Arika Rotation System,TGM系列使用的旋转系统(3代中的C模式)\\n或者\\nAtari Rotation System,一个左上对齐旋转系统。",link:"",id:"9e89bb00c1d2aa2fd01276461d2e6948b6a94e2b"},{title:"ASC RS",tags:["旋转系统","ascrs","rotate"],category:"term",content:"ASC Rotation System\\nASC块使用的旋转系统,所有块所有形状只根据旋转方向(顺时针和逆时针)使用两个对称的表,踢墙范围大概是±2, ±2。",link:"",id:"564007c0f886861ba0794982d64ee13a5c91c773"},{title:"ASC+ RS",tags:["旋转系统","asc+rs","ascplusrs","rotate"],category:"term",content:"Techmino中ASC的修改版本,添加了180°转的踢墙表。",link:"",id:"ce0ec58b494b2db6c68836d072215d1ce6f8f87c"},{title:"BRS",tags:["旋转系统","rotate"],category:"term",content:"BPS Rotation System\\nBPS块使用的旋转系统。",link:"",id:"94e15bca792e79f612af7db8a19039689c09d210"},{title:"BiRS",tags:["旋转系统","rotate"],category:"term",content:"Bias Rotation System\\nTechmino原创旋转系统,基于XRS和SRS设计。\\n当左/右/下(软降)被按下并且那个方向顶住了墙,会在旋转时添加一个额外偏移(三个键朝各自方向加1格),和基础踢墙表叠加(额外偏移和叠加偏移的水平方向不能相反,且叠加偏移的位移大小不能超过√5)。如果失败,会取消向左右的偏移然后重试,还不行就取消向下的偏移。\\nBiRS相比XRS只使用一个踢墙表更容易记忆,并且保留了SRS翻越地形的功能。",link:"",id:"f0092b86f5518d7adff7ca8b062c6ac42c11f472"},{title:"C2RS",tags:["旋转系统","rotate","cultris2"],category:"term",content:"Cultris II Rotation System\\nCultris II原创的旋转系统,所有旋转共用一个表,顺序是:\\n左1→右1→下1→左下→右下→左2→右2\\n注意,左优先于右。",link:"",id:"220cefe0dc94d636dedc322b4318795ed34837a3"},{title:"C2sym",tags:["旋转系统","rotate","cultris2"],category:"term",content:"Techmino中C2RS的修改版本,根据不同的方块形状和状态,各自选择优先测试左还是右。",link:"",id:"a556f52f54e6fbc01a552e13d5e457226db9f1ab"},{title:"DRS",tags:["旋转系统","rotate"],category:"term",content:"DTET Rotation System.",link:"",id:"c5643df577b8666a346e1ec09c2b93ed22b333d6"},{title:"NRS",tags:["旋转系统","rotate"],category:"term",content:"Nintendo Rotation System,NES和GB块使用的旋转系统。NRS有两个互为镜像的版本,左旋版用于GB,右旋版用于NES。",link:"",id:"c21f8a4f8ad7208a795a57ded5d060919649cef4"},{title:"SRS",tags:["超级旋转系统","rotate"],category:"term",content:"Super Rotation System\\n现代方块最常用的旋转系统,也是不少自制旋转系统的设计模板。\\n对于SRS,每个方块有四个方向,可以朝两边转(180°不算,最开始没有这个设计),所以总共8种,对应8个偏移表,具体数据去Wiki上查,这里就不放了。",link:"https://tetris.wiki/Super_Rotation_System",id:"6ee42d75e1000923b204826b1b13f846209a5481"},{title:"SRS+",tags:["超级旋转系统","srsplus","rotate"],category:"term",content:"SRS的拓展版,添加了180°转的踢墙表。",link:"",id:"fcc36d4cbebb42c03eff3307b06c46c6ed8379a4"},{title:"TRS",tags:["旋转系统","rotate"],category:"term",content:"Techmino Rotation System\\nTechmino原创旋转系统,基于SRS设计,修补了一些常见SZ卡死的地形,增加了不少实用踢墙。\\n每个五连块也基本按照SRS的Spin逻辑单独设计了踢墙表。\\n更有神奇O-spin等你探索!",link:"",id:"704dcda3c49ae4bbec88bf09f155c0b7fcfe1387"},{title:"XRS",tags:["旋转系统","rotate"],category:"term",content:"X Rotation System\\nT-ex原创旋转系统,引入了 “按住方向键换一套踢墙表” 的设定(在对应的方向需要顶住墙),让 “想去哪” 能被游戏捕获从而转到玩家希望到达的位置。\\n\\n其他旋转系统无论踢墙表怎么设计,块处在某个位置时旋转后最终只能按固定顺序测试,这导致不同的踢墙是竞争的,若存在两个可能想去的位置就只能二选一,XRS解决了这个问题。",link:"",id:"9dcd64344bfe1b26c2a4d1128e23fa8e215b6b68"},{title:"B2B",tags:["大满贯","btb","backtoback"],category:"term",content:"Back to Back\\n连续打出两次特殊消行(Spin或消四),中间不夹杂普通消行,可以提供额外的攻击(在Techmino中B2B为满贯,大满贯是B3B)。连续PC/HPC在Techmino中也算B2B/B3B。",link:"",id:"25c9c3013a9ba18daf3a397dfa0127da915ecdd0"},{title:"B2B2B",tags:["大满贯","b3b","backtobacktoback"],category:"term",content:"Back to Back to Back\\nB2B的加强版,缩写B3B,大量B2B后连续B2B会变成B2B2B,提供更强的攻击(仅Techmino中有)。",link:"",id:"93abe814c9a4acbd50d6c2ee3b81704c36acae69"},{title:"Fin/Neo/Iso",tags:["特殊","fin","neo","iso"],category:"term",content:"三类特殊T2的名字,不同的游戏内的攻击可能不一样,实战中基本没有特殊价值,可以不详细了解。",link:"",id:"49a9dddd3e75b7be40c59555e26b82cd895be3bd"},{title:"现代方块",tags:["modern","xiandaikuai","tetris"],category:"term",content:"现代方块是一个模糊的概念,这里列出一部分 “标准” 规则,满足大部分的都可以认为是现代方块:\\n1.可见场地大小是10×20,不过上方空间也是存在的,上限可以自己定,一些游戏用的是40;\\n2.七种方块从顶部正中间出现(奇数宽方块偏左,高度可以是方块底部或顶部贴着场地顶),同一种方块的朝向(一般是平的面朝下)和颜色都一致;\\n3.一个合适的随机出块机制(常见的详见Bag7词条和His词条);\\n4.一个合适的的旋转系统(至少有双旋,详见双旋词条)(最好是SRS或类SRS,详见SRS词条);\\n5.一个合适的锁定延迟系统,详见锁定延迟词条;\\n6.一个合适的死亡判定,详见死亡判定词条;\\n7.有Next功能(一般是3~6个,也有1个的),详见Next词条,并且方向和出现时候的方向一致;\\n8.有Hold功能,详见Hold词条;\\n9.有DAS系统负责精密并且快速的左右移动,详见DAS词条;\\n10.如果有出块延迟和消行延迟,那么需要有提前旋转/Hold系统,详见IRS和IHS词条,IMS是Techmino特有。",link:"",id:"3b374d011cae4bbd4f76daabce342beef755c6b0"},{title:"方块形状",tags:["xingzhuang","shape","tetromino","tetrimino"],category:"term",content:"在标准的方块游戏中,用到的方块是所有的 “四连块”,即四个正方形共用边连接成的形状。\\n在不允许翻转,只允许旋转的情况下,四连块一共有七种,根据它们的形状一般分别叫做Z、S、J、L、T、O、I。\\n\\n详见下方 “方块名称”。",link:"",id:"4f07a542caea12ff764123563fe86c36fcf50e07"},{title:"方块颜色",tags:["yanse","color","colour","tetromino","tetrimino"],category:"term",content:"主流方块游戏中七种块的颜色会使用同一套彩虹配色:\\nZ:红 S:绿 J:蓝 L:橙 T:紫 O:黄 I:青\\n\\nTechmino默认也使用这一套 “标准” 配色。",link:"",id:"eaf19687d159758acc974e4c87723dae786ad13f"},{title:"提前旋转(IRS)",tags:["tiqianxuanzhuan","irs","initialrotatesystem"],category:"term",content:"Initial Rotation System 提前旋转系统\\n方块出现前提前按下旋转后,出现时就是转好的形状,有时可以避免死亡。",link:"",id:"4cb89551b37799daad035fd7837ab7d71cb81e6c"},{title:"提前暂存(IHS)",tags:["tiqianzancun","ihs","initialholdsystem"],category:"term",content:"Initial Hold System 提前Hold系统\\n方块出现前提前按下hold后,直接出现hold里的方块,有时可以避免死亡。",link:"",id:"db0614d1d8b6363c7bd031ff8b45f048d3f92553"},{title:"提前移动(IMS)",tags:["tiqianyidong","ims","initialmovesystem"],category:"term",content:"Initial Move System 提前移动系统\\n方块出现前提前按住移动后,出现时会朝移动方向偏一格,有时可以避免死亡(Techmino限定)。\\n注:需要块出现时das已充满",link:"",id:"a4bd52c8408f799c4c5fc47f5537f1b98f690a10"},{title:"预览(Next)",tags:["下一个","next","yulan","xiayige"],category:"term",content:"指示后边几个块的顺序。\\n提前思考手上这块怎么摆可以让后面轻松是玩家提升的必需技能。\\n\\n关于玩家玩的时候到底看了几个Next:这个数字并不固定,不同玩家、不同模式、不同局面,计算next的数量都不一样,通过调整可见Next数量打40L比较时间等方式测得的数据并不准确。\\n\\n具体例如,一个比较熟练的玩家几乎永远会提前算好一个Next,不然不会锁定手里的块;场地上将要出现或可以构造消四洞(T坑)的时候会找最近的I(T)什么时候来,如果太远了就会直接挖掉放弃本次攻击以防被对手偷袭。这两种情况并不独立,有很多介于中间的情况。所以,一个玩家看的Next数量是时刻在变的,“某人看几个Next” 没有精确答案,必须在指明情况的时候数字才能作为参考。",link:"",id:"5ede2f721df7f80f287a68fcd175ee1db254e642"},{title:"暂存(Hold)",tags:["交换","hold","zancun"],category:"term",content:"将手里的方块和Hold槽中的交换,一般不能连续使用。\\n用来调整块序,更容易摆出你想要的形状。\\nTechmino中有一个 “物理Hold” 机制,开启后Hold换出的方块会直接出现在当前方块所在的位置\\n\\n用不用Hold各有好处,不用的话看到序列是什么就是什么,减少了思考量;并且减少了按键的种类,操作简单容易提升KPS,有些人的40L记录就是不用Hold打出的。用Hold可以灵活地调整序列,减少高重力等规则带来的难度,算力足够的情况下可以达成更复杂的目标,甚至反过来显著减少总按键数。",link:"",id:"af7a53d05fef8964e93ddc5e922fe7ead80c663e"},{title:"置换(Swap)",tags:["交换","swap","hold","jiaohuan","zancun"],category:"term",content:"Hold的另一种表现形式,将手里的方块和Next槽中的第一个交换,一般同样不能连续使用。",link:"",id:"007c6a9f7ce2fc7064cbcbaeeed1089ffa985356"},{title:"深降",tags:["深降","deepdrop","shenjiang"],category:"term",content:"开启后当方块触底时,再次按下软降会让方块尝试向下穿墙寻找放得下的地方,如果有就会直接瞬移到那\\n该功能更偏向用于技术研究,对于AI来说有了它可以完全不用再考虑旋转系统,形状能容得下的地方一定都能到达",link:"",id:"78894c860ead15409ce3eb1c30c535ebb2433c69"},{title:"Misdrop",tags:["误","md"],category:"term",content:"误放,就是不小心放错了地方。简称MD。",link:"",id:"1f8a0276433dcc22d354aaceee5a13d193037691"},{title:"Mishold",tags:["误hold","mh"],category:"term",content:"误hold,就是不小心按到Hold导致死亡或失去PC机会等。简称MH。",link:"",id:"c5ca3c00e538070148fb09a03ab68339d90d64f9"},{title:"sub",tags:[],category:"term",content:"在……之下\\n用于表示成绩,单位一般可不写,比如40L成绩Sub 30是秒,1000行Sub 15是分钟,不写项目默认是40L\\n\\n例:39.95s是Sub 40,40.###s不是Sub 40。\\n请不要使用Sub 62之类的词,因为sub本身就是表示大约, 一分钟左右的成绩精确到5~10s就可以了,一般30s以内的成绩用sub## 的时候才会精确到1s。",link:"",id:"fac0180b895f2a661421f4e7dad325e8f3feb12d"},{title:"挖掘(Dig)",tags:["挖掘","downstack","ds","wajue"],category:"term",content:"指消除从场地底部进入的垃圾行(对手攻击打过来或者模式中自动生成)。也叫downstack(DS)。",link:"",id:"795ab336844cf40d0b587e03f6c8ce391fe0f67f"},{title:"捐赠(Donate)",tags:["捐献","juanzeng"],category:"term",content:"指刻意临时堵住(可以消四的)洞做T-spin,打出T-spin后就会解开,是比较进阶的保持/提升火力的技巧。\\n不标准用法:有时候只要堵住了个坑,即使不是消四洞也会用这个词。",link:"",id:"094cb87b474108286d1b050eb94b7034582d9123"},{title:"欠债",tags:["qianzhai","debt"],category:"term",content:"欠债\\n指必须完全堆好才能开始转下T旋打出攻击,堆完之前T下不去的形状。对战实战中如果要做此类(中局)定式时一定要观察对手情况确保自己安全,不然可能被半途打死\\n\\n一般只用来描述类似双T3/T3塔的大型组合炮,堆完之前完全不能打出攻击。",link:"",id:"2c9c9d2a29d452bdcc50f89b9efcb32e5ef824f7"},{title:"攻防",tags:["gongfang","gongshou"],category:"term",content:"攻击指通过消除给对手发送垃圾行;\\n防御(相杀)指别人打过来攻击之后用攻击抵消;\\n反击指抵消/吃下所有攻击后打出攻击。\\n\\n注:大多数方块游戏的攻防是1:1的,4行攻击抵消对手的4行攻击。",link:"",id:"c5cc86404df3ec167323a6dd389f658d3619dda2"},{title:"连击(Combo)",tags:["ren","lianji"],category:"term",content:"从第二次消除起叫1 REN/Combo,打出的攻击根据游戏设计的不同也不同。“REN” 这个名称来源于日语中的 “連”(れん)。",link:"",id:"9f87a8b08381af9fac76021f4af2f897895834b4"},{title:"Spike",tags:["baofa","xingbao"],category:"term",content:"爆发攻击\\n指短时间内打出大量的攻击,Techmino和TETR.IO中有Spike计数器,可以看到自己短时间内打出了多少攻击。\\n注意,网络卡顿导致的累计攻击瞬间释放不算Spike。",link:"",id:"c463c53088e461253bcbda48795858024b3c49ce"},{title:"Side",tags:["连击","sidewell"],category:"term",content:"在场地旁边空出几列的堆叠法\\n用来制造连击,对于新人是一个不错的进攻方法。但由于起楼的时候可能会被顶死而且总效率不高,导致高端玩家不会单独做Wide,更可能会在中局堆好炮并且观察到对手短时间内不会打出伤害的时候可以造,用来大幅加强瞬时火力。",link:"",id:"6a78522114f9684c67c66a49bf79f64da244e117"},{title:"Center",tags:["连击","centerwell"],category:"term",content:"在场地正中间空出几列的堆叠法",link:"",id:"437c97420ef53ab10e30f2805a9d1e2d9a0965fd"},{title:"Partial",tags:["连击","partialwell"],category:"term",content:"在场地边和正中之间的位置空出几列的堆叠法",link:"",id:"4067a95f88506ff7bf801b43f45dcdaaa4c45600"},{title:"S1W",tags:["side1wide","tetrisstacking"],category:"term",content:"Side 1 Wide\\n旁边空1列,是传统方块游戏里常见的消四打法。\\n在现代方块对战中新手可以使用,短时间能打出大量攻击,但在高手场出场率不高,因为效率低,容易被对面一波打死,故只在极少数情况合适的时候用。",link:"",id:"895231397015bfce6167338f919a8248e9671edc"},{title:"S2W",tags:["连击","lianji","ren","side2wide"],category:"term",content:"Side 2 Wide\\n旁边空2列,是常见的连击打法。\\n难度很低,现代方块对战中新手可以使用,结合Hold可以很轻松地打出大连击。高手场使用不多,因为准备时间太长,会被对面提前打进垃圾行,导致连击数减少或者直接Top Out,效率也没有特别高,故一套打完也不一定能杀人。",link:"",id:"07f6a6ae39c6f305f69df7429220ff63a6071cfa"},{title:"S3W",tags:["连击","lianji","ren","side2wide"],category:"term",content:"Side 3 Wide\\n旁边空3列,不如2w常见的连击打法。能打出的连击数比2w多,但是难度偏大很容易断连。",link:"",id:"2cca6c01af79e69e759f86f4570f6ad664ff8cbc"},{title:"S4W",tags:["连击","lianji","ren","side4wide"],category:"term",content:"Side 4 Wide\\n旁边空4列,一种连击打法,能打出很高的连击,并且准备时间比别的Wide打法短,故动作快的话可以抢在对手打进垃圾之前堆很高然后打出超大连击。\\n(因为可能会被提前打死,风险挺大,所以没有c4w那么不平衡)。",link:"",id:"7a14de9326959417e5c811ebd340880f56332283"},{title:"C1W",tags:["center1wide","centre1wide"],category:"term",content:"Center 1 Wide\\n中间空1列,一种实战里消4同时辅助打TSD的打法,需要玩家理解<平衡法>,熟练之后可以轻松消四+T2输出,难度也不是特别大。",link:"",id:"b4ce63d567c37c06f097c45d017ffb70605e1713"},{title:"C2W",tags:["连击","lianji","ren","center2wide","centre2wide"],category:"term",content:"Center 2 Wide\\n中间空2列,一种可能的连击打法(不常见)。",link:"",id:"aa0d1a282bb055ddc26a7ba114734e046bb22a91"},{title:"C3W",tags:["连击","lianji","ren","center3wide","centre3wide"],category:"term",content:"Center 3 Wide\\n中间空3列,一种可能的连击打法(不常见)。",link:"",id:"80f81c662953d26694fd224ea11744c527f23145"},{title:"C4W",tags:["连击","lianji","ren","center4wide","centre4wide"],category:"term",content:"Center 4 Wide\\n中间空四列,一种连击打法,能打出很高的连击,利用了大多数专业对战方块游戏的死亡判定机制,可以放心堆高不担心被顶死,然后开始连击。是一种利用游戏机制的不平衡策略(尤其在开局时),观赏性不是很强还可以以弱胜强,成本太低所以成为了部分游戏中约定的类似 “禁招” 的东西,请在了解情况后再使用,不然可能会被别人骂。\\nTechmino中虑到了平衡问题,所以c4w的强度没有别的游戏那么夸张。",link:"",id:"d950d193130534afc1172812686626925d48fa7c"},{title:"N-Res",tags:["连击","lianji","ren","residual","c4w","s4w"],category:"term",content:"N-Residual\\nN-剩余,指4w连击楼底部留几个方格,常用的是3-Res和6-Res。\\n3-Res路线少比较好学,成功率也很高,实战完全够用\\n6-Res路线多更难用,但是计算力很强的话比3-Res更稳,也可以用来完成特殊挑战(比如Techmino的c4w练习要求100连击通关)。\\n\\n注:优先使用6-Res,然后是3-res和5-Res,最后是4-Res",link:"",id:"ae65d17fba55bc34655d7d2fccdce8c28b567f1a"},{title:"6–3堆叠法",tags:["六三","63"],category:"term",content:"指左边6列右边3列的堆叠方式。在玩家有足够的计算能力后可以减少堆叠所用的按键数(反之可能甚至会增加),是主流的用于减少操作数的高端40L堆叠方式,原理跟出块位置是中间偏左有关。",link:"",id:"abe1c123e7488798c10a4d4f860486ed30291164"},{title:"Freestyle",tags:["ziyou"],category:"term",content:"自由发挥的意思,常用于freestyle TSD(T2),指不用固定的堆叠方式而是随机应变完成20TSD。比用LST或者垃圾分类完成的20 TSD的难度要大,成绩也更能代表实战水平。",link:"",id:"73f52db58a03c13e29d26f80d0699c11ba402a3e"},{title:"死亡判定",tags:["die","death","siwang"],category:"term",content:"现代方块普遍使用的死亡判定:\\n1. 新出现的方块和场地方块有重叠(窒息,Block Out)(c4w比s4w强的原因,因为被打进18行都不会窒息);\\n2. 方块锁定时完全在场地的外面(Lock Out);\\n3. 场地内现存方块总高度大于40。(超高,Top Out)\\n\\n注:Techmino使用的死亡判定默认不开启第二、三条。",link:"",id:"77ed2d81178ee7f847cd269f297deeaa69478138"},{title:"缓冲区",tags:["buffer","zone","huanchongqu"],category:"term",content:"(不是所有游戏都有这个概念)指10×20可见场地之上的21~40行。因为垃圾行顶起后两边堆高的方块可能会超出屏幕,消行后这些方块要重新回到场地内所以需要保存下来,由于程序上要求场地尺寸有限(部分游戏可以无限),故设定为40,一般都够用。\\n\\n另见 “消失区” 词条。",link:"",id:"6e9167b52a766606983edbf678f3989105a69fea"},{title:"消失区",tags:["vanish","zone","xiaoshiqu"],category:"term",content:"在缓冲区的基础上,指比40行缓冲区还高的区域。\\n标准的死亡判定涉及了这个概念,在垃圾行升起后如果场地上有任何方块超出了40高的缓冲区(也就是达到了消失区)时游戏直接结束。\\n但事实上这块区域在不同游戏中表现不同,甚至有设计者考虑不周导致方块挪到40行以上,但是程序没考虑导致方块接触消失区直接报错闪退的游戏。通常出现在玩家堆了c4w然后被打入大量垃圾行时才会考虑这个概念。其他游戏中方块进入消失区可能直接导致游戏结束,也有可能会出现一些奇怪的bug(附带链接是ppt的复制40行无限Ren视频)。\\n\\n另,Jstris中22行及以上可以理解为消失区,锁定在21行之外的格子会消失。",link:"https://www.bilibili.com/video/BV1ZE411Y7GD",id:"813f5047623daa972c4156c40645df95566a6c65"},{title:"下落速度",tags:["重力","drop","speed","zhongli","gravity"],category:"term",content:"一般用*G表示方块的下落速度,意思是每一帧方块往下移动多少格,一秒下落一格就是1/60G(默认60fps),可以看出G是一个很大的单位。因为场地就20格,所以一般认为20G即为上限,详见20G词条。\\n在Techmino中描述重力的方式是 “每过多少帧下落一格”,例如一秒落一格就对应60(默认60fps)",link:"",id:"fd716418d5981636329309c09701f86a6c62ac3a"},{title:"20G",tags:["高重力"],category:"term",content:"现代方块的最高下落速度,表观就是方块瞬间到底,不存在中间的下落过程,可能会让方块无法跨越壕沟/从山谷爬出。\\n20G一般指的其实是 “无限下落速度” ,就算场地不止20格,“20G” 也会让方块瞬间到底。\\nTechmino(和部分其他游戏,推荐这么设计)中20G的优先级比其他玩家操作都高,即使是0arr的水平方向 “瞬间移动” 中途也会受到20G的影响。",link:"",id:"593ac92b3bffd69d630b1f3578abe4a46c009245"},{title:"锁定延迟(LD)",tags:["重力","lock","delay","lockdown","delay","suoyan","zhongli","gravity"],category:"term",content:"方块<碰到地面到锁定>之间的时间。经典块仅方块下落一格时刷新倒计时,而现代方块中往往任何操作都将重置该倒计时(但是方块本身必须可以移动/旋转),所以连续移动和操作可以让方块不马上锁定,拖一会时间(Techmino和部分游戏重置次数有限,一般是15)。",link:"",id:"cba42b52458bcc1cd1a22af04860ea8ca314cfc5"},{title:"出块延迟(ARE)",tags:["delay","chukuaiyanchi"],category:"term",content:"ARE。方块<锁定完成到下一个方块出现>之间的时间。",link:"",id:"db2eeaa21340ea8a0fe30088d44c2367d2a745d2"},{title:"消行延迟(ARE)",tags:["line","delay","xiaohangyanchi"],category:"term",content:"Line ARE。方块<锁定完成能消行时的消行动画>占据的时间。",link:"",id:"6b6ca1350f6b8147c19409da013707376353660a"},{title:"窒息延迟(DD)",tags:["choke","are","delay","zhixiyanchi"],category:"term",content:"当前方块锁定后如果下一块的生成位置被阻挡,那么下一块的出块延迟会被再额外加上这个延迟的值,方便使用提前系统来避免死亡\\n想法来自NOT_A_ROBOT",link:"",id:"ec00c3637ea72a7bc6ad2fcbf8048c6c3d56176c"},{title:"极简(Finesse)",tags:["极简操作","最简操作","finesse","jijiancaozuo","zuijiancaozuo"],category:"term",content:"用最少的按键数将方块移到想去的位置的技术(大多数时候只考虑纯硬降的落点),节约时间和减少Misdrop。\\n\\n该技能学习越早越好,建议先去找教程视频,看懂了然后自己多练习,开始以准确率第一,速度快慢不重要,熟练后自然就快了。\\n\\n注意,Techmino使用的极简判定系统不是说完全和理论最少操作数一样,而是不需要软降就能达到的位置才会按照标准出块方向和你的按键次数执行极简检测,故在此不像js存在软降后误杀。但是多了一些新的条件,比如已经按了超过3次按键后再hold后按键次数不重置(让下一块极简失误)。\\n极简率计算:\\n没有超过标准极简法操作数的为Perfect计100%,超出一步为Great计50%,超出两步为Bad计25%,两步以上为Miss计0%,其中Bad和Miss会断连\\n\\n注1:一般说的极简不考虑带软降/高重力/场地很高的情况,仅研究空中移动/旋转后硬降。绝对理想的“极简”建议使用“最少按键数/操作数”表达。\\n注2:20G下极简系统和0G一样工作,所以得到的数值不准确,参考价值偏低。",link:"",id:"9f0916c40b130f851a7d9ede8d7c0974eec449c9"},{title:"科研",tags:["keyan"],category:"term",content:"常用语,指在低重力的单人模式里减速研究怎么做各种T-spin,Techmino中拓展了含义,用于称呼几乎需要全程Spin的游戏模式。",link:"",id:"0828e6d1cd44af7467e73713ade3b25590fcc121"},{title:"键位",tags:["keyboard","mapping","jianwei"],category:"term",content:"键位设置原则参考:\\n1.不要让一个手指管两个可能同时按的键,通常只有几个旋转键不需要同时按,其他功能推荐都单独给一个手指\\n2.除非已经在别的游戏里锻炼过小拇指,最好不要用,一般食指和中指最灵活,自己觉得舒服为准\\n3.没必要参考别人的键位设置,每个人都不一样,只要不违反前几条规则,就几乎不会对成绩产生影响。",link:"",id:"b6d25ace7abeac07b7182bbae8c3ae0d9c3a0388"},{title:"手感(Handling)",tags:["手感","feel","shougan"],category:"term",content:"决定手感的几个主要因素:\\n1. 输入延迟受设备配置或者设备状况影响。可以重启/换设备解决;\\n2. 程序运行稳定性程序设计或.实现)得不好,时不时会卡一下。把设置画面效果拉低可能可以缓解;\\n3. 游戏设计故意的。自己适应;\\n4. 参数设置设置不当。去改设置;\\n5. 游玩姿势姿势不当。不便用力,换个姿势;\\n6. 换键位或者换设备后不适应,操作不习惯。多习惯习惯,改改设置;\\n7. 肌肉疲劳反应和协调能力下降。睡一觉或者做点体育运动,过段时间(也可能要几天)再来玩。",link:"",id:"ba1f5e400e9e260fcb22478326e450b1374bc4de"},{title:"DAS通俗",tags:["das","arr","simple","tongsu"],category:"term",content:"打字时按住o,你会看到:ooooooooooo…\\n在时间轴上:o—————o-o-o-o-o-o-o-o-o…\\n—————就是das长度,-就是arr长度。\\n详见 DAS & ARR 词条。",link:"",id:"0d9a27fed35a633c199478e89b4877e22c091be6"},{title:"DAS & ARR",tags:["灵敏度","arr"],category:"term",content:"DAS(Delay-auto-shift,自动加(延迟)具体指从<按下移动键时动了一格>到<开始自动移动>之间的时间。\\nARR(Auto-repeat-rate),自动重复速率,指<每次自动移动>之间的时间\\n单位都是f(帧,1帧=1/60秒)\\n别的游戏里用的单位可能是ms(毫秒),乘16.7就可得出大约的对应数值,例如4f≈67ms。",link:"",id:"8d76369c3989fdbad47f194a6721a15745c5215a"},{title:"DAS调节",tags:["调节","arr","tuning","tiaojie"],category:"term",content:"对于不是刚入门的并且了解极简操作的玩家来说推荐ARR=0,DAS=4~6(具体看个人手部协调性,只要能控制区别就不大)。\\n新人如果实在觉得太快可以适当增加一点DAS,ARR要改的话强烈建议不要超过2\\n\\n最佳调整方法:DAS越小越好,小到依然能准确区分单点/长按为止;ARR能0就0,游戏不允许的话就能拉多小拉多小。",link:"",id:"714a9aa32a049c16cdc992faa8ea0bf6d9e31bd8"},{title:"DAS打断(DCD)",tags:["dascut","dcd","daduan"],category:"term",content:"Techmino中指玩家的操作焦点转移到新方块的瞬间,此时减小(重置)DAS计时器,让自动移动不会立刻生效,减少 “移动键松开晚了导致下一块一出来就立即开始移动” 的情况\\n注:其他游戏中的DAS打断机制可能和Techmino的有区别,仅供参考。",link:"",id:"2724d9482ca6cf5f7780bf4adb94080661c784bd"},{title:"IRS打断(ICD)",tags:["irscut","icd","daduan"],category:"term",content:"(由Electra设计)新方块生成时触发IRS的特殊延迟。在没有生成延迟时,这会让预输入的旋转动作延迟一段时间再生效,允许晚一点松开旋转键防止md。",link:"",id:"4013cf3d649aabed16375e601951cbdf05ba40d2"},{title:"误硬降打断(HCD)",tags:["autolockcut","mdcut","daduan"],category:"term",content:"为了防止玩家硬降时当前方块已经锁定,下一块出现就被立刻硬降导致严重md,所以设计了此打断参数。\\n方块自然锁定之后几帧内硬降键是无效的,具体看设置了多久。\\n注:其他游戏中的防误硬降机制可能和Techmino的有区别,仅供参考。",link:"",id:"02327feae6a40b0064139219288c54efccffe95b"},{title:"软降倍率(SDF)",tags:["软降速度","sdf","softdropfactor"],category:"term",content:"Soft Drop Factor,软降速度因子(倍率)\\n部分游戏中的软降机制就是在按住软降键时方块受到的重力变为原来的若干倍,SDF就是这个变大的倍数。\\n基本所有官块和TETR.IO使用这个机制,但Techmino不使用。",link:"",id:"ed0dcb1d6b8c94f29128c763c43bcba65efb23c9"},{title:"方块名称",tags:["mino","name"],category:"term",content:"这是一个Techmino使用的所有方块的名称和其对应的形状:\\n四连块:\\nZ:`CHAR.mino.Z`, S:`CHAR.mino.S`, J:`CHAR.mino.J`, L:`CHAR.mino.L`, T:`CHAR.mino.T`, O:`CHAR.mino.O`, I:`CHAR.mino.I`;\\n\\n五连块:\\nZ5:`CHAR.mino.Z5`, S5:`CHAR.mino.S5`, P:`CHAR.mino.P`, Q:`CHAR.mino.Q`, F:`CHAR.mino.F`, E:`CHAR.mino.E`, T5:`CHAR.mino.T5`, U:`CHAR.mino.U`, V:`CHAR.mino.V`, W:`CHAR.mino.W`, X:`CHAR.mino.X`, J5:`CHAR.mino.J5`, L5:`CHAR.mino.L5`, R:`CHAR.mino.R`, Y:`CHAR.mino.Y`, N:`CHAR.mino.N`, H:`CHAR.mino.H`, I5:`CHAR.mino.I5`;\\n\\n一至三连块:\\nI3:`CHAR.mino.I3`, C:`CHAR.mino.C`, I2:`CHAR.mino.I2`, O1:`CHAR.mino.O1.",link:"",id:"d51b01e8c89b952743576b83d33b2834a6274475"},{title:"Bag7出块",tags:["sequence","bag出块","bag7bag"],category:"term",content:"一种出块方式,现代方块普遍使用该规则,开局起每7个块是7种形状各出现一次,避免了很久不出某个块和某个块来得特别多,是一些现代方块战术的基础。\\n\\n例如:\\nZSJLTOI OTSLZIJ LTISZOJ",link:"",id:"92406cc044213853fc3bd31c024d68b4b20c1e46"},{title:"His出块",tags:["sequence","His出块","history","h4r6"],category:"term",content:"一种的出块方式,例如His4 Roll6 (h4r6)就是在随机生成新的 Next 的时候,随机一个跟最后4次生成的Next中有一样的,就重新随机,直到已经尝试6次或和那4个都不一样。\\nTechmino的His序列模式中最大Roll次数为序列长度的一半(向上取整)\\n\\n是纯随机出块的一大改进,大大减小了连续出几个SZ(洪水)的概率。",link:"",id:"423effd78b3021cc3b55cd952f3cc4d6680a65fb"},{title:"HisPool出块",tags:["sequence","HisPool出块","history","h4r6","pool","hispool"],category:"term",content:"一种出块方式,History Pool,his算法的分支,比较复杂,这里只提供大概的说明:\\n在His的基础上添加了一个Pool(池),在取块的时候his是直接随机和历史序列(最后4次生成的next)比较,而HisPool是从Pool里面随机取(然后补充一个最旱的块增加他的概率)然后和历史序列比较。\\n\\n这个算法让序列更稳定,介于His和Bag之间,在理论上保证了干旱时间不会无限长。",link:"",id:"2e5deaf94db4d556279b0858fa1d812a14c75fb0"},{title:"bagES出块",tags:["sequence","bages出块","easystart"],category:"term",content:"(该词仅在Techmino内使用)Bag Easy-Start(Bag简单开局),Bag算法的分支,开局第一包的第一块不会是S/Z/O/S5/Z5/F/E/W/X/N/H。",link:"",id:"b4388de53409c80e4752ec3630b7eaf179c23fa1"},{title:"Reverb出块",tags:["sequence","reverb出块"],category:"term",content:"(该词仅在Techmino内使用)回声出块,Bag算法的分支,把Bag的每一块重复随机次数(重复越多概率越小,理论范围是0~6,具体比较复杂这里不展开)",link:"",id:"e0e9047ea536cae2e9bde52ac2abb519f57bcabd"},{title:"C2出块",tags:["sequence","C2出块","cultris2"],category:"term",content:"(七个块初始权重设为0)把七个块的权重都除以2然后加上0~1的随机数,哪个权重最大就出哪个块,然后将其权重除以3.5\\n循环。",link:"",id:"c39a6f5bc5e49f3ee15690e18428f5e73b70d31a"},{title:"超连点(Hypertap)",tags:["chaoliandian"],category:"term",content:"快速震动手指,实现比长按更快速+灵活的高速单点移动,主要在经典块的高难度下(因为DAS不可调而且特别慢,高速下很容易md导致失败,此时手动连点就比自动移动更快)或者受特殊情况限制不适合用自动移动时使用。会使用这个技术的人称为 “Hypertapper”。",link:"",id:"c1498de2cb7e50a3d271293b10d0f4c1fce52958"},{title:"轮指(Rolling)",tags:["lunzhi","liandian"],category:"term",content:"另一种快速连点方法,用于DAS/ARR设置非常慢时的高重力(1G左右)模式。\\n先把手柄(键盘……可能也行吧)悬空摆好,比如架在腿上,要连点某个键的时候一只手虚按按键,另外一只手的几根手指轮流敲打手柄背面, “反向按键” 实现连点。这种控制方法可以让玩家更轻松地获得比直接抖动手指的Hypertap(详见超连点词条)更快的控制速度。\\n此方法最先由Cheez-fish发明,他本人则使用Rolling达到过超过20Hz的点击频率。",link:"",id:"14f9e9ad51eb3c6b0b82a8b06434a6c8b4bf02c9"},{title:"穿透(Passthrough)",tags:["pingthrough","chuantou"],category:"term",content:"(攻击)穿透,指双方的攻击打出后没有抵消,互相都收到的现象。\\nTETR.IO中自定义房间如果开启Passthrough规则(曾经天梯默认开启),那么对手消行攻击的瞬间能看到自己的红条出现但其处于 “无敌时间” 内,不会触发也不能抵消,此时你的攻击会直接打给对手。(应该是给攻击的飞行动画预留时间,同时也让玩家能反应过来并主动选择要不要抵消,要的话就再等一会)\\n另有pingthrough的说法,只是原因是由于不可避免的网络传输延迟,效果同passthrough,设计比较简单的联网对战块没有特殊考虑的话可能自然就会带有这个机制。",link:"",id:"b1b57177465e540c5d10340a25ceac66587d9548"},{title:"TOP攻击表",tags:["攻击表","top","attack"],category:"term",content:"消1/2/3/4打0/1/2/4\\nTspin攻击为消行数×2,如果符合Mini条件则÷2\\n连击攻击:001122334445+\\nb2b攻击+1(如果是T3则+2)\\nPC攻击+6(该部分攻击AOE直接打出到所有对手,不抵消缓冲槽中的攻击)。",link:"",id:"4daf8d019b2eb498b905f00ea3815c997957a3c1"},{title:"Techmino攻击表",tags:["攻击表","tech","attack"],category:"term",content:"详见主菜单右下角的说明书页面。",link:"",id:"f88d073399916d52e4576228ab74680da960ce86"},{title:"堆叠(Stack)",tags:["duidie","stacking"],category:"term",content:"将方块无缝隙地堆起来,需要玩家有预读Next的能力,可以通过不使用Hold并且用十个消四完成40L模式进行练习。\\n这项能力从入坑到封神都是非常重要的。",link:"",id:"e1111237dcf2dedead39b5ad821680fd3e54968c"},{title:"双旋",tags:["shuangxuan"],category:"term",content:"指能够使用顺时针+逆时针两个旋转键的技术,原来要转三下的情况可以反向转一下就够,减少烦琐操作。\\n同时双旋也是学习Finesse的必要前提。\\n\\n另见 三旋。",link:"",id:"75fbfc8a44f1c4e7ad7442c8d2bf3bbeee964f84"},{title:"三旋",tags:["sanxuan"],category:"term",content:"指能够使用顺+逆时针+180°旋转三个旋转键的技术,任何方块放哪只需要旋转一次即可(Spin不算)。\\n但由于只有部分游戏有180°旋转所以改操作并不通用,而且对速度提升的效果不如从单旋转双旋显著,不追求极限速度的玩家可不学。",link:"",id:"2b9fb0b0a34906a3e0661bfc42cdd4f5d22d1bdc"},{title:"干旱(Drought)",tags:["ganhan"],category:"term",content:"经典块术语,指长时间不来I方块(长条)。现代方块使用的Bag7出块规则下干旱几乎不可能,平均7块就会有一个I,理论极限两个I最远中间隔12块。",link:"",id:"a7354647df19e4542dd2c518a87cc5a34dc07c3d"},{title:"骨块(Bone)",tags:["gukuai","bone","tgm"],category:"term",content:"最早的方块游戏使用的方块样式。\\n很久以前的电脑没有可以显示复杂图案的屏幕,只能往上打字,所以一格方块用两个方括号[ ]表示,长得像骨头所以叫骨块。\\n基于骨块的特点,Techmino把骨块重新定义为, “所有形状使用的同一个比较花眼的贴图”,不同的皮肤有不同的骨块样式。",link:"",id:"fa88022dae3dd8d347497269989b0c970fb331e8"},{title:"半隐",tags:["banyin","half","semi","invisible"],category:"term",content:"指方块锁定经过一段时间后会变隐形的规则\\n注:从锁定开始到消失的具体时长不定,可以描述为 “过几秒种后消失”。",link:"",id:"47bab3efe4a80330b0e3296dd5cefa2ef5947479"},{title:"全隐",tags:["quanyin","invisible"],category:"term",content:"指方块锁定后会马上完全隐藏\\n注:锁定时有消失动画的话也可以叫全隐,但其实难度会小一点,故Techmino中没有动画的隐形模式叫瞬隐。",link:"",id:"7fde031fd2c446dcc6febc1460e7a176aea0f76f"},{title:"场地重力",tags:["重力","zhongli","liansuo","cascade","chain"],category:"term",content:"(由于 “重力” 有歧义所以本词典里称为场地重力,也有重力连锁等叫法。)\\n部分游戏的部分模式可能包含此规则。此规则下玩家的四格方块四个方向有连接关系,连起来的几个格整体会受到重力影响,悬空了会往下落。在这个规则下可以构造复杂的连锁消除,一个主打连锁消除对战的游戏是Qudra(老游戏,现在基本没人玩)。",link:"",id:"5c34f773590a91d1ead56e3ee96f72ac256becf0"},{title:"MPH模式",tags:[],category:"term",content:"一个游戏模式:\\nMemoryless,Previewless,Holdless\\n纯随机块序+无Next+无Hold完成40L,一个非常考验玩家反应速度的模式。",link:"",id:"eee83ba245a28aa022fef3efc11326147659b7ff"},{title:"输入延迟",tags:["input","delay","yanchi"],category:"term",content:"用任何设备玩任何游戏时,所有的操作(按键盘,点鼠标等)都会晚一点点(很短,几毫秒到几十毫秒)才到达游戏,如果过长就会很影响游戏手感,作用效果类似于你拿QQ远程控制打FPS游戏\\nTOP、TE等游戏比较明显\\n这个延迟一般由硬件性能,硬件状态影响,通常来说不可设置,开启性能模式(或者关闭节能模式)可能会好一点。",link:"",id:"4b8c50985cdd542e3c94c9a2b79395c49418d15e"},{title:"秘密段位",tags:["大于号","secret","grade","dayuhao"],category:"term",content:"出自TGM系列的彩蛋玩法。不按照TGM的一般目标去玩,而是去拼图拼出 “每行仅有一个洞的大于号” 图形(不能是小于号),拼得越多获得的秘密段位越高(没特殊功能,只是好玩),最高目标是完成19行并封顶\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"b263f6c990a57a26633cc7bd003908670ee7f646"},{title:"Cold Clear",tags:["机器人","电脑","cc","coldclear","ai","bot","jiqiren"],category:"term",content:"一个AI的名字(就跟AlphaGo一样)\\n由MinusKelvin开发,本来是用于PPT的。在Techmino中经过调整后支持all-spin和TRS旋转系统",link:"",id:"aa68bfd12693bbbe20dff6ffd916a3dac4a6e3c9"},{title:"ZZZbot",tags:["机器人","电脑","ai","bot","jiqiren","zzztoj"],category:"term",content:"一个AI的名字(就跟AlphaGo一样)\\n由研究群群友奏之章开发,重新调参后在各个游戏平台上的表现都很不错。",link:"",id:"9af34345ce55a382489268c7758029aafa1a9163"},{title:"开局定式(Setup)",tags:["opening","kaijudingshi","opener"],category:"setup",content:"开局定式,定式一般指开局定式这个概念。\\n指开局后可以使用的套路摆法。局中情况合适的时候也可以摆出同样的形状,但是和摆法开局一般都不一样。\\n\\n能称为定式的摆法要尽量满足以下至少2~3条:\\n能适应大多数块序\\n输出高,尽量不浪费T块\\n很多方块无需软降,极简操作数少\\n有明确后续,分支尽量少。\\n\\n注:绝大多数定式基于bag7,序列规律性强才有发明定式的可能。",link:"",id:"df652018abcf82abc6dbe1a339e8e6a376a20c35"},{title:"DT炮",tags:["dt","cannon"],category:"setup",content:"Double-Triple Cannon。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=dt",id:"c84eb90518d81cc527fbe8233887f47772125423"},{title:"DTPC",tags:["dtpc"],category:"setup",content:"DT炮一个能接PC的分支。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=dt",id:"a5d683b4cf6ae65cb6633c7f0d69b62c5d1c58d5"},{title:"BT炮",tags:["bt","cannon"],category:"setup",content:"β炮(Beta炮)。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=bt_cannon",id:"854c5cc7f35829e88a6eccf9fbbb6fa89edaa8ab"},{title:"BTPC",tags:["btpc"],category:"setup",content:"BT炮一个能接PC的分支。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=bt_cannon",id:"d758cb387934a6b3d01fbd987a7aafc0b97de136"},{title:"DDPC",tags:["ddpc"],category:"setup",content:"开局TSD的一个能接Double-Double-PC的分支。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"eb6ac16e737090768cffadbf9d024d232d3ff7af"},{title:"QT炮",tags:["qt","cannon"],category:"setup",content:"一种能以更高的概率搭出开局DT Attack的类似DT炮的定式。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=dt",id:"608966e445c2fdd79a54e70ebc9fedeb7d1d7122"},{title:"MT",tags:["mt"],category:"setup",content:"Mini-Triple\\n一个TSM+TST的结构。",link:"https://harddrop.com/wiki?search=mt",id:"6fed69798ff5f0e5689ae087f81e5cefd51d95a2"},{title:"Trinity",tags:["trinity"],category:"setup",content:"Trinity\\n一个TSD+TSD+TSD或TSM+TST+TSD的结构。",link:"https://harddrop.com/wiki?search=trinity",id:"23311c901e3148d98252db6bfcb25186c997d400"},{title:"狼月炮",tags:["wolfmoon"],category:"setup",content:"狼月炮。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"1cb20b42ac498a3b3ae7032b112e66984a9cfed1"},{title:"Sewer",tags:["sewer"],category:"setup",content:"Sewer开局。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=sewer",id:"2dc57fa414902fa0d8b754ed37593d60ef925fb0"},{title:"TKI",tags:["tki-3"],category:"setup",content:"TKI-3开局\\n有两种解释,一个是TSD开局的TKI-3,另一个是TST开局的TKI堆积(C-Spin)。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=TKI_3_Opening",id:"a0ddc8f6275de58166709571717aa865521fff23"},{title:"God Spin",tags:["god"],category:"setup",content:"God Spin\\nwindkey发明的一个观赏性很强但实战没啥用的炫酷特殊T2+T3开局定式。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=godspin",id:"861f1341d8cf426b7482a71a3dd9a10efa1c7318"},{title:"信天翁",tags:["xintianweng","albatrosssp","albatrossspecial"],category:"setup",content:"一种高观赏性几乎不浪费T的快节奏强力T2-T3-T2-PC开局。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"ffb2e6595a86705f093e21e6db7b9ae0188f04b6"},{title:"鹈鹕",tags:["tihu","pelican"],category:"setup",content:"一种类似信天翁的定式,在块序不能信天翁的时候可以用。",link:"https://harddrop.com/wiki?search=Pelican",id:"016a737dc0e2d0cd07623cef2e04b365f7bb6175"},{title:"全清开局",tags:["qiqiaoban","tangram","pco","1stpc"],category:"setup",content:"Perfect Clear Opener,一种极大概率能摆出来,有概率(hold I约84.6%,不hold I约61.2%)能做到PC的定式,Techmino中的pc练习中空出不规则区域的那个就是PCO。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"6a8be4405e98915f6655789010f64ea014202aa9"},{title:"六巧板",tags:["liuqiaoban","gracesystem","1stpc"],category:"setup",content:"Grace System,大约有88.57%概率能做到PC的定式,Techmino中的PC练习中空出4×4方形区域就是六巧板。",link:"",id:"bf995e4847e5cd95771228fcf7bd6fe129b6615e"},{title:"DPC",tags:["DPC"],category:"setup",content:"在场地空白,7bag还剩一块的情况下,能在很多情况下达到100%搭建率的TSD+PC的定式。更多信息见tetristemplate.info",link:"https://tetristemplate.info/dpc/",id:"5f2e2f1cc0015f54f03388e081451126c9294593"},{title:"Gamushiro堆叠",tags:["gamushiro"],category:"setup",content:"ガムシロ積み(Gamushiro堆叠),一种开局TD-Attack的定式。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"9ea080e44e71da0764fb3bf657b608d9877ea469"},{title:"中局定式",tags:["setup","dingshi"],category:"pattern",content:"指一些特定的能打出较高伤害的常见典型形状,是中局输出的途径之一,部分也可以在开局做不过不是很有必要,主要见于中局\\n另见开局定式,只说定式两个字一般指开局定式而非中局。",link:"",id:"b8a0ea574618943723ad374fd32c184ee33555f6"},{title:"C-Spin",tags:["cspin","tki","tdattack"],category:"pattern",content:"也被称为TKI堆积,TD-Attack。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=c-spin",id:"80bd39535beca0977d6ef4b4e1da7f1dd78e8666"},{title:"STSD",tags:["stsd"],category:"pattern",content:"Super T-spin Double\\n一种能做两个T2的形状。\\n如果垃圾行正好空在STSD正下方会暴毙。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=stsd",id:"4c2dddaa7f9e3e890715087dfa785b71988d0fab"},{title:"STMB",tags:["stmb"],category:"pattern",content:"STMB cave\\n在3宽坑架SZ捐一个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=stmb_cave",id:"7d7819f74cdba0e2ba8956c291e372334897409f"},{title:"双刃剑",tags:["shuangrenjian","fractal","spider"],category:"pattern",content:"两个T2形状叠在一起。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Fractal",id:"3fe3869cbb75d97edff943068639e1a0dd56cb77"},{title:"LST堆叠",tags:["lst"],category:"pattern",content:"一种不断b2b一直做T2的堆叠方法。",link:"https://www.bilibili.com/read/cv7946210",id:"eae9d6dffafeeac8a7683d47fa35bf1387b161e1"},{title:"汉堡包",tags:["hamburger","hanbaobao"],category:"pattern",content:"一种边缘捐T不影响消四的堆叠法。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=hamburger",id:"8e717c458a3b14f828d5b3829abe39109fb9e7ba"},{title:"皇家十字",tags:["皇十","imperial","cross","huangjiashizi","huangshi"],category:"pattern",content:"在一个十字形洞口盖屋檐后可以做两个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=imperial_cross",id:"cf30af122ab4aad55cb2d90d17c2d22f77d677e6"},{title:"阶梯捐",tags:["jieti","kaidan","stairs"],category:"pattern",content:"一种在看起来像阶梯的洞口捐一个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=kaidan",id:"035364df33e068fd79e878d2303b70187bee5f4a"},{title:"社畜train",tags:["shachikutrain","shechu"],category:"pattern",content:"一种在常见T3屋檐上捐两个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"e015095785d0949e6898d105da1a796bbe580de9"},{title:"千鸟格子",tags:["qianniaoge","cutcopy"],category:"pattern",content:"一种在小洞上捐一个T2后还能做一个T2的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=Cut_copy",id:"6a0f2dbe037b8fb75aabb6240edf036b4ea2d47e"},{title:"绯红之王",tags:["feihongzhiwang","king","crimson"],category:"pattern",content:"在STSD上叠若干个T3的形状。\\n更多内容见Hard Drop Wiki。",link:"https://harddrop.com/wiki?search=King_Crimson",id:"bf80c9c23c1f3b4f479cdc131ee85967ed70903a"},{title:"连续PC",tags:["lianxuquanxiao","lianxupc","pcloop"],category:"pattern",content:"研究群群友加加编写的一份连续PC教程",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"e52690d229e9ebba6cdbc9c6a3a16f4a144ad223"},{title:"控制台",tags:["console","cmd","commamd","minglinghang","kongzhitai"],category:"command",content:"目前进入控制台的方式是在主菜单 点特定位置/按键盘某个键 数次。\\n\\n进入之后输入help并回车获取更多信息。\\n来探索Techmino的隐藏内容和计算机更底层的操作吧!",link:"",id:"58bfbde2b073f0a77bb297ea9cf87bb9e69a7ddd"},{title:"重置设置",tags:["reset","setting","chongzhi","qingkong","shezhi"],category:"command",content:"前往控制台输入 “rm conf/setting” 并回车\\n需要重启游戏生效,若反悔,进入设置菜单再退出即可恢复文件。",link:"",id:"5cf66cac5ce8974668c71eaf7447618388f55dfd"},{title:"重置统计数据",tags:["reset","statistic","data","chongzhi","tongji","shuju"],category:"command",content:"前往控制台输入 “rm conf/data” 并回车\\n需要重启游戏生效,若反悔,玩一局并触发结算即可恢复文件。",link:"",id:"fe34cb829dd263aae56f93719b6da410047b17c6"},{title:"重置解锁状态",tags:["reset","unlock","chongzhi","qingkong","jiesuo"],category:"command",content:"前往控制台输入 “rm conf/unlock” 并回车\\n需要重启游戏生效,若反悔,刷新任意一个模式在地图上的状态即可恢复文件。",link:"",id:"8d5f7b81b58cbe28222bef8dbf42b07f8567c1bc"},{title:"重置本地排行榜",tags:["reset","chongzhi","paihangbang"],category:"command",content:"前往控制台输入 “rm -s record” 并回车\\n需要重启游戏生效,若反悔,玩一局并更新模式排行榜即可恢复对应模式的单个排行榜文件。",link:"",id:"e4dc5fc185f02353923de956ac63bd744d936941"},{title:"删除键位",tags:["reset","virtualkey"],category:"command",content:"前往控制台输入 “rm conf/键位文件” 并回车\\n键盘是key,虚拟按键是virtualkey,虚拟按键预设是vkSave1(2)\\n前两者重启生效,若反悔,进入对应的设置菜单再返回即可恢复文件。",link:"",id:"437023db6d0bee3d8e0c81f8c2f301475e93eec0"},{title:"删除录像",tags:["reset","replay","luxiang"],category:"command",content:"前往控制台输入 “rm -s replay” 并回车。\\n立即生效。",link:"",id:"c9905d35c87bcb02cb6576609738534e93ee738e"},{title:"删除缓存",tags:["reset","cache","huancun","touxiang"],category:"command",content:"前往控制台输入 “rm -s cache” 并回车。\\n立即生效。",link:"",id:"870fc3b86c4332d84a0e9291d1b0cda4e6e9d74b"},{title:"SFX",tags:[],category:"english",content:"Sound Effects\\n音效(也叫SE)。",link:"",id:"b0c8b2616fcf55db02517b967976e5aef6ba218b"},{title:"BGM",tags:[],category:"english",content:"Background Music\\n背景音乐。",link:"",id:"3a8fc0e11631d265ee0184469d7f69816f5f50ec"},{title:"TAS",tags:[],category:"english",content:"Tool-Assisted Speedrun(Supergaming)\\n使用特殊工具在不破坏游戏规则(允许超越人类操作,只是在程序层面不作弊)进行的游戏。\\n一般用于冲击理论值或者达成各种有趣的目标用来观赏。\\nTechmino中内置了非常简单的TAS工具。",link:"",id:"140296e9534655c0627b934e13cbc2ee04786f64"},{title:"AFK",tags:[],category:"english",content:"Away from keyboard\\n一段时间不接触键盘,就是不玩一段时间,可以缓解手部疲劳,休息好之后马上破纪录也是可能的。",link:"",id:"62acb2a49a166fd8b2db6a593c4d07c4f7b6cfca"},{title:"Timing",tags:["timing","shiji","fanji"],category:"term",content:"Time作动词时的动名词形式,意为抓时机。在方块中往往指根据双方形势选择打出攻击的时机,和要不要故意吃下对手的攻击防止抵消,然后再把自己的攻击打过去。可以一定程度上提高对战的优势,但对于新人来说连自己场地都看不明白还看啥对面,有时间分析形势不如提速提效来得更好。",link:"",id:"4c1cfa04c2082a6eaeccc2526824dfb211e2ca27"}],MR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},DR=Gt("path",{d:"M12 3h.393a7.5 7.5 0 0 0 7.92 12.446A9 9 0 1 1 12 2.992z",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1),OR=[DR],LR=de({name:"Moon",render:function(t,n){return We(),vn("svg",MR,OR)}}),HR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},$R=Gt("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[Gt("circle",{cx:"12",cy:"12",r:"4"}),Gt("path",{d:"M3 12h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7l-.7.7m0 11.4l.7.7m-12.1-.7l-.7.7"})],-1),BR=[$R],NR=de({name:"Sun",render:function(t,n){return We(),vn("svg",HR,BR)}});var zR=function(e,t,n){if(n||arguments.length===2)for(var o=0,r=t.length,i;oscreen.width<640),a=Yi(),s={en:AR,ja:RR,zh:IR,vi:ER},l=z(()=>s[a.locale.value]);jh(()=>{function f(){location.hash.length>1&&(o.value=os([...s.en,...s.ja,...s.zh,...s.vi],b=>b.id===location.hash.substring(1)))}window.addEventListener("hashchange",()=>{f()}),f()});const c=z(()=>{const f=l.value.filter(b=>{const p=r.value.toLowerCase();return[!!b.title.toLowerCase().match(p),b.tags.map(m=>m.toLowerCase()).includes(p)].includes(!0)});return bc(f,b=>b.category)});function d(){if(t.theme==="light"){t.theme="dark";return}t.theme="light"}function u(){o.value=void 0,location.replace(new URL(location.pathname,location.href).toString())}function h(f){u(),r.value=f}function g(f){t.locale=f,a.locale.value=f}return jh(()=>{a.locale.value=t.locale}),(f,b)=>{const p=yd,m=Qa,k=u8,T=qb,v=I_,x=ew,A=$8,y=Jw,R=o9,P=O7,D=G7,W=K7,M=j7;return We(),wt(TR,null,{default:Se(()=>[me(M,{"native-scrollbar":"",position:"absolute"},{default:Se(()=>[me(D,{class:"pb-16 mx-2","native-scrollbar":""},{default:Se(()=>[me(T,{class:"mt-2",justify:"space-between"},{default:Se(()=>[me(m,{onClick:d},{icon:Se(()=>[me(p,{component:Ne(t).theme==="light"?Ne(LR):Ne(NR)},null,8,["component"])]),_:1}),me(k,{options:n,value:f.$i18n.locale,animated:"",trigger:"click",onSelect:g},{default:Se(()=>[me(m,null,{icon:Se(()=>[me(p,{component:Ne(Q_)},null,8,["component"])]),_:1})]),_:1},8,["value"])]),_:1}),me(T,{class:"sm:w-1/3 mx-auto mt-20",vertical:""},{default:Se(()=>[me(Ne(Ma),{class:"text-center"},{default:Se(()=>[me(v,null,{default:Se(()=>[_t(wn(f.$t("title")),1)]),_:1}),Ne(o)?(We(),wt(T,{key:1,justify:"center"},{default:Se(()=>[me(m,{onClick:u},{default:Se(()=>[_t(wn(f.$t("back")),1)]),_:1})]),_:1})):(We(),wt(x,{key:0,value:Ne(r),"onUpdate:value":b[0]||(b[0]=j=>ct(r)?r.value=j:null),placeholder:f.$t("search"),clearable:""},null,8,["value","placeholder"]))]),_:1}),me(A)]),_:1}),me(T,{size:"large",vertical:""},{default:Se(()=>[Ne(o)?(We(),wt(Ne(Ma),{key:1,class:"sm:w-1/3 mx-auto"},{default:Se(()=>[me(pR,{item:Ne(o),onTagClick:h},null,8,["item"])]),_:1})):(We(),wt(T,{key:0,vertical:""},{default:Se(()=>[(We(!0),vn(He,null,_a(Ne(c),(j,ee)=>(We(),wt(T,{class:"text-center",vertical:""},{default:Se(()=>[me(Ne(rc),{style:ss({color:Ne(Pl)[ee]}),class:"font-bold text-2xl",type:"info"},{default:Se(()=>[_t(wn(ee),1)]),_:2},1032,["style"]),Ne(i)?(We(),wt(P,{key:1,cols:3,"x-gap":10,"y-gap":10,class:"text-center"},{default:Se(()=>[(We(!0),vn(He,null,_a(j,B=>(We(),wt(R,null,{default:Se(()=>[me(m,{color:Ne(Pl)[ee],class:"w-full",onClick:X=>o.value=B},{default:Se(()=>[me(Ne(Ms),null,{trigger:Se(()=>[me(y,null,{default:Se(()=>[me(ic,{item:B},null,8,["item"])]),_:2},1024)]),default:Se(()=>[_t(" "+wn(B.title),1)]),_:2},1024)]),_:2},1032,["color","onClick"])]),_:2},1024))),256))]),_:2},1024)):(We(),wt(T,{key:0,justify:"center"},{default:Se(()=>[(We(!0),vn(He,null,_a(j,B=>(We(),wt(m,{color:Ne(Pl)[ee],size:"small",onClick:X=>o.value=B},{default:Se(()=>[me(ic,{item:B},null,8,["item"])]),_:2},1032,["color","onClick"]))),256))]),_:2},1024))]),_:2},1024))),256))]),_:1}))]),_:1})]),_:1}),me(W,{class:"py-2",position:"absolute"},{default:Se(()=>[me(T,{size:0,justify:"center"},{default:Se(()=>[me(Ne(Ma),null,{default:Se(()=>[me(Ne(rc),null,{default:Se(()=>[_t(wn(f.$t("maker"))+": ",1)]),_:1}),me(m,{href:"https://zhazha120.cn",tag:"a",text:"",type:"primary"},{default:Se(()=>b[1]||(b[1]=[_t(" WOSHIZHAZHA120")])),_:1})]),_:1}),me(A,{vertical:""}),me(m,{href:"https://github.com/26F-Studio/techmino-online-dict",tag:"a",text:"",type:"primary"},{default:Se(()=>b[2]||(b[2]=[_t(" Github ")])),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}}),Od=O2({render:()=>S(jR)});Od.use(_R);Od.use(PR);Od.mount("#app")});export default GR(); diff --git a/index.html b/index.html index 1bd5d39..0220ebf 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Techmino 在线词典 - +