From 24d9c21fd1ce7dae54cafbe97ff56d38fb76f724 Mon Sep 17 00:00:00 2001 From: WOSHIZHAZHA120 Date: Wed, 24 Apr 2024 01:36:07 +0000 Subject: [PATCH] deploy: c891ad19e00597b0ca55b9c9d2ed43c69b59ca70 --- assets/index-116c2c18.js | 2005 ----------------- assets/index-933b2d6b.css | 1 - assets/index-C5Qhmvz8.css | 1 + assets/index-DjcdJx7V.js | 1880 ++++++++++++++++ ...f0fa7804.otf => proportional-DqX3ed1n.otf} | Bin index.html | 11 +- 6 files changed, 1886 insertions(+), 2012 deletions(-) delete mode 100644 assets/index-116c2c18.js delete mode 100644 assets/index-933b2d6b.css create mode 100644 assets/index-C5Qhmvz8.css create mode 100644 assets/index-DjcdJx7V.js rename assets/{proportional-f0fa7804.otf => proportional-DqX3ed1n.otf} (100%) diff --git a/assets/index-116c2c18.js b/assets/index-116c2c18.js deleted file mode 100644 index d85555b..0000000 --- a/assets/index-116c2c18.js +++ /dev/null @@ -1,2005 +0,0 @@ -var z1=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var DL=z1((rn,an)=>{(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.4.24 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function ic(e,t){const n=new Set(e.split(","));return t?o=>n.has(o.toLowerCase()):o=>n.has(o)}const ot={},pr=[],on=()=>{},F1=()=>!1,Ua=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ac=e=>e.startsWith("onUpdate:"),mt=Object.assign,sc=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},W1=Object.prototype.hasOwnProperty,ze=(e,t)=>W1.call(e,t),we=Array.isArray,br=e=>Ka(e)==="[object Map]",gf=e=>Ka(e)==="[object Set]",Re=e=>typeof e=="function",pt=e=>typeof e=="string",Yo=e=>typeof e=="symbol",tt=e=>e!==null&&typeof e=="object",mf=e=>(tt(e)||Re(e))&&Re(e.then)&&Re(e.catch),pf=Object.prototype.toString,Ka=e=>pf.call(e),j1=e=>Ka(e).slice(8,-1),bf=e=>Ka(e)==="[object Object]",lc=e=>pt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ti=ic(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qa=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},G1=/-(\w)/g,kr=qa(e=>e.replace(G1,(t,n)=>n?n.toUpperCase():"")),V1=/\B([A-Z])/g,Ir=qa(e=>e.replace(V1,"-$1").toLowerCase()),vf=qa(e=>e.charAt(0).toUpperCase()+e.slice(1)),Bs=qa(e=>e?`on${vf(e)}`:""),lo=(e,t)=>!Object.is(e,t),Ns=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},U1=e=>{const t=parseFloat(e);return isNaN(t)?e:t},K1=e=>{const t=pt(e)?Number(e):NaN;return isNaN(t)?e:t};let vd;const xf=()=>vd||(vd=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Xa(e){if(we(e)){const t={};for(let n=0;n{if(n){const o=n.split(X1);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function cc(e){let t="";if(pt(e))t=e;else if(we(e))for(let n=0;npt(e)?e:e==null?"":we(e)||tt(e)&&(e.toString===pf||!Re(e.toString))?JSON.stringify(e,kf,2):String(e),kf=(e,t)=>t&&t.__v_isRef?kf(e,t.value):br(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r],i)=>(n[zs(o,i)+" =>"]=r,n),{})}:gf(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zs(n))}:Yo(t)?zs(t):tt(t)&&!we(t)&&!bf(t)?String(t):t,zs=(e,t="")=>{var n;return Yo(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.24 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let nn;class Sf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=nn,!t&&nn&&(this.index=(nn.scopes||(nn.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=nn;try{return nn=this,t()}finally{nn=n}}}on(){nn=this}off(){nn=this.parent}stop(t){if(this._active){let n,o;for(n=0,o=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),bo()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ao,n=Wo;try{return ao=!0,Wo=this,this._runnings++,yd(this),this.fn()}finally{xd(this),this._runnings--,Wo=n,ao=t}}stop(){var t;this.active&&(yd(this),xd(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function tv(e){return e.value}function yd(e){e._trackId++,e._depsLength=0}function xd(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Ta=new WeakMap,jo=Symbol(""),vl=Symbol("");function Jt(e,t,n){if(ao&&Wo){let o=Ta.get(e);o||Ta.set(e,o=new Map);let r=o.get(n);r||o.set(n,r=Ef(()=>o.delete(n))),Pf(Wo,r)}}function Wn(e,t,n,o,r,i){const a=Ta.get(e);if(!a)return;let s=[];if(t==="clear")s=[...a.values()];else if(n==="length"&&we(e)){const l=Number(o);a.forEach((c,d)=>{(d==="length"||!Yo(d)&&d>=l)&&s.push(c)})}else switch(n!==void 0&&s.push(a.get(n)),t){case"add":we(e)?lc(n)&&s.push(a.get("length")):(s.push(a.get(jo)),br(e)&&s.push(a.get(vl)));break;case"delete":we(e)||(s.push(a.get(jo)),br(e)&&s.push(a.get(vl)));break;case"set":br(e)&&s.push(a.get(jo));break}fc();for(const l of s)l&&Af(l,4);gc()}function nv(e,t){var n;return(n=Ta.get(e))==null?void 0:n.get(t)}const ov=ic("__proto__,__v_isRef,__isVue"),If=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Yo)),Cd=rv();function rv(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const o=He(this);for(let i=0,a=this.length;i{e[t]=function(...n){po(),fc();const o=He(this)[t].apply(this,n);return gc(),bo(),o}}),e}function iv(e){Yo(e)||(e=String(e));const t=He(this);return Jt(t,"has",e),t.hasOwnProperty(e)}class Rf{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?vv:$f:i?Df:Lf).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const a=we(t);if(!r){if(a&&ze(Cd,n))return Reflect.get(Cd,n,o);if(n==="hasOwnProperty")return iv}const s=Reflect.get(t,n,o);return(Yo(n)?If.has(n):ov(n))||(r||Jt(t,"get",n),i)?s:ht(s)?a&&lc(n)?s:s.value:tt(s)?r?sn(s):vo(s):s}}class Mf extends Rf{constructor(t=!1){super(!1,t)}set(t,n,o,r){let i=t[n];if(!this._isShallow){const l=ui(i);if(!wa(o)&&!ui(o)&&(i=He(i),o=He(o)),!we(t)&&ht(i)&&!ht(o))return l?!1:(i.value=o,!0)}const a=we(t)&&lc(n)?Number(n)e,Za=e=>Reflect.getPrototypeOf(e);function Gi(e,t,n=!1,o=!1){e=e.__v_raw;const r=He(e),i=He(t);n||(lo(t,i)&&Jt(r,"get",t),Jt(r,"get",i));const{has:a}=Za(r),s=o?mc:n?vc:fi;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 Vi(e,t=!1){const n=this.__v_raw,o=He(n),r=He(e);return t||(lo(e,r)&&Jt(o,"has",e),Jt(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Ui(e,t=!1){return e=e.__v_raw,!t&&Jt(He(e),"iterate",jo),Reflect.get(e,"size",e)}function kd(e){e=He(e);const t=He(this);return Za(t).has.call(t,e)||(t.add(e),Wn(t,"add",e,e)),this}function Sd(e,t){t=He(t);const n=He(this),{has:o,get:r}=Za(n);let i=o.call(n,e);i||(e=He(e),i=o.call(n,e));const a=r.call(n,e);return n.set(e,t),i?lo(t,a)&&Wn(n,"set",e,t):Wn(n,"add",e,t),this}function Td(e){const t=He(this),{has:n,get:o}=Za(t);let r=n.call(t,e);r||(e=He(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&Wn(t,"delete",e,void 0),i}function wd(){const e=He(this),t=e.size!==0,n=e.clear();return t&&Wn(e,"clear",void 0,void 0),n}function Ki(e,t){return function(o,r){const i=this,a=i.__v_raw,s=He(a),l=t?mc:e?vc:fi;return!e&&Jt(s,"iterate",jo),a.forEach((c,d)=>o.call(r,l(c),l(d),i))}}function qi(e,t,n){return function(...o){const r=this.__v_raw,i=He(r),a=br(i),s=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,c=r[e](...o),d=n?mc:t?vc:fi;return!t&&Jt(i,"iterate",l?vl:jo),{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 Xn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function dv(){const e={get(i){return Gi(this,i)},get size(){return Ui(this)},has:Vi,add:kd,set:Sd,delete:Td,clear:wd,forEach:Ki(!1,!1)},t={get(i){return Gi(this,i,!1,!0)},get size(){return Ui(this)},has:Vi,add:kd,set:Sd,delete:Td,clear:wd,forEach:Ki(!1,!0)},n={get(i){return Gi(this,i,!0)},get size(){return Ui(this,!0)},has(i){return Vi.call(this,i,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Ki(!0,!1)},o={get(i){return Gi(this,i,!0,!0)},get size(){return Ui(this,!0)},has(i){return Vi.call(this,i,!0)},add:Xn("add"),set:Xn("set"),delete:Xn("delete"),clear:Xn("clear"),forEach:Ki(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=qi(i,!1,!1),n[i]=qi(i,!0,!1),t[i]=qi(i,!1,!0),o[i]=qi(i,!0,!0)}),[e,n,t,o]}const[uv,hv,fv,gv]=dv();function pc(e,t){const n=t?e?gv:fv:e?hv:uv;return(o,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(ze(n,r)&&r in o?n:o,r,i)}const mv={get:pc(!1,!1)},pv={get:pc(!1,!0)},bv={get:pc(!0,!1)},Lf=new WeakMap,Df=new WeakMap,$f=new WeakMap,vv=new WeakMap;function yv(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xv(e){return e.__v_skip||!Object.isExtensible(e)?0:yv(j1(e))}function vo(e){return ui(e)?e:bc(e,!1,sv,mv,Lf)}function Cv(e){return bc(e,!1,cv,pv,Df)}function sn(e){return bc(e,!0,lv,bv,$f)}function bc(e,t,n,o,r){if(!tt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const a=xv(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 ui(e)?Go(e.__v_raw):!!(e&&e.__v_isReactive)}function ui(e){return!!(e&&e.__v_isReadonly)}function wa(e){return!!(e&&e.__v_isShallow)}function Of(e){return e?!!e.__v_raw:!1}function He(e){const t=e&&e.__v_raw;return t?He(t):e}function hi(e){return Object.isExtensible(e)&&yf(e,"__v_skip",!0),e}const fi=e=>tt(e)?vo(e):e,vc=e=>tt(e)?sn(e):e;class Hf{constructor(t,n,o,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new hc(()=>t(this._value),()=>ma(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=o}get value(){const t=He(this);return(!t._cacheable||t.effect.dirty)&&lo(t._value,t._value=t.effect.run())&&ma(t,4),Bf(t),t.effect._dirtyLevel>=2&&ma(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function kv(e,t,n=!1){let o,r;const i=Re(e);return i?(o=e,r=on):(o=e.get,r=e.set),new Hf(o,r,i||!r,n)}function Bf(e){var t;ao&&Wo&&(e=He(e),Pf(Wo,(t=e.dep)!=null?t:e.dep=Ef(()=>e.dep=void 0,e instanceof Hf?e:void 0)))}function ma(e,t=4,n){e=He(e);const o=e.dep;o&&Af(o,t)}function ht(e){return!!(e&&e.__v_isRef===!0)}function V(e){return Nf(e,!1)}function Ya(e){return Nf(e,!0)}function Nf(e,t){return ht(e)?e:new Sv(e,t)}class Sv{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:He(t),this._value=n?t:fi(t)}get value(){return Bf(this),this._value}set value(t){const n=this.__v_isShallow||wa(t)||ui(t);t=n?t:He(t),lo(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:fi(t),ma(this,4))}}function Fe(e){return ht(e)?e.value:e}const Tv={get:(e,t,n)=>Fe(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return ht(r)&&!ht(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function zf(e){return Go(e)?e:new Proxy(e,Tv)}function wv(e){const t=we(e)?new Array(e.length):{};for(const n in e)t[n]=Ff(e,n);return t}class _v{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return nv(He(this._object),this._key)}}class Pv{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Ue(e,t,n){return ht(e)?e:Re(e)?new Pv(e):tt(e)&&arguments.length>1?Ff(e,t,n):V(e)}function Ff(e,t,n){const o=e[t];return ht(o)?o:new _v(e,t,n)}/** -* @vue/runtime-core v3.4.24 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function so(e,t,n,o){try{return o?e(...o):e()}catch(r){Ja(r,t,n)}}function gn(e,t,n,o){if(Re(e)){const r=so(e,t,n,o);return r&&mf(r)&&r.catch(i=>{Ja(i,t,n)}),r}if(we(e)){const r=[];for(let i=0;i>>1,r=zt[o],i=mi(r);iEn&&zt.splice(t,1)}function Rv(e){we(e)?vr.push(...e):(!no||!no.includes(e,e.allowRecurse?$o+1:$o))&&vr.push(e),jf()}function _d(e,t,n=gi?En+1:0){for(;nmi(n)-mi(o));if(vr.length=0,no){no.push(...t);return}for(no=t,$o=0;$oe.id==null?1/0:e.id,Mv=(e,t)=>{const n=mi(e)-mi(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Vf(e){yl=!1,gi=!0,zt.sort(Mv);const t=on;try{for(En=0;Enpt(g)?g.trim():g)),u&&(r=n.map(U1))}let s,l=o[s=Bs(t)]||o[s=Bs(kr(t))];!l&&i&&(l=o[s=Bs(Ir(t))]),l&&gn(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,gn(c,e,6,r)}}function Uf(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=Uf(c,t,!0);d&&(s=!0,mt(a,d))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!s?(tt(e)&&o.set(e,null),null):(we(i)?i.forEach(l=>a[l]=null):mt(a,i),tt(e)&&o.set(e,a),a)}function Qa(e,t){return!e||!Ua(t)?!1:(t=t.slice(2).replace(/Once$/,""),ze(e,t[0].toLowerCase()+t.slice(1))||ze(e,Ir(t))||ze(e,t))}let xt=null,Kf=null;function _a(e){const t=xt;return xt=e,Kf=e&&e.type.__scopeId||null,t}function Se(e,t=xt,n){if(!t||e._n)return e;const o=(...r)=>{o._d&&Nd(-1);const i=_a(t);let a;try{a=e(...r)}finally{_a(i),o._d&&Nd(1)}return a};return o._n=!0,o._c=!0,o._d=!0,o}function Fs(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=_a(e);let m,C;try{if(n.shapeFlag&4){const y=r||o,k=y;m=Pn(c.call(k,y,d,u,g,h,f)),C=s}else{const y=t;m=Pn(y.length>1?y(u,{attrs:s,slots:a,emit:l}):y(u,null)),C=t.props?s:Dv(s)}}catch(y){ii.length=0,Ja(y,e,1),m=pe(Ft)}let _=m;if(C&&b!==!1){const y=Object.keys(C),{shapeFlag:k}=_;y.length&&k&7&&(i&&y.some(ac)&&(C=$v(C,i)),_=pn(_,C))}return n.dirs&&(_=pn(_),_.dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&(_.transition=n.transition),m=_,_a(p),m}const Dv=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ua(n))&&((t||(t={}))[n]=e[n]);return t},$v=(e,t)=>{const n={};for(const o in e)(!ac(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function Ov(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?Pd(o,a,c):!!a;if(l&8){const d=t.dynamicProps;for(let u=0;ue.__isSuspense;function zv(e,t){t&&t.pendingBranch?we(e)?t.effects.push(...e):t.effects.push(e):Rv(e)}const Fv=Symbol.for("v-scx"),Wv=()=>Ae(Fv);function co(e,t){return Cc(e,null,t)}const Xi={};function et(e,t,n){return Cc(e,t,n)}function Cc(e,t,{immediate:n,deep:o,flush:r,once:i,onTrack:a,onTrigger:s}=ot){if(t&&i){const P=t;t=(...v)=>{P(...v),k()}}const l=Mt,c=P=>o===!0?P:Ho(P,o===!1?1:void 0);let d,u=!1,h=!1;if(ht(e)?(d=()=>e.value,u=wa(e)):Go(e)?(d=()=>c(e),u=!0):we(e)?(h=!0,u=e.some(P=>Go(P)||wa(P)),d=()=>e.map(P=>{if(ht(P))return P.value;if(Go(P))return c(P);if(Re(P))return so(P,l,2)})):Re(e)?t?d=()=>so(e,l,2):d=()=>(g&&g(),gn(e,l,3,[f])):d=on,t&&o){const P=d;d=()=>Ho(P())}let g,f=P=>{g=_.onStop=()=>{so(P,l,4),g=_.onStop=void 0}},b;if(os)if(f=on,t?n&&gn(t,l,3,[d(),h?[]:void 0,f]):d(),r==="sync"){const P=Wv();b=P.__watcherHandles||(P.__watcherHandles=[])}else return on;let p=h?new Array(e.length).fill(Xi):Xi;const m=()=>{if(!(!_.active||!_.dirty))if(t){const P=_.run();(o||u||(h?P.some((v,T)=>lo(v,p[T])):lo(P,p)))&&(g&&g(),gn(t,l,3,[P,p===Xi?void 0:h&&p[0]===Xi?[]:p,f]),p=P)}else _.run()};m.allowRecurse=!!t;let C;r==="sync"?C=m:r==="post"?C=()=>Yt(m,l&&l.suspense):(m.pre=!0,l&&(m.id=l.uid),C=()=>xc(m));const _=new hc(d,on,C),y=uc(),k=()=>{_.stop(),y&&sc(y.effects,_)};return t?n?m():p=_.run():r==="post"?Yt(_.run.bind(_),l&&l.suspense):_.run(),b&&b.push(k),k}function jv(e,t,n){const o=this.proxy,r=pt(e)?e.includes(".")?qf(o,e):()=>o[e]:e.bind(o,o);let i;Re(t)?i=t:(i=t.handler,n=t);const a=Mi(this),s=Cc(r,i.bind(o),n);return a(),s}function qf(e,t){const n=t.split(".");return()=>{let o=e;for(let r=0;r0){if(n>=t)return e;n++}if(o=o||new Set,o.has(e))return e;if(o.add(e),ht(e))Ho(e.value,t,n,o);else if(we(e))for(let r=0;r{Ho(r,t,n,o)});else if(bf(e))for(const r in e)Ho(e[r],t,n,o);return e}function uo(e,t){if(xt===null)return e;const n=rs(xt)||xt.proxy,o=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),kt(()=>{e.isUnmounting=!0}),e}const un=[Function,Array],Zf={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:un,onEnter:un,onAfterEnter:un,onEnterCancelled:un,onBeforeLeave:un,onLeave:un,onAfterLeave:un,onLeaveCancelled:un,onBeforeAppear:un,onAppear:un,onAfterAppear:un,onAppearCancelled:un},Gv={name:"BaseTransition",props:Zf,setup(e,{slots:t}){const n=ln(),o=Xf();return()=>{const r=t.default&&kc(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const h of r)if(h.type!==Ft){i=h;break}}const a=He(e),{mode:s}=a;if(o.isLeaving)return Ws(i);const l=Ad(i);if(!l)return Ws(i);const c=pi(l,a,o,n);bi(l,c);const d=n.subTree,u=d&&Ad(d);if(u&&u.type!==Ft&&!Oo(l,u)){const h=pi(u,a,o,n);if(bi(u,h),s==="out-in")return o.isLeaving=!0,h.afterLeave=()=>{o.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Ws(i);s==="in-out"&&l.type!==Ft&&(h.delayLeave=(g,f,b)=>{const p=Yf(o,u);p[String(u.key)]=u,g[oo]=()=>{f(),g[oo]=void 0,delete c.delayedLeave},c.delayedLeave=b})}return i}}},Vv=Gv;function Yf(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 pi(e,t,n,o){const{appear:r,mode:i,persisted:a=!1,onBeforeEnter:s,onEnter:l,onAfterEnter:c,onEnterCancelled:d,onBeforeLeave:u,onLeave:h,onAfterLeave:g,onLeaveCancelled:f,onBeforeAppear:b,onAppear:p,onAfterAppear:m,onAppearCancelled:C}=t,_=String(e.key),y=Yf(n,e),k=(T,E)=>{T&&gn(T,o,9,E)},P=(T,E)=>{const L=E[1];k(T,E),we(T)?T.every(j=>j.length<=1)&&L():T.length<=1&&L()},v={mode:i,persisted:a,beforeEnter(T){let E=s;if(!n.isMounted)if(r)E=b||s;else return;T[oo]&&T[oo](!0);const L=y[_];L&&Oo(e,L)&&L.el[oo]&&L.el[oo](),k(E,[T])},enter(T){let E=l,L=c,j=d;if(!n.isMounted)if(r)E=p||l,L=m||c,j=C||d;else return;let M=!1;const K=T[Zi]=ne=>{M||(M=!0,ne?k(j,[T]):k(L,[T]),v.delayedLeave&&v.delayedLeave(),T[Zi]=void 0)};E?P(E,[T,K]):K()},leave(T,E){const L=String(e.key);if(T[Zi]&&T[Zi](!0),n.isUnmounting)return E();k(u,[T]);let j=!1;const M=T[oo]=K=>{j||(j=!0,E(),K?k(f,[T]):k(g,[T]),T[oo]=void 0,y[L]===e&&delete y[L])};y[L]=e,h?P(h,[T,M]):M()},clone(T){return pi(T,t,n,o)}};return v}function Ws(e){if(es(e))return e=pn(e),e.children=null,e}function Ad(e){if(!es(e))return e;const{shapeFlag:t,children:n}=e;if(t&16)return n[0];if(t&32&&Re(n.default))return n.default()}function bi(e,t){e.shapeFlag&6&&e.component?bi(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 kc(e,t=!1,n){let o=[],r=0;for(let i=0;i1)for(let i=0;imt({name:e.name},t,{setup:e}))():e}const ni=e=>!!e.type.__asyncLoader,es=e=>e.type.__isKeepAlive;function Jf(e,t){Qf(e,"a",t)}function Sc(e,t){Qf(e,"da",t)}function Qf(e,t,n=Mt){const o=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ts(t,o,n),n){let r=n.parent;for(;r&&r.parent;)es(r.parent.vnode)&&Uv(o,t,n,r),r=r.parent}}function Uv(e,t,n,o){const r=ts(t,e,o,!0);Tc(()=>{sc(o[t],r)},n)}function ts(e,t,n=Mt,o=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...a)=>{if(n.isUnmounted)return;po();const s=Mi(n),l=gn(t,n,e,a);return s(),bo(),l});return o?r.unshift(i):r.push(i),i}}const Vn=e=>(t,n=Mt)=>(!os||e==="sp")&&ts(e,(...o)=>t(...o),n),Dn=Vn("bm"),$t=Vn("m"),Kv=Vn("bu"),eg=Vn("u"),kt=Vn("bum"),Tc=Vn("um"),qv=Vn("sp"),Xv=Vn("rtg"),Zv=Vn("rtc");function Yv(e,t=Mt){ts("ec",e,t)}function pa(e,t,n,o){let r;const i=n&&n[o];if(we(e)||pt(e)){r=new Array(e.length);for(let a=0,s=e.length;at(a,s,void 0,i&&i[s]));else{const a=Object.keys(e);r=new Array(a.length);for(let s=0,l=a.length;syi(t)?!(t.type===Ft||t.type===Oe&&!ng(t.children)):!0)?e:null}const xl=e=>e?bg(e)?rs(e)||e.proxy:xl(e.parent):null,oi=mt(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=>xl(e.parent),$root:e=>xl(e.root),$emit:e=>e.emit,$options:e=>wc(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,xc(e.update)}),$nextTick:e=>e.n||(e.n=Ut.bind(e.proxy)),$watch:e=>jv.bind(e)}),js=(e,t)=>e!==ot&&!e.__isScriptSetup&&ze(e,t),Jv={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(js(o,t))return a[t]=1,o[t];if(r!==ot&&ze(r,t))return a[t]=2,r[t];if((c=e.propsOptions[0])&&ze(c,t))return a[t]=3,i[t];if(n!==ot&&ze(n,t))return a[t]=4,n[t];Cl&&(a[t]=0)}}const d=oi[t];let u,h;if(d)return t==="$attrs"&&Jt(e.attrs,"get",""),d(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==ot&&ze(n,t))return a[t]=4,n[t];if(h=l.config.globalProperties,ze(h,t))return h[t]},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;return js(r,t)?(r[t]=n,!0):o!==ot&&ze(o,t)?(o[t]=n,!0):ze(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!==ot&&ze(e,a)||js(t,a)||(s=i[0])&&ze(s,a)||ze(o,a)||ze(oi,a)||ze(r.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ze(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ed(e){return we(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cl=!0;function Qv(e){const t=wc(e),n=e.proxy,o=e.ctx;Cl=!1,t.beforeCreate&&Id(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:C,destroyed:_,unmounted:y,render:k,renderTracked:P,renderTriggered:v,errorCaptured:T,serverPrefetch:E,expose:L,inheritAttrs:j,components:M,directives:K,filters:ne}=t;if(c&&ey(c,o,null),a)for(const F in a){const re=a[F];Re(re)&&(o[F]=re.bind(n))}if(r){const F=r.call(n,n);tt(F)&&(e.data=vo(F))}if(Cl=!0,i)for(const F in i){const re=i[F],be=Re(re)?re.bind(n,n):Re(re.get)?re.get.bind(n,n):on,ve=!Re(re)&&Re(re.set)?re.set.bind(n):on,_e=N({get:be,set:ve});Object.defineProperty(o,F,{enumerable:!0,configurable:!0,get:()=>_e.value,set:Me=>_e.value=Me})}if(s)for(const F in s)og(s[F],o,n,F);if(l){const F=Re(l)?l.call(n):l;Reflect.ownKeys(F).forEach(re=>{je(re,F[re])})}d&&Id(d,e,"c");function U(F,re){we(re)?re.forEach(be=>F(be.bind(n))):re&&F(re.bind(n))}if(U(Dn,u),U($t,h),U(Kv,g),U(eg,f),U(Jf,b),U(Sc,p),U(Yv,T),U(Zv,P),U(Xv,v),U(kt,C),U(Tc,y),U(qv,E),we(L))if(L.length){const F=e.exposed||(e.exposed={});L.forEach(re=>{Object.defineProperty(F,re,{get:()=>n[re],set:be=>n[re]=be})})}else e.exposed||(e.exposed={});k&&e.render===on&&(e.render=k),j!=null&&(e.inheritAttrs=j),M&&(e.components=M),K&&(e.directives=K)}function ey(e,t,n=on){we(e)&&(e=kl(e));for(const o in e){const r=e[o];let i;tt(r)?"default"in r?i=Ae(r.from||o,r.default,!0):i=Ae(r.from||o):i=Ae(r),ht(i)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[o]=i}}function Id(e,t,n){gn(we(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function og(e,t,n,o){const r=o.includes(".")?qf(n,o):()=>n[o];if(pt(e)){const i=t[e];Re(i)&&et(r,i)}else if(Re(e))et(r,e.bind(n));else if(tt(e))if(we(e))e.forEach(i=>og(i,t,n,o));else{const i=Re(e.handler)?e.handler.bind(n):t[e.handler];Re(i)&&et(r,i,e)}}function wc(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=>Pa(l,c,a,!0)),Pa(l,t,a)),tt(t)&&i.set(t,l),l}function Pa(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&Pa(e,i,n,!0),r&&r.forEach(a=>Pa(e,a,n,!0));for(const a in t)if(!(o&&a==="expose")){const s=ty[a]||n&&n[a];e[a]=s?s(e[a],t[a]):t[a]}return e}const ty={data:Rd,props:Md,emits:Md,methods:Jr,computed:Jr,beforeCreate:Gt,created:Gt,beforeMount:Gt,mounted:Gt,beforeUpdate:Gt,updated:Gt,beforeDestroy:Gt,beforeUnmount:Gt,destroyed:Gt,unmounted:Gt,activated:Gt,deactivated:Gt,errorCaptured:Gt,serverPrefetch:Gt,components:Jr,directives:Jr,watch:oy,provide:Rd,inject:ny};function Rd(e,t){return t?e?function(){return mt(Re(e)?e.call(this,this):e,Re(t)?t.call(this,this):t)}:t:e}function ny(e,t){return Jr(kl(e),kl(t))}function kl(e){if(we(e)){const t={};for(let n=0;n1)return n&&Re(t)?t.call(o&&o.proxy):t}}function ay(){return!!(Mt||xt||yr)}const ig=Object.create(null),ag=()=>Object.create(ig),sg=e=>Object.getPrototypeOf(e)===ig;function sy(e,t,n,o=!1){const r={},i=ag();e.propsDefaults=Object.create(null),lg(e,t,r,i);for(const a in e.propsOptions[0])a in r||(r[a]=void 0);n?e.props=o?r:Cv(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function ly(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:a}}=e,s=He(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]=cg(u,t,!0);mt(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 tt(e)&&o.set(e,pr),pr;if(we(i))for(let d=0;d-1,g[1]=b<0||f-1||ze(g,"default"))&&s.push(u)}}}const c=[a,s];return tt(e)&&o.set(e,c),c}function Ld(e){return e[0]!=="$"&&!ti(e)}function Dd(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function $d(e,t){return Dd(e)===Dd(t)}function Od(e,t){return we(t)?t.findIndex(n=>$d(n,e)):Re(t)&&$d(t,e)?0:-1}const dg=e=>e[0]==="_"||e==="$stable",_c=e=>we(e)?e.map(Pn):[Pn(e)],cy=(e,t,n)=>{if(t._n)return t;const o=Se((...r)=>_c(t(...r)),n);return o._c=!1,o},ug=(e,t,n)=>{const o=e._ctx;for(const r in e){if(dg(r))continue;const i=e[r];if(Re(i))t[r]=cy(r,i,o);else if(i!=null){const a=_c(i);t[r]=()=>a}}},hg=(e,t)=>{const n=_c(t);e.slots.default=()=>n},dy=(e,t)=>{const n=e.slots=ag();if(e.vnode.shapeFlag&32){const o=t._;o?(mt(n,t),yf(n,"_",o)):ug(t,n)}else t&&hg(e,t)},uy=(e,t,n)=>{const{vnode:o,slots:r}=e;let i=!0,a=ot;if(o.shapeFlag&32){const s=t._;s?n&&s===1?i=!1:(mt(r,t),!n&&s===1&&delete r._):(i=!t.$stable,ug(t,r)),a=t}else t&&(hg(e,t),a={default:1});if(i)for(const s in r)!dg(s)&&a[s]==null&&delete r[s]};function Tl(e,t,n,o,r=!1){if(we(e)){e.forEach((h,g)=>Tl(h,t&&(we(t)?t[g]:t),n,o,r));return}if(ni(o)&&!r)return;const i=o.shapeFlag&4?rs(o.component)||o.component.proxy:o.el,a=r?null:i,{i:s,r:l}=e,c=t&&t.r,d=s.refs===ot?s.refs={}:s.refs,u=s.setupState;if(c!=null&&c!==l&&(pt(c)?(d[c]=null,ze(u,c)&&(u[c]=null)):ht(c)&&(c.value=null)),Re(l))so(l,s,12,[a,d]);else{const h=pt(l),g=ht(l);if(h||g){const f=()=>{if(e.f){const b=h?ze(u,l)?u[l]:d[l]:l.value;r?we(b)&&sc(b,i):we(b)?b.includes(i)||b.push(i):h?(d[l]=[i],ze(u,l)&&(u[l]=d[l])):(l.value=[i],e.k&&(d[e.k]=l.value))}else h?(d[l]=a,ze(u,l)&&(u[l]=a)):g&&(l.value=a,e.k&&(d[e.k]=a))};a?(f.id=-1,Yt(f,n)):f()}}}const Yt=zv;function hy(e){return fy(e)}function fy(e,t){const n=xf();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=on,insertStaticContent:f}=e,b=(I,A,O,X=null,Z=null,oe=null,le=void 0,x=null,w=!!A.dynamicChildren)=>{if(I===A)return;I&&!Oo(I,A)&&(X=De(I),Me(I,Z,oe,!0),I=null),A.patchFlag===-2&&(w=!1,A.dynamicChildren=null);const{type:R,ref:W,shapeFlag:ie}=A;switch(R){case Rr:p(I,A,O,X);break;case Ft:m(I,A,O,X);break;case Vs:I==null&&C(A,O,X,le);break;case Oe:M(I,A,O,X,Z,oe,le,x,w);break;default:ie&1?k(I,A,O,X,Z,oe,le,x,w):ie&6?K(I,A,O,X,Z,oe,le,x,w):(ie&64||ie&128)&&R.process(I,A,O,X,Z,oe,le,x,w,ct)}W!=null&&Z&&Tl(W,I&&I.ref,oe,A||I,!A)},p=(I,A,O,X)=>{if(I==null)o(A.el=s(A.children),O,X);else{const Z=A.el=I.el;A.children!==I.children&&c(Z,A.children)}},m=(I,A,O,X)=>{I==null?o(A.el=l(A.children||""),O,X):A.el=I.el},C=(I,A,O,X)=>{[I.el,I.anchor]=f(I.children,A,O,X,I.el,I.anchor)},_=({el:I,anchor:A},O,X)=>{let Z;for(;I&&I!==A;)Z=h(I),o(I,O,X),I=Z;o(A,O,X)},y=({el:I,anchor:A})=>{let O;for(;I&&I!==A;)O=h(I),r(I),I=O;r(A)},k=(I,A,O,X,Z,oe,le,x,w)=>{A.type==="svg"?le="svg":A.type==="math"&&(le="mathml"),I==null?P(A,O,X,Z,oe,le,x,w):E(I,A,Z,oe,le,x,w)},P=(I,A,O,X,Z,oe,le,x)=>{let w,R;const{props:W,shapeFlag:ie,transition:Q,dirs:$}=I;if(w=I.el=a(I.type,oe,W&&W.is,W),ie&8?d(w,I.children):ie&16&&T(I.children,w,null,X,Z,Gs(I,oe),le,x),$&&Ao(I,null,X,"created"),v(w,I,I.scopeId,le,X),W){for(const me in W)me!=="value"&&!ti(me)&&i(w,me,null,W[me],oe,I.children,X,Z,Ie);"value"in W&&i(w,"value",null,W.value,oe),(R=W.onVnodeBeforeMount)&&Tn(R,X,I)}$&&Ao(I,null,X,"beforeMount");const B=gy(Z,Q);B&&Q.beforeEnter(w),o(w,A,O),((R=W&&W.onVnodeMounted)||B||$)&&Yt(()=>{R&&Tn(R,X,I),B&&Q.enter(w),$&&Ao(I,null,X,"mounted")},Z)},v=(I,A,O,X,Z)=>{if(O&&g(I,O),X)for(let oe=0;oe{for(let R=w;R{const x=A.el=I.el;let{patchFlag:w,dynamicChildren:R,dirs:W}=A;w|=I.patchFlag&16;const ie=I.props||ot,Q=A.props||ot;let $;if(O&&Eo(O,!1),($=Q.onVnodeBeforeUpdate)&&Tn($,O,A,I),W&&Ao(A,I,O,"beforeUpdate"),O&&Eo(O,!0),R?L(I.dynamicChildren,R,x,O,X,Gs(A,Z),oe):le||re(I,A,x,null,O,X,Gs(A,Z),oe,!1),w>0){if(w&16)j(x,A,ie,Q,O,X,Z);else if(w&2&&ie.class!==Q.class&&i(x,"class",null,Q.class,Z),w&4&&i(x,"style",ie.style,Q.style,Z),w&8){const B=A.dynamicProps;for(let me=0;me{$&&Tn($,O,A,I),W&&Ao(A,I,O,"updated")},X)},L=(I,A,O,X,Z,oe,le)=>{for(let x=0;x{if(O!==X){if(O!==ot)for(const x in O)!ti(x)&&!(x in X)&&i(I,x,O[x],null,le,A.children,Z,oe,Ie);for(const x in X){if(ti(x))continue;const w=X[x],R=O[x];w!==R&&x!=="value"&&i(I,x,R,w,le,A.children,Z,oe,Ie)}"value"in X&&i(I,"value",O.value,X.value,le)}},M=(I,A,O,X,Z,oe,le,x,w)=>{const R=A.el=I?I.el:s(""),W=A.anchor=I?I.anchor:s("");let{patchFlag:ie,dynamicChildren:Q,slotScopeIds:$}=A;$&&(x=x?x.concat($):$),I==null?(o(R,O,X),o(W,O,X),T(A.children||[],O,W,Z,oe,le,x,w)):ie>0&&ie&64&&Q&&I.dynamicChildren?(L(I.dynamicChildren,Q,O,Z,oe,le,x),(A.key!=null||Z&&A===Z.subTree)&&Pc(I,A,!0)):re(I,A,O,W,Z,oe,le,x,w)},K=(I,A,O,X,Z,oe,le,x,w)=>{A.slotScopeIds=x,I==null?A.shapeFlag&512?Z.ctx.activate(A,O,X,le,w):ne(A,O,X,Z,oe,le,w):H(I,A,w)},ne=(I,A,O,X,Z,oe,le)=>{const x=I.component=wy(I,X,Z);if(es(I)&&(x.ctx.renderer=ct),_y(x),x.asyncDep){if(Z&&Z.registerDep(x,U),!I.el){const w=x.subTree=pe(Ft);m(null,w,A,O)}}else U(x,I,A,O,Z,oe,le)},H=(I,A,O)=>{const X=A.component=I.component;if(Ov(I,A,O))if(X.asyncDep&&!X.asyncResolved){F(X,A,O);return}else X.next=A,Iv(X.update),X.effect.dirty=!0,X.update();else A.el=I.el,X.vnode=A},U=(I,A,O,X,Z,oe,le)=>{const x=()=>{if(I.isMounted){let{next:W,bu:ie,u:Q,parent:$,vnode:B}=I;{const Et=fg(I);if(Et){W&&(W.el=B.el,F(I,W,le)),Et.asyncDep.then(()=>{I.isUnmounted||x()});return}}let me=W,Ce;Eo(I,!1),W?(W.el=B.el,F(I,W,le)):W=B,ie&&Ns(ie),(Ce=W.props&&W.props.onVnodeBeforeUpdate)&&Tn(Ce,$,W,B),Eo(I,!0);const Be=Fs(I),dt=I.subTree;I.subTree=Be,b(dt,Be,u(dt.el),De(dt),I,Z,oe),W.el=Be.el,me===null&&Hv(I,Be.el),Q&&Yt(Q,Z),(Ce=W.props&&W.props.onVnodeUpdated)&&Yt(()=>Tn(Ce,$,W,B),Z)}else{let W;const{el:ie,props:Q}=A,{bm:$,m:B,parent:me}=I,Ce=ni(A);if(Eo(I,!1),$&&Ns($),!Ce&&(W=Q&&Q.onVnodeBeforeMount)&&Tn(W,me,A),Eo(I,!0),ie&&bt){const Be=()=>{I.subTree=Fs(I),bt(ie,I.subTree,I,Z,null)};Ce?A.type.__asyncLoader().then(()=>!I.isUnmounted&&Be()):Be()}else{const Be=I.subTree=Fs(I);b(null,Be,O,X,I,Z,oe),A.el=Be.el}if(B&&Yt(B,Z),!Ce&&(W=Q&&Q.onVnodeMounted)){const Be=A;Yt(()=>Tn(W,me,Be),Z)}(A.shapeFlag&256||me&&ni(me.vnode)&&me.vnode.shapeFlag&256)&&I.a&&Yt(I.a,Z),I.isMounted=!0,A=O=X=null}},w=I.effect=new hc(x,on,()=>xc(R),I.scope),R=I.update=()=>{w.dirty&&w.run()};R.id=I.uid,Eo(I,!0),R()},F=(I,A,O)=>{A.component=I;const X=I.vnode.props;I.vnode=A,I.next=null,ly(I,A.props,X,O),uy(I,A.children,O),po(),_d(I),bo()},re=(I,A,O,X,Z,oe,le,x,w=!1)=>{const R=I&&I.children,W=I?I.shapeFlag:0,ie=A.children,{patchFlag:Q,shapeFlag:$}=A;if(Q>0){if(Q&128){ve(R,ie,O,X,Z,oe,le,x,w);return}else if(Q&256){be(R,ie,O,X,Z,oe,le,x,w);return}}$&8?(W&16&&Ie(R,Z,oe),ie!==R&&d(O,ie)):W&16?$&16?ve(R,ie,O,X,Z,oe,le,x,w):Ie(R,Z,oe,!0):(W&8&&d(O,""),$&16&&T(ie,O,X,Z,oe,le,x,w))},be=(I,A,O,X,Z,oe,le,x,w)=>{I=I||pr,A=A||pr;const R=I.length,W=A.length,ie=Math.min(R,W);let Q;for(Q=0;QW?Ie(I,Z,oe,!0,!1,ie):T(A,O,X,Z,oe,le,x,w,ie)},ve=(I,A,O,X,Z,oe,le,x,w)=>{let R=0;const W=A.length;let ie=I.length-1,Q=W-1;for(;R<=ie&&R<=Q;){const $=I[R],B=A[R]=w?ro(A[R]):Pn(A[R]);if(Oo($,B))b($,B,O,null,Z,oe,le,x,w);else break;R++}for(;R<=ie&&R<=Q;){const $=I[ie],B=A[Q]=w?ro(A[Q]):Pn(A[Q]);if(Oo($,B))b($,B,O,null,Z,oe,le,x,w);else break;ie--,Q--}if(R>ie){if(R<=Q){const $=Q+1,B=$Q)for(;R<=ie;)Me(I[R],Z,oe,!0),R++;else{const $=R,B=R,me=new Map;for(R=B;R<=Q;R++){const ee=A[R]=w?ro(A[R]):Pn(A[R]);ee.key!=null&&me.set(ee.key,R)}let Ce,Be=0;const dt=Q-B+1;let Et=!1,On=0;const jt=new Array(dt);for(R=0;R=dt){Me(ee,Z,oe,!0);continue}let ue;if(ee.key!=null)ue=me.get(ee.key);else for(Ce=B;Ce<=Q;Ce++)if(jt[Ce-B]===0&&Oo(ee,A[Ce])){ue=Ce;break}ue===void 0?Me(ee,Z,oe,!0):(jt[ue-B]=R+1,ue>=On?On=ue:Et=!0,b(ee,A[ue],O,null,Z,oe,le,x,w),Be++)}const zr=Et?my(jt):pr;for(Ce=zr.length-1,R=dt-1;R>=0;R--){const ee=B+R,ue=A[ee],ke=ee+1{const{el:oe,type:le,transition:x,children:w,shapeFlag:R}=I;if(R&6){_e(I.component.subTree,A,O,X);return}if(R&128){I.suspense.move(A,O,X);return}if(R&64){le.move(I,A,O,ct);return}if(le===Oe){o(oe,A,O);for(let ie=0;iex.enter(oe),Z);else{const{leave:ie,delayLeave:Q,afterLeave:$}=x,B=()=>o(oe,A,O),me=()=>{ie(oe,()=>{B(),$&&$()})};Q?Q(oe,B,me):me()}else o(oe,A,O)},Me=(I,A,O,X=!1,Z=!1)=>{const{type:oe,props:le,ref:x,children:w,dynamicChildren:R,shapeFlag:W,patchFlag:ie,dirs:Q}=I;if(x!=null&&Tl(x,null,O,I,!0),W&256){A.ctx.deactivate(I);return}const $=W&1&&Q,B=!ni(I);let me;if(B&&(me=le&&le.onVnodeBeforeUnmount)&&Tn(me,A,I),W&6)Ye(I.component,O,X);else{if(W&128){I.suspense.unmount(O,X);return}$&&Ao(I,null,A,"beforeUnmount"),W&64?I.type.remove(I,A,O,Z,ct,X):R&&(oe!==Oe||ie>0&&ie&64)?Ie(R,A,O,!1,!0):(oe===Oe&&ie&384||!Z&&W&16)&&Ie(w,A,O),X&<(I)}(B&&(me=le&&le.onVnodeUnmounted)||$)&&Yt(()=>{me&&Tn(me,A,I),$&&Ao(I,null,A,"unmounted")},O)},lt=I=>{const{type:A,el:O,anchor:X,transition:Z}=I;if(A===Oe){Ze(O,X);return}if(A===Vs){y(I);return}const oe=()=>{r(O),Z&&!Z.persisted&&Z.afterLeave&&Z.afterLeave()};if(I.shapeFlag&1&&Z&&!Z.persisted){const{leave:le,delayLeave:x}=Z,w=()=>le(O,oe);x?x(I.el,oe,w):w()}else oe()},Ze=(I,A)=>{let O;for(;I!==A;)O=h(I),r(I),I=O;r(A)},Ye=(I,A,O)=>{const{bum:X,scope:Z,update:oe,subTree:le,um:x}=I;X&&Ns(X),Z.stop(),oe&&(oe.active=!1,Me(le,I,A,O)),x&&Yt(x,A),Yt(()=>{I.isUnmounted=!0},A),A&&A.pendingBranch&&!A.isUnmounted&&I.asyncDep&&!I.asyncResolved&&I.suspenseId===A.pendingId&&(A.deps--,A.deps===0&&A.resolve())},Ie=(I,A,O,X=!1,Z=!1,oe=0)=>{for(let le=oe;leI.shapeFlag&6?De(I.component.subTree):I.shapeFlag&128?I.suspense.next():h(I.anchor||I.el);let Ot=!1;const Le=(I,A,O)=>{I==null?A._vnode&&Me(A._vnode,null,null,!0):b(A._vnode||null,I,A,null,null,null,O),Ot||(Ot=!0,_d(),Gf(),Ot=!1),A._vnode=I},ct={p:b,um:Me,m:_e,r:lt,mt:ne,mc:T,pc:re,pbc:L,n:De,o:e};let At,bt;return t&&([At,bt]=t(ct)),{render:Le,hydrate:At,createApp:iy(Le,At)}}function Gs({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 Eo({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function gy(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Pc(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 fg(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:fg(t)}const py=e=>e.__isTeleport,ri=e=>e&&(e.disabled||e.disabled===""),Hd=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Bd=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,wl=(e,t)=>{const n=e&&e.to;return pt(n)?t?t(n):null:n},by={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=ri(t.props);let{shapeFlag:C,children:_,dynamicChildren:y}=t;if(e==null){const k=t.el=b(""),P=t.anchor=b("");g(k,n,o),g(P,n,o);const v=t.target=wl(t.props,f),T=t.targetAnchor=b("");v&&(g(T,v),a==="svg"||Hd(v)?a="svg":(a==="mathml"||Bd(v))&&(a="mathml"));const E=(L,j)=>{C&16&&d(_,L,j,r,i,a,s,l)};m?E(n,P):v&&E(v,T)}else{t.el=e.el;const k=t.anchor=e.anchor,P=t.target=e.target,v=t.targetAnchor=e.targetAnchor,T=ri(e.props),E=T?n:P,L=T?k:v;if(a==="svg"||Hd(P)?a="svg":(a==="mathml"||Bd(P))&&(a="mathml"),y?(h(e.dynamicChildren,y,E,r,i,a,s),Pc(e,t,!0)):l||u(e,t,E,L,r,i,a,s,!1),m)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Yi(t,n,k,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=wl(t.props,f);j&&Yi(t,j,null,c,0)}else T&&Yi(t,P,v,c,1)}gg(t)},remove(e,t,n,o,{um:r,o:{remove:i}},a){const{shapeFlag:s,children:l,anchor:c,targetAnchor:d,target:u,props:h}=e;if(u&&i(d),a&&i(c),s&16){const g=a||!ri(h);for(let f=0;f0?kn||pr:null,yy(),vi>0&&kn&&kn.push(e),e}function mn(e,t,n,o,r,i){return mg(Wt(e,t,n,o,r,i,!0))}function It(e,t,n,o,r){return mg(pe(e,t,n,o,r,!0))}function yi(e){return e?e.__v_isVNode===!0:!1}function Oo(e,t){return e.type===t.type&&e.key===t.key}const pg=({key:e})=>e??null,ba=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pt(e)||ht(e)||Re(e)?{i:xt,r:e,k:t,f:!!n}:e:null);function Wt(e,t=null,n=null,o=0,r=null,i=e===Oe?0:1,a=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&pg(t),ref:t&&ba(t),scopeId:Kf,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:xt};return s?(Ac(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=pt(n)?8:16),vi>0&&!a&&kn&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&kn.push(l),l}const pe=xy;function xy(e,t=null,n=null,o=0,r=null,i=!1){if((!e||e===Bv)&&(e=Ft),yi(e)){const s=pn(e,t,!0);return n&&Ac(s,n),vi>0&&!i&&kn&&(s.shapeFlag&6?kn[kn.indexOf(e)]=s:kn.push(s)),s.patchFlag|=-2,s}if(Iy(e)&&(e=e.__vccOpts),t){t=Cy(t);let{class:s,style:l}=t;s&&!pt(s)&&(t.class=cc(s)),tt(l)&&(Of(l)&&!we(l)&&(l=mt({},l)),t.style=Xa(l))}const a=pt(e)?1:Nv(e)?128:py(e)?64:tt(e)?4:Re(e)?2:0;return Wt(e,t,n,o,r,a,i,!0)}function Cy(e){return e?Of(e)||sg(e)?mt({},e):e:null}function pn(e,t,n=!1){const{props:o,ref:r,patchFlag:i,children:a}=e,s=t?Mn(o||{},t):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&pg(s),ref:t&&t.ref?n&&r?we(r)?r.concat(ba(t)):[r,ba(t)]:ba(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Oe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&pn(e.ssContent),ssFallback:e.ssFallback&&pn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function St(e=" ",t=0){return pe(Rr,null,e,t)}function ky(e="",t=!1){return t?(Ve(),It(Ft,null,e)):pe(Ft,null,e)}function Pn(e){return e==null||typeof e=="boolean"?pe(Ft):we(e)?pe(Oe,null,e.slice()):typeof e=="object"?ro(e):pe(Rr,null,String(e))}function ro(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:pn(e)}function Ac(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),Ac(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!sg(t)?t._ctx=xt:r===3&&xt&&(xt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Re(t)?(t={default:t,_ctx:xt},n=32):(t=String(t),o&64?(n=16,t=[St(t)]):n=8);e.children=t,e.shapeFlag|=n}function Mn(...e){const t={};for(let n=0;nMt||xt;let Aa,_l;{const e=xf(),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)}};Aa=t("__VUE_INSTANCE_SETTERS__",n=>Mt=n),_l=t("__VUE_SSR_SETTERS__",n=>os=n)}const Mi=e=>{const t=Mt;return Aa(e),e.scope.on(),()=>{e.scope.off(),Aa(t)}},zd=()=>{Mt&&Mt.scope.off(),Aa(null)};function bg(e){return e.vnode.shapeFlag&4}let os=!1;function _y(e,t=!1){t&&_l(t);const{props:n,children:o}=e.vnode,r=bg(e);sy(e,n,r,t),dy(e,o);const i=r?Py(e,t):void 0;return t&&_l(!1),i}function Py(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Jv);const{setup:o}=n;if(o){const r=e.setupContext=o.length>1?Ey(e):null,i=Mi(e);po();const a=so(o,e,0,[e.props,r]);if(bo(),i(),mf(a)){if(a.then(zd,zd),t)return a.then(s=>{Fd(e,s,t)}).catch(s=>{Ja(s,e,0)});e.asyncDep=a}else Fd(e,a,t)}else vg(e,t)}function Fd(e,t,n){Re(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:tt(t)&&(e.setupState=zf(t)),vg(e,n)}let Wd;function vg(e,t,n){const o=e.type;if(!e.render){if(!t&&Wd&&!o.render){const r=o.template||wc(e).template;if(r){const{isCustomElement:i,compilerOptions:a}=e.appContext.config,{delimiters:s,compilerOptions:l}=o,c=mt(mt({isCustomElement:i,delimiters:s},a),l);o.render=Wd(r,c)}}e.render=o.render||on}{const r=Mi(e);po();try{Qv(e)}finally{bo(),r()}}}const Ay={get(e,t){return Jt(e,"get",""),e[t]}};function Ey(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ay),slots:e.slots,emit:e.emit,expose:t}}function rs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(zf(hi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in oi)return oi[n](e)},has(t,n){return n in t||n in oi}}))}function Iy(e){return Re(e)&&"__vccOpts"in e}const N=(e,t)=>kv(e,t,os);function S(e,t,n){const o=arguments.length;return o===2?tt(t)&&!we(t)?yi(t)?pe(e,null,[t]):pe(e,t):pe(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&yi(n)&&(n=[n]),pe(e,t,n))}const Ry="3.4.24";/** -* @vue/runtime-dom v3.4.24 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const My="http://www.w3.org/2000/svg",Ly="http://www.w3.org/1998/Math/MathML",io=typeof document<"u"?document:null,jd=io&&io.createElement("template"),Dy={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"?io.createElementNS(My,e):t==="mathml"?io.createElementNS(Ly,e):io.createElement(e,n?{is:n}:void 0);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>io.createTextNode(e),createComment:e=>io.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>io.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{jd.innerHTML=o==="svg"?`${e}`:o==="mathml"?`${e}`:e;const s=jd.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]}},Zn="transition",jr="animation",Sr=Symbol("_vtc"),bn=(e,{slots:t})=>S(Vv,xg(e),t);bn.displayName="Transition";const yg={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},$y=bn.props=mt({},Zf,yg),Io=(e,t=[])=>{we(e)?e.forEach(n=>n(...t)):e&&e(...t)},Gd=e=>e?we(e)?e.some(t=>t.length>1):e.length>1:!1;function xg(e){const t={};for(const M in e)M in yg||(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=Oy(r),b=f&&f[0],p=f&&f[1],{onBeforeEnter:m,onEnter:C,onEnterCancelled:_,onLeave:y,onLeaveCancelled:k,onBeforeAppear:P=m,onAppear:v=C,onAppearCancelled:T=_}=t,E=(M,K,ne)=>{eo(M,K?d:s),eo(M,K?c:a),ne&&ne()},L=(M,K)=>{M._isLeaving=!1,eo(M,u),eo(M,g),eo(M,h),K&&K()},j=M=>(K,ne)=>{const H=M?v:C,U=()=>E(K,M,ne);Io(H,[K,U]),Vd(()=>{eo(K,M?l:i),zn(K,M?d:s),Gd(H)||Ud(K,o,b,U)})};return mt(t,{onBeforeEnter(M){Io(m,[M]),zn(M,i),zn(M,a)},onBeforeAppear(M){Io(P,[M]),zn(M,l),zn(M,c)},onEnter:j(!1),onAppear:j(!0),onLeave(M,K){M._isLeaving=!0;const ne=()=>L(M,K);zn(M,u),zn(M,h),kg(),Vd(()=>{M._isLeaving&&(eo(M,u),zn(M,g),Gd(y)||Ud(M,o,p,ne))}),Io(y,[M,ne])},onEnterCancelled(M){E(M,!1),Io(_,[M])},onAppearCancelled(M){E(M,!0),Io(T,[M])},onLeaveCancelled(M){L(M),Io(k,[M])}})}function Oy(e){if(e==null)return null;if(tt(e))return[Us(e.enter),Us(e.leave)];{const t=Us(e);return[t,t]}}function Us(e){return K1(e)}function zn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Sr]||(e[Sr]=new Set)).add(t)}function eo(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const n=e[Sr];n&&(n.delete(t),n.size||(e[Sr]=void 0))}function Vd(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Hy=0;function Ud(e,t,n,o){const r=e._endId=++Hy,i=()=>{r===e._endId&&o()};if(n)return setTimeout(i,n);const{type:a,timeout:s,propCount:l}=Cg(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(`${Zn}Delay`),i=o(`${Zn}Duration`),a=Kd(r,i),s=o(`${jr}Delay`),l=o(`${jr}Duration`),c=Kd(s,l);let d=null,u=0,h=0;t===Zn?a>0&&(d=Zn,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?Zn:jr:null,h=d?d===Zn?i.length:l.length:0);const g=d===Zn&&/\b(transform|all)(,|$)/.test(o(`${Zn}Property`).toString());return{type:d,timeout:u,propCount:h,hasTransform:g}}function Kd(e,t){for(;e.lengthqd(n)+qd(e[o])))}function qd(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function kg(){return document.body.offsetHeight}function By(e,t,n){const o=e[Sr];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ea=Symbol("_vod"),Sg=Symbol("_vsh"),Tr={beforeMount(e,{value:t},{transition:n}){e[Ea]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Gr(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),Gr(e,!0),o.enter(e)):o.leave(e,()=>{Gr(e,!1)}):Gr(e,t))},beforeUnmount(e,{value:t}){Gr(e,t)}};function Gr(e,t){e.style.display=t?e[Ea]:"none",e[Sg]=!t}const Ny=Symbol(""),zy=/(^|;)\s*display\s*:/;function Fy(e,t,n){const o=e.style,r=pt(n);let i=!1;if(n&&!r){if(t)if(pt(t))for(const a of t.split(";")){const s=a.slice(0,a.indexOf(":")).trim();n[s]==null&&va(o,s,"")}else for(const a in t)n[a]==null&&va(o,a,"");for(const a in n)a==="display"&&(i=!0),va(o,a,n[a])}else if(r){if(t!==n){const a=o[Ny];a&&(n+=";"+a),o.cssText=n,i=zy.test(n)}}else t&&e.removeAttribute("style");Ea in e&&(e[Ea]=i?o.display:"",e[Sg]&&(o.display="none"))}const Xd=/\s*!important$/;function va(e,t,n){if(we(n))n.forEach(o=>va(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=Wy(e,t);Xd.test(n)?e.setProperty(Ir(o),n.replace(Xd,""),"important"):e[o]=n}}const Zd=["Webkit","Moz","ms"],Ks={};function Wy(e,t){const n=Ks[t];if(n)return n;let o=kr(t);if(o!=="filter"&&o in e)return Ks[t]=o;o=vf(o);for(let r=0;rqs||(Xy.then(()=>qs=0),qs=Date.now());function Yy(e,t){const n=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=n.attached)return;gn(Jy(o,n.value),t,5,[o])};return n.value=e,n.attached=Zy(),n}function Jy(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 eu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Qy=(e,t,n,o,r,i,a,s,l)=>{const c=r==="svg";t==="class"?By(e,o,c):t==="style"?Fy(e,n,o):Ua(t)?ac(t)||Ky(e,t,n,o,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):e2(e,t,o,c))?Gy(e,t,o,i,a,s,l):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),jy(e,t,o,c))};function e2(e,t,n,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&eu(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 eu(t)&&pt(n)?!1:t in e}const Tg=new WeakMap,wg=new WeakMap,Ia=Symbol("_moveCb"),tu=Symbol("_enterCb"),_g={name:"TransitionGroup",props:mt({},$y,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ln(),o=Xf();let r,i;return eg(()=>{if(!r.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!a2(r[0].el,n.vnode.el,a))return;r.forEach(o2),r.forEach(r2);const s=r.filter(i2);kg(),s.forEach(l=>{const c=l.el,d=c.style;zn(c,a),d.transform=d.webkitTransform=d.transitionDuration="";const u=c[Ia]=h=>{h&&h.target!==c||(!h||/transform$/.test(h.propertyName))&&(c.removeEventListener("transitionend",u),c[Ia]=null,eo(c,a))};c.addEventListener("transitionend",u)})}),()=>{const a=He(e),s=xg(a);let l=a.tag||Oe;if(r=[],i)for(let c=0;cdelete e.mode;_g.props;const n2=_g;function o2(e){const t=e.el;t[Ia]&&t[Ia](),t[tu]&&t[tu]()}function r2(e){wg.set(e,e.el.getBoundingClientRect())}function i2(e){const t=Tg.get(e),n=wg.get(e),o=t.left-n.left,r=t.top-n.top;if(o||r){const i=e.el.style;return i.transform=i.webkitTransform=`translate(${o}px,${r}px)`,i.transitionDuration="0s",e}}function a2(e,t,n){const o=e.cloneNode(),r=e[Sr];r&&r.forEach(s=>{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}=Cg(o);return i.removeChild(o),a}const s2=mt({patchProp:Qy},Dy);let nu;function l2(){return nu||(nu=hy(s2))}const c2=(...e)=>{const t=l2().createApp(...e),{mount:n}=t;return t.mount=o=>{const r=u2(o);if(!r)return;const i=t._component;!Re(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.innerHTML="";const a=n(r,!1,d2(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),a},t};function d2(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function u2(e){return pt(e)?document.querySelector(e):e}let Ra=[];const Pg=new WeakMap;function h2(){Ra.forEach(e=>e(...Pg.get(e))),Ra=[]}function Ag(e,...t){Pg.set(e,t),!Ra.includes(e)&&Ra.push(e)===1&&requestAnimationFrame(h2)}function ou(e,t){let{target:n}=e;for(;n;){if(n.dataset&&n.dataset[t]!==void 0)return!0;n=n.parentElement}return!1}function xi(e){return e.composedPath()[0]||null}function f2(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 ar(e,t){var n;if(e==null)return;const o=f2(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 ru(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function gr(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function is(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 t===void 0?o:o[t]}function g2(e,t){const[n,o]=e.split(" ");return t?t==="row"?n:o:{row:n,col:o||n}}const iu={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"},Mr="^\\s*",Lr="\\s*$",Bo="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",No="([0-9A-Fa-f])",zo="([0-9A-Fa-f]{2})",m2=new RegExp(`${Mr}rgb\\s*\\(${Bo},${Bo},${Bo}\\)${Lr}`),p2=new RegExp(`${Mr}rgba\\s*\\(${Bo},${Bo},${Bo},${Bo}\\)${Lr}`),b2=new RegExp(`${Mr}#${No}${No}${No}${Lr}`),v2=new RegExp(`${Mr}#${zo}${zo}${zo}${Lr}`),y2=new RegExp(`${Mr}#${No}${No}${No}${No}${Lr}`),x2=new RegExp(`${Mr}#${zo}${zo}${zo}${zo}${Lr}`);function Xt(e){return parseInt(e,16)}function jn(e){try{let t;if(t=v2.exec(e))return[Xt(t[1]),Xt(t[2]),Xt(t[3]),1];if(t=m2.exec(e))return[Nt(t[1]),Nt(t[5]),Nt(t[9]),1];if(t=p2.exec(e))return[Nt(t[1]),Nt(t[5]),Nt(t[9]),ai(t[13])];if(t=b2.exec(e))return[Xt(t[1]+t[1]),Xt(t[2]+t[2]),Xt(t[3]+t[3]),1];if(t=x2.exec(e))return[Xt(t[1]),Xt(t[2]),Xt(t[3]),ai(Xt(t[4])/255)];if(t=y2.exec(e))return[Xt(t[1]+t[1]),Xt(t[2]+t[2]),Xt(t[3]+t[3]),ai(Xt(t[4]+t[4])/255)];if(e in iu)return jn(iu[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(t){throw t}}function C2(e){return e>1?1:e<0?0:e}function Pl(e,t,n,o){return`rgba(${Nt(e)}, ${Nt(t)}, ${Nt(n)}, ${C2(o)})`}function Xs(e,t,n,o,r){return Nt((e*t*(1-o)+n*o)/r)}function fe(e,t){Array.isArray(e)||(e=jn(e)),Array.isArray(t)||(t=jn(t));const n=e[3],o=t[3],r=ai(n+o-n*o);return Pl(Xs(e[0],n,t[0],o,r),Xs(e[1],n,t[1],o,r),Xs(e[2],n,t[2],o,r),r)}function q(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:jn(e);return t.alpha?Pl(n,o,r,t.alpha):Pl(n,o,r,i)}function gt(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:jn(e),{lightness:a=1,alpha:s=1}=t;return k2([n*a,o*a,r*a,i*s])}function ai(e){const t=Math.round(Number(e)*100)/100;return t>1?1:t<0?0:t}function Nt(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(${Nt(t)}, ${Nt(n)}, ${Nt(o)}, ${ai(e[3])})`:`rgba(${Nt(t)}, ${Nt(n)}, ${Nt(o)}, 1)`}function as(e=8){return Math.random().toString(16).slice(2,2+e)}function Eg(e,t="default",n=[]){const r=e.$slots[t];return r===void 0?n:r()}function Xo(e,t=[],n){const o={};return t.forEach(r=>{o[r]=e[r]}),Object.assign(o,n)}function Ec(e,t=[],n){const o={};return Object.getOwnPropertyNames(e).forEach(i=>{t.includes(i)||(o[i]=e[i])}),Object.assign(o,n)}function Ci(e,t=!0,n=[]){return e.forEach(o=>{if(o!==null){if(typeof o!="object"){(typeof o=="string"||typeof o=="number")&&n.push(St(String(o)));return}if(Array.isArray(o)){Ci(o,t,n);return}if(o.type===Oe){if(o.children===null)return;Array.isArray(o.children)&&Ci(o.children,t,n)}else{if(o.type===Ft&&t)return;n.push(o)}}}),n}function We(e,...t){if(Array.isArray(e))e.forEach(n=>We(n,...t));else return e(...t)}function ss(e){return Object.keys(e)}const Rt=(e,...t)=>typeof e=="function"?e(...t):typeof e=="string"?St(e):typeof e=="number"?St(String(e)):null;function wr(e,t){console.error(`[naive/${e}]: ${t}`)}function Ig(e,t){throw new Error(`[naive/${e}]: ${t}`)}function Al(e,t="default",n=void 0){const o=e[t];if(!o)return wr("getFirstSlotVNode",`slot[${t}] is empty`),null;const r=Ci(o(n));return r.length===1?r[0]:(wr("getFirstSlotVNode",`slot[${t}] should have exactly one child`),null)}function S2(e){return t=>{t?e.value=t.$el:e.value=null}}function Li(e){return e.some(t=>yi(t)?!(t.type===Ft||t.type===Oe&&!Li(t.children)):!0)?e:null}function Vo(e,t){return e&&Li(e())||t()}function T2(e,t,n){return e&&Li(e(t))||n(t)}function Tt(e,t){const n=e&&Li(e());return t(n||null)}function El(e){return!(e&&Li(e()))}function w2(e){var t;const n=(t=e.dirs)===null||t===void 0?void 0:t.find(({dir:o})=>o===Tr);return!!(n&&n.value===!1)}const au=ce({render(){var e,t;return(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e)}}),_2=/^(\d|\.)+$/,su=/(\d|\.)+/;function ya(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(_2.test(e)){const r=(Number(e)+n)*t;return o?r===0?"0":`${r}px`:`${r}`}else{const r=su.exec(e);return r?e.replace(su,String((Number(r[0])+n)*t)):e}return e}function lu(e){return e.replace(/#|\(|\)|,|\s|\./g,"_")}function P2(e){let t=0;for(let n=0;n{let r=P2(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 I2(e,t){const n=[];return t.split(Rg).forEach(o=>{e.forEach(r=>{n.push((r&&r+" ")+o)})}),n}function R2(e){let t=[""];return e.forEach(n=>{n=n&&n.trim(),n&&(n.includes("&")?t=E2(t,n):t=I2(t,n))}),t.join(", ").replace(A2," ")}function cu(e){if(!e)return;const t=e.parentElement;t&&t.removeChild(e)}function ls(e){return document.querySelector(`style[cssr-id="${e}"]`)}function M2(e){const t=document.createElement("style");return t.setAttribute("cssr-id",e),t}function Ji(e){return e?/^\s*@(s|m)/.test(e):!1}const L2=/[A-Z]/g;function Mg(e){return e.replace(L2,t=>"-"+t.toLowerCase())}function D2(e,t=" "){return typeof e=="object"&&e!==null?` { -`+Object.entries(e).map(n=>t+` ${Mg(n[0])}: ${n[1]};`).join(` -`)+` -`+t+"}":`: ${e};`}function $2(e,t,n){return typeof e=="function"?e({context:t.context,props:n}):e}function du(e,t,n,o){if(!t)return"";const r=$2(t,n,o);if(!r)return"";if(typeof r=="string")return`${e} { -${r} -}`;const i=Object.keys(r);if(i.length===0)return n.config.keepEmptyBlock?e+` { -}`:"";const a=e?[e+" {"]:[];return i.forEach(s=>{const l=r[s];if(s==="raw"){a.push(` -`+l+` -`);return}s=Mg(s),l!=null&&a.push(` ${s}${D2(l)}`)}),e&&a.push("}"),a.join(` -`)}function Il(e,t,n){e&&e.forEach(o=>{if(Array.isArray(o))Il(o,t,n);else if(typeof o=="function"){const r=o(t);Array.isArray(r)?Il(r,t,n):r&&n(r)}else o&&n(o)})}function Lg(e,t,n,o,r,i){const a=e.$;let s="";if(!a||typeof a=="string")Ji(a)?s=a:t.push(a);else if(typeof a=="function"){const d=a({context:o.context,props:r});Ji(d)?s=d:t.push(d)}else if(a.before&&a.before(o.context),!a.$||typeof a.$=="string")Ji(a.$)?s=a.$:t.push(a.$);else if(a.$){const d=a.$({context:o.context,props:r});Ji(d)?s=d:t.push(d)}const l=R2(t),c=du(l,e.props,o,r);s?(n.push(`${s} {`),i&&c&&i.insertRule(`${s} { -${c} -} -`)):(i&&c&&i.insertRule(c),!i&&c.length&&n.push(c)),e.children&&Il(e.children,{context:o.context,props:r},d=>{if(typeof d=="string"){const u=du(l,{raw:d},o,r);i?i.insertRule(u):n.push(u)}else Lg(d,t,n,o,r,i)}),t.pop(),s&&n.push("}"),a&&a.after&&a.after(o.context)}function Dg(e,t,n,o=!1){const r=[];return Lg(e,[],r,t,n,o?e.instance.__styleSheet:void 0),o?"":r.join(` - -`)}function ki(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 O2(e,t,n){const{els:o}=t;if(n===void 0)o.forEach(cu),t.els=[];else{const r=ls(n);r&&o.includes(r)&&(cu(r),t.els=o.filter(i=>i!==r))}}function uu(e,t){e.push(t)}function H2(e,t,n,o,r,i,a,s,l){if(i&&!l){if(n===void 0){console.error("[css-render/mount]: `id` is required in `silent` mode.");return}const h=window.__cssrContext;h[n]||(h[n]=!0,Dg(t,e,o,i));return}let c;if(n===void 0&&(c=t.render(o),n=ki(c)),l){l.adapter(n,c??t.render(o));return}const d=ls(n);if(d!==null&&!a)return d;const u=d??M2(n);if(c===void 0&&(c=t.render(o)),u.textContent=c,d!==null)return d;if(s){const h=document.head.querySelector(`meta[name="${s}"]`);if(h)return document.head.insertBefore(u,h),uu(t.els,u),u}return r?document.head.insertBefore(u,document.head.querySelector("style, link")):document.head.appendChild(u),uu(t.els,u),u}function B2(e){return Dg(this,this.instance,e)}function N2(e={}){const{id:t,ssr:n,props:o,head:r=!1,silent:i=!1,force:a=!1,anchorMetaName:s}=e;return H2(this.instance,this,t,o,r,i,a,s,n)}function z2(e={}){const{id:t}=e;O2(this.instance,this,t)}const Qi=function(e,t,n,o){return{instance:e,$:t,props:n,children:o,els:[],render:B2,mount:N2,unmount:z2}},F2=function(e,t,n,o){return Array.isArray(t)?Qi(e,{$:null},null,t):Array.isArray(n)?Qi(e,t,null,n):Array.isArray(o)?Qi(e,t,n,o):Qi(e,t,n,null)};function $g(e={}){let t=null;const n={c:(...o)=>F2(n,...o),use:(o,...r)=>o.install(n,...r),find:ls,context:{},config:e,get __styleSheet(){if(!t){const o=document.createElement("style");return document.head.appendChild(o),t=document.styleSheets[document.styleSheets.length-1],t}return t}};return n}function W2(e,t){if(e===void 0)return!1;if(t){const{context:{ids:n}}=t;return n.has(e)}return ls(e)!==null}function j2(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:C}){return f=typeof f=="string"?f:f({context:m,props:C}),m.bem.b=f,`${(C==null?void 0:C.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(C=>C.trim()),p.bem.els.map(C=>`${(m==null?void 0:m.bPrefix)||t}${p.bem.b}${n}${C}`).join(", ")}}}function l(f){return{$({context:b,props:p}){f=typeof f=="string"?f:f({context:b,props:p});const m=f.split(",").map(y=>y.trim());function C(y){return m.map(k=>`&${(p==null?void 0:p.bPrefix)||t}${b.bem.b}${y!==void 0?`${n}${y}`:""}${o}${k}`).join(", ")}const _=b.bem.els;return _!==null?C(_[0]):C()}}}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 G2="n",Si=`.${G2}-`,V2="__",U2="--",Og=$g(),Hg=j2({blockPrefix:Si,elementPrefix:V2,modifierPrefix:U2});Og.use(Hg);const{c:z,find:OL}=Og,{cB:te,cE:G,cM:J,cNotM:Lt}=Hg;function Bg(e){return z(({props:{bPrefix:t}})=>`${t||Si}modal, ${t||Si}drawer`,[e])}function K2(e){return z(({props:{bPrefix:t}})=>`${t||Si}popover`,[e])}function Ng(e){return z(({props:{bPrefix:t}})=>`&${t||Si}modal`,e)}const q2=(...e)=>z(">",[te(...e)]);function ge(e,t){return e+(t==="default"?"":t.replace(/^[a-z]/,n=>n.toUpperCase()))}let Zs;function X2(){return Zs===void 0&&(Zs=navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom")),Zs}const Jo=typeof document<"u"&&typeof window<"u",Z2=new WeakSet;function Y2(e){return!Z2.has(e)}function J2(e,t,n){if(!t)return e;const o=V(e.value);let r=null;return et(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 Q2(e){const t=V(!!e.value);if(t.value)return sn(t);const n=et(e,o=>{o&&(t.value=!0,n())});return sn(t)}function wt(e){const t=N(e),n=V(t.value);return et(t,o=>{n.value=o}),typeof e=="function"?n:{__v_isRef:!0,get value(){return n.value},set value(o){e.set(o)}}}function cs(){return ln()!==null}const ds=typeof window<"u";let xr,si;const ex=()=>{var e,t;xr=ds?(t=(e=document)===null||e===void 0?void 0:e.fonts)===null||t===void 0?void 0:t.ready:void 0,si=!1,xr!==void 0?xr.then(()=>{si=!0}):si=!0};ex();function tx(e){if(si)return;let t=!1;$t(()=>{si||xr==null||xr.then(()=>{t||e()})}),kt(()=>{t=!0})}function xa(e){return e.composedPath()[0]}const nx={mousemoveoutside:new WeakMap,clickoutside:new WeakMap};function ox(e,t,n){if(e==="mousemoveoutside"){const o=r=>{t.contains(xa(r))||n(r)};return{mousemove:o,touchstart:o}}else if(e==="clickoutside"){let o=!1;const r=a=>{o=!t.contains(xa(a))},i=a=>{o&&(t.contains(xa(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 zg(e,t,n){const o=nx[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=ox(e,t,n)),i}function rx(e,t,n,o){if(e==="mousemoveoutside"||e==="clickoutside"){const r=zg(e,t,n);return Object.keys(r).forEach(i=>{it(i,document,r[i],o)}),!0}return!1}function ix(e,t,n,o){if(e==="mousemoveoutside"||e==="clickoutside"){const r=zg(e,t,n);return Object.keys(r).forEach(i=>{Ke(i,document,r[i],o)}),!0}return!1}function ax(){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(v,T,E){const L=v[T];return v[T]=function(){return E.apply(v,arguments),L.apply(v,arguments)},v}function i(v,T){v[T]=Event.prototype[T]}const a=new WeakMap,s=Object.getOwnPropertyDescriptor(Event.prototype,"currentTarget");function l(){var v;return(v=a.get(this))!==null&&v!==void 0?v:null}function c(v,T){s!==void 0&&Object.defineProperty(v,"currentTarget",{configurable:!0,enumerable:!0,get:T??s.get})}const d={bubble:{},capture:{}},u={};function h(){const v=function(T){const{type:E,eventPhase:L,bubbles:j}=T,M=xa(T);if(L===2)return;const K=L===1?"capture":"bubble";let ne=M;const H=[];for(;ne===null&&(ne=window),H.push(ne),ne!==window;)ne=ne.parentNode||null;const U=d.capture[E],F=d.bubble[E];if(r(T,"stopPropagation",n),r(T,"stopImmediatePropagation",o),c(T,l),K==="capture"){if(U===void 0)return;for(let re=H.length-1;re>=0&&!e.has(T);--re){const be=H[re],ve=U.get(be);if(ve!==void 0){a.set(T,be);for(const _e of ve){if(t.has(T))break;_e(T)}}if(re===0&&!j&&F!==void 0){const _e=F.get(be);if(_e!==void 0)for(const Me of _e){if(t.has(T))break;Me(T)}}}}else if(K==="bubble"){if(F===void 0)return;for(let re=0;reM(T))};return v.displayName="evtdUnifiedWindowEventHandler",v}const f=h(),b=g();function p(v,T){const E=d[v];return E[T]===void 0&&(E[T]=new Map,window.addEventListener(T,f,v==="capture")),E[T]}function m(v){return u[v]===void 0&&(u[v]=new Set,window.addEventListener(v,b)),u[v]}function C(v,T){let E=v.get(T);return E===void 0&&v.set(T,E=new Set),E}function _(v,T,E,L){const j=d[T][E];if(j!==void 0){const M=j.get(v);if(M!==void 0&&M.has(L))return!0}return!1}function y(v,T){const E=u[v];return!!(E!==void 0&&E.has(T))}function k(v,T,E,L){let j;if(typeof L=="object"&&L.once===!0?j=U=>{P(v,T,j,L),E(U)}:j=E,rx(v,T,j,L))return;const K=L===!0||typeof L=="object"&&L.capture===!0?"capture":"bubble",ne=p(K,v),H=C(ne,T);if(H.has(j)||H.add(j),T===window){const U=m(v);U.has(j)||U.add(j)}}function P(v,T,E,L){if(ix(v,T,E,L))return;const M=L===!0||typeof L=="object"&&L.capture===!0,K=M?"capture":"bubble",ne=p(K,v),H=C(ne,T);if(T===window&&!_(T,M?"bubble":"capture",v,E)&&y(v,E)){const F=u[v];F.delete(E),F.size===0&&(window.removeEventListener(v,b),u[v]=void 0)}H.has(E)&&H.delete(E),H.size===0&&ne.delete(T),ne.size===0&&(window.removeEventListener(v,f,K==="capture"),d[K][v]=void 0)}return{on:k,off:P}}const{on:it,off:Ke}=ax(),Qr=V(null);function hu(e){if(e.clientX>0||e.clientY>0)Qr.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?Qr.value={x:n+r/2,y:o+i/2}:Qr.value={x:0,y:0}}else Qr.value=null}}let ea=0,fu=!0;function Fg(){if(!ds)return sn(V(null));ea===0&&it("click",document,hu,!0);const e=()=>{ea+=1};return fu&&(fu=cs())?(Dn(e),kt(()=>{ea-=1,ea===0&&Ke("click",document,hu,!0)})):e(),sn(Qr)}const sx=V(void 0);let ta=0;function gu(){sx.value=Date.now()}let mu=!0;function Wg(e){if(!ds)return sn(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)}ta===0&&it("click",window,gu,!0);const i=()=>{ta+=1,it("click",window,r,!0)};return mu&&(mu=cs())?(Dn(i),kt(()=>{ta-=1,ta===0&&Ke("click",window,gu,!0),Ke("click",window,r,!0),o()})):i(),sn(t)}let na=0;const lx=typeof window<"u"&&window.matchMedia!==void 0,Uo=V(null);let Cn,Fo;function Ma(e){e.matches&&(Uo.value="dark")}function La(e){e.matches&&(Uo.value="light")}function cx(){Cn=window.matchMedia("(prefers-color-scheme: dark)"),Fo=window.matchMedia("(prefers-color-scheme: light)"),Cn.matches?Uo.value="dark":Fo.matches?Uo.value="light":Uo.value=null,Cn.addEventListener?(Cn.addEventListener("change",Ma),Fo.addEventListener("change",La)):Cn.addListener&&(Cn.addListener(Ma),Fo.addListener(La))}function dx(){"removeEventListener"in Cn?(Cn.removeEventListener("change",Ma),Fo.removeEventListener("change",La)):"removeListener"in Cn&&(Cn.removeListener(Ma),Fo.removeListener(La)),Cn=void 0,Fo=void 0}let pu=!0;function ux(){return lx&&(na===0&&cx(),pu&&(pu=cs())&&(Dn(()=>{na+=1}),kt(()=>{na-=1,na===0&&dx()}))),sn(Uo)}function Ic(e,t){return et(e,n=>{n!==void 0&&(t.value=n)}),N(()=>e.value===void 0?t.value:e.value)}function Di(){const e=V(!1);return $t(()=>{e.value=!0}),sn(e)}function jg(e,t){return N(()=>{for(const n of t)if(e[n]!==void 0)return e[n];return e[t[t.length-1]]})}const hx=(typeof window>"u"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function fx(){return hx}const gx={xs:0,s:640,m:1024,l:1280,xl:1536,"2xl":1920};function mx(e){return`(min-width: ${e}px)`}const Vr={};function px(e=gx){if(!ds)return N(()=>[]);if(typeof window.matchMedia!="function")return N(()=>[]);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;Vr[i]===void 0?(a=window.matchMedia(mx(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,Vr[i]={mql:a,cbs:s}):(a=Vr[i].mql,s=Vr[i].cbs),s.add(o),a.matches&&s.forEach(l=>{l(a,r)})}),kt(()=>{n.forEach(r=>{const{cbs:i}=Vr[e[r]];i.has(o)&&i.delete(o)})}),N(()=>{const{value:r}=t;return n.filter(i=>r[i])})}function bx(e={},t){const n=vo({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)&&(it("keydown",document,i),it("keyup",document,a)),t!==void 0&&et(t,l=>{l?(it("keydown",document,i),it("keyup",document,a)):(Ke("keydown",document,i),Ke("keyup",document,a))})};return cs()?(Dn(s),kt(()=>{(t===void 0||t.value)&&(Ke("keydown",document,i),Ke("keyup",document,a))})):s(),sn(n)}const vx="n-internal-select-menu-body",us="n-modal-body",yx="n-modal-provider",Gg="n-modal",hs="n-drawer-body",$i="n-popover-body",Vg="__disabled__";function _r(e){const t=Ae(us,null),n=Ae(hs,null),o=Ae($i,null),r=Ae(vx,null),i=V();if(typeof document<"u"){i.value=document.fullscreenElement;const a=()=>{i.value=document.fullscreenElement};$t(()=>{it("fullscreenchange",document,a)}),kt(()=>{Ke("fullscreenchange",document,a)})}return wt(()=>{var a;const{to:s}=e;return s!==void 0?s===!1?Vg: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")})}_r.tdkey=Vg;_r.propTo={type:[String,Object,Boolean],default:void 0};function Rl(e,t,n="default"){const o=t[n];if(o===void 0)throw new Error(`[vueuc/${e}]: slot[${n}] is empty.`);return o()}function Ml(e,t=!0,n=[]){return e.forEach(o=>{if(o!==null){if(typeof o!="object"){(typeof o=="string"||typeof o=="number")&&n.push(St(String(o)));return}if(Array.isArray(o)){Ml(o,t,n);return}if(o.type===Oe){if(o.children===null)return;Array.isArray(o.children)&&Ml(o.children,t,n)}else o.type!==Ft&&n.push(o)}}),n}function bu(e,t,n="default"){const o=t[n];if(o===void 0)throw new Error(`[vueuc/${e}]: slot[${n}] is empty.`);const r=Ml(o());if(r.length===1)return r[0];throw new Error(`[vueuc/${e}]: slot[${n}] should have exactly one child.`)}let Yn=null;function Ug(){if(Yn===null&&(Yn=document.getElementById("v-binder-view-measurer"),Yn===null)){Yn=document.createElement("div"),Yn.id="v-binder-view-measurer";const{style:e}=Yn;e.position="fixed",e.left="0",e.right="0",e.top="0",e.bottom="0",e.pointerEvents="none",e.visibility="hidden",document.body.appendChild(Yn)}return Yn.getBoundingClientRect()}function xx(e,t){const n=Ug();return{top:t,left:e,height:0,width:0,right:n.width-e,bottom:n.height-t}}function Ys(e){const t=e.getBoundingClientRect(),n=Ug();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 Cx(e){return e.nodeType===9?null:e.parentNode}function Kg(e){if(e===null)return null;const t=Cx(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 Kg(t)}const kx=ce({name:"Binder",props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){var t;je("VBinder",(t=ln())===null||t===void 0?void 0:t.proxy);const n=Ae("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=Kg(m),m!==null;)i.push(m);for(const C of i)it("scroll",C,u,!0)},s=()=>{for(const m of i)Ke("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=()=>{Ag(h)},h=()=>{l.forEach(m=>m())},g=new Set,f=m=>{g.size===0&&it("resize",window,p),g.has(m)||g.add(m)},b=m=>{g.has(m)&&g.delete(m),g.size===0&&Ke("resize",window,p)},p=()=>{g.forEach(m=>m())};return kt(()=>{Ke("resize",window,p),s()}),{targetRef:o,setTargetRef:r,addScrollListener:c,removeScrollListener:d,addResizeListener:f,removeResizeListener:b}},render(){return Rl("binder",this.$slots)}}),qg=kx,Xg=ce({name:"Target",setup(){const{setTargetRef:e,syncTarget:t}=Ae("VBinder");return{syncTarget:t,setTargetDirective:{mounted:e,updated:e}}},render(){const{syncTarget:e,setTargetDirective:t}=this;return e?uo(bu("follower",this.$slots),[[t]]):bu("follower",this.$slots)}}),sr="@@mmoContext",Sx={mounted(e,{value:t}){e[sr]={handler:void 0},typeof t=="function"&&(e[sr].handler=t,it("mousemoveoutside",e,t))},updated(e,{value:t}){const n=e[sr];typeof t=="function"?n.handler?n.handler!==t&&(Ke("mousemoveoutside",e,n.handler),n.handler=t,it("mousemoveoutside",e,t)):(e[sr].handler=t,it("mousemoveoutside",e,t)):n.handler&&(Ke("mousemoveoutside",e,n.handler),n.handler=void 0)},unmounted(e){const{handler:t}=e[sr];t&&Ke("mousemoveoutside",e,t),e[sr].handler=void 0}},Tx=Sx,lr="@@coContext",wx={mounted(e,{value:t,modifiers:n}){e[lr]={handler:void 0},typeof t=="function"&&(e[lr].handler=t,it("clickoutside",e,t,{capture:n.capture}))},updated(e,{value:t,modifiers:n}){const o=e[lr];typeof t=="function"?o.handler?o.handler!==t&&(Ke("clickoutside",e,o.handler,{capture:n.capture}),o.handler=t,it("clickoutside",e,t,{capture:n.capture})):(e[lr].handler=t,it("clickoutside",e,t,{capture:n.capture})):o.handler&&(Ke("clickoutside",e,o.handler,{capture:n.capture}),o.handler=void 0)},unmounted(e,{modifiers:t}){const{handler:n}=e[lr];n&&Ke("clickoutside",e,n,{capture:t.capture}),e[lr].handler=void 0}},Ll=wx;function _x(e,t){console.error(`[vdirs/${e}]: ${t}`)}class Px{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&&_x("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 Js=new Px,cr="@@ziContext",Ax={mounted(e,t){const{value:n={}}=t,{zIndex:o,enabled:r}=n;e[cr]={enabled:!!r,initialized:!1},r&&(Js.ensureZIndex(e,o),e[cr].initialized=!0)},updated(e,t){const{value:n={}}=t,{zIndex:o,enabled:r}=n,i=e[cr].enabled;r&&!i&&(Js.ensureZIndex(e,o),e[cr].initialized=!0),e[cr].enabled=!!r},unmounted(e,t){if(!e[cr].initialized)return;const{value:n={}}=t,{zIndex:o}=n;Js.unregister(e,o)}},Rc=Ax,Zg=Symbol("@css-render/vue3-ssr");function Ex(e,t){return``}function Ix(e,t){const n=Ae(Zg,null);if(n===null){console.error("[css-render/vue3-ssr]: no ssr context found.");return}const{styles:o,ids:r}=n;r.has(e)||o!==null&&(r.add(e),o.push(Ex(e,t)))}const Rx=typeof document<"u";function Oi(){if(Rx)return;const e=Ae(Zg,null);if(e!==null)return{adapter:Ix,context:e}}function vu(e,t){console.error(`[vueuc/${e}]: ${t}`)}const{c:oa}=$g(),Mx="vueuc-style";function yu(e){return typeof e=="string"?document.querySelector(e):e()}const Yg=ce({name:"LazyTeleport",props:{to:{type:[String,Object],default:void 0},disabled:Boolean,show:{type:Boolean,required:!0}},setup(e){return{showTeleport:Q2(Ue(e,"show")),mergedTo:N(()=>{const{to:t}=e;return t??"body"})}},render(){return this.showTeleport?this.disabled?Rl("lazy-teleport",this.$slots):S(ns,{disabled:this.disabled,to:this.mergedTo},Rl("lazy-teleport",this.$slots)):null}}),ra={top:"bottom",bottom:"top",left:"right",right:"left"},xu={start:"end",center:"center",end:"start"},Qs={top:"height",bottom:"height",left:"width",right:"width"},Lx={"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"},Dx={"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"},$x={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},Cu={top:!0,bottom:!1,left:!0,right:!1},ku={top:"end",bottom:"start",left:"end",right:"start"};function Ox(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 C=n[g]-t[f]-t[g];return C>0&&o&&(b?m=Cu[f]?C:-C:p=Cu[f]?C:-C),{left:p,top:m}},u=a==="left"||a==="right";if(l!=="center"){const g=$x[e],f=ra[g],b=Qs[g];if(n[b]>t[b]){if(t[g]+t[b]t[f]&&(l=xu[s])}else{const g=a==="bottom"||a==="top"?"left":"top",f=ra[g],b=Qs[g],p=(n[b]-t[b])/2;(t[g]t[f]?(l=ku[g],c=d(b,g,u)):(l=ku[f],c=d(b,f,u)))}let h=a;return t[a] *",{pointerEvents:"all"})])]),Jg=ce({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=Ae("VBinder"),n=wt(()=>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)};$t(()=>{n.value&&(l(),i())});const s=Oi();Nx.mount({id:"vueuc/binder",head:!0,anchorMetaName:Mx,ssr:s}),kt(()=>{a()}),tx(()=>{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?xx(f,b):Ys(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:C,minWidth:_,placement:y,internalShift:k,flip:P}=e;h.setAttribute("v-placement",y),p?h.setAttribute("v-overlap",""):h.removeAttribute("v-overlap");const{style:v}=h;C==="target"?v.width=`${m.width}px`:C!==void 0?v.width=C:v.width="",_==="target"?v.minWidth=`${m.width}px`:_!==void 0?v.minWidth=_:v.minWidth="";const T=Ys(h),E=Ys(r.value),{left:L,top:j,placement:M}=Ox(y,m,T,k,P,p),K=Hx(M,p),{left:ne,top:H,transform:U}=Bx(M,E,m,j,L,p);h.setAttribute("v-placement",M),h.style.setProperty("--v-offset-left",`${Math.round(L)}px`),h.style.setProperty("--v-offset-top",`${Math.round(j)}px`),h.style.transform=`translateX(${ne}) translateY(${H}) ${U}`,h.style.setProperty("--v-transform-origin",K),h.style.transformOrigin=K};et(n,h=>{h?(i(),c()):a()});const c=()=>{Ut().then(l).catch(h=>console.error(h))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(h=>{et(Ue(e,h),l)}),["teleportDisabled"].forEach(h=>{et(Ue(e,h),c)}),et(Ue(e,"syncTrigger"),h=>{h.includes("resize")?t.addResizeListener(l):t.removeResizeListener(l),h.includes("scroll")?t.addScrollListener(l):t.removeScrollListener(l)});const d=Di(),u=wt(()=>{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(Yg,{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?uo(n,[[Rc,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):n}})}});var Ko=[],zx=function(){return Ko.some(function(e){return e.activeTargets.length>0})},Fx=function(){return Ko.some(function(e){return e.skippedTargets.length>0})},Su="ResizeObserver loop completed with undelivered notifications.",Wx=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:Su}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=Su),window.dispatchEvent(e)},Ti;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(Ti||(Ti={}));var qo=function(e){return Object.freeze(e)},jx=function(){function e(t,n){this.inlineSize=t,this.blockSize=n,qo(this)}return e}(),Qg=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}(),Mc=function(e){return e instanceof SVGElement&&"getBBox"in e},em=function(e){if(Mc(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)},Tu=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)},Gx=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},li=typeof window<"u"?window:{},ia=new WeakMap,wu=/auto|scroll/,Vx=/^tb|vertical/,Ux=/msie|trident/i.test(li.navigator&&li.navigator.userAgent),wn=function(e){return parseFloat(e||"0")},Cr=function(e,t,n){return e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=!1),new jx((n?t:e)||0,(n?e:t)||0)},_u=qo({devicePixelContentBoxSize:Cr(),borderBoxSize:Cr(),contentBoxSize:Cr(),contentRect:new Qg(0,0,0,0)}),tm=function(e,t){if(t===void 0&&(t=!1),ia.has(e)&&!t)return ia.get(e);if(em(e))return ia.set(e,_u),_u;var n=getComputedStyle(e),o=Mc(e)&&e.ownerSVGElement&&e.getBBox(),r=!Ux&&n.boxSizing==="border-box",i=Vx.test(n.writingMode||""),a=!o&&wu.test(n.overflowY||""),s=!o&&wu.test(n.overflowX||""),l=o?0:wn(n.paddingTop),c=o?0:wn(n.paddingRight),d=o?0:wn(n.paddingBottom),u=o?0:wn(n.paddingLeft),h=o?0:wn(n.borderTopWidth),g=o?0:wn(n.borderRightWidth),f=o?0:wn(n.borderBottomWidth),b=o?0:wn(n.borderLeftWidth),p=u+c,m=l+d,C=b+g,_=h+f,y=s?e.offsetHeight-_-e.clientHeight:0,k=a?e.offsetWidth-C-e.clientWidth:0,P=r?p+C:0,v=r?m+_:0,T=o?o.width:wn(n.width)-P-k,E=o?o.height:wn(n.height)-v-y,L=T+p+k+C,j=E+m+y+_,M=qo({devicePixelContentBoxSize:Cr(Math.round(T*devicePixelRatio),Math.round(E*devicePixelRatio),i),borderBoxSize:Cr(L,j,i),contentBoxSize:Cr(T,E,i),contentRect:new Qg(u,l,T,E)});return ia.set(e,M),M},nm=function(e,t,n){var o=tm(e,n),r=o.borderBoxSize,i=o.contentBoxSize,a=o.devicePixelContentBoxSize;switch(t){case Ti.DEVICE_PIXEL_CONTENT_BOX:return a;case Ti.BORDER_BOX:return r;default:return i}},Kx=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}(),om=function(e){if(em(e))return 1/0;for(var t=0,n=e.parentNode;n;)t+=1,n=n.parentNode;return t},qx=function(){var e=1/0,t=[];Ko.forEach(function(a){if(a.activeTargets.length!==0){var s=[];a.activeTargets.forEach(function(c){var d=new Kx(c.target),u=om(c.target);s.push(d),c.lastReportedSize=nm(c.target,c.observedBox),ue?n.activeTargets.push(r):n.skippedTargets.push(r))})})},Xx=function(){var e=0;for(Pu(e);zx();)e=qx(),Pu(e);return Fx()&&Wx(),e>0},el,rm=[],Zx=function(){return rm.splice(0).forEach(function(e){return e()})},Yx=function(e){if(!el){var t=0,n=document.createTextNode(""),o={characterData:!0};new MutationObserver(function(){return Zx()}).observe(n,o),el=function(){n.textContent="".concat(t?t--:t++)}}rm.push(e),el()},Jx=function(e){Yx(function(){requestAnimationFrame(e)})},Ca=0,Qx=function(){return!!Ca},eC=250,tC={attributes:!0,characterData:!0,childList:!0,subtree:!0},Au=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Eu=function(e){return e===void 0&&(e=0),Date.now()+e},tl=!1,nC=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=eC),!tl){tl=!0;var o=Eu(t);Jx(function(){var r=!1;try{r=Xx()}finally{if(tl=!1,t=o-Eu(),!Qx())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,tC)};document.body?n():li.addEventListener("DOMContentLoaded",n)},e.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Au.forEach(function(n){return li.addEventListener(n,t.listener,!0)}))},e.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),Au.forEach(function(n){return li.removeEventListener(n,t.listener,!0)}),this.stopped=!0)},e}(),Dl=new nC,Iu=function(e){!Ca&&e>0&&Dl.start(),Ca+=e,!Ca&&Dl.stop()},oC=function(e){return!Mc(e)&&!Gx(e)&&getComputedStyle(e).display==="inline"},rC=function(){function e(t,n){this.target=t,this.observedBox=n||Ti.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var t=nm(this.target,this.observedBox,!0);return oC(this.target)&&(this.lastReportedSize=t),this.lastReportedSize.inlineSize!==t.inlineSize||this.lastReportedSize.blockSize!==t.blockSize},e}(),iC=function(){function e(t,n){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=n}return e}(),aa=new WeakMap,Ru=function(e,t){for(var n=0;n=0&&(i&&Ko.splice(Ko.indexOf(o),1),o.observationTargets.splice(r,1),Iu(-1))},e.disconnect=function(t){var n=this,o=aa.get(t);o.observationTargets.slice().forEach(function(r){return n.unobserve(t,r.target)}),o.activeTargets.splice(0,o.activeTargets.length)},e}(),aC=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.");sa.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(!Tu(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");sa.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(!Tu(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");sa.unobserve(this,t)},e.prototype.disconnect=function(){sa.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();class sC{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new(typeof window<"u"&&window.ResizeObserver||aC)(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 Mu=new sC,Da=ce({name:"ResizeObserver",props:{onResize:Function},setup(e){let t=!1;const n=ln().proxy;function o(r){const{onResize:i}=e;i!==void 0&&i(r)}$t(()=>{const r=n.$el;if(r===void 0){vu("resize-observer","$el does not exist.");return}if(r.nextElementSibling!==r.nextSibling&&r.nodeType===3&&r.nodeValue!==""){vu("resize-observer","$el can not be observed (it may be a text node).");return}r.nextElementSibling!==null&&(Mu.registerHandler(r.nextElementSibling,o),t=!0)}),kt(()=>{t&&Mu.unregisterHandler(n.$el.nextElementSibling)})},render(){return tg(this.$slots,"default")}});function im(e){return e instanceof HTMLElement}function am(e){for(let t=0;t=0;t--){const n=e.childNodes[t];if(im(n)&&(lm(n)||sm(n)))return!0}return!1}function lm(e){if(!lC(e))return!1;try{e.focus({preventScroll:!0})}catch{}return document.activeElement===e}function lC(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 Ur=[];const cm=ce({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=as(),n=V(null),o=V(null);let r=!1,i=!1;const a=typeof document>"u"?null:document.activeElement;function s(){return Ur[Ur.length-1]===t}function l(p){var m;p.code==="Escape"&&s()&&((m=e.onEsc)===null||m===void 0||m.call(e,p))}$t(()=>{et(()=>e.active,p=>{p?(u(),it("keydown",document,l)):(Ke("keydown",document,l),r&&h())},{immediate:!0})}),kt(()=>{Ke("keydown",document,l),r&&h()});function c(p){if(!i&&s()){const m=d();if(m===null||m.contains(xi(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(Ur.push(t),e.autoFocus){const{initialFocusTo:m}=e;m===void 0?g("first"):(p=yu(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),Ur=Ur.filter(C=>C!==t),s()))return;const{finalFocusTo:m}=e;m!==void 0?(p=yu(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,C=o.value;if(m!==null&&C!==null){const _=d();if(_==null||_===C){i=!0,m.focus({preventScroll:!0}),i=!1;return}i=!0;const y=p==="first"?am(_):sm(_);i=!1,y||(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(Oe,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 dr=0,Lu="",Du="",$u="",Ou="";const Hu=V("0px");function cC(e){if(typeof document>"u")return;const t=document.documentElement;let n,o=!1;const r=()=>{t.style.marginRight=Lu,t.style.overflow=Du,t.style.overflowX=$u,t.style.overflowY=Ou,Hu.value="0px"};$t(()=>{n=et(e,i=>{if(i){if(!dr){const a=window.innerWidth-t.offsetWidth;a>0&&(Lu=t.style.marginRight,t.style.marginRight=`${a}px`,Hu.value=`${a}px`),Du=t.style.overflow,$u=t.style.overflowX,Ou=t.style.overflowY,t.style.overflow="hidden",t.style.overflowX="hidden",t.style.overflowY="hidden"}o=!0,dr++}else dr--,dr||r(),o=!1},{immediate:!0})}),kt(()=>{n==null||n(),o&&(dr--,dr||r(),o=!1)})}const Lc=V(!1),Bu=()=>{Lc.value=!0},Nu=()=>{Lc.value=!1};let Kr=0;const dC=()=>(Jo&&(Dn(()=>{Kr||(window.addEventListener("compositionstart",Bu),window.addEventListener("compositionend",Nu)),Kr++}),kt(()=>{Kr<=1?(window.removeEventListener("compositionstart",Bu),window.removeEventListener("compositionend",Nu),Kr=0):Kr--})),Lc);function dm(e){const t={isDeactivated:!1};let n=!1;return Jf(()=>{if(t.isDeactivated=!1,!n){n=!0;return}e()}),Sc(()=>{t.isDeactivated=!0,n||(n=!0)}),t}const zu="n-form-item";function um(e,{defaultSize:t="medium",mergedSize:n,mergedDisabled:o}={}){const r=Ae(zu,null);je(zu,null);const i=N(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=N(o?()=>o(r):()=>{const{disabled:l}=e;return l!==void 0?l:r?r.disabled.value:!1}),s=N(()=>{const{status:l}=e;return l||(r==null?void 0:r.mergedValidationStatus.value)});return kt(()=>{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 uC=typeof global=="object"&&global&&global.Object===Object&&global;const hm=uC;var hC=typeof self=="object"&&self&&self.Object===Object&&self,fC=hm||hC||Function("return this")();const $n=fC;var gC=$n.Symbol;const ho=gC;var fm=Object.prototype,mC=fm.hasOwnProperty,pC=fm.toString,qr=ho?ho.toStringTag:void 0;function bC(e){var t=mC.call(e,qr),n=e[qr];try{e[qr]=void 0;var o=!0}catch{}var r=pC.call(e);return o&&(t?e[qr]=n:delete e[qr]),r}var vC=Object.prototype,yC=vC.toString;function xC(e){return yC.call(e)}var CC="[object Null]",kC="[object Undefined]",Fu=ho?ho.toStringTag:void 0;function Qo(e){return e==null?e===void 0?kC:CC:Fu&&Fu in Object(e)?bC(e):xC(e)}function fo(e){return e!=null&&typeof e=="object"}var SC="[object Symbol]";function fs(e){return typeof e=="symbol"||fo(e)&&Qo(e)==SC}function gm(e,t){for(var n=-1,o=e==null?0:e.length,r=Array(o);++n0){if(++t>=ak)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function dk(e){return function(){return e}}var uk=function(){try{var e=tr(Object,"defineProperty");return e({},"",{}),e}catch{}}();const $a=uk;var hk=$a?function(e,t){return $a(e,"toString",{configurable:!0,enumerable:!1,value:dk(t),writable:!0})}:Dc;const fk=hk;var gk=ck(fk);const mk=gk;function pk(e,t,n,o){for(var r=e.length,i=n+(o?1:-1);o?i--:++i-1&&e%1==0&&e-1&&e%1==0&&e<=wk}function nr(e){return e!=null&&Hc(e.length)&&!$c(e)}function _k(e,t,n){if(!Ln(n))return!1;var o=typeof t;return(o=="number"?nr(n)&&Oc(t,n.length):o=="string"&&t in n)?Hi(n[t],e):!1}function Pk(e){return Tk(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&&_k(n[0],n[1],a)&&(i=r<3?void 0:i,r=1),t=Object(t);++o-1}function G4(e,t){var n=this.__data__,o=ps(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}function Un(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:m3(e,t,n)}var b3="\\ud800-\\udfff",v3="\\u0300-\\u036f",y3="\\ufe20-\\ufe2f",x3="\\u20d0-\\u20ff",C3=v3+y3+x3,k3="\\ufe0e\\ufe0f",S3="\\u200d",T3=RegExp("["+S3+b3+C3+k3+"]");function _m(e){return T3.test(e)}function w3(e){return e.split("")}var Pm="\\ud800-\\udfff",_3="\\u0300-\\u036f",P3="\\ufe20-\\ufe2f",A3="\\u20d0-\\u20ff",E3=_3+P3+A3,I3="\\ufe0e\\ufe0f",R3="["+Pm+"]",Ol="["+E3+"]",Hl="\\ud83c[\\udffb-\\udfff]",M3="(?:"+Ol+"|"+Hl+")",Am="[^"+Pm+"]",Em="(?:\\ud83c[\\udde6-\\uddff]){2}",Im="[\\ud800-\\udbff][\\udc00-\\udfff]",L3="\\u200d",Rm=M3+"?",Mm="["+I3+"]?",D3="(?:"+L3+"(?:"+[Am,Em,Im].join("|")+")"+Mm+Rm+")*",$3=Mm+Rm+D3,O3="(?:"+[Am+Ol+"?",Ol,Em,Im,R3].join("|")+")",H3=RegExp(Hl+"(?="+Hl+")|"+O3+$3,"g");function B3(e){return e.match(H3)||[]}function N3(e){return _m(e)?B3(e):w3(e)}function z3(e){return function(t){t=vs(t);var n=_m(t)?N3(t):void 0,o=n?n[0]:t.charAt(0),r=n?p3(n,1).join(""):t.slice(1);return o[e]()+r}}var F3=z3("toUpperCase");const W3=F3;function j3(e,t,n,o){var r=-1,i=e==null?0:e.length;for(o&&i&&(n=e[++r]);++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&f6?new Na:void 0;for(i.set(e,t),i.set(t,e);++u-1?r[i?t[a]:a]:void 0}}var cS=Math.max;function dS(e,t,n){var o=e==null?0:e.length;if(!o)return-1;var r=n==null?0:HC(n);return r<0&&(r=cS(o+r,0)),pk(e,xs(t),r)}var uS=lS(dS);const hS=uS;function fS(e,t){var n=-1,o=nr(e)?Array(e.length):[];return Ym(e,function(r,i,a){o[++n]=t(r,i,a)}),o}function gS(e,t){var n=cn(e)?gm:fS;return n(e,xs(t))}var mS=Object.prototype,pS=mS.hasOwnProperty,bS=rS(function(e,t,n){pS.call(e,n)?e[n].push(t):gs(e,n,[t])});const vS=bS;var yS=M5(function(e,t,n){return e+(n?"-":"")+t.toLowerCase()});const xS=yS;var CS=Pk(function(e,t,n){Jm(e,t,n)});const ei=CS,yo={fontFamily:'v-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontFamilyMono:"v-mono, SFMono-Regular, Menlo, Consolas, Courier, monospace",fontWeight:"400",fontWeightStrong:"500",cubicBezierEaseInOut:"cubic-bezier(.4, 0, .2, 1)",cubicBezierEaseOut:"cubic-bezier(0, 0, .2, 1)",cubicBezierEaseIn:"cubic-bezier(.4, 0, 1, 1)",borderRadius:"3px",borderRadiusSmall:"2px",fontSize:"14px",fontSizeMini:"12px",fontSizeTiny:"12px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",lineHeight:"1.6",heightMini:"16px",heightTiny:"22px",heightSmall:"28px",heightMedium:"34px",heightLarge:"40px",heightHuge:"46px"},{fontSize:kS,fontFamily:SS,lineHeight:TS}=yo,Qm=z("body",` - margin: 0; - font-size: ${kS}; - font-family: ${SS}; - line-height: ${TS}; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: transparent; -`,[z("input",` - font-family: inherit; - font-size: inherit; - `)]),Gn="n-config-provider",Pi="naive-ui-style";function Ee(e,t,n,o,r,i){const a=Oi(),s=Ae(Gn,null);if(n){const c=()=>{const d=i==null?void 0:i.value;n.mount({id:d===void 0?t:d+t,head:!0,props:{bPrefix:d?`.${d}-`:void 0},anchorMetaName:Pi,ssr:a}),s!=null&&s.preflightStyleDisabled||Qm.mount({id:"n-global",head:!0,anchorMetaName:Pi,ssr:a})};a?c():Dn(c)}return N(()=>{var c;const{theme:{common:d,self:u,peers:h={}}={},themeOverrides:g={},builtinThemeOverrides:f={}}=r,{common:b,peers:p}=g,{common:m=void 0,[e]:{common:C=void 0,self:_=void 0,peers:y={}}={}}=(s==null?void 0:s.mergedThemeRef.value)||{},{common:k=void 0,[e]:P={}}=(s==null?void 0:s.mergedThemeOverridesRef.value)||{},{common:v,peers:T={}}=P,E=ei({},d||C||m||o.common,k,v,b),L=ei((c=u||_||o.self)===null||c===void 0?void 0:c(E),f,P,g);return{common:E,self:L,peers:ei({},o.peers,y,h),peerOverrides:ei({},f.peers,T,p)}})}Ee.props={theme:Object,themeOverrides:Object,builtinThemeOverrides:Object};const Ai="n";function at(e={},t={defaultBordered:!0}){const n=Ae(Gn,null);return{inlineThemeDisabled:n==null?void 0:n.inlineThemeDisabled,mergedRtlRef:n==null?void 0:n.mergedRtlRef,mergedComponentPropsRef:n==null?void 0:n.mergedComponentPropsRef,mergedBreakpointsRef:n==null?void 0:n.mergedBreakpointsRef,mergedBorderedRef:N(()=>{var o,r;const{bordered:i}=e;return i!==void 0?i:(r=(o=n==null?void 0:n.mergedBorderedRef.value)!==null&&o!==void 0?o:t.defaultBordered)!==null&&r!==void 0?r:!0}),mergedClsPrefixRef:n?n.mergedClsPrefixRef:Ya(Ai),namespaceRef:N(()=>n==null?void 0:n.mergedNamespaceRef.value)}}function wS(){const e=Ae(Gn,null);return e?e.mergedClsPrefixRef:Ya(Ai)}const _S={name:"en-US",global:{undo:"Undo",redo:"Redo",confirm:"Confirm",clear:"Clear"},Popconfirm:{positiveText:"Confirm",negativeText:"Cancel"},Cascader:{placeholder:"Please Select",loading:"Loading",loadingRequiredMessage:e=>`Please load all ${e}'s descendants before checking it.`},Time:{dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss"},DatePicker:{yearFormat:"yyyy",monthFormat:"MMM",dayFormat:"eeeeee",yearTypeFormat:"yyyy",monthTypeFormat:"yyyy-MM",dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss",quarterFormat:"yyyy-qqq",weekFormat:"yyyy-w",clear:"Clear",now:"Now",confirm:"Confirm",selectTime:"Select Time",selectDate:"Select Date",datePlaceholder:"Select Date",datetimePlaceholder:"Select Date and Time",monthPlaceholder:"Select Month",yearPlaceholder:"Select Year",quarterPlaceholder:"Select Quarter",weekPlaceholder:"Select Week",startDatePlaceholder:"Start Date",endDatePlaceholder:"End Date",startDatetimePlaceholder:"Start Date and Time",endDatetimePlaceholder:"End Date and Time",startMonthPlaceholder:"Start Month",endMonthPlaceholder:"End Month",monthBeforeYear:!0,firstDayOfWeek:6,today:"Today"},DataTable:{checkTableAll:"Select all in the table",uncheckTableAll:"Unselect all in the table",confirm:"Confirm",clear:"Clear"},LegacyTransfer:{sourceTitle:"Source",targetTitle:"Target"},Transfer:{selectAll:"Select all",unselectAll:"Unselect all",clearAll:"Clear",total:e=>`Total ${e} items`,selected:e=>`${e} items selected`},Empty:{description:"No Data"},Select:{placeholder:"Please Select"},TimePicker:{placeholder:"Select Time",positiveText:"OK",negativeText:"Cancel",now:"Now",clear:"Clear"},Pagination:{goto:"Goto",selectionSuffix:"page"},DynamicTags:{add:"Add"},Log:{loading:"Loading"},Input:{placeholder:"Please Input"},InputNumber:{placeholder:"Please Input"},DynamicInput:{create:"Create"},ThemeEditor:{title:"Theme Editor",clearAllVars:"Clear All Variables",clearSearch:"Clear Search",filterCompName:"Filter Component Name",filterVarName:"Filter Variable Name",import:"Import",export:"Export",restore:"Reset to Default"},Image:{tipPrevious:"Previous picture (←)",tipNext:"Next picture (→)",tipCounterclockwise:"Counterclockwise",tipClockwise:"Clockwise",tipZoomOut:"Zoom out",tipZoomIn:"Zoom in",tipDownload:"Download",tipClose:"Close (Esc)",tipOriginalSize:"Zoom to original size"}},PS=_S;function il(e){return function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,o=e.formats[n]||e.formats[e.defaultWidth];return o}}function Xr(e){return function(t,n){var o=n!=null&&n.context?String(n.context):"standalone",r;if(o==="formatting"&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,a=n!=null&&n.width?String(n.width):i;r=e.formattingValues[a]||e.formattingValues[i]}else{var s=e.defaultWidth,l=n!=null&&n.width?String(n.width):e.defaultWidth;r=e.values[l]||e.values[s]}var c=e.argumentCallback?e.argumentCallback(t):t;return r[c]}}function Zr(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.width,r=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;var a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?ES(s,function(u){return u.test(a)}):AS(s,function(u){return u.test(a)}),c;c=e.valueCallback?e.valueCallback(l):l,c=n.valueCallback?n.valueCallback(c):c;var d=t.slice(a.length);return{value:c,rest:d}}}function AS(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function ES(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},o=t.match(e.matchPattern);if(!o)return null;var r=o[0],i=t.match(e.parsePattern);if(!i)return null;var a=e.valueCallback?e.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;var s=t.slice(r.length);return{value:a,rest:s}}}var RS={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},MS=function(t,n,o){var r,i=RS[t];return typeof i=="string"?r=i:n===1?r=i.one:r=i.other.replace("{{count}}",n.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+r:r+" ago":r};const LS=MS;var DS={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},$S={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},OS={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},HS={date:il({formats:DS,defaultWidth:"full"}),time:il({formats:$S,defaultWidth:"full"}),dateTime:il({formats:OS,defaultWidth:"full"})};const BS=HS;var NS={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},zS=function(t,n,o,r){return NS[t]};const FS=zS;var WS={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},jS={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},GS={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},VS={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},US={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},KS={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},qS=function(t,n){var o=Number(t),r=o%100;if(r>20||r<10)switch(r%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},XS={ordinalNumber:qS,era:Xr({values:WS,defaultWidth:"wide"}),quarter:Xr({values:jS,defaultWidth:"wide",argumentCallback:function(t){return t-1}}),month:Xr({values:GS,defaultWidth:"wide"}),day:Xr({values:VS,defaultWidth:"wide"}),dayPeriod:Xr({values:US,defaultWidth:"wide",formattingValues:KS,defaultFormattingWidth:"wide"})};const ZS=XS;var YS=/^(\d+)(th|st|nd|rd)?/i,JS=/\d+/i,QS={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},eT={any:[/^b/i,/^(a|c)/i]},tT={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},nT={any:[/1/i,/2/i,/3/i,/4/i]},oT={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},rT={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},iT={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},aT={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},sT={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},lT={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},cT={ordinalNumber:IS({matchPattern:YS,parsePattern:JS,valueCallback:function(t){return parseInt(t,10)}}),era:Zr({matchPatterns:QS,defaultMatchWidth:"wide",parsePatterns:eT,defaultParseWidth:"any"}),quarter:Zr({matchPatterns:tT,defaultMatchWidth:"wide",parsePatterns:nT,defaultParseWidth:"any",valueCallback:function(t){return t+1}}),month:Zr({matchPatterns:oT,defaultMatchWidth:"wide",parsePatterns:rT,defaultParseWidth:"any"}),day:Zr({matchPatterns:iT,defaultMatchWidth:"wide",parsePatterns:aT,defaultParseWidth:"any"}),dayPeriod:Zr({matchPatterns:sT,defaultMatchWidth:"any",parsePatterns:lT,defaultParseWidth:"any"})};const dT=cT;var uT={code:"en-US",formatDistance:LS,formatLong:BS,formatRelative:FS,localize:ZS,match:dT,options:{weekStartsOn:0,firstWeekContainsDate:1}};const hT=uT,fT={name:"en-US",locale:hT},gT=fT;function mT(e){const{mergedLocaleRef:t,mergedDateLocaleRef:n}=Ae(Gn,null)||{},o=N(()=>{var i,a;return(a=(i=t==null?void 0:t.value)===null||i===void 0?void 0:i[e])!==null&&a!==void 0?a:PS[e]});return{dateLocaleRef:N(()=>{var i;return(i=n==null?void 0:n.value)!==null&&i!==void 0?i:gT}),localeRef:o}}function Dr(e,t,n){if(!t)return;const o=Oi(),r=Ae(Gn,null),i=()=>{const a=n.value;t.mount({id:a===void 0?e:a+e,head:!0,anchorMetaName:Pi,props:{bPrefix:a?`.${a}-`:void 0},ssr:o}),r!=null&&r.preflightStyleDisabled||Qm.mount({id:"n-global",head:!0,anchorMetaName:Pi,ssr:o})};o?i():Dn(i)}function Pt(e,t,n,o){var r;n||Ig("useThemeClass","cssVarsRef is not passed");const i=(r=Ae(Gn,null))===null||r===void 0?void 0:r.mergedThemeHashRef,a=V(""),s=Oi();let l;const c=`__${e}`,d=()=>{let u=c;const h=t?t.value:void 0,g=i==null?void 0:i.value;g&&(u+="-"+g),h&&(u+="-"+h);const{themeOverrides:f,builtinThemeOverrides:b}=o;f&&(u+="-"+ki(JSON.stringify(f))),b&&(u+="-"+ki(JSON.stringify(b))),a.value=u,l=()=>{const p=n.value;let m="";for(const C in p)m+=`${C}: ${p[C]};`;z(`.${u}`,m).mount({id:u,ssr:s}),l=void 0}};return co(()=>{d()}),{themeClass:a,onRender:()=>{l==null||l()}}}function xo(e,t,n){if(!t)return;const o=Oi(),r=N(()=>{const{value:a}=t;if(!a)return;const s=a[e];if(s)return s}),i=()=>{co(()=>{const{value:a}=n,s=`${a}${e}Rtl`;if(W2(s,o))return;const{value:l}=r;l&&l.style.mount({id:s,head:!0,anchorMetaName:Pi,props:{bPrefix:a?`.${a}-`:void 0},ssr:o})})};return o?i():Dn(i),r}function $r(e,t){return ce({name:W3(e),setup(){var n;const o=(n=Ae(Gn,null))===null||n===void 0?void 0:n.mergedIconsRef;return()=>{var r;const i=(r=o==null?void 0:o.value)===null||r===void 0?void 0:r[e];return i?i():t}}})}const pT=ce({name:"ChevronRight",render(){return S("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},S("path",{d:"M5.64645 3.14645C5.45118 3.34171 5.45118 3.65829 5.64645 3.85355L9.79289 8L5.64645 12.1464C5.45118 12.3417 5.45118 12.6583 5.64645 12.8536C5.84171 13.0488 6.15829 13.0488 6.35355 12.8536L10.8536 8.35355C11.0488 8.15829 11.0488 7.84171 10.8536 7.64645L6.35355 3.14645C6.15829 2.95118 5.84171 2.95118 5.64645 3.14645Z",fill:"currentColor"}))}}),bT=$r("close",S("svg",{viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0},S("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},S("g",{fill:"currentColor","fill-rule":"nonzero"},S("path",{d:"M2.08859116,2.2156945 L2.14644661,2.14644661 C2.32001296,1.97288026 2.58943736,1.95359511 2.7843055,2.08859116 L2.85355339,2.14644661 L6,5.293 L9.14644661,2.14644661 C9.34170876,1.95118446 9.65829124,1.95118446 9.85355339,2.14644661 C10.0488155,2.34170876 10.0488155,2.65829124 9.85355339,2.85355339 L6.707,6 L9.85355339,9.14644661 C10.0271197,9.32001296 10.0464049,9.58943736 9.91140884,9.7843055 L9.85355339,9.85355339 C9.67998704,10.0271197 9.41056264,10.0464049 9.2156945,9.91140884 L9.14644661,9.85355339 L6,6.707 L2.85355339,9.85355339 C2.65829124,10.0488155 2.34170876,10.0488155 2.14644661,9.85355339 C1.95118446,9.65829124 1.95118446,9.34170876 2.14644661,9.14644661 L5.293,6 L2.14644661,2.85355339 C1.97288026,2.67998704 1.95359511,2.41056264 2.08859116,2.2156945 L2.14644661,2.14644661 L2.08859116,2.2156945 Z"}))))),vT=ce({name:"Eye",render(){return S("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},S("path",{d:"M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 0 0-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 0 0 0-17.47C428.89 172.28 347.8 112 255.66 112z",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32"}),S("circle",{cx:"256",cy:"256",r:"80",fill:"none",stroke:"currentColor","stroke-miterlimit":"10","stroke-width":"32"}))}}),yT=ce({name:"EyeOff",render(){return S("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},S("path",{d:"M432 448a15.92 15.92 0 0 1-11.31-4.69l-352-352a16 16 0 0 1 22.62-22.62l352 352A16 16 0 0 1 432 448z",fill:"currentColor"}),S("path",{d:"M255.66 384c-41.49 0-81.5-12.28-118.92-36.5c-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 0 0 .14-2.94L93.5 161.38a2 2 0 0 0-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 0 0-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0 0 75.8-12.58a2 2 0 0 0 .77-3.31l-21.58-21.58a4 4 0 0 0-3.83-1a204.8 204.8 0 0 1-51.16 6.47z",fill:"currentColor"}),S("path",{d:"M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 0 0-74.89 12.83a2 2 0 0 0-.75 3.31l21.55 21.55a4 4 0 0 0 3.88 1a192.82 192.82 0 0 1 50.21-6.69c40.69 0 80.58 12.43 118.55 37c34.71 22.4 65.74 53.88 89.76 91a.13.13 0 0 1 0 .16a310.72 310.72 0 0 1-64.12 72.73a2 2 0 0 0-.15 2.95l19.9 19.89a2 2 0 0 0 2.7.13a343.49 343.49 0 0 0 68.64-78.48a32.2 32.2 0 0 0-.1-34.78z",fill:"currentColor"}),S("path",{d:"M256 160a95.88 95.88 0 0 0-21.37 2.4a2 2 0 0 0-1 3.38l112.59 112.56a2 2 0 0 0 3.38-1A96 96 0 0 0 256 160z",fill:"currentColor"}),S("path",{d:"M165.78 233.66a2 2 0 0 0-3.38 1a96 96 0 0 0 115 115a2 2 0 0 0 1-3.38z",fill:"currentColor"}))}}),jc=$r("error",S("svg",{viewBox:"0 0 48 48",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},S("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},S("g",{"fill-rule":"nonzero"},S("path",{d:"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M17.8838835,16.1161165 L17.7823881,16.0249942 C17.3266086,15.6583353 16.6733914,15.6583353 16.2176119,16.0249942 L16.1161165,16.1161165 L16.0249942,16.2176119 C15.6583353,16.6733914 15.6583353,17.3266086 16.0249942,17.7823881 L16.1161165,17.8838835 L22.233,24 L16.1161165,30.1161165 L16.0249942,30.2176119 C15.6583353,30.6733914 15.6583353,31.3266086 16.0249942,31.7823881 L16.1161165,31.8838835 L16.2176119,31.9750058 C16.6733914,32.3416647 17.3266086,32.3416647 17.7823881,31.9750058 L17.8838835,31.8838835 L24,25.767 L30.1161165,31.8838835 L30.2176119,31.9750058 C30.6733914,32.3416647 31.3266086,32.3416647 31.7823881,31.9750058 L31.8838835,31.8838835 L31.9750058,31.7823881 C32.3416647,31.3266086 32.3416647,30.6733914 31.9750058,30.2176119 L31.8838835,30.1161165 L25.767,24 L31.8838835,17.8838835 L31.9750058,17.7823881 C32.3416647,17.3266086 32.3416647,16.6733914 31.9750058,16.2176119 L31.8838835,16.1161165 L31.7823881,16.0249942 C31.3266086,15.6583353 30.6733914,15.6583353 30.2176119,16.0249942 L30.1161165,16.1161165 L24,22.233 L17.8838835,16.1161165 L17.7823881,16.0249942 L17.8838835,16.1161165 Z"}))))),za=$r("info",S("svg",{viewBox:"0 0 28 28",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},S("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},S("g",{"fill-rule":"nonzero"},S("path",{d:"M14,2 C20.6274,2 26,7.37258 26,14 C26,20.6274 20.6274,26 14,26 C7.37258,26 2,20.6274 2,14 C2,7.37258 7.37258,2 14,2 Z M14,11 C13.4477,11 13,11.4477 13,12 L13,12 L13,20 C13,20.5523 13.4477,21 14,21 C14.5523,21 15,20.5523 15,20 L15,20 L15,12 C15,11.4477 14.5523,11 14,11 Z M14,6.75 C13.3096,6.75 12.75,7.30964 12.75,8 C12.75,8.69036 13.3096,9.25 14,9.25 C14.6904,9.25 15.25,8.69036 15.25,8 C15.25,7.30964 14.6904,6.75 14,6.75 Z"}))))),Gc=$r("success",S("svg",{viewBox:"0 0 48 48",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},S("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},S("g",{"fill-rule":"nonzero"},S("path",{d:"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M32.6338835,17.6161165 C32.1782718,17.1605048 31.4584514,17.1301307 30.9676119,17.5249942 L30.8661165,17.6161165 L20.75,27.732233 L17.1338835,24.1161165 C16.6457281,23.6279612 15.8542719,23.6279612 15.3661165,24.1161165 C14.9105048,24.5717282 14.8801307,25.2915486 15.2749942,25.7823881 L15.3661165,25.8838835 L19.8661165,30.3838835 C20.3217282,30.8394952 21.0415486,30.8698693 21.5323881,30.4750058 L21.6338835,30.3838835 L32.6338835,19.3838835 C33.1220388,18.8957281 33.1220388,18.1042719 32.6338835,17.6161165 Z"}))))),Vc=$r("warning",S("svg",{viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},S("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},S("g",{"fill-rule":"nonzero"},S("path",{d:"M12,2 C17.523,2 22,6.478 22,12 C22,17.522 17.523,22 12,22 C6.477,22 2,17.522 2,12 C2,6.478 6.477,2 12,2 Z M12.0018002,15.0037242 C11.450254,15.0037242 11.0031376,15.4508407 11.0031376,16.0023869 C11.0031376,16.553933 11.450254,17.0010495 12.0018002,17.0010495 C12.5533463,17.0010495 13.0004628,16.553933 13.0004628,16.0023869 C13.0004628,15.4508407 12.5533463,15.0037242 12.0018002,15.0037242 Z M11.99964,7 C11.4868042,7.00018474 11.0642719,7.38637706 11.0066858,7.8837365 L11,8.00036004 L11.0018003,13.0012393 L11.00857,13.117858 C11.0665141,13.6151758 11.4893244,14.0010638 12.0021602,14.0008793 C12.514996,14.0006946 12.9375283,13.6145023 12.9951144,13.1171428 L13.0018002,13.0005193 L13,7.99964009 L12.9932303,7.8830214 C12.9352861,7.38570354 12.5124758,6.99981552 11.99964,7 Z"}))))),xT=ce({name:"ChevronDown",render(){return S("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},S("path",{d:"M3.14645 5.64645C3.34171 5.45118 3.65829 5.45118 3.85355 5.64645L8 9.79289L12.1464 5.64645C12.3417 5.45118 12.6583 5.45118 12.8536 5.64645C13.0488 5.84171 13.0488 6.15829 12.8536 6.35355L8.35355 10.8536C8.15829 11.0488 7.84171 11.0488 7.64645 10.8536L3.14645 6.35355C2.95118 6.15829 2.95118 5.84171 3.14645 5.64645Z",fill:"currentColor"}))}}),CT=$r("clear",S("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},S("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},S("g",{fill:"currentColor","fill-rule":"nonzero"},S("path",{d:"M8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 C2,4.6862915 4.6862915,2 8,2 Z M6.5343055,5.83859116 C6.33943736,5.70359511 6.07001296,5.72288026 5.89644661,5.89644661 L5.89644661,5.89644661 L5.83859116,5.9656945 C5.70359511,6.16056264 5.72288026,6.42998704 5.89644661,6.60355339 L5.89644661,6.60355339 L7.293,8 L5.89644661,9.39644661 L5.83859116,9.4656945 C5.70359511,9.66056264 5.72288026,9.92998704 5.89644661,10.1035534 L5.89644661,10.1035534 L5.9656945,10.1614088 C6.16056264,10.2964049 6.42998704,10.2771197 6.60355339,10.1035534 L6.60355339,10.1035534 L8,8.707 L9.39644661,10.1035534 L9.4656945,10.1614088 C9.66056264,10.2964049 9.92998704,10.2771197 10.1035534,10.1035534 L10.1035534,10.1035534 L10.1614088,10.0343055 C10.2964049,9.83943736 10.2771197,9.57001296 10.1035534,9.39644661 L10.1035534,9.39644661 L8.707,8 L10.1035534,6.60355339 L10.1614088,6.5343055 C10.2964049,6.33943736 10.2771197,6.07001296 10.1035534,5.89644661 L10.1035534,5.89644661 L10.0343055,5.83859116 C9.83943736,5.70359511 9.57001296,5.72288026 9.39644661,5.89644661 L9.39644661,5.89644661 L8,7.293 L6.60355339,5.89644661 Z"}))))),Cs=ce({name:"BaseIconSwitchTransition",setup(e,{slots:t}){const n=Di();return()=>S(bn,{name:"icon-switch-transition",appear:n.value},t)}}),ep=ce({name:"FadeInExpandTransition",props:{appear:Boolean,group:Boolean,mode:String,onLeave:Function,onAfterLeave:Function,onAfterEnter:Function,width:Boolean,reverse:Boolean},setup(e,{slots:t}){function n(s){e.width?s.style.maxWidth=`${s.offsetWidth}px`:s.style.maxHeight=`${s.offsetHeight}px`,s.offsetWidth}function o(s){e.width?s.style.maxWidth="0":s.style.maxHeight="0",s.offsetWidth;const{onLeave:l}=e;l&&l()}function r(s){e.width?s.style.maxWidth="":s.style.maxHeight="";const{onAfterLeave:l}=e;l&&l()}function i(s){if(s.style.transition="none",e.width){const l=s.offsetWidth;s.style.maxWidth="0",s.offsetWidth,s.style.transition="",s.style.maxWidth=`${l}px`}else if(e.reverse)s.style.maxHeight=`${s.offsetHeight}px`,s.offsetHeight,s.style.transition="",s.style.maxHeight="0";else{const l=s.offsetHeight;s.style.maxHeight="0",s.offsetWidth,s.style.transition="",s.style.maxHeight=`${l}px`}s.offsetWidth}function a(s){var l;e.width?s.style.maxWidth="":e.reverse||(s.style.maxHeight=""),(l=e.onAfterEnter)===null||l===void 0||l.call(e)}return()=>{const{group:s,width:l,appear:c,mode:d}=e,u=s?n2:bn,h={name:l?"fade-in-width-expand-transition":"fade-in-height-expand-transition",appear:c,onEnter:i,onAfterEnter:a,onBeforeLeave:n,onLeave:o,onAfterLeave:r};return s||(h.mode=d),S(u,h,t)}}}),kT=te("base-icon",` - height: 1em; - width: 1em; - line-height: 1em; - text-align: center; - display: inline-block; - position: relative; - fill: currentColor; - transform: translateZ(0); -`,[z("svg",` - height: 1em; - width: 1em; - `)]),go=ce({name:"BaseIcon",props:{role:String,ariaLabel:String,ariaDisabled:{type:Boolean,default:void 0},ariaHidden:{type:Boolean,default:void 0},clsPrefix:{type:String,required:!0},onClick:Function,onMousedown:Function,onMouseup:Function},setup(e){Dr("-base-icon",kT,Ue(e,"clsPrefix"))},render(){return S("i",{class:`${this.clsPrefix}-base-icon`,onClick:this.onClick,onMousedown:this.onMousedown,onMouseup:this.onMouseup,role:this.role,"aria-label":this.ariaLabel,"aria-hidden":this.ariaHidden,"aria-disabled":this.ariaDisabled},this.$slots)}}),ST=te("base-close",` - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - background-color: transparent; - color: var(--n-close-icon-color); - border-radius: var(--n-close-border-radius); - height: var(--n-close-size); - width: var(--n-close-size); - font-size: var(--n-close-icon-size); - outline: none; - border: none; - position: relative; - padding: 0; -`,[J("absolute",` - height: var(--n-close-icon-size); - width: var(--n-close-icon-size); - `),z("&::before",` - content: ""; - position: absolute; - width: var(--n-close-size); - height: var(--n-close-size); - left: 50%; - top: 50%; - transform: translateY(-50%) translateX(-50%); - transition: inherit; - border-radius: inherit; - `),Lt("disabled",[z("&:hover",` - color: var(--n-close-icon-color-hover); - `),z("&:hover::before",` - background-color: var(--n-close-color-hover); - `),z("&:focus::before",` - background-color: var(--n-close-color-hover); - `),z("&:active",` - color: var(--n-close-icon-color-pressed); - `),z("&:active::before",` - background-color: var(--n-close-color-pressed); - `)]),J("disabled",` - cursor: not-allowed; - color: var(--n-close-icon-color-disabled); - background-color: transparent; - `),J("round",[z("&::before",` - border-radius: 50%; - `)])]),ks=ce({name:"BaseClose",props:{isButtonTag:{type:Boolean,default:!0},clsPrefix:{type:String,required:!0},disabled:{type:Boolean,default:void 0},focusable:{type:Boolean,default:!0},round:Boolean,onClick:Function,absolute:Boolean},setup(e){return Dr("-base-close",ST,Ue(e,"clsPrefix")),()=>{const{clsPrefix:t,disabled:n,absolute:o,round:r,isButtonTag:i}=e;return S(i?"button":"div",{type:i?"button":void 0,tabindex:n||!e.focusable?-1:0,"aria-disabled":n,"aria-label":"close",role:i?void 0:"button",disabled:n,class:[`${t}-base-close`,o&&`${t}-base-close--absolute`,n&&`${t}-base-close--disabled`,r&&`${t}-base-close--round`],onMousedown:s=>{e.focusable||s.preventDefault()},onClick:e.onClick},S(go,{clsPrefix:t},{default:()=>S(bT,null)}))}}}),{cubicBezierEaseInOut:TT}=yo;function Ei({originalTransform:e="",left:t=0,top:n=0,transition:o=`all .3s ${TT} !important`}={}){return[z("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:e+" scale(0.75)",left:t,top:n,opacity:0}),z("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${e}`,left:t,top:n,opacity:1}),z("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:t,top:n,transition:o})]}const wT=z([z("@keyframes rotator",` - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - }`),te("base-loading",` - position: relative; - line-height: 0; - width: 1em; - height: 1em; - `,[G("transition-wrapper",` - position: absolute; - width: 100%; - height: 100%; - `,[Ei()]),G("placeholder",` - position: absolute; - left: 50%; - top: 50%; - transform: translateX(-50%) translateY(-50%); - `,[Ei({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})]),G("container",` - animation: rotator 3s linear infinite both; - `,[G("icon",` - height: 1em; - width: 1em; - `)])])]),al="1.6s",_T={strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0}},Uc=ce({name:"BaseLoading",props:Object.assign({clsPrefix:{type:String,required:!0},show:{type:Boolean,default:!0},scale:{type:Number,default:1},radius:{type:Number,default:100}},_T),setup(e){Dr("-base-loading",wT,Ue(e,"clsPrefix"))},render(){const{clsPrefix:e,radius:t,strokeWidth:n,stroke:o,scale:r}=this,i=t/r;return S("div",{class:`${e}-base-loading`,role:"img","aria-label":"loading"},S(Cs,null,{default:()=>this.show?S("div",{key:"icon",class:`${e}-base-loading__transition-wrapper`},S("div",{class:`${e}-base-loading__container`},S("svg",{class:`${e}-base-loading__icon`,viewBox:`0 0 ${2*i} ${2*i}`,xmlns:"http://www.w3.org/2000/svg",style:{color:o}},S("g",null,S("animateTransform",{attributeName:"transform",type:"rotate",values:`0 ${i} ${i};270 ${i} ${i}`,begin:"0s",dur:al,fill:"freeze",repeatCount:"indefinite"}),S("circle",{class:`${e}-base-loading__icon`,fill:"none",stroke:"currentColor","stroke-width":n,"stroke-linecap":"round",cx:i,cy:i,r:t-n/2,"stroke-dasharray":5.67*t,"stroke-dashoffset":18.48*t},S("animateTransform",{attributeName:"transform",type:"rotate",values:`0 ${i} ${i};135 ${i} ${i};450 ${i} ${i}`,begin:"0s",dur:al,fill:"freeze",repeatCount:"indefinite"}),S("animate",{attributeName:"stroke-dashoffset",values:`${5.67*t};${1.42*t};${5.67*t}`,begin:"0s",dur:al,fill:"freeze",repeatCount:"indefinite"})))))):S("div",{key:"placeholder",class:`${e}-base-loading__placeholder`},this.$slots)}))}});function yh(e){return Array.isArray(e)?e:[e]}const jl={STOP:"STOP"};function tp(e,t){const n=t(e);e.children!==void 0&&n!==jl.STOP&&e.children.forEach(o=>tp(o,t))}function PT(e,t={}){const{preserveGroup:n=!1}=t,o=[],r=n?a=>{a.isLeaf||(o.push(a.key),i(a.children))}:a=>{a.isLeaf||(a.isGroup||o.push(a.key),i(a.children))};function i(a){a.forEach(r)}return i(e),o}function AT(e,t){const{isLeaf:n}=e;return n!==void 0?n:!t(e)}function ET(e){return e.children}function IT(e){return e.key}function RT(){return!1}function MT(e,t){const{isLeaf:n}=e;return!(n===!1&&!Array.isArray(t(e)))}function LT(e){return e.disabled===!0}function DT(e,t){return e.isLeaf===!1&&!Array.isArray(t(e))}function sl(e){var t;return e==null?[]:Array.isArray(e)?e:(t=e.checkedKeys)!==null&&t!==void 0?t:[]}function ll(e){var t;return e==null||Array.isArray(e)?[]:(t=e.indeterminateKeys)!==null&&t!==void 0?t:[]}function $T(e,t){const n=new Set(e);return t.forEach(o=>{n.has(o)||n.add(o)}),Array.from(n)}function OT(e,t){const n=new Set(e);return t.forEach(o=>{n.has(o)&&n.delete(o)}),Array.from(n)}function HT(e){return(e==null?void 0:e.type)==="group"}class BT extends Error{constructor(){super(),this.message="SubtreeNotLoadedError: checking a subtree whose required nodes are not fully loaded."}}function NT(e,t,n,o){return Fa(t.concat(e),n,o,!1)}function zT(e,t){const n=new Set;return e.forEach(o=>{const r=t.treeNodeMap.get(o);if(r!==void 0){let i=r.parent;for(;i!==null&&!(i.disabled||n.has(i.key));)n.add(i.key),i=i.parent}}),n}function FT(e,t,n,o){const r=Fa(t,n,o,!1),i=Fa(e,n,o,!0),a=zT(e,n),s=[];return r.forEach(l=>{(i.has(l)||a.has(l))&&s.push(l)}),s.forEach(l=>r.delete(l)),r}function cl(e,t){const{checkedKeys:n,keysToCheck:o,keysToUncheck:r,indeterminateKeys:i,cascade:a,leafOnly:s,checkStrategy:l,allowNotLoaded:c}=e;if(!a)return o!==void 0?{checkedKeys:$T(n,o),indeterminateKeys:Array.from(i)}:r!==void 0?{checkedKeys:OT(n,r),indeterminateKeys:Array.from(i)}:{checkedKeys:Array.from(n),indeterminateKeys:Array.from(i)};const{levelTreeNodeMap:d}=t;let u;r!==void 0?u=FT(r,n,t,c):o!==void 0?u=NT(o,n,t,c):u=Fa(n,t,c,!1);const h=l==="parent",g=l==="child"||s,f=u,b=new Set,p=Math.max.apply(null,Array.from(d.keys()));for(let m=p;m>=0;m-=1){const C=m===0,_=d.get(m);for(const y of _){if(y.isLeaf)continue;const{key:k,shallowLoaded:P}=y;if(g&&P&&y.children.forEach(L=>{!L.disabled&&!L.isLeaf&&L.shallowLoaded&&f.has(L.key)&&f.delete(L.key)}),y.disabled||!P)continue;let v=!0,T=!1,E=!0;for(const L of y.children){const j=L.key;if(!L.disabled){if(E&&(E=!1),f.has(j))T=!0;else if(b.has(j)){T=!0,v=!1;break}else if(v=!1,T)break}}v&&!E?(h&&y.children.forEach(L=>{!L.disabled&&f.has(L.key)&&f.delete(L.key)}),f.add(k)):T&&b.add(k),C&&g&&f.has(k)&&f.delete(k)}}return{checkedKeys:Array.from(f),indeterminateKeys:Array.from(b)}}function Fa(e,t,n,o){const{treeNodeMap:r,getChildren:i}=t,a=new Set,s=new Set(e);return e.forEach(l=>{const c=r.get(l);c!==void 0&&tp(c,d=>{if(d.disabled)return jl.STOP;const{key:u}=d;if(!a.has(u)&&(a.add(u),s.add(u),DT(d.rawNode,i))){if(o)return jl.STOP;if(!n)throw new BT}})}),s}function WT(e,{includeGroup:t=!1,includeSelf:n=!0},o){var r;const i=o.treeNodeMap;let a=e==null?null:(r=i.get(e))!==null&&r!==void 0?r:null;const s={keyPath:[],treeNodePath:[],treeNode:a};if(a!=null&&a.ignored)return s.treeNode=null,s;for(;a;)!a.ignored&&(t||!a.isGroup)&&s.treeNodePath.push(a),a=a.parent;return s.treeNodePath.reverse(),n||s.treeNodePath.pop(),s.keyPath=s.treeNodePath.map(l=>l.key),s}function jT(e){if(e.length===0)return null;const t=e[0];return t.isGroup||t.ignored||t.disabled?t.getNext():t}function GT(e,t){const n=e.siblings,o=n.length,{index:r}=e;return t?n[(r+1)%o]:r===n.length-1?null:n[r+1]}function xh(e,t,{loop:n=!1,includeDisabled:o=!1}={}){const r=t==="prev"?VT:GT,i={reverse:t==="prev"};let a=!1,s=null;function l(c){if(c!==null){if(c===e){if(!a)a=!0;else if(!e.disabled&&!e.isGroup){s=e;return}}else if((!c.disabled||o)&&!c.ignored&&!c.isGroup){s=c;return}if(c.isGroup){const d=Kc(c,i);d!==null?s=d:l(r(c,n))}else{const d=r(c,!1);if(d!==null)l(d);else{const u=UT(c);u!=null&&u.isGroup?l(r(u,n)):n&&l(r(c,!0))}}}}return l(e),s}function VT(e,t){const n=e.siblings,o=n.length,{index:r}=e;return t?n[(r-1+o)%o]:r===0?null:n[r-1]}function UT(e){return e.parent}function Kc(e,t={}){const{reverse:n=!1}=t,{children:o}=e;if(o){const{length:r}=o,i=n?r-1:0,a=n?-1:r,s=n?-1:1;for(let l=i;l!==a;l+=s){const c=o[l];if(!c.disabled&&!c.ignored)if(c.isGroup){const d=Kc(c,t);if(d!==null)return d}else return c}}return null}const KT={getChild(){return this.ignored?null:Kc(this)},getParent(){const{parent:e}=this;return e!=null&&e.isGroup?e.getParent():e},getNext(e={}){return xh(this,"next",e)},getPrev(e={}){return xh(this,"prev",e)}};function qT(e,t){const n=t?new Set(t):void 0,o=[];function r(i){i.forEach(a=>{o.push(a),!(a.isLeaf||!a.children||a.ignored)&&(a.isGroup||n===void 0||n.has(a.key))&&r(a.children)})}return r(e),o}function XT(e,t){const n=e.key;for(;t;){if(t.key===n)return!0;t=t.parent}return!1}function np(e,t,n,o,r,i=null,a=0){const s=[];return e.forEach((l,c)=>{var d;const u=Object.create(o);if(u.rawNode=l,u.siblings=s,u.level=a,u.index=c,u.isFirstChild=c===0,u.isLastChild=c+1===e.length,u.parent=i,!u.ignored){const h=r(l);Array.isArray(h)&&(u.children=np(h,t,n,o,r,u,a+1))}s.push(u),t.set(u.key,u),n.has(a)||n.set(a,[]),(d=n.get(a))===null||d===void 0||d.push(u)}),s}function ZT(e,t={}){var n;const o=new Map,r=new Map,{getDisabled:i=LT,getIgnored:a=RT,getIsGroup:s=HT,getKey:l=IT}=t,c=(n=t.getChildren)!==null&&n!==void 0?n:ET,d=t.ignoreEmptyChildren?y=>{const k=c(y);return Array.isArray(k)?k.length?k:null:k}:c,u=Object.assign({get key(){return l(this.rawNode)},get disabled(){return i(this.rawNode)},get isGroup(){return s(this.rawNode)},get isLeaf(){return AT(this.rawNode,d)},get shallowLoaded(){return MT(this.rawNode,d)},get ignored(){return a(this.rawNode)},contains(y){return XT(this,y)}},KT),h=np(e,o,r,u,d);function g(y){if(y==null)return null;const k=o.get(y);return k&&!k.isGroup&&!k.ignored?k:null}function f(y){if(y==null)return null;const k=o.get(y);return k&&!k.ignored?k:null}function b(y,k){const P=f(y);return P?P.getPrev(k):null}function p(y,k){const P=f(y);return P?P.getNext(k):null}function m(y){const k=f(y);return k?k.getParent():null}function C(y){const k=f(y);return k?k.getChild():null}const _={treeNodes:h,treeNodeMap:o,levelTreeNodeMap:r,maxLevel:Math.max(...r.keys()),getChildren:d,getFlattenedNodes(y){return qT(h,y)},getNode:g,getPrev:b,getNext:p,getParent:m,getChild:C,getFirstAvailableNode(){return jT(h)},getPath(y,k={}){return WT(y,k,_)},getCheckedKeys(y,k={}){const{cascade:P=!0,leafOnly:v=!1,checkStrategy:T="all",allowNotLoaded:E=!1}=k;return cl({checkedKeys:sl(y),indeterminateKeys:ll(y),cascade:P,leafOnly:v,checkStrategy:T,allowNotLoaded:E},_)},check(y,k,P={}){const{cascade:v=!0,leafOnly:T=!1,checkStrategy:E="all",allowNotLoaded:L=!1}=P;return cl({checkedKeys:sl(k),indeterminateKeys:ll(k),keysToCheck:y==null?[]:yh(y),cascade:v,leafOnly:T,checkStrategy:E,allowNotLoaded:L},_)},uncheck(y,k,P={}){const{cascade:v=!0,leafOnly:T=!1,checkStrategy:E="all",allowNotLoaded:L=!1}=P;return cl({checkedKeys:sl(k),indeterminateKeys:ll(k),keysToUncheck:y==null?[]:yh(y),cascade:v,leafOnly:T,checkStrategy:E,allowNotLoaded:L},_)},getNonLeafKeys(y={}){return PT(h,y)}};return _}const he={neutralBase:"#000",neutralInvertBase:"#fff",neutralTextBase:"#fff",neutralPopover:"rgb(72, 72, 78)",neutralCard:"rgb(24, 24, 28)",neutralModal:"rgb(44, 44, 50)",neutralBody:"rgb(16, 16, 20)",alpha1:"0.9",alpha2:"0.82",alpha3:"0.52",alpha4:"0.38",alpha5:"0.28",alphaClose:"0.52",alphaDisabled:"0.38",alphaDisabledInput:"0.06",alphaPending:"0.09",alphaTablePending:"0.06",alphaTableStriped:"0.05",alphaPressed:"0.05",alphaAvatar:"0.18",alphaRail:"0.2",alphaProgressRail:"0.12",alphaBorder:"0.24",alphaDivider:"0.09",alphaInput:"0.1",alphaAction:"0.06",alphaTab:"0.04",alphaScrollbar:"0.2",alphaScrollbarHover:"0.3",alphaCode:"0.12",alphaTag:"0.2",primaryHover:"#7fe7c4",primaryDefault:"#63e2b7",primaryActive:"#5acea7",primarySuppl:"rgb(42, 148, 125)",infoHover:"#8acbec",infoDefault:"#70c0e8",infoActive:"#66afd3",infoSuppl:"rgb(56, 137, 197)",errorHover:"#e98b8b",errorDefault:"#e88080",errorActive:"#e57272",errorSuppl:"rgb(208, 58, 82)",warningHover:"#f5d599",warningDefault:"#f2c97d",warningActive:"#e6c260",warningSuppl:"rgb(240, 138, 0)",successHover:"#7fe7c4",successDefault:"#63e2b7",successActive:"#5acea7",successSuppl:"rgb(42, 148, 125)"},YT=jn(he.neutralBase),op=jn(he.neutralInvertBase),JT="rgba("+op.slice(0,3).join(", ")+", ";function Ne(e){return JT+String(e)+")"}function QT(e){const t=Array.from(op);return t[3]=Number(e),fe(YT,t)}const ew=Object.assign(Object.assign({name:"common"},yo),{baseColor:he.neutralBase,primaryColor:he.primaryDefault,primaryColorHover:he.primaryHover,primaryColorPressed:he.primaryActive,primaryColorSuppl:he.primarySuppl,infoColor:he.infoDefault,infoColorHover:he.infoHover,infoColorPressed:he.infoActive,infoColorSuppl:he.infoSuppl,successColor:he.successDefault,successColorHover:he.successHover,successColorPressed:he.successActive,successColorSuppl:he.successSuppl,warningColor:he.warningDefault,warningColorHover:he.warningHover,warningColorPressed:he.warningActive,warningColorSuppl:he.warningSuppl,errorColor:he.errorDefault,errorColorHover:he.errorHover,errorColorPressed:he.errorActive,errorColorSuppl:he.errorSuppl,textColorBase:he.neutralTextBase,textColor1:Ne(he.alpha1),textColor2:Ne(he.alpha2),textColor3:Ne(he.alpha3),textColorDisabled:Ne(he.alpha4),placeholderColor:Ne(he.alpha4),placeholderColorDisabled:Ne(he.alpha5),iconColor:Ne(he.alpha4),iconColorDisabled:Ne(he.alpha5),iconColorHover:Ne(Number(he.alpha4)*1.25),iconColorPressed:Ne(Number(he.alpha4)*.8),opacity1:he.alpha1,opacity2:he.alpha2,opacity3:he.alpha3,opacity4:he.alpha4,opacity5:he.alpha5,dividerColor:Ne(he.alphaDivider),borderColor:Ne(he.alphaBorder),closeIconColorHover:Ne(Number(he.alphaClose)),closeIconColor:Ne(Number(he.alphaClose)),closeIconColorPressed:Ne(Number(he.alphaClose)),closeColorHover:"rgba(255, 255, 255, .12)",closeColorPressed:"rgba(255, 255, 255, .08)",clearColor:Ne(he.alpha4),clearColorHover:gt(Ne(he.alpha4),{alpha:1.25}),clearColorPressed:gt(Ne(he.alpha4),{alpha:.8}),scrollbarColor:Ne(he.alphaScrollbar),scrollbarColorHover:Ne(he.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Ne(he.alphaProgressRail),railColor:Ne(he.alphaRail),popoverColor:he.neutralPopover,tableColor:he.neutralCard,cardColor:he.neutralCard,modalColor:he.neutralModal,bodyColor:he.neutralBody,tagColor:QT(he.alphaTag),avatarColor:Ne(he.alphaAvatar),invertedColor:he.neutralBase,inputColor:Ne(he.alphaInput),codeColor:Ne(he.alphaCode),tabColor:Ne(he.alphaTab),actionColor:Ne(he.alphaAction),tableHeaderColor:Ne(he.alphaAction),hoverColor:Ne(he.alphaPending),tableColorHover:Ne(he.alphaTablePending),tableColorStriped:Ne(he.alphaTableStriped),pressedColor:Ne(he.alphaPressed),opacityDisabled:he.alphaDisabled,inputColorDisabled:Ne(he.alphaDisabledInput),buttonColor2:"rgba(255, 255, 255, .08)",buttonColor2Hover:"rgba(255, 255, 255, .12)",buttonColor2Pressed:"rgba(255, 255, 255, .08)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .24), 0 3px 6px 0 rgba(0, 0, 0, .18), 0 5px 12px 4px rgba(0, 0, 0, .12)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .24), 0 6px 12px 0 rgba(0, 0, 0, .16), 0 9px 18px 8px rgba(0, 0, 0, .10)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),ae=ew,ye={neutralBase:"#FFF",neutralInvertBase:"#000",neutralTextBase:"#000",neutralPopover:"#fff",neutralCard:"#fff",neutralModal:"#fff",neutralBody:"#fff",alpha1:"0.82",alpha2:"0.72",alpha3:"0.38",alpha4:"0.24",alpha5:"0.18",alphaClose:"0.6",alphaDisabled:"0.5",alphaDisabledInput:"0.02",alphaPending:"0.05",alphaTablePending:"0.02",alphaPressed:"0.07",alphaAvatar:"0.2",alphaRail:"0.14",alphaProgressRail:".08",alphaBorder:"0.12",alphaDivider:"0.06",alphaInput:"0",alphaAction:"0.02",alphaTab:"0.04",alphaScrollbar:"0.25",alphaScrollbarHover:"0.4",alphaCode:"0.05",alphaTag:"0.02",primaryHover:"#36ad6a",primaryDefault:"#18a058",primaryActive:"#0c7a43",primarySuppl:"#36ad6a",infoHover:"#4098fc",infoDefault:"#2080f0",infoActive:"#1060c9",infoSuppl:"#4098fc",errorHover:"#de576d",errorDefault:"#d03050",errorActive:"#ab1f3f",errorSuppl:"#de576d",warningHover:"#fcb040",warningDefault:"#f0a020",warningActive:"#c97c10",warningSuppl:"#fcb040",successHover:"#36ad6a",successDefault:"#18a058",successActive:"#0c7a43",successSuppl:"#36ad6a"},tw=jn(ye.neutralBase),rp=jn(ye.neutralInvertBase),nw="rgba("+rp.slice(0,3).join(", ")+", ";function Ch(e){return nw+String(e)+")"}function Bt(e){const t=Array.from(rp);return t[3]=Number(e),fe(tw,t)}const ow=Object.assign(Object.assign({name:"common"},yo),{baseColor:ye.neutralBase,primaryColor:ye.primaryDefault,primaryColorHover:ye.primaryHover,primaryColorPressed:ye.primaryActive,primaryColorSuppl:ye.primarySuppl,infoColor:ye.infoDefault,infoColorHover:ye.infoHover,infoColorPressed:ye.infoActive,infoColorSuppl:ye.infoSuppl,successColor:ye.successDefault,successColorHover:ye.successHover,successColorPressed:ye.successActive,successColorSuppl:ye.successSuppl,warningColor:ye.warningDefault,warningColorHover:ye.warningHover,warningColorPressed:ye.warningActive,warningColorSuppl:ye.warningSuppl,errorColor:ye.errorDefault,errorColorHover:ye.errorHover,errorColorPressed:ye.errorActive,errorColorSuppl:ye.errorSuppl,textColorBase:ye.neutralTextBase,textColor1:"rgb(31, 34, 37)",textColor2:"rgb(51, 54, 57)",textColor3:"rgb(118, 124, 130)",textColorDisabled:Bt(ye.alpha4),placeholderColor:Bt(ye.alpha4),placeholderColorDisabled:Bt(ye.alpha5),iconColor:Bt(ye.alpha4),iconColorHover:gt(Bt(ye.alpha4),{lightness:.75}),iconColorPressed:gt(Bt(ye.alpha4),{lightness:.9}),iconColorDisabled:Bt(ye.alpha5),opacity1:ye.alpha1,opacity2:ye.alpha2,opacity3:ye.alpha3,opacity4:ye.alpha4,opacity5:ye.alpha5,dividerColor:"rgb(239, 239, 245)",borderColor:"rgb(224, 224, 230)",closeIconColor:Bt(Number(ye.alphaClose)),closeIconColorHover:Bt(Number(ye.alphaClose)),closeIconColorPressed:Bt(Number(ye.alphaClose)),closeColorHover:"rgba(0, 0, 0, .09)",closeColorPressed:"rgba(0, 0, 0, .13)",clearColor:Bt(ye.alpha4),clearColorHover:gt(Bt(ye.alpha4),{lightness:.75}),clearColorPressed:gt(Bt(ye.alpha4),{lightness:.9}),scrollbarColor:Ch(ye.alphaScrollbar),scrollbarColorHover:Ch(ye.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Bt(ye.alphaProgressRail),railColor:"rgb(219, 219, 223)",popoverColor:ye.neutralPopover,tableColor:ye.neutralCard,cardColor:ye.neutralCard,modalColor:ye.neutralModal,bodyColor:ye.neutralBody,tagColor:"#eee",avatarColor:Bt(ye.alphaAvatar),invertedColor:"rgb(0, 20, 40)",inputColor:Bt(ye.alphaInput),codeColor:"rgb(244, 244, 248)",tabColor:"rgb(247, 247, 250)",actionColor:"rgb(250, 250, 252)",tableHeaderColor:"rgb(250, 250, 252)",hoverColor:"rgb(243, 243, 245)",tableColorHover:"rgba(0, 0, 100, 0.03)",tableColorStriped:"rgba(0, 0, 100, 0.02)",pressedColor:"rgb(237, 237, 239)",opacityDisabled:ye.alphaDisabled,inputColorDisabled:"rgb(250, 250, 252)",buttonColor2:"rgba(46, 51, 56, .05)",buttonColor2Hover:"rgba(46, 51, 56, .09)",buttonColor2Pressed:"rgba(46, 51, 56, .13)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .08), 0 3px 6px 0 rgba(0, 0, 0, .06), 0 5px 12px 4px rgba(0, 0, 0, .04)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),se=ow,rw={iconSizeSmall:"34px",iconSizeMedium:"40px",iconSizeLarge:"46px",iconSizeHuge:"52px"},ip=e=>{const{textColorDisabled:t,iconColor:n,textColor2:o,fontSizeSmall:r,fontSizeMedium:i,fontSizeLarge:a,fontSizeHuge:s}=e;return Object.assign(Object.assign({},rw),{fontSizeSmall:r,fontSizeMedium:i,fontSizeLarge:a,fontSizeHuge:s,textColor:t,iconColor:n,extraTextColor:o})},iw={name:"Empty",common:se,self:ip},qn=iw,aw={name:"Empty",common:ae,self:ip},or=aw,ap=e=>{const{scrollbarColor:t,scrollbarColorHover:n}=e;return{color:t,colorHover:n}},sw={name:"Scrollbar",common:se,self:ap},Kt=sw,lw={name:"Scrollbar",common:ae,self:ap},Qt=lw,{cubicBezierEaseInOut:kh}=yo;function qc({name:e="fade-in",enterDuration:t="0.2s",leaveDuration:n="0.2s",enterCubicBezier:o=kh,leaveCubicBezier:r=kh}={}){return[z(`&.${e}-transition-enter-active`,{transition:`all ${t} ${o}!important`}),z(`&.${e}-transition-leave-active`,{transition:`all ${n} ${r}!important`}),z(`&.${e}-transition-enter-from, &.${e}-transition-leave-to`,{opacity:0}),z(`&.${e}-transition-leave-from, &.${e}-transition-enter-to`,{opacity:1})]}const cw=te("scrollbar",` - overflow: hidden; - position: relative; - z-index: auto; - height: 100%; - width: 100%; -`,[z(">",[te("scrollbar-container",` - width: 100%; - overflow: scroll; - height: 100%; - min-height: inherit; - max-height: inherit; - scrollbar-width: none; - `,[z("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` - width: 0; - height: 0; - display: none; - `),z(">",[te("scrollbar-content",` - box-sizing: border-box; - min-width: 100%; - `)])])]),z(">, +",[te("scrollbar-rail",` - position: absolute; - pointer-events: none; - user-select: none; - -webkit-user-select: none; - `,[J("horizontal",` - left: 2px; - right: 2px; - bottom: 4px; - height: var(--n-scrollbar-height); - `,[z(">",[G("scrollbar",` - height: var(--n-scrollbar-height); - border-radius: var(--n-scrollbar-border-radius); - right: 0; - `)])]),J("vertical",` - right: 4px; - top: 2px; - bottom: 2px; - width: var(--n-scrollbar-width); - `,[z(">",[G("scrollbar",` - width: var(--n-scrollbar-width); - border-radius: var(--n-scrollbar-border-radius); - bottom: 0; - `)])]),J("disabled",[z(">",[G("scrollbar","pointer-events: none;")])]),z(">",[G("scrollbar",` - z-index: 1; - position: absolute; - cursor: pointer; - pointer-events: all; - background-color: var(--n-scrollbar-color); - transition: background-color .2s var(--n-scrollbar-bezier); - `,[qc(),z("&:hover","background-color: var(--n-scrollbar-color-hover);")])])])])]),dw=Object.assign(Object.assign({},Ee.props),{size:{type:Number,default:5},duration:{type:Number,default:0},scrollable:{type:Boolean,default:!0},xScrollable:Boolean,trigger:{type:String,default:"hover"},useUnifiedContainer:Boolean,triggerDisplayManually:Boolean,container:Function,content:Function,containerClass:String,containerStyle:[String,Object],contentClass:[String,Array],contentStyle:[String,Object],horizontalRailStyle:[String,Object],verticalRailStyle:[String,Object],onScroll:Function,onWheel:Function,onResize:Function,internalOnUpdateScrollLeft:Function,internalHoistYRail:Boolean}),sp=ce({name:"Scrollbar",props:dw,inheritAttrs:!1,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n,mergedRtlRef:o}=at(e),r=xo("Scrollbar",o,t),i=V(null),a=V(null),s=V(null),l=V(null),c=V(null),d=V(null),u=V(null),h=V(null),g=V(null),f=V(null),b=V(null),p=V(0),m=V(0),C=V(!1),_=V(!1);let y=!1,k=!1,P,v,T=0,E=0,L=0,j=0;const M=fx(),K=N(()=>{const{value:ee}=h,{value:ue}=d,{value:ke}=f;return ee===null||ue===null||ke===null?0:Math.min(ee,ke*ee/ue+e.size*1.5)}),ne=N(()=>`${K.value}px`),H=N(()=>{const{value:ee}=g,{value:ue}=u,{value:ke}=b;return ee===null||ue===null||ke===null?0:ke*ee/ue+e.size*1.5}),U=N(()=>`${H.value}px`),F=N(()=>{const{value:ee}=h,{value:ue}=p,{value:ke}=d,{value:qe}=f;if(ee===null||ke===null||qe===null)return 0;{const ft=ke-ee;return ft?ue/ft*(qe-K.value):0}}),re=N(()=>`${F.value}px`),be=N(()=>{const{value:ee}=g,{value:ue}=m,{value:ke}=u,{value:qe}=b;if(ee===null||ke===null||qe===null)return 0;{const ft=ke-ee;return ft?ue/ft*(qe-H.value):0}}),ve=N(()=>`${be.value}px`),_e=N(()=>{const{value:ee}=h,{value:ue}=d;return ee!==null&&ue!==null&&ue>ee}),Me=N(()=>{const{value:ee}=g,{value:ue}=u;return ee!==null&&ue!==null&&ue>ee}),lt=N(()=>{const{trigger:ee}=e;return ee==="none"||C.value}),Ze=N(()=>{const{trigger:ee}=e;return ee==="none"||_.value}),Ye=N(()=>{const{container:ee}=e;return ee?ee():a.value}),Ie=N(()=>{const{content:ee}=e;return ee?ee():s.value}),De=dm(()=>{e.container||ct({top:p.value,left:m.value})}),Ot=()=>{De.isDeactivated||ie()},Le=ee=>{if(De.isDeactivated)return;const{onResize:ue}=e;ue&&ue(ee),ie()},ct=(ee,ue)=>{if(!e.scrollable)return;if(typeof ee=="number"){bt(ee,ue??0,0,!1,"auto");return}const{left:ke,top:qe,index:ft,elSize:Ht,position:yn,behavior:st,el:tn,debounce:To=!0}=ee;(ke!==void 0||qe!==void 0)&&bt(ke??0,qe??0,0,!1,st),tn!==void 0?bt(0,tn.offsetTop,tn.offsetHeight,To,st):ft!==void 0&&Ht!==void 0?bt(0,ft*Ht,Ht,To,st):yn==="bottom"?bt(0,Number.MAX_SAFE_INTEGER,0,!1,st):yn==="top"&&bt(0,0,0,!1,st)},At=(ee,ue)=>{if(!e.scrollable)return;const{value:ke}=Ye;ke&&(typeof ee=="object"?ke.scrollBy(ee):ke.scrollBy(ee,ue||0))};function bt(ee,ue,ke,qe,ft){const{value:Ht}=Ye;if(Ht){if(qe){const{scrollTop:yn,offsetHeight:st}=Ht;if(ue>yn){ue+ke<=yn+st||Ht.scrollTo({left:ee,top:ue+ke-st,behavior:ft});return}}Ht.scrollTo({left:ee,top:ue,behavior:ft})}}function I(){oe(),le(),ie()}function A(){O()}function O(){X(),Z()}function X(){v!==void 0&&window.clearTimeout(v),v=window.setTimeout(()=>{_.value=!1},e.duration)}function Z(){P!==void 0&&window.clearTimeout(P),P=window.setTimeout(()=>{C.value=!1},e.duration)}function oe(){P!==void 0&&window.clearTimeout(P),C.value=!0}function le(){v!==void 0&&window.clearTimeout(v),_.value=!0}function x(ee){const{onScroll:ue}=e;ue&&ue(ee),w()}function w(){const{value:ee}=Ye;ee&&(p.value=ee.scrollTop,m.value=ee.scrollLeft*(r!=null&&r.value?-1:1))}function R(){const{value:ee}=Ie;ee&&(d.value=ee.offsetHeight,u.value=ee.offsetWidth);const{value:ue}=Ye;ue&&(h.value=ue.offsetHeight,g.value=ue.offsetWidth);const{value:ke}=c,{value:qe}=l;ke&&(b.value=ke.offsetWidth),qe&&(f.value=qe.offsetHeight)}function W(){const{value:ee}=Ye;ee&&(p.value=ee.scrollTop,m.value=ee.scrollLeft*(r!=null&&r.value?-1:1),h.value=ee.offsetHeight,g.value=ee.offsetWidth,d.value=ee.scrollHeight,u.value=ee.scrollWidth);const{value:ue}=c,{value:ke}=l;ue&&(b.value=ue.offsetWidth),ke&&(f.value=ke.offsetHeight)}function ie(){e.scrollable&&(e.useUnifiedContainer?W():(R(),w()))}function Q(ee){var ue;return!(!((ue=i.value)===null||ue===void 0)&&ue.contains(xi(ee)))}function $(ee){ee.preventDefault(),ee.stopPropagation(),k=!0,it("mousemove",window,B,!0),it("mouseup",window,me,!0),E=m.value,L=r!=null&&r.value?window.innerWidth-ee.clientX:ee.clientX}function B(ee){if(!k)return;P!==void 0&&window.clearTimeout(P),v!==void 0&&window.clearTimeout(v);const{value:ue}=g,{value:ke}=u,{value:qe}=H;if(ue===null||ke===null)return;const Ht=(r!=null&&r.value?window.innerWidth-ee.clientX-L:ee.clientX-L)*(ke-ue)/(ue-qe),yn=ke-ue;let st=E+Ht;st=Math.min(yn,st),st=Math.max(st,0);const{value:tn}=Ye;if(tn){tn.scrollLeft=st*(r!=null&&r.value?-1:1);const{internalOnUpdateScrollLeft:To}=e;To&&To(st)}}function me(ee){ee.preventDefault(),ee.stopPropagation(),Ke("mousemove",window,B,!0),Ke("mouseup",window,me,!0),k=!1,ie(),Q(ee)&&O()}function Ce(ee){ee.preventDefault(),ee.stopPropagation(),y=!0,it("mousemove",window,Be,!0),it("mouseup",window,dt,!0),T=p.value,j=ee.clientY}function Be(ee){if(!y)return;P!==void 0&&window.clearTimeout(P),v!==void 0&&window.clearTimeout(v);const{value:ue}=h,{value:ke}=d,{value:qe}=K;if(ue===null||ke===null)return;const Ht=(ee.clientY-j)*(ke-ue)/(ue-qe),yn=ke-ue;let st=T+Ht;st=Math.min(yn,st),st=Math.max(st,0);const{value:tn}=Ye;tn&&(tn.scrollTop=st)}function dt(ee){ee.preventDefault(),ee.stopPropagation(),Ke("mousemove",window,Be,!0),Ke("mouseup",window,dt,!0),y=!1,ie(),Q(ee)&&O()}co(()=>{const{value:ee}=Me,{value:ue}=_e,{value:ke}=t,{value:qe}=c,{value:ft}=l;qe&&(ee?qe.classList.remove(`${ke}-scrollbar-rail--disabled`):qe.classList.add(`${ke}-scrollbar-rail--disabled`)),ft&&(ue?ft.classList.remove(`${ke}-scrollbar-rail--disabled`):ft.classList.add(`${ke}-scrollbar-rail--disabled`))}),$t(()=>{e.container||ie()}),kt(()=>{P!==void 0&&window.clearTimeout(P),v!==void 0&&window.clearTimeout(v),Ke("mousemove",window,Be,!0),Ke("mouseup",window,dt,!0)});const Et=Ee("Scrollbar","-scrollbar",cw,Kt,e,t),On=N(()=>{const{common:{cubicBezierEaseInOut:ee,scrollbarBorderRadius:ue,scrollbarHeight:ke,scrollbarWidth:qe},self:{color:ft,colorHover:Ht}}=Et.value;return{"--n-scrollbar-bezier":ee,"--n-scrollbar-color":ft,"--n-scrollbar-color-hover":Ht,"--n-scrollbar-border-radius":ue,"--n-scrollbar-width":qe,"--n-scrollbar-height":ke}}),jt=n?Pt("scrollbar",void 0,On,e):void 0;return Object.assign(Object.assign({},{scrollTo:ct,scrollBy:At,sync:ie,syncUnifiedContainer:W,handleMouseEnterWrapper:I,handleMouseLeaveWrapper:A}),{mergedClsPrefix:t,rtlEnabled:r,containerScrollTop:p,wrapperRef:i,containerRef:a,contentRef:s,yRailRef:l,xRailRef:c,needYBar:_e,needXBar:Me,yBarSizePx:ne,xBarSizePx:U,yBarTopPx:re,xBarLeftPx:ve,isShowXBar:lt,isShowYBar:Ze,isIos:M,handleScroll:x,handleContentResize:Ot,handleContainerResize:Le,handleYScrollMouseDown:Ce,handleXScrollMouseDown:$,cssVars:n?void 0:On,themeClass:jt==null?void 0:jt.themeClass,onRender:jt==null?void 0:jt.onRender})},render(){var e;const{$slots:t,mergedClsPrefix:n,triggerDisplayManually:o,rtlEnabled:r,internalHoistYRail:i}=this;if(!this.scrollable)return(e=t.default)===null||e===void 0?void 0:e.call(t);const a=this.trigger==="none",s=(d,u)=>S("div",{ref:"yRailRef",class:[`${n}-scrollbar-rail`,`${n}-scrollbar-rail--vertical`,d],"data-scrollbar-rail":!0,style:[u||"",this.verticalRailStyle],"aria-hidden":!0},S(a?au:bn,a?null:{name:"fade-in-transition"},{default:()=>this.needYBar&&this.isShowYBar&&!this.isIos?S("div",{class:`${n}-scrollbar-rail__scrollbar`,style:{height:this.yBarSizePx,top:this.yBarTopPx},onMousedown:this.handleYScrollMouseDown}):null})),l=()=>{var d,u;return(d=this.onRender)===null||d===void 0||d.call(this),S("div",Mn(this.$attrs,{role:"none",ref:"wrapperRef",class:[`${n}-scrollbar`,this.themeClass,r&&`${n}-scrollbar--rtl`],style:this.cssVars,onMouseenter:o?void 0:this.handleMouseEnterWrapper,onMouseleave:o?void 0:this.handleMouseLeaveWrapper}),[this.container?(u=t.default)===null||u===void 0?void 0:u.call(t):S("div",{role:"none",ref:"containerRef",class:[`${n}-scrollbar-container`,this.containerClass],style:this.containerStyle,onScroll:this.handleScroll,onWheel:this.onWheel},S(Da,{onResize:this.handleContentResize},{default:()=>S("div",{ref:"contentRef",role:"none",style:[{width:this.xScrollable?"fit-content":null},this.contentStyle],class:[`${n}-scrollbar-content`,this.contentClass]},t)})),i?null:s(void 0,void 0),this.xScrollable&&S("div",{ref:"xRailRef",class:[`${n}-scrollbar-rail`,`${n}-scrollbar-rail--horizontal`],style:this.horizontalRailStyle,"data-scrollbar-rail":!0,"aria-hidden":!0},S(a?au:bn,a?null:{name:"fade-in-transition"},{default:()=>this.needXBar&&this.isShowXBar&&!this.isIos?S("div",{class:`${n}-scrollbar-rail__scrollbar`,style:{width:this.xBarSizePx,right:r?this.xBarLeftPx:void 0,left:r?void 0:this.xBarLeftPx},onMousedown:this.handleXScrollMouseDown}):null}))])},c=this.container?l():S(Da,{onResize:this.handleContainerResize},{default:l});return i?S(Oe,null,c,s(this.themeClass,this.cssVars)):c}}),Ss=sp,lp=sp,uw={height:"calc(var(--n-option-height) * 7.6)",paddingSmall:"4px 0",paddingMedium:"4px 0",paddingLarge:"4px 0",paddingHuge:"4px 0",optionPaddingSmall:"0 12px",optionPaddingMedium:"0 12px",optionPaddingLarge:"0 12px",optionPaddingHuge:"0 12px",loadingSize:"18px"},cp=e=>{const{borderRadius:t,popoverColor:n,textColor3:o,dividerColor:r,textColor2:i,primaryColorPressed:a,textColorDisabled:s,primaryColor:l,opacityDisabled:c,hoverColor:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g,fontSizeHuge:f,heightSmall:b,heightMedium:p,heightLarge:m,heightHuge:C}=e;return Object.assign(Object.assign({},uw),{optionFontSizeSmall:u,optionFontSizeMedium:h,optionFontSizeLarge:g,optionFontSizeHuge:f,optionHeightSmall:b,optionHeightMedium:p,optionHeightLarge:m,optionHeightHuge:C,borderRadius:t,color:n,groupHeaderTextColor:o,actionDividerColor:r,optionTextColor:i,optionTextColorPressed:a,optionTextColorDisabled:s,optionTextColorActive:l,optionOpacityDisabled:c,optionCheckColor:l,optionColorPending:d,optionColorActive:"rgba(0, 0, 0, 0)",optionColorActivePending:d,actionTextColor:i,loadingColor:l})},hw={name:"InternalSelectMenu",common:se,peers:{Scrollbar:Kt,Empty:qn},self:cp},Bi=hw,fw={name:"InternalSelectMenu",common:ae,peers:{Scrollbar:Qt,Empty:or},self:cp},Ni=fw,{cubicBezierEaseIn:Sh,cubicBezierEaseOut:Th}=yo;function dp({transformOrigin:e="inherit",duration:t=".2s",enterScale:n=".9",originalTransform:o="",originalTransition:r=""}={}){return[z("&.fade-in-scale-up-transition-leave-active",{transformOrigin:e,transition:`opacity ${t} ${Sh}, transform ${t} ${Sh} ${r&&","+r}`}),z("&.fade-in-scale-up-transition-enter-active",{transformOrigin:e,transition:`opacity ${t} ${Th}, transform ${t} ${Th} ${r&&","+r}`}),z("&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to",{opacity:0,transform:`${o} scale(${n})`}),z("&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to",{opacity:1,transform:`${o} scale(1)`})]}const gw=te("base-wave",` - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - border-radius: inherit; -`),mw=ce({name:"BaseWave",props:{clsPrefix:{type:String,required:!0}},setup(e){Dr("-base-wave",gw,Ue(e,"clsPrefix"));const t=V(null),n=V(!1);let o=null;return kt(()=>{o!==null&&window.clearTimeout(o)}),{active:n,selfRef:t,play(){o!==null&&(window.clearTimeout(o),n.value=!1,o=null),Ut(()=>{var r;(r=t.value)===null||r===void 0||r.offsetHeight,n.value=!0,o=window.setTimeout(()=>{n.value=!1,o=null},1e3)})}}},render(){const{clsPrefix:e}=this;return S("div",{ref:"selfRef","aria-hidden":!0,class:[`${e}-base-wave`,this.active&&`${e}-base-wave--active`]})}}),pw={space:"6px",spaceArrow:"10px",arrowOffset:"10px",arrowOffsetVertical:"10px",arrowHeight:"6px",padding:"8px 14px"},up=e=>{const{boxShadow2:t,popoverColor:n,textColor2:o,borderRadius:r,fontSize:i,dividerColor:a}=e;return Object.assign(Object.assign({},pw),{fontSize:i,borderRadius:r,color:n,dividerColor:a,textColor:o,boxShadow:t})},bw={name:"Popover",common:se,self:up},Co=bw,vw={name:"Popover",common:ae,self:up},rr=vw,dl={top:"bottom",bottom:"top",left:"right",right:"left"},vt="var(--n-arrow-height) * 1.414",yw=z([te("popover",` - transition: - box-shadow .3s var(--n-bezier), - background-color .3s var(--n-bezier), - color .3s var(--n-bezier); - position: relative; - font-size: var(--n-font-size); - color: var(--n-text-color); - box-shadow: var(--n-box-shadow); - word-break: break-word; - `,[z(">",[te("scrollbar",` - height: inherit; - max-height: inherit; - `)]),Lt("raw",` - background-color: var(--n-color); - border-radius: var(--n-border-radius); - `,[Lt("scrollable",[Lt("show-header-or-footer","padding: var(--n-padding);")])]),G("header",` - padding: var(--n-padding); - border-bottom: 1px solid var(--n-divider-color); - transition: border-color .3s var(--n-bezier); - `),G("footer",` - padding: var(--n-padding); - border-top: 1px solid var(--n-divider-color); - transition: border-color .3s var(--n-bezier); - `),J("scrollable, show-header-or-footer",[G("content",` - padding: var(--n-padding); - `)])]),te("popover-shared",` - transform-origin: inherit; - `,[te("popover-arrow-wrapper",` - position: absolute; - overflow: hidden; - pointer-events: none; - `,[te("popover-arrow",` - transition: background-color .3s var(--n-bezier); - position: absolute; - display: block; - width: calc(${vt}); - height: calc(${vt}); - box-shadow: 0 0 8px 0 rgba(0, 0, 0, .12); - transform: rotate(45deg); - background-color: var(--n-color); - pointer-events: all; - `)]),z("&.popover-transition-enter-from, &.popover-transition-leave-to",` - opacity: 0; - transform: scale(.85); - `),z("&.popover-transition-enter-to, &.popover-transition-leave-from",` - transform: scale(1); - opacity: 1; - `),z("&.popover-transition-enter-active",` - transition: - box-shadow .3s var(--n-bezier), - background-color .3s var(--n-bezier), - color .3s var(--n-bezier), - opacity .15s var(--n-bezier-ease-out), - transform .15s var(--n-bezier-ease-out); - `),z("&.popover-transition-leave-active",` - transition: - box-shadow .3s var(--n-bezier), - background-color .3s var(--n-bezier), - color .3s var(--n-bezier), - opacity .15s var(--n-bezier-ease-in), - transform .15s var(--n-bezier-ease-in); - `)]),hn("top-start",` - top: calc(${vt} / -2); - left: calc(${Hn("top-start")} - var(--v-offset-left)); - `),hn("top",` - top: calc(${vt} / -2); - transform: translateX(calc(${vt} / -2)) rotate(45deg); - left: 50%; - `),hn("top-end",` - top: calc(${vt} / -2); - right: calc(${Hn("top-end")} + var(--v-offset-left)); - `),hn("bottom-start",` - bottom: calc(${vt} / -2); - left: calc(${Hn("bottom-start")} - var(--v-offset-left)); - `),hn("bottom",` - bottom: calc(${vt} / -2); - transform: translateX(calc(${vt} / -2)) rotate(45deg); - left: 50%; - `),hn("bottom-end",` - bottom: calc(${vt} / -2); - right: calc(${Hn("bottom-end")} + var(--v-offset-left)); - `),hn("left-start",` - left: calc(${vt} / -2); - top: calc(${Hn("left-start")} - var(--v-offset-top)); - `),hn("left",` - left: calc(${vt} / -2); - transform: translateY(calc(${vt} / -2)) rotate(45deg); - top: 50%; - `),hn("left-end",` - left: calc(${vt} / -2); - bottom: calc(${Hn("left-end")} + var(--v-offset-top)); - `),hn("right-start",` - right: calc(${vt} / -2); - top: calc(${Hn("right-start")} - var(--v-offset-top)); - `),hn("right",` - right: calc(${vt} / -2); - transform: translateY(calc(${vt} / -2)) rotate(45deg); - top: 50%; - `),hn("right-end",` - right: calc(${vt} / -2); - bottom: calc(${Hn("right-end")} + var(--v-offset-top)); - `),...gS({top:["right-start","left-start"],right:["top-end","bottom-end"],bottom:["right-end","left-end"],left:["top-start","bottom-start"]},(e,t)=>{const n=["right","left"].includes(t),o=n?"width":"height";return e.map(r=>{const i=r.split("-")[1]==="end",s=`calc((${`var(--v-target-${o}, 0px)`} - ${vt}) / 2)`,l=Hn(r);return z(`[v-placement="${r}"] >`,[te("popover-shared",[J("center-arrow",[te("popover-arrow",`${t}: calc(max(${s}, ${l}) ${i?"+":"-"} var(--v-offset-${n?"left":"top"}));`)])])])})})]);function Hn(e){return["top","bottom"].includes(e.split("-")[0])?"var(--n-arrow-offset)":"var(--n-arrow-offset-vertical)"}function hn(e,t){const n=e.split("-")[0],o=["top","bottom"].includes(n)?"height: var(--n-space-arrow);":"width: var(--n-space-arrow);";return z(`[v-placement="${e}"] >`,[te("popover-shared",` - margin-${dl[n]}: var(--n-space); - `,[J("show-arrow",` - margin-${dl[n]}: var(--n-space-arrow); - `),J("overlap",` - margin: 0; - `),q2("popover-arrow-wrapper",` - right: 0; - left: 0; - top: 0; - bottom: 0; - ${n}: 100%; - ${dl[n]}: auto; - ${o} - `,[te("popover-arrow",t)])])])}const hp=Object.assign(Object.assign({},Ee.props),{to:_r.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}),fp=({arrowClass:e,arrowStyle:t,arrowWrapperClass:n,arrowWrapperStyle:o,clsPrefix:r})=>S("div",{key:"__popover-arrow__",style:o,class:[`${r}-popover-arrow-wrapper`,n]},S("div",{class:[`${r}-popover-arrow`,e],style:t})),xw=ce({name:"PopoverBody",inheritAttrs:!1,props:hp,setup(e,{slots:t,attrs:n}){const{namespaceRef:o,mergedClsPrefixRef:r,inlineThemeDisabled:i}=at(e),a=Ee("Popover","-popover",yw,Co,e,r),s=V(null),l=Ae("NPopover"),c=V(null),d=V(e.show),u=V(!1);co(()=>{const{show:v}=e;v&&!X2()&&!e.internalDeactivateImmediately&&(u.value=!0)});const h=N(()=>{const{trigger:v,onClickoutside:T}=e,E=[],{positionManuallyRef:{value:L}}=l;return L||(v==="click"&&!T&&E.push([Ll,y,void 0,{capture:!0}]),v==="hover"&&E.push([Tx,_])),T&&E.push([Ll,y,void 0,{capture:!0}]),(e.displayDirective==="show"||e.animated&&u.value)&&E.push([Tr,e.show]),E}),g=N(()=>{const v=e.width==="trigger"?void 0:ya(e.width),T=[];v&&T.push({width:v});const{maxWidth:E,minWidth:L}=e;return E&&T.push({maxWidth:ya(E)}),L&&T.push({maxWidth:ya(L)}),i||T.push(f.value),T}),f=N(()=>{const{common:{cubicBezierEaseInOut:v,cubicBezierEaseIn:T,cubicBezierEaseOut:E},self:{space:L,spaceArrow:j,padding:M,fontSize:K,textColor:ne,dividerColor:H,color:U,boxShadow:F,borderRadius:re,arrowHeight:be,arrowOffset:ve,arrowOffsetVertical:_e}}=a.value;return{"--n-box-shadow":F,"--n-bezier":v,"--n-bezier-ease-in":T,"--n-bezier-ease-out":E,"--n-font-size":K,"--n-text-color":ne,"--n-color":U,"--n-divider-color":H,"--n-border-radius":re,"--n-arrow-height":be,"--n-arrow-offset":ve,"--n-arrow-offset-vertical":_e,"--n-padding":M,"--n-space":L,"--n-space-arrow":j}}),b=i?Pt("popover",void 0,f,e):void 0;l.setBodyInstance({syncPosition:p}),kt(()=>{l.setBodyInstance(null)}),et(Ue(e,"show"),v=>{e.animated||(v?d.value=!0:d.value=!1)});function p(){var v;(v=s.value)===null||v===void 0||v.syncPosition()}function m(v){e.trigger==="hover"&&e.keepAliveOnHover&&e.show&&l.handleMouseEnter(v)}function C(v){e.trigger==="hover"&&e.keepAliveOnHover&&l.handleMouseLeave(v)}function _(v){e.trigger==="hover"&&!k().contains(xi(v))&&l.handleMouseMoveOutside(v)}function y(v){(e.trigger==="click"&&!k().contains(xi(v))||e.onClickoutside)&&l.handleClickOutside(v)}function k(){return l.getTriggerElement()}je($i,c),je(hs,null),je(us,null);function P(){if(b==null||b.onRender(),!(e.displayDirective==="show"||e.show||e.animated&&u.value))return null;let T;const E=l.internalRenderBodyRef.value,{value:L}=r;if(E)T=E([`${L}-popover-shared`,b==null?void 0:b.themeClass.value,e.overlap&&`${L}-popover-shared--overlap`,e.showArrow&&`${L}-popover-shared--show-arrow`,e.arrowPointToCenter&&`${L}-popover-shared--center-arrow`],c,g.value,m,C);else{const{value:j}=l.extraClassRef,{internalTrapFocus:M}=e,K=!El(t.header)||!El(t.footer),ne=()=>{var H,U;const F=K?S(Oe,null,Tt(t.header,ve=>ve?S("div",{class:[`${L}-popover__header`,e.headerClass],style:e.headerStyle},ve):null),Tt(t.default,ve=>ve?S("div",{class:[`${L}-popover__content`,e.contentClass],style:e.contentStyle},t):null),Tt(t.footer,ve=>ve?S("div",{class:[`${L}-popover__footer`,e.footerClass],style:e.footerStyle},ve):null)):e.scrollable?(H=t.default)===null||H===void 0?void 0:H.call(t):S("div",{class:[`${L}-popover__content`,e.contentClass],style:e.contentStyle},t),re=e.scrollable?S(lp,{contentClass:K?void 0:`${L}-popover__content ${(U=e.contentClass)!==null&&U!==void 0?U:""}`,contentStyle:K?void 0:e.contentStyle},{default:()=>F}):F,be=e.showArrow?fp({arrowClass:e.arrowClass,arrowStyle:e.arrowStyle,arrowWrapperClass:e.arrowWrapperClass,arrowWrapperStyle:e.arrowWrapperStyle,clsPrefix:L}):null;return[re,be]};T=S("div",Mn({class:[`${L}-popover`,`${L}-popover-shared`,b==null?void 0:b.themeClass.value,j.map(H=>`${L}-${H}`),{[`${L}-popover--scrollable`]:e.scrollable,[`${L}-popover--show-header-or-footer`]:K,[`${L}-popover--raw`]:e.raw,[`${L}-popover-shared--overlap`]:e.overlap,[`${L}-popover-shared--show-arrow`]:e.showArrow,[`${L}-popover-shared--center-arrow`]:e.arrowPointToCenter}],ref:c,style:g.value,onKeydown:l.handleKeydown,onMouseenter:m,onMouseleave:C},n),M?S(cm,{active:e.show,autoFocus:!0},{default:ne}):ne())}return uo(T,h.value)}return{displayed:u,namespace:o,isMounted:l.isMountedRef,zIndex:l.zIndexRef,followerRef:s,adjustedTo:_r(e),followerEnabled:d,renderContentNode:P}},render(){return S(Jg,{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===_r.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()})}}),Cw=Object.keys(hp),kw={focus:["onFocus","onBlur"],click:["onClick"],hover:["onMouseenter","onMouseleave"],manual:[],nested:["onFocus","onBlur","onMouseenter","onMouseleave","onClick"]};function Sw(e,t,n){kw[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 Ts={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:_r.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},Tw=Object.assign(Object.assign(Object.assign({},Ee.props),Ts),{internalOnAfterLeave:Function,internalRenderBody:Function}),ws=ce({name:"Popover",inheritAttrs:!1,props:Tw,__popover__:!0,setup(e){const t=Di(),n=V(null),o=N(()=>e.show),r=V(e.defaultShow),i=Ic(o,r),a=wt(()=>e.disabled?!1:i.value),s=()=>{if(e.disabled)return!0;const{getDisabled:H}=e;return!!(H!=null&&H())},l=()=>s()?!1:i.value,c=jg(e,["arrow","showArrow"]),d=N(()=>e.overlap?!1:c.value);let u=null;const h=V(null),g=V(null),f=wt(()=>e.x!==void 0&&e.y!==void 0);function b(H){const{"onUpdate:show":U,onUpdateShow:F,onShow:re,onHide:be}=e;r.value=H,U&&We(U,H),F&&We(F,H),H&&re&&We(re,!0),H&&be&&We(be,!1)}function p(){u&&u.syncPosition()}function m(){const{value:H}=h;H&&(window.clearTimeout(H),h.value=null)}function C(){const{value:H}=g;H&&(window.clearTimeout(H),g.value=null)}function _(){const H=s();if(e.trigger==="focus"&&!H){if(l())return;b(!0)}}function y(){const H=s();if(e.trigger==="focus"&&!H){if(!l())return;b(!1)}}function k(){const H=s();if(e.trigger==="hover"&&!H){if(C(),h.value!==null||l())return;const U=()=>{b(!0),h.value=null},{delay:F}=e;F===0?U():h.value=window.setTimeout(U,F)}}function P(){const H=s();if(e.trigger==="hover"&&!H){if(m(),g.value!==null||!l())return;const U=()=>{b(!1),g.value=null},{duration:F}=e;F===0?U():g.value=window.setTimeout(U,F)}}function v(){P()}function T(H){var U;l()&&(e.trigger==="click"&&(m(),C(),b(!1)),(U=e.onClickoutside)===null||U===void 0||U.call(e,H))}function E(){if(e.trigger==="click"&&!s()){m(),C();const H=!l();b(H)}}function L(H){e.internalTrapFocus&&H.key==="Escape"&&(m(),C(),b(!1))}function j(H){r.value=H}function M(){var H;return(H=n.value)===null||H===void 0?void 0:H.targetRef}function K(H){u=H}return je("NPopover",{getTriggerElement:M,handleKeydown:L,handleMouseEnter:k,handleMouseLeave:P,handleClickOutside:T,handleMouseMoveOutside:v,setBodyInstance:K,positionManuallyRef:f,isMountedRef:t,zIndexRef:Ue(e,"zIndex"),extraClassRef:Ue(e,"internalExtraClass"),internalRenderBodyRef:Ue(e,"internalRenderBody")}),co(()=>{i.value&&s()&&b(!1)}),{binderInstRef:n,positionManually:f,mergedShowConsideringDisabledProp:a,uncontrolledShow:r,mergedShowArrow:d,getMergedShow:l,setShow:j,handleClick:E,handleMouseEnter:k,handleMouseLeave:P,handleFocus:_,handleBlur:y,syncPosition:p}},render(){var e;const{positionManually:t,$slots:n}=this;let o,r=!1;if(!t&&(n.activator?o=Al(n,"activator"):o=Al(n,"trigger"),o)){o=pn(o),o=o.type===Rr?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)})}};Sw(o,a?"nested":t?"manual":this.trigger,l)}}return S(qg,{ref:"binderInstRef",syncTarget:!r,syncTargetWithParent:this.internalSyncTargetWithParent},{default:()=>{this.mergedShowConsideringDisabledProp;const i=this.getMergedShow();return[this.internalTrapFocus&&i?uo(S("div",{style:{position:"fixed",inset:0}}),[[Rc,{enabled:i,zIndex:this.zIndex}]]):null,t?null:S(Xg,null,{default:()=>o}),S(xw,Xo(this.$props,Cw,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)}})]}})}}),gp={closeIconSizeTiny:"12px",closeIconSizeSmall:"12px",closeIconSizeMedium:"14px",closeIconSizeLarge:"14px",closeSizeTiny:"16px",closeSizeSmall:"16px",closeSizeMedium:"18px",closeSizeLarge:"18px",padding:"0 7px",closeMargin:"0 0 0 4px"},ww={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:C,fontSizeMini:_,fontSizeTiny:y,fontSizeSmall:k,fontSizeMedium:P,heightMini:v,heightTiny:T,heightSmall:E,heightMedium:L,buttonColor2Hover:j,buttonColor2Pressed:M,fontWeightStrong:K}=e;return Object.assign(Object.assign({},gp),{closeBorderRadius:C,heightTiny:v,heightSmall:T,heightMedium:E,heightLarge:L,borderRadius:C,opacityDisabled:h,fontSizeTiny:_,fontSizeSmall:y,fontSizeMedium:k,fontSizeLarge:P,fontWeightStrong:K,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:j,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 ${q(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:q(r,{alpha:.16}),colorBorderedPrimary:"#0000",closeIconColorPrimary:gt(r,{lightness:.7}),closeIconColorHoverPrimary:gt(r,{lightness:.7}),closeIconColorPressedPrimary:gt(r,{lightness:.7}),closeColorHoverPrimary:q(r,{alpha:.16}),closeColorPressedPrimary:q(r,{alpha:.12}),borderInfo:`1px solid ${q(i,{alpha:.3})}`,textColorInfo:i,colorInfo:q(i,{alpha:.16}),colorBorderedInfo:"#0000",closeIconColorInfo:gt(i,{alpha:.7}),closeIconColorHoverInfo:gt(i,{alpha:.7}),closeIconColorPressedInfo:gt(i,{alpha:.7}),closeColorHoverInfo:q(i,{alpha:.16}),closeColorPressedInfo:q(i,{alpha:.12}),borderSuccess:`1px solid ${q(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:q(a,{alpha:.16}),colorBorderedSuccess:"#0000",closeIconColorSuccess:gt(a,{alpha:.7}),closeIconColorHoverSuccess:gt(a,{alpha:.7}),closeIconColorPressedSuccess:gt(a,{alpha:.7}),closeColorHoverSuccess:q(a,{alpha:.16}),closeColorPressedSuccess:q(a,{alpha:.12}),borderWarning:`1px solid ${q(s,{alpha:.3})}`,textColorWarning:s,colorWarning:q(s,{alpha:.16}),colorBorderedWarning:"#0000",closeIconColorWarning:gt(s,{alpha:.7}),closeIconColorHoverWarning:gt(s,{alpha:.7}),closeIconColorPressedWarning:gt(s,{alpha:.7}),closeColorHoverWarning:q(s,{alpha:.16}),closeColorPressedWarning:q(s,{alpha:.11}),borderError:`1px solid ${q(l,{alpha:.3})}`,textColorError:l,colorError:q(l,{alpha:.16}),colorBorderedError:"#0000",closeIconColorError:gt(l,{alpha:.7}),closeIconColorHoverError:gt(l,{alpha:.7}),closeIconColorPressedError:gt(l,{alpha:.7}),closeColorHoverError:q(l,{alpha:.16}),closeColorPressedError:q(l,{alpha:.12})})}},mp=ww,_w=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:C,fontSizeSmall:_,fontSizeMedium:y,heightMini:k,heightTiny:P,heightSmall:v,heightMedium:T,closeColorHover:E,closeColorPressed:L,buttonColor2Hover:j,buttonColor2Pressed:M,fontWeightStrong:K}=e;return Object.assign(Object.assign({},gp),{closeBorderRadius:p,heightTiny:k,heightSmall:P,heightMedium:v,heightLarge:T,borderRadius:p,opacityDisabled:u,fontSizeTiny:m,fontSizeSmall:C,fontSizeMedium:_,fontSizeLarge:y,fontWeightStrong:K,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:j,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:E,closeColorPressed:L,borderPrimary:`1px solid ${q(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:q(r,{alpha:.12}),colorBorderedPrimary:q(r,{alpha:.1}),closeIconColorPrimary:r,closeIconColorHoverPrimary:r,closeIconColorPressedPrimary:r,closeColorHoverPrimary:q(r,{alpha:.12}),closeColorPressedPrimary:q(r,{alpha:.18}),borderInfo:`1px solid ${q(i,{alpha:.3})}`,textColorInfo:i,colorInfo:q(i,{alpha:.12}),colorBorderedInfo:q(i,{alpha:.1}),closeIconColorInfo:i,closeIconColorHoverInfo:i,closeIconColorPressedInfo:i,closeColorHoverInfo:q(i,{alpha:.12}),closeColorPressedInfo:q(i,{alpha:.18}),borderSuccess:`1px solid ${q(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:q(a,{alpha:.12}),colorBorderedSuccess:q(a,{alpha:.1}),closeIconColorSuccess:a,closeIconColorHoverSuccess:a,closeIconColorPressedSuccess:a,closeColorHoverSuccess:q(a,{alpha:.12}),closeColorPressedSuccess:q(a,{alpha:.18}),borderWarning:`1px solid ${q(s,{alpha:.35})}`,textColorWarning:s,colorWarning:q(s,{alpha:.15}),colorBorderedWarning:q(s,{alpha:.12}),closeIconColorWarning:s,closeIconColorHoverWarning:s,closeIconColorPressedWarning:s,closeColorHoverWarning:q(s,{alpha:.12}),closeColorPressedWarning:q(s,{alpha:.18}),borderError:`1px solid ${q(l,{alpha:.23})}`,textColorError:l,colorError:q(l,{alpha:.1}),colorBorderedError:q(l,{alpha:.08}),closeIconColorError:l,closeIconColorHoverError:l,closeIconColorPressedError:l,closeColorHoverError:q(l,{alpha:.12}),closeColorPressedError:q(l,{alpha:.18})})},Pw={name:"Tag",common:se,self:_w},pp=Pw,Aw=te("base-clear",` - flex-shrink: 0; - height: 1em; - width: 1em; - position: relative; -`,[z(">",[G("clear",` - font-size: var(--n-clear-size); - height: 1em; - width: 1em; - cursor: pointer; - color: var(--n-clear-color); - transition: color .3s var(--n-bezier); - display: flex; - `,[z("&:hover",` - color: var(--n-clear-color-hover)!important; - `),z("&:active",` - color: var(--n-clear-color-pressed)!important; - `)]),G("placeholder",` - display: flex; - `),G("clear, placeholder",` - position: absolute; - left: 50%; - top: 50%; - transform: translateX(-50%) translateY(-50%); - `,[Ei({originalTransform:"translateX(-50%) translateY(-50%)",left:"50%",top:"50%"})])])]),Gl=ce({name:"BaseClear",props:{clsPrefix:{type:String,required:!0},show:Boolean,onClear:Function},setup(e){return Dr("-base-clear",Aw,Ue(e,"clsPrefix")),{handleMouseDown(t){t.preventDefault()}}},render(){const{clsPrefix:e}=this;return S("div",{class:`${e}-base-clear`},S(Cs,null,{default:()=>{var t,n;return this.show?S("div",{key:"dismiss",class:`${e}-base-clear__clear`,onClick:this.onClear,onMousedown:this.handleMouseDown,"data-clear":!0},Vo(this.$slots.icon,()=>[S(go,{clsPrefix:e},{default:()=>S(CT,null)})])):S("div",{key:"icon",class:`${e}-base-clear__placeholder`},(n=(t=this.$slots).placeholder)===null||n===void 0?void 0:n.call(t))}}))}}),Ew=ce({name:"InternalSelectionSuffix",props:{clsPrefix:{type:String,required:!0},showArrow:{type:Boolean,default:void 0},showClear:{type:Boolean,default:void 0},loading:{type:Boolean,default:!1},onClear:Function},setup(e,{slots:t}){return()=>{const{clsPrefix:n}=e;return S(Uc,{clsPrefix:n,class:`${n}-base-suffix`,strokeWidth:24,scale:.85,show:e.loading},{default:()=>e.showArrow?S(Gl,{clsPrefix:n,show:e.showClear,onClear:e.onClear},{placeholder:()=>S(go,{clsPrefix:n,class:`${n}-base-suffix__arrow`},{default:()=>Vo(t.default,()=>[S(xT,null)])})}):null})}}}),bp={paddingSingle:"0 26px 0 12px",paddingMultiple:"3px 26px 0 12px",clearSize:"16px",arrowSize:"16px"},Iw=e=>{const{borderRadius:t,textColor2:n,textColorDisabled:o,inputColor:r,inputColorDisabled:i,primaryColor:a,primaryColorHover:s,warningColor:l,warningColorHover:c,errorColor:d,errorColorHover:u,borderColor:h,iconColor:g,iconColorDisabled:f,clearColor:b,clearColorHover:p,clearColorPressed:m,placeholderColor:C,placeholderColorDisabled:_,fontSizeTiny:y,fontSizeSmall:k,fontSizeMedium:P,fontSizeLarge:v,heightTiny:T,heightSmall:E,heightMedium:L,heightLarge:j}=e;return Object.assign(Object.assign({},bp),{fontSizeTiny:y,fontSizeSmall:k,fontSizeMedium:P,fontSizeLarge:v,heightTiny:T,heightSmall:E,heightMedium:L,heightLarge:j,borderRadius:t,textColor:n,textColorDisabled:o,placeholderColor:C,placeholderColorDisabled:_,color:r,colorDisabled:i,colorActive:r,border:`1px solid ${h}`,borderHover:`1px solid ${s}`,borderActive:`1px solid ${a}`,borderFocus:`1px solid ${s}`,boxShadowHover:"none",boxShadowActive:`0 0 0 2px ${q(a,{alpha:.2})}`,boxShadowFocus:`0 0 0 2px ${q(a,{alpha:.2})}`,caretColor:a,arrowColor:g,arrowColorDisabled:f,loadingColor:a,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,borderActiveWarning:`1px solid ${l}`,borderFocusWarning:`1px solid ${c}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 0 2px ${q(l,{alpha:.2})}`,boxShadowFocusWarning:`0 0 0 2px ${q(l,{alpha:.2})}`,colorActiveWarning:r,caretColorWarning:l,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,borderActiveError:`1px solid ${d}`,borderFocusError:`1px solid ${u}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 0 2px ${q(d,{alpha:.2})}`,boxShadowFocusError:`0 0 0 2px ${q(d,{alpha:.2})}`,colorActiveError:r,caretColorError:d,clearColor:b,clearColorHover:p,clearColorPressed:m})},Rw={name:"InternalSelection",common:se,peers:{Popover:Co},self:Iw},Xc=Rw,Mw={name:"InternalSelection",common:ae,peers:{Popover:rr},self(e){const{borderRadius:t,textColor2:n,textColorDisabled:o,inputColor:r,inputColorDisabled:i,primaryColor:a,primaryColorHover:s,warningColor:l,warningColorHover:c,errorColor:d,errorColorHover:u,iconColor:h,iconColorDisabled:g,clearColor:f,clearColorHover:b,clearColorPressed:p,placeholderColor:m,placeholderColorDisabled:C,fontSizeTiny:_,fontSizeSmall:y,fontSizeMedium:k,fontSizeLarge:P,heightTiny:v,heightSmall:T,heightMedium:E,heightLarge:L}=e;return Object.assign(Object.assign({},bp),{fontSizeTiny:_,fontSizeSmall:y,fontSizeMedium:k,fontSizeLarge:P,heightTiny:v,heightSmall:T,heightMedium:E,heightLarge:L,borderRadius:t,textColor:n,textColorDisabled:o,placeholderColor:m,placeholderColorDisabled:C,color:r,colorDisabled:i,colorActive:q(a,{alpha:.1}),border:"1px solid #0000",borderHover:`1px solid ${s}`,borderActive:`1px solid ${a}`,borderFocus:`1px solid ${s}`,boxShadowHover:"none",boxShadowActive:`0 0 8px 0 ${q(a,{alpha:.4})}`,boxShadowFocus:`0 0 8px 0 ${q(a,{alpha:.4})}`,caretColor:a,arrowColor:h,arrowColorDisabled:g,loadingColor:a,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,borderActiveWarning:`1px solid ${l}`,borderFocusWarning:`1px solid ${c}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 8px 0 ${q(l,{alpha:.4})}`,boxShadowFocusWarning:`0 0 8px 0 ${q(l,{alpha:.4})}`,colorActiveWarning:q(l,{alpha:.1}),caretColorWarning:l,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,borderActiveError:`1px solid ${d}`,borderFocusError:`1px solid ${u}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 8px 0 ${q(d,{alpha:.4})}`,boxShadowFocusError:`0 0 8px 0 ${q(d,{alpha:.4})}`,colorActiveError:q(d,{alpha:.1}),caretColorError:d,clearColor:f,clearColorHover:b,clearColorPressed:p})}},Zc=Mw,{cubicBezierEaseInOut:Jn}=yo;function Lw({duration:e=".2s",delay:t=".1s"}={}){return[z("&.fade-in-width-expand-transition-leave-from, &.fade-in-width-expand-transition-enter-to",{opacity:1}),z("&.fade-in-width-expand-transition-leave-to, &.fade-in-width-expand-transition-enter-from",` - opacity: 0!important; - margin-left: 0!important; - margin-right: 0!important; - `),z("&.fade-in-width-expand-transition-leave-active",` - overflow: hidden; - transition: - opacity ${e} ${Jn}, - max-width ${e} ${Jn} ${t}, - margin-left ${e} ${Jn} ${t}, - margin-right ${e} ${Jn} ${t}; - `),z("&.fade-in-width-expand-transition-enter-active",` - overflow: hidden; - transition: - opacity ${e} ${Jn} ${t}, - max-width ${e} ${Jn}, - margin-left ${e} ${Jn}, - margin-right ${e} ${Jn}; - `)]}const vp={iconMargin:"11px 8px 0 12px",iconMarginRtl:"11px 12px 0 8px",iconSize:"24px",closeIconSize:"16px",closeSize:"20px",closeMargin:"13px 14px 0 0",closeMarginRtl:"13px 0 0 14px",padding:"13px"},Dw={name:"Alert",common:ae,self(e){const{lineHeight:t,borderRadius:n,fontWeightStrong:o,dividerColor:r,inputColor:i,textColor1:a,textColor2:s,closeColorHover:l,closeColorPressed:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,infoColorSuppl:g,successColorSuppl:f,warningColorSuppl:b,errorColorSuppl:p,fontSize:m}=e;return Object.assign(Object.assign({},vp),{fontSize:m,lineHeight:t,titleFontWeight:o,borderRadius:n,border:`1px solid ${r}`,color:i,titleTextColor:a,iconColor:s,contentTextColor:s,closeBorderRadius:n,closeColorHover:l,closeColorPressed:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,borderInfo:`1px solid ${q(g,{alpha:.35})}`,colorInfo:q(g,{alpha:.25}),titleTextColorInfo:a,iconColorInfo:g,contentTextColorInfo:s,closeColorHoverInfo:l,closeColorPressedInfo:c,closeIconColorInfo:d,closeIconColorHoverInfo:u,closeIconColorPressedInfo:h,borderSuccess:`1px solid ${q(f,{alpha:.35})}`,colorSuccess:q(f,{alpha:.25}),titleTextColorSuccess:a,iconColorSuccess:f,contentTextColorSuccess:s,closeColorHoverSuccess:l,closeColorPressedSuccess:c,closeIconColorSuccess:d,closeIconColorHoverSuccess:u,closeIconColorPressedSuccess:h,borderWarning:`1px solid ${q(b,{alpha:.35})}`,colorWarning:q(b,{alpha:.25}),titleTextColorWarning:a,iconColorWarning:b,contentTextColorWarning:s,closeColorHoverWarning:l,closeColorPressedWarning:c,closeIconColorWarning:d,closeIconColorHoverWarning:u,closeIconColorPressedWarning:h,borderError:`1px solid ${q(p,{alpha:.35})}`,colorError:q(p,{alpha:.25}),titleTextColorError:a,iconColorError:p,contentTextColorError:s,closeColorHoverError:l,closeColorPressedError:c,closeIconColorError:d,closeIconColorHoverError:u,closeIconColorPressedError:h})}},$w=Dw,Ow=e=>{const{lineHeight:t,borderRadius:n,fontWeightStrong:o,baseColor:r,dividerColor:i,actionColor:a,textColor1:s,textColor2:l,closeColorHover:c,closeColorPressed:d,closeIconColor:u,closeIconColorHover:h,closeIconColorPressed:g,infoColor:f,successColor:b,warningColor:p,errorColor:m,fontSize:C}=e;return Object.assign(Object.assign({},vp),{fontSize:C,lineHeight:t,titleFontWeight:o,borderRadius:n,border:`1px solid ${i}`,color:a,titleTextColor:s,iconColor:l,contentTextColor:l,closeBorderRadius:n,closeColorHover:c,closeColorPressed:d,closeIconColor:u,closeIconColorHover:h,closeIconColorPressed:g,borderInfo:`1px solid ${fe(r,q(f,{alpha:.25}))}`,colorInfo:fe(r,q(f,{alpha:.08})),titleTextColorInfo:s,iconColorInfo:f,contentTextColorInfo:l,closeColorHoverInfo:c,closeColorPressedInfo:d,closeIconColorInfo:u,closeIconColorHoverInfo:h,closeIconColorPressedInfo:g,borderSuccess:`1px solid ${fe(r,q(b,{alpha:.25}))}`,colorSuccess:fe(r,q(b,{alpha:.08})),titleTextColorSuccess:s,iconColorSuccess:b,contentTextColorSuccess:l,closeColorHoverSuccess:c,closeColorPressedSuccess:d,closeIconColorSuccess:u,closeIconColorHoverSuccess:h,closeIconColorPressedSuccess:g,borderWarning:`1px solid ${fe(r,q(p,{alpha:.33}))}`,colorWarning:fe(r,q(p,{alpha:.08})),titleTextColorWarning:s,iconColorWarning:p,contentTextColorWarning:l,closeColorHoverWarning:c,closeColorPressedWarning:d,closeIconColorWarning:u,closeIconColorHoverWarning:h,closeIconColorPressedWarning:g,borderError:`1px solid ${fe(r,q(m,{alpha:.25}))}`,colorError:fe(r,q(m,{alpha:.08})),titleTextColorError:s,iconColorError:m,contentTextColorError:l,closeColorHoverError:c,closeColorPressedError:d,closeIconColorError:u,closeIconColorHoverError:h,closeIconColorPressedError:g})},Hw={name:"Alert",common:se,self:Ow},Bw=Hw,{cubicBezierEaseInOut:_n,cubicBezierEaseOut:Nw,cubicBezierEaseIn:zw}=yo;function Fw({overflow:e="hidden",duration:t=".3s",originalTransition:n="",leavingDelay:o="0s",foldPadding:r=!1,enterToProps:i=void 0,leaveToProps:a=void 0,reverse:s=!1}={}){const l=s?"leave":"enter",c=s?"enter":"leave";return[z(`&.fade-in-height-expand-transition-${c}-from, - &.fade-in-height-expand-transition-${l}-to`,Object.assign(Object.assign({},i),{opacity:1})),z(`&.fade-in-height-expand-transition-${c}-to, - &.fade-in-height-expand-transition-${l}-from`,Object.assign(Object.assign({},a),{opacity:0,marginTop:"0 !important",marginBottom:"0 !important",paddingTop:r?"0 !important":void 0,paddingBottom:r?"0 !important":void 0})),z(`&.fade-in-height-expand-transition-${c}-active`,` - overflow: ${e}; - transition: - max-height ${t} ${_n} ${o}, - opacity ${t} ${Nw} ${o}, - margin-top ${t} ${_n} ${o}, - margin-bottom ${t} ${_n} ${o}, - padding-top ${t} ${_n} ${o}, - padding-bottom ${t} ${_n} ${o} - ${n?","+n:""} - `),z(`&.fade-in-height-expand-transition-${l}-active`,` - overflow: ${e}; - transition: - max-height ${t} ${_n}, - opacity ${t} ${zw}, - margin-top ${t} ${_n}, - margin-bottom ${t} ${_n}, - padding-top ${t} ${_n}, - padding-bottom ${t} ${_n} - ${n?","+n:""} - `)]}const Ww={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"},yp=e=>{const{borderRadius:t,railColor:n,primaryColor:o,primaryColorHover:r,primaryColorPressed:i,textColor2:a}=e;return Object.assign(Object.assign({},Ww),{borderRadius:t,railColor:n,railColorActive:o,linkColor:q(o,{alpha:.15}),linkTextColor:a,linkTextColorHover:r,linkTextColorPressed:i,linkTextColorActive:o})},jw={name:"Anchor",common:se,self:yp},Gw=jw,Vw={name:"Anchor",common:ae,self:yp},Uw=Vw,Kw=Jo&&"chrome"in window;Jo&&navigator.userAgent.includes("Firefox");const xp=Jo&&navigator.userAgent.includes("Safari")&&!Kw,Cp={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"},qw={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:C,heightSmall:_,heightMedium:y,heightLarge:k,clearColor:P,clearColorHover:v,clearColorPressed:T,placeholderColor:E,placeholderColorDisabled:L,iconColor:j,iconColorDisabled:M,iconColorHover:K,iconColorPressed:ne}=e;return Object.assign(Object.assign({},Cp),{countTextColorDisabled:o,countTextColor:n,heightTiny:C,heightSmall:_,heightMedium:y,heightLarge:k,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:E,placeholderColorDisabled:L,color:a,colorDisabled:s,colorFocus:q(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 ${q(r,{alpha:.3})}`,loadingColor:r,loadingColorWarning:l,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,colorFocusWarning:q(l,{alpha:.1}),borderFocusWarning:`1px solid ${c}`,boxShadowFocusWarning:`0 0 8px 0 ${q(l,{alpha:.3})}`,caretColorWarning:l,loadingColorError:d,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,colorFocusError:q(d,{alpha:.1}),borderFocusError:`1px solid ${u}`,boxShadowFocusError:`0 0 8px 0 ${q(d,{alpha:.3})}`,caretColorError:d,clearColor:P,clearColorHover:v,clearColorPressed:T,iconColor:j,iconColorDisabled:M,iconColorHover:K,iconColorPressed:ne,suffixTextColor:t})}},vn=qw,Xw=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:C,heightTiny:_,heightSmall:y,heightMedium:k,heightLarge:P,actionColor:v,clearColor:T,clearColorHover:E,clearColorPressed:L,placeholderColor:j,placeholderColorDisabled:M,iconColor:K,iconColorDisabled:ne,iconColorHover:H,iconColorPressed:U}=e;return Object.assign(Object.assign({},Cp),{countTextColorDisabled:o,countTextColor:n,heightTiny:_,heightSmall:y,heightMedium:k,heightLarge:P,fontSizeTiny:b,fontSizeSmall:p,fontSizeMedium:m,fontSizeLarge:C,lineHeight:f,lineHeightTextarea:f,borderRadius:g,iconSize:"16px",groupLabelColor:v,groupLabelTextColor:t,textColor:t,textColorDisabled:o,textDecorationColor:t,caretColor:r,placeholderColor:j,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 ${q(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 ${q(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 ${q(u,{alpha:.2})}`,caretColorError:u,clearColor:T,clearColorHover:E,clearColorPressed:L,iconColor:K,iconColorDisabled:ne,iconColorHover:H,iconColorPressed:U,suffixTextColor:t})},Zw={name:"Input",common:se,self:Xw},dn=Zw,kp="n-input";function Yw(e){let t=0;for(const n of e)t++;return t}function ca(e){return e===""||e==null}function Jw(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 et(e,r),{recordCursor:n,restoreCursor:o}}const wh=ce({name:"InputWordCount",setup(e,{slots:t}){const{mergedValueRef:n,maxlengthRef:o,mergedClsPrefixRef:r,countGraphemesRef:i}=Ae(kp),a=N(()=>{const{value:s}=n;return s===null||Array.isArray(s)?0:(i.value||Yw)(s)});return()=>{const{value:s}=o,{value:l}=n;return S("span",{class:`${r.value}-input-word-count`},T2(t.default,{value:l===null||Array.isArray(l)?"":l},()=>[s===void 0?a.value:`${a.value} / ${s}`]))}}}),Qw=te("input",` - max-width: 100%; - cursor: text; - line-height: 1.5; - z-index: auto; - outline: none; - box-sizing: border-box; - position: relative; - display: inline-flex; - border-radius: var(--n-border-radius); - background-color: var(--n-color); - transition: background-color .3s var(--n-bezier); - font-size: var(--n-font-size); - --n-padding-vertical: calc((var(--n-height) - 1.5 * var(--n-font-size)) / 2); -`,[G("input, textarea",` - overflow: hidden; - flex-grow: 1; - position: relative; - `),G("input-el, textarea-el, input-mirror, textarea-mirror, separator, placeholder",` - box-sizing: border-box; - font-size: inherit; - line-height: 1.5; - font-family: inherit; - border: none; - outline: none; - background-color: #0000; - text-align: inherit; - transition: - -webkit-text-fill-color .3s var(--n-bezier), - caret-color .3s var(--n-bezier), - color .3s var(--n-bezier), - text-decoration-color .3s var(--n-bezier); - `),G("input-el, textarea-el",` - -webkit-appearance: none; - scrollbar-width: none; - width: 100%; - min-width: 0; - text-decoration-color: var(--n-text-decoration-color); - color: var(--n-text-color); - caret-color: var(--n-caret-color); - background-color: transparent; - `,[z("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` - width: 0; - height: 0; - display: none; - `),z("&::placeholder",` - color: #0000; - -webkit-text-fill-color: transparent !important; - `),z("&:-webkit-autofill ~",[G("placeholder","display: none;")])]),J("round",[Lt("textarea","border-radius: calc(var(--n-height) / 2);")]),G("placeholder",` - pointer-events: none; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - overflow: hidden; - color: var(--n-placeholder-color); - `,[z("span",` - width: 100%; - display: inline-block; - `)]),J("textarea",[G("placeholder","overflow: visible;")]),Lt("autosize","width: 100%;"),J("autosize",[G("textarea-el, input-el",` - position: absolute; - top: 0; - left: 0; - height: 100%; - `)]),te("input-wrapper",` - overflow: hidden; - display: inline-flex; - flex-grow: 1; - position: relative; - padding-left: var(--n-padding-left); - padding-right: var(--n-padding-right); - `),G("input-mirror",` - padding: 0; - height: var(--n-height); - line-height: var(--n-height); - overflow: hidden; - visibility: hidden; - position: static; - white-space: pre; - pointer-events: none; - `),G("input-el",` - padding: 0; - height: var(--n-height); - line-height: var(--n-height); - `,[z("&[type=password]::-ms-reveal","display: none;"),z("+",[G("placeholder",` - display: flex; - align-items: center; - `)])]),Lt("textarea",[G("placeholder","white-space: nowrap;")]),G("eye",` - display: flex; - align-items: center; - justify-content: center; - transition: color .3s var(--n-bezier); - `),J("textarea","width: 100%;",[te("input-word-count",` - position: absolute; - right: var(--n-padding-right); - bottom: var(--n-padding-vertical); - `),J("resizable",[te("input-wrapper",` - resize: vertical; - min-height: var(--n-height); - `)]),G("textarea-el, textarea-mirror, placeholder",` - height: 100%; - padding-left: 0; - padding-right: 0; - padding-top: var(--n-padding-vertical); - padding-bottom: var(--n-padding-vertical); - word-break: break-word; - display: inline-block; - vertical-align: bottom; - box-sizing: border-box; - line-height: var(--n-line-height-textarea); - margin: 0; - resize: none; - white-space: pre-wrap; - scroll-padding-block-end: var(--n-padding-vertical); - `),G("textarea-mirror",` - width: 100%; - pointer-events: none; - overflow: hidden; - visibility: hidden; - position: static; - white-space: pre-wrap; - overflow-wrap: break-word; - `)]),J("pair",[G("input-el, placeholder","text-align: center;"),G("separator",` - display: flex; - align-items: center; - transition: color .3s var(--n-bezier); - color: var(--n-text-color); - white-space: nowrap; - `,[te("icon",` - color: var(--n-icon-color); - `),te("base-icon",` - color: var(--n-icon-color); - `)])]),J("disabled",` - cursor: not-allowed; - background-color: var(--n-color-disabled); - `,[G("border","border: var(--n-border-disabled);"),G("input-el, textarea-el",` - cursor: not-allowed; - color: var(--n-text-color-disabled); - text-decoration-color: var(--n-text-color-disabled); - `),G("placeholder","color: var(--n-placeholder-color-disabled);"),G("separator","color: var(--n-text-color-disabled);",[te("icon",` - color: var(--n-icon-color-disabled); - `),te("base-icon",` - color: var(--n-icon-color-disabled); - `)]),te("input-word-count",` - color: var(--n-count-text-color-disabled); - `),G("suffix, prefix","color: var(--n-text-color-disabled);",[te("icon",` - color: var(--n-icon-color-disabled); - `),te("internal-icon",` - color: var(--n-icon-color-disabled); - `)])]),Lt("disabled",[G("eye",` - color: var(--n-icon-color); - cursor: pointer; - `,[z("&:hover",` - color: var(--n-icon-color-hover); - `),z("&:active",` - color: var(--n-icon-color-pressed); - `)]),z("&:hover",[G("state-border","border: var(--n-border-hover);")]),J("focus","background-color: var(--n-color-focus);",[G("state-border",` - border: var(--n-border-focus); - box-shadow: var(--n-box-shadow-focus); - `)])]),G("border, state-border",` - box-sizing: border-box; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - pointer-events: none; - border-radius: inherit; - border: var(--n-border); - transition: - box-shadow .3s var(--n-bezier), - border-color .3s var(--n-bezier); - `),G("state-border",` - border-color: #0000; - z-index: 1; - `),G("prefix","margin-right: 4px;"),G("suffix",` - margin-left: 4px; - `),G("suffix, prefix",` - transition: color .3s var(--n-bezier); - flex-wrap: nowrap; - flex-shrink: 0; - line-height: var(--n-height); - white-space: nowrap; - display: inline-flex; - align-items: center; - justify-content: center; - color: var(--n-suffix-text-color); - `,[te("base-loading",` - font-size: var(--n-icon-size); - margin: 0 2px; - color: var(--n-loading-color); - `),te("base-clear",` - font-size: var(--n-icon-size); - `,[G("placeholder",[te("base-icon",` - transition: color .3s var(--n-bezier); - color: var(--n-icon-color); - font-size: var(--n-icon-size); - `)])]),z(">",[te("icon",` - transition: color .3s var(--n-bezier); - color: var(--n-icon-color); - font-size: var(--n-icon-size); - `)]),te("base-icon",` - font-size: var(--n-icon-size); - `)]),te("input-word-count",` - pointer-events: none; - line-height: 1.5; - font-size: .85em; - color: var(--n-count-text-color); - transition: color .3s var(--n-bezier); - margin-left: 4px; - font-variant: tabular-nums; - `),["warning","error"].map(e=>J(`${e}-status`,[Lt("disabled",[te("base-loading",` - color: var(--n-loading-color-${e}) - `),G("input-el, textarea-el",` - caret-color: var(--n-caret-color-${e}); - `),G("state-border",` - border: var(--n-border-${e}); - `),z("&:hover",[G("state-border",` - border: var(--n-border-hover-${e}); - `)]),z("&:focus",` - background-color: var(--n-color-focus-${e}); - `,[G("state-border",` - box-shadow: var(--n-box-shadow-focus-${e}); - border: var(--n-border-focus-${e}); - `)]),J("focus",` - background-color: var(--n-color-focus-${e}); - `,[G("state-border",` - box-shadow: var(--n-box-shadow-focus-${e}); - border: var(--n-border-focus-${e}); - `)])])]))]),e8=te("input",[J("disabled",[G("input-el, textarea-el",` - -webkit-text-fill-color: var(--n-text-color-disabled); - `)])]),t8=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}),n8=ce({name:"Input",props:t8,setup(e){const{mergedClsPrefixRef:t,mergedBorderedRef:n,inlineThemeDisabled:o,mergedRtlRef:r}=at(e),i=Ee("Input","-input",Qw,dn,e,t);xp&&Dr("-input-safari",e8,t);const a=V(null),s=V(null),l=V(null),c=V(null),d=V(null),u=V(null),h=V(null),g=Jw(h),f=V(null),{localeRef:b}=mT("Input"),p=V(e.defaultValue),m=Ue(e,"value"),C=Ic(m,p),_=um(e),{mergedSizeRef:y,mergedDisabledRef:k,mergedStatusRef:P}=_,v=V(!1),T=V(!1),E=V(!1),L=V(!1);let j=null;const M=N(()=>{const{placeholder:D,pair:Y}=e;return Y?Array.isArray(D)?D:D===void 0?["",""]:[D,D]:D===void 0?[b.value.placeholder]:[D]}),K=N(()=>{const{value:D}=E,{value:Y}=C,{value:xe}=M;return!D&&(ca(Y)||Array.isArray(Y)&&ca(Y[0]))&&xe[0]}),ne=N(()=>{const{value:D}=E,{value:Y}=C,{value:xe}=M;return!D&&xe[1]&&(ca(Y)||Array.isArray(Y)&&ca(Y[1]))}),H=wt(()=>e.internalForceFocus||v.value),U=wt(()=>{if(k.value||e.readonly||!e.clearable||!H.value&&!T.value)return!1;const{value:D}=C,{value:Y}=H;return e.pair?!!(Array.isArray(D)&&(D[0]||D[1]))&&(T.value||Y):!!D&&(T.value||Y)}),F=N(()=>{const{showPasswordOn:D}=e;if(D)return D;if(e.showPasswordToggle)return"click"}),re=V(!1),be=N(()=>{const{textDecoration:D}=e;return D?Array.isArray(D)?D.map(Y=>({textDecoration:Y})):[{textDecoration:D}]:["",""]}),ve=V(void 0),_e=()=>{var D,Y;if(e.type==="textarea"){const{autosize:xe}=e;if(xe&&(ve.value=(Y=(D=f.value)===null||D===void 0?void 0:D.$el)===null||Y===void 0?void 0:Y.offsetWidth),!s.value||typeof xe=="boolean")return;const{paddingTop:Je,paddingBottom:ut,lineHeight:Xe}=window.getComputedStyle(s.value),wo=Number(Je.slice(0,-2)),_o=Number(ut.slice(0,-2)),Po=Number(Xe.slice(0,-2)),{value:Fr}=l;if(!Fr)return;if(xe.minRows){const Wr=Math.max(xe.minRows,1),Hs=`${wo+_o+Po*Wr}px`;Fr.style.minHeight=Hs}if(xe.maxRows){const Wr=`${wo+_o+Po*xe.maxRows}px`;Fr.style.maxHeight=Wr}}},Me=N(()=>{const{maxlength:D}=e;return D===void 0?void 0:Number(D)});$t(()=>{const{value:D}=C;Array.isArray(D)||tn(D)});const lt=ln().proxy;function Ze(D,Y){const{onUpdateValue:xe,"onUpdate:value":Je,onInput:ut}=e,{nTriggerFormInput:Xe}=_;xe&&We(xe,D,Y),Je&&We(Je,D,Y),ut&&We(ut,D,Y),p.value=D,Xe()}function Ye(D,Y){const{onChange:xe}=e,{nTriggerFormChange:Je}=_;xe&&We(xe,D,Y),p.value=D,Je()}function Ie(D){const{onBlur:Y}=e,{nTriggerFormBlur:xe}=_;Y&&We(Y,D),xe()}function De(D){const{onFocus:Y}=e,{nTriggerFormFocus:xe}=_;Y&&We(Y,D),xe()}function Ot(D){const{onClear:Y}=e;Y&&We(Y,D)}function Le(D){const{onInputBlur:Y}=e;Y&&We(Y,D)}function ct(D){const{onInputFocus:Y}=e;Y&&We(Y,D)}function At(){const{onDeactivate:D}=e;D&&We(D)}function bt(){const{onActivate:D}=e;D&&We(D)}function I(D){const{onClick:Y}=e;Y&&We(Y,D)}function A(D){const{onWrapperFocus:Y}=e;Y&&We(Y,D)}function O(D){const{onWrapperBlur:Y}=e;Y&&We(Y,D)}function X(){E.value=!0}function Z(D){E.value=!1,D.target===u.value?oe(D,1):oe(D,0)}function oe(D,Y=0,xe="input"){const Je=D.target.value;if(tn(Je),D instanceof InputEvent&&!D.isComposing&&(E.value=!1),e.type==="textarea"){const{value:Xe}=f;Xe&&Xe.syncUnifiedContainer()}if(j=Je,E.value)return;g.recordCursor();const ut=le(Je);if(ut)if(!e.pair)xe==="input"?Ze(Je,{source:Y}):Ye(Je,{source:Y});else{let{value:Xe}=C;Array.isArray(Xe)?Xe=[Xe[0],Xe[1]]:Xe=["",""],Xe[Y]=Je,xe==="input"?Ze(Xe,{source:Y}):Ye(Xe,{source:Y})}lt.$forceUpdate(),ut||Ut(g.restoreCursor)}function le(D){const{countGraphemes:Y,maxlength:xe,minlength:Je}=e;if(Y){let Xe;if(xe!==void 0&&(Xe===void 0&&(Xe=Y(D)),Xe>Number(xe))||Je!==void 0&&(Xe===void 0&&(Xe=Y(D)),Xe{Je.preventDefault(),Ke("mouseup",document,Y)};if(it("mouseup",document,Y),F.value!=="mousedown")return;re.value=!0;const xe=()=>{re.value=!1,Ke("mouseup",document,xe)};it("mouseup",document,xe)}function jt(D){e.onKeyup&&We(e.onKeyup,D)}function zr(D){switch(e.onKeydown&&We(e.onKeydown,D),D.key){case"Escape":ue();break;case"Enter":ee(D);break}}function ee(D){var Y,xe;if(e.passivelyActivated){const{value:Je}=L;if(Je){e.internalDeactivateOnEnter&&ue();return}D.preventDefault(),e.type==="textarea"?(Y=s.value)===null||Y===void 0||Y.focus():(xe=d.value)===null||xe===void 0||xe.focus()}}function ue(){e.passivelyActivated&&(L.value=!1,Ut(()=>{var D;(D=a.value)===null||D===void 0||D.focus()}))}function ke(){var D,Y,xe;k.value||(e.passivelyActivated?(D=a.value)===null||D===void 0||D.focus():((Y=s.value)===null||Y===void 0||Y.focus(),(xe=d.value)===null||xe===void 0||xe.focus()))}function qe(){var D;!((D=a.value)===null||D===void 0)&&D.contains(document.activeElement)&&document.activeElement.blur()}function ft(){var D,Y;(D=s.value)===null||D===void 0||D.select(),(Y=d.value)===null||Y===void 0||Y.select()}function Ht(){k.value||(s.value?s.value.focus():d.value&&d.value.focus())}function yn(){const{value:D}=a;D!=null&&D.contains(document.activeElement)&&D!==document.activeElement&&ue()}function st(D){if(e.type==="textarea"){const{value:Y}=s;Y==null||Y.scrollTo(D)}else{const{value:Y}=d;Y==null||Y.scrollTo(D)}}function tn(D){const{type:Y,pair:xe,autosize:Je}=e;if(!xe&&Je)if(Y==="textarea"){const{value:ut}=l;ut&&(ut.textContent=(D??"")+`\r -`)}else{const{value:ut}=c;ut&&(D?ut.textContent=D:ut.innerHTML=" ")}}function To(){_e()}const pd=V({top:"0"});function Q0(D){var Y;const{scrollTop:xe}=D.target;pd.value.top=`${-xe}px`,(Y=f.value)===null||Y===void 0||Y.syncUnifiedContainer()}let Wi=null;co(()=>{const{autosize:D,type:Y}=e;D&&Y==="textarea"?Wi=et(C,xe=>{!Array.isArray(xe)&&xe!==j&&tn(xe)}):Wi==null||Wi()});let ji=null;co(()=>{e.type==="textarea"?ji=et(C,D=>{var Y;!Array.isArray(D)&&D!==j&&((Y=f.value)===null||Y===void 0||Y.syncUnifiedContainer())}):ji==null||ji()}),je(kp,{mergedValueRef:C,maxlengthRef:Me,mergedClsPrefixRef:t,countGraphemesRef:Ue(e,"countGraphemes")});const e1={wrapperElRef:a,inputElRef:d,textareaElRef:s,isCompositing:E,clear:me,focus:ke,blur:qe,select:ft,deactivate:yn,activate:Ht,scrollTo:st},t1=xo("Input",r,t),bd=N(()=>{const{value:D}=y,{common:{cubicBezierEaseInOut:Y},self:{color:xe,borderRadius:Je,textColor:ut,caretColor:Xe,caretColorError:wo,caretColorWarning:_o,textDecorationColor:Po,border:Fr,borderDisabled:Wr,borderHover:Hs,borderFocus:n1,placeholderColor:o1,placeholderColorDisabled:r1,lineHeightTextarea:i1,colorDisabled:a1,colorFocus:s1,textColorDisabled:l1,boxShadowFocus:c1,iconSize:d1,colorFocusWarning:u1,boxShadowFocusWarning:h1,borderWarning:f1,borderFocusWarning:g1,borderHoverWarning:m1,colorFocusError:p1,boxShadowFocusError:b1,borderError:v1,borderFocusError:y1,borderHoverError:x1,clearSize:C1,clearColor:k1,clearColorHover:S1,clearColorPressed:T1,iconColor:w1,iconColorDisabled:_1,suffixTextColor:P1,countTextColor:A1,countTextColorDisabled:E1,iconColorHover:I1,iconColorPressed:R1,loadingColor:M1,loadingColorError:L1,loadingColorWarning:D1,[ge("padding",D)]:$1,[ge("fontSize",D)]:O1,[ge("height",D)]:H1}}=i.value,{left:B1,right:N1}=is($1);return{"--n-bezier":Y,"--n-count-text-color":A1,"--n-count-text-color-disabled":E1,"--n-color":xe,"--n-font-size":O1,"--n-border-radius":Je,"--n-height":H1,"--n-padding-left":B1,"--n-padding-right":N1,"--n-text-color":ut,"--n-caret-color":Xe,"--n-text-decoration-color":Po,"--n-border":Fr,"--n-border-disabled":Wr,"--n-border-hover":Hs,"--n-border-focus":n1,"--n-placeholder-color":o1,"--n-placeholder-color-disabled":r1,"--n-icon-size":d1,"--n-line-height-textarea":i1,"--n-color-disabled":a1,"--n-color-focus":s1,"--n-text-color-disabled":l1,"--n-box-shadow-focus":c1,"--n-loading-color":M1,"--n-caret-color-warning":_o,"--n-color-focus-warning":u1,"--n-box-shadow-focus-warning":h1,"--n-border-warning":f1,"--n-border-focus-warning":g1,"--n-border-hover-warning":m1,"--n-loading-color-warning":D1,"--n-caret-color-error":wo,"--n-color-focus-error":p1,"--n-box-shadow-focus-error":b1,"--n-border-error":v1,"--n-border-focus-error":y1,"--n-border-hover-error":x1,"--n-loading-color-error":L1,"--n-clear-color":k1,"--n-clear-size":C1,"--n-clear-color-hover":S1,"--n-clear-color-pressed":T1,"--n-icon-color":w1,"--n-icon-color-hover":I1,"--n-icon-color-pressed":R1,"--n-icon-color-disabled":_1,"--n-suffix-text-color":P1}}),ir=o?Pt("input",N(()=>{const{value:D}=y;return D[0]}),bd,e):void 0;return Object.assign(Object.assign({},e1),{wrapperElRef:a,inputElRef:d,inputMirrorElRef:c,inputEl2Ref:u,textareaElRef:s,textareaMirrorElRef:l,textareaScrollbarInstRef:f,rtlEnabled:t1,uncontrolledValue:p,mergedValue:C,passwordVisible:re,mergedPlaceholder:M,showPlaceholder1:K,showPlaceholder2:ne,mergedFocus:H,isComposing:E,activated:L,showClearButton:U,mergedSize:y,mergedDisabled:k,textDecorationStyle:be,mergedClsPrefix:t,mergedBordered:n,mergedShowPasswordOn:F,placeholderStyle:pd,mergedStatus:P,textAreaScrollContainerWidth:ve,handleTextAreaScroll:Q0,handleCompositionStart:X,handleCompositionEnd:Z,handleInput:oe,handleInputBlur:x,handleInputFocus:w,handleWrapperBlur:R,handleWrapperFocus:W,handleMouseEnter:Be,handleMouseLeave:dt,handleMouseDown:Ce,handleChange:Q,handleClick:$,handleClear:B,handlePasswordToggleClick:Et,handlePasswordToggleMousedown:On,handleWrapperKeydown:zr,handleWrapperKeyup:jt,handleTextAreaMirrorResize:To,getTextareaScrollContainer:()=>s.value,mergedTheme:i,cssVars:o?void 0:bd,themeClass:ir==null?void 0:ir.themeClass,onRender:ir==null?void 0:ir.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`},Tt(l.prefix,c=>c&&S("div",{class:`${n}-input__prefix`},c)),i==="textarea"?S(Ss,{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(Oe,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(Da,{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&&Tt(l.suffix,c=>c||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?S("div",{class:`${n}-input__suffix`},[Tt(l["clear-icon-placeholder"],d=>(this.clearable||d)&&S(Gl,{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(Ew,{clsPrefix:n,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?c:null,this.showCount&&this.type!=="textarea"?S(wh,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?Vo(l["password-visible-icon"],()=>[S(go,{clsPrefix:n},{default:()=>S(vT,null)})]):Vo(l["password-invisible-icon"],()=>[S(go,{clsPrefix:n},{default:()=>S(yT,null)})])):null]):null)),this.pair?S("span",{class:`${n}-input__separator`},Vo(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),Tt(l.suffix,c=>(this.clearable||c)&&S("div",{class:`${n}-input__suffix`},[this.clearable&&S(Gl,{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(wh,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 Sp(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const o8={name:"AutoComplete",common:se,peers:{InternalSelectMenu:Bi,Input:dn},self:Sp},r8=o8,i8={name:"AutoComplete",common:ae,peers:{InternalSelectMenu:Ni,Input:vn},self:Sp},a8=i8,Tp=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:fe(o,n),colorModal:fe(d,n),colorPopover:fe(u,n)}},s8={name:"Avatar",common:se,self:Tp},wp=s8,l8={name:"Avatar",common:ae,self:Tp},_p=l8,Pp=()=>({gap:"-12px"}),c8={name:"AvatarGroup",common:se,peers:{Avatar:wp},self:Pp},d8=c8,u8={name:"AvatarGroup",common:ae,peers:{Avatar:_p},self:Pp},h8=u8,Ap={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"},f8={name:"BackTop",common:ae,self(e){const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Ap),{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)"})}},g8=f8,m8=e=>{const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Ap),{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)"})},p8={name:"BackTop",common:se,self:m8},b8=p8,v8={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}}},y8=v8,x8=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}},C8={name:"Badge",common:se,self:x8},k8=C8,S8={fontWeightActive:"400"},Ep=e=>{const{fontSize:t,textColor3:n,textColor2:o,borderRadius:r,buttonColor2Hover:i,buttonColor2Pressed:a}=e;return Object.assign(Object.assign({},S8),{fontSize:t,itemLineHeight:"1.25",itemTextColor:n,itemTextColorHover:o,itemTextColorPressed:o,itemTextColorActive:o,itemBorderRadius:r,itemColorHover:i,itemColorPressed:a,separatorColor:n})},T8={name:"Breadcrumb",common:se,self:Ep},w8=T8,_8={name:"Breadcrumb",common:ae,self:Ep},P8=_8;function Ro(e){return fe(e,[255,255,255,.16])}function da(e){return fe(e,[0,0,0,.12])}const A8="n-button-group",E8={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"},Ip=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:C,infoColorHover:_,infoColorPressed:y,successColor:k,successColorHover:P,successColorPressed:v,warningColor:T,warningColorHover:E,warningColorPressed:L,errorColor:j,errorColorHover:M,errorColorPressed:K,fontWeight:ne,buttonColor2:H,buttonColor2Hover:U,buttonColor2Pressed:F,fontWeightStrong:re}=e;return Object.assign(Object.assign({},E8),{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:H,colorSecondaryHover:U,colorSecondaryPressed:F,colorTertiary:H,colorTertiaryHover:U,colorTertiaryPressed:F,colorQuaternary:"#0000",colorQuaternaryHover:U,colorQuaternaryPressed:F,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:C,colorHoverInfo:_,colorPressedInfo:y,colorFocusInfo:_,colorDisabledInfo:C,textColorInfo:m,textColorHoverInfo:m,textColorPressedInfo:m,textColorFocusInfo:m,textColorDisabledInfo:m,textColorTextInfo:C,textColorTextHoverInfo:_,textColorTextPressedInfo:y,textColorTextFocusInfo:_,textColorTextDisabledInfo:u,textColorGhostInfo:C,textColorGhostHoverInfo:_,textColorGhostPressedInfo:y,textColorGhostFocusInfo:_,textColorGhostDisabledInfo:C,borderInfo:`1px solid ${C}`,borderHoverInfo:`1px solid ${_}`,borderPressedInfo:`1px solid ${y}`,borderFocusInfo:`1px solid ${_}`,borderDisabledInfo:`1px solid ${C}`,rippleColorInfo:C,colorSuccess:k,colorHoverSuccess:P,colorPressedSuccess:v,colorFocusSuccess:P,colorDisabledSuccess:k,textColorSuccess:m,textColorHoverSuccess:m,textColorPressedSuccess:m,textColorFocusSuccess:m,textColorDisabledSuccess:m,textColorTextSuccess:k,textColorTextHoverSuccess:P,textColorTextPressedSuccess:v,textColorTextFocusSuccess:P,textColorTextDisabledSuccess:u,textColorGhostSuccess:k,textColorGhostHoverSuccess:P,textColorGhostPressedSuccess:v,textColorGhostFocusSuccess:P,textColorGhostDisabledSuccess:k,borderSuccess:`1px solid ${k}`,borderHoverSuccess:`1px solid ${P}`,borderPressedSuccess:`1px solid ${v}`,borderFocusSuccess:`1px solid ${P}`,borderDisabledSuccess:`1px solid ${k}`,rippleColorSuccess:k,colorWarning:T,colorHoverWarning:E,colorPressedWarning:L,colorFocusWarning:E,colorDisabledWarning:T,textColorWarning:m,textColorHoverWarning:m,textColorPressedWarning:m,textColorFocusWarning:m,textColorDisabledWarning:m,textColorTextWarning:T,textColorTextHoverWarning:E,textColorTextPressedWarning:L,textColorTextFocusWarning:E,textColorTextDisabledWarning:u,textColorGhostWarning:T,textColorGhostHoverWarning:E,textColorGhostPressedWarning:L,textColorGhostFocusWarning:E,textColorGhostDisabledWarning:T,borderWarning:`1px solid ${T}`,borderHoverWarning:`1px solid ${E}`,borderPressedWarning:`1px solid ${L}`,borderFocusWarning:`1px solid ${E}`,borderDisabledWarning:`1px solid ${T}`,rippleColorWarning:T,colorError:j,colorHoverError:M,colorPressedError:K,colorFocusError:M,colorDisabledError:j,textColorError:m,textColorHoverError:m,textColorPressedError:m,textColorFocusError:m,textColorDisabledError:m,textColorTextError:j,textColorTextHoverError:M,textColorTextPressedError:K,textColorTextFocusError:M,textColorTextDisabledError:u,textColorGhostError:j,textColorGhostHoverError:M,textColorGhostPressedError:K,textColorGhostFocusError:M,textColorGhostDisabledError:j,borderError:`1px solid ${j}`,borderHoverError:`1px solid ${M}`,borderPressedError:`1px solid ${K}`,borderFocusError:`1px solid ${M}`,borderDisabledError:`1px solid ${j}`,rippleColorError:j,waveOpacity:"0.6",fontWeight:ne,fontWeightStrong:re})},I8={name:"Button",common:se,self:Ip},qt=I8,R8={name:"Button",common:ae,self(e){const t=Ip(e);return t.waveOpacity="0.8",t.colorOpacitySecondary="0.16",t.colorOpacitySecondaryHover="0.2",t.colorOpacitySecondaryPressed="0.12",t}},en=R8,M8=z([te("button",` - margin: 0; - font-weight: var(--n-font-weight); - line-height: 1; - font-family: inherit; - padding: var(--n-padding); - height: var(--n-height); - font-size: var(--n-font-size); - border-radius: var(--n-border-radius); - color: var(--n-text-color); - background-color: var(--n-color); - width: var(--n-width); - white-space: nowrap; - outline: none; - position: relative; - z-index: auto; - border: none; - display: inline-flex; - flex-wrap: nowrap; - flex-shrink: 0; - align-items: center; - justify-content: center; - user-select: none; - -webkit-user-select: none; - text-align: center; - cursor: pointer; - text-decoration: none; - transition: - color .3s var(--n-bezier), - background-color .3s var(--n-bezier), - opacity .3s var(--n-bezier), - border-color .3s var(--n-bezier); - `,[J("color",[G("border",{borderColor:"var(--n-border-color)"}),J("disabled",[G("border",{borderColor:"var(--n-border-color-disabled)"})]),Lt("disabled",[z("&:focus",[G("state-border",{borderColor:"var(--n-border-color-focus)"})]),z("&:hover",[G("state-border",{borderColor:"var(--n-border-color-hover)"})]),z("&:active",[G("state-border",{borderColor:"var(--n-border-color-pressed)"})]),J("pressed",[G("state-border",{borderColor:"var(--n-border-color-pressed)"})])])]),J("disabled",{backgroundColor:"var(--n-color-disabled)",color:"var(--n-text-color-disabled)"},[G("border",{border:"var(--n-border-disabled)"})]),Lt("disabled",[z("&:focus",{backgroundColor:"var(--n-color-focus)",color:"var(--n-text-color-focus)"},[G("state-border",{border:"var(--n-border-focus)"})]),z("&:hover",{backgroundColor:"var(--n-color-hover)",color:"var(--n-text-color-hover)"},[G("state-border",{border:"var(--n-border-hover)"})]),z("&:active",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[G("state-border",{border:"var(--n-border-pressed)"})]),J("pressed",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[G("state-border",{border:"var(--n-border-pressed)"})])]),J("loading","cursor: wait;"),te("base-wave",` - pointer-events: none; - top: 0; - right: 0; - bottom: 0; - left: 0; - animation-iteration-count: 1; - animation-duration: var(--n-ripple-duration); - animation-timing-function: var(--n-bezier-ease-out), var(--n-bezier-ease-out); - `,[J("active",{zIndex:1,animationName:"button-wave-spread, button-wave-opacity"})]),Jo&&"MozBoxSizing"in document.createElement("div").style?z("&::moz-focus-inner",{border:0}):null,G("border, state-border",` - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - border-radius: inherit; - transition: border-color .3s var(--n-bezier); - pointer-events: none; - `),G("border",{border:"var(--n-border)"}),G("state-border",{border:"var(--n-border)",borderColor:"#0000",zIndex:1}),G("icon",` - margin: var(--n-icon-margin); - margin-left: 0; - height: var(--n-icon-size); - width: var(--n-icon-size); - max-width: var(--n-icon-size); - font-size: var(--n-icon-size); - position: relative; - flex-shrink: 0; - `,[te("icon-slot",` - height: var(--n-icon-size); - width: var(--n-icon-size); - position: absolute; - left: 0; - top: 50%; - transform: translateY(-50%); - display: flex; - align-items: center; - justify-content: center; - `,[Ei({top:"50%",originalTransform:"translateY(-50%)"})]),Lw()]),G("content",` - display: flex; - align-items: center; - flex-wrap: nowrap; - min-width: 0; - `,[z("~",[G("icon",{margin:"var(--n-icon-margin)",marginRight:0})])]),J("block",` - display: flex; - width: 100%; - `),J("dashed",[G("border, state-border",{borderStyle:"dashed !important"})]),J("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),z("@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)"}}),z("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]),L8=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:!xp}}),D8=ce({name:"Button",props:L8,setup(e){const t=V(null),n=V(null),o=V(!1),r=wt(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),i=Ae(A8,{}),{mergedSizeRef:a}=um({},{defaultSize:"medium",mergedSize:y=>{const{size:k}=e;if(k)return k;const{size:P}=i;if(P)return P;const{mergedSize:v}=y||{};return v?v.value:"medium"}}),s=N(()=>e.focusable&&!e.disabled),l=y=>{var k;s.value||y.preventDefault(),!e.nativeFocusBehavior&&(y.preventDefault(),!e.disabled&&s.value&&((k=t.value)===null||k===void 0||k.focus({preventScroll:!0})))},c=y=>{var k;if(!e.disabled&&!e.loading){const{onClick:P}=e;P&&We(P,y),e.text||(k=n.value)===null||k===void 0||k.play()}},d=y=>{switch(y.key){case"Enter":if(!e.keyboard)return;o.value=!1}},u=y=>{switch(y.key){case"Enter":if(!e.keyboard||e.loading){y.preventDefault();return}o.value=!0}},h=()=>{o.value=!1},{inlineThemeDisabled:g,mergedClsPrefixRef:f,mergedRtlRef:b}=at(e),p=Ee("Button","-button",M8,qt,e,f),m=xo("Button",b,f),C=N(()=>{const y=p.value,{common:{cubicBezierEaseInOut:k,cubicBezierEaseOut:P},self:v}=y,{rippleDuration:T,opacityDisabled:E,fontWeight:L,fontWeightStrong:j}=v,M=a.value,{dashed:K,type:ne,ghost:H,text:U,color:F,round:re,circle:be,textColor:ve,secondary:_e,tertiary:Me,quaternary:lt,strong:Ze}=e,Ye={"font-weight":Ze?j:L};let Ie={"--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 De=ne==="tertiary",Ot=ne==="default",Le=De?"default":ne;if(U){const x=ve||F;Ie={"--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":x||v[ge("textColorText",Le)],"--n-text-color-hover":x?Ro(x):v[ge("textColorTextHover",Le)],"--n-text-color-pressed":x?da(x):v[ge("textColorTextPressed",Le)],"--n-text-color-focus":x?Ro(x):v[ge("textColorTextHover",Le)],"--n-text-color-disabled":x||v[ge("textColorTextDisabled",Le)]}}else if(H||K){const x=ve||F;Ie={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":F||v[ge("rippleColor",Le)],"--n-text-color":x||v[ge("textColorGhost",Le)],"--n-text-color-hover":x?Ro(x):v[ge("textColorGhostHover",Le)],"--n-text-color-pressed":x?da(x):v[ge("textColorGhostPressed",Le)],"--n-text-color-focus":x?Ro(x):v[ge("textColorGhostHover",Le)],"--n-text-color-disabled":x||v[ge("textColorGhostDisabled",Le)]}}else if(_e){const x=Ot?v.textColor:De?v.textColorTertiary:v[ge("color",Le)],w=F||x,R=ne!=="default"&&ne!=="tertiary";Ie={"--n-color":R?q(w,{alpha:Number(v.colorOpacitySecondary)}):v.colorSecondary,"--n-color-hover":R?q(w,{alpha:Number(v.colorOpacitySecondaryHover)}):v.colorSecondaryHover,"--n-color-pressed":R?q(w,{alpha:Number(v.colorOpacitySecondaryPressed)}):v.colorSecondaryPressed,"--n-color-focus":R?q(w,{alpha:Number(v.colorOpacitySecondaryHover)}):v.colorSecondaryHover,"--n-color-disabled":v.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(Me||lt){const x=Ot?v.textColor:De?v.textColorTertiary:v[ge("color",Le)],w=F||x;Me?(Ie["--n-color"]=v.colorTertiary,Ie["--n-color-hover"]=v.colorTertiaryHover,Ie["--n-color-pressed"]=v.colorTertiaryPressed,Ie["--n-color-focus"]=v.colorSecondaryHover,Ie["--n-color-disabled"]=v.colorTertiary):(Ie["--n-color"]=v.colorQuaternary,Ie["--n-color-hover"]=v.colorQuaternaryHover,Ie["--n-color-pressed"]=v.colorQuaternaryPressed,Ie["--n-color-focus"]=v.colorQuaternaryHover,Ie["--n-color-disabled"]=v.colorQuaternary),Ie["--n-ripple-color"]="#0000",Ie["--n-text-color"]=w,Ie["--n-text-color-hover"]=w,Ie["--n-text-color-pressed"]=w,Ie["--n-text-color-focus"]=w,Ie["--n-text-color-disabled"]=w}else Ie={"--n-color":F||v[ge("color",Le)],"--n-color-hover":F?Ro(F):v[ge("colorHover",Le)],"--n-color-pressed":F?da(F):v[ge("colorPressed",Le)],"--n-color-focus":F?Ro(F):v[ge("colorFocus",Le)],"--n-color-disabled":F||v[ge("colorDisabled",Le)],"--n-ripple-color":F||v[ge("rippleColor",Le)],"--n-text-color":ve||(F?v.textColorPrimary:De?v.textColorTertiary:v[ge("textColor",Le)]),"--n-text-color-hover":ve||(F?v.textColorHoverPrimary:v[ge("textColorHover",Le)]),"--n-text-color-pressed":ve||(F?v.textColorPressedPrimary:v[ge("textColorPressed",Le)]),"--n-text-color-focus":ve||(F?v.textColorFocusPrimary:v[ge("textColorFocus",Le)]),"--n-text-color-disabled":ve||(F?v.textColorDisabledPrimary:v[ge("textColorDisabled",Le)])};let ct={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};U?ct={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:ct={"--n-border":v[ge("border",Le)],"--n-border-hover":v[ge("borderHover",Le)],"--n-border-pressed":v[ge("borderPressed",Le)],"--n-border-focus":v[ge("borderFocus",Le)],"--n-border-disabled":v[ge("borderDisabled",Le)]};const{[ge("height",M)]:At,[ge("fontSize",M)]:bt,[ge("padding",M)]:I,[ge("paddingRound",M)]:A,[ge("iconSize",M)]:O,[ge("borderRadius",M)]:X,[ge("iconMargin",M)]:Z,waveOpacity:oe}=v,le={"--n-width":be&&!U?At:"initial","--n-height":U?"initial":At,"--n-font-size":bt,"--n-padding":be||U?"initial":re?A:I,"--n-icon-size":O,"--n-icon-margin":Z,"--n-border-radius":U?"initial":be||re?At:X};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":k,"--n-bezier-ease-out":P,"--n-ripple-duration":T,"--n-opacity-disabled":E,"--n-wave-opacity":oe},Ye),Ie),ct),le)}),_=g?Pt("button",N(()=>{let y="";const{dashed:k,type:P,ghost:v,text:T,color:E,round:L,circle:j,textColor:M,secondary:K,tertiary:ne,quaternary:H,strong:U}=e;k&&(y+="a"),v&&(y+="b"),T&&(y+="c"),L&&(y+="d"),j&&(y+="e"),K&&(y+="f"),ne&&(y+="g"),H&&(y+="h"),U&&(y+="i"),E&&(y+="j"+lu(E)),M&&(y+="k"+lu(M));const{value:F}=a;return y+="l"+F[0],y+="m"+P[0],y}),C,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:N(()=>{const{color:y}=e;if(!y)return null;const k=Ro(y);return{"--n-border-color":y,"--n-border-color-hover":k,"--n-border-color-pressed":da(y),"--n-border-color-focus":k,"--n-border-color-disabled":y}}),cssVars:g?void 0:C,themeClass:_==null?void 0:_.themeClass,onRender:_==null?void 0:_.onRender}},render(){const{mergedClsPrefix:e,tag:t,onRender:n}=this;n==null||n();const o=Tt(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(ep,{width:!0},{default:()=>Tt(this.$slots.icon,r=>(this.loading||this.renderIcon||r)&&S("span",{class:`${e}-button__icon`,style:{margin:El(this.$slots.default)?"0":""}},S(Cs,null,{default:()=>this.loading?S(Uc,{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(mw,{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)}}),Wa=D8,$8={titleFontSize:"22px"},Rp=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({},$8),{borderRadius:t,borderColor:fe(h,s),borderColorModal:fe(g,s),borderColorPopover:fe(f,s),textColor:r,titleFontWeight:l,titleTextColor:i,dayTextColor:a,fontSize:n,lineHeight:o,dateColorCurrent:c,dateTextColorCurrent:d,cellColorHover:fe(h,u),cellColorHoverModal:fe(g,u),cellColorHoverPopover:fe(f,u),cellColor:h,cellColorModal:g,cellColorPopover:f,barColor:c})},O8={name:"Calendar",common:se,peers:{Button:qt},self:Rp},H8=O8,B8={name:"Calendar",common:ae,peers:{Button:en},self:Rp},N8=B8,Mp=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}},z8={name:"ColorPicker",common:se,peers:{Input:dn,Button:qt},self:Mp},F8=z8,W8={name:"ColorPicker",common:ae,peers:{Input:vn,Button:en},self:Mp},j8=W8,G8={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"},Lp=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:C}=e;return Object.assign(Object.assign({},G8),{lineHeight:o,color:i,colorModal:b,colorPopover:m,colorTarget:t,colorEmbedded:C,colorEmbeddedModal:C,colorEmbeddedPopover:C,textColor:a,titleTextColor:s,borderColor:l,actionColor:C,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})},V8={name:"Card",common:se,self:Lp},Yc=V8,U8={name:"Card",common:ae,self(e){const t=Lp(e),{cardColor:n,modalColor:o,popoverColor:r}=e;return t.colorEmbedded=n,t.colorEmbeddedModal=o,t.colorEmbeddedPopover=r,t}},Dp=U8,K8=z([te("card",` - font-size: var(--n-font-size); - line-height: var(--n-line-height); - display: flex; - flex-direction: column; - width: 100%; - box-sizing: border-box; - position: relative; - border-radius: var(--n-border-radius); - background-color: var(--n-color); - color: var(--n-text-color); - word-break: break-word; - transition: - color .3s var(--n-bezier), - background-color .3s var(--n-bezier), - box-shadow .3s var(--n-bezier), - border-color .3s var(--n-bezier); - `,[Ng({background:"var(--n-color-modal)"}),J("hoverable",[z("&:hover","box-shadow: var(--n-box-shadow);")]),J("content-segmented",[z(">",[G("content",{paddingTop:"var(--n-padding-bottom)"})])]),J("content-soft-segmented",[z(">",[G("content",` - margin: 0 var(--n-padding-left); - padding: var(--n-padding-bottom) 0; - `)])]),J("footer-segmented",[z(">",[G("footer",{paddingTop:"var(--n-padding-bottom)"})])]),J("footer-soft-segmented",[z(">",[G("footer",` - padding: var(--n-padding-bottom) 0; - margin: 0 var(--n-padding-left); - `)])]),z(">",[te("card-header",` - box-sizing: border-box; - display: flex; - align-items: center; - font-size: var(--n-title-font-size); - padding: - var(--n-padding-top) - var(--n-padding-left) - var(--n-padding-bottom) - var(--n-padding-left); - `,[G("main",` - font-weight: var(--n-title-font-weight); - transition: color .3s var(--n-bezier); - flex: 1; - min-width: 0; - color: var(--n-title-text-color); - `),G("extra",` - display: flex; - align-items: center; - font-size: var(--n-font-size); - font-weight: 400; - transition: color .3s var(--n-bezier); - color: var(--n-text-color); - `),G("close",` - margin: 0 0 0 8px; - transition: - background-color .3s var(--n-bezier), - color .3s var(--n-bezier); - `)]),G("action",` - box-sizing: border-box; - transition: - background-color .3s var(--n-bezier), - border-color .3s var(--n-bezier); - background-clip: padding-box; - background-color: var(--n-action-color); - `),G("content","flex: 1; min-width: 0;"),G("content, footer",` - box-sizing: border-box; - padding: 0 var(--n-padding-left) var(--n-padding-bottom) var(--n-padding-left); - font-size: var(--n-font-size); - `,[z("&:first-child",{paddingTop:"var(--n-padding-bottom)"})]),G("action",` - background-color: var(--n-action-color); - padding: var(--n-padding-bottom) var(--n-padding-left); - border-bottom-left-radius: var(--n-border-radius); - border-bottom-right-radius: var(--n-border-radius); - `)]),te("card-cover",` - overflow: hidden; - width: 100%; - border-radius: var(--n-border-radius) var(--n-border-radius) 0 0; - `,[z("img",` - display: block; - width: 100%; - `)]),J("bordered",` - border: 1px solid var(--n-border-color); - `,[z("&:target","border-color: var(--n-color-target);")]),J("action-segmented",[z(">",[G("action",[z("&:not(:first-child)",{borderTop:"1px solid var(--n-border-color)"})])])]),J("content-segmented, content-soft-segmented",[z(">",[G("content",{transition:"border-color 0.3s var(--n-bezier)"},[z("&:not(:first-child)",{borderTop:"1px solid var(--n-border-color)"})])])]),J("footer-segmented, footer-soft-segmented",[z(">",[G("footer",{transition:"border-color 0.3s var(--n-bezier)"},[z("&:not(:first-child)",{borderTop:"1px solid var(--n-border-color)"})])])]),J("embedded",` - background-color: var(--n-color-embedded); - `)]),Bg(te("card",` - background: var(--n-color-modal); - `,[J("embedded",` - background-color: var(--n-color-embedded-modal); - `)])),K2(te("card",` - background: var(--n-color-popover); - `,[J("embedded",` - background-color: var(--n-color-embedded-popover); - `)]))]),Jc={title:String,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"}},q8=ss(Jc),X8=Object.assign(Object.assign({},Ee.props),Jc),Z8=ce({name:"Card",props:X8,setup(e){const t=()=>{const{onClose:c}=e;c&&We(c)},{inlineThemeDisabled:n,mergedClsPrefixRef:o,mergedRtlRef:r}=at(e),i=Ee("Card","-card",K8,Yc,e,o),a=xo("Card",r,o),s=N(()=>{const{size:c}=e,{self:{color:d,colorModal:u,colorTarget:h,textColor:g,titleTextColor:f,titleFontWeight:b,borderColor:p,actionColor:m,borderRadius:C,lineHeight:_,closeIconColor:y,closeIconColorHover:k,closeIconColorPressed:P,closeColorHover:v,closeColorPressed:T,closeBorderRadius:E,closeIconSize:L,closeSize:j,boxShadow:M,colorPopover:K,colorEmbedded:ne,colorEmbeddedModal:H,colorEmbeddedPopover:U,[ge("padding",c)]:F,[ge("fontSize",c)]:re,[ge("titleFontSize",c)]:be},common:{cubicBezierEaseInOut:ve}}=i.value,{top:_e,left:Me,bottom:lt}=is(F);return{"--n-bezier":ve,"--n-border-radius":C,"--n-color":d,"--n-color-modal":u,"--n-color-popover":K,"--n-color-embedded":ne,"--n-color-embedded-modal":H,"--n-color-embedded-popover":U,"--n-color-target":h,"--n-text-color":g,"--n-line-height":_,"--n-action-color":m,"--n-title-text-color":f,"--n-title-font-weight":b,"--n-close-icon-color":y,"--n-close-icon-color-hover":k,"--n-close-icon-color-pressed":P,"--n-close-color-hover":v,"--n-close-color-pressed":T,"--n-border-color":p,"--n-box-shadow":M,"--n-padding-top":_e,"--n-padding-bottom":lt,"--n-padding-left":Me,"--n-font-size":re,"--n-title-font-size":be,"--n-close-size":j,"--n-close-icon-size":L,"--n-close-border-radius":E}}),l=n?Pt("card",N(()=>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},Tt(l.cover,c=>c&&S("div",{class:`${o}-card-cover`,role:"none"},c)),Tt(l.header,c=>c||this.title||this.closable?S("div",{class:[`${o}-card-header`,this.headerClass],style:this.headerStyle},S("div",{class:`${o}-card-header__main`,role:"heading"},c||this.title),Tt(l["header-extra"],d=>d&&S("div",{class:[`${o}-card-header__extra`,this.headerExtraClass],style:this.headerExtraStyle},d)),this.closable?S(ks,{clsPrefix:o,class:`${o}-card-header__close`,onClick:this.handleCloseClick,absolute:!0}):null):null),Tt(l.default,c=>c&&S("div",{class:[`${o}-card__content`,this.contentClass],style:this.contentStyle,role:"none"},c)),Tt(l.footer,c=>c&&[S("div",{class:[`${o}-card__footer`,this.footerClass],style:this.footerStyle,role:"none"},c)]),Tt(l.action,c=>c&&S("div",{class:`${o}-card__action`,role:"none"},c)))}}),$p=e=>({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"}),Y8={name:"Carousel",common:se,self:$p},J8=Y8,Q8={name:"Carousel",common:ae,self:$p},e9=Q8,t9={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"},Op=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({},t9),{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 ${q(l,{alpha:.3})}`,textColor:c,textColorDisabled:a})},n9={name:"Checkbox",common:se,self:Op},Or=n9,o9={name:"Checkbox",common:ae,self(e){const{cardColor:t}=e,n=Op(e);return n.color="#0000",n.checkMarkColor=t,n}},Hr=o9,Hp=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"}},r9={name:"Cascader",common:se,peers:{InternalSelectMenu:Bi,InternalSelection:Xc,Scrollbar:Kt,Checkbox:Or,Empty:qn},self:Hp},i9=r9,a9={name:"Cascader",common:ae,peers:{InternalSelectMenu:Ni,InternalSelection:Zc,Scrollbar:Qt,Checkbox:Hr,Empty:qn},self:Hp},s9=a9,l9={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}}},Bp=l9,c9=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}},d9={name:"Code",common:se,self:c9},Np=d9,zp=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"}},u9={name:"Collapse",common:se,self:zp},h9=u9,f9={name:"Collapse",common:ae,self:zp},g9=f9,Fp=e=>{const{cubicBezierEaseInOut:t}=e;return{bezier:t}},m9={name:"CollapseTransition",common:se,self:Fp},p9=m9,b9={name:"CollapseTransition",common:ae,self:Fp},v9=b9,y9={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:{type:String,default:Ai},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:()=>(wr("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},x9=ce({name:"ConfigProvider",alias:["App"],props:y9,setup(e){const t=Ae(Gn,null),n=N(()=>{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=N(()=>{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:ei({},b,f)}}}),r=wt(()=>{const{namespace:f}=e;return f===void 0?t==null?void 0:t.mergedNamespaceRef.value:f}),i=wt(()=>{const{bordered:f}=e;return f===void 0?t==null?void 0:t.mergedBorderedRef.value:f}),a=N(()=>{const{icons:f}=e;return f===void 0?t==null?void 0:t.mergedIconsRef.value:f}),s=N(()=>{const{componentOptions:f}=e;return f!==void 0?f:t==null?void 0:t.mergedComponentPropsRef.value}),l=N(()=>{const{clsPrefix:f}=e;return f!==void 0?f:t?t.mergedClsPrefixRef.value:Ai}),c=N(()=>{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]=hi(m),(f=m.peers)===null||f===void 0||f.forEach(C=>{C.name in p||(p[C.name]=hi(C))});return p}),d=N(()=>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=N(()=>{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}-${ki(JSON.stringify(o.value))}`:m:p?ki(JSON.stringify(o.value)):""});return je(Gn,{mergedThemeHashRef:g,mergedBreakpointsRef:d,mergedRtlRef:c,mergedIconsRef:a,mergedComponentPropsRef:s,mergedBorderedRef:i,mergedNamespaceRef:r,mergedClsPrefixRef:l,mergedLocaleRef:N(()=>{const{locale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedLocaleRef.value:f}),mergedDateLocaleRef:N(()=>{const{dateLocale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedDateLocaleRef.value:f}),mergedHljsRef:N(()=>{const{hljs:f}=e;return f===void 0?t==null?void 0:t.mergedHljsRef.value:f}),mergedKatexRef:N(()=>{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||Ai}-config-provider`},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),C9={name:"Popselect",common:ae,peers:{Popover:rr,InternalSelectMenu:Ni}},Wp=C9;function k9(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const S9={name:"Popselect",common:se,peers:{Popover:Co,InternalSelectMenu:Bi},self:k9},jp=S9;function Gp(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const T9={name:"Select",common:se,peers:{InternalSelection:Xc,InternalSelectMenu:Bi},self:Gp},Vp=T9,w9={name:"Select",common:ae,peers:{InternalSelection:Zc,InternalSelectMenu:Ni},self:Gp},Up=w9,_9={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"},Kp=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({},_9),{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})},P9={name:"Pagination",common:se,peers:{Select:Vp,Input:dn,Popselect:jp},self:Kp},qp=P9,A9={name:"Pagination",common:ae,peers:{Select:Up,Input:vn,Popselect:Wp},self(e){const{primaryColor:t,opacity3:n}=e,o=q(t,{alpha:Number(n)}),r=Kp(e);return r.itemBorderActive=`1px solid ${o}`,r.itemBorderDisabled="1px solid #0000",r}},Xp=A9,Zp={padding:"8px 14px"},E9={name:"Tooltip",common:ae,peers:{Popover:rr},self(e){const{borderRadius:t,boxShadow2:n,popoverColor:o,textColor2:r}=e;return Object.assign(Object.assign({},Zp),{borderRadius:t,boxShadow:n,color:o,textColor:r})}},_s=E9,I9=e=>{const{borderRadius:t,boxShadow2:n,baseColor:o}=e;return Object.assign(Object.assign({},Zp),{borderRadius:t,boxShadow:n,color:fe(o,"rgba(0, 0, 0, .85)"),textColor:o})},R9={name:"Tooltip",common:se,peers:{Popover:Co},self:I9},zi=R9,M9={name:"Ellipsis",common:ae,peers:{Tooltip:_s}},Yp=M9,L9={name:"Ellipsis",common:se,peers:{Tooltip:zi}},Qc=L9,Jp={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"},D9={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({},Jp),{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 ${q(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 ${q(n,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${n}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})}},Qp=D9,$9=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({},Jp),{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 ${q(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 ${q(n,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})},O9={name:"Radio",common:se,self:$9},eb=O9,H9={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"},tb=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({},H9),{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:q(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})},B9={name:"Dropdown",common:se,peers:{Popover:Co},self:tb},Ps=B9,N9={name:"Dropdown",common:ae,peers:{Popover:rr},self(e){const{primaryColorSuppl:t,primaryColor:n,popoverColor:o}=e,r=tb(e);return r.colorInverted=o,r.optionColorActive=q(n,{alpha:.15}),r.optionColorActiveInverted=t,r.optionColorHoverInverted=t,r}},ed=N9,z9={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"},nb=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:C,tableColorStriped:_}=e;return Object.assign(Object.assign({},z9),{actionDividerColor:p,lineHeight:h,borderRadius:u,fontSizeSmall:g,fontSizeMedium:f,fontSizeLarge:b,borderColor:fe(t,p),tdColorHover:fe(t,s),tdColorStriped:fe(t,_),thColor:fe(t,a),thColorHover:fe(fe(t,a),s),tdColor:t,tdTextColor:r,thTextColor:i,thFontWeight:d,thButtonColorHover:s,thIconColor:l,thIconColorActive:c,borderColorModal:fe(n,p),tdColorHoverModal:fe(n,s),tdColorStripedModal:fe(n,_),thColorModal:fe(n,a),thColorHoverModal:fe(fe(n,a),s),tdColorModal:n,borderColorPopover:fe(o,p),tdColorHoverPopover:fe(o,s),tdColorStripedPopover:fe(o,_),thColorPopover:fe(o,a),thColorHoverPopover:fe(fe(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:C})},F9={name:"DataTable",common:se,peers:{Button:qt,Checkbox:Or,Radio:eb,Pagination:qp,Scrollbar:Kt,Empty:qn,Popover:Co,Ellipsis:Qc,Dropdown:Ps},self:nb},W9=F9,j9={name:"DataTable",common:ae,peers:{Button:en,Checkbox:Hr,Radio:Qp,Pagination:Xp,Scrollbar:Qt,Empty:or,Popover:rr,Ellipsis:Yp,Dropdown:ed},self(e){const t=nb(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}},G9=j9,V9=Object.assign(Object.assign({},Ts),Ee.props),U9=ce({name:"Tooltip",props:V9,__popover__:!0,setup(e){const{mergedClsPrefixRef:t}=at(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:N(()=>n.value.self)})},render(){const{mergedTheme:e,internalExtraClass:t}=this;return S(ws,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)}}),K9=te("ellipsis",{overflow:"hidden"},[Lt("line-clamp",` - white-space: nowrap; - display: inline-block; - vertical-align: bottom; - max-width: 100%; - `),J("line-clamp",` - display: -webkit-inline-box; - -webkit-box-orient: vertical; - `),J("cursor-pointer",` - cursor: pointer; - `)]);function _h(e){return`${e}-ellipsis--line-clamp`}function Ph(e,t){return`${e}-ellipsis--cursor-${t}`}const q9=Object.assign(Object.assign({},Ee.props),{expandTrigger:String,lineClamp:[Number,String],tooltip:{type:[Boolean,Object],default:!0}}),X9=ce({name:"Ellipsis",inheritAttrs:!1,props:q9,setup(e,{slots:t,attrs:n}){const o=wS(),r=Ee("Ellipsis","-ellipsis",K9,Qc,e,o),i=V(null),a=V(null),s=V(null),l=V(!1),c=N(()=>{const{lineClamp:p}=e,{value:m}=l;return p!==void 0?{textOverflow:"","-webkit-line-clamp":m?"":p}:{textOverflow:m?"":"ellipsis","-webkit-line-clamp":""}});function d(){let p=!1;const{value:m}=l;if(m)return!0;const{value:C}=i;if(C){const{lineClamp:_}=e;if(g(C),_!==void 0)p=C.scrollHeight<=C.offsetHeight;else{const{value:y}=a;y&&(p=y.getBoundingClientRect().width<=C.getBoundingClientRect().width)}f(C,p)}return p}const u=N(()=>e.expandTrigger==="click"?()=>{var p;const{value:m}=l;m&&((p=s.value)===null||p===void 0||p.setShow(!1)),l.value=!m}:void 0);Sc(()=>{var p;e.tooltip&&((p=s.value)===null||p===void 0||p.setShow(!1))});const h=()=>S("span",Object.assign({},Mn(n,{class:[`${o.value}-ellipsis`,e.lineClamp!==void 0?_h(o.value):void 0,e.expandTrigger==="click"?Ph(o.value,"pointer"):void 0],style:c.value}),{ref:"triggerRef",onClick:u.value,onMouseenter:e.expandTrigger==="click"?d:void 0}),e.lineClamp?t:S("span",{ref:"triggerInnerRef"},t));function g(p){if(!p)return;const m=c.value,C=_h(o.value);e.lineClamp!==void 0?b(p,C,"add"):b(p,C,"remove");for(const _ in m)p.style[_]!==m[_]&&(p.style[_]=m[_])}function f(p,m){const C=Ph(o.value,"pointer");e.expandTrigger==="click"&&!m?b(p,C,"add"):b(p,C,"remove")}function b(p,m,C){C==="add"?p.classList.contains(m)||p.classList.add(m):p.classList.contains(m)&&p.classList.remove(m)}return{mergedTheme:r,triggerRef:i,triggerInnerRef:a,tooltipRef:s,handleClick:u,renderTrigger:h,getTooltipDisabled:d}},render(){var e;const{tooltip:t,renderTrigger:n,$slots:o}=this;if(t){const{mergedTheme:r}=this;return S(U9,Object.assign({ref:"tooltipRef",placement:"top"},t,{getDisabled:this.getTooltipDisabled,theme:r.peers.Tooltip,themeOverrides:r.peerOverrides.Tooltip}),{trigger:n,default:(e=o.tooltip)!==null&&e!==void 0?e:o.default})}else return n()}}),ob=ce({name:"DropdownDivider",props:{clsPrefix:{type:String,required:!0}},render(){return S("div",{class:`${this.clsPrefix}-dropdown-divider`})}}),rb=e=>{const{textColorBase:t,opacity1:n,opacity2:o,opacity3:r,opacity4:i,opacity5:a}=e;return{color:t,opacity1Depth:n,opacity2Depth:o,opacity3Depth:r,opacity4Depth:i,opacity5Depth:a}},Z9={name:"Icon",common:se,self:rb},ib=Z9,Y9={name:"Icon",common:ae,self:rb},J9=Y9,Q9=te("icon",` - height: 1em; - width: 1em; - line-height: 1em; - text-align: center; - display: inline-block; - position: relative; - fill: currentColor; - transform: translateZ(0); -`,[J("color-transition",{transition:"color .3s var(--n-bezier)"}),J("depth",{color:"var(--n-color)"},[z("svg",{opacity:"var(--n-opacity)",transition:"opacity .3s var(--n-bezier)"})]),z("svg",{height:"1em",width:"1em"})]),e7=Object.assign(Object.assign({},Ee.props),{depth:[String,Number],size:[Number,String],color:String,component:Object}),td=ce({_n_icon__:!0,name:"Icon",inheritAttrs:!1,props:e7,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Ee("Icon","-icon",Q9,ib,e,t),r=N(()=>{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?Pt("icon",N(()=>`${e.depth||"d"}`),r,e):void 0;return{mergedClsPrefix:t,mergedStyle:N(()=>{const{size:a,color:s}=e;return{fontSize:ya(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__&&wr("icon","don't wrap `n-icon` inside `n-icon`"),i==null||i(),S("i",Mn(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)}}),nd="n-dropdown-menu",As="n-dropdown",Ah="n-dropdown-option";function Vl(e,t){return e.type==="submenu"||e.type===void 0&&e[t]!==void 0}function t7(e){return e.type==="group"}function ab(e){return e.type==="divider"}function n7(e){return e.type==="render"}const sb=ce({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=Ae(As),{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=Ae(Ah,null),m=Ae(nd),C=Ae($i),_=N(()=>e.tmNode.rawNode),y=N(()=>{const{value:F}=h;return Vl(e.tmNode.rawNode,F)}),k=N(()=>{const{disabled:F}=e.tmNode;return F}),P=N(()=>{if(!y.value)return!1;const{key:F,disabled:re}=e.tmNode;if(re)return!1;const{value:be}=n,{value:ve}=o,{value:_e}=r,{value:Me}=i;return be!==null?Me.includes(F):ve!==null?Me.includes(F)&&Me[Me.length-1]!==F:_e!==null?Me.includes(F):!1}),v=N(()=>o.value===null&&!s.value),T=J2(P,300,v),E=N(()=>!!(p!=null&&p.enteringSubmenuRef.value)),L=V(!1);je(Ah,{enteringSubmenuRef:L});function j(){L.value=!0}function M(){L.value=!1}function K(){const{parentKey:F,tmNode:re}=e;re.disabled||l.value&&(r.value=F,o.value=null,n.value=re.key)}function ne(){const{tmNode:F}=e;F.disabled||l.value&&n.value!==F.key&&K()}function H(F){if(e.tmNode.disabled||!l.value)return;const{relatedTarget:re}=F;re&&!ou({target:re},"dropdownOption")&&!ou({target:re},"scrollbarRail")&&(n.value=null)}function U(){const{value:F}=y,{tmNode:re}=e;l.value&&!F&&!re.disabled&&(t.doSelect(re.key,re.rawNode),t.doUpdateShow(!1))}return{labelField:u,renderLabel:c,renderIcon:d,siblingHasIcon:m.showIconRef,siblingHasSubmenu:m.hasSubmenuRef,menuProps:b,popoverBody:C,animated:s,mergedShowSubmenu:N(()=>T.value&&!E.value),rawNode:_,hasSubmenu:y,pending:wt(()=>{const{value:F}=i,{key:re}=e.tmNode;return F.includes(re)}),childActive:wt(()=>{const{value:F}=a,{key:re}=e.tmNode,be=F.findIndex(ve=>re===ve);return be===-1?!1:be{const{value:F}=a,{key:re}=e.tmNode,be=F.findIndex(ve=>re===ve);return be===-1?!1:be===F.length-1}),mergedDisabled:k,renderOption:g,nodeProps:f,handleClick:U,handleMouseMove:ne,handleMouseEnter:K,handleMouseLeave:H,handleSubmenuBeforeEnter:j,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 C=(e=this.menuProps)===null||e===void 0?void 0:e.call(this,o,o.children);f=S(lb,Object.assign({},C,{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",Mn(b,h),[S("div",{class:[`${i}-dropdown-option-body__prefix`,a&&`${i}-dropdown-option-body__prefix--show-icon`]},[c?c(o):Rt(o.icon)]),S("div",{"data-dropdown-option":!0,class:`${i}-dropdown-option-body__label`},l?l(o):Rt((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(td,null,{default:()=>S(pT,null)}):null)]),this.hasSubmenu?S(qg,null,{default:()=>[S(Xg,null,{default:()=>S("div",{class:`${i}-dropdown-offset-container`},S(Jg,{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}}),o7=ce({name:"DropdownGroupHeader",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){const{showIconRef:e,hasSubmenuRef:t}=Ae(nd),{renderLabelRef:n,labelFieldRef:o,nodePropsRef:r,renderOptionRef:i}=Ae(As);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`]},Rt(s.icon)),S("div",{class:`${t}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(s):Rt((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}}),r7=ce({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(Oe,null,S(o7,{clsPrefix:n,tmNode:e,key:e.key}),o==null?void 0:o.map(r=>{const{rawNode:i}=r;return i.show===!1?null:ab(i)?S(ob,{clsPrefix:n,key:r.key}):r.isGroup?(wr("dropdown","`group` node is not allowed to be put in `group` node."),null):S(sb,{clsPrefix:n,tmNode:r,parentKey:t,key:r.key})}))}}),i7=ce({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()])}}),lb=ce({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}=Ae(As);je(nd,{showIconRef:N(()=>{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:N(()=>{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})=>Vl(l,r));const{rawNode:s}=i;return Vl(s,r)})})});const o=V(null);return je(us,null),je(hs,null),je($i,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:n7(i)?S(i7,{tmNode:r,key:r.key}):ab(i)?S(ob,{clsPrefix:t,key:r.key}):t7(i)?S(r7,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):S(sb,{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(lp,{contentClass:`${t}-dropdown-menu__content`},{default:()=>o}):o,this.showArrow?fp({clsPrefix:t,arrowStyle:this.arrowStyle,arrowClass:void 0,arrowWrapperClass:void 0,arrowWrapperStyle:void 0}):null)}}),a7=te("dropdown-menu",` - transform-origin: var(--v-transform-origin); - background-color: var(--n-color); - border-radius: var(--n-border-radius); - box-shadow: var(--n-box-shadow); - position: relative; - transition: - background-color .3s var(--n-bezier), - box-shadow .3s var(--n-bezier); -`,[dp(),te("dropdown-option",` - position: relative; - `,[z("a",` - text-decoration: none; - color: inherit; - outline: none; - `,[z("&::before",` - content: ""; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - `)]),te("dropdown-option-body",` - display: flex; - cursor: pointer; - position: relative; - height: var(--n-option-height); - line-height: var(--n-option-height); - font-size: var(--n-font-size); - color: var(--n-option-text-color); - transition: color .3s var(--n-bezier); - `,[z("&::before",` - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 4px; - right: 4px; - transition: background-color .3s var(--n-bezier); - border-radius: var(--n-border-radius); - `),Lt("disabled",[J("pending",` - color: var(--n-option-text-color-hover); - `,[G("prefix, suffix",` - color: var(--n-option-text-color-hover); - `),z("&::before","background-color: var(--n-option-color-hover);")]),J("active",` - color: var(--n-option-text-color-active); - `,[G("prefix, suffix",` - color: var(--n-option-text-color-active); - `),z("&::before","background-color: var(--n-option-color-active);")]),J("child-active",` - color: var(--n-option-text-color-child-active); - `,[G("prefix, suffix",` - color: var(--n-option-text-color-child-active); - `)])]),J("disabled",` - cursor: not-allowed; - opacity: var(--n-option-opacity-disabled); - `),J("group",` - font-size: calc(var(--n-font-size) - 1px); - color: var(--n-group-header-text-color); - `,[G("prefix",` - width: calc(var(--n-option-prefix-width) / 2); - `,[J("show-icon",` - width: calc(var(--n-option-icon-prefix-width) / 2); - `)])]),G("prefix",` - width: var(--n-option-prefix-width); - display: flex; - justify-content: center; - align-items: center; - color: var(--n-prefix-color); - transition: color .3s var(--n-bezier); - z-index: 1; - `,[J("show-icon",` - width: var(--n-option-icon-prefix-width); - `),te("icon",` - font-size: var(--n-option-icon-size); - `)]),G("label",` - white-space: nowrap; - flex: 1; - z-index: 1; - `),G("suffix",` - box-sizing: border-box; - flex-grow: 0; - flex-shrink: 0; - display: flex; - justify-content: flex-end; - align-items: center; - min-width: var(--n-option-suffix-width); - padding: 0 8px; - transition: color .3s var(--n-bezier); - color: var(--n-suffix-color); - z-index: 1; - `,[J("has-submenu",` - width: var(--n-option-icon-suffix-width); - `),te("icon",` - font-size: var(--n-option-icon-size); - `)]),te("dropdown-menu","pointer-events: all;")]),te("dropdown-offset-container",` - pointer-events: none; - position: absolute; - left: 0; - right: 0; - top: -4px; - bottom: -4px; - `)]),te("dropdown-divider",` - transition: background-color .3s var(--n-bezier); - background-color: var(--n-divider-color); - height: 1px; - margin: 4px 0; - `),te("dropdown-menu-wrapper",` - transform-origin: var(--v-transform-origin); - width: fit-content; - `),z(">",[te("scrollbar",` - height: inherit; - max-height: inherit; - `)]),Lt("scrollable",` - padding: var(--n-padding); - `),J("scrollable",[G("content",` - padding: var(--n-padding); - `)])]),s7={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]},l7=Object.keys(Ts),c7=Object.assign(Object.assign(Object.assign({},Ts),s7),Ee.props),d7=ce({name:"Dropdown",inheritAttrs:!1,props:c7,setup(e){const t=V(!1),n=Ic(Ue(e,"show"),t),o=N(()=>{const{keyField:M,childrenField:K}=e;return ZT(e.options,{getKey(ne){return ne[M]},getDisabled(ne){return ne.disabled===!0},getIgnored(ne){return ne.type==="divider"||ne.type==="render"},getChildren(ne){return ne[K]}})}),r=N(()=>o.value.treeNodes),i=V(null),a=V(null),s=V(null),l=N(()=>{var M,K,ne;return(ne=(K=(M=i.value)!==null&&M!==void 0?M:a.value)!==null&&K!==void 0?K:s.value)!==null&&ne!==void 0?ne:null}),c=N(()=>o.value.getPath(l.value).keyPath),d=N(()=>o.value.getPath(e.value).keyPath),u=wt(()=>e.keyboard&&n.value);bx({keydown:{ArrowUp:{prevent:!0,handler:k},ArrowRight:{prevent:!0,handler:y},ArrowDown:{prevent:!0,handler:P},ArrowLeft:{prevent:!0,handler:_},Enter:{prevent:!0,handler:v},Escape:C}},u);const{mergedClsPrefixRef:h,inlineThemeDisabled:g}=at(e),f=Ee("Dropdown","-dropdown",a7,Ps,e,h);je(As,{labelFieldRef:Ue(e,"labelField"),childrenFieldRef:Ue(e,"childrenField"),renderLabelRef:Ue(e,"renderLabel"),renderIconRef:Ue(e,"renderIcon"),hoverKeyRef:i,keyboardKeyRef:a,lastToggledSubmenuKeyRef:s,pendingKeyPathRef:c,activeKeyPathRef:d,animatedRef:Ue(e,"animated"),mergedShowRef:n,nodePropsRef:Ue(e,"nodeProps"),renderOptionRef:Ue(e,"renderOption"),menuPropsRef:Ue(e,"menuProps"),doSelect:b,doUpdateShow:p}),et(n,M=>{!e.animated&&!M&&m()});function b(M,K){const{onSelect:ne}=e;ne&&We(ne,M,K)}function p(M){const{"onUpdate:show":K,onUpdateShow:ne}=e;K&&We(K,M),ne&&We(ne,M),t.value=M}function m(){i.value=null,a.value=null,s.value=null}function C(){p(!1)}function _(){E("left")}function y(){E("right")}function k(){E("up")}function P(){E("down")}function v(){const M=T();M!=null&&M.isLeaf&&n.value&&(b(M.key,M.rawNode),p(!1))}function T(){var M;const{value:K}=o,{value:ne}=l;return!K||ne===null?null:(M=K.getNode(ne))!==null&&M!==void 0?M:null}function E(M){const{value:K}=l,{value:{getFirstAvailableNode:ne}}=o;let H=null;if(K===null){const U=ne();U!==null&&(H=U.key)}else{const U=T();if(U){let F;switch(M){case"down":F=U.getNext();break;case"up":F=U.getPrev();break;case"right":F=U.getChild();break;case"left":F=U.getParent();break}F&&(H=F.key)}}H!==null&&(i.value=null,a.value=H)}const L=N(()=>{const{size:M,inverted:K}=e,{common:{cubicBezierEaseInOut:ne},self:H}=f.value,{padding:U,dividerColor:F,borderRadius:re,optionOpacityDisabled:be,[ge("optionIconSuffixWidth",M)]:ve,[ge("optionSuffixWidth",M)]:_e,[ge("optionIconPrefixWidth",M)]:Me,[ge("optionPrefixWidth",M)]:lt,[ge("fontSize",M)]:Ze,[ge("optionHeight",M)]:Ye,[ge("optionIconSize",M)]:Ie}=H,De={"--n-bezier":ne,"--n-font-size":Ze,"--n-padding":U,"--n-border-radius":re,"--n-option-height":Ye,"--n-option-prefix-width":lt,"--n-option-icon-prefix-width":Me,"--n-option-suffix-width":_e,"--n-option-icon-suffix-width":ve,"--n-option-icon-size":Ie,"--n-divider-color":F,"--n-option-opacity-disabled":be};return K?(De["--n-color"]=H.colorInverted,De["--n-option-color-hover"]=H.optionColorHoverInverted,De["--n-option-color-active"]=H.optionColorActiveInverted,De["--n-option-text-color"]=H.optionTextColorInverted,De["--n-option-text-color-hover"]=H.optionTextColorHoverInverted,De["--n-option-text-color-active"]=H.optionTextColorActiveInverted,De["--n-option-text-color-child-active"]=H.optionTextColorChildActiveInverted,De["--n-prefix-color"]=H.prefixColorInverted,De["--n-suffix-color"]=H.suffixColorInverted,De["--n-group-header-text-color"]=H.groupHeaderTextColorInverted):(De["--n-color"]=H.color,De["--n-option-color-hover"]=H.optionColorHover,De["--n-option-color-active"]=H.optionColorActive,De["--n-option-text-color"]=H.optionTextColor,De["--n-option-text-color-hover"]=H.optionTextColorHover,De["--n-option-text-color-active"]=H.optionTextColorActive,De["--n-option-text-color-child-active"]=H.optionTextColorChildActive,De["--n-prefix-color"]=H.prefixColor,De["--n-suffix-color"]=H.suffixColor,De["--n-group-header-text-color"]=H.groupHeaderTextColor),De}),j=g?Pt("dropdown",N(()=>`${e.size[0]}${e.inverted?"i":""}`),L,e):void 0;return{mergedClsPrefix:h,mergedTheme:f,tmNodes:r,mergedShow:n,handleAfterLeave:()=>{e.animated&&m()},doUpdateShow:p,cssVars:g?void 0:L,themeClass:j==null?void 0:j.themeClass,onRender:j==null?void 0:j.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:S2(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(lb,Mn(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(ws,Object.assign({},Xo(this.$props,l7),n),{trigger:()=>{var o,r;return(r=(o=this.$slots).default)===null||r===void 0?void 0:r.call(o)}})}}),u7={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"},cb=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({},u7),{panelColor:t,panelBoxShadow:s,panelDividerColor:i,itemTextColor:n,itemTextColorActive:o,itemColorHover:r,itemOpacityDisabled:a,itemBorderRadius:l,borderRadius:l,iconColor:c,iconColorDisabled:d})},h7={name:"TimePicker",common:se,peers:{Scrollbar:Kt,Button:qt,Input:dn},self:cb},db=h7,f7={name:"TimePicker",common:ae,peers:{Scrollbar:Qt,Button:en,Input:vn},self:cb},ub=f7,g7={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"},hb=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({},g7),{itemFontSize:n,calendarDaysFontSize:n,calendarTitleFontSize:n,itemTextColor:o,itemTextColorDisabled:r,itemTextColorActive:i,itemTextColorCurrent:a,itemColorIncluded:q(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})},m7={name:"DatePicker",common:se,peers:{Input:dn,Button:qt,TimePicker:db,Scrollbar:Kt},self:hb},p7=m7,b7={name:"DatePicker",common:ae,peers:{Input:vn,Button:en,TimePicker:ub,Scrollbar:Qt},self(e){const{popoverColor:t,hoverColor:n,primaryColor:o}=e,r=hb(e);return r.itemColorDisabled=fe(t,n),r.itemColorIncluded=q(o,{alpha:.15}),r.itemColorHover=fe(t,n),r}},v7=b7,y7={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"},fb=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({},y7),{lineHeight:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g,titleTextColor:o,thColor:fe(r,t),thColorModal:fe(i,t),thColorPopover:fe(a,t),thTextColor:o,thFontWeight:c,tdTextColor:n,tdColor:r,tdColorModal:i,tdColorPopover:a,borderColor:fe(r,s),borderColorModal:fe(i,s),borderColorPopover:fe(a,s),borderRadius:l})},x7={name:"Descriptions",common:se,self:fb},C7=x7,k7={name:"Descriptions",common:ae,self:fb},S7=k7,T7={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"},gb=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:C}=e;return Object.assign(Object.assign({},T7),{fontSize:C,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})},w7={name:"Dialog",common:se,peers:{Button:qt},self:gb},od=w7,_7={name:"Dialog",common:ae,peers:{Button:en},self:gb},mb=_7,Es={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,onPositiveClick:Function,onNegativeClick:Function,onClose:Function},pb=ss(Es),P7=z([te("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); - position: relative; - background: var(--n-color); - color: var(--n-text-color); - box-sizing: border-box; - margin: auto; - border-radius: var(--n-border-radius); - padding: var(--n-padding); - transition: - border-color .3s var(--n-bezier), - background-color .3s var(--n-bezier), - color .3s var(--n-bezier); - `,[G("icon",{color:"var(--n-icon-color)"}),J("bordered",{border:"var(--n-border)"}),J("icon-top",[G("close",{margin:"var(--n-close-margin)"}),G("icon",{margin:"var(--n-icon-margin)"}),G("content",{textAlign:"center"}),G("title",{justifyContent:"center"}),G("action",{justifyContent:"center"})]),J("icon-left",[G("icon",{margin:"var(--n-icon-margin)"}),J("closable",[G("title",` - padding-right: calc(var(--n-close-size) + 6px); - `)])]),G("close",` - position: absolute; - right: 0; - top: 0; - margin: var(--n-close-margin); - transition: - background-color .3s var(--n-bezier), - color .3s var(--n-bezier); - z-index: 1; - `),G("content",` - font-size: var(--n-font-size); - margin: var(--n-content-margin); - position: relative; - word-break: break-word; - `,[J("last","margin-bottom: 0;")]),G("action",` - display: flex; - justify-content: flex-end; - `,[z("> *:not(:last-child)",` - margin-right: var(--n-action-space); - `)]),G("icon",` - font-size: var(--n-icon-size); - transition: color .3s var(--n-bezier); - `),G("title",` - transition: color .3s var(--n-bezier); - display: flex; - align-items: center; - font-size: var(--n-title-font-size); - font-weight: var(--n-title-font-weight); - color: var(--n-title-text-color); - `),te("dialog-icon-container",` - display: flex; - justify-content: center; - `)]),Bg(te("dialog",` - width: 446px; - max-width: calc(100vw - 32px); - `)),te("dialog",[Ng(` - width: 446px; - max-width: calc(100vw - 32px); - `)])]),A7={default:()=>S(za,null),info:()=>S(za,null),success:()=>S(Gc,null),warning:()=>S(Vc,null),error:()=>S(jc,null)},bb=ce({name:"Dialog",alias:["NimbusConfirmCard","Confirm"],props:Object.assign(Object.assign({},Ee.props),Es),setup(e){const{mergedComponentPropsRef:t,mergedClsPrefixRef:n,inlineThemeDisabled:o,mergedRtlRef:r}=at(e),i=xo("Dialog",r,n),a=N(()=>{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",P7,od,e,n),u=N(()=>{const{type:g}=e,f=a.value,{common:{cubicBezierEaseInOut:b},self:{fontSize:p,lineHeight:m,border:C,titleTextColor:_,textColor:y,color:k,closeBorderRadius:P,closeColorHover:v,closeColorPressed:T,closeIconColor:E,closeIconColorHover:L,closeIconColorPressed:j,closeIconSize:M,borderRadius:K,titleFontWeight:ne,titleFontSize:H,padding:U,iconSize:F,actionSpace:re,contentMargin:be,closeSize:ve,[f==="top"?"iconMarginIconTop":"iconMargin"]:_e,[f==="top"?"closeMarginIconTop":"closeMargin"]:Me,[ge("iconColor",g)]:lt}}=d.value,Ze=is(_e);return{"--n-font-size":p,"--n-icon-color":lt,"--n-bezier":b,"--n-close-margin":Me,"--n-icon-margin-top":Ze.top,"--n-icon-margin-right":Ze.right,"--n-icon-margin-bottom":Ze.bottom,"--n-icon-margin-left":Ze.left,"--n-icon-size":F,"--n-close-size":ve,"--n-close-icon-size":M,"--n-close-border-radius":P,"--n-close-color-hover":v,"--n-close-color-pressed":T,"--n-close-icon-color":E,"--n-close-icon-color-hover":L,"--n-close-icon-color-pressed":j,"--n-color":k,"--n-text-color":y,"--n-border-radius":K,"--n-padding":U,"--n-line-height":m,"--n-border":C,"--n-content-margin":be,"--n-title-font-size":H,"--n-title-font-weight":ne,"--n-title-text-color":_,"--n-action-space":re}}),h=o?Pt("dialog",N(()=>`${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:C}=this;(e=this.onRender)===null||e===void 0||e.call(this);const _=i?S(go,{clsPrefix:C,class:`${C}-dialog__icon`},{default:()=>Tt(this.$slots.icon,k=>k||(this.icon?Rt(this.icon):A7[this.type]()))}):null,y=Tt(this.$slots.action,k=>k||d||c||l?S("div",{class:`${C}-dialog__action`},k||(l?[Rt(l)]:[this.negativeText&&S(Wa,Object.assign({theme:b.peers.Button,themeOverrides:b.peerOverrides.Button,ghost:!0,size:"small",onClick:f},h),{default:()=>Rt(this.negativeText)}),this.positiveText&&S(Wa,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:()=>Rt(this.positiveText)})])):null);return S("div",{class:[`${C}-dialog`,this.themeClass,this.closable&&`${C}-dialog--closable`,`${C}-dialog--icon-${n}`,t&&`${C}-dialog--bordered`,this.rtlEnabled&&`${C}-dialog--rtl`],style:o,role:"dialog"},r?Tt(this.$slots.close,k=>{const P=[`${C}-dialog__close`,this.rtlEnabled&&`${C}-dialog--rtl`];return k?S("div",{class:P},k):S(ks,{clsPrefix:C,class:P,onClick:this.handleCloseClick})}):null,i&&n==="top"?S("div",{class:`${C}-dialog-icon-container`},_):null,S("div",{class:`${C}-dialog__title`},i&&n==="left"?_:null,Vo(this.$slots.header,()=>[Rt(a)])),S("div",{class:[`${C}-dialog__content`,y?"":`${C}-dialog__content--last`]},Vo(this.$slots.default,()=>[Rt(s)])),y)}}),vb="n-dialog-provider",E7="n-dialog-api",I7="n-dialog-reactive-list",yb=e=>{const{modalColor:t,textColor2:n,boxShadow3:o}=e;return{color:t,textColor:n,boxShadow:o}},R7={name:"Modal",common:se,peers:{Scrollbar:Kt,Dialog:od,Card:Yc},self:yb},xb=R7,M7={name:"Modal",common:ae,peers:{Scrollbar:Qt,Dialog:mb,Card:Dp},self:yb},L7=M7,rd=Object.assign(Object.assign({},Jc),Es),D7=ss(rd),$7=ce({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},rd),{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);et(Ue(e,"show"),p=>{p&&(o.value=!0)}),cC(N(()=>e.blockScroll&&o.value));const a=Ae(Gg);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 C=n.value.containerScrollTop;return`${p}px ${m+C}px`}return""}function l(p){if(a.transformOriginRef.value==="center")return;const m=a.getMousePosition();if(!m||!n.value)return;const C=n.value.containerScrollTop,{offsetLeft:_,offsetTop:y}=p;if(m){const k=m.y,P=m.x;r.value=-(_-P),i.value=-(y-k-C)}p.style.transformOrigin=s()}function c(p){Ut(()=>{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 et(b,p=>{p&&Ut(()=>{const m=p.el;m&&t.value!==m&&(t.value=m)})}),je(us,t),je(hs,null),je($i,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=Al(e),!s){wr("modal","default slot is empty");return}s=pn(s),s.props=Mn({class:`${a}-modal`},t,s.props||{})}return this.displayDirective==="show"||this.displayed||this.show?uo(S("div",{role:"none",class:`${a}-modal-body-wrapper`},S(Ss,{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(cm,{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=[[Tr,this.show]],{onClickoutside:u}=this;return u&&d.push([Ll,this.onClickoutside,void 0,{capture:!0}]),uo(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},Xo(this.$props,pb),{"aria-modal":"true"}),e):this.preset==="card"?S(Z8,Object.assign({},this.$attrs,{ref:"bodyRef",class:[`${a}-modal`,this.$attrs.class],theme:this.mergedTheme.peers.Card,themeOverrides:this.mergedTheme.peerOverrides.Card},Xo(this.$props,q8),{"aria-modal":"true",role:"dialog"}),e):this.childNodeRef=s,d)}})}})]}})),[[Tr,this.displayDirective==="if"||this.displayed||this.show]]):null}}),O7=z([te("modal-container",` - position: fixed; - left: 0; - top: 0; - height: 0; - width: 0; - display: flex; - `),te("modal-mask",` - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - background-color: rgba(0, 0, 0, .4); - `,[qc({enterDuration:".25s",leaveDuration:".25s",enterCubicBezier:"var(--n-bezier-ease-out)",leaveCubicBezier:"var(--n-bezier-ease-out)"})]),te("modal-body-wrapper",` - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - overflow: visible; - `,[te("modal-scroll-content",` - min-height: 100%; - display: flex; - position: relative; - `)]),te("modal",` - position: relative; - align-self: center; - color: var(--n-text-color); - margin: auto; - box-shadow: var(--n-box-shadow); - `,[dp({duration:".25s",enterScale:".5"})])]),H7=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}}),rd),{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}),B7=ce({name:"Modal",inheritAttrs:!1,props:H7,setup(e){const t=V(null),{mergedClsPrefixRef:n,namespaceRef:o,inlineThemeDisabled:r}=at(e),i=Ee("Modal","-modal",O7,xb,e,n),a=Wg(64),s=Fg(),l=Di(),c=e.internalDialog?Ae(vb,null):null,d=e.internalModal?Ae(yx,null):null,u=dC();function h(P){const{onUpdateShow:v,"onUpdate:show":T,onHide:E}=e;v&&We(v,P),T&&We(T,P),E&&!P&&E(P)}function g(){const{onClose:P}=e;P?Promise.resolve(P()).then(v=>{v!==!1&&h(!1)}):h(!1)}function f(){const{onPositiveClick:P}=e;P?Promise.resolve(P()).then(v=>{v!==!1&&h(!1)}):h(!1)}function b(){const{onNegativeClick:P}=e;P?Promise.resolve(P()).then(v=>{v!==!1&&h(!1)}):h(!1)}function p(){const{onBeforeLeave:P,onBeforeHide:v}=e;P&&We(P),v&&v()}function m(){const{onAfterLeave:P,onAfterHide:v}=e;P&&We(P),v&&v()}function C(P){var v;const{onMaskClick:T}=e;T&&T(P),e.maskClosable&&!((v=t.value)===null||v===void 0)&&v.contains(xi(P))&&h(!1)}function _(P){var v;(v=e.onEsc)===null||v===void 0||v.call(e),e.show&&e.closeOnEsc&&Y2(P)&&!u.value&&h(!1)}je(Gg,{getMousePosition:()=>{const P=c||d;if(P){const{clickedRef:v,clickedPositionRef:T}=P;if(v.value&&T.value)return T.value}return a.value?s.value:null},mergedClsPrefixRef:n,mergedThemeRef:i,isMountedRef:l,appearRef:Ue(e,"internalAppear"),transformOriginRef:Ue(e,"transformOrigin")});const y=N(()=>{const{common:{cubicBezierEaseOut:P},self:{boxShadow:v,color:T,textColor:E}}=i.value;return{"--n-bezier-ease-out":P,"--n-box-shadow":v,"--n-color":T,"--n-text-color":E}}),k=r?Pt("theme-class",void 0,y,e):void 0;return{mergedClsPrefix:n,namespace:o,isMounted:l,containerRef:t,presetProps:N(()=>Xo(e,D7)),handleEsc:_,handleAfterLeave:m,handleClickoutside:C,handleBeforeLeave:p,doUpdateShow:h,handleNegativeClick:b,handlePositiveClick:f,handleCloseClick:g,cssVars:r?void 0:y,themeClass:k==null?void 0:k.themeClass,onRender:k==null?void 0:k.onRender}},render(){const{mergedClsPrefix:e}=this;return S(Yg,{to:this.to,show:this.show},{default:()=>{var t;(t=this.onRender)===null||t===void 0||t.call(this);const{unstableShowMask:n}=this;return uo(S("div",{role:"none",ref:"containerRef",class:[`${e}-modal-container`,this.themeClass,this.namespace],style:this.cssVars},S($7,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)),[[Rc,{zIndex:this.zIndex,enabled:this.show}]])}})}}),N7=Object.assign(Object.assign({},Es),{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}),z7=ce({name:"DialogEnvironment",props:Object.assign(Object.assign({},N7),{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(B7,{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({},Xo(this.$props,pb),{style:this.internalStyle,onClose:o,onNegativeClick:n,onPositiveClick:e}))})}}),F7={injectionKey:String,to:[String,Object]},W7=ce({name:"DialogProvider",props:F7,setup(){const e=V([]),t={};function n(s={}){const l=as(),c=vo(Object.assign(Object.assign({},s),{key:l,destroy:()=>{t[`n-dialog-${l}`].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.hide()})}const a={create:n,destroyAll:i,info:o[0],success:o[1],warning:o[2],error:o[3]};return je(E7,a),je(vb,{clickedRef:Wg(64),clickedPositionRef:Fg()}),je(I7,e),Object.assign(Object.assign({},a),{dialogList:e,dialogInstRefs:t,handleAfterLeave:r})},render(){var e,t;return S(Oe,null,[this.dialogList.map(n=>S(z7,Ec(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)])}}),Cb=e=>{const{textColor1:t,dividerColor:n,fontWeightStrong:o}=e;return{textColor:t,color:n,fontWeight:o}},j7={name:"Divider",common:se,self:Cb},kb=j7,G7={name:"Divider",common:ae,self:Cb},V7=G7,U7=te("divider",` - position: relative; - display: flex; - width: 100%; - box-sizing: border-box; - font-size: 16px; - color: var(--n-text-color); - transition: - color .3s var(--n-bezier), - background-color .3s var(--n-bezier); -`,[Lt("vertical",` - margin-top: 24px; - margin-bottom: 24px; - `,[Lt("no-title",` - display: flex; - align-items: center; - `)]),G("title",` - display: flex; - align-items: center; - margin-left: 12px; - margin-right: 12px; - white-space: nowrap; - font-weight: var(--n-font-weight); - `),J("title-position-left",[G("line",[J("left",{width:"28px"})])]),J("title-position-right",[G("line",[J("right",{width:"28px"})])]),J("dashed",[G("line",` - background-color: #0000; - height: 0px; - width: 100%; - border-style: dashed; - border-width: 1px 0 0; - `)]),J("vertical",` - display: inline-block; - height: 1em; - margin: 0 8px; - vertical-align: middle; - width: 1px; - `),G("line",` - border: none; - transition: background-color .3s var(--n-bezier), border-color .3s var(--n-bezier); - height: 1px; - width: 100%; - margin: 0; - `),Lt("dashed",[G("line",{backgroundColor:"var(--n-color)"})]),J("dashed",[G("line",{borderColor:"var(--n-color)"})]),J("vertical",{backgroundColor:"var(--n-color)"})]),K7=Object.assign(Object.assign({},Ee.props),{titlePlacement:{type:String,default:"center"},dashed:Boolean,vertical:Boolean}),q7=ce({name:"Divider",props:K7,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Ee("Divider","-divider",U7,kb,e,t),r=N(()=>{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?Pt("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(Oe,null,S("div",{class:`${a}-divider__title`},this.$slots),S("div",{class:`${a}-divider__line ${a}-divider__line--right`})):null)}}),Sb=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}},X7={name:"Drawer",common:se,peers:{Scrollbar:Kt},self:Sb},Z7=X7,Y7={name:"Drawer",common:ae,peers:{Scrollbar:Qt},self:Sb},J7=Y7,Tb={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"},Q7={name:"DynamicInput",common:ae,peers:{Input:vn,Button:en},self(){return Tb}},e_=Q7,t_=()=>Tb,n_={name:"DynamicInput",common:se,peers:{Input:dn,Button:qt},self:t_},o_=n_,wb={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},r_={name:"Space",self(){return wb}},_b=r_,i_=()=>wb,a_={name:"Space",self:i_},id=a_;let ul;const s_=()=>{if(!Jo)return!0;if(ul===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),ul=t}return ul},l_=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}}),Pb=ce({name:"Space",props:l_,setup(e){const{mergedClsPrefixRef:t,mergedRtlRef:n}=at(e),o=Ee("Space","-space",void 0,id,e,t),r=xo("Space",n,t);return{useGap:s_(),rtlEnabled:r,mergedClsPrefix:t,margin:N(()=>{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}=g2(a);return{horizontal:ru(l),vertical:ru(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=Ci(Eg(this),!1);if(!f.length)return null;const b=`${s.horizontal}px`,p=`${s.horizontal/2}px`,m=`${s.vertical}px`,C=`${s.vertical/2}px`,_=f.length-1,y=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?"":`-${C}`,marginBottom:u||e?"":`-${C}`,alignItems:n,gap:u?`${s.vertical}px ${s.horizontal}px`:""}},!h&&(u||g)?f:f.map((k,P)=>k.type===Ft?k:S("div",{role:"none",class:i,style:[a,{maxWidth:"100%"},u?"":e?{marginBottom:P!==_?m:""}:d?{marginLeft:y?r==="space-between"&&P===_?"":p:P!==_?b:"",marginRight:y?r==="space-between"&&P===0?"":p:"",paddingTop:C,paddingBottom:C}:{marginRight:y?r==="space-between"&&P===_?"":p:P!==_?b:"",marginLeft:y?r==="space-between"&&P===0?"":p:"",paddingTop:C,paddingBottom:C}]},k)))}}),c_={name:"DynamicTags",common:ae,peers:{Input:vn,Button:en,Tag:mp,Space:_b},self(){return{inputWidth:"64px"}}},d_=c_,u_={name:"DynamicTags",common:se,peers:{Input:dn,Button:qt,Tag:pp,Space:id},self(){return{inputWidth:"64px"}}},h_=u_,f_={name:"Element",common:ae},g_=f_,m_={name:"Element",common:se},Ab=m_,p_=Object.assign(Object.assign({},Ee.props),{tag:{type:String,default:"div"}}),ka=ce({name:"Element",alias:["El"],props:p_,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Ee("Element","-element",void 0,Ab,e,t),r=N(()=>{const{common:a}=o.value;return Object.keys(a).reduce((s,l)=>(s[`--${xS(l)}`]=a[l],s),{})}),i=n?Pt("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))}}),Eb={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},b_={name:"Flex",self(){return Eb}},v_=b_,y_=()=>Eb,x_={name:"Flex",self:y_},C_=x_,k_={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"},Ib=e=>{const{heightSmall:t,heightMedium:n,heightLarge:o,textColor1:r,errorColor:i,warningColor:a,lineHeight:s,textColor3:l}=e;return Object.assign(Object.assign({},k_),{blankHeightSmall:t,blankHeightMedium:n,blankHeightLarge:o,lineHeight:s,labelTextColor:r,asteriskColor:i,feedbackTextColorError:i,feedbackTextColorWarning:a,feedbackTextColor:l})},S_={name:"Form",common:se,self:Ib},T_=S_,w_={name:"Form",common:ae,self:Ib},__=w_,Eh=1,Rb="n-grid",Mb=1,P_={span:{type:[Number,String],default:Mb},offset:{type:[Number,String],default:0},suffix:Boolean,privateOffset:Number,privateSpan:Number,privateColStart:Number,privateShow:{type:Boolean,default:!0}},A_=ce({__GRID_ITEM__:!0,name:"GridItem",alias:["Gi"],props:P_,setup(){const{isSsrRef:e,xGapRef:t,itemStyleRef:n,overflowRef:o,layoutShiftDisabledRef:r}=Ae(Rb),i=ln();return{overflow:o,itemStyle:n,layoutShiftDisabled:r,mergedXGap:N(()=>gr(t.value||0)),deriveStyle:()=>{e.value;const{privateSpan:a=Mb,privateShow:s=!0,privateColStart:l=void 0,privateOffset:c=0}=i.vnode.props,{value:d}=t,u=gr(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}))}}),E_={closeMargin:"16px 12px",closeSize:"20px",closeIconSize:"16px",width:"365px",padding:"16px",titleFontSize:"16px",metaFontSize:"12px",descriptionFontSize:"12px"},Lb=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:C}=e;return Object.assign(Object.assign({},E_),{borderRadius:f,lineHeight:m,fontSize:C,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})},I_={name:"Notification",common:se,peers:{Scrollbar:Kt},self:Lb},Db=I_,R_={name:"Notification",common:ae,peers:{Scrollbar:Qt},self:Lb},M_=R_,L_={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"},$b=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({},L_),{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})},D_={name:"Message",common:se,self:$b},Ob=D_,$_={name:"Message",common:ae,self:$b},O_=$_,H_={name:"ButtonGroup",common:ae},B_=H_,N_={name:"ButtonGroup",common:se},z_=N_,F_={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}}},W_=F_,j_=e=>{const{primaryColor:t,successColor:n,warningColor:o,errorColor:r,infoColor:i,fontWeightStrong:a}=e;return{fontWeight:a,rotate:"252deg",colorStartPrimary:q(t,{alpha:.6}),colorEndPrimary:t,colorStartInfo:q(i,{alpha:.6}),colorEndInfo:i,colorStartWarning:q(o,{alpha:.6}),colorEndWarning:o,colorStartError:q(r,{alpha:.6}),colorEndError:r,colorStartSuccess:q(n,{alpha:.6}),colorEndSuccess:n}},G_={name:"GradientText",common:se,self:j_},V_=G_,U_={name:"InputNumber",common:ae,peers:{Button:en,Input:vn},self(e){const{textColorDisabled:t}=e;return{iconColorDisabled:t}}},K_=U_,q_=e=>{const{textColorDisabled:t}=e;return{iconColorDisabled:t}},X_={name:"InputNumber",common:se,peers:{Button:qt,Input:dn},self:q_},Z_=X_,Y_={name:"Layout",common:ae,peers:{Scrollbar:Qt},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:fe(n,a),siderToggleBarColorHover:fe(n,s),__invertScrollbar:"false"}}},J_=Y_,Q_=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:fe(o,s),siderToggleBarColorHover:fe(o,l),__invertScrollbar:"true"}},eP={name:"Layout",common:se,peers:{Scrollbar:Kt},self:Q_},ad=eP,Hb=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:fe(o,l),colorPopover:r,colorHoverPopover:fe(r,l),borderColor:i,borderColorModal:fe(o,i),borderColorPopover:fe(r,i),borderRadius:a,fontSize:s}},tP={name:"List",common:se,self:Hb},nP=tP,oP={name:"List",common:ae,self:Hb},rP=oP,iP={name:"LoadingBar",common:ae,self(e){const{primaryColor:t}=e;return{colorError:"red",colorLoading:t,height:"2px"}}},aP=iP,sP=e=>{const{primaryColor:t,errorColor:n}=e;return{colorError:n,colorLoading:t,height:"2px"}},lP={name:"LoadingBar",common:se,self:sP},Bb=lP,cP={name:"Log",common:ae,peers:{Scrollbar:Qt,Code:Bp},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}}},dP=cP,uP=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}},hP={name:"Log",common:se,peers:{Scrollbar:Kt,Code:Np},self:uP},fP=hP,gP={name:"Mention",common:ae,peers:{InternalSelectMenu:Ni,Input:vn},self(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}},mP=gP,pP=e=>{const{boxShadow2:t}=e;return{menuBoxShadow:t}},bP={name:"Mention",common:se,peers:{InternalSelectMenu:Bi,Input:dn},self:pP},vP=bP;function yP(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}}const Nb=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:q(o,{alpha:.1}),itemColorActiveHover:q(o,{alpha:.1}),itemColorActiveCollapsed:q(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},yP("#BBB",o,"#FFF","#AAA"))},xP={name:"Menu",common:se,peers:{Tooltip:zi,Dropdown:Ps},self:Nb},CP=xP,kP={name:"Menu",common:ae,peers:{Tooltip:_s,Dropdown:ed},self(e){const{primaryColor:t,primaryColorSuppl:n}=e,o=Nb(e);return o.itemColorActive=q(t,{alpha:.15}),o.itemColorActiveHover=q(t,{alpha:.15}),o.itemColorActiveCollapsed=q(t,{alpha:.15}),o.itemColorActiveInverted=n,o.itemColorActiveHoverInverted=n,o.itemColorActiveCollapsedInverted=n,o}},SP=kP,TP={titleFontSize:"18px",backSize:"22px"};function zb(e){const{textColor1:t,textColor2:n,textColor3:o,fontSize:r,fontWeightStrong:i,primaryColorHover:a,primaryColorPressed:s}=e;return Object.assign(Object.assign({},TP),{titleFontWeight:i,fontSize:r,titleTextColor:t,backColor:n,backColorHover:a,backColorPressed:s,subtitleTextColor:o})}const wP={name:"PageHeader",common:se,self:zb},_P={name:"PageHeader",common:ae,self:zb},PP={iconSize:"22px"},Fb=e=>{const{fontSize:t,warningColor:n}=e;return Object.assign(Object.assign({},PP),{fontSize:t,iconColor:n})},AP={name:"Popconfirm",common:se,peers:{Button:qt,Popover:Co},self:Fb},EP=AP,IP={name:"Popconfirm",common:ae,peers:{Button:en,Popover:rr},self:Fb},RP=IP,Wb=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%)"}},MP={name:"Progress",common:se,self:Wb},jb=MP,LP={name:"Progress",common:ae,self(e){const t=Wb(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}},Gb=LP,DP={name:"Rate",common:ae,self(e){const{railColor:t}=e;return{itemColor:t,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}},$P=DP,OP=e=>{const{railColor:t}=e;return{itemColor:t,itemColorActive:"#FFCC33",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}},HP={name:"Rate",common:se,self:OP},BP=HP,NP={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},Vb=e=>{const{textColor2:t,textColor1:n,errorColor:o,successColor:r,infoColor:i,warningColor:a,lineHeight:s,fontWeightStrong:l}=e;return Object.assign(Object.assign({},NP),{lineHeight:s,titleFontWeight:l,titleTextColor:n,textColor:t,iconColorError:o,iconColorSuccess:r,iconColorInfo:i,iconColorWarning:a})},zP={name:"Result",common:se,self:Vb},FP=zP,WP={name:"Result",common:ae,self:Vb},jP=WP,Ub={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"},GP={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({},Ub),{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:""})}},VP=GP,UP=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({},Ub),{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:""})},KP={name:"Slider",common:se,self:UP},qP=KP,Kb=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}},XP={name:"Spin",common:se,self:Kb},ZP=XP,YP={name:"Spin",common:ae,self:Kb},JP=YP,qb=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}},QP={name:"Statistic",common:se,self:qb},eA=QP,tA={name:"Statistic",common:ae,self:qb},nA=tA,oA={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"},Xb=e=>{const{fontWeightStrong:t,baseColor:n,textColorDisabled:o,primaryColor:r,errorColor:i,textColor1:a,textColor2:s}=e;return Object.assign(Object.assign({},oA),{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})},rA={name:"Steps",common:se,self:Xb},iA=rA,aA={name:"Steps",common:ae,self:Xb},sA=aA,Zb={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"},lA={name:"Switch",common:ae,self(e){const{primaryColorSuppl:t,opacityDisabled:n,borderRadius:o,primaryColor:r,textColor2:i,baseColor:a}=e,s="rgba(255, 255, 255, .20)";return Object.assign(Object.assign({},Zb),{iconColor:a,textColor:i,loadingColor:t,opacityDisabled:n,railColor:s,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 ${q(r,{alpha:.3})}`})}},cA=lA,dA=e=>{const{primaryColor:t,opacityDisabled:n,borderRadius:o,textColor3:r}=e,i="rgba(0, 0, 0, .14)";return Object.assign(Object.assign({},Zb),{iconColor:r,textColor:"white",loadingColor:t,opacityDisabled:n,railColor:i,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 ${q(t,{alpha:.2})}`})},uA={name:"Switch",common:se,self:dA},hA=uA,fA={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"},Yb=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({},fA),{fontSizeSmall:h,fontSizeMedium:g,fontSizeLarge:f,lineHeight:u,borderRadius:c,borderColor:fe(n,t),borderColorModal:fe(o,t),borderColorPopover:fe(r,t),tdColor:n,tdColorModal:o,tdColorPopover:r,tdColorStriped:fe(n,a),tdColorStripedModal:fe(o,a),tdColorStripedPopover:fe(r,a),thColor:fe(n,i),thColorModal:fe(o,i),thColorPopover:fe(r,i),thTextColor:s,tdTextColor:l,thFontWeight:d})},gA={name:"Table",common:se,self:Yb},mA=gA,pA={name:"Table",common:ae,self:Yb},bA=pA,vA={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"},Jb=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({},vA),{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})},yA={name:"Tabs",common:se,self:Jb},xA=yA,CA={name:"Tabs",common:ae,self(e){const t=Jb(e),{inputColor:n}=e;return t.colorSegment=n,t.tabColorSegment=n,t}},kA=CA,Qb=e=>{const{textColor1:t,textColor2:n,fontWeightStrong:o,fontSize:r}=e;return{fontSize:r,titleTextColor:t,textColor:n,titleFontWeight:o}},SA={name:"Thing",common:se,self:Qb},TA=SA,wA={name:"Thing",common:ae,self:Qb},_A=wA,e0={titleMarginMedium:"0 0 6px 0",titleMarginLarge:"-2px 0 6px 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"},PA={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({},e0),{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})}},AA=PA,EA=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({},e0),{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})},IA={name:"Timeline",common:se,self:EA},RA=IA,t0={extraFontSizeSmall:"12px",extraFontSizeMedium:"12px",extraFontSizeLarge:"14px",titleFontSizeSmall:"14px",titleFontSizeMedium:"16px",titleFontSizeLarge:"16px",closeSize:"20px",closeIconSize:"16px",headerHeightSmall:"44px",headerHeightMedium:"44px",headerHeightLarge:"50px"},MA={name:"Transfer",common:ae,peers:{Checkbox:Hr,Scrollbar:Qt,Input:vn,Empty:or,Button:en},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:C,closeIconColorPressed:_,dividerColor:y}=e;return Object.assign(Object.assign({},t0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:y,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:C,closeIconColorPressed:_})}},LA=MA,DA=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:C,closeIconColorHover:_,closeIconColorPressed:y}=e;return Object.assign(Object.assign({},t0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:f,borderColor:f,listColor:l,headerColor:fe(l,c),titleTextColor:d,titleTextColorDisabled:u,extraTextColor:g,extraTextColorDisabled:u,itemTextColor:h,itemTextColorDisabled:u,itemColorPending:b,titleFontWeight:t,closeColorHover:p,closeColorPressed:m,closeIconColor:C,closeIconColorHover:_,closeIconColorPressed:y})},$A={name:"Transfer",common:se,peers:{Checkbox:Or,Scrollbar:Kt,Input:dn,Empty:qn,Button:qt},self:DA},OA=$A,n0=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:q(i,{alpha:.1}),arrowColor:a,nodeTextColor:s,nodeTextColorDisabled:l,loadingColor:i,dropMarkColor:i,lineColor:n}},HA={name:"Tree",common:se,peers:{Checkbox:Or,Scrollbar:Kt,Empty:qn},self:n0},o0=HA,BA={name:"Tree",common:ae,peers:{Checkbox:Hr,Scrollbar:Qt,Empty:or},self(e){const{primaryColor:t}=e,n=n0(e);return n.nodeColorActive=q(t,{alpha:.15}),n}},r0=BA,NA={name:"TreeSelect",common:ae,peers:{Tree:r0,Empty:or,InternalSelection:Zc}},zA=NA,FA=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"}},WA={name:"TreeSelect",common:se,peers:{Tree:o0,Empty:qn,InternalSelection:Xc},self:FA},jA=WA,GA={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"},i0=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({},GA),{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"})},VA={name:"Typography",common:se,self:i0},sd=VA,UA={name:"Typography",common:ae,self:i0},KA=UA,a0=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:q(o,{alpha:.06}),itemTextColor:r,itemTextColorError:o,itemTextColorSuccess:i,itemIconColor:t,itemDisabledOpacity:a,itemBorderImageCardError:`1px solid ${o}`,itemBorderImageCard:`1px solid ${l}`}},qA={name:"Upload",common:se,peers:{Button:qt,Progress:jb},self:a0},XA=qA,ZA={name:"Upload",common:ae,peers:{Button:en,Progress:Gb},self(e){const{errorColor:t}=e,n=a0(e);return n.itemColorHoverError=q(t,{alpha:.09}),n}},YA=ZA,JA={name:"Watermark",common:ae,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},QA=JA,eE={name:"Watermark",common:se,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},tE=eE,nE={name:"Row",common:se},oE=nE,rE={name:"Row",common:ae},iE=rE,aE=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)"}},sE={name:"FloatButtonGroup",common:se,self:aE},lE=sE,cE={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}}},dE=cE,uE=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}},hE={name:"FloatButton",common:se,self:uE},fE=hE,gE={xs:0,s:640,m:1024,l:1280,xl:1536,xxl:1920},s0=24,hl="__ssr__",mE={layoutShiftDisabled:Boolean,responsive:{type:[String,Boolean],default:"self"},cols:{type:[Number,String],default:s0},itemResponsive:Boolean,collapsed:Boolean,collapsedRows:{type:Number,default:1},itemStyle:[Object,String],xGap:{type:[Number,String],default:0},yGap:{type:[Number,String],default:0}},pE=ce({name:"Grid",inheritAttrs:!1,props:mE,setup(e){const{mergedClsPrefixRef:t,mergedBreakpointsRef:n}=at(e),o=/^\d+$/,r=V(void 0),i=px((n==null?void 0:n.value)||gE),a=wt(()=>!!(e.itemResponsive||!o.test(e.cols.toString())||!o.test(e.xGap.toString())||!o.test(e.yGap.toString()))),s=N(()=>{if(a.value)return e.responsive==="self"?r.value:i.value}),l=wt(()=>{var m;return(m=Number(ar(e.cols.toString(),s.value)))!==null&&m!==void 0?m:s0}),c=wt(()=>ar(e.xGap.toString(),s.value)),d=wt(()=>ar(e.yGap.toString(),s.value)),u=m=>{r.value=m.contentRect.width},h=m=>{Ag(u,m)},g=V(!1),f=N(()=>{if(e.responsive==="self")return h}),b=V(!1),p=V();return $t(()=>{const{value:m}=p;m&&m.hasAttribute(hl)&&(m.removeAttribute(hl),b.value=!0)}),je(Rb,{layoutShiftDisabledRef:Ue(e,"layoutShiftDisabled"),isSsrRef:b,itemStyleRef:Ue(e,"itemStyle"),xGapRef:c,overflowRef:g}),{isSsr:!Jo,contentEl:p,mergedClsPrefix:t,style:N(()=>e.layoutShiftDisabled?{width:"100%",display:"grid",gridTemplateColumns:`repeat(${e.cols}, minmax(0, 1fr))`,columnGap:gr(e.xGap),rowGap:gr(e.yGap)}:{width:"100%",display:"grid",gridTemplateColumns:`repeat(${l.value}, minmax(0, 1fr))`,columnGap:gr(c.value),rowGap:gr(d.value)}),isResponsive:a,responsiveQuery:s,responsiveCols:l,handleResize:f,overflow:g}},render(){if(this.layoutShiftDisabled)return S("div",Mn({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=Ci(Eg(this)),c=[],{collapsed:d,collapsedRows:u,responsiveCols:h,responsiveQuery:g}=this;l.forEach(C=>{var _,y,k,P,v;if(((_=C==null?void 0:C.type)===null||_===void 0?void 0:_.__GRID_ITEM__)!==!0)return;if(w2(C)){const L=pn(C);L.props?L.props.privateShow=!1:L.props={privateShow:!1},c.push({child:L,rawChildSpan:0});return}C.dirs=((y=C.dirs)===null||y===void 0?void 0:y.filter(({dir:L})=>L!==Tr))||null,((k=C.dirs)===null||k===void 0?void 0:k.length)===0&&(C.dirs=null);const T=pn(C),E=Number((v=ar((P=T.props)===null||P===void 0?void 0:P.span,g))!==null&&v!==void 0?v:Eh);E!==0&&c.push({child:T,rawChildSpan:E})});let f=0;const b=(t=c[c.length-1])===null||t===void 0?void 0:t.child;if(b!=null&&b.props){const C=(n=b.props)===null||n===void 0?void 0:n.suffix;C!==void 0&&C!==!1&&(f=Number((r=ar((o=b.props)===null||o===void 0?void 0:o.span,g))!==null&&r!==void 0?r:Eh),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:C,rawChildSpan:_}of c){if(m&&(this.overflow=!0),!m){const y=Number((s=ar((a=C.props)===null||a===void 0?void 0:a.offset,g))!==null&&s!==void 0?s:0),k=Math.min(_+y,h);if(C.props?(C.props.privateSpan=k,C.props.privateOffset=y):C.props={privateSpan:k,privateOffset:y},d){const P=p%h;k+P>h&&(p+=h-P),k+p+f>u*h?m=!0:p+=k}}m&&(C.props?C.props.privateShow!==!0&&(C.props.privateShow=!1):C.props={privateShow:!1})}return S("div",Mn({ref:"contentEl",class:`${this.mergedClsPrefix}-grid`,style:this.style,[hl]:this.isSsr||void 0},this.$attrs),c.map(({child:C})=>C))};return this.isResponsive&&this.responsive==="self"?S(Da,{onResize:this.handleResize},{default:e}):e()}}),l0=e=>{const{primaryColor:t,baseColor:n}=e;return{color:t,iconColor:n}},bE={name:"IconWrapper",common:se,self:l0},vE=bE,yE={name:"IconWrapper",common:ae,self:l0},xE=yE;function CE(){return{toolbarIconColor:"rgba(255, 255, 255, .9)",toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}const kE={name:"Image",common:se,peers:{Tooltip:zi},self:CE},SE={name:"Image",common:ae,peers:{Tooltip:_s},self:e=>{const{textColor2:t}=e;return{toolbarIconColor:t,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}},c0={type:String,default:"static"},TE=te("layout",` - color: var(--n-text-color); - background-color: var(--n-color); - box-sizing: border-box; - position: relative; - z-index: auto; - flex: auto; - overflow: hidden; - transition: - box-shadow .3s var(--n-bezier), - background-color .3s var(--n-bezier), - color .3s var(--n-bezier); -`,[te("layout-scroll-container",` - overflow-x: hidden; - box-sizing: border-box; - height: 100%; - `),J("absolute-positioned",` - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - `)]),wE={embedded:Boolean,position:c0,nativeScrollbar:{type:Boolean,default:!0},scrollbarProps:Object,onScroll:Function,contentClass:String,contentStyle:{type:[String,Object],default:""},hasSider:Boolean,siderPlacement:{type:String,default:"left"}},_E="n-layout";function d0(e){return ce({name:e?"LayoutContent":"Layout",props:Object.assign(Object.assign({},Ee.props),wE),setup(t){const n=V(null),o=V(null),{mergedClsPrefixRef:r,inlineThemeDisabled:i}=at(t),a=Ee("Layout","-layout",TE,ad,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(_E,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=N(()=>{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?Pt("layout",N(()=>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(Ss,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 PE=d0(!1),AE=d0(!0),EE=te("layout-footer",` - transition: - box-shadow .3s var(--n-bezier), - color .3s var(--n-bezier), - background-color .3s var(--n-bezier), - border-color .3s var(--n-bezier); - color: var(--n-text-color); - background-color: var(--n-color); - box-sizing: border-box; -`,[J("absolute-positioned",` - position: absolute; - left: 0; - right: 0; - bottom: 0; - `),J("bordered",` - border-top: solid 1px var(--n-border-color); - `)]),IE=Object.assign(Object.assign({},Ee.props),{inverted:Boolean,position:c0,bordered:Boolean}),RE=ce({name:"LayoutFooter",props:IE,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Ee("Layout","-layout-footer",EE,ad,e,t),r=N(()=>{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?Pt("layout-footer",N(()=>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)}}),u0={extraFontSize:"12px",width:"440px"},ME={name:"Transfer",common:ae,peers:{Checkbox:Hr,Scrollbar:Qt,Input:vn,Empty:or,Button:en},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({},u0),{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})}},LE=ME,DE=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({},u0),{itemHeightSmall:c,itemHeightMedium:l,itemHeightLarge:s,fontSizeSmall:a,fontSizeMedium:i,fontSizeLarge:r,borderRadius:d,borderColor:p,listColor:u,headerColor:fe(u,h),titleTextColor:g,titleTextColorDisabled:f,extraTextColor:b,filterDividerColor:p,itemTextColor:b,itemTextColorDisabled:f,itemColorPending:m,titleFontWeight:t,iconColor:o,iconColorDisabled:n})},$E={name:"Transfer",common:se,peers:{Checkbox:Or,Scrollbar:Kt,Input:dn,Empty:qn,Button:qt},self:DE},OE=$E,h0="n-loading-bar",HE="n-loading-bar-api",BE=te("loading-bar-container",` - z-index: 5999; - position: fixed; - top: 0; - left: 0; - right: 0; - height: 2px; -`,[qc({enterDuration:"0.3s",leaveDuration:"0.8s"}),te("loading-bar",` - width: 100%; - transition: - max-width 4s linear, - background .2s linear; - height: var(--n-height); - `,[J("starting",` - background: var(--n-color-loading); - `),J("finishing",` - background: var(--n-color-loading); - transition: - max-width .2s linear, - background .2s linear; - `),J("error",` - background: var(--n-color-error); - transition: - max-width .2s linear, - background .2s linear; - `)])]);var ua=globalThis&&globalThis.__awaiter||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 ha(e,t){return`${t}-loading-bar ${t}-loading-bar--${e}`}const NE=ce({name:"LoadingBar",props:{containerClass:String,containerStyle:[String,Object]},setup(){const{inlineThemeDisabled:e}=at(),{props:t,mergedClsPrefixRef:n}=Ae(h0),o=V(null),r=V(!1),i=V(!1),a=V(!1),s=V(!1);let l=!1;const c=V(!1),d=N(()=>{const{loadingBarStyle:k}=t;return k?k[c.value?"error":"loading"]:""});function u(){return ua(this,void 0,void 0,function*(){r.value=!1,a.value=!1,l=!1,c.value=!1,s.value=!0,yield Ut(),s.value=!1})}function h(k=0,P=80,v="starting"){return ua(this,void 0,void 0,function*(){if(i.value=!0,yield u(),l)return;a.value=!0,yield Ut();const T=o.value;T&&(T.style.maxWidth=`${k}%`,T.style.transition="none",T.offsetWidth,T.className=ha(v,n.value),T.style.transition="",T.style.maxWidth=`${P}%`)})}function g(){return ua(this,void 0,void 0,function*(){if(l||c.value)return;i.value&&(yield Ut()),l=!0;const k=o.value;k&&(k.className=ha("finishing",n.value),k.style.maxWidth="100%",k.offsetWidth,a.value=!1)})}function f(){if(!(l||c.value))if(!a.value)h(100,100,"error").then(()=>{c.value=!0;const k=o.value;k&&(k.className=ha("error",n.value),k.offsetWidth,a.value=!1)});else{c.value=!0;const k=o.value;if(!k)return;k.className=ha("error",n.value),k.style.maxWidth="100%",k.offsetWidth,a.value=!1}}function b(){r.value=!0}function p(){r.value=!1}function m(){return ua(this,void 0,void 0,function*(){yield u()})}const C=Ee("LoadingBar","-loading-bar",BE,Bb,t,n),_=N(()=>{const{self:{height:k,colorError:P,colorLoading:v}}=C.value;return{"--n-height":k,"--n-color-loading":v,"--n-color-error":P}}),y=e?Pt("loading-bar",void 0,_,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:_,themeClass:y==null?void 0:y.themeClass,onRender:y==null?void 0:y.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),uo(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]})),[[Tr,this.loading||!this.loading&&this.entering]])}})}}),zE=Object.assign(Object.assign({},Ee.props),{to:{type:[String,Object,Boolean],default:void 0},containerClass:String,containerStyle:[String,Object],loadingBarStyle:{type:Object}}),FE=ce({name:"LoadingBarProvider",props:zE,setup(e){const t=Di(),n=V(null),o={start(){var i;t.value?(i=n.value)===null||i===void 0||i.start():Ut(()=>{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():Ut(()=>{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():Ut(()=>{var a;(a=n.value)===null||a===void 0||a.finish()})}},{mergedClsPrefixRef:r}=at(e);return je(HE,o),je(h0,{props:e,mergedClsPrefixRef:r}),Object.assign(o,{loadingBarRef:n})},render(){var e,t;return S(Oe,null,S(ns,{disabled:this.to===!1,to:this.to||"body"},S(NE,{ref:"loadingBarRef",containerStyle:this.containerStyle,containerClass:this.containerClass})),(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),f0={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},g0="n-message-api",m0="n-message-provider",WE=z([te("message-wrapper",` - margin: var(--n-margin); - z-index: 0; - transform-origin: top center; - display: flex; - `,[Fw({overflow:"visible",originalTransition:"transform .3s var(--n-bezier)",enterToProps:{transform:"scale(1)"},leaveToProps:{transform:"scale(0.85)"}})]),te("message",` - box-sizing: border-box; - display: flex; - align-items: center; - transition: - color .3s var(--n-bezier), - box-shadow .3s var(--n-bezier), - background-color .3s var(--n-bezier), - opacity .3s var(--n-bezier), - transform .3s var(--n-bezier), - margin-bottom .3s var(--n-bezier); - padding: var(--n-padding); - border-radius: var(--n-border-radius); - flex-wrap: nowrap; - overflow: hidden; - max-width: var(--n-max-width); - color: var(--n-text-color); - background-color: var(--n-color); - box-shadow: var(--n-box-shadow); - `,[G("content",` - display: inline-block; - line-height: var(--n-line-height); - font-size: var(--n-font-size); - `),G("icon",` - position: relative; - margin: var(--n-icon-margin); - height: var(--n-icon-size); - width: var(--n-icon-size); - font-size: var(--n-icon-size); - flex-shrink: 0; - `,[["default","info","success","warning","error","loading"].map(e=>J(`${e}-type`,[z("> *",` - color: var(--n-icon-color-${e}); - transition: color .3s var(--n-bezier); - `)])),z("> *",` - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - `,[Ei()])]),G("close",` - margin: var(--n-close-margin); - transition: - background-color .3s var(--n-bezier), - color .3s var(--n-bezier); - flex-shrink: 0; - `,[z("&:hover",` - color: var(--n-close-icon-color-hover); - `),z("&:active",` - color: var(--n-close-icon-color-pressed); - `)])]),te("message-container",` - z-index: 6000; - position: fixed; - height: 0; - overflow: visible; - display: flex; - flex-direction: column; - align-items: center; - `,[J("top",` - top: 12px; - left: 0; - right: 0; - `),J("top-left",` - top: 12px; - left: 12px; - right: 0; - align-items: flex-start; - `),J("top-right",` - top: 12px; - left: 0; - right: 12px; - align-items: flex-end; - `),J("bottom",` - bottom: 4px; - left: 0; - right: 0; - justify-content: flex-end; - `),J("bottom-left",` - bottom: 4px; - left: 12px; - right: 0; - justify-content: flex-end; - align-items: flex-start; - `),J("bottom-right",` - bottom: 4px; - left: 0; - right: 12px; - justify-content: flex-end; - align-items: flex-end; - `)])]),jE={info:()=>S(za,null),success:()=>S(Gc,null),warning:()=>S(Vc,null),error:()=>S(jc,null),default:()=>null},GE=ce({name:"Message",props:Object.assign(Object.assign({},f0),{render:Function}),setup(e){const{inlineThemeDisabled:t,mergedRtlRef:n}=at(e),{props:o,mergedClsPrefixRef:r}=Ae(m0),i=xo("Message",n,r),a=Ee("Message","-message",WE,Ob,o,r),s=N(()=>{const{type:c}=e,{common:{cubicBezierEaseInOut:d},self:{padding:u,margin:h,maxWidth:g,iconMargin:f,closeMargin:b,closeSize:p,iconSize:m,fontSize:C,lineHeight:_,borderRadius:y,iconColorInfo:k,iconColorSuccess:P,iconColorWarning:v,iconColorError:T,iconColorLoading:E,closeIconSize:L,closeBorderRadius:j,[ge("textColor",c)]:M,[ge("boxShadow",c)]:K,[ge("color",c)]:ne,[ge("closeColorHover",c)]:H,[ge("closeColorPressed",c)]:U,[ge("closeIconColor",c)]:F,[ge("closeIconColorPressed",c)]:re,[ge("closeIconColorHover",c)]:be}}=a.value;return{"--n-bezier":d,"--n-margin":h,"--n-padding":u,"--n-max-width":g,"--n-font-size":C,"--n-icon-margin":f,"--n-icon-size":m,"--n-close-icon-size":L,"--n-close-border-radius":j,"--n-close-size":p,"--n-close-margin":b,"--n-text-color":M,"--n-color":ne,"--n-box-shadow":K,"--n-icon-color-info":k,"--n-icon-color-success":P,"--n-icon-color-warning":v,"--n-icon-color-error":T,"--n-icon-color-loading":E,"--n-close-color-hover":H,"--n-close-color-pressed":U,"--n-close-icon-color":F,"--n-close-icon-color-pressed":re,"--n-close-icon-color-hover":be,"--n-line-height":_,"--n-border-radius":y}}),l=t?Pt("message",N(()=>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=VE(l,t,r))&&d?S("div",{class:`${r}-message__icon ${r}-message__icon--${t}-type`},S(Cs,null,{default:()=>u})):null,S("div",{class:`${r}-message__content`},Rt(o)),n?S(ks,{clsPrefix:r,class:`${r}-message__close`,onClick:c,absolute:!0}):null))}});function VE(e,t,n){if(typeof e=="function")return e();{const o=t==="loading"?S(Uc,{clsPrefix:n,strokeWidth:24,scale:.85}):jE[t]();return o?S(go,{clsPrefix:n,key:t},{default:()=>o}):null}}const UE=ce({name:"MessageEnvironment",props:Object.assign(Object.assign({},f0),{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);$t(()=>{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(ep,{appear:!0,onAfterLeave:this.handleAfterLeave,onLeave:this.onLeave},{default:()=>[this.show?S(GE,{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]})}}),KE=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]}),qE=ce({name:"MessageProvider",props:KE,setup(e){const{mergedClsPrefixRef:t}=at(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(m0,{props:e,mergedClsPrefixRef:t}),je(g0,r);function i(l,c){const d=as(),u=vo(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(Oe,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.messageList.length?S(ns,{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(UE,Object.assign({ref:r=>{r&&(this.messageRefs[o.key]=r)},internalKey:o.key,onInternalAfterLeave:this.handleAfterLeave},Ec(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 XE(){const e=Ae(g0,null);return e===null&&Ig("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 Is="n-notification-provider",ZE=ce({name:"NotificationContainer",props:{scrollable:{type:Boolean,required:!0},placement:{type:String,required:!0}},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:t,wipTransitionCountRef:n}=Ae(Is),o=V(null);return co(()=>{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(Ss,{theme:o.peers.Scrollbar,themeOverrides:o.peerOverrides.Scrollbar,contentStyle:{overflow:"hidden"}},e):e)}}),YE={info:()=>S(za,null),success:()=>S(Gc,null),warning:()=>S(Vc,null),error:()=>S(jc,null),default:()=>null},ld={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},JE=ss(ld),QE=ce({name:"Notification",props:ld,setup(e){const{mergedClsPrefixRef:t,mergedThemeRef:n,props:o}=Ae(Is),{inlineThemeDisabled:r,mergedRtlRef:i}=at(),a=xo("Notification",i,t),s=N(()=>{const{type:c}=e,{self:{color:d,textColor:u,closeIconColor:h,closeIconColorHover:g,closeIconColorPressed:f,headerTextColor:b,descriptionTextColor:p,actionTextColor:m,borderRadius:C,headerFontWeight:_,boxShadow:y,lineHeight:k,fontSize:P,closeMargin:v,closeSize:T,width:E,padding:L,closeIconSize:j,closeBorderRadius:M,closeColorHover:K,closeColorPressed:ne,titleFontSize:H,metaFontSize:U,descriptionFontSize:F,[ge("iconColor",c)]:re},common:{cubicBezierEaseOut:be,cubicBezierEaseIn:ve,cubicBezierEaseInOut:_e}}=n.value,{left:Me,right:lt,top:Ze,bottom:Ye}=is(L);return{"--n-color":d,"--n-font-size":P,"--n-text-color":u,"--n-description-text-color":p,"--n-action-text-color":m,"--n-title-text-color":b,"--n-title-font-weight":_,"--n-bezier":_e,"--n-bezier-ease-out":be,"--n-bezier-ease-in":ve,"--n-border-radius":C,"--n-box-shadow":y,"--n-close-border-radius":M,"--n-close-color-hover":K,"--n-close-color-pressed":ne,"--n-close-icon-color":h,"--n-close-icon-color-hover":g,"--n-close-icon-color-pressed":f,"--n-line-height":k,"--n-icon-color":re,"--n-close-margin":v,"--n-close-size":T,"--n-close-icon-size":j,"--n-width":E,"--n-padding-left":Me,"--n-padding-right":lt,"--n-padding-top":Ze,"--n-padding-bottom":Ye,"--n-title-font-size":H,"--n-meta-font-size":U,"--n-description-font-size":F}}),l=r?Pt("notification",N(()=>e.type[0]),s,o):void 0;return{mergedClsPrefix:t,showAvatar:N(()=>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?Rt(this.avatar):this.type!=="default"?S(go,{clsPrefix:t},{default:()=>YE[this.type]()}):null):null,this.closable?S(ks,{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`},Rt(this.title)):null,this.description?S("div",{class:`${t}-notification-main__description`},Rt(this.description)):null,this.content?S("pre",{class:`${t}-notification-main__content`},Rt(this.content)):null,this.meta||this.action?S("div",{class:`${t}-notification-main-footer`},this.meta?S("div",{class:`${t}-notification-main-footer__meta`},Rt(this.meta)):null,this.action?S("div",{class:`${t}-notification-main-footer__action`},Rt(this.action)):null):null)))}}),eI=Object.assign(Object.assign({},ld),{duration:Number,onClose:Function,onLeave:Function,onAfterEnter:Function,onAfterLeave:Function,onHide:Function,onAfterShow:Function,onAfterHide:Function}),tI=ce({name:"NotificationEnvironment",props:Object.assign(Object.assign({},eI),{internalKey:{type:String,required:!0},onInternalAfterLeave:{type:Function,required:!0}}),setup(e){const{wipTransitionCountRef:t}=Ae(Is),n=V(!0);let o=null;function r(){n.value=!1,o&&window.clearTimeout(o)}function i(f){t.value++,Ut(()=>{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 $t(()=>{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(QE,Object.assign({},Xo(this.$props,JE),{onClose:this.handleClose,onMouseenter:this.duration&&this.keepAliveOnHover?this.handleMouseenter:void 0,onMouseleave:this.duration&&this.keepAliveOnHover?this.handleMouseleave:void 0})):null})}}),nI=z([te("notification-container",` - z-index: 4000; - position: fixed; - overflow: visible; - display: flex; - flex-direction: column; - align-items: flex-end; - `,[z(">",[te("scrollbar",` - width: initial; - overflow: visible; - height: -moz-fit-content !important; - height: fit-content !important; - max-height: 100vh !important; - `,[z(">",[te("scrollbar-container",` - height: -moz-fit-content !important; - height: fit-content !important; - max-height: 100vh !important; - `,[te("scrollbar-content",` - padding-top: 12px; - padding-bottom: 33px; - `)])])])]),J("top, top-right, top-left",` - top: 12px; - `,[z("&.transitioning >",[te("scrollbar",[z(">",[te("scrollbar-container",` - min-height: 100vh !important; - `)])])])]),J("bottom, bottom-right, bottom-left",` - bottom: 12px; - `,[z(">",[te("scrollbar",[z(">",[te("scrollbar-container",[te("scrollbar-content",` - padding-bottom: 12px; - `)])])])]),te("notification-wrapper",` - display: flex; - align-items: flex-end; - margin-bottom: 0; - margin-top: 12px; - `)]),J("top, bottom",` - left: 50%; - transform: translateX(-50%); - `,[te("notification-wrapper",[z("&.notification-transition-enter-from, &.notification-transition-leave-to",` - transform: scale(0.85); - `),z("&.notification-transition-leave-from, &.notification-transition-enter-to",` - transform: scale(1); - `)])]),J("top",[te("notification-wrapper",` - transform-origin: top center; - `)]),J("bottom",[te("notification-wrapper",` - transform-origin: bottom center; - `)]),J("top-right, bottom-right",[te("notification",` - margin-left: 28px; - margin-right: 16px; - `)]),J("top-left, bottom-left",[te("notification",` - margin-left: 16px; - margin-right: 28px; - `)]),J("top-right",` - right: 0; - `,[fa("top-right")]),J("top-left",` - left: 0; - `,[fa("top-left")]),J("bottom-right",` - right: 0; - `,[fa("bottom-right")]),J("bottom-left",` - left: 0; - `,[fa("bottom-left")]),J("scrollable",[J("top-right",` - top: 0; - `),J("top-left",` - top: 0; - `),J("bottom-right",` - bottom: 0; - `),J("bottom-left",` - bottom: 0; - `)]),te("notification-wrapper",` - margin-bottom: 12px; - `,[z("&.notification-transition-enter-from, &.notification-transition-leave-to",` - opacity: 0; - margin-top: 0 !important; - margin-bottom: 0 !important; - `),z("&.notification-transition-leave-from, &.notification-transition-enter-to",` - opacity: 1; - `),z("&.notification-transition-leave-active",` - transition: - background-color .3s var(--n-bezier), - color .3s var(--n-bezier), - opacity .3s var(--n-bezier), - transform .3s var(--n-bezier-ease-in), - max-height .3s var(--n-bezier), - margin-top .3s linear, - margin-bottom .3s linear, - box-shadow .3s var(--n-bezier); - `),z("&.notification-transition-enter-active",` - transition: - background-color .3s var(--n-bezier), - color .3s var(--n-bezier), - opacity .3s var(--n-bezier), - transform .3s var(--n-bezier-ease-out), - max-height .3s var(--n-bezier), - margin-top .3s linear, - margin-bottom .3s linear, - box-shadow .3s var(--n-bezier); - `)]),te("notification",` - background-color: var(--n-color); - color: var(--n-text-color); - transition: - background-color .3s var(--n-bezier), - color .3s var(--n-bezier), - opacity .3s var(--n-bezier), - box-shadow .3s var(--n-bezier); - font-family: inherit; - font-size: var(--n-font-size); - font-weight: 400; - position: relative; - display: flex; - overflow: hidden; - flex-shrink: 0; - padding-left: var(--n-padding-left); - padding-right: var(--n-padding-right); - width: var(--n-width); - max-width: calc(100vw - 16px - 16px); - border-radius: var(--n-border-radius); - box-shadow: var(--n-box-shadow); - box-sizing: border-box; - opacity: 1; - `,[G("avatar",[te("icon",` - color: var(--n-icon-color); - `),te("base-icon",` - color: var(--n-icon-color); - `)]),J("show-avatar",[te("notification-main",` - margin-left: 40px; - width: calc(100% - 40px); - `)]),J("closable",[te("notification-main",[z("> *:first-child",` - padding-right: 20px; - `)]),G("close",` - position: absolute; - top: 0; - right: 0; - margin: var(--n-close-margin); - transition: - background-color .3s var(--n-bezier), - color .3s var(--n-bezier); - `)]),G("avatar",` - position: absolute; - top: var(--n-padding-top); - left: var(--n-padding-left); - width: 28px; - height: 28px; - font-size: 28px; - display: flex; - align-items: center; - justify-content: center; - `,[te("icon","transition: color .3s var(--n-bezier);")]),te("notification-main",` - padding-top: var(--n-padding-top); - padding-bottom: var(--n-padding-bottom); - box-sizing: border-box; - display: flex; - flex-direction: column; - margin-left: 8px; - width: calc(100% - 8px); - `,[te("notification-main-footer",` - display: flex; - align-items: center; - justify-content: space-between; - margin-top: 12px; - `,[G("meta",` - font-size: var(--n-meta-font-size); - transition: color .3s var(--n-bezier-ease-out); - color: var(--n-description-text-color); - `),G("action",` - cursor: pointer; - transition: color .3s var(--n-bezier-ease-out); - color: var(--n-action-text-color); - `)]),G("header",` - font-weight: var(--n-title-font-weight); - font-size: var(--n-title-font-size); - transition: color .3s var(--n-bezier-ease-out); - color: var(--n-title-text-color); - `),G("description",` - margin-top: 8px; - font-size: var(--n-description-font-size); - white-space: pre-wrap; - word-wrap: break-word; - transition: color .3s var(--n-bezier-ease-out); - color: var(--n-description-text-color); - `),G("content",` - line-height: var(--n-line-height); - margin: 12px 0 0 0; - font-family: inherit; - white-space: pre-wrap; - word-wrap: break-word; - transition: color .3s var(--n-bezier-ease-out); - color: var(--n-text-color); - `,[z("&:first-child","margin: 0;")])])])])]);function fa(e){const n=e.split("-")[1]==="left"?"calc(-100%)":"calc(100%)",o="0";return te("notification-wrapper",[z("&.notification-transition-enter-from, &.notification-transition-leave-to",` - transform: translate(${n}, 0); - `),z("&.notification-transition-leave-from, &.notification-transition-enter-to",` - transform: translate(${o}, 0); - `)])}const oI="n-notification-api",rI=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}),iI=ce({name:"NotificationProvider",props:rI,setup(e){const{mergedClsPrefixRef:t}=at(e),n=V([]),o={},r=new Set;function i(g){const f=as(),b=()=>{r.add(f),o[f]&&o[f].hide()},p=vo(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 C=!1,_=0;for(const y of n.value){if(!r.has(y.key)){o[y.key]&&(y.destroy(),C=!0);break}_++}C||n.value.splice(_,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",nI,Db,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(oI,c),je(Is,{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(Oe,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.notificationList.length?S(ns,{to:(n=this.to)!==null&&n!==void 0?n:"body"},S(ZE,{class:this.containerClass,style:this.containerStyle,scrollable:this.scrollable&&o!=="top"&&o!=="bottom",placement:o},{default:()=>this.notificationList.map(r=>S(tI,Object.assign({ref:i=>{const a=r.key;i===null?delete this.notificationRefs[a]:this.notificationRefs[a]=i}},Ec(r,["destroy","hide","deactivate"]),{internalKey:r.key,onInternalAfterLeave:this.handleAfterLeave,keepAliveOnHover:r.keepAliveOnHover===void 0?this.keepAliveOnHover:r.keepAliveOnHover})))})):null)}}),aI={name:"QrCode",common:ae,self:e=>({borderRadius:e.borderRadius})},sI=aI,lI=e=>({borderRadius:e.borderRadius}),cI={name:"QrCode",common:se,self:lI},dI=cI,uI={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}}},hI=e=>{const{heightSmall:t,heightMedium:n,heightLarge:o,borderRadius:r}=e;return{color:"#eee",colorEnd:"#ddd",borderRadius:r,heightSmall:t,heightMedium:n,heightLarge:o}},fI={name:"Skeleton",common:se,self:hI},gI={name:"Split",common:ae},mI=gI,pI=e=>{const{primaryColorHover:t,borderColor:n}=e;return{resizableTriggerColorHover:t,resizableTriggerColor:n}},bI={name:"Split",common:se,self:pI},vI=bI,yI=te("h",` - font-size: var(--n-font-size); - font-weight: var(--n-font-weight); - margin: var(--n-margin); - transition: color .3s var(--n-bezier); - color: var(--n-text-color); -`,[z("&:first-child",{marginTop:0}),J("prefix-bar",{position:"relative",paddingLeft:"var(--n-prefix-width)"},[J("align-text",{paddingLeft:0},[z("&::before",{left:"calc(-1 * var(--n-prefix-width))"})]),z("&::before",` - content: ""; - width: var(--n-bar-width); - border-radius: calc(var(--n-bar-width) / 2); - transition: background-color .3s var(--n-bezier); - left: 0; - top: 0; - bottom: 0; - position: absolute; - `),z("&::before",{backgroundColor:"var(--n-bar-color)"})])]),xI=Object.assign(Object.assign({},Ee.props),{type:{type:String,default:"default"},prefix:String,alignText:Boolean}),Br=e=>ce({name:`H${e}`,props:xI,setup(t){const{mergedClsPrefixRef:n,inlineThemeDisabled:o}=at(t),r=Ee("Typography","-h",yI,sd,t,n),i=N(()=>{const{type:s}=t,{common:{cubicBezierEaseInOut:l},self:{headerFontWeight:c,headerTextColor:d,[ge("headerPrefixWidth",e)]:u,[ge("headerFontSize",e)]:h,[ge("headerMargin",e)]:g,[ge("headerBarWidth",e)]:f,[ge("headerBarColor",s)]:b}}=r.value;return{"--n-bezier":l,"--n-font-size":h,"--n-margin":g,"--n-bar-color":b,"--n-bar-width":f,"--n-font-weight":c,"--n-text-color":d,"--n-prefix-width":u}}),a=o?Pt(`h${e}`,N(()=>t.type[0]),i,t):void 0;return{mergedClsPrefix:n,cssVars:o?void 0:i,themeClass:a==null?void 0:a.themeClass,onRender:a==null?void 0:a.onRender}},render(){var t;const{prefix:n,alignText:o,mergedClsPrefix:r,cssVars:i,$slots:a}=this;return(t=this.onRender)===null||t===void 0||t.call(this),S(`h${e}`,{class:[`${r}-h`,`${r}-h${e}`,this.themeClass,{[`${r}-h--prefix-bar`]:n,[`${r}-h--align-text`]:o}],style:i},a)}}),CI=Br("1"),kI=Br("2");Br("3");Br("4");Br("5");Br("6");const SI=te("text",` - transition: color .3s var(--n-bezier); - color: var(--n-text-color); -`,[J("strong",` - font-weight: var(--n-font-weight-strong); - `),J("italic",{fontStyle:"italic"}),J("underline",{textDecoration:"underline"}),J("code",` - line-height: 1.4; - display: inline-block; - font-family: var(--n-font-famliy-mono); - transition: - color .3s var(--n-bezier), - border-color .3s var(--n-bezier), - background-color .3s var(--n-bezier); - box-sizing: border-box; - padding: .05em .35em 0 .35em; - border-radius: var(--n-code-border-radius); - font-size: .9em; - color: var(--n-code-text-color); - background-color: var(--n-code-color); - border: var(--n-code-border); - `)]),TI=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}}),Ul=ce({name:"Text",props:TI,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Ee("Typography","-text",SI,sd,e,t),r=N(()=>{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?Pt("text",N(()=>`${e.type[0]}${e.depth||""}`),r,e):void 0;return{mergedClsPrefix:t,compitableTag:jg(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)}}),p0=()=>({}),wI={name:"Equation",common:se,self:p0},_I=wI,PI={name:"Equation",common:ae,self:p0},AI=PI,EI={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)"}}},II=EI,RI={name:"dark",common:ae,Alert:$w,Anchor:Uw,AutoComplete:a8,Avatar:_p,AvatarGroup:h8,BackTop:g8,Badge:y8,Breadcrumb:P8,Button:en,ButtonGroup:B_,Calendar:N8,Card:Dp,Carousel:e9,Cascader:s9,Checkbox:Hr,Code:Bp,Collapse:g9,CollapseTransition:v9,ColorPicker:j8,DataTable:G9,DatePicker:v7,Descriptions:S7,Dialog:mb,Divider:V7,Drawer:J7,Dropdown:ed,DynamicInput:e_,DynamicTags:d_,Element:g_,Empty:or,Ellipsis:Yp,Equation:AI,Flex:v_,Form:__,GradientText:W_,Icon:J9,IconWrapper:xE,Image:SE,Input:vn,InputNumber:K_,LegacyTransfer:LE,Layout:J_,List:rP,LoadingBar:aP,Log:dP,Menu:SP,Mention:mP,Message:O_,Modal:L7,Notification:M_,PageHeader:_P,Pagination:Xp,Popconfirm:RP,Popover:rr,Popselect:Wp,Progress:Gb,QrCode:sI,Radio:Qp,Rate:$P,Result:jP,Row:iE,Scrollbar:Qt,Select:Up,Skeleton:uI,Slider:VP,Space:_b,Spin:JP,Statistic:nA,Steps:sA,Switch:cA,Table:bA,Tabs:kA,Tag:mp,Thing:_A,TimePicker:ub,Timeline:AA,Tooltip:_s,Transfer:LA,Tree:r0,TreeSelect:zA,Typography:KA,Upload:YA,Watermark:QA,Split:mI,FloatButton:dE,FloatButtonGroup:II},MI={name:"light",common:se,Alert:Bw,Anchor:Gw,AutoComplete:r8,Avatar:wp,AvatarGroup:d8,BackTop:b8,Badge:k8,Breadcrumb:w8,Button:qt,ButtonGroup:z_,Calendar:H8,Card:Yc,Carousel:J8,Cascader:i9,Checkbox:Or,Code:Np,Collapse:h9,CollapseTransition:p9,ColorPicker:F8,DataTable:W9,DatePicker:p7,Descriptions:C7,Dialog:od,Divider:kb,Drawer:Z7,Dropdown:Ps,DynamicInput:o_,DynamicTags:h_,Element:Ab,Empty:qn,Equation:_I,Ellipsis:Qc,Flex:C_,Form:T_,GradientText:V_,Icon:ib,IconWrapper:vE,Image:kE,Input:dn,InputNumber:Z_,Layout:ad,LegacyTransfer:OE,List:nP,LoadingBar:Bb,Log:fP,Menu:CP,Mention:vP,Message:Ob,Modal:xb,Notification:Db,PageHeader:wP,Pagination:qp,Popconfirm:EP,Popover:Co,Popselect:jp,Progress:jb,QrCode:dI,Radio:eb,Rate:BP,Row:oE,Result:FP,Scrollbar:Kt,Skeleton:fI,Select:Vp,Slider:qP,Space:id,Spin:ZP,Statistic:eA,Steps:iA,Switch:hA,Table:mA,Tabs:xA,Tag:pp,Thing:TA,TimePicker:db,Timeline:RA,Tooltip:zi,Transfer:OA,Tree:o0,TreeSelect:jA,Typography:sd,Upload:XA,Watermark:tE,Split:vI,FloatButton:fE,FloatButtonGroup:lE};var LI=!1;/*! - * pinia v2.1.7 - * (c) 2023 Eduardo San Martin Morote - * @license MIT - */let b0;const Rs=e=>b0=e,v0=Symbol();function Kl(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var di;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(di||(di={}));function DI(){const e=dc(!0),t=e.run(()=>V({}));let n=[],o=[];const r=hi({install(i){Rs(r),r._a=i,i.provide(v0,r),i.config.globalProperties.$pinia=r,o.forEach(a=>n.push(a)),o=[]},use(i){return!this._a&&!LI?o.push(i):n.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const y0=()=>{};function Ih(e,t,n,o=y0){e.push(t);const r=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),o())};return!n&&uc()&&Tf(r),r}function ur(e,...t){e.slice().forEach(n=>{n(...t)})}const $I=e=>e();function ql(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];Kl(r)&&Kl(o)&&e.hasOwnProperty(n)&&!ht(o)&&!Go(o)?e[n]=ql(r,o):e[n]=o}return e}const OI=Symbol();function HI(e){return!Kl(e)||!e.hasOwnProperty(OI)}const{assign:to}=Object;function BI(e){return!!(ht(e)&&e.effect)}function NI(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=wv(n.state.value[e]);return to(d,i,Object.keys(a||{}).reduce((u,h)=>(u[h]=hi(N(()=>{Rs(n);const g=n._s.get(e);return a[h].call(g,g)})),u),{}))}return l=x0(e,c,t,n,o,!0),l}function x0(e,t,n={},o,r,i){let a;const s=to({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(T){let E;c=d=!1,typeof T=="function"?(T(o.state.value[e]),E={type:di.patchFunction,storeId:e,events:g}):(ql(o.state.value[e],T),E={type:di.patchObject,payload:T,storeId:e,events:g});const L=b=Symbol();Ut().then(()=>{b===L&&(c=!0)}),d=!0,ur(u,E,o.state.value[e])}const m=i?function(){const{state:E}=n,L=E?E():{};this.$patch(j=>{to(j,L)})}:y0;function C(){a.stop(),u=[],h=[],o._s.delete(e)}function _(T,E){return function(){Rs(o);const L=Array.from(arguments),j=[],M=[];function K(U){j.push(U)}function ne(U){M.push(U)}ur(h,{args:L,name:T,store:k,after:K,onError:ne});let H;try{H=E.apply(this&&this.$id===e?this:k,L)}catch(U){throw ur(M,U),U}return H instanceof Promise?H.then(U=>(ur(j,U),U)).catch(U=>(ur(M,U),Promise.reject(U))):(ur(j,H),H)}}const y={_p:o,$id:e,$onAction:Ih.bind(null,h),$patch:p,$reset:m,$subscribe(T,E={}){const L=Ih(u,T,E.detached,()=>j()),j=a.run(()=>et(()=>o.state.value[e],M=>{(E.flush==="sync"?d:c)&&T({storeId:e,type:di.direct,events:g},M)},to({},l,E)));return L},$dispose:C},k=vo(y);o._s.set(e,k);const v=(o._a&&o._a.runWithContext||$I)(()=>o._e.run(()=>(a=dc()).run(t)));for(const T in v){const E=v[T];if(ht(E)&&!BI(E)||Go(E))i||(f&&HI(E)&&(ht(E)?E.value=f[T]:ql(E,f[T])),o.state.value[e][T]=E);else if(typeof E=="function"){const L=_(T,E);v[T]=L,s.actions[T]=E}}return to(k,v),to(He(k),v),Object.defineProperty(k,"$state",{get:()=>o.state.value[e],set:T=>{p(E=>{to(E,T)})}}),o._p.forEach(T=>{to(k,a.run(()=>T({store:k,app:o._a,pinia:o,options:s})))}),f&&i&&n.hydrate&&n.hydrate(k.$state,f),c=!0,d=!0,k}function zI(e,t,n){let o,r;const i=typeof t=="function";typeof e=="string"?(o=e,r=i?n:t):(r=e,o=e.id);function a(s,l){const c=ay();return s=s||(c?Ae(v0,null):null),s&&Rs(s),s=b0,s._s.has(o)||(i?x0(o,t,r,s):NI(o,r,s)),s._s.get(o)}return a.$id=o,a}const C0=zI("app",{state:()=>({theme:ux().value}),persist:{enabled:!0}}),FI={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},WI=Wt("path",{opacity:".3",d:"M8 7h11v14H8z",fill:"currentColor"},null,-1),jI=Wt("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),GI=[WI,jI],VI=ce({name:"ContentCopyTwotone",render:function(t,n){return Ve(),mn("svg",FI,GI)}}),UI={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},KI=Wt("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),qI=Wt("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),XI=[KI,qI],ZI=ce({name:"LanguageTwotone",render:function(t,n){return Ve(),mn("svg",UI,XI)}}),YI={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},JI=Wt("circle",{cx:"18",cy:"5",opacity:".3",r:"1",fill:"currentColor"},null,-1),QI=Wt("circle",{cx:"6",cy:"12",opacity:".3",r:"1",fill:"currentColor"},null,-1),eR=Wt("circle",{cx:"18",cy:"19.02",opacity:".3",r:"1",fill:"currentColor"},null,-1),tR=Wt("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),nR=[JI,QI,eR,tR],oR=ce({name:"ShareTwotone",render:function(t,n){return Ve(),mn("svg",YI,nR)}}),rR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},iR=Wt("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),aR=[iR],sR=ce({name:"Moon",render:function(t,n){return Ve(),mn("svg",rR,aR)}}),lR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},cR=Wt("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[Wt("circle",{cx:"12",cy:"12",r:"4"}),Wt("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),dR=[cR],uR=ce({name:"Sun",render:function(t,n){return Ve(),mn("svg",lR,dR)}}),Rh=(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 hR=({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)),Rh(l,t))}),t.$subscribe(()=>{s.forEach(l=>{Rh(l,t)})})}};/*! - * shared v9.13.1 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */const ja=typeof window<"u",ko=(e,t=!1)=>t?Symbol.for(e):Symbol(e),fR=(e,t,n)=>gR({l:e,k:t,s:n}),gR=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),yt=e=>typeof e=="number"&&isFinite(e),mR=e=>S0(e)==="[object Date]",mo=e=>S0(e)==="[object RegExp]",Ms=e=>Pe(e)&&Object.keys(e).length===0,Dt=Object.assign;let Mh;const Fn=()=>Mh||(Mh=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Lh(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const pR=Object.prototype.hasOwnProperty;function Ga(e,t){return pR.call(e,t)}const rt=Array.isArray,Qe=e=>typeof e=="function",de=e=>typeof e=="string",$e=e=>typeof e=="boolean",Ge=e=>e!==null&&typeof e=="object",bR=e=>Ge(e)&&Qe(e.then)&&Qe(e.catch),k0=Object.prototype.toString,S0=e=>k0.call(e),Pe=e=>{if(!Ge(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},vR=e=>e==null?"":rt(e)||Pe(e)&&e.toString===k0?JSON.stringify(e,null,2):String(e);function yR(e,t=""){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,"")}function Ls(e){let t=e;return()=>++t}function xR(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const ga=e=>!Ge(e)||rt(e);function Sa(e,t){if(ga(e)||ga(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=>{ga(o[i])||ga(r[i])?r[i]=o[i]:n.push({src:o[i],des:r[i]})})}}/*! - * message-compiler v9.13.1 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */function CR(e,t,n){return{line:e,column:t,offset:n}}function Va(e,t,n){const o={start:e,end:t};return n!=null&&(o.source=n),o}const kR=/\{([0-9a-zA-Z]+)\}/g;function T0(e,...t){return t.length===1&&SR(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(kR,(n,o)=>t.hasOwnProperty(o)?t[o]:"")}const w0=Object.assign,Dh=e=>typeof e=="string",SR=e=>e!==null&&typeof e=="object";function _0(e,t=""){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,"")}const cd={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},TR={[cd.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function wR(e,t,...n){const o=T0(TR[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},_R={[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 Nr(e,t,n={}){const{domain:o,messages:r,args:i}=n,a=T0((r||_R)[e]||"",...i||[]),s=new SyntaxError(String(a));return s.code=e,t&&(s.location=t),s.domain=o,s}function PR(e){throw e}const Bn=" ",AR="\r",Vt=` -`,ER=String.fromCharCode(8232),IR=String.fromCharCode(8233);function RR(e){const t=e;let n=0,o=1,r=1,i=0;const a=v=>t[v]===AR&&t[v+1]===Vt,s=v=>t[v]===Vt,l=v=>t[v]===IR,c=v=>t[v]===ER,d=v=>a(v)||s(v)||l(v)||c(v),u=()=>n,h=()=>o,g=()=>r,f=()=>i,b=v=>a(v)||l(v)||c(v)?Vt:t[v],p=()=>b(n),m=()=>b(n+i);function C(){return i=0,d(n)&&(o++,r=0),a(n)&&n++,n++,r++,t[n]}function _(){return a(n+i)&&i++,i++,t[n+i]}function y(){n=0,o=1,r=1,i=0}function k(v=0){i=v}function P(){const v=n+i;for(;v!==n;)C();i=0}return{index:u,line:h,column:g,peekOffset:f,charAt:b,currentChar:p,currentPeek:m,next:C,peek:_,reset:y,resetPeek:k,skipToPeek:P}}const Qn=void 0,MR=".",$h="'",LR="tokenizer";function DR(e,t={}){const n=t.location!==!1,o=RR(e),r=()=>o.index(),i=()=>CR(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(x,w,R,...W){const ie=c();if(w.column+=R,w.offset+=R,d){const Q=n?Va(ie.startLoc,w):null,$=Nr(x,Q,{domain:LR,args:W});d($)}}function h(x,w,R){x.endLoc=i(),x.currentType=w;const W={type:w};return n&&(W.loc=Va(x.startLoc,x.endLoc)),R!=null&&(W.value=R),W}const g=x=>h(x,14);function f(x,w){return x.currentChar()===w?(x.next(),w):(u(Te.EXPECTED_TOKEN,i(),0,w),"")}function b(x){let w="";for(;x.currentPeek()===Bn||x.currentPeek()===Vt;)w+=x.currentPeek(),x.peek();return w}function p(x){const w=b(x);return x.skipToPeek(),w}function m(x){if(x===Qn)return!1;const w=x.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w===95}function C(x){if(x===Qn)return!1;const w=x.charCodeAt(0);return w>=48&&w<=57}function _(x,w){const{currentType:R}=w;if(R!==2)return!1;b(x);const W=m(x.currentPeek());return x.resetPeek(),W}function y(x,w){const{currentType:R}=w;if(R!==2)return!1;b(x);const W=x.currentPeek()==="-"?x.peek():x.currentPeek(),ie=C(W);return x.resetPeek(),ie}function k(x,w){const{currentType:R}=w;if(R!==2)return!1;b(x);const W=x.currentPeek()===$h;return x.resetPeek(),W}function P(x,w){const{currentType:R}=w;if(R!==8)return!1;b(x);const W=x.currentPeek()===".";return x.resetPeek(),W}function v(x,w){const{currentType:R}=w;if(R!==9)return!1;b(x);const W=m(x.currentPeek());return x.resetPeek(),W}function T(x,w){const{currentType:R}=w;if(!(R===8||R===12))return!1;b(x);const W=x.currentPeek()===":";return x.resetPeek(),W}function E(x,w){const{currentType:R}=w;if(R!==10)return!1;const W=()=>{const Q=x.currentPeek();return Q==="{"?m(x.peek()):Q==="@"||Q==="%"||Q==="|"||Q===":"||Q==="."||Q===Bn||!Q?!1:Q===Vt?(x.peek(),W()):M(x,!1)},ie=W();return x.resetPeek(),ie}function L(x){b(x);const w=x.currentPeek()==="|";return x.resetPeek(),w}function j(x){const w=b(x),R=x.currentPeek()==="%"&&x.peek()==="{";return x.resetPeek(),{isModulo:R,hasSpace:w.length>0}}function M(x,w=!0){const R=(ie=!1,Q="",$=!1)=>{const B=x.currentPeek();return B==="{"?Q==="%"?!1:ie:B==="@"||!B?Q==="%"?!0:ie:B==="%"?(x.peek(),R(ie,"%",!0)):B==="|"?Q==="%"||$?!0:!(Q===Bn||Q===Vt):B===Bn?(x.peek(),R(!0,Bn,$)):B===Vt?(x.peek(),R(!0,Vt,$)):!0},W=R();return w&&x.resetPeek(),W}function K(x,w){const R=x.currentChar();return R===Qn?Qn:w(R)?(x.next(),R):null}function ne(x){const w=x.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36}function H(x){return K(x,ne)}function U(x){const w=x.charCodeAt(0);return w>=97&&w<=122||w>=65&&w<=90||w>=48&&w<=57||w===95||w===36||w===45}function F(x){return K(x,U)}function re(x){const w=x.charCodeAt(0);return w>=48&&w<=57}function be(x){return K(x,re)}function ve(x){const w=x.charCodeAt(0);return w>=48&&w<=57||w>=65&&w<=70||w>=97&&w<=102}function _e(x){return K(x,ve)}function Me(x){let w="",R="";for(;w=be(x);)R+=w;return R}function lt(x){p(x);const w=x.currentChar();return w!=="%"&&u(Te.EXPECTED_TOKEN,i(),0,w),x.next(),"%"}function Ze(x){let w="";for(;;){const R=x.currentChar();if(R==="{"||R==="}"||R==="@"||R==="|"||!R)break;if(R==="%")if(M(x))w+=R,x.next();else break;else if(R===Bn||R===Vt)if(M(x))w+=R,x.next();else{if(L(x))break;w+=R,x.next()}else w+=R,x.next()}return w}function Ye(x){p(x);let w="",R="";for(;w=F(x);)R+=w;return x.currentChar()===Qn&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),R}function Ie(x){p(x);let w="";return x.currentChar()==="-"?(x.next(),w+=`-${Me(x)}`):w+=Me(x),x.currentChar()===Qn&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w}function De(x){return x!==$h&&x!==Vt}function Ot(x){p(x),f(x,"'");let w="",R="";for(;w=K(x,De);)w==="\\"?R+=Le(x):R+=w;const W=x.currentChar();return W===Vt||W===Qn?(u(Te.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),W===Vt&&(x.next(),f(x,"'")),R):(f(x,"'"),R)}function Le(x){const w=x.currentChar();switch(w){case"\\":case"'":return x.next(),`\\${w}`;case"u":return ct(x,w,4);case"U":return ct(x,w,6);default:return u(Te.UNKNOWN_ESCAPE_SEQUENCE,i(),0,w),""}}function ct(x,w,R){f(x,w);let W="";for(let ie=0;ie{const W=x.currentChar();return W==="{"||W==="%"||W==="@"||W==="|"||W==="("||W===")"||!W||W===Bn?R:(R+=W,x.next(),w(R))};return w("")}function O(x){p(x);const w=f(x,"|");return p(x),w}function X(x,w){let R=null;switch(x.currentChar()){case"{":return w.braceNest>=1&&u(Te.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),x.next(),R=h(w,2,"{"),p(x),w.braceNest++,R;case"}":return w.braceNest>0&&w.currentType===2&&u(Te.EMPTY_PLACEHOLDER,i(),0),x.next(),R=h(w,3,"}"),w.braceNest--,w.braceNest>0&&p(x),w.inLinked&&w.braceNest===0&&(w.inLinked=!1),R;case"@":return w.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),R=Z(x,w)||g(w),w.braceNest=0,R;default:{let ie=!0,Q=!0,$=!0;if(L(x))return w.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),R=h(w,1,O(x)),w.braceNest=0,w.inLinked=!1,R;if(w.braceNest>0&&(w.currentType===5||w.currentType===6||w.currentType===7))return u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),w.braceNest=0,oe(x,w);if(ie=_(x,w))return R=h(w,5,Ye(x)),p(x),R;if(Q=y(x,w))return R=h(w,6,Ie(x)),p(x),R;if($=k(x,w))return R=h(w,7,Ot(x)),p(x),R;if(!ie&&!Q&&!$)return R=h(w,13,bt(x)),u(Te.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,R.value),p(x),R;break}}return R}function Z(x,w){const{currentType:R}=w;let W=null;const ie=x.currentChar();switch((R===8||R===9||R===12||R===10)&&(ie===Vt||ie===Bn)&&u(Te.INVALID_LINKED_FORMAT,i(),0),ie){case"@":return x.next(),W=h(w,8,"@"),w.inLinked=!0,W;case".":return p(x),x.next(),h(w,9,".");case":":return p(x),x.next(),h(w,10,":");default:return L(x)?(W=h(w,1,O(x)),w.braceNest=0,w.inLinked=!1,W):P(x,w)||T(x,w)?(p(x),Z(x,w)):v(x,w)?(p(x),h(w,12,I(x))):E(x,w)?(p(x),ie==="{"?X(x,w)||W:h(w,11,A(x))):(R===8&&u(Te.INVALID_LINKED_FORMAT,i(),0),w.braceNest=0,w.inLinked=!1,oe(x,w))}}function oe(x,w){let R={type:14};if(w.braceNest>0)return X(x,w)||g(w);if(w.inLinked)return Z(x,w)||g(w);switch(x.currentChar()){case"{":return X(x,w)||g(w);case"}":return u(Te.UNBALANCED_CLOSING_BRACE,i(),0),x.next(),h(w,3,"}");case"@":return Z(x,w)||g(w);default:{if(L(x))return R=h(w,1,O(x)),w.braceNest=0,w.inLinked=!1,R;const{isModulo:ie,hasSpace:Q}=j(x);if(ie)return Q?h(w,0,Ze(x)):h(w,4,lt(x));if(M(x))return h(w,0,Ze(x));break}}return R}function le(){const{currentType:x,offset:w,startLoc:R,endLoc:W}=l;return l.lastType=x,l.lastOffset=w,l.lastStartLoc=R,l.lastEndLoc=W,l.offset=r(),l.startLoc=i(),o.currentChar()===Qn?h(l,14):oe(o,l)}return{nextToken:le,currentOffset:r,currentPosition:i,context:c}}const $R="parser",OR=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function HR(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 BR(e={}){const t=e.location!==!1,{onError:n,onWarn:o}=e;function r(_,y,k,P,...v){const T=_.currentPosition();if(T.offset+=P,T.column+=P,n){const E=t?Va(k,T):null,L=Nr(y,E,{domain:$R,args:v});n(L)}}function i(_,y,k,P,...v){const T=_.currentPosition();if(T.offset+=P,T.column+=P,o){const E=t?Va(k,T):null;o(wR(y,E,v))}}function a(_,y,k){const P={type:_};return t&&(P.start=y,P.end=y,P.loc={start:k,end:k}),P}function s(_,y,k,P){P&&(_.type=P),t&&(_.end=y,_.loc&&(_.loc.end=k))}function l(_,y){const k=_.context(),P=a(3,k.offset,k.startLoc);return P.value=y,s(P,_.currentOffset(),_.currentPosition()),P}function c(_,y){const k=_.context(),{lastOffset:P,lastStartLoc:v}=k,T=a(5,P,v);return T.index=parseInt(y,10),_.nextToken(),s(T,_.currentOffset(),_.currentPosition()),T}function d(_,y,k){const P=_.context(),{lastOffset:v,lastStartLoc:T}=P,E=a(4,v,T);return E.key=y,k===!0&&(E.modulo=!0),_.nextToken(),s(E,_.currentOffset(),_.currentPosition()),E}function u(_,y){const k=_.context(),{lastOffset:P,lastStartLoc:v}=k,T=a(9,P,v);return T.value=y.replace(OR,HR),_.nextToken(),s(T,_.currentOffset(),_.currentPosition()),T}function h(_){const y=_.nextToken(),k=_.context(),{lastOffset:P,lastStartLoc:v}=k,T=a(8,P,v);return y.type!==12?(r(_,Te.UNEXPECTED_EMPTY_LINKED_MODIFIER,k.lastStartLoc,0),T.value="",s(T,P,v),{nextConsumeToken:y,node:T}):(y.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,xn(y)),T.value=y.value||"",s(T,_.currentOffset(),_.currentPosition()),{node:T})}function g(_,y){const k=_.context(),P=a(7,k.offset,k.startLoc);return P.value=y,s(P,_.currentOffset(),_.currentPosition()),P}function f(_){const y=_.context(),k=a(6,y.offset,y.startLoc);let P=_.nextToken();if(P.type===9){const v=h(_);k.modifier=v.node,P=v.nextConsumeToken||_.nextToken()}switch(P.type!==10&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(P)),P=_.nextToken(),P.type===2&&(P=_.nextToken()),P.type){case 11:P.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(P)),k.key=g(_,P.value||"");break;case 5:P.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(P)),k.key=d(_,P.value||"");break;case 6:P.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(P)),k.key=c(_,P.value||"");break;case 7:P.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(P)),k.key=u(_,P.value||"");break;default:{r(_,Te.UNEXPECTED_EMPTY_LINKED_KEY,y.lastStartLoc,0);const v=_.context(),T=a(7,v.offset,v.startLoc);return T.value="",s(T,v.offset,v.startLoc),k.key=T,s(k,v.offset,v.startLoc),{nextConsumeToken:P,node:k}}}return s(k,_.currentOffset(),_.currentPosition()),{node:k}}function b(_){const y=_.context(),k=y.currentType===1?_.currentOffset():y.offset,P=y.currentType===1?y.endLoc:y.startLoc,v=a(2,k,P);v.items=[];let T=null,E=null;do{const M=T||_.nextToken();switch(T=null,M.type){case 0:M.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(M)),v.items.push(l(_,M.value||""));break;case 6:M.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(M)),v.items.push(c(_,M.value||""));break;case 4:E=!0;break;case 5:M.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(M)),v.items.push(d(_,M.value||"",!!E)),E&&(i(_,cd.USE_MODULO_SYNTAX,y.lastStartLoc,0,xn(M)),E=null);break;case 7:M.value==null&&r(_,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,xn(M)),v.items.push(u(_,M.value||""));break;case 8:{const K=f(_);v.items.push(K.node),T=K.nextConsumeToken||null;break}}}while(y.currentType!==14&&y.currentType!==1);const L=y.currentType===1?y.lastOffset:_.currentOffset(),j=y.currentType===1?y.lastEndLoc:_.currentPosition();return s(v,L,j),v}function p(_,y,k,P){const v=_.context();let T=P.items.length===0;const E=a(1,y,k);E.cases=[],E.cases.push(P);do{const L=b(_);T||(T=L.items.length===0),E.cases.push(L)}while(v.currentType!==14);return T&&r(_,Te.MUST_HAVE_MESSAGES_IN_PLURAL,k,0),s(E,_.currentOffset(),_.currentPosition()),E}function m(_){const y=_.context(),{offset:k,startLoc:P}=y,v=b(_);return y.currentType===14?v:p(_,k,P,v)}function C(_){const y=DR(_,w0({},e)),k=y.context(),P=a(0,k.offset,k.startLoc);return t&&P.loc&&(P.loc.source=_),P.body=m(y),e.onCacheKey&&(P.cacheKey=e.onCacheKey(_)),k.currentType!==14&&r(y,Te.UNEXPECTED_LEXICAL_ANALYSIS,k.lastStartLoc,0,_[k.offset]||""),s(P,y.currentOffset(),y.currentPosition()),P}return{parse:C}}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 NR(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:i=>(n.helpers.add(i),i)}}function Oh(e,t){for(let n=0;nHh(n)),e}function Hh(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 C=m?r:"";c(i?C+" ".repeat(p):C)}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 VR(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),Pr(e,t.key),t.modifier?(e.push(", "),Pr(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function UR(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=Dh(t.mode)?t.mode:"normal",o=Dh(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=GR(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 { ${_0(s.map(u=>`${u}: _${u}`),", ")} } = ctx`),l.newline()),l.push("return "),Pr(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 ZR(e,t={}){const n=w0({},t),o=!!n.jit,r=!!n.minify,i=n.optimize==null?!0:n.optimize,s=BR(n).parse(e);return o?(i&&FR(s),r&&fr(s),{ast:s,code:""}):(zR(s,n),XR(s,n))}/*! - * core-base v9.13.1 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */function YR(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Fn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Fn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Fn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const So=[];So[0]={w:[0],i:[3,0],"[":[4],o:[7]};So[1]={w:[1],".":[2],"[":[4],o:[7]};So[2]={w:[2],i:[3,0],0:[3,0]};So[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};So[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};So[5]={"'":[4,0],o:8,l:[5,0]};So[6]={'"':[4,0],o:8,l:[6,0]};const JR=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function QR(e){return JR.test(e)}function eM(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 tM(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 nM(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:QR(t)?eM(t):"*"+t}function oM(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=nM(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=tM(i),u=So[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 Bh=new Map;function rM(e,t){return Ge(e)?e[t]:null}function iM(e,t){if(!Ge(e))return null;let n=Bh.get(t);if(n||(n=oM(t),n&&Bh.set(t,n)),!n)return null;const o=n.length;let r=e,i=0;for(;ie,sM=e=>"",lM="text",cM=e=>e.length===0?"":yR(e),dM=vR;function Nh(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function uM(e){const t=yt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(yt(e.named.count)||yt(e.named.n))?yt(e.named.count)?e.named.count:yt(e.named.n)?e.named.n:t:t}function hM(e,t){t.count||(t.count=e),t.n||(t.n=e)}function fM(e={}){const t=e.locale,n=uM(e),o=Ge(e.pluralRules)&&de(t)&&Qe(e.pluralRules[t])?e.pluralRules[t]:Nh,r=Ge(e.pluralRules)&&de(t)&&Qe(e.pluralRules[t])?Nh:void 0,i=m=>m[o(n,m.length,r)],a=e.list||[],s=m=>a[m],l=e.named||{};yt(e.pluralIndex)&&hM(n,l);const c=m=>l[m];function d(m){const C=Qe(e.messages)?e.messages(m):Ge(e.messages)?e.messages[m]:!1;return C||(e.parent?e.parent.message(m):sM)}const u=m=>e.modifiers?e.modifiers[m]:aM,h=Pe(e.processor)&&Qe(e.processor.normalize)?e.processor.normalize:cM,g=Pe(e.processor)&&Qe(e.processor.interpolate)?e.processor.interpolate:dM,f=Pe(e.processor)&&de(e.processor.type)?e.processor.type:lM,p={list:s,named:c,plural:i,linked:(m,...C)=>{const[_,y]=C;let k="text",P="";C.length===1?Ge(_)?(P=_.modifier||P,k=_.type||k):de(_)&&(P=_||P):C.length===2&&(de(_)&&(P=_||P),de(y)&&(k=y||k));const v=d(m)(p),T=k==="vnode"&&rt(v)&&P?v[0]:v;return P?u(P)(T,k):T},message:d,type:f,interpolate:g,normalize:h,values:Dt({},a,l)};return p}let Ii=null;function gM(e){Ii=e}function mM(e,t,n){Ii&&Ii.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const pM=bM("function:translate");function bM(e){return t=>Ii&&Ii.emit(e,t)}const P0=cd.__EXTEND_POINT__,Mo=Ls(P0),vM={NOT_FOUND_KEY:P0,FALLBACK_TO_TRANSLATE:Mo(),CANNOT_FORMAT_NUMBER:Mo(),FALLBACK_TO_NUMBER_FORMAT:Mo(),CANNOT_FORMAT_DATE:Mo(),FALLBACK_TO_DATE_FORMAT:Mo(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Mo(),__EXTEND_POINT__:Mo()},A0=Te.__EXTEND_POINT__,Lo=Ls(A0),Sn={INVALID_ARGUMENT:A0,INVALID_DATE_ARGUMENT:Lo(),INVALID_ISO_DATE_ARGUMENT:Lo(),NOT_SUPPORT_NON_STRING_MESSAGE:Lo(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:Lo(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:Lo(),NOT_SUPPORT_LOCALE_TYPE:Lo(),__EXTEND_POINT__:Lo()};function In(e){return Nr(e,null,void 0)}function ud(e,t){return t.locale!=null?zh(t.locale):zh(e.locale)}let fl;function zh(e){if(de(e))return e;if(Qe(e)){if(e.resolvedOnce&&fl!=null)return fl;if(e.constructor.name==="Function"){const t=e();if(bR(t))throw In(Sn.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return fl=t}else throw In(Sn.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw In(Sn.NOT_SUPPORT_LOCALE_TYPE)}function yM(e,t,n){return[...new Set([n,...rt(t)?t:Ge(t)?Object.keys(t):de(t)?[t]:[n]])]}function E0(e,t,n){const o=de(n)?n:Ar,r=e;r.__localeChainCache||(r.__localeChainCache=new Map);let i=r.__localeChainCache.get(o);if(!i){i=[];let a=[n];for(;rt(a);)a=Fh(i,a,t);const s=rt(t)||!Pe(t)?t:t.default?t.default:null;a=de(s)?[s]:s,rt(a)&&Fh(i,a,!1),r.__localeChainCache.set(o,i)}return i}function Fh(e,t,n){let o=!0;for(let r=0;r`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function SM(){return{upper:(e,t)=>t==="text"&&de(e)?e.toUpperCase():t==="vnode"&&Ge(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&de(e)?e.toLowerCase():t==="vnode"&&Ge(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&de(e)?jh(e):t==="vnode"&&Ge(e)&&"__v_isVNode"in e?jh(e.children):e}}let I0;function Gh(e){I0=e}let R0;function TM(e){R0=e}let M0;function wM(e){M0=e}let L0=null;const _M=e=>{L0=e},PM=()=>L0;let D0=null;const Vh=e=>{D0=e},AM=()=>D0;let Uh=0;function EM(e={}){const t=Qe(e.onWarn)?e.onWarn:xR,n=de(e.version)?e.version:kM,o=de(e.locale)||Qe(e.locale)?e.locale:Ar,r=Qe(o)?Ar:o,i=rt(e.fallbackLocale)||Pe(e.fallbackLocale)||de(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=Dt({},e.modifiers||{},SM()),d=e.pluralRules||{},u=Qe(e.missing)?e.missing:null,h=$e(e.missingWarn)||mo(e.missingWarn)?e.missingWarn:!0,g=$e(e.fallbackWarn)||mo(e.fallbackWarn)?e.fallbackWarn:!0,f=!!e.fallbackFormat,b=!!e.unresolving,p=Qe(e.postTranslation)?e.postTranslation:null,m=Pe(e.processor)?e.processor:null,C=$e(e.warnHtmlMessage)?e.warnHtmlMessage:!0,_=!!e.escapeParameter,y=Qe(e.messageCompiler)?e.messageCompiler:I0,k=Qe(e.messageResolver)?e.messageResolver:R0||rM,P=Qe(e.localeFallbacker)?e.localeFallbacker:M0||yM,v=Ge(e.fallbackContext)?e.fallbackContext:void 0,T=e,E=Ge(T.__datetimeFormatters)?T.__datetimeFormatters:new Map,L=Ge(T.__numberFormatters)?T.__numberFormatters:new Map,j=Ge(T.__meta)?T.__meta:{};Uh++;const M={version:n,cid:Uh,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:C,escapeParameter:_,messageCompiler:y,messageResolver:k,localeFallbacker:P,fallbackContext:v,onWarn:t,__meta:j};return M.datetimeFormats=s,M.numberFormats=l,M.__datetimeFormatters=E,M.__numberFormatters=L,__INTLIFY_PROD_DEVTOOLS__&&mM(M,n,j),M}function hd(e,t,n,o,r){const{missing:i,onWarn:a}=e;if(i!==null){const s=i(e,n,t,r);return de(s)?s:t}else return t}function Yr(e,t,n){const o=e;o.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function IM(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function RM(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let o=n+1;oMM(n,e)}function MM(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,Kh(e,a)],[]))}else return Kh(e,n)}function Kh(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,Xl(e,i)],[]);return e.normalize(o)}}function Xl(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(Xl(e,o.k||o.key),r?Xl(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 $0=e=>e;let mr=Object.create(null);const Er=e=>Ge(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function O0(e,t={}){let n=!1;const o=t.onError||PR;return t.onError=r=>{n=!0,o(r)},{...ZR(e,t),detectError:n}}const LM=(e,t)=>{if(!de(e))throw In(Sn.NOT_SUPPORT_NON_STRING_MESSAGE);{$e(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||$0)(e),r=mr[o];if(r)return r;const{code:i,detectError:a}=O0(e,t),s=new Function(`return ${i}`)();return a?s:mr[o]=s}};function DM(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&de(e)){$e(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||$0)(e),r=mr[o];if(r)return r;const{ast:i,detectError:a}=O0(e,{...t,location:!1,jit:!0}),s=gl(i);return a?s:mr[o]=s}else{const n=e.cacheKey;if(n){const o=mr[n];return o||(mr[n]=gl(e))}else return gl(e)}}const qh=()=>"",fn=e=>Qe(e);function Xh(e,...t){const{fallbackFormat:n,postTranslation:o,unresolving:r,messageCompiler:i,fallbackLocale:a,messages:s}=e,[l,c]=Zl(...t),d=$e(c.missingWarn)?c.missingWarn:e.missingWarn,u=$e(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,h=$e(c.escapeParameter)?c.escapeParameter:e.escapeParameter,g=!!c.resolvedMessage,f=de(c.default)||$e(c.default)?$e(c.default)?i?l:()=>l:c.default:n?i?l:()=>l:"",b=n||f!=="",p=ud(e,c);h&&$M(c);let[m,C,_]=g?[l,p,s[p]||{}]:H0(e,l,p,a,u,d),y=m,k=l;if(!g&&!(de(y)||Er(y)||fn(y))&&b&&(y=f,k=y),!g&&(!(de(y)||Er(y)||fn(y))||!de(C)))return r?Ds:l;let P=!1;const v=()=>{P=!0},T=fn(y)?y:B0(e,l,C,y,k,v);if(P)return y;const E=BM(e,C,_,c),L=fM(E),j=OM(e,T,L),M=o?o(j,l):j;if(__INTLIFY_PROD_DEVTOOLS__){const K={timestamp:Date.now(),key:de(l)?l:fn(y)?y.key:"",locale:C||(fn(y)?y.locale:""),format:de(y)?y:fn(y)?y.source:"",message:M};K.meta=Dt({},e.__meta,PM()||{}),pM(K)}return M}function $M(e){rt(e.list)?e.list=e.list.map(t=>de(t)?Lh(t):t):Ge(e.named)&&Object.keys(e.named).forEach(t=>{de(e.named[t])&&(e.named[t]=Lh(e.named[t]))})}function H0(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,HM(e,n,r,o,s,i));return l.locale=n,l.key=t,l.source=o,l}function OM(e,t,n){return t(n)}function Zl(...e){const[t,n,o]=e,r={};if(!de(t)&&!yt(t)&&!fn(t)&&!Er(t))throw In(Sn.INVALID_ARGUMENT);const i=yt(t)?String(t):(fn(t),t);return yt(n)?r.plural=n:de(n)?r.default=n:Pe(n)&&!Ms(n)?r.named=n:rt(n)&&(r.list=n),yt(o)?r.plural=o:de(o)?r.default=o:Pe(o)&&Dt(r,o),[i,r]}function HM(e,t,n,o,r,i){return{locale:t,key:n,warnHtmlMessage:r,onError:a=>{throw i&&i(a),a},onCacheKey:a=>fR(t,n,a)}}function BM(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]=H0(d,g,t,s,l,c);f=a(b,g)}if(de(f)||Er(f)){let b=!1;const m=B0(e,g,t,f,g,()=>{b=!0});return b?qh:m}else return fn(f)?f:qh}};return e.processor&&(h.processor=e.processor),o.list&&(h.list=o.list),o.named&&(h.named=o.named),yt(o.plural)&&(h.pluralIndex=o.plural),h}function Zh(e,...t){const{datetimeFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__datetimeFormatters:s}=e,[l,c,d,u]=Yl(...t),h=$e(d.missingWarn)?d.missingWarn:e.missingWarn;$e(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=ud(e,d),b=a(e,r,f);if(!de(l)||l==="")return new Intl.DateTimeFormat(f,u).format(c);let p={},m,C=null;const _="datetime format";for(let P=0;P{N0.includes(l)?a[l]=n[l]:i[l]=n[l]}),de(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function Yh(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__datetimeFormatters.has(i)&&o.__datetimeFormatters.delete(i)}}function Jh(e,...t){const{numberFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__numberFormatters:s}=e,[l,c,d,u]=Jl(...t),h=$e(d.missingWarn)?d.missingWarn:e.missingWarn;$e(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=ud(e,d),b=a(e,r,f);if(!de(l)||l==="")return new Intl.NumberFormat(f,u).format(c);let p={},m,C=null;const _="number format";for(let P=0;P{z0.includes(l)?a[l]=n[l]:i[l]=n[l]}),de(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function Qh(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__numberFormatters.has(i)&&o.__numberFormatters.delete(i)}}YR();/*! - * vue-i18n v9.13.1 - * (c) 2024 kazuya kawaguchi - * Released under the MIT License. - */const NM="9.13.1";function zM(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(Fn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(Fn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Fn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Fn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(Fn().__INTLIFY_PROD_DEVTOOLS__=!1)}const F0=vM.__EXTEND_POINT__,Nn=Ls(F0);Nn(),Nn(),Nn(),Nn(),Nn(),Nn(),Nn(),Nn(),Nn();const W0=Sn.__EXTEND_POINT__,Zt=Ls(W0),Ct={UNEXPECTED_RETURN_TYPE:W0,INVALID_ARGUMENT:Zt(),MUST_BE_CALL_SETUP_TOP:Zt(),NOT_INSTALLED:Zt(),NOT_AVAILABLE_IN_LEGACY_MODE:Zt(),REQUIRED_VALUE:Zt(),INVALID_VALUE:Zt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Zt(),NOT_INSTALLED_WITH_PROVIDE:Zt(),UNEXPECTED_ERROR:Zt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Zt(),BRIDGE_SUPPORT_VUE_2_ONLY:Zt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Zt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Zt(),__EXTEND_POINT__:Zt()};function _t(e,...t){return Nr(e,null,void 0)}const Ql=ko("__translateVNode"),ec=ko("__datetimeParts"),tc=ko("__numberParts"),j0=ko("__setPluralRules"),G0=ko("__injectWithOption"),nc=ko("__dispose");function Ri(e){if(!Ge(e))return e;for(const t in e)if(Ga(e,t))if(!t.includes("."))Ge(e[t])&&Ri(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]||{},Sa(c,a[l])):Sa(c,a)}else de(s)&&Sa(JSON.parse(s),a)}),r==null&&i)for(const s in a)Ga(a,s)&&Ri(a[s]);return a}function V0(e){return e.type}function U0(e,t,n){let o=Ge(t.messages)?t.messages:{};"__i18nGlobal"in n&&(o=$s(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 ef(e){return pe(Rr,null,e,0)}const tf="__INTLIFY_META__",nf=()=>[],FM=()=>!1;let of=0;function rf(e){return(t,n,o,r)=>e(n,o,ln()||void 0,r)}const WM=()=>{const e=ln();let t=null;return e&&(t=V0(e)[tf])?{[tf]:t}:null};function fd(e={},t){const{__root:n,__injectWithOption:o}=e,r=n===void 0,i=e.flatJson,a=ja?V:Ya,s=!!e.translateExistCompatible;let l=$e(e.inheritLocale)?e.inheritLocale:!0;const c=a(n&&l?n.locale.value:de(e.locale)?e.locale:Ar),d=a(n&&l?n.fallbackLocale.value:de(e.fallbackLocale)||rt(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),u=a($s(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:$e(e.missingWarn)||mo(e.missingWarn)?e.missingWarn:!0,b=n?n.fallbackWarn:$e(e.fallbackWarn)||mo(e.fallbackWarn)?e.fallbackWarn:!0,p=n?n.fallbackRoot:$e(e.fallbackRoot)?e.fallbackRoot:!0,m=!!e.fallbackFormat,C=Qe(e.missing)?e.missing:null,_=Qe(e.missing)?rf(e.missing):null,y=Qe(e.postTranslation)?e.postTranslation:null,k=n?n.warnHtmlMessage:$e(e.warnHtmlMessage)?e.warnHtmlMessage:!0,P=!!e.escapeParameter;const v=n?n.modifiers:Pe(e.modifiers)?e.modifiers:{};let T=e.pluralRules||n&&n.pluralRules,E;E=(()=>{r&&Vh(null);const $={version:NM,locale:c.value,fallbackLocale:d.value,messages:u.value,modifiers:v,pluralRules:T,missing:_===null?void 0:_,missingWarn:f,fallbackWarn:b,fallbackFormat:m,unresolving:!0,postTranslation:y===null?void 0:y,warnHtmlMessage:k,escapeParameter:P,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};$.datetimeFormats=h.value,$.numberFormats=g.value,$.__datetimeFormatters=Pe(E)?E.__datetimeFormatters:void 0,$.__numberFormatters=Pe(E)?E.__numberFormatters:void 0;const B=EM($);return r&&Vh(B),B})(),Yr(E,c.value,d.value);function j(){return[c.value,d.value,u.value,h.value,g.value]}const M=N({get:()=>c.value,set:$=>{c.value=$,E.locale=c.value}}),K=N({get:()=>d.value,set:$=>{d.value=$,E.fallbackLocale=d.value,Yr(E,c.value,$)}}),ne=N(()=>u.value),H=N(()=>h.value),U=N(()=>g.value);function F(){return Qe(y)?y:null}function re($){y=$,E.postTranslation=$}function be(){return C}function ve($){$!==null&&(_=rf($)),C=$,E.missing=_}const _e=($,B,me,Ce,Be,dt)=>{j();let Et;try{__INTLIFY_PROD_DEVTOOLS__,r||(E.fallbackContext=n?AM():void 0),Et=$(E)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(E.fallbackContext=void 0)}if(me!=="translate exists"&&yt(Et)&&Et===Ds||me==="translate exists"&&!Et){const[On,jt]=B();return n&&p?Ce(n):Be(On)}else{if(dt(Et))return Et;throw _t(Ct.UNEXPECTED_RETURN_TYPE)}};function Me(...$){return _e(B=>Reflect.apply(Xh,null,[B,...$]),()=>Zl(...$),"translate",B=>Reflect.apply(B.t,B,[...$]),B=>B,B=>de(B))}function lt(...$){const[B,me,Ce]=$;if(Ce&&!Ge(Ce))throw _t(Ct.INVALID_ARGUMENT);return Me(B,me,Dt({resolvedMessage:!0},Ce||{}))}function Ze(...$){return _e(B=>Reflect.apply(Zh,null,[B,...$]),()=>Yl(...$),"datetime format",B=>Reflect.apply(B.d,B,[...$]),()=>Wh,B=>de(B))}function Ye(...$){return _e(B=>Reflect.apply(Jh,null,[B,...$]),()=>Jl(...$),"number format",B=>Reflect.apply(B.n,B,[...$]),()=>Wh,B=>de(B))}function Ie($){return $.map(B=>de(B)||yt(B)||$e(B)?ef(String(B)):B)}const Ot={normalize:Ie,interpolate:$=>$,type:"vnode"};function Le(...$){return _e(B=>{let me;const Ce=B;try{Ce.processor=Ot,me=Reflect.apply(Xh,null,[Ce,...$])}finally{Ce.processor=null}return me},()=>Zl(...$),"translate",B=>B[Ql](...$),B=>[ef(B)],B=>rt(B))}function ct(...$){return _e(B=>Reflect.apply(Jh,null,[B,...$]),()=>Jl(...$),"number format",B=>B[tc](...$),nf,B=>de(B)||rt(B))}function At(...$){return _e(B=>Reflect.apply(Zh,null,[B,...$]),()=>Yl(...$),"datetime format",B=>B[ec](...$),nf,B=>de(B)||rt(B))}function bt($){T=$,E.pluralRules=T}function I($,B){return _e(()=>{if(!$)return!1;const me=de(B)?B:c.value,Ce=X(me),Be=E.messageResolver(Ce,$);return s?Be!=null:Er(Be)||fn(Be)||de(Be)},()=>[$],"translate exists",me=>Reflect.apply(me.te,me,[$,B]),FM,me=>$e(me))}function A($){let B=null;const me=E0(E,d.value,c.value);for(let Ce=0;Ce{l&&(c.value=$,E.locale=$,Yr(E,c.value,d.value))}),et(n.fallbackLocale,$=>{l&&(d.value=$,E.fallbackLocale=$,Yr(E,c.value,d.value))}));const Q={id:of,locale:M,fallbackLocale:K,get inheritLocale(){return l},set inheritLocale($){l=$,$&&n&&(c.value=n.locale.value,d.value=n.fallbackLocale.value,Yr(E,c.value,d.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:ne,get modifiers(){return v},get pluralRules(){return T||{}},get isGlobal(){return r},get missingWarn(){return f},set missingWarn($){f=$,E.missingWarn=f},get fallbackWarn(){return b},set fallbackWarn($){b=$,E.fallbackWarn=b},get fallbackRoot(){return p},set fallbackRoot($){p=$},get fallbackFormat(){return m},set fallbackFormat($){m=$,E.fallbackFormat=m},get warnHtmlMessage(){return k},set warnHtmlMessage($){k=$,E.warnHtmlMessage=$},get escapeParameter(){return P},set escapeParameter($){P=$,E.escapeParameter=$},t:Me,getLocaleMessage:X,setLocaleMessage:Z,mergeLocaleMessage:oe,getPostTranslationHandler:F,setPostTranslationHandler:re,getMissingHandler:be,setMissingHandler:ve,[j0]:bt};return Q.datetimeFormats=H,Q.numberFormats=U,Q.rt=lt,Q.te=I,Q.tm=O,Q.d=Ze,Q.n=Ye,Q.getDateTimeFormat=le,Q.setDateTimeFormat=x,Q.mergeDateTimeFormat=w,Q.getNumberFormat=R,Q.setNumberFormat=W,Q.mergeNumberFormat=ie,Q[G0]=o,Q[Ql]=Le,Q[ec]=At,Q[tc]=ct,Q}function jM(e){const t=de(e.locale)?e.locale:Ar,n=de(e.fallbackLocale)||rt(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,o=Qe(e.missing)?e.missing:void 0,r=$e(e.silentTranslationWarn)||mo(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=$e(e.silentFallbackWarn)||mo(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=$e(e.fallbackRoot)?e.fallbackRoot:!0,s=!!e.formatFallbackMessages,l=Pe(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,d=Qe(e.postTranslation)?e.postTranslation:void 0,u=de(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,h=!!e.escapeParameterHtml,g=$e(e.sync)?e.sync:!0;let f=e.messages;if(Pe(e.sharedMessages)){const P=e.sharedMessages;f=Object.keys(P).reduce((T,E)=>{const L=T[E]||(T[E]={});return Dt(L,P[E]),T},f||{})}const{__i18n:b,__root:p,__injectWithOption:m}=e,C=e.datetimeFormats,_=e.numberFormats,y=e.flatJson,k=e.translateExistCompatible;return{locale:t,fallbackLocale:n,messages:f,flatJson:y,datetimeFormats:C,numberFormats:_,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:k,__i18n:b,__root:p,__injectWithOption:m}}function oc(e={},t){{const n=fd(jM(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 $e(n.missingWarn)?!n.missingWarn:n.missingWarn},set silentTranslationWarn(i){n.missingWarn=$e(i)?!i:i},get silentFallbackWarn(){return $e(n.fallbackWarn)?!n.fallbackWarn:n.fallbackWarn},set silentFallbackWarn(i){n.fallbackWarn=$e(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(!de(a))throw _t(Ct.INVALID_ARGUMENT);const h=a;return de(s)?c.locale=s:rt(s)?d=s:Pe(s)&&(u=s),rt(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(!de(a))throw _t(Ct.INVALID_ARGUMENT);const h=a;return de(s)?c.locale=s:yt(s)?c.plural=s:rt(s)?d=s:Pe(s)&&(u=s),de(l)?c.locale=l:rt(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 gd={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function GM({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((o,r)=>[...o,...r.type===Oe?r.children:[r]],[]):t.reduce((n,o)=>{const r=e[o];return r&&(n[o]=r()),n},{})}function K0(e){return Oe}const VM=ce({name:"i18n-t",props:Dt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>yt(e)||!isNaN(e)}},gd),setup(e,t){const{slots:n,attrs:o}=t,r=e.i18n||Fi({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=de(e.plural)?+e.plural:e.plural);const s=GM(t,i),l=r[Ql](e.keypath,s,a),c=Dt({},o),d=de(e.tag)||Ge(e.tag)?e.tag:K0();return S(d,c,l)}}}),af=VM;function UM(e){return rt(e)&&!de(e[0])}function q0(e,t,n,o){const{slots:r,attrs:i}=t;return()=>{const a={part:!0};let s={};e.locale&&(a.locale=e.locale),de(e.format)?a.key=e.format:Ge(e.format)&&(de(e.format.key)&&(a.key=e.format.key),s=Object.keys(e.format).reduce((h,g)=>n.includes(g)?Dt({},h,{[g]:e.format[g]}):h,{}));const l=o(e.value,a,s);let c=[a.key];rt(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 UM(b)&&(b[0].key=`${h.type}-${g}`),b}):de(l)&&(c=[l]);const d=Dt({},i),u=de(e.tag)||Ge(e.tag)?e.tag:K0();return S(u,d,c)}}const KM=ce({name:"i18n-n",props:Dt({value:{type:Number,required:!0},format:{type:[String,Object]}},gd),setup(e,t){const n=e.i18n||Fi({useScope:e.scope,__useComponent:!0});return q0(e,t,z0,(...o)=>n[tc](...o))}}),sf=KM,qM=ce({name:"i18n-d",props:Dt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},gd),setup(e,t){const n=e.i18n||Fi({useScope:e.scope,__useComponent:!0});return q0(e,t,N0,(...o)=>n[ec](...o))}}),lf=qM;function XM(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 ZM(e){const t=a=>{const{instance:s,modifiers:l,value:c}=a;if(!s||!s.$)throw _t(Ct.UNEXPECTED_ERROR);const d=XM(e,s.$),u=cf(c);return[Reflect.apply(d.t,d,[...df(u)]),d]};return{created:(a,s)=>{const[l,c]=t(s);ja&&e.global===c&&(a.__i18nWatcher=et(c.locale,()=>{s.instance&&s.instance.$forceUpdate()})),a.__composer=c,a.textContent=l},unmounted:a=>{ja&&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=cf(s);a.textContent=Reflect.apply(l.t,l,[...df(c)])}},getSSRProps:a=>{const[s]=t(a);return{textContent:s}}}}function cf(e){if(de(e))return{path:e};if(Pe(e)){if(!("path"in e))throw _t(Ct.REQUIRED_VALUE,"path");return e}else throw _t(Ct.INVALID_VALUE)}function df(e){const{path:t,locale:n,args:o,choice:r,plural:i}=e,a={},s=o||{};return de(n)&&(a.locale=n),yt(r)&&(a.plural=r),yt(i)&&(a.plural=i),[t,s,a]}function YM(e,t,...n){const o=Pe(n[0])?n[0]:{},r=!!o.useI18nComponentName;($e(o.globalInstall)?o.globalInstall:!0)&&([r?"i18n":af.name,"I18nT"].forEach(a=>e.component(a,af)),[sf.name,"I18nN"].forEach(a=>e.component(a,sf)),[lf.name,"I18nD"].forEach(a=>e.component(a,lf))),e.directive("t",ZM(t))}function JM(e,t,n){return{beforeCreate(){const o=ln();if(!o)throw _t(Ct.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=uf(e,i);else{i.__injectWithOption=!0,i.__extender=n.__vueI18nExtend,this.$i18n=oc(i);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(r.__i18n)if(this===this.$root)this.$i18n=uf(e,r);else{this.$i18n=oc({__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&&U0(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=ln();if(!o)throw _t(Ct.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 uf(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[j0](t.pluralizationRules||e.pluralizationRules);const n=$s(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 QM=ko("global-vue-i18n");function eL(e={},t){const n=__VUE_I18N_LEGACY_API__&&$e(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,o=$e(e.globalInjection)?e.globalInjection:!0,r=__VUE_I18N_LEGACY_API__&&n?!!e.allowComposition:!0,i=new Map,[a,s]=tL(e,n),l=ko("");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=dL(g,h.global)),__VUE_I18N_FULL_INSTALL__&&YM(g,h,...f),__VUE_I18N_LEGACY_API__&&n&&g.mixin(JM(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 Fi(e={}){const t=ln();if(t==null)throw _t(Ct.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw _t(Ct.NOT_INSTALLED);const n=nL(t),o=rL(n),r=V0(t),i=oL(e,r);if(__VUE_I18N_LEGACY_API__&&n.mode==="legacy"&&!e.__useComponent){if(!n.allowComposition)throw _t(Ct.NOT_AVAILABLE_IN_LEGACY_MODE);return lL(t,i,o,e)}if(i==="global")return U0(o,e,r),o;if(i==="parent"){let l=iL(n,t,e.__useComponent);return l==null&&(l=o),l}const a=n;let s=a.__getInstance(t);if(s==null){const l=Dt({},e);"__i18n"in r&&(l.__i18n=r.__i18n),o&&(l.__root=o),s=fd(l),a.__composerExtend&&(s[nc]=a.__composerExtend(s)),sL(a,t,s),a.__setInstance(t,s)}return s}function tL(e,t,n){const o=dc();{const r=__VUE_I18N_LEGACY_API__&&t?o.run(()=>oc(e)):o.run(()=>fd(e));if(r==null)throw _t(Ct.UNEXPECTED_ERROR);return[o,r]}}function nL(e){{const t=Ae(e.isCE?QM:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw _t(e.isCE?Ct.NOT_INSTALLED_WITH_PROVIDE:Ct.UNEXPECTED_ERROR);return t}}function oL(e,t){return Ms(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function rL(e){return e.mode==="composition"?e.global:e.global.__composer}function iL(e,t,n=!1){let o=null;const r=t.root;let i=aL(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[G0]&&(o=null))}if(o!=null||r===i)break;i=i.parent}return o}function aL(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function sL(e,t,n){$t(()=>{},t),Tc(()=>{const o=n;e.__deleteInstance(t);const r=o[nc];r&&(r(),delete o[nc])},t)}function lL(e,t,n,o={}){const r=t==="local",i=Ya(null);if(r&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw _t(Ct.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const a=$e(o.inheritLocale)?o.inheritLocale:!de(o.locale),s=V(!r||a?n.locale.value:de(o.locale)?o.locale:Ar),l=V(!r||a?n.fallbackLocale.value:de(o.fallbackLocale)||rt(o.fallbackLocale)||Pe(o.fallbackLocale)||o.fallbackLocale===!1?o.fallbackLocale:s.value),c=V($s(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:$e(o.missingWarn)||mo(o.missingWarn)?o.missingWarn:!0,g=r?n.fallbackWarn:$e(o.fallbackWarn)||mo(o.fallbackWarn)?o.fallbackWarn:!0,f=r?n.fallbackRoot:$e(o.fallbackRoot)?o.fallbackRoot:!0,b=!!o.fallbackFormat,p=Qe(o.missing)?o.missing:null,m=Qe(o.postTranslation)?o.postTranslation:null,C=r?n.warnHtmlMessage:$e(o.warnHtmlMessage)?o.warnHtmlMessage:!0,_=!!o.escapeParameter,y=r?n.modifiers:Pe(o.modifiers)?o.modifiers:{},k=o.pluralRules||r&&n.pluralRules;function P(){return[s.value,l.value,c.value,d.value,u.value]}const v=N({get:()=>i.value?i.value.locale.value:s.value,set:A=>{i.value&&(i.value.locale.value=A),s.value=A}}),T=N({get:()=>i.value?i.value.fallbackLocale.value:l.value,set:A=>{i.value&&(i.value.fallbackLocale.value=A),l.value=A}}),E=N(()=>i.value?i.value.messages.value:c.value),L=N(()=>d.value),j=N(()=>u.value);function M(){return i.value?i.value.getPostTranslationHandler():m}function K(A){i.value&&i.value.setPostTranslationHandler(A)}function ne(){return i.value?i.value.getMissingHandler():p}function H(A){i.value&&i.value.setMissingHandler(A)}function U(A){return P(),A()}function F(...A){return i.value?U(()=>Reflect.apply(i.value.t,null,[...A])):U(()=>"")}function re(...A){return i.value?Reflect.apply(i.value.rt,null,[...A]):""}function be(...A){return i.value?U(()=>Reflect.apply(i.value.d,null,[...A])):U(()=>"")}function ve(...A){return i.value?U(()=>Reflect.apply(i.value.n,null,[...A])):U(()=>"")}function _e(A){return i.value?i.value.tm(A):{}}function Me(A,O){return i.value?i.value.te(A,O):!1}function lt(A){return i.value?i.value.getLocaleMessage(A):{}}function Ze(A,O){i.value&&(i.value.setLocaleMessage(A,O),c.value[A]=O)}function Ye(A,O){i.value&&i.value.mergeLocaleMessage(A,O)}function Ie(A){return i.value?i.value.getDateTimeFormat(A):{}}function De(A,O){i.value&&(i.value.setDateTimeFormat(A,O),d.value[A]=O)}function Ot(A,O){i.value&&i.value.mergeDateTimeFormat(A,O)}function Le(A){return i.value?i.value.getNumberFormat(A):{}}function ct(A,O){i.value&&(i.value.setNumberFormat(A,O),u.value[A]=O)}function At(A,O){i.value&&i.value.mergeNumberFormat(A,O)}const bt={get id(){return i.value?i.value.id:-1},locale:v,fallbackLocale:T,messages:E,datetimeFormats:L,numberFormats:j,get inheritLocale(){return i.value?i.value.inheritLocale:a},set inheritLocale(A){i.value&&(i.value.inheritLocale=A)},get availableLocales(){return i.value?i.value.availableLocales:Object.keys(c.value)},get modifiers(){return i.value?i.value.modifiers:y},get pluralRules(){return i.value?i.value.pluralRules:k},get isGlobal(){return i.value?i.value.isGlobal:!1},get missingWarn(){return i.value?i.value.missingWarn:h},set missingWarn(A){i.value&&(i.value.missingWarn=A)},get fallbackWarn(){return i.value?i.value.fallbackWarn:g},set fallbackWarn(A){i.value&&(i.value.missingWarn=A)},get fallbackRoot(){return i.value?i.value.fallbackRoot:f},set fallbackRoot(A){i.value&&(i.value.fallbackRoot=A)},get fallbackFormat(){return i.value?i.value.fallbackFormat:b},set fallbackFormat(A){i.value&&(i.value.fallbackFormat=A)},get warnHtmlMessage(){return i.value?i.value.warnHtmlMessage:C},set warnHtmlMessage(A){i.value&&(i.value.warnHtmlMessage=A)},get escapeParameter(){return i.value?i.value.escapeParameter:_},set escapeParameter(A){i.value&&(i.value.escapeParameter=A)},t:F,getPostTranslationHandler:M,setPostTranslationHandler:K,getMissingHandler:ne,setMissingHandler:H,rt:re,d:be,n:ve,tm:_e,te:Me,getLocaleMessage:lt,setLocaleMessage:Ze,mergeLocaleMessage:Ye,getDateTimeFormat:Ie,setDateTimeFormat:De,mergeDateTimeFormat:Ot,getNumberFormat:Le,setNumberFormat:ct,mergeNumberFormat:At};function I(A){A.locale.value=s.value,A.fallbackLocale.value=l.value,Object.keys(c.value).forEach(O=>{A.mergeLocaleMessage(O,c.value[O])}),Object.keys(d.value).forEach(O=>{A.mergeDateTimeFormat(O,d.value[O])}),Object.keys(u.value).forEach(O=>{A.mergeNumberFormat(O,u.value[O])}),A.escapeParameter=_,A.fallbackFormat=b,A.fallbackRoot=f,A.fallbackWarn=g,A.missingWarn=h,A.warnHtmlMessage=C}return Dn(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw _t(Ct.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const A=i.value=e.proxy.$i18n.__composer;t==="global"?(s.value=A.locale.value,l.value=A.fallbackLocale.value,c.value=A.messages.value,d.value=A.datetimeFormats.value,u.value=A.numberFormats.value):r&&I(A)}),bt}const cL=["locale","fallbackLocale","availableLocales"],hf=["t","rt","d","n","tm","te"];function dL(e,t){const n=Object.create(null);return cL.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i)throw _t(Ct.UNEXPECTED_ERROR);const a=ht(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,hf.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i||!i.value)throw _t(Ct.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,i)}),()=>{delete e.config.globalProperties.$i18n,hf.forEach(r=>{delete e.config.globalProperties[`$${r}`]})}}zM();__INTLIFY_JIT_COMPILATION__?Gh(DM):Gh(LM);TM(iM);wM(E0);if(__INTLIFY_PROD_DEVTOOLS__){const e=Fn();e.__INTLIFY__=!0,gM(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const uL=DI().use(hR),hL=eL({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"}}}),ml={help:"#fdba74",org:"#fbb741",game:"#14a3c7",term:"#ff7f7f",setup:"#94a3b8",pattern:"#bfdfa5",command:"#0284c7",english:"#2563eb",name:"#7a5299"},fL=[{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:"915cd283a16c2d03774e3f15edd78a4625742e57"},{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:"81f238b397514b641ec255c8b9ce578d8f955103"},{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 adds an extra block of offset in that direction, in addition to the normal offsets in the wall kick tables (horizonal extra offset that indicated by the keypress must not be in the opposite direction to the composite horizonal offset, and distance of the composite offset must not exceed √5). If the tests fail, left and right offsets will be canceled then try again, then down offsets.\\nCompared 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:"a196d7935cf87854b37f52456f9bfbda881ea6c3"},{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:"1cb18aafb1a99e95eed99fca5d28f753612df424"},{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:"f733370715a815eb3bfce3ea03b86276eab1f103"},{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:"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: ``, S: ``, J: ``, L: ``, T: ``, O: ``, I: ``;\\n\\nPentominos:\\nZ5: ``, S5: ``, P: ``, Q: ``, F: ``, E: ``, T5: ``, U: ``, V: ``, W: ``, X: ``, J5: ``, L5: ``, R: ``, Y: ``, N: ``, H: ``, I5: ``;\\n\\nTriminos, Domino, and Monomino:\\nI3: ``, C: ``, I2: ``, O1: `.",link:"",id:"913a43b8dad4d88abf2cecc8978b7021ff6c663d"},{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:"381abe335e93ab95004c62e97449800ddf3fb81b"},{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"}],gL=[{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: ``, S: ``, J: ``, L: ``, T: ``, O: ``, I: ``;\\n\\nPentominos:\\nZ5: ``, S5: ``, P: ``, Q: ``, F: ``, E: ``, T5: ``, U: ``, V: ``, W: ``, X: ``, J5: ``, L5: ``, R: ``, Y: ``, N: ``, H: ``, I5: ``;\\n\\nTriminos, Domino, and Mino:\\nI3: ``, C: ``, I2: ``, O1: `.",link:"",id:"fa534d055cbefaaa37429612aeac44aa392fff1d"},{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"}],mL=[{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:"db48bfb4186f84c0391a54e898c1dcfc705b1f29"},{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:"2e684b1296c93ab61fee3ee132448e9a73cf1a71"},{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:["irs","initialrotatesystem"],category:"term",content:"Initial Rotation System 提前旋转系统\\n方块出现前提前按下旋转后,出现时就是转好的形状,有时可以避免死亡。",link:"",id:"df56dc17c1c71d88f776c8989f44e46bd373fe91"},{title:"提前暂存(IHS)",tags:["ihs","initialholdsystem"],category:"term",content:"Initial Hold System 提前Hold系统\\n方块出现前提前按下hold后,直接出现hold里的方块,有时可以避免死亡。",link:"",id:"dfa0fb067ad7de4e9f078f3b0122943af0f79b74"},{title:"提前移动(IMS)",tags:["ims","initialmovesystem"],category:"term",content:"Initial Move System 提前移动系统\\n方块出现前提前按住移动后,出现时会朝移动方向偏一格,有时可以避免死亡(Techmino限定)。\\n注:需要块出现时das已充满",link:"",id:"dbb98c2013dd63489d4f23a39828862643abc70c"},{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:"误硬降打断(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: ``, S: ``, J: ``, L: ``, T: ``, O: ``, I: ``;\\n\\n五连块:\\nZ5: ``, S5: ``, P: ``, Q: ``, F: ``, E: ``, T5: ``, U: ``, V: ``, W: ``, X: ``, J5: ``, L5: ``, R: ``, Y: ``, N: ``, H: ``, I5: ``;\\n\\n一至三连块:\\nI3: ``, C: ``, I2: ``, O1: `.",link:"",id:"c3256382b96370d2673b14e8dc7111dfa24650c4"},{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"}],pL=[{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. - -Để nhảy nhanh tới mục lục, hãy gõ "mucluc" trên thanh tìm kiếm. - -Đây là bản Việt hóa của Squishy từ bản dịch tiếng Anh của User670 và C₂₉H₂₅N₃O₅. -Được chuẩn hóa lại nhờ sự giúp đỡ của cộng đồng Tetris Việt Nam. -Bản dịch có thể có sai sót so với Zictionary tiếng Trung (bản gốc). - -Bạn muốn đóng góp vào bản dịch? Bạn có thể vào trang dự án Techmino trên GitHub để làm nhé. - ]]`,link:"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_vi.lua",id:"1f731585af0b6d50250ad4d044088cdb546e7136"},{title:"Mục lục",tags:["nhom01","index","mucluc"],category:"help",content:`[[ -01. Về Zictionary & Bản dịch game & Mục lục ← bạn đang xem mục này -02. Dự án Techmino: Trang web chính thức, Dự án trên GitHub, Discord -03. Ủng hộ cho tác giả của Techmino -04. Mẹo và lời khuyên: - - Lời khuyên dành cho những người mới tập chơi - - Đề xuất luyện tập, Học làm T-spin, Điều chỉnh DAS - - Bố cục phím, Khả năng xử lý gạch, Các nút xoay - -05. Các yếu tố cần thiết của các game xếp gạch hiện đại: - - Next, Hold, In-place Hold, Swap, Topping out, Vùng đệm, Vùng biến mất - 05A. Gạch: Hình dạng, màu, hướng và tên của gạch - 05B. Hệ thống xoay gạch: ARS, ASC, ASC+, BRS, BiRS, C2RS, C2sym, NRS, SRS, SRS+, TRS, XRS - 05C. Hệ thống điều khiển: IRS, IHS, IMS - 05D. Cách kiểu xáo gạch: Túi 7 gạch, His, EZ-Start, Reverb, C2 - (và vấn đề Drought của một vài kiểu xáo) - - 05E. Thông số - 05E1. Thông số của game: - - Tốc độ rơi, 20G - - ARE, Line ARE, Death ARE - - Lockdown Delay, Spawn & Clear delay - 05E2. Thông số điều khiển: - DAS & ARR, DAS cut, Auto-lock cut, SDF - 05F. Điều khiển - 05F1. Tốc độ: LPM, PPS, BPM, KPM, KPP - 05F2. Kỹ thuật: Hypertapping, Rolling, Finesse - 05F3. Độ trễ đầu vào - 05G. Khả năng tấn công - - APM, SPM, DPM, RPM, ADPM, APL - - Tấn công & Phòng thủ - - Combo, Spike, Debt, Passthrough, Timing - - 05H. Hành động bất cẩn (Mis-): Misdrop, Mishold - 05I. Spin: (Mini) / (All-) / (T-) / (O-) spin; Fin, Neo, Iso; Freestyle - 05J: Kỹ thuật xóa hàng: - - Single, Double, Triple (Xóa 1/2/3 hàng); Techrash; Tetris - - TSS, TSD, TST, MTSS, MTSD - - Perfect Clear, Half Perfect Clear - 05K. Các thuật ngữ khác: sub, 'Doing Research', Bone block - -06. Các game xếp gạch - (Danh sách rất dài, gõ trên thanh tìm kiếm "nhom06" để xem danh sách đầy đủ) - -07. Một vài cơ chế và chế độ của một số game: - - Tàng hình một phần, tàng hình hoàn toàn - - Chế độ MPH, Secert Grade, Deepdrop -08. Bot: Cold Clear, ZZZbot - -09. Wiki; các trang web bày setup & cung cấp câu đố, chia sẻ setup - 09A. Wiki: Huiji Wiki, Wiki Hard Drop, tetris.wiki, Tetris Wiki Fandom - 09B. Bày setup: Four.lol, Tetris Hall, Tetris Template Collections, tetristemplate.info, 4-Wide Trainer - 09C. Chia sẻ câu đố: TTT, TTPC, NAZO, TPO - 09D. Chia sẻ setup: Fumen, Fumen bản Điện thoại -10. Cộng đồng: Tetris Online Servers, Tetris Việt Nam - -11. Xếp lên và đào xuống - 11A. Stacking (Xếp lên): - - Side / Center / Partial well - - Side / Center 1 / 2 / 3 / 4-wide - - Residual - - 6-3 Stacking - 11B. Digging (Đào xuống) - -12. Setup (Opener, Mid-game setup, Donation, Pattern) - 12A. Opener: DT Cannon, DTPC, BT Cannon, BTPC, TKI 3 Perfect Clear, QT Cannon, Mini-Triple, Trinity, Wolfmoon Cannon, Sewer, TKI, God Spin, Albatross, Pelican, Perrfect Clear Opener, Grace System, DPC, Gamushiro Stacking - 12B. Mid-game: C-spin, STSD, Fractal, LST stacking, Imperial Cross, King Crimson, PC liên tiếp (1+2+3) - 12C. Donation: Hamburger, STMB Cave, Kaidan, Shachiku Train, Cut Copy - -13. Cách tính lượng sát thơng gây ra: Tetris Online / Notris Foes, Techmino - -14. Console và chuyện quản lý dữ liệu game - - Console, đặt lại thiết lập, tình trạng mở khóa, bố cục phím - - Xóa toàn bộ thành tích, kỷ lục, bản phát lại, bộ nhớ đệm -15. Các thuật ngữ không liên quan gì tới Tetris (tiếng Anh): SFX, BGM, TAS, AFK - ]]`,link:"",id:"80d064137440788ea6b0cbe98f3230322543cb3f"},{title:"=[NHÓM 02]=",tags:["nhom02"],category:"",content:"NHÓM 02: DỰ ÁN TECHMINO",link:"",id:"b1179b38381460a357e2aecf7bfc415a46c562b2"},{title:"Website chính thức",tags:["nhom02","websites;","trang","chủ"],category:"org",content:"Trang web chính thức của Techmino!\\nBạn có thể lấy bản mới nhất của Techmino cũng như tạo tài khoản, thay avatar ngay tại đó\\nNhấn vào nút hình địa cầu ở bên phải để mở website trên trình duyệt của bạn.",link:"http://studio26f.org",id:"1886285b352c8f95146cc7d1cc39c16745b501d9"},{title:"Dự án trên GitHub",tags:["nhom02;","mã","nguồn","mở;","github;","repository;","kho","lưu","trữ"],category:"org",content:"Repository chính thức của Techmino trên GitHub. Chúng tôi sẽ rất cảm kích nếu bạn tặng cho chúng tôi một ngôi sao!",link:"https://github.com/26F-Studio/Techmino",id:"cbfde028a744aca323d1a6f5a1d22e0d03784594"},{title:"Discord",tags:["nhom02","máy","chủ","server"],category:"org",content:`[[ -Discord của Techmino chính là nơi mà bạn có thể cập nhật mọi thông tin về Techmino, hoặc đơn giản là đến trò chuyện với tất cả mọi người. - -Nhấn nút hình địa cầu để tham gia cùng chúng tôi! - ]]`,link:"https://discord.gg/f9pUvkh",id:"d7113c54b5486b08d6ec2c9272eed39bdb49856d"},{title:"=[NHÓM 03]=",tags:["nhom03"],category:"",content:"NHÓM 03: ỦNG HỘ CHO TÁC GIẢ CỦA TECHMINO",link:"",id:"f9120fe0156e312d5b04a822d5f8a4b8a6645dfe"},{title:"=[NHÓM 03]=",tags:["nhom03"],category:"",content:"Nội dung của nhóm này đã bị ẩn đi do yêu cầu của nền tảng. Nhưng bạn vẫn có thể hỏi về nội dung này trong server Discord của chúng tôi.",link:"",id:"f94fd4c6e7abbaa7fd5d0a669df73142ac1eea12"},{title:"Ủng hộ 1",tags:["nhom03;","wechat","alipay"],category:"org",content:'Để ủng hộ cho Techmino thông qua WeChat Pay hoặc Alipay, gõ \\"support\\" ở trong console và quét mã QR.',link:"",id:"40366f34c726520e2baf5cd93b151d6bb43932a5"},{title:"*ĐÃ ẨN*",tags:[],category:"org",content:"",link:"",id:"dd4b934536db95436f5d707915f0aa768497fe4e"},{title:"Ủng hộ 2",tags:["nhom03;","afdian","aidadian"],category:"org",content:"Để ủng hộ cho Techmino qua Aifadian, nhấn vào nút hình địa cầu để mở trang ủng hộ này. Lưu ý là Aifadian sẽ tính thêm 6% phí giao dịch.",link:"https://afdian.net/@MrZ_26",id:"d6498d56c4dbfe91395fd37dd72cc9697120cb3a"},{title:"*ĐÃ ẨN*",tags:[],category:"org",content:"",link:"",id:"dd4b934536db95436f5d707915f0aa768497fe4e"},{title:"Ủng hộ 3",tags:["nhom03;","patreon"],category:"org",content:"Để ủng hộ cho Techmino qua Patreon, hãy nhấn vào nút hình địa cầu để mở trang ủng hộ này. Lưu ý là Patreon có thể tính phí dịch vụ cho bạn đối với các giao dịch trên một số tiền nhất định.",link:"https://www.patreon.com/techmino",id:"da131c1f4ff290137f50655625b909522d6e2e40"},{title:"*ĐÃ ẨN*",tags:[],category:"org",content:"",link:"",id:"dd4b934536db95436f5d707915f0aa768497fe4e"},{title:"=[NHÓM 04]=",tags:["nhom04"],category:"",content:"NHÓM 04: MẸO & LỜI KHUYÊN",link:"",id:"a67510a23a19222238355f523f5655e9e97196f4"},{title:"Mới tập chơi?",tags:["guides","newbie","noob","readme","recommendations","suggestions","helps"],category:"help",content:`[[ -Chúng tôi có vài lời khuyên dành cho những người mới chơi xếp gạch: - Hai thứ cơ bản: - 1. Chọn những game xếp gạch chuyên nghiệp có cơ chế điều khiển tốt. Techmino, TETR.IO, Jstris và Tetris Online là một số lựa chọn khá tốt đấy. Đừng chơi những game có đánh giá không tốt bởi vì đa số chúng không đi sát với Guideline, hoặc là có cơ chế điều khiển tệ hại; gây ảnh hưởng xấu trong quá trình luyện tập. - 2. Dành thời gian để học các kỹ năng cơ bản đã. Cố gắng dành nhiều thời gian hơn cho các kỹ năng như đọc hàng NEXT hoặc có thể xóa Tetris một cách ổn định. Làm chủ các phần cơ bản trước khi nghĩ tới những kỹ năng nâng cao hơn như T-spin. - Ba kỹ năng cần có: - 1. Nhớ các vị trí xuất hiện của gạch. - 2. Nhớ các chuỗi thao tác để di chuyển gạch đến vị trí mong muốn. - 3. Suy nghĩ trước về vị trí đặt viên gạch sắp tới. - -Bạn có thể nhấn nút Mở link để mở bài "Suggestion for new players to Tetris Online", viết bởi Tatianyi - một người chơi xếp gạch ở Trung Quốc (dịch sang tiếng Anh bởi User670). - ]]`,link:"https://github.com/user670/temp/blob/master/tips_to_those_new_to_top.md",id:"160a3a0ac75d2913f4c377c6b7c15570260d005d"},{title:"Đề xuất luyện tập",tags:["nhom04","readme","noob","new","guides","recommendations","suggestions","helps;","đề","xuất","luyện","tập;","người","mới","chơi;","hướng","dẫn;","lời","khuyên;","gợi","ý"],category:"help",content:`[[ -Lời khuyên khi tập chơi: -Sau đây là vài lời khuyên của chúng tôi để cải thiện kỹ năng chơi của bạn. Bạn cũng đừng ngại nghỉ ngơi và dành nhiều thời gian hơn để chơi những chế độ bạn thích nếu bạn cảm thấy mệt mỏi. Chúc bạn thành công! - -Những lời khuyên này đã được sắp xếp thành nhóm với độ khó tăng dần. Tuy vậy, chúng tôi khuyên bạn hãy làm cả 3 cùng lúc thay vì từng cái một (A → B → C) - -A. Stacking (Xếp gạch) - A1. Suy nghĩ kỹ trước khi đặt gạch. Chưa vừa ý? Suy nghĩ thêm lần nữa. - A2. Xếp gạch càng phẳng càng tốt để bạn có thể ra quyết định đặt gạch dễ dàng hơn. - A3. Lên kế hoạch trước cách xếp, hãy tận dụng tối đa NEXT và HOLD để giữ được thế đẹp. - -B. Efficiency & Speed (Hiệu quả & Tốc độ) - B1. Đừng dựa vào bóng gạch quá nhiều! Nên tập trung vào việc suy nghĩ vị trí tốt nhất cho gạch đó. - B2. Nên sử dụng 2 (hoặc 3, tùy game) phím xoay thay vì nhấn 1 phím xoay liên tục trong thời gian dài. - B3. Đừng lo lắng về tốc độ khi bạn mới tập chơi Finesse. Bạn có thể bắt đầu học bằng cách chơi chậm, rồi từ từ bạn có thể tập chơi nhanh hơn khi đã quen tay - việc này không khó đâu! - -C. Practice (Luyện tập): - Cố gắng hoàn thành các chế độ sau - C1. "40 hàng". - C2. "40 hàng" mà không dùng HOLD. - C3. "40 hàng" mà chỉ được làm Techrash. - C4. "40 hàng" mà chỉ được làm Techrash và không được dùng HOLD. - -Mẹo: Bạn có thể điều chỉnh độ khó nhóm C tùy vào khả năng của bạn. - -Sau khi xong nhóm C, hãy luyện tập tiếp nhóm A, đây là kỹ năng RẤT quan trọng trong bất kỳ game xếp gạch nào. Sau khi làm chủ được kỹ năng đọc NEXT thì bạn dễ dàng thành thạo các thứ khác. -]]`,link:"",id:"f5b777f85ab11163ad84b500ab139403986c83f8"},{title:"Học làm T-spin",tags:["nhom04","tspin;","học;","hướng","dẫn;","mẹo;","lời","khuyên;","đề","xuất"],category:"help",content:`[[ -T-spin là một kỹ năng khá khó, không tài nào thành thạo nổi nếu chỉ có nhìn vào địa hình nơi làm T-spin. Bạn cần phải có kỹ năng đọc NEXT và lên kế hoạch tốt để có thể làm T-spin - -Lời khuyên của chúng tôi, bạn nên bắt đầu học làm T-spin khi bạn có thể: - - Xoá 40 hàng trong vòng 60 giây (tùy vào khả năng cá nhân con số này sẽ khác) - - Xóa 40 hàng chỉ dùng Tetris - - Xóa 40 hàng chỉ dùng Tetris + không HOLD mà không bị mất tốc độ quá nhiều - -Những chế độ này sẽ giúp bạn củng cố kỹ năng đọc NEXT và lên kế hoạch. - ]]`,link:"",id:"56d475d3b924c2e60f3b7fa52ac37952a0bbf3cf"},{title:"Điều chỉnh DAS",tags:["nhom04","das","tuning"],category:"help",content:"Với những người chơi đã có kinh nghiệm mà muốn chơi nhanh hơn, khuyên dùng DAS 4-6f (67-100 ms) và ARR 0f (các viên gạch sẽ ngay lập tức dính vào tường khi DAS kết thúc).\\n\\nNếu bạn thấy khó điều khiển, hãy thử tăng DAS lên 1-2f, nhưng giữ ARR bé hơn 2f (33 ms).\\n\\nTóm lại, DAS nên để thấp nhất có thể nhưng vẫn phải đảm bảo được game có thể phân biệt được bạn đang nhấn hay giữ phím trong khi ARR để ở mức thấp nhất có thể.",link:"",id:"1d313f9b7b750999ce724488d61eac2967fd5551"},{title:"Bố cục phím",tags:["nhom04","feel"],category:"help",content:`[[ -Dưới đây là vài lời khuyên hữu ích khi bạn đang chỉnh sửa bố cục phím - -1. Một ngón tay chỉ nên thực hiện một chức năng duy nhất. Ví dụ như: một ngón cho sang trái, một ngón cho sang phải, một ngón cho rơi mạnh, …; và gán một ngón tay cho cả phím xoay trái và xoay phải (vì không ai xoay cả hai phía cùng một lúc cả) - -2. Trừ khi bạn tự tin với ngón út của mình, thì không nên để ngón tay này làm bất kì việc nào hết! (Vì chúng rất kém linh hoạt). Lời khuyên: nên xài ngón trỏ và ngón giữa vì hai ngón này là nhanh nhẹn nhất, nhưng bạn cũng có thể thoải mái tìm hiểu xem các ngón tay của mình nhanh chậm thế nào, mạnh yếu ra sao. - -3. Không nhất thiết phải sao chép bố cục phím của người khác, vì không ai giống ai. Bố cục phím thường không ảnh huởng quá nhiều đến kỹ năng của bạn nếu bạn đã tuân theo quy tắc 1 và 2. - ]]`,link:"",id:"1c062e0ee2b1249c0378d855abd3dbd8614862e1"},{title:"Khả năng xử lý gạch",tags:["nhom04","feel","handling"],category:"help",content:`[[ -Những yếu tố sau có thể ảnh hưởng tới việc xử lý gạch của bạn: - -1. Độ trễ đầu vào, có thể là do cấu hình, thông số hoặc tình trạng của thiết bị. Khởi động lại trò chơi; bảo dưỡng, sửa chữa thiết bị của bạn hoặc đổi sang thiết bị mới có thể khắc phục vấn đề này. -2. Độ ổn định của game, phụ thuộc vào cách thiết kế và cách lập trình của game. Có thể cải thiện tình trạng này bằng cách tắt hiệu ứng hình ảnh hoặc để chất lượng đồ họa ở mức thấp. -3. Thiết kế có chủ đích trong game. -4. Thông số điều khiển gạch chưa hợp lí (ví dụ: DAS, ARR, SDARR,…). Thay đổi các cài đặt này có thể giúp bạn. -5. Tư thế chơi không hợp lý. Hãy thử tìm tư thế chơi thoải mái nhất có thể. -6. Thao tác không quen sau khi đổi bố cục phím hoặc thiết bị. Tập làm quen với chúng hoặc thay đổi cài đặt phím. -7. Mỏi cơ, chuột rút,… làm cho việc phản ứng và phối hợp tay khó khăn hơn. Hãy nghỉ ngơi và trở lại sau một vài ngày. - ]]`,link:"",id:"d7abb052e1814c1e80d5c25f1d4ef1d1b6c38088"},{title:"Các nút xoay",tags:["nhom04","doublerotation","phím","xoay"],category:"help",content:"Dùng cả nút xoay trái và phải sẽ giảm số lần nhấn nút, vì xoay một hướng ba lần thì cũng tương tự xoay một lần hướng ngược lại.\\nĐây cũng là một thứ cần phải lưu ý nếu bạn muốn thành thạo Finesse.\\n\\nNếu bạn dùng thêm nút xoay 180°, bạn có thể xoay tới bất kì hướng nào chỉ với 1 lần nhấn phím (nếu không xét spin).\\n\\nTuy nhiên, chúng tôi không khuyến khích dùng 180° vì không phải game nào cũng hỗ trợ xoay 180°, và sự khác biệt về tốc độ giữa việc dùng hai nút và ba nút là không quá đáng kể.\\nBạn có thể bỏ qua kỹ thuật này trừ khi bạn muốn chơi nhanh hơn chớp.",link:"",id:"ed4c4d951cf06b326be9b00c9a3c6afe33064674"},{title:"=[NHÓM 05]=",tags:["nhom05"],category:"",content:`[[ -NHÓM 05: CÁC YẾU TỐ CẦN THIẾT CỦA CÁC GAME XẾP GẠCH HIỆN ĐẠI - -Khái niệm về trò chơi Tetris hay trò chơi xếp gạch "hiện đại" khá là mờ nhạt. -Nói chung, một game xếp gạch hiện đại thường sẽ bám sát theo Tetris Design Guideline (Bộ nguyên tắc thiết kế cho một game Tetris). Game nào thỏa mãn đa số các tiêu chí dưới đây có thể được coi là game xếp gạch hiện đại. - - 1. Phần có thể nhìn thấy được của bảng có kích thước 10 cột × 20 hàng, cùng với 2 - 3 hàng ẩn ở trên cùng. (Kích thước bảng thực tế ở trong mã nguồn game thường cố định ở 10 cột × 40 hàng). - 2. Gạch mới xuất hiện ở giữa trên cùng của vùng có thể nhìn thấy (thường là ở hàng 21-22). Mỗi gạch đều có màu sắc và hướng xuất hiện mặc định riêng. Với những gạch có chiều dài lẻ có thể lệch sang trái hoặc phải 1 ô. - 3. Có một bộ xáo gạch như 7-Bag hay His được thiết kế để giảm hoặc tránh tình trạng Flood hay Drought. - 4. Có một hệ thống xoay, và cho phép xoay theo ít nhất 2 hướng. Ưu tiên hệ thống xoay SRS hoặc các biến thể tương tự. - 5. Có hệ thống chờ khóa gạch thích hợp. - 6. Có cơ chế top-out thích hợp. - 7. Có hàng NEXT hiện từ 3 - 6 gạch sắp rơi (vẫn chấp nhận trường hợp chỉ hiện 1 gạch) và những gạch trong cột này phải giống tư thế khi chúng vừa mới xuất hiện trong bảng. - 8. Cho phép giữ gạch. - 9. Nếu có hệ thống chờ tạo gạch hoặc hệ thống chờ xóa hàng, game thường sẽ có hệ thống IRS và IHS. Techmino còn có cả hệ thống IMS nữa (tìm trong Zictionary để biết thêm). - 10. Có hệ thống DAS nhằm hỗ trợ các chuyển động ngang một cách chính xác và nhanh chóng. - ]]`,link:"",id:"302e7d34eafc0145c5c22cc1a51a873ef0ae9223"},{title:"Next (Kế / Tiếp)",tags:["nhom05","preview"],category:"term",content:"Là một hàng dùng để hiện chuỗi gạch sẽ lần lượt xuất hiện. Có một kỹ năng cần thiết đó là lên kế hoạch trước cách đặt các gạch từ hàng NEXT. Số lượng gạch bạn muốn lên kế hoạch là tùy thuộc vào bạn và có thể thay đổi tùy theo chế độ chơi và tình trạng bảng chơi hiện tại của bạn.",link:"",id:"8a234ed90bab0149fbee6d0c0473ae7788009a43"},{title:"Hold (Giữ/Trữ/Cất)",tags:["nhom05"],category:"term",content:"Một chức năng cho phép bạn sử dụng gạch ở trong ô HOLD\\n(hoặc gạch đầu tiên ở hàng NEXT nếu bạn chưa cất gạch trước đó)\\nvà cất gạch đang rơi vào ô HOLD \\n\\nBình thường, Hold chỉ có thể được sử dụng 1 lần cho mỗi gạch.\\n\\nTrên thực tế, việc dùng Hold hay không cũng có ưu nhược của nó.\\nNếu không dùng Hold:\\n\\t- Có thể giảm áp lực cho người chơi khi điều khiển gạch.\\n\\t- Đồng thời có thể giảm số phím cần nhấn trong game → có thể tăng KPS lên.\\nTrên thực tế, đã có nhiều kỷ lục 40L được xác lập mà không cần Hold.\\n\\nNếu dùng Hold:\\n\\t- Hold có thể có ích trong nhiều trường hợp khác nhau (ví dụ như khi đang chơi ở tốc độ rơi cao).\\n\\t- Cho phép người chơi có thể làm được nhiều setup phức tạp hơn mà không đẩy thêm áp lực cho người chơi.",link:"",id:"d02efd3956a794d061b7456ec7b52059419cb9dd"},{title:"Hold tại chỗ",tags:["nhom05","physicalhold","physics","inplacehold"],category:"term",content:'*Chỉ có trên Techmino*\\n\\"Giữ ngay tại chỗ\\".\\n\\nMột kiểu Hold đặc biệt cho phép gạch được lấy ra từ HOLD sẽ xuất hiện ngay tại vị trí mà gạch hiện tại đang rơi (khác với Hold thông thường khi mà gạch sẽ xuất hiện ở trên cùng của bảng).\\nBạn có thể bật chức năng này trong Chế độ tự do.\\n\\nFun fact: người Trung gọi cái này là \\"Physical Hold\\',link:"",id:"e071629204bf27b88454c7e01e0e7aea7cca4695"},{title:"Swap (Chuyển)",tags:["nhom05","hold"],category:"term",content:'Một biến thể khác của \\"Hold\\". Swap sẽ đổi gạch đang rơi với gạch tiếp theo trong NEXT. Bạn có thể bật chức năng này trong Chế độ tự do.',link:"",id:"938e3ce3a64c332521abe9ffa0564560a5c15b70"},{title:"Topping out",tags:["nhom05","topout","toppingout","game","over"],category:"term",content:`[[ -Một tựa game xếp gạch hiện đại thường có 3 điều kiện để "game over": - -1. Block out: Gạch mới nằm chồng lên một gạch đã đặt. -2. Lock out: Có gạch nằm hoàn toàn ở phía trên vùng nhìn thấy. -3. Top out: Độ cao của bảng vượt quá độ cao cho phép (thường là 40 hàng). Cái này đa số là do hàng rác đẩy bảng lên quá cao. - -Techmino mặc định sẽ không kiểm tra điều kiện Lock out và Top out. - ]]`,link:"",id:"87784adbf116a85f273f0914bf51d9acd5c4475f"},{title:"Vùng đệm",tags:["nhom05","invisible","buffer","zone"],category:"term",content:'Tên tiếng Anh là \\"Buffer Zone\\". Chỉ bao gồm các hàng từ hàng 21-40 (nằm ở phía trên vùng nhìn thấy).\\n\\nTồn tại vùng này là vì sẽ có trường hợp hàng rác sẽ đẩy gạch trong bảng ra khỏi vùng nhìn thấy (dễ thấy nhất là Center 4-Wide).\\nNhững ô gạch nào đi ra khỏi vùng nhìn thấy được sẽ đi vào vùng đệm và sẽ xuất hiện lại trong vùng nhìn thấy nếu bạn đã xóa đủ hàng.\\n\\nVùng đệm thường cao 20 ô (thường là do bảng đã bị cố định kích thước ở trong các dòng code), nhưng có game có vùng này cao vô hạn (ví dụ như trong chính Techmino luôn, khi bảng có thể mở rộng kích thước của nó).\\n\\nCác bạn có thể tìm hiểu thêm ở mục \\"Vùng biến mất\\".',link:"",id:"febbe1fe4095417e59d6904c88ca5bf55e9bce4f"},{title:"Vùng biến mất",tags:["nhom05","gone","vanish","zone"],category:"term",content:`[[ -Tên tiếng Anh: "Vanish Zone". Là vùng bao gồm các hàng nằm ở trên "Vùng đệm", thường bắt đầu từ hàng 40 trở lên. - -Bình thường, nếu có ô gạch nào ở trong vùng này thì game sẽ kích hoạt ngay cơ chế top-out. -Tuy nhiên, mỗi game sẽ có cách xử lý khác nhau. Ví dụ: - - Jstris: Vùng biến mất nằm ở hàng 22 trở lên, những ô gạch nào nằm trong vùng này sẽ biến mất hoàn toàn. - - Tetris Online: Game sập. - - Puyo Puyo Tetris: Các ô gạch ở vùng biến mất sẽ sao chép lại vô số lần khi chúng quay về lại vùng nhìn thấy (nhấn vào hình địa cầu để xem ví dụ của trường hợp này). - ]]`,link:"https://youtu.be/z4WtWISkrdU",id:"72f2c2ddb511f79da68c204fdbbe5f5237ec8d10"},{title:">A|Gạch",tags:["nhom05a"],category:"",content:"Bạn có biết?\\nGame này hỗ trợ và cho phép bạn chơi với 29 loại gạch khác nhau\\n\\n1 Mino | 1 Domino | 2 Trimino | 7 Tetromino | 18 Pentomino\\n\\nMino: gạch 1 ô\\nDomino: gạch 2 ô\\nTrimino: gạch 3 ô\\nTetromino: gạch 4 ô\\nPentomino: gạch 5 ô\\n\\nTechmino có Hexomino (gạch 5 ô) không?\\nBây giờ thì chưa nhưng tương lai thì có thể có.",link:"",id:"a36def6b8a1abb8fe8e02ac107edbc4685d38e0e"},{title:"Hình dạng",tags:["nhom05a","hình","dáng`","tetromino","tetramino","tetrimino"],category:"term",content:'Trong đa số các game xếp gạch, tất cả gạch đều là Tetromino\\n\\nCó 7 loại Tetromino, nếu cho phép xoay nhưng không lật ngang hay dọc, gồm: Z, S, J, L, T, O, và I.\\nHãy xem mục \\"Tên\\" (Nhóm 05A) để có thêm thông tin.',link:"",id:"fa09f2dfbf901a2859323fbeeab6e89a4f857fdf"},{title:"Màu",tags:["nhom05a","màu`","tetromino","tetramino","tetrimino"],category:"term",content:"Nhiều game xếp gạch hiện đại, từ chính thức tới fan-made, đã và đang sử dụng cùng một bảng màu duy nhất cho Tetromino.\\n\\nNhững màu này bao gồm:\\n\\tZ - Đỏ \\n\\tS - Xanh lá \\n\\tJ - Xanh dương \\n\\tL - Cam \\n\\tT - Tím \\n\\tO - Vàng \\n\\tI - Xanh lơ\\n\\nTechmino cũng sử dụng bảng màu này để tô màu cho Tetromino.",link:"",id:"ffead6b5e6d24285950c8a5d1bae3c33d76b9605"},{title:"Tên",tags:["nhom05a","mino","tên","gạch`","tetromino","tetramino","tetrimino"],category:"term",content:"Đây là danh sách gạch mà Techmino sử dụng\\n(cùng với tên tương ứng của chúng):\\n\\nTetromino:\\nZ: ``, S: ``, J: ``, L: ``, T: ``, O: ``, I: ``;\\n\\nPentomino:\\nZ5: ``, S5: ``, P: ``, Q: ``, F: ``, E: ``, T5: ``, U: ``, V: ``, W: ``, X: ``, J5: ``, L5: ``, R: ``, Y: ``, N: ``, H: ``, I5: ``;\\n\\nTrimino, Domino và Mino:\\nI3: ``, C: ``, I2: ``, O1: `.",link:"",id:"5003ae81bb895d2871e28628a23f1d835b9b78fc"},{title:"Hướng",tags:["nhom05a","0r2l","02","20","rl","lr`","tetromino","tetramino","tetrimino"],category:"term",content:`[[ -Trong hệ thống xoay SRS và các biến thể của SRS, nhiều người sử dụng một hệ thống số và chữ cái để mô tả hướng của gạch: - 0: Hướng mặc định của hệ thống xoay - R: Xoay phải, góc 90° theo chiều kim đồng hồ - L: Xoay trái, góc 90° theo ngược chiều kim đồng hồ - 2: Xoay 2 lần, góc 180° theo bất kì chiều nào. - -Hệ thống mô tả cách xoay như sau: - - 0 → L nghĩa là xoay gạch ngược chiều kim đồng hồ, từ hướng ban đầu (0) sang hướng bên trái (L) - - 0 → R nghĩa là xoay gạch theo chiều kim đồng hồ, từ hướng ban đầu (0) sang hướng bên phải (R) - - 2 → R nghĩa là xoay gạch theo chiều kim đồng hồ, từ hướng 180° (2) sang hướng bên phải (R). - ]]`,link:"",id:"b1d2c47e1399de78419739c5c2edba48948e7dbe"},{title:">B|Hệ thống xoay",tags:["nhom05b"],category:"",content:`[[ -Một hệ thống để xác định cách gạch xoay. - -Ở các trò xếp gạch hiện đại, mỗi gạch có thể xoay dựa trên một tâm xoay cố định (vài game có thể không có tâm xoay cố định). -Nếu gạch sau khi xoay đè lên gạch khác / ra ngoài bảng, hệ thống sẽ thử "wall-kicking" (đẩy gạch sang các vị trí xung quanh). -Tuy nhiên, nếu khoảng cách quá lớn thì hệ thống xoay không thể đá gạch được - -Wall-kick cho phép gạch có thể đến những lỗ có hình dạng nào đó mà bình thường không thể tiếp cận được. Các vị trí mà gạch hệ thống xoay có thể thử được chứa trong một bảng gọi là "wall-kick table". - ]]`,link:"",id:"548ae75dbfe7edc43c3f1e9fa7133883f4dfb866"},{title:"ARS",tags:["nhom05b","arikrotationsystem","atarirotationsystem"],category:"term",content:"Có thể chỉ 1 trong 2 hệ thống sau:\\nArika Rotation System (Hệ thống xoay Arika): hệ thống xoay được dùng trong series game Tetris: The Grand Master.\\nAtari Rotation System (Hệ thống xoay Atari), hệ thống xoay luôn căn chỉnh các gạch ở trên cùng bên trái khi xoay.",link:"",id:"98ecc8f91fe7345e60f53ff4764b01daa1ec19b2"},{title:"ASC",tags:["nhom05b","ascension"],category:"term",content:"Hệ thống xoay được dùng trong Ascension (tên viết tắt cũng là ASC) - một bản clone của Tetris. Tất cả các gạch đều sử dụng chung hai bảng wall-kick đối xứng với nhau cho 2 hướng xoay và vùng đá phải nằm trong khoảng cách 2 ô ở tất cả 4 hướng.",link:"",id:"38975a865589d4c9f5039f1e827b0ed0ac5e7183"},{title:"ASC+",tags:["nhom05b","ascension","ascplus"],category:"term",content:"Một phiên bản được chỉnh sửa của ASC trong Techmino để hỗ trợ wall-kick khi xoay 180°.",link:"",id:"7dd7a5f78429bdb1e0bd250f4e2ad8f7adcd7774"},{title:"BPS",tags:["nhom05b","bulletproofsoftware"],category:"term",content:"BPS rotation system | Hệ thống xoay BPS\\nĐược dùng trong các game Tetris được viết bởi Bullet-Proof Software.",link:"",id:"00e339b72578fec63f997fb304cac9886f972083"},{title:"BiRS",tags:["nhom05b","biasrs","biasrotationsystem"],category:"term",content:`[[ -Bias Rotation System | Hệ thống xoay Bias. -*Chỉ có trên Techmino* - -Một hệ thống xoay dựa trên SRS và XRS - -Để kích hoạt offset đặc biệt trong BiRS, cần phải thực hiện cùng lúc các điều kiện sau: -1. Một nút di chuyển (Trái / Phải / Thả nhẹ) phải được giữ -2. Gạch hiện tại phải chạm một ô gạch bất kỳ hoặc chạm tường ở hướng đang được giữ ở bước 1 - -Nếu thực hiện thành công, offset ở hướng đang được giữ ở bước 1 sẽ được thêm 1 ô. Tuy nhiên, để kick được thì cần phải tuân thêm hai điều kiện: - -1. Khoảng cách euclide (ơclit) từ tâm tới vị trí đá tới được chọn phải bé hơn √5 -2. Hướng của cú đá không phải là hướng đối của hướng đã được xác định bằng phím bấm. - -So với XRS, BiRS dễ nhớ hơn vì chỉ dùng một bảng wall-kick; nhưng vẫn giữ được khả năng vượt địa hình của SRS. - ]]`,link:"",id:"ca8f1fa381a4eb13862190e660d1c615c529578b"},{title:"C2RS",tags:["nhom05b","c2rs","cultris2"],category:"term",content:"Cultris II rotation system | Hệ thống xoay Cultris II\\n\\nMột hệ thống xoay ở trong Cultris II - một bản clone của Tetris.\\nToàn bộ gạch và cả hướng xoay đều sử dụng chung một bảng wall-kick (trái 1, phải 1, dưới 1, dưới trái 1, dưới phải 1, trái 2 và phải 2) và phía bên trái được ưu tiên hơn so với bên phải.\\n\\nTrong Techmino có một bản chỉnh sửa của hệ thống này, đó là C2sym.",link:"",id:"6c60d2cdda7d3c08f9c6f9d92dfca2bb9b20e22d"},{title:"C2sym",tags:["nhom05b","cultris2"],category:"term",content:"Một bản chỉnh sửa của C2RS trong Techmino. Hệ thống sẽ ưu tiên hướng trái hoặc phải tùy vào hình dạng của các viên gạch khác nhau.",link:"",id:"4c5ae6a71c25388d1ed0fdeb74ac9d13738ade68"},{title:"DRS",tags:["nhom05b","dtetrotationsystem"],category:"term",content:"DTET Rotation System | Hệ thống xoay DTET\\nHệ thống xoay trong DTET.",link:"",id:"d8d40a4a8b77492da839f3ee647026de2721ecc6"},{title:"NRS",tags:["nhom05b","nintendorotationsystem"],category:"term",content:"Nintendo Rotation System | Hệ thống xoay Nintendo\\n\\nHệ thống được sử dụng trong các game Tetris cho hai hệ máy Nintendo Entertainment System (NES) và Game Boy.\\nHệ thống xoay này có hai phiên bản ngược chiều nhau. Trên Game Boy thì gạch sẽ căn về phía bên trái, còn NES thì gạch sẽ căn về phía bên phải.",link:"",id:"cd91f84e27c1c96a586b2fc5345d494597a6b9e4"},{title:"SRS",tags:["nhom05b","superrotationsystem"],category:"term",content:"Super Rotation System | Hệ thống xoay Siêu Cấp\\n\\nHệ thống xoay này được sử dụng rất nhiều trong các game xếp gạch hiện đại và có rất nhiều hệ thống xoay do fan làm ra cũng dựa vào hệ thống này.\\nCó tất cả 8 bảng wall-kick trong SRS, tương ứng với hai hướng xoay cho tất cả bốn tư thế của tất cả các gạch (không có trường hợp cho 180°). Nếu gạch đụng tường, đụng đáy, hay đè lên gạch khác sau khi xoay, hệ thống sẽ kiểm tra các vị trí xung quanh. Bạn có thể xem đầy đủ các bảng wall-kick của SRS trên Tetris Wiki.",link:"",id:"6325859edf8f0316beb976c251e3739320ba9081"},{title:"SRS+",tags:["nhom05b","srsplus","superrotationsystemplus"],category:"term",content:"Một biến thể của SRS để thêm hỗ trợ wall-kick khi xoay 180°.",link:"",id:"e3b3a98396f109df26f4d44777870a9989a74866"},{title:"TRS",tags:["nhom05b","techminorotationsystem"],category:"term",content:'Techmino Rotation System | Hệ thống xoay Techmino\\n*Chỉ có trên Techmino*\\n\\nMột hệ thống xoay dựa trên SRS.\\nHệ thống này khắc phục được hiện tượng gạch S / Z bị kẹt trong một số trường hợp.\\n\\nHơn nữa, TRS có thêm các bảng wall-kick dành cho Pentomino dựa trên logic của SRS với Tetromino.\\n\\nHệ thống cũng hỗ trợ O-Spin, cho phép gạch chữ O có thể đá hoặc \\"biến hình\\".',link:"",id:"08d63d6deeba94a795d27d6965880356c30cfc64"},{title:"XRS",tags:["nhom05b","xrs"],category:"term",content:"X rotation system | Hệ thống xoay X, một hệ thống xoay trong T-ex.\\n\\nỞ trong các hệ thống khác, bảng wall-kick là cố định, nên gạch chỉ có thể bị đá ra một hướng (và hướng đó có thể không phải là hướng mà người chơi muốn). XRS giải quyết vấn đề nan giải này bằng cách cho phép người chơi giữ phím di chuyển (Trái / Phải / Thả nhẹ) để hệ thống ưu tiên theo hướng đó. Điều đó làm cho việc điều khiển hướng đi của gạch sau khi wall-kick của người chơi dễ dàng hơn.",link:"",id:"8313913e9f2100a15d29fc661f0bf3e043c2ac35"},{title:">C|Hệ thg đ.khiển",tags:["nhom05c"],category:"",content:"NHÓM 5C: HỆ THỐNG ĐIỀU KHIỂN",link:"",id:"d2f6a01e025c3491115f573968646a84f36d4e7e"},{title:"IRS",tags:["nhom05c","initialrotationsystem"],category:"term",content:"Initial Rotation System\\nCho phép bạn giữ phím xoay trong lúc chờ tạo gạch (spawn delay) để gạch được xoay sẵn lúc xuất hiện. Việc này có thể giúp bạn thoát chết trong một vài tình huống.",link:"",id:"6eb922490b4344c5aa99427d8d17aca5790e5b82"},{title:"IHS",tags:["nhom05c","initialholdsystem"],category:"term",content:"Initial Hold System\\nCho phép bạn giữ phím Hold trong lúc chờ tạo gạch (spawn delay) để thay gạch sắp tới bằng gạch trong HOLD. Việc này có thể giúp bạn thoát chết trong một vài tình huống.",link:"",id:"2651cd73fca2dd2cf48f14dd9a01b7c3e14a0e77"},{title:"IMS",tags:["nhom05c","initialmovesystem"],category:"term",content:'Initial Movement System\\n*Chỉ có trên Techmino*\\n\\nCho phép bạn giữ một phím di chuyển trái phải trong lúc chờ tạo gạch (spawn delay) để gạch xuất hiện cách chỗ ban đầu 1 ô theo hướng được giữ. Việc này có thể giúp bạn thoát chết trong một vài tình huống.\\nLưu ý: DAS buộc phải được \\"nạp đầy\\" trước khi gạch xuất hiện.',link:"",id:"737e54d1f4d8cba7da621c8b9fb8d295ac1592d2"},{title:">D|Các kiểu xáo",tags:["nhom05d"],category:"",content:"",link:"",id:"b2bc4b4f7d39aa5c345be88a8556a4a9be3aa36a"},{title:"Túi 7",tags:["nhom05d","bag7","randomgenerator","túi","7","gạch;","kiểu","xáo","túi","7","gạch"],category:"term",content:'Tên gọi chính thức là \\"Random Generator\\" (Trình xáo gạch ngẫu nhiên) hay \\"7-Bag Generator\\" (Kiểu xáo Túi 7 gạch).\\nĐây là kiểu xáo hay được sử dụng bởi đa số các xếp gạch hiện đại.\\n\\nChuỗi gạch sẽ được chia thành các nhóm (túi). Mỗi túi gạch đều có dủ 7 Tetromino nhưng trình tự thì ngẫu nhiên.\\nMột vài ví dụ về chuỗi gạch: ZSJLTOI, OTSLZIJ, LTISZOJ.\\n\\nKiểu xáo này cho phép ngăn chặn tình trạng sự xuất hiện không đồng đều của các viên gạch.',link:"",id:"3b4c086a01c9e03a74b44c6cc095c55240b3b5db"},{title:"His",tags:["nhom05d","historygenerator","hisgenerator"],category:"term",content:`[[ -Một kiểu xáo gạch được sử dụng nhiều trong series game Tetris: The Grand Master. - -Trong kiểu xáo này, cách chọn gạch diễn ra như nhau: - - Bước 1: Chọn ngẫu nhiên một trong bảy Tetromino. - - Bước 2: Kiểm tra xem liệu gạch đã bốc trúng có phải là một trong những gạch đã xuất hiện gần nhất không. - -- Đúng: Tới Bước 3 - -- Sai: Nhảy tới Bước 4 - - Bước 3: Cộng 1 vào số lần đã bốc lại, kiểm tra xem liệu số lần đã bốc lại có vượt qua giới hạn tối đa hay không? - -- Đúng: Tới Bước 4 - -- Sai: nhảy về Bước 1 - - Bước 4: Dùng gạch đã bốc trúng - -Kiểu xáo này hay được mô tả bằng "His [A] Roll [B]" -Trong đó: - - Nhớ A gạch đã xuất hiện gần nhất. - - Chỉ có thể bốc lại tối đa B lần. -Ví dụ: His4 Roll6 - - Nhớ 4 gạch xuất hiện gần nhất. - - Chỉ có thể bốc lại tối đa 6 lần. - -Trong Techmino, số lần bốc lại gạch bằng một nửa số gạch đã kiểm tra của kiểu/hệ thống xáo. - -Kiểu xáo His là phiên bản cải tiến so với kiểu xáo ngẫu nhiên đơn giản và giảm tình trạng chuỗi S và Z liên tục. - ]]`,link:"",id:"22c78b832d1fda80dfdd0d0f6f3ce59ccd904f8d"},{title:"HisPool [1/2]",tags:["nhom05d","hispool","historypoolgenerator","kiểu","xáo","hispool"],category:"term",content:'Một biến thể của kiểu xáo gạch His.\\n\\nĐi kèm với cơ chế \\"Pool\\" (Rổ) dựa trên những gạch đã xuất hiện gằn nhất,cho phép gạch chưa được xuất hiện quá lâu có cơ hội xuất hiện cao hơn.\\n\\nKiểu xáo này giúp ổn định chuỗi gạch và đảm bảo rằng flood & drought không xảy ra quá lâu.\\n\\nĐộ ổn định của kiểu xáo này tùy thuộc vào chuỗi gạch gần nhất và túi gạch.',link:"",id:"cbc16ce2bca92a2920d40e6f441f33ee8e69a685"},{title:"HisPool [2/2]",tags:["nhom05d","hispool","historypoolgenerator","kiểu","xáo","hispool"],category:"term",content:`[[ -[Sea: Phần này không có trong Zictionary ngôn ngữ khác!] -Cách hoạt động của kiểu xáo HisPool diễn ra tuần tự như sau: - -Bước 1: Lấy một viên gạch ngẫu nhiên trong cái Rổ. - - Nếu gạch đó là một trong những gạch đã bốc ra trước đó: bốc lại cho tới khi gạch đó không còn là một trong những viên gạch kia, hoặc là hết lượt bốc lại. - -Bước 2: Gạch được bốc trúng sẽ được lấy ra khỏi Rổ. - - Với mỗi gạch còn lại, cộng 1 vào số lần chưa bốc trúng. - - Rổ lúc này còn 34 gạch. - -Bước 3: Thêm gạch có số lần chưa bốc trúng nhiều nhất vào lại rổ để đảm bảo số lượng là 35 gạch. - - Sau khi gạch đó đã thêm vào Rổ, số lần chưa bốc trúng của nó sẽ bị đặt lại về 0 - -Bước 4: Thêm gạch vào chuỗi NEXT và quay về Bước 1. - ]]`,link:"",id:"2e294eb9b494b4953afb98c2421ac45c0aaba354"},{title:"bagES",tags:["nhom05d","bages","easy","start","khởi","đầu","suôn","sẻ;","kiểu","xáo","ez-start;","kiểu","xáo","ezstart"],category:"term",content:"*Chỉ có trên Techmino*\\nTên khác: EZ-Start generator (Khởi đầu suôn sẻ)\\n\\nMột biến thể của kiểu xáo Túi. Gạch đầu tiên của mỗi túi sẽ không bao giờ là gạch khó đặt: S / Z / O / S5 / Z5 / F / E / W / X / N / H.",link:"",id:"937f6f594fcecb9a3a8197474434027026e3a99f"},{title:"Reverb",tags:["nhom05d","kiểu","xáo","reverb"],category:"term",content:"*Chỉ có trên Techmino*\\nMột biến thể của kiểu xáo Túi. \\n\\nKiểu xáo Reverb sẽ lặp ngẫu nhiên một vài gạch từ kiểu xáo Túi. Xác suất lặp lại gạch giảm nếu gạch đã xuất hiện và ngược lại\\nSố lần lặp lại trên lý thuyết nằm từ 0 tới 6",link:"",id:"0ae080977469261426fbace816ec510381ac6b52"},{title:"C2",tags:["nhom05d","cultris2generator","cultrisiigenerator","c2generator"],category:"term",content:'Đây là kiểu xáo được dùng trong Cultris II với cách hoạt động như sau:\\n\\nBước 1. Ban đầu toàn bộ Tetromino sẽ có trọng số (\\"weight\\") là 0.\\n\\nBước 2. Cứ sau mỗi lần xáo gạch, toàn bộ trọng số của các gạch sẽ bị chia hết cho 2, và được cộng một số thực ngẫu nhiên từ 0 tới 1.\\n\\nBước 3. Gạch có trọng số cao nhất, và sau đó trọng số của nó sẽ bị chia cho 3.5.\\n\\nBước 4: Về Bước 2 và tiếp tục lặp lại',link:"",id:"f09f1cf6b521d304e32fd5a82ef69a1427482bdf"},{title:"H. tg. Drought",tags:["drought"],category:"term",content:"Một hiện tượng mà một viên gạch người chơi muốn nhưng lại không xuất hiện. Thường dùng để chỉ hiện tượng khát gạch I trong mấy game cổ điển vì chúng thường dùng bộ xáo gạch ngẫu nhiên đơn giản.\\n\\nTuy nhiên, trong các game hiện đại, hiện tượng drought không thể xảy ra vì khoảng cách tối đa giữa 2 gạch cùng loại là 13 gạch. ",link:"",id:"9998ba77a9e0e9ff1ffe640e6a8470b1908043cd"},{title:">E|Thông số",tags:["nhom05e"],category:"",content:"",link:"",id:"f0ed0cd42a5bdabd85414b6d3fb1049fe8b83b6c"},{title:">E1|Thg số game",tags:["nhom05e1"],category:"",content:"NHÓM 5E1: THÔNG SỐ GAME",link:"",id:"1fac7af85f77a298fb0f5f35f4d9363269ad0a52"},{title:"Tốc độ rơi",tags:["nhom05e1","trọng","lực","falling","speed","gravity"],category:"term",content:`[[ -Tốc độ gạch rơi xuống. Đơn vị là "G". -Chỉ số hàng gạch rơi xuống trong một khung hình. -Con số này luôn đi kèm với giả thiết là game đang chạy ở 60FPS. - -Ví dụ: gạch di chuyển xuống 1 ô / 60 khung hình (1 ô / giây) thì tốc độ rơi là ¹⁄₆₀ G - -Tốc độ tối đa của game xếp gạch hiện đại là 20G (bởi vì có 20 hàng trong vùng nhìn thấy được). - -Trong Techmino, tốc độ còn được biểu diễn ở dạng số khung hình gạch cần để đi xuống 1 ô. -60 ở hệ thống đó tương đương với 1 ô / 1 giây hoặc 1G. - -Trong thực tiễn, "20G" không chỉ "20 ô / giây" mà chỉ "Tốc độ tối đa" -Xem mục tiếp theo để biết thêm. - ]]`,link:"",id:"c5a7d6e5fdbbda86a3da0e14ba0ab18ceebcefa0"},{title:"20G",tags:["nhom05e1","trọng","lực;","ngay","lập","tức;","gravity","instantly"],category:"term",content:"Tốc độ tối đa trong các game xếp gạch hiện đại.\\n\\nMặc dù nhìn qua thuật ngữ này thể hiện tốc độ rơi là 20 hàng / khung hình, nhưng thật ra chúng được dùng để chỉ tốc độ vô tận.\\n\\nHơn nữa, trong các chế độ 20G, game sẽ ưu tiên di chuyển gạch xuống đáy hơn là bất cứ thao tác di chuyển nào từ người chơi.\\nLấy ví dụ: ngay cả khi ARR được đặt là 0, gạch vẫn cứ di chuyển một mạch xuống phía dưới một cách hồn nhiên giống như người chơi chưa nhấn gì.\\nViệc này gây khó cho người chơi khi họ muốn gạch leo ra khỏi hố hoặc nhảy ra khỏi lỗ trong một số tình huống.",link:"",id:"42e3eb0c23eeedeaa4683c9e3b8424fc48967611"},{title:"Lockdown Delay",tags:["nhom05e1","lockdelay","lockdowndelay","lockdowntimer","ld;","thời","gian","chờ","khóa","gạch"],category:"term",content:"Thời gian chờ khóa gạch, viết tắt là LD.\\nĐây là khoảng thời gian ngay sau khi gạch chạm đất và trước khi gạch bị khóa (không thể điều khiển được nữa).\\n\\nTrong các game xếp gạch cổ điển, khoảng thời gian chờ này = khoảng thời gian gạch cần có để di chuyển xuống 1 ô, và không có cơ chế nào để trì hoãn việc khóa gạch.\\n\\nTrong các game xếp gạch hiện đại, thời gian chờ được thong thả hơn, và trong game thường có cơ chế trì hoãn việc khóa gạch, trong đó bạn có thể di chuyển hoặc xoay gạch để đặt lại thời gian chờ (tối đa 15 lần trong hầu hết các game).",link:"",id:"76673e3c7b19505ef940c85430e6f3a6f0ef6e60"},{title:"Spawn&ClearDelay",tags:["nhom05e1","spawndelay","cleardelay;","thời","gian","chờ","gạch","sinh","ra;","thời","gian","chờ","xóa","hàng"],category:"term",content:"Spawn Delay (Thời gian chờ gạch sinh ra): Khoảng thời gian từ lúc gạch bị khóa cho tới khi gạch mới được sinh ra.\\n\\nLine Clear Delay (Thời gian chờ xóa hàng): Thời gian để hiệu ứng xóa hàng thực hiện xong.",link:"",id:"7ffaa94f81a2a82dd1aed3fbf74669ab44dee315"},{title:"ARE",tags:["nhom05e1","spawn","appearance","delay"],category:"term",content:'Thời gian chờ xuất hiện gạch mới\\nHay còn được biết với tên: Appearance Delay và Entry Delay.\\n\\n\\"ARE\\" chỉ khoảng thời gian sau khi gạch bị khóa và trước khi gạch mới xuất hiện\\n\\nP/s: Từ \\"ARE\\" không phải là từ viết tắt hay hay là một dạng của \\"be\\" trong tiếng Anh; nó bắt nguồn từ <あれ> (a-re) trong tiếng Nhật, có nghĩa là \\"nó\\" hoặc \\"cái đó\\" / \\"cái kia\\" / \\"cái ấy\\".',link:"",id:"ccabbdc030560f858662eb34909557e7017e3ef6"},{title:"Line ARE",tags:["nhom05e1","appearance","delay"],category:"term",content:"Khoảng thời gian khi hiệu ứng xóa hàng bắt đầu chạy cho tới khi gạch mới xuất hiện.",link:"",id:"27adf9cafe44613ca1c7c529059e38cfc447575b"},{title:"Death ARE",tags:["nhom05e1","die","delay"],category:"term",content:"Một cơ chế đặc biệt cho phép tránh game over trong một số trường hợp.\\n\\nDeath ARE sẽ được kích hoạt khi có một viên gạch chặn ngay tại vị trí xuất hiện của gạch mới (dẫn tới hiện tượng block out)\\nKhi kích hoạt, spawn ARE sẽ được cộng với một khoảng thời gian bổ sung để cho phép người chơi dùng IRS, IHS hoặc IMS.\\n\\nÝ tưởng về cơ chế này được đề xuất lần đầu bởi @NOT_A_ROBOT.",link:"",id:"175b18d6e89ac5afb6b8e880232f70b65ee9569e"},{title:">E2|Thg số đ.khiển",tags:["nhom05e2"],category:"",content:"NHÓM 5E2: THÔNG SỐ ĐIỀU KHIỂN",link:"",id:"e9702fe1281378567f72ce2f48bb9e21e678308e"},{title:"DAS&ARR (dễ hiểu)",tags:["nhom05e2","das","delayedautoshift"],category:"term",content:'Tưởng tượng bạn đang gõ chữ, và bạn nhấn giữ phím \\"O\\".\\nVà bạn sẽ nhận được một chuỗi toàn là o.\\n\\nỞ trên thanh thời gian thì nó trông như thế này: o-----o-o-o-o-o-o-o-o-o…\\n\\"-----\\" là DAS, còn \\"-\\" là ARR.',link:"",id:"e3513dfbe35a202109b4e533059a6049e50348e9"},{title:"DAS & ARR",tags:["nhom05e2","das","và","arr","delayedautoshift","autorepeatrate"],category:"term",content:"DAS, hay Delayed Auto-shift, chỉ khoảng thời gian sau khi gạch di chuyển sang một hướng đã chọn 1 ô cho đến truớc khi gạch di chuển một cách tự động.\\n\\nARR, hay Auto-Repeat Rate, chỉ khoảng cách thời gian giữ 2 lần di chuyển sang 1 ô trong lúc gạch đang tự động di chuyển.\\n\\nDAS và ARR được tính bằng f (khung hình) (¹/₆₀ ở 60FPS). 1ms = 16²/₃ khung hình.",link:"",id:"831664fa86cc5ff27da97654b301fc41efa41039"},{title:"DAS cut",tags:["nhom05e2","dascut","dcd"],category:"term",content:"Cơ chế đặc biệt sẽ được kích hoạt khi gạch mới xuất hiện. Khi kích hoạt, cơ chế này sẽ tăng DAS lên một chút để gạch không tự di chuyển ngay khi đang có phím được giữ.\\n\\nCác game khác có thể có tính năng tương tự nhưng cách hoạt động có thể khác nhau.",link:"",id:"41eb761678d3f97a02717bd274386cc5c3a09d14"},{title:"Auto-lock cut",tags:["nhom05e2","autolockcut"],category:"term",content:"Một tính năng trong Techmino cho phép ngăn chặn việc misdrop khi gạch mới vừa xuất hiện. Nút Thả mạnh sẽ bị tắt trong một khoảng thời gian ngắn sau khi gạch trước đó bị khóa.\\n\\nCác game khác có thể có tính năng tương tự nhưng cách hoạt động có thể khác nhau.",link:"",id:"de8acc2343af07a8a5434e61476f0e4209d3a4ec"},{title:"SDF",tags:["nhom05e2","softdropfactor"],category:"term",content:'Soft Drop Factor (Hệ số tốc độ rơi nhẹ)\\n\\nMột cách để xác định tốc độ gạch rơi khi nhấn phím \\"Thả nhẹ\\". Hầu hết các game xác đinh tốc độ rơi bằng công thức: Tốc độ thả nhẹ = SDF × 20\\n\\nTuy nhiên trong Techmino, tốc độ thả nhẹ là cố định với thông số SDARR (ARR nhưng dành cho nút \\"thả nhẹ\\").',link:"",id:"788a1286bf47d09b01ba806d1fc8deea24c76125"},{title:">F|Điều khiển",tags:["nhom05f"],category:"",content:"",link:"",id:"d3d553dc2cad800b0d93465b6ba44909603d8246"},{title:">F1|Tốc độ đ.khiển",tags:["nhom05f1"],category:"",content:"NHÓM 5F1: TỐC ĐỘ ĐIỀU KHIỂN",link:"",id:"0fde8d1952e33e368e9f4e445db75c549c650273"},{title:"LPM",tags:["nhom05f1","linesperminute;","số","hàng","mỗi","phút;","tốc","độ"],category:"term",content:`Lines per minute | Số hàng mỗi phút\\nPhản ánh tốc độ chơi.\\n\\nMỗi game có cách tính LPM khác nhau. Ví dụ như, Tetris Online tính LPM dựa trên PPS (nhìn mục ở bên dưới), trong đó 1 PPS = 24 LPM; do đó số hàng rác sẽ không được tính vào LPM và làm cho LPM lệch đi so với nghĩa đen của nó. Trong Techmino, giá trị LPM theo cách tính đó gọi là \\"L'PM\\`,link:"",id:"e3cc520818475699fa7b086cc6ff171869c8eccd"},{title:"PPS",tags:["nhom05f1","piecespersecond","số","gạch","mỗi","giây;","tốc","độ"],category:"term",content:"Pieces per second | Số gạch mỗi giây\\nPhản ánh tốc độ chơi.",link:"",id:"e1a50a861bf3c4997a0d8b725d61088d0570c198"},{title:"BPM",tags:["nhom05f1","blocksperminute","piecesperminute","số","gạch","mỗi","phút;","tốc","độ"],category:"term",content:"Blocks per minute | Số gạch mỗi phút\\nPhản ánh tốc độ chơi.\\n\\nNgoài ra chúng được gọi là PPM (để tránh nhầm lẫn với một thuật ngữ trong âm nhạc) (P là viết tắt của từ Pieces).",link:"",id:"d648e2d19a3206ee9625de8b4316674b46725b86"},{title:"KPM",tags:["nhom05f1","keysperminute","keypressesperminute","số","lần","nhấn","mỗi","phút;","số","phím","mỗi","phút"],category:"term",content:"Keypresses per minute | Số lần nhấn mỗi phút\\nPhản ánh tốc độ người chơi nhấn phím hoặc nút.",link:"",id:"e4cc846ad96dcf34f987d76fde3742444ddb1d54"},{title:"KPP",tags:["nhom05f1","số","lần","nhấn","mỗi","gạch;","số","phím","mỗi","gạch"],category:"term",content:"Keypresses per piece | Số lần nhấn mỗi viên gạch\\nPhản ánh mức độ hiệu quả việc điều khiển gạch.\\nCó thể giảm con số này bằng cách học Finesse",link:"",id:"4a0d0495c6123aa978f989b3d4a1fdd1897c2759"},{title:">F2|K.th. đ.khiển",tags:["nhom05f2"],category:"",content:"NHÓM 5F2: KỸ THUẬT ĐIỀU KHIỂN",link:"",id:"75b049eddb453d215cb2b2a8d8149cf5fad9e96e"},{title:"Finesse",tags:["nhom05f2","finesse","lỗi","di","chuyển"],category:"term",content:`[[ -Một kỹ thuật di chuyển gạch vào vị trí mong muốn với chuỗi phím ngắn nhất có thể, giúp tiết kiệm thời gian và giảm khả năng misdrop. - -Đây là một kỹ năng quan trọng nên bạn hãy học Finesse sớm nhất có thể. Bạn có thể thấy khá nhiều video hướng dẫn trên Youtube cũng như các trang hướng dẫn với hình minh họa trên Google. Hãy bắt đầu từ thứ cơ bản nhất, rồi luyện tập dần để tăng độ chính xác lên. Hãy nhớ ưu tiên chính xác hơn là tốc độ nhé. - -Bạn sẽ không bị mất Finesse khi bạn nhét gạch hay thực hiện Spin vì Techmino chỉ kiểm tra những vị trí không yêu cầu soft drop - -Techmino cũng có finesse rate (%) (tỉ lệ *không* mắc lỗi di chuyển), được tính như sau: - - 100% (Perfect) khi số lần nhấn phím bằng hoặc ít hơn mức chuẩn - - 50% (Great) khi số lần nhấn phím cao hơn mức chuẩn 1 phím - - 25% (Bad) khi số lần nhấn phím cao hơn mức chuẩn 2 phím - - 0% (Miss) khi số lần nhấn phím cao hơn mức chuẩn 3 phím -Một Bad hoặc Miss sẽ phá combo finesse. - -Lưu ý: - - Finesse thường sẽ không được tính trong một vài tình huống như tốc độ rơi cao, phải sử dụng thả nhẹ hay bảng rất cao. Tuy nhiên, bộ đếm finesse của Techmino vẫn chạy bất chấp ở điều kiện nào (kể cả tốc độ rơi cao như 20G). Do vậy finesse rate thường sẽ không mang ý nghĩa gì trong trường hợp này. - - Bạn sẽ không bị mất Finesse khi bạn nhét gạch hay thực hiện Spin vì Techmino chỉ kiểm tra những vị trí không yêu cầu soft drop - ]]`,link:"",id:"163e9f30ca755546cf10e386e1e8b112518180b5"},{title:"Hypertapping",tags:["nhom05f2","hypertapper","nhấn","liên","tục"],category:"term",content:'Hypertapping (Nhấn liên tục)\\n\\nĐề cập tới một kỹ năng là khi bạn rung tay liên tục thay vì giữ phím.\\n\\nTrong các game xếp gạch cổ điển, thông số DAS rất cao và không thể điều chỉnh được, dẫn tới nhấn nút liên tục sẽ nhanh hơn so với giữ phím.\\nBây giờ thì không cần vì các game xếp gạch hiện đại đã có DAS và ARR có thể điều chỉnh được (nếu có chăng không điều chỉnh được thì DAS cũng đã thấp hơn nhiều so với ngày trước)\\n\\nNhững người dùng kỹ năng này được gọi là \\"hypertapper\\',link:"",id:"e9991a9c525abc09fc7107a32c97afed9a0d17ac"},{title:"Rolling",tags:["nhom05f2"],category:"term",content:`[[ -Một phương pháp khác để di chuyển nhanh ở chế độ trọng lực cao (khoảng 1G) (với cài đặt DAS / ARR chậm). - -Để thực hiện thao tác rolling: - - Cố định ngón tay của bạn trên phím bạn muốn nhấn ở một bên tay - - Sau đó dùng các ngón tay ở bên kia gõ mạnh liên tục ở mặt sau của tay cầm. - -Phương pháp này nhanh hơn nhiều so với việc nhấn liên tục (xem mục "Hypertapping" để biết thêm thông tin) và yêu cầu ít công sức hơn. -Phương pháp này lần đầu tiên được tìm thấy bởi Cheez-fish - người đã đạt tốc độ nhấn lên tới 20 Hz. - ]]`,link:"",id:"a901ab63843345aa560940019295f1fa9e980e80"},{title:">F3|Độ trễ input",tags:["nhom05f3","input","delay"],category:"",content:"Độ trễ đầu vào\\n\\nBất kỳ thiết bị đầu vào cũng cần một khoảng thời gian để tín hiệu có thể tới game, không cao thì thấp, từ mấy ms đến cả trăm ms.\\n\\nNếu độ trễ đầu vào quá cao, thì việc điều khiển sẽ không thoải mái.\\n\\nĐộ trễ này thường do phần cứng và phần mềm, thứ mà bạn gần như không kiểm soát được. Hiệu ứng này dễ thấy nhất ở trong các game như Tetris Online hay Tetris Effect.\\n\\nBật chế độ Hiệu suất cao (Performance mode) hoặc tắt chế độ tiết kiệm năng lượng (Energy saving), đồng thời bật chế độ Gaming trên màn hình máy tính / TV, có thể giúp giảm độ trễ.",link:"",id:"415973ec170a21f3a5716074e64b6dda4b64b814"},{title:">G|K.năng t.công",tags:["nhom05g"],category:"",content:"NHÓM 5G: KHẢ NĂNG TẤN CÔNG",link:"",id:"4236ad60e4bc425f8c8f0d0e3c76998d0327de14"},{title:"APM",tags:["nhom05g","attackperminute;","số","hàng","tấn","công","mỗi","phút;","số","hàng","tấn","công","trong","một","phút"],category:"term",content:"Attack per minute\\n\\tSố hàng tấn công trung bình mà một người chơi có thể tạo ra mỗi phút (bất kể đó là đòn tấn công hoặc chỉ dùng để hủy đòn tấn công của đối thủ)\\n\\nPhản ánh sức mạnh tấn công của người chơi",link:"",id:"6022efe3e5413aff247effdbd6b9beff6acddc3c"},{title:"SPM",tags:["nhom05g","linessentperminute;","số","hàng","gửi","mỗi","phút;","số","hàng","gửi","trong","một","phút."],category:"term",content:'[lines] Sent per minute\\n\\tSố hàng tấn công trung bình mà được gửi vào đối thủ trong một phút.\\n\\nPhản ánh sức mạnh tấn công \\"thực tế\\" của người chơi (không tính các hàng dùng để chặn rác tới).',link:"",id:"819603c983a57b88fa74cb8e126b6fc6574511df"},{title:"DPM",tags:["nhom05g","digperminute","defendperminute","số","hàng","đào","xuống","mỗi","phút;","số","hàng","đào","xuống","trong","một","phút"],category:"term",content:"Dig / Defend per minute\\n\\tSố hàng đào xuống trung bình mỗi phút\\n\\nĐôi khi có thể phản ánh mức độ sống sót của người chơi khi nhận được rác",link:"",id:"716ee4961bcaefaa1882ab2a13c501c75dfd604f"},{title:"RPM",tags:["nhom05g","receive;","receiveperminute;","số","hàng","rác","phải","nhận","mỗi","phút;","số","rác","phải","nhận","mỗi","phút;","số","hàng","rác","phải","nhận","trong","một","phút;","số","rác","phải","nhận","trong","mỗi","phút"],category:"term",content:"[lines] Receive per Minute\\n\\tSố hàng rác trung bình nhận được mỗi phút\\n\\nPhản ánh áp lực hiện có của người chơi phải chịu ở một mức độ nào đó.",link:"",id:"576848e5d786490aacbbdb638bc3b0a1ae79bc35"},{title:"ADPM",tags:["nhom05g","attackdigperminute","vs;","số","hàng","tấn","công","và","đào","xuống","mỗi","phút;","số","hàng","tấn","công","và","đào","xuống","mỗi","phút"],category:"term",content:"Attack & Dig per minute\\n\\tSố hàng tấn công & đào xuống trung bình mỗi phút\\n\\nDùng để so sánh sự khác nhau về kỹ năng của hai người chơi trong cùng một trận đấu; chính xác hơn một chút so với APM\\n\\nVS Score (điểm VS) trong TETR.IO chính là ADPM mỗi 100 giây",link:"",id:"658315e4e9d18aea6ee5a60fcfe6adfa4ec8ea83"},{title:"APL",tags:["nhom05g","attackperline","efficiency;","số","hàng","tấn","công;","số","hàng","đã","xóa;","độ","hiệu","quả"],category:"term",content:'Attack per line (cleared)\\n\\tSố hàng tấn công / Số hàng đã xóa\\n\\nCòn được biết với tên \\"efficiency\\" (độ hiệu quả). Phản ánh độ hiệu quả khi tấn công sau mỗi lần xóa hàng.\\nVí dụ Tetris và T-spin có độ hiệu quả cao hơn so với xóa 2 / 3 hàng.',link:"",id:"f7f2c409272ce792ba2ea214402cbf70b7662c2d"},{title:"Tấn công&Phg thủ",tags:["nhom05g","attacking","defending","phòng","thủ;","tấn","công","&","phòng","thủ;","tấn","công","và","phòng","thủ"],category:"term",content:`[[ -Tấn công: Gửi hàng rác tới đối thủ bằng cách gửi nhiều hàng. - -Phòng thủ: Loại hàng rác ra khỏi hàng chờ bằng cách thực hiện các kiểu xóa đặc biệt sau khi đối thủ gửi hàng rác. - -Phản công: Gửi hàng rác lại sau khi xử xong toàn bộ hàng rác trong hàng chờ. - -Trong hầu hết các game, tấn công và phòng thủ là tương đương nhau: một đòn tấn công sẽ chặn một cú rác tới. - ]]`,link:"",id:"299ee750c4040cd8df1edee98e9579659e488927"},{title:"Combo",tags:["nhom05g","ren","combo"],category:"term",content:'Xóa nhiều hàng liên tiếp để tạo ra combo. Từ lần xóa hàng thứ 2 thì tính là 1 Combo, và từ lần xóa hàng thứ 3 thì tính là 2 Combo, và cứ như thế.\\nKhông như Back to Back, đặt một viên gạch = phá combo.\\n\\nỞ cộng đồng xếp gạch Nhật, combo được gọi là \\"REN\\", từ chữ kanji tiếng Nhật <連> (れん, ren).',link:"",id:"1af2c3293f69dc5673e1f079856188c34b1febc0"},{title:"Spike",tags:["nhom05g","spike"],category:"term",content:"Làm nhiều đợt tấn công liên tiếp trong một khoảng thời gian ngắn.\\n\\nCả Techmino và TETR.IO đều có bộ đếm spike, sẽ hiện bao nhiêu hàng rác bạn đã gửi cho đối thủ trong lúc spike.\\n\\nLưu ý: hàng rác mà bị tích lũy do mạng lag thì không được tính là spike.",link:"",id:"4ed130cdc0f445ce290a3a96aec3df6f7b881fc9"},{title:"Debt",tags:["nhom05g","debt","owe"],category:"term",content:'Một thuật ngữ hay được sử dụng trong cộng đồng Tetris Trung Quốc.\\n\\n\\"Debt\\" đề cập đến tình huống mà bạn chỉ có thể tấn công KHI và CHỈ KHI setup được hoàn thành. Nên, khi đang làm một hoặc nhiều debt liên tiếp, người chơi bắt buộc phải để ý tới đối thủ để đảm bảo an toàn; còn không, bạn có thể bị bón hành sấp mặt.\\n\\nThuật ngữ này hay được sử dụng để diễn tả một số setup như TST tower.',link:"",id:"26e79e563576a5baf8a1cd7cf27eb73a7801813f"},{title:"Passthrough",tags:["nhom05g","pingthrough"],category:"term",content:'Chỉ tình huống cả hai người chơi cùng gửi tấn công lẫn nhau, nhưng thay vì chúng hủy bỏ lẫn nhau thì nó lại gửi thẳng vào bảng của đối phương.\\n\\nMột thuật ngữ khác là \\"pingthrough\\" đề cập tình huống passthrough xảy ra do ping cao.',link:"",id:"07e9017e1ddfeb5aa57b3be59da1f075d8a1fd87"},{title:"Timing",tags:["nhom05g"],category:"term",content:"Timimg đề cập đến việc lựa chọn khoảnh khắc để tấn công với nỗ lực tối ưu. Chọn đúng thời điểm cho phép bạn có thể phòng thủ trong khi đè bẹp đối thủ của bạn. Tuy nhiên, chúng tôi đề nghị những người chơi mới tập trung vào bảng và cải thiện tốc độ trước khi tập trung vào timing.",link:"",id:"8ba2a8161299eba258be813d9ca3cc7075aa5e00"},{title:">H|Mis-action",tags:["nhom05h","misaction","misdrop","mishold"],category:"",content:"Misdrop: Vô tình thả rơi / đặt gạch vào nơi không mong muốn.\\nMishold: Vô tình nhấn nhầm phím Hold. Việc này có thể dẫn đến việc dùng một viên gạch không mong muốn.\\n\\nCả misdrop và mishold có thể làm bạn mất cơ hội để làm PC",link:"",id:"99626b14c0c2e11385395ff82896910ee8ca67c9"},{title:">I|Spin",tags:["nhom05i"],category:"",content:"(Ở trong một số game)\\n\\nXoay gạch để di chuyển tới một vị trí mà bình thường sẽ không tiếp cận được. Ở một số game, thao tác này sẽ gửi thêm hàng rác hoặc là tăng thêm điểm. Mỗi game sẽ có cách kiểm tra Spin khác nhau.",link:"",id:"ab8b1e1792fe47a4624a51dfa36c9914024e3d56"},{title:"Mini",tags:["nhom05i"],category:"term",content:'Một kiểu spin (được cho là) dễ làm hơn so với spin thông thường (vì trong một số game cũ, chúng được gọi là \\"Ez T-spin\\").\\nLượng điểm bổ sung và hàng rác đều ít hơn so với spin thông thường.\\n\\nMỗi game sẽ có các quy tắc khác nhau để kiểm tra và chúng có thể không trực quan.\\nNhưng bạn chỉ cần nhớ mấy cái bố cục làm Mini-spin là được!',link:"",id:"2c066eb35195c9458f11d15a4550c3522405d2db"},{title:"All-spin",tags:["nhom05i","allspin"],category:"term",content:'Một quy luật mà trong đó, làm Spin bằng gạch gì đều cũng được thưởng thêm điểm và gửi thêm hàng rác; trái ngược với\\"T-spin Only\\" (Chỉ làm T-spin).',link:"",id:"ca45fa29c0615e75752420601d317be054239b72"},{title:"T-spin",tags:["nhom05i","tspin"],category:"term",content:'Spin được thực hiện bởi Tetromino T.\\n\\nT-spin chủ yếu được phát hiện bởi \\"quy luật 3 góc\\".\\nTức là, nếu 3 trong 4 góc của một hình chữ nhật (có tâm là tâm xoay của gạch T) bị đè bởi bất kỳ gạch nào, thì spin đó được tính là T-spin.\\n\\nNgoài quy tắc đó ra thì còn có một số quy tắc để phát hiện T-spin và phân biệt giữa T-spin và Mini T-spin.',link:"",id:"0f0fbac25dc242d07b99a4a4b4586685b293ac6a"},{title:"O-Spin",tags:["nhom05i","ospin"],category:"term",content:'Gạch O vốn dĩ \\"tròn\\", không đổi hình dạng khi xoay ở bất cứ hướng nào, nên nó không thể \\"đá\\" được. Do đó gạch O không tài nào leo ra khỏi \\"lỗ\\" hoặc \\"hố\\" nếu bị kẹt. Từ việc này, có một người đã làm một cái video fake cách làm O-spin trong Tetris 99 và Tetris Friends\\n\\nHiện tại có 2 hệ thống xoay hỗ trợ O-spin:\\n\\tXRS cho phép gạch O có thể \\"teleport\\" tới một cái lỗ.\\n\\tTRS cho phép gạch O \\"teleport\\" và \\"biến hình\\',link:"",id:"0e91159448a3758570bc0f06b87ca3a7713fff0e"},{title:"Fin, Neo, Iso",tags:["nhom05i","fin","neo","iso"],category:"pattern",content:"Tên của 3 kiểu T-spin sử dụng wall-kick table đặc biệt của gạch T. Chúng không được sử dụng nhiều trong game bởi vì độ phức tạp và thường hay bị nerf bởi đa số game.",link:"",id:"6d8823307e0e9d5b79e054b7f2571d460135ff17"},{title:"Freestyle",tags:["nhom05i"],category:"term",content:"Thuật ngữ hay được nhắc nhiều trong thử thách 20TSD. Freestyle là kiểu chơi không dùng setup nào để hoàn thành một số lượng TSD nhất định nào đó.\\n\\nFreestyle khó hơn nhiều so với việc sử dụng setup nào đó như LST\\nNhững màn chạy dùng Freestyle có thể phản ánh cho các kỹ năng T-spin của người chơi trong các trận đấu trong thế giới thực.",link:"",id:"8c56d1d9d5dacf3f1a0bb8e834b51555aca0c925"},{title:">J|K.th. xóa hàng",tags:["nhom05j"],category:"",content:"NHÓM 5J: KỸ THUẬT XÓA HÀNG",link:"",id:"a31bb6e829ad7533f347ba9875ba8990c58940e9"},{title:"Xóa 1 / 2 / 3 hàng",tags:["nhom05j","1","2","3","single","double","triple"],category:"term",content:"Single: Xóa 1 hàng cùng một lúc.\\nDouble: Xóa 2 hàng cùng lúc.\\nTriple: Xóa 3 hàng cùng lúc.",link:"",id:"f87a29c3e2fa962369dc371b90a912ccb9213c74"},{title:"Techrash",tags:["nhom05j","tetris","4"],category:"term",content:"*Chỉ có trên Techmino*\\nXóa 4 hàng cùng một lúc.",link:"",id:"581aeb9553b5fc2814749554149b50c01272be9e"},{title:"Tetris",tags:["nhom05j","4"],category:"term",content:'Đây chính là tên của một tựa game (và cũng là tên thương hiệu của nó). Đây cũng là thuật ngữ chỉ việc xóa 4 hàng cùng lúc trong các game chính thức.\\n\\nĐược ghép từ 2 từ: Tetra (<τέτταρες>, \\"téttares\\", có nghĩa là số 4 trong tiếng Hy Lạp) and tennis (quần vợt, môn thể thao yêu thích nhất của người đã sáng tạo ra Tetris).\\n\\nNhắc nhẹ: những game xếp gạch được phát triển bởi Nintendo và SEGA đều được cấp phép bởi TTC. Hai công ty này không (hề) sở hữu bản quyền của Tetris',link:"",id:"af48fe99d409bfda2f0dbe896f2fc6a16adb68c6"},{title:"TSS, TSD, TST",tags:["nhom05j","t1","tspinsingle","T-spin","Đơn","t2","tspindouble","T-spn","Đôi","t3","tspintriple","T-spin","Tam"],category:"term",content:"T-spin Single (TSS) | T-spin Đơn\\n\\tXóa một hàng bằng T-spin.\\n\\nT-spin Double (TSD) | T-spin Đôi\\n\\tXóa hai hàng bằng T-spin.\\n\\nT-spin Triple (TST) | T-spin Tam\\n\\tXóa ba hàng bằng T-spin.",link:"",id:"f97799aaa0bda464faa21db9bfe63ab715384531"},{title:"MTSS",tags:["nhom05j","mintspinsingle","tsms","tspinminisingle","Mini","T-spin","Đơn"],category:"term",content:'Mini T-spin Single | Mini T-spin Đơn\\nTừng biết tới với cái tên \\"T-spin Mini Single\\" (TSMS) (T-spin Mini Đơn).\\n\\nXóa một hàng bằng Mini T-spin.\\n\\nMỗi game sẽ có cách khác nhau để xác định xem T-spin đó có phải là Mini hay không.',link:"",id:"d2ea085bad3bf2489b164352415d424a8718af95"},{title:"MTSD",tags:["nhom05j","minitspindouble","tsmd","tspinminidouble","Mini","T-spin","Đôi"],category:"term",content:'Mini T-spin Double | Mini T-spin Đôi\\nTừng biết tới với cái tên \\"T-spin Mini Double\\" (TSMD) (T-spin Mini Đôi).\\n\\nXóa hai hàng bằng Mini T-spin.\\n\\nMTSD chỉ xuất hiện hạn chế trong một vài game và có các cách kích hoạt khác nhau.',link:"",id:"e806ee88f6612ecebac7aa815e8261d2ff1374e3"},{title:"Back to Back",tags:["nhom05j","b2b","btb","backtoback"],category:"term",content:"Hay còn gọi là B2B. Xóa 2 hoặc nhiều lần xóa theo kiểu nâng cao (như Tetris hay Spin) liên tiếp (nhưng không được kiểu xóa bình thường giữa chừng).\\nKhông như combo, Back To Back sẽ không bị mất khi đặt gạch.\\n\\nỞ Techmino, B2B được tính bằng thanh năng lượng, chứ không tính theo số lần xóa kiểu đặc biệt.\\nCũng trong Techmino, nhiều B2B liên tiếp được tính là Back-to-back-to-back (B3B) (xem mục B2B2B để biết thêm).\\n\\nTechmino cũng tính cả PC và HPC liên tiếp là B2B và B3B",link:"",id:"686a49a6cc7776d4829cab4e07f95a78a3e57ee5"},{title:"B2B2B",tags:["nhom05j","b3b","backtobacktoback"],category:"term",content:"*Chỉ có trên Techmino*\\n\\nBack to back to back, hay còn gọi là B3B (hoặc B2B2B). Thực hiện nhiều Back to Back liên tiếp để lấp đầy thanh B3B; cuối cùng khi bạn đã lấp B3B vượt một mức nhất định, bạn có thể tấn công mạnh hơn khi làm được B2B, nhờ sức mạnh từ B3B",link:"",id:"b4c31186c57bd9bca81ee6386b6ddb2ded6c4259"},{title:"All Clear",tags:["nhom05j","pc","perfectclear","ac","allclear"],category:"term",content:'Còn được biết tới là Perfect Clear (PC). Đây là thuật ngữ được dùng nhiều trong cộng đồng và cũng như được dùng trong Techmino\\nXóa toàn bộ gạch ra khỏi bảng, không trừ gạch nào\\n\\n[Sea: còn có một từ ít dùng nữa, đó là \\"Bravo\\"]',link:"",id:"7c4933d999dc244af9de4dec72921ed3be472cf9"},{title:"HPC",tags:["nhom05j","hc","halfperfectclear"],category:"term",content:"*Chỉ có trên Techmino*\\nHalf Perfect Clear\\n\\nMột biến thể của All Clear. Nếu hàng đó bị xóa mà rõ ràng giống với Perfect Clear khi bỏ qua những hàng bên dưới, thì được tính là Half Perfect Clear và sẽ gửi thêm một lượng hàng rác nhỏ",link:"",id:"6436f4a12ea6f7a5a3d1a86816b625d6816b3a4a"},{title:">K|T.ngữ khác",tags:["nhom05k"],category:"",content:"NHÓM 5L: CÁC THUẬT NGỮ KHÁC",link:"",id:"c6ebc456edf87c3eef11bb697af2235b04794fba"},{title:"sub",tags:["nhom05k","sub"],category:"term",content:'Sub-[số] có nghĩa là khoảng thời gian ở dưới một mốc nhất định. Đơn vị thời gian thường được bỏ qua và có thể tự suy ra.\\n\\nVí dụ: \\"sub-30\\" có nghĩa là hoàn thành chế độ 40 hàng dưới 30 giây, \\"sub-15\\" có nghĩa là hoàn thành chế độ 1000 hàng dưới 15 phút.\\n\\n\\"Sub\\" thường được sử dụng với số đã được làm tròn (cho nên hiếm khi người ta sử dụng theo kiểu \\"sub-62\\")',link:"",id:"46d2b76f28ca62cfaa8bba74d6df88b60120b964"},{title:"‘Researching’",tags:["nhom05k","scientificresearching"],category:"term",content:"(<科研>, ké yán)\\n\\nMột thuật ngữ đôi khi được dùng ở cộng đồng Tetris Trung Quốc, chỉ việc nghiên cứu / luyện tập kỹ thuật nào đó (ví dụ như một setup T-spin mới) trong môi trường chơi đơn và tốc độ rơi thấp…\\nTrong Techmino, thuật ngữ này chỉ những mode đòi hỏi bạn gần như phải dùng spin trong suốt màn chạy.",link:"",id:"af194c3cb1fb90736f9b1970207bd3e1c74c6772"},{title:"Bone block",tags:["nhom05k","bone","tgm"],category:"term",content:`[[ -Đây là skin được dùng trong những phiên bản đời đầu của Tetris - -Trước đây, tất cả máy tính đều sử dụng Giao diện Dòng lệnh (Command-Line Interfaces), cho nên mỗi ô gạch đều được hiển thị dưới dạng 2 ngoặc vuông (như thế này: ]]\`CHAR.icon.bone\`[[). -Trông nó nhìn rất giống cục xương, nên đôi khi được gọi là skin bone block (gạch xương). - -Trong Techmino, bone block được mô tả là "một skin gạch duy nhất, lạ mắt mà tất cả các gạch đều sử dụng". -Skin khác nhau sẽ có skin bone block khác nhau. - -Cũng trong Techmino nhưng ở tiếng Việt, từ "gạch ]]\`CHAR.icon.bone[[" được dùng để chỉ bone block. - ]]`,link:"",id:"ee24eb2a929b4a6519a5625d86fc5c243f0a893b"},{title:"=[NHÓM 06]=",tags:["nhom06"],category:"",content:`[[ -NHÓM 06: CÁC GAME XẾP GẠCH - -Nội dung sau đây là những giới thiệu ngắn gọn về một số game xếp gạch chính thức và do fan làm có mức độ phổ biến cao. MrZ - tác giả của Techmino đã để lại một vài lời nhận xét, được đánh dấu chủ yếu bằng hai dấu ngoặc vuông - -Squishy cũng có một số lời nhận xét và thông tin bổ sung, lời này được đánh dấu bắt đầu bằng "Sea" và ở trong một cặp ngoặc vuông - -Hãy nhớ là không phải game nào được nói đến đều có lời nhận xét, chúng chỉ là những ý kiến chủ quan và không có tính chuyên môn, và cũng không nhất thiết phản ánh chất lượng của game. Chỉ đọc / dùng để tham khảo. - ]]`,link:"",id:"958aa10db41d97c9850364aaa03d25a70fa35dc0"},{title:"King of Stackers",tags:["nhom06","kos","kingofstackers"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi trực tuyến | Hỗ trợ màn hình cảm ứng - -Gọi tắt là KoS. Một game xếp gạch chơi trên trình duyệt theo lượt. Về cơ bản: người chơi sẽ thay phiên nhau đặt các gạch trong bảng của họ theo chu kỳ 7 gạch. Hàng rác chỉ có thể vào bảng khi một gạch được đặt mà không xóa một hàng nào. Trò chơi mang tính chiến lược cao và có các tùy chọn khác nhau cho cơ chế tấn công. - ]]`,link:"https://kingofstackers.com/games.php",id:"fafc7b7ff152d80611f45a6e5846769c3e2947e3"},{title:"Tetr.js",tags:["nhom06","tetrjs","tetr.js"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng - -Một game xếp gạch chơi trên trình duyệt với nhiều điều chỉnh và chế độ chuyên nghiệp. -Liên kết của mục này sẽ đưa bạn tới bản của Farter (bản này là một bản đã mod, đã thêm một vài chế độ khác) -Bạn cũng có thể tìm một phiên bản khác có tên là "Tetr.js Enhanced" - bản mod này do Dr Ocelot làm (đã bị gỡ xuống và thay thế bằng Tetra Legends, nhưng cũng bị dừng phát triển hoàn toàn từ T12 / 2020) - -[MrZ: Giao diện đơn giản với hầu như không có bất kỳ animation nào. -Chỉ có một số tổ hợp phím ảo khả dụng cho thiết bị di động.] - ]]`,link:"http://farter.cn/t",id:"3043f140b4b43653e915ca5058605bb9eddaa395"},{title:"Tetra Legends",tags:["nhom06","tl","tetralegends"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn - -Gọi tắt là TL. Một tựa game chứa nhiều chế độ chơi đơn + 2 chế độ nhịp điệu. Nó cũng hình dung các cơ chế thường ẩn trong các trò chơi Tetris khác. Quá trình phát triển đã dừng lại hoàn toàn từ T12 / 2020. - ]]`,link:"https://tetralegends.app",id:"9e56d79ff52ff344fbb8aef1850b46187b81e712"},{title:"Ascension",tags:["nhom06","asc"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến - -Gọi tắt là ASC. Game sử dụng hệ thống xoay có tên là ASC và có nhiều chế độ chơi đơn. Chế độ 1 đấu 1 hiện vẫn còn trong giai đoạn Alpha (tính tới 16 / T4 / 2022). -Chế độ Stack của Techmino cũng bắt nguồn từ game này. - ]]`,link:"https://asc.winternebs.com",id:"97a58124aa9471300c63ad7841e54c9adbf9b053"},{title:"Jstris",tags:["nhom06","js"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến | Hỗ trợ cảm ứng - -Gọi tắt là JS. Game này có một số chế độ chơi đơn với thông số có thể điều chỉnh được. Có thể điều chỉnh phím ảo trên màn hình, nhưng trò chơi này không có hiệu ứng động nào cả. - ]]`,link:"https://jstris.jezevec10.com",id:"7d0fe5b8e3fc96771914aa5174cd4c22f453568c"},{title:"TETR.IO",tags:["nhom06","io","tetrio"],category:"game",content:`[[ -Chơi trên trình duyệt / client chính thức | Chơi đơn / Chơi trực tuyến - -Gọi tắt là tetrio hoặc IO. Trò chơi này có một hệ thống xếp rank cũng như có chế độ tự do với nhiều thông số có thể tùy chỉnh. Trò chơi này cũng có một client dành cho máy tính, giúp cải thiện tốc độ, giảm độ trễ và bỏ quảng cáo - -[MrZ: Có vẻ như Safari không thể mở game này.] - ]]`,link:"https://tetr.io",id:"5c79bf62ba7d449955aedf983866be2ebf012731"},{title:"Nuketris",tags:["nhom06"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến - -Một trò xếp gạch có chế độ 1 đấu 1 có xếp rank + các chế độ chơi đơn thông thường - ]]`,link:"https://nuketris.com",id:"f42ff3a0cafafdaca0c0825c4fb58870942f33df"},{title:"Worldwide Combos",tags:["nhom06","wwc","worldwidecombos"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến - -Gọi tắt là WWC. Có chế độ 1 đấu 1 toàn cầu: chơi với người thật hoặc chơi với replay; có vài quy tắc khác nhau, với các trận đấu gửi rác bằng bom." - ]]`,link:"https://worldwidecombos.com",id:"8a4778772d2bd72a5a2cdb06936bc6c60edf89d8"},{title:"Tetris Friends",tags:["nhom06","tetris","friends","tf","tetrisfriends","notrisfoes"],category:"game",content:`[[ -Chơi trên trình duyệt / client chính thức | Chơi đơn / Chơi trực tuyến - -Gọi tắt là TF. Một game xếp gạch dùng engine là một plugin đã nghỉ hưu từ năm 2021 (vì vấn đề bảo mật). Từng rất phổ biến trong quá khứ, nhưng tất cả máy chủ chính thức đã đóng cửa từ mấy năm trước. Hiện giờ vẫn còn một máy chủ riêng tên là \\"Notris Foes\\". Nhấn vào nút hình địa cầu để mở ở trong trình duyệt - ]]`,link:"https://notrisfoes.com",id:"844762f2ed4ffb0a41b044448cfff5414b752d91"},{title:"tetris.com [1 / 2]",tags:["nhom06","tetris","tetris.com","online","official"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng - -Game Tetris chính thức từ tetris.com, mà chỉ có một chế độ (Marathon). Bù lại, có hỗ trợ hệ thống điều khiển thông minh bằng chuột - ]]`,link:"",id:"7ab029d856fc2c8e3224b15c6f2ce082db3a7f23"},{title:"tetris.com [2 / 2]",tags:["nhom06","tetris","tetris.com","online","official"],category:"game",content:`[[ -[Mục này được viết bởi Squishy, chỉ xuất hiện ở bản dịch Zictionary này -Có thể áp dụng cho "Tetris Gems" và "Tetris Mind Bender"] - -Hiện có ba cách điều khiển: hai cách dành cho màn hình cảm ứng gồm "vuốt" (swipe) và "thông minh" (smart), hoặc cắm bàn phím (nếu máy hỗ trợ). -Bạn có thể thử nghiệm với cả ba chế độ điều khiển để tìm xem chế độ nào tối ưu với mình nhất - -Để điều khiển bằng bàn phím thì hãy kết nối bàn phím (miễn là điện thoại nhận được bàn phím thì game cũng sẽ nhận) -Để đổi giữa "vuốt" và "thông minh" thì hãy mở Options của game. - ]]`,link:"",id:"f721f477dc8094977a69866c41e856f0e790e036"},{title:"Tetris Gems",tags:["nhom06","tetris","online","official","gem"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng - -Một game xếp gạch khác từ tetris.com -Có cơ chế trọng lực và mỗi ván chỉ kéo dài trong 1 phút. Có 3 loại gem (ngọc) khác nhau với chức năng khác nhau. - ]]`,link:"",id:"6702f4f8420a04ba7b4fa9822bca2c59293012e0"},{title:"Tetris Mind Bender",tags:["nhom06","tetris","online","official","gem"],category:"game",content:`[[ -Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng - -Một game xếp gạch khác từ tetris.com -Một chế độ Marathon vô tận với một mino đặc biệt gọi là "Mind Bender" sẽ đưa cho bạn ngẫu nhiên một hiệu ứng nào đó (có thể là tốt hoặc xấu). - ]]`,link:"",id:"b07204b9e1e5427703c572c58e2ac0d45c49927b"},{title:"Techmino",tags:["nhom06"],category:"game",content:`[[ -Đa nền tảng | Chơi đơn / Chơi trực tuyến - -Gọi tắt là Tech. Một tựa game xếp gạch được phát triển bởi MrZ (và các thành viên khác trong 26F-Studio). Sử dụng engine LÖVE (love2d). Có rất nhiều chế độ chơi đơn, cũng như có nhiều thông số có thể tùy chỉnh được. Tuy nhiên, chế độ nhiều người chơi hiện tại vẫn đang còn phát triển - ]]`,link:"",id:"09cf08101a95638d271cfd4271d557f9f16da6d5"},{title:"Falling Lightblocks",tags:["nhom06","fl","fallinglightblocks"],category:"game",content:`[[ -Chơi trên trình duyệt / iOS / Android | Chơi đơn / Chơi trực tuyến - -Một game xếp gạch đa nền tảng có thể chơi ở chế độ dọc hoặc ngang. Game này có DAS và ARE khi xóa hàng cố định; và có thể điều chỉnh cơ chế điều khiển trên điện thoại. Hầu hết các chế độ trong game đều được thiết kế dựa trên NES Tetris, nhưng cũng có vài chế độ hiện đại. Chế độ Battle theo kiểu nửa "theo lượt", nửa "theo thời gian thực", rác cũng không vào hàng chờ hay có thể hủy được. - ]]`,link:"https://golfgl.de/lightblocks/",id:"39bd1f887a3a5c944bfdfd10345c859deff7ca71"},{title:"Cambridge",tags:["nhom06"],category:"game",content:`[[ -Đa nền tảng | Chơi đơn - -Một game xếp gạch được phát triển bằng LÖVE, với mục tiêu là tạo ra một nền tảng mạnh mẽ, dễ dàng tùy chỉnh để tạo ra các chế độ mới. Ban đầu được phát triển bởi Joe Zeng, Milla đã tiếp quản quá trình phát triển từ 08 / T10 / 2020, kể từ V0.1.5. - -- Tetris Wiki - ]]`,link:"",id:"2b5ca6e27ff79c4cd9811261783335af9842f3f9"},{title:"Nanamino",tags:["nhom06"],category:"game",content:`[[ -Windows / Android | Chơi đơn - -Một trò chơi do fan làm đang được phát triển với hệ thống xoay đặc trưng cực kỳ thú vị, - ]]`,link:"",id:"9f1e0777050f3acc0d5171d4fbbd1fa3ebab4ed5"},{title:"TGM",tags:["nhom06","tetrisgrandmaster","tetristhegrandmaster"],category:"game",content:`[[ -Chỉ có trên máy thùng | Chơi đơn / Chơi hai người - -Tetris: The Grand Master, một series Tetris dành cho máy thùng, nổi tiếng với độ khó cực cao - được xem là series game khó nhất (tại thời điểm ra mắt). Những thứ như S13 hay GM cũng từ chính series này. TGM3 được coi là tựa game nổi tiếng nhất của series này. - ]]`,link:"",id:"1544d6a768d54f99d0258afc98064ff29d5cccf6"},{title:"DTET",tags:["nhom06"],category:"game",content:`[[ -Windows | Chơi đơn - -Một game xếp gạch dựa trên quy tắc Cổ điển của TGM + 20G với hệ thống xoay gạch mạnh mẽ. Cơ chế điều khiển tốt nhưng không có tùy chỉnh nào ngoài việc có thể gán lại phím. - -Game này bây giờ hơi khó tìm và bạn có thể phải cài tệp DLL cần thiết bằng tay. Tuy nhiên cũng may là có một bài hướng dẫn cách cài DTET, bạn có thể nhấn nút hình địa cầu để mở bài viết. - -CẢNH BÁO: Hãy cẩn thận khi tải bất cứ thứ gì về, kể cả file DLL hay EXE! - ]]`,link:"https://t-sp.in/dtet",id:"9cb8bc5e85d6788ab6e27718aaaab44920166d92"},{title:"Heboris",tags:["nhom06","hb"],category:"game",content:`[[ -Windows | Chơi đơn - -Một game với phong cách chơi máy thùng, có khả năng mô phỏng nhiều chế độ của các trò chơi Tetris khác. - ]]`,link:"",id:"bf3fc4930c921819dfa5c082aa82a96352e085a2"},{title:"Texmaster",tags:["nhom06","txm"],category:"game",content:`[[ -Windows | Chơi đơn - -Một game bao gồm tất cả chế độ trong TGM để có thể sử dụng để luyện chơi TGM. Lưu ý rằng World Rule trong Texmaster hơi khác một chút so với TGM, ví dụ như game sử dụng cơ chế "Thả nhẹ-khóa tức thì"* thay vì sử dụng cơ chế "Thả nhẹ" thông thường và bảng kick cũng có đôi chút khác biệt - -(*): Bản Zictionary tiếng Anh ghi là "instant-lock soft drop(s)". -Có thể hiểu là bạn giữ nút Thả nhẹ, gạch vừa chạm đất là chốt vị trí đó luôn - giống với các game xếp gạch cổ điển ấy! - ]]`,link:"",id:"6f8e0cc298dfa582d40c96a3812c2e42856926d7"},{title:"Tetris Effect",tags:["nhom06","tec","tetriseffectconnected"],category:"game",content:`[[ -PS / Oculus Quest / Xbox / NS / Windows | Chơi đơn / Chơi trực tuyến - -Gọi tắt là TE(C). Một game xếp gạch chính thức với đồ họa và nhạc nền lạ mắt chuyển động theo điều khiển của bạn. Phiên bản cơ bản (Tetris Effect) chỉ có các chế độ chơi đơn. Phiên bản mở rộng, Tetris Effected Connected có 4 chế độ chơi trực tuyến đó là: Connected (VS), Zone Battle, Score Attack, và Classic Score Attack. - ]]`,link:"",id:"5e1cd74e0437f456f5298be524f7c8e212a6922a"},{title:"Tetris 99",tags:["nhom06","t99","tetris99"],category:"game",content:`[[ -Nintendo Switch | Chơi đơn / Chơi trực tuyến - -Một trò chơi nổi tiếng với chế độ Battle Royale 99 người và có nhiều chiến lược thú vị mà không có trong các game chiến đấu truyền thống. Nó cũng có các chế độ chơi đơn hạn chế như Marathon hay các trận đấu bot có sẵn dưới dạng DLC. - ]]`,link:"",id:"a47bd0c9b0887899c3ae79d69c1484c06afd0107"},{title:"Puyo Puyo Tetris",tags:["nhom06","ppt","puyopuyotetris"],category:"game",content:`[[ -PS / NS / Xbox / Windows | Chơi đơn / Chơi trực tuyến - -Đây là một tựa game ghép từ hai trò chơi giải đố: Tetris và Puyo Puyo, và bạn có thể chơi đối đầu trong cả hai game này. Có nhiều chế độ chơi đơn và chơi trực tuyến. - -[MrZ: Bản PC (Steam) có cơ chế điều khiển và trải nghiệm trực tuyến khá là tệ.] - ]]`,link:"",id:"1b10e8902e8a588d4a31a93bd6ca016bc0e30eb7"},{title:"Tetris Online",tags:["nhom06","top","tetrisonline"],category:"game",content:`[[ -Windows | Chơi đơn / Chơi trực tuyến - -Một game xếp gạch của Nhật Bản đã nghỉ hưu từ lâu. Có chế độ chơi đơn và chơi trực tuyến. Có thể điều chỉnh DAS và ARR (nhưng không thể đặt thành 0). Độ trễ đầu vào nhỏ. Tuy server chính ở Nhật đã bị đóng cửa còn lâu nhưng vẫn còn tồn tại server riêng. Game rất phù hợp cho những người mới bắt đầu. - ]]`,link:"",id:"f7e3a7409638ae2b983dacd4c556f9c30b584c05"},{title:"Tetra Online",tags:["nhom06","TO","tetraonline"],category:"game",content:`[[ -Windows / macOS / Linux | Chơi đơn / Chơi trực tuyến - -Gọi tắt là TO. Một tựa game xếp gạch được phát triển bởi Dr Ocelot và Mine. Các loại độ trễ như AREs được cố tình đẩy ở giá trị cao, và những ai đã từng quen chơi xếp gạch mà có độ trễ thấp / không có độ trễ sẽ khó làm quen với game này -Game đã bị gỡ khỏi Steam vào ngày 9 / T12 / 2020 do TTC gửi thông báo DMCA -Dù sao thì, vẫn còn một bản build có thể tải từ GitHub. - ]]`,link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"d8451fd1b3d99f86e1c5072bc99816d08a44dd2e"},{title:"Cultris II",tags:["nhom06","c2","cultris2","cultrisii"],category:"game",content:`[[ -Windows / OS X | Chơi đơn / Chơi trực tuyến - -Gọi tắt là C2. Được thiết kế dựa trên Tetris cổ điển, Cultris II cho phép bạn có thể điều chỉnh DAS và ARR. Chế độ chiến đấu tập trung vào các combo dựa trên thời gian, thử thách người chơi về mặt tốc độ, n-wide setup và kỹ năng đào xuống của người chơi - -[MrZ: Phiên bản dành cho Mac đã không được bảo trì trong thời gian dài. Nếu bạn đang dùng macOS 10.15 Catalina hoặc macOS mới hơn thì không thể chạy game này.] - ]]`,link:"",id:"f171da186fff4c50e3268a60973e3d04baad1094"},{title:"Nullpomino",tags:["nhom06","np"],category:"game",content:`[[ -Windows / macOS / Linux | Chơi đơn / Chơi trực tuyến - -Gọi tắt là NP. Một game xếp gạch chuyên nghiệp có khả năng tùy biến cao. Gần như mọi thông số trong game đều có thể điều chỉnh được. - -[MrZ: Giao diện của game mang phong cách retro. Ngoài ra, game chỉ có thể điều khiển thông qua bàn phím, nên một vài người chơi mới sẽ gặp khó khi làm quen. Ngoài ra, có vẻ như macOS Monterey không thể chạy được game này.] - ]]`,link:"",id:"68538b4aae6f267aed0674d6f4ea9be962d90388"},{title:"Misamino",tags:["nhom06"],category:"game",content:`[[ -Windows | Chơi đơn - -Chỉ có chế độ chơi 1 đấu 1 với bot, chủ yếu là chơi theo lượt. Bạn có thể viết bot cho game này (nhưng bạn cần phải học API của nó). - -Misamino cũng là tên của bot trong game này. - ]]`,link:"",id:"f43df4cdf70747c58c90dff1d067fa7c6a73e6cd"},{title:"Touhoumino",tags:["nhom06"],category:"game",content:`[[ -Windows | Chơi đơn - -Một game Tetris do fan làm. Game này là một bản chỉnh sửa của Nullpomino với các yếu tố được thêm vào từ Touhou Project. - -Chế độ Marathon có chứa "Spell Cards" của Touhou Project (thêm hiệu ứng đặc biệt để quấy phá màn chơi), chỉ có thể phá bằng cách đạt được số điểm yêu cầu trong thời gian có hạn. - -[MrZ: Chỉ nên chơi nếu bạn đã có kỹ năng ở mức nào đó*, nếu không, bạn thậm chí không biết mình đã chết như thế nào.] - -(*) Bản Zictionary tiếng Anh ghi là: "half-decent skills", dịch sát nghĩa là "một nửa kỹ năng" - ]]`,link:"",id:"0cc1614820bd3afa5fdc2ff7e97d2a722f6b5178"},{title:"Tetris Blitz",tags:["nhom06","blitz","ea","mobile","phone"],category:"game",content:`[[ -iOS / Android | Chơi đơn - -Một game xếp gạch được làm bởi Electronic Arts (EA). Có cơ chế trọng lực, và mỗi ván game chỉ kéo dài trong vòng 2 phút. Game sẽ tạo một cái giếng cao khoảng 10 hàng ở đầu game (và ngay sau khi bạn làm được Perfect Clear). Game có chế độ "Frenzy" có thể kích hoạt bằng cách liên tục xóa hàng; cùng với rất nhiều loại power-up khác nhau, có cả Finisher giúp cho màn chơi kết thúc của bạn thêm đẹp mắt và buff mạnh số điểm của bạn lên. Game không có cơ chế top-out mà thay vào đó game sẽ tự động xóa các hàng trên cùng nếu có gạch chồng lên gạch đã đặt. - -Game đã nghỉ hưu từ T04 / 2020 - ]]`,link:"",id:"b52d40d6290a98948b28b9e9d2e4491401d7a994"},{title:"Tetris (EA)",tags:["nhom06","tetris","ea","galaxy","universe","cosmos","mobile","phone"],category:"game",content:`[[ -iOS / Android | Chơi đơn / Chơi trực tuyến? - -Một tựa game xếp gạch được phát triển bởi EA. Có hai cách điều khiển: Swipe (Vuốt) và One-Touch (Một chạm). Game này có chế độ Galaxy cùng với chế độ Marathon (có cơ chế trọng lực), và mục tiêu của chế độ này là xóa hết tất cả các gạch của Galaxy trước khi hết chuỗi gạch - -Ra mắt lần đầu năm 2011, nghỉ hưu từ T04 / 2020 - -[Sea: game đang nhắc ở đây là bản năm 2011 (phát hành khoảng 2011 - 2012)] - ]]`,link:"",id:"94eb0cf041fe01b4502b75e657cf8506a963c645"},{title:"Tetris (N3TWORK)",tags:["nhom06","tetris","n3twork","mobile","phone"],category:"game",content:`[[ -iOS / Android | Chơi đơn - -Một tựa game xếp gạch, trước đây được phát triển bởi N3TWORK; PlayStudio đã tiếp quản quá trình phát triển từ cuối tháng 11 năm 2021. Có chế độ Chơi nhanh (Ultra nhưng 3 phút), Marathon, chế độ Royale 100 người chơi và chế độ Phiêu lưu (nơi mà bạn sẽ phải hoàn thành mục tiêu của màn chơi chỉ với số bước di chuyển có hạn). - -Từ cuối T11 / đầu T12 / 2022 và sau này, tất cả các tài khoản mới tạo chỉ có thể chơi chế độ Marathon và chế độ Phiêu lưu. - -[MrZ: UI thì tuyệt nhưng cơ chế điều khiển thì tệ] -[Sea: Bạn tốt hơn đi kiếm game khác chứ game này bây giờ rác quá!] - ]]`,link:"",id:"fa1722e2860dd321138833f7da9829d4624fafb5"},{title:"Tetris Beat",tags:["nhom06","n3twork","rhythm"],category:"game",content:`[[ -iOS | Chơi đơn - -Một game xếp gạch tới từ N3TWORK nhưng chỉ dành cho Apple Arcade. Ngoài chế độ Marathon cổ điển, game giới thiệu một chế độ được gọi là "Beat": người chơi sẽ phải thả gạch theo nhịp của BGM. - -[MrZ: Hiệu ứng của game rất là nặng và cơ chế điều khiển không được lý tưởng] - ]]`,link:"",id:"4fef960d37387d508d363800f9b3e50a533906b9"},{title:"Tetris Journey",tags:["nhom06","tetrisjourney","mobile","phone","huanyouji"],category:"game",content:`[[ -iOS / Android | Chơi đơn - -(俄罗斯方块环游记) - -Một game xếp gạch đã nghỉ hưu từng được phát triển bởi Tencent dành cho Trung Quốc. -Có 3 chế độ chơi trực tuyến, 4 chế độ chơi đơn cùng với một chế độ dựa trên cấp độ -Mỗi trận trong chế độ chơi trực tuyến dài 2 phút, nếu không ai bị top out thì ai gửi nhiều hàng nhất sẽ giành chiến thắng. - -Có thể điều chỉnh vị trí và kích thước phím ảo, nhưng không thể điều chỉnh DAS và ARR. -Game đã nghỉ hưu từ 15 / T02 / 2023. - ]]`,link:"",id:"72d9159529819b548a8150da4a75a4aaca8670ad"},{title:"JJ Tetris",tags:["nhom06","jjtetris"],category:"game",content:`[[ -Android | Chơi trực tuyến - -(JJ块) - -Một game xếp gạch ở trên JJ Card Games (JJ棋牌). Chơi ở màn hình dọc, độ trễ đầu vào thấp, điều khiển mượt. DAS / ARR có thể điều chỉnh được và có thể đổi giữ Thả nhanh / Thả nhẹ, nhưng hạn chế về tùy biến bố cục phím ảo. Không HOLD cũng như B2B, không bộ đệm rác hay cơ chế hủy rác. Mỗi tấn công gửi tối đa 4 hàng, còn cơ chế combo thì "ao chình". Phần còn lại thì tương tự như Tetris hiện đại. - ]]`,link:"",id:"7cc8f8493e6e44bc8eb243fc99c67bd20fe420af"},{title:"Huopin Tetris",tags:["nhom06","huopin","qq"],category:"game",content:`[[ -Windows | Chơi trực tuyến - -(火拼俄罗斯) - -Một game xếp gạch ở trên Tencent Game Center - một nền tảng chơi game trực tuyến dành riêng tại Trung Quốc. Có bảng rộng 12 ô, 1 NEXT, 0 HOLD, DAS và ARR giống với DAS và ARR hay dùng trong các app gõ văn bản. Chỉ có thể gửi rác bằng Tetris (gửi 3 hàng rác) và xóa 3 hàng (gửi 2 hàng rác). Hàng rác có cấu trúc xen kẽ và gần như không thể đào. - ]]`,link:"",id:"41c327bfcdadfce66b1819e5489b55caa30e3405"},{title:"=[NHÓM 07]=",tags:["nhom07"],category:"",content:`[[ -NHÓM 07: MỘT VÀI CƠ CHẾ VÀ CHẾ ĐỘ CỦA MỘT SỐ GAME - ]]`,link:"",id:"a71d40c82d2411bff66c0e57c5cb4d96cb6ff109"},{title:"Tàng hình một phần",tags:["nhom07","half","invisible","semi"],category:"term",content:'Tên tiếng Anh: Semi-invisible\\nChỉ một quy tắc trong đó gạch sẽ tàng hình sau một khoảng thời gian từ lúc nó được đặt xuống.\\nKhoảng thời gian đó thường không được cố định, nên vẫn có thể mô tả nó là \\"biến mất sau một vài giây\\".',link:"",id:"2d035a9574e6023eb09b8f35c8c1cf3c452a4b8e"},{title:"Tàng hình",tags:["nhom07","invisible"],category:"term",content:'Tên tiếng Anh: Invisible\\nChỉ một quy tắc trong đó gạch sẽ tàng hình ngay lập tức sau khi đặt xuống\\n \\nNếu mode tàng hình hoàn toàn mà có hiệu ứng biến mất thì vẫn được chấp nhận. Tuy nhiên, nó làm game dễ hơn đôi chút\\n\\nỞ Techmino, chế độ tàng hình mà không có hiệu ứng biến mất được gọi là \\"sudden invisible.\\',link:"",id:"9b746f2500936729ca9b2a4a9f50eebd690dedab"},{title:"Chế độ MPH",tags:["nhom07","mph"],category:"term",content:'Sự kết hợp của ba quy tắc:\\n\\n\\"Memoryless - Không nhớ gì\\" (chuỗi gạch tạo ra hoàn toàn ngẫu nhiên)\\n\\"Previewless - Không biết trước gạch nào sẽ tới\\" (không có hàng NEXT)\\n\\"Holdless- Không có ô HOLD\\".\\n\\nMột chế độ đòi hỏi tốc độ và phản ứng nhạy bén từ người chơi.',link:"",id:"d06870134d79e48146554b26cc577d0845dd200e"},{title:"Secret Grade",tags:["nhom07","larger","than",">","<"],category:"term",content:'Một easter egg trong series TGM.\\n\\nĐể có được \\"secret grade\\", người chơi sẽ làm một đường dích dắc (zigzag) (trông giống như \\">\\" hay \\"<\\") bằng cách tạo ra 1 ô trống duy nhất cho từng hàng. Mục tiêu cuối cùng là hoàn thành đường dích dắc cao (hơn) 19 hàng.\\n\\nNhấn vào nút hình địa cầu để xem các kỹ thuật dùng để đạt được Secret Grade.',link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"c1ea852455df70659574fb0b5955f24e1f2430c7"},{title:"Deepdrop (Rơi sâu)",tags:["nhom07"],category:"term",content:"*Chỉ có trên Techmino*\\n\\nMột chức năng cho phép cho phép gạch có thể teleport xuyên đất để xuống phía dưới. Khi gạch đụng vào gạch đã đặt, nhấn phím Thả nhẹ để kích hoạt Deepdrop. Nếu có một cái lỗ phù hợp với hình dạng của gạch ở dưới vị trí gạch đang rơi, gạch sẽ được teleport vào lỗ đó.\\nCơ chế này đặc biệt hữu ích cho AI vì nó cho phép AI bỏ qua sự khác biệt giữa các hệ thống xoay khác nhau.",link:"",id:"9f09fb6bfecd43a3ed30d2e51a85854dcd90eea0"},{title:"=[NHÓM 08]=",tags:["nhom08"],category:"",content:"NHÓM 08: BOT",link:"",id:"a98d880dc385583a997c9619bd9eb65ad97da5e9"},{title:"Cold Clear",tags:["nhom08","cc","coldclear","ai","bot"],category:"term",content:"Một bot chơi Tetris. Được viết bởi MinusKelvin, ban đầu được viết cho Puyo Puyo Tetris.\\nBản Cold Clear ở trong Techmino có hỗ trợ All-spin và hệ thống TRS (nhưng không hỗ trợ O-spin).",link:"",id:"fe8bc5b17172626df7e12d9116c6e7bc4767165d"},{title:"ZZZbot",tags:["nhom08","ai","bot","zzztoj"],category:"term",content:"Một bot chơi xếp gạch. Được viết bởi một người chơi Tetris Trung Quốc có tên là 奏之章 (Zòu Zhī Zhāng) và hoạt động khá tốt trong nhiều game (sau khi điều chỉnh các thông số cần thiết).\\nBạn cũng có thể sử dụng bot này trên TETR.IO.",link:"",id:"2c6101494fda7d74bd4c1c0d764608d61b32f7be"},{title:"=[NHÓM 09]=",tags:["nhom09"],category:"",content:"NHÓM 09: WIKI; CÁC TRANG WEB BÀY SETUP,\\nCUNG CẤP CÂU ĐỐ & CHIA SẺ SETUP",link:"",id:"782bff73a7d00bf7d4d2637f79914a17adb22608"},{title:">A|Wiki",tags:["nhom09a"],category:"",content:"",link:"",id:"04b57c88eef668d6d8e85598b3f129e69e8d97bf"},{title:"Huiji Wiki",tags:["nhom09a","huiji","wiki"],category:"help",content:"(灰机wiki)\\n\\nMột wiki về Tetris của những người đam mê Tetris từ các nhóm và chi nhánh của Cộng đồng Nghiên cứu Tetris Trung Quốc. Hiện tại hầu hết các trang đều được tham khảo và dịch từ Wiki Hard Drop và Tetris Wiki. Liên kết sẽ dẫn bạn tới bản tiếng Trung giản thể.",link:"https://tetris.huijiwiki.com",id:"b3066d268e915afb5b1ed4035910ee0d86d7bcea"},{title:"Wiki Hard Drop",tags:["nhom09a","harddrop","hd","wiki"],category:"help",content:"Một wiki về Tetris được host bởi cộng đồng Hard Drop.",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"e1b4dbcab8143995232d84f33db1b8ee46d9e69c"},{title:"Tetris.wiki",tags:["nhom09a","tetris","wiki"],category:"help",content:"Một wiki tập trung vào các nội dung liên quan đến Tetris. Wiki được tạo ra từ năm 2015 bởi Myndzi. Trong những năm qua, hàng nghìn đóng góp đã được thực hiện để ghi lại các game xếp gạch chính thức và các game do fan làm, các series, những cơ chế của game,… cũng như tạo ra những bài hướng dẫn để cải thiện trải nghiệm chơi.",link:"https://tetris.wiki",id:"3ce6495bda9a492f0a80d77964220ba72f115a3a"},{title:"Tetris Wiki Fandom",tags:["nhom09a","tetris","wiki","fandom"],category:"help",content:"Cũng là một wiki về Tetris nhưng nó ở trên Fandom",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"90062d5081d44f5297a1a2a8a9b69d832e6507b7"},{title:">B|Câu đố",tags:["nhom09b"],category:"",content:"NHÓM 09B: CÁC TRANG WEB CUNG CẤP CÂU ĐỐ",link:"",id:"1d90b0ee512c67d5486b93579370d142c6723052"},{title:"TTT",tags:["nhom09b","tetris","trainer","tres","bien","T.T.T."],category:"game",content:`[[ -Tetris Trainer Très-Bien (viết bởi こな "kona"). Một website chứa các hướng dẫn thực hành các kỹ thuật nâng cao trong Tetris hiện đại (lưu ý: website này chỉ hỗ trợ bàn phím vật lý, không hỗ trợ bàn phím ảo). -Đề xuất cho những người chơi có thể hoàn thành chế độ 40L chỉ làm Tetris + không dùng Hold -Website này đề cập tới T-spin, finesse, SRS và một số setup để chơi Battle -Liên kết sẽ dẫn bạn tới phiên bản tiếng Anh, được dịch bởi User670 (Bản gốc là bản tiếng Nhật). - ]]`,link:"https://user670.github.io/tetris-trainer-tres-bien/",id:"3f95050fcf73497f4ffce28a791e00f71be06d8f"},{title:"TTPC",tags:["nhom09b","tetris","perfect","clear","challenge","T.T.P.C"],category:"game",content:`[[ -Tetris Perfect Clear Challenge (viết bởi chokotia). Một website hướng dẫn bạn cách làm Perfect Clear khi sử dụng hệ thống xoay SRS và Bag-7 (chỉ hỗ trợ bàn phím). Đề xuất sử dụng nếu bạn đã hoàn thành TTT và đã làm quen với SRS - -Liên kết sẽ dẫn bạn tới phiên bản tiếng Anh, bản gốc là tiếng Nhật - ]]`,link:"https://teatube.cn/ttpc/ttpc/",id:"39bcfbf03277ce388abc41bdc742679f11e878f8"},{title:"NAZO",tags:["nhom09b"],category:"game",content:`[[ -(ナゾ) - -Một website chứa các loại câu đố SRS từ dễ đến cực kỳ khó, bao gồm T-spin và All spin. Đề xuất cho những người đã hoàn thành TTT. - -Liên kết sẽ dẫn bạn tới bản tiếng Trung Giản thể, nguyên bản bằng tiếng Nhật. - ]]`,link:"https://teatube.cn/nazo/",id:"0180c3cda18e80ac9839ea51042bf1e20e90fe85"},{title:"TPO",tags:["nhom09b","nazo","T.P.O"],category:"game",content:"Tetris Puzzle O. Một trang web bằng tiếng Nhật được viết bởi TCV100 (có lấy một vài câu đố từ NAZO sang).",link:"http://121.36.2.245:3000/tpo",id:"f75b34a257eb4589bb9da8a8bae8dc4ba6c2a8d4"},{title:"4-wide Trainer",tags:["nhom09b","nazo"],category:"game",content:"Một công cụ được viết bởi DDRKirby(ISQ) để học & làm quen 4-wide.",link:"https://ddrkirby.com/games/4-wide-trainer/4-wide-trainer.html",id:"083f48aa72654b5afce732b2f654c9dbdcd7f378"},{title:">C|Setup",tags:["nhom09c"],category:"",content:"NHÓM 09C: CÁC TRANG WEB BÀY SETUP",link:"",id:"7ec9157be0567a75744b5e31c784f4e3093f1fcd"},{title:"Four.lol",tags:["nhom09c","four","wiki"],category:"help",content:"Một website chứa các setup để làm opener",link:"https://four.lol",id:"8fdd85b06a22cc54cde1da6b6b906b69c43976b4"},{title:"‘Tetris Hall’",tags:["nhom09c","tetris","hall"],category:"help",content:"(テトリス堂)\\n\\nMột trang web tiếng Nhật, chứa nhiều setup, hướng dẫn cũng như có các minigame. Nó cũng có mô tả chi tiết về PC liên tiếp",link:"https://shiwehi.com/tetris/",id:"28d4411a1afd7846156edc4b96a6502dc650895c"},{title:"‘Tetris Template Collections’",tags:["nhom09c","tetris","template","collections"],category:"help",content:"(テトリステンプレ集@テト譜)\\n\\nMột trang web tiếng Nhật với các setup và các danh mục chi tiết. Hầu hết các setup đều có ảnh minh họa, vì vậy việc chia sẻ với người khác sẽ dễ dàng hơn.",link:"https://w.atwiki.jp/tetrismaps/",id:"5de3300951a61087ecb9cf4fd23fb76aafd55258"},{title:"tetristemplate.info",tags:["nhom09c"],category:"help",content:"(テトリスブログ - PerfectClear)\\n\\nMột trang web ở Nhật Bản chứa một số setup. Tuy số lượng không bằng các trang web khác nhưng bù lại các setup đều được giải thích rất chi tiết",link:"https://tetristemplate.info/",id:"6572160a0dc40c4c77efc706e93837605e9c3d32"},{title:">D|Chia sẻ setup",tags:["nhom09d"],category:"",content:"NHÓM 09D: CÁC TRANG WEB CHIA SẺ SETUP",link:"",id:"8a1c9097f012b946d14ada473c382b9855594318"},{title:"Fumen",tags:["nhom09d"],category:"help",content:"Đây là một công cụ chỉnh sửa bảng dành cho Tetris bằng tiếng Nhật. Thường được sử dụng để chia sẻ setup, PC solution (hướng đi để làm PC), v.v.\\nLiên kết của mục này sẽ dẫn bạn tới bản tiếng Anh.",link:"http://fumen.zui.jp/#english.js",id:"68197b2e0f89fcdc10577517e47572d90cb1843a"},{title:"Fumen bản Đ.thoại",tags:["nhom09d","fumenformobile","fm"],category:"help",content:"Fumen for Mobile (Fumen bản dành cho Điện thoại)\\nCũng là Fumen nhưng hỗ trợ cho màn hình cảm ứng",link:"https://knewjade.github.io/fumen-for-mobile/",id:"797553c87ac1b8b63b92e619a4c17f8774185fde"},{title:"=[NHÓM 10]=",tags:["nhom10"],category:"",content:"NHÓM 10: CỘNG ĐỒNG",link:"",id:"eae17ae001f6d36996a33ae818e73f7174972078"},{title:"Tetris OL Servers",tags:["nhom10","tetrisonline","servers","tos"],category:"org",content:'Hãy lên Google tra \\"Tetris Online Poland\\" để tìm server ở Ba Lan.\\nCòn nếu tìm server Tetris Online Study được đặt tại Trung Quốc (cung cấp bởi Teatube) thì nhấn vào nút hình địa cầu',link:"https://teatube.cn/tos/",id:"53b30a9bdad30dfb969678a1b954156a65bc9e49"},{title:"Tetris Việt Nam",tags:["nhom10","community","vietnam","tetris","việt","nam"],category:"org",content:`[[ -Một trong những cộng đồng xếp gạch tại Việt Nam. Đây là nơi chia sẻ kinh nghiệm và thông tin: bao gồm cả game, các giải đấu và các sự kiên liên quan đến xếp gạch. - -Nhấn nút hình địa cầu để vào server Discord, còn nếu muốn vào nhóm Facebook thì hãy vào Facebook và tìm nhóm "Tetris Việt Nam". - ]]`,link:"https://discord.gg/jX7BX9g",id:"a663949c0313a5eb479b99b646d11f9581407939"},{title:"=[NHÓM 11]=",tags:["nhom11"],category:"",content:"NHÓM 11: XẾP LÊN VÀ ĐÀO XUỐNG",link:"",id:"1816caf61b243fd228668ffdd16adf60a0a8627c"},{title:"A|Stacking",tags:["nhom11a"],category:"",content:"NHÓM 11A: STACKING (XẾP LÊN)\\n\\nDùng để chỉ việc xếp các gạch làm sao mà không để lại một cái lỗ.\\nĐây là kỹ năng càn thiết yêu càu khả năng tận dụng hàng NEXT.\\nBạn có thể cải thiện kỹ năng này bằng cách luyện tập 40L với 0 HOLD",link:"",id:"5655035f52e93885bc666b700c5c6c17c9eb2c5d"},{title:"Side well",tags:["nhom11a","ren","combo","sidewell"],category:"term",content:"Một phương pháp xếp gạch đặc biệt mà bạn sẽ để lại một cái lỗ có một chiều rộng nhất định ở một bên bảng.\\n\\nCó 4 loại setup này: Setup Side 1-wide là setup truyền thống để làm Tetris (ví dụ như, Side well Tetris). Các loại setup như Side 2-, 3-, hay 4-wide; là những setup được dùng để làm combo.\\n\\nĐối với những người chơi mới, đây là cách hiệu quả nhất để tấn công.\\n\\nNHƯNG, đối thủ có thể dễ dàng tấn công lại bạn, một là chết còn không thì stack của bạn sẽ bị cắt ngắn do bạn phải phản công lại.\\nTrong thực tế, setup này chỉ dùng sau khi dùng setup T-spin nào đó hoặc là đối thủ chưa thể tấn công ngay; khi đó, side well có thể được sử dụng để tăng số cú tấn công tức thì.",link:"",id:"a0240cd8a4faf6cf6842388be03766059dbb81b1"},{title:"Center well",tags:["nhom11a","ren","combo","centerwell"],category:"term",content:"Một phương pháp xếp gạch mà bạn sẽ để lại một cái giếng có chiều rộng nhất định ở giữa bảng. Bạn cũng có thể tránh bị top-out nếu giếng đủ rộng.",link:"",id:"58fa0a0bf0387857f2d9dae6fad86695f7b00ae4"},{title:"Partial well",tags:["nhom11a","ren","combo","partialwell"],category:"term",content:"Một phương pháp xếp gạch mà bạn sẽ để lại một cái giếng có chiều rộng nhất định nhưng không ở giữa hay một bên bảng.",link:"",id:"6200b2023b492893a872a9053da1f6fc7138b818"},{title:"Side 1-wide",tags:["nhom11a","s1w","side1wide","sidewelltetris"],category:"term",content:'Hay còn gọi là S1W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 1 ô ở một bên bảng.\\n\\nĐây được coi là setup / cách chơi xếp gạch kinh điển nhất\\n\\nNhững người mới tập chơi có thể dùng setup này để gửi Tetris, vì chúng có thể tấn công tốt trong một thời gian ngắn.\\nTuy nhiên, những người chơi giỏi hơn thường sẽ không dùng setup này do ít hiệu quả + dễ bị tấn công trong lúc xây → dễ bị game over; họ chỉ xây S1W nếu như tình hình hiện tại đủ thuận lợi cho setup này.\\n\\nSetup này còn được biết tới với cái tên \\"Side well Tetris\\".',link:"",id:"925c4826b57231e3f6271e8d9d79f5f892e8604d"},{title:"Side 2-wide",tags:["nhom11a","s2w","side2wide","sidewell"],category:"term",content:"Hay còn gọi là S2W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 2 ô ở một bên bảng.\\n\\nS2W rất dễ xây và có thể tạo ra combo khá dài khi kết hợp với HOLD.\\nTuy nhiên, những người chơi giỏi hơn cũng sẽ ít khi dùng setup này vì các lý do tương tự như S1W.",link:"",id:"947eff513868be5c761b7a187883a05176c7bc9c"},{title:"Side 3-wide",tags:["nhom11a","s3w","side3wide","sidewell"],category:"term",content:"Hay còn gọi là S3W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 3 ô ở một bên bảng.\\n\\nĐây là setup it phổ biến hơn so với Side 2-wide.\\n\\nMặc dù khi so sánh, S3W có thể làm nhiều combo hơn so với S2W nhưng S3W hay dễ bị hỏng combo.",link:"",id:"1b780e9fef6c285b10ad9a6d5e4381bfc11d1534"},{title:"Side 4-wide",tags:["nhom11a","s4w","side4wide","sidewell"],category:"term",content:"Hay còn gọi là S4W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 4 ô ở một bên bảng.\\n\\nĐây là setup phổ biến dùng để làm combo.\\n\\nNgoài việc tạo ra được những combo dài hơn, S4W lại tốn ít thời gian hơn để xây so với setup side well khác. Việc này cho phép người chơi gửi tấn công sớm hơn trước khi đối thủ có thể trở tay kịp.\\n\\nSo với C4W, S4W được coi là cân bằng hơn vì người chơi có thể bị top-out trong khi đang xây setup này.",link:"",id:"acf005a3adc32aa0b212bc58cf7a937f21081685"},{title:"Center 1-wide",tags:["nhom11a","c1w","center1wide","centerwelltetris"],category:"term",content:"Hay còn gọi là C1W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 1 ô ở giữa bảng.\\n\\nChủ yếu dùng trong combat bởi vì cho phép làm Tetris và T-spin trong khi nó không quá khó để làm.",link:"",id:"c25f07d5e9445f1d32a8c08a5aec9b50e8063fcc"},{title:"Center 2-wide",tags:["nhom11a","c2w","center2wide"],category:"term",content:"Hay còn gọi là C2W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 2 ô ở giữa bảng.\\n\\nĐây là một setup combo có thể làm được nhưng ít phổ biến lắm.",link:"",id:"2e85bd6062974ccbd7deda1e0af80d2d41fd46f4"},{title:"Center 3-wide",tags:["nhom11a","c3w","center3wide"],category:"term",content:"Hay còn gọi là C3W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 3 ô ở giữa bảng.\\n\\nĐây là một setup combo có thể làm được nhưng ít phổ biến lắm.",link:"",id:"346e3a3e9e42b25edbada824c6d522a7dab3d49f"},{title:"Center 4-wide",tags:["nhom11a","c4w","center4wide"],category:"term",content:"Hay còn gọi là C4W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 4 ô ở giữa bảng.\\n\\nĐây là một setup khét tiếng có thể tạo ra lượng combo rất lớn nếu người xây tận dụng tốt.\\nSetup này rất dễ xây, và có khả năng phòng thủ tốt trước các đòn tấn công bằng cách lợi dụng một lỗ hổng khi kiểm tra điều kiện chết trong (đa số) các game xếp gạch.\\n\\nRất nhiều người chơi ghét setup này vì nhiều lý do khác nhau; nhưng chủ yếu là vì phần thắng luôn thuộc về những người dùng setup này.\\nHãy cẩn thận khi dùng setup này trong các trận đấu thực tế.",link:"",id:"23141a356aeb11accae01d33da3d2608c264400f"},{title:"Residual",tags:["nhom11a","c4w","s4w"],category:"term",content:"Thuật ngữ này đề cập đến số ô gạch được để dư trong cái giếng sau khi xây xong setup 4-wide.\\nCác combo dài chủ yếu được thực hiện bằng cách dùng 3-residual (3-res) hay 6-residual (6-res).\\n\\n3-res dễ học hơn tại vì nó có ít biến thể hơn và có cơ hội cao để tạo ra combo dài hơn\\n6-res linh hoạt hơn nhiều đồng nghĩa với việc khó nhớ hơn, nhưng combo tạo ra lại dài hơn 3-res nếu mọi thứ thuận lợi.\\n\\nNói chung, thứ tự ưu tiên của setup này là 6-res, rồi 3 sau đó 5, và cuối cùng là 4-res.",link:"",id:"d32a745334d3ce125b1653483dd243c10f21a17b"},{title:"6 - 3 Stacking",tags:["nhom11a","63stacking","six-three","sixthree"],category:"term",content:"Một phương pháp để xếp gạch đặc biệt, khi bạn sẽ phải tạo ra một bức tường cao rộng 6 ô ở bên trái và một bức tường cao nữa rộng 3 ô ở bên phải.\\n\\nĐối với một người chơi có kỹ năng, phương pháp cho phép người chơi giảm số phím cần nhấn, và đây là một phương pháp phổ biến để chơi Sprint (như 10 hàng, 20 hàng, 40 hàng,…). Phương pháp này hoạt động được nhờ việc vị trí xuất hiện của 3 gạch J, L, T hay dịch về bên trái 1 ô.\\n\\nNhắc nhẹ: Phương pháp này CÓ THỂ tăng số lần nhấn phím ở người mới tập chơi.",link:"",id:"cbb6156cbd7cc08b97a5b0c5badfe86aff1ff970"},{title:">B|Digging",tags:["nhom11b"],category:"",content:"Digging (Đào xuống)\\nCòn được biết tới với tên là Downstacking\\n\\nDọn hàng rác để tiếp xúc đáy bảng.",link:"",id:"78bee480e1ce8fcbcd48a5cc8d38ca5ab41b6768"},{title:"=[NHÓM 12]=",tags:["nhom12"],category:"",content:"NHÓM 12: Setup (Opener, Mid-game setup, Donation)",link:"",id:"15ecf9228c926cff650e2e4cd5c45f05aa793283"},{title:">A|Opener",tags:["nhom12a","opener"],category:"",content:`[[ -NHÓM 12A: OPENER -Opener thường là các setup thường dùng ở đầu trận. Bạn vẫn có thể làm những setup này giữa trận, nhưng thường sẽ yêu cầu một tập hợp các vị trí gạch khác nhau. - -Opener phải đạt 2 trong 4 tiêu chí sau -- Có thể thích ứng với các chuỗi gạch khác nhau, -- Tấn công mạnh, ít lãng phí gạch T -- Dùng Finesse trong đa số hành động, ít dùng thả nhẹ -- Có chiến lược rõ ràng và ít nhánh / biến thể. - -Đa số opener được thiết kế cho kiểu xáo Túi 7. Chúng có thể không hoạt động với các kiểu xáo khác. - ]]`,link:"",id:"7c70d2770b1673af5d60738e6a7a22690bfc1584"},{title:"DT Cannon",tags:["nhom12a","opener","dtcannon","doubletriplecannon"],category:"setup",content:"Double-Triple Cannon (Súng thần công T-spin Đôi-Tam).\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=dt",id:"b7dca635191ef93f5bd3c0c4dcc6465452951f40"},{title:"DTPC",tags:["nhom12a","opener","dtcannon","doubletriplecannon"],category:"setup",content:"Phần tiếp theo của DT Cannon kết thúc bằng All Clear.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=dt",id:"3c5b6c5f8c67d7ca3793cff41459a3849a74053e"},{title:"BT Cannon",tags:["nhom12a","opener","btcannon","betacannon"],category:"setup",content:"β Cannon, Beta Cannon.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=bt_cannon",id:"6e0f95b11fd26854d65eceebb9b563d6baacf9cd"},{title:"BTPC",tags:["nhom12a","opener","btcannon","betacannon"],category:"setup",content:"Phần tiếp theo của DT Cannon kết thúc bằng All Clear.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=bt_cannon",id:"201d3c88de4404b1647fff86ba92a27b6959eacd"},{title:"TKI 3 Perfect Clear",tags:["nhom12a","opener","ddpc","tki3perfectclear"],category:"setup",content:"Một opener làm TSD dẫn đến Double-Double-All Clear.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"7a8068258cb3a9856b10bc2f582e4e2e5f761f51"},{title:"QT Cannon",tags:["nhom12a","opener","qtcannon"],category:"setup",content:"Một setup gần giống với DT Cannon và khả năng gửi DT Attack¹ cao.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop\\n\\n¹: DT Attack = T-spin Double + T-spin Triple",link:"https://harddrop.com/wiki?search=QT_cannon",id:"5aab9280708179c398e946086be6ef7a089b2ee7"},{title:"Mini-Triple",tags:["nhom12a","opener","mt","minitriple"],category:"setup",content:"Một setup làm Mini T-spin và T-spin Triple.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=mt",id:"e52160963ee209c45ed884fa82cffec79586a7b7"},{title:"Trinity",tags:["nhom12a","opener"],category:"setup",content:"Một setup làm TSD + TSD + TSD hoặc TSMS + TST + TSD. Để có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=trinity",id:"911d077de03982a50738101497a7af399bcaefc2"},{title:"Wolfmoon Cannon",tags:["nhom12a","opener","wolfmooncannon"],category:"setup",content:"Một opener.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"80c1fb840f781d41f159c481f3cb7415d88b5706"},{title:"Sewer",tags:["nhom12a","opener"],category:"setup",content:"Một opener.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=sewer",id:"14290bc66fd877b60151616eb17365bcee5477ae"},{title:"TKI",tags:["nhom12a","opener","tki-3","tki3"],category:"setup",content:"TKI-3. Có thể chỉ TKI-3 bắt đầu bằng một TSD hoặc C-spin bắt đầu bằng một TST.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=tki_3_opening",id:"def33bada80d3a7cb798e5d5b02cf129cd624097"},{title:"God Spin",tags:["nhom12a","opener","godspin"],category:"setup",content:"Một setup nhìn đẹp mắt [nhưng khó sử dụng trên thực tế]. Được phát minh bởi Windkey.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=godspin",id:"f4ecaf38f9adae8c0124c279cd1b404c5555bf08"},{title:"Albatross",tags:["nhom12a","opener"],category:"setup",content:"Một opener nhìn đẹp mắt, nhịp độ nhanh với TSD - TST - TSD - All Clear, khó mà lãng phí được gạch T.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"47ebe12f4d769df30ee91590082c15f9a05af93f"},{title:"Pelican",tags:["nhom12a","opener"],category:"setup",content:"Một opener kiểu Alabatross được sử dụng trong trường hợp trật tự gạch tới không ủng hộ opener Alabatross gốc.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Pelican",id:"96fafbede9d43aa8c9e271d737200b55ae67b443"},{title:"Perfect Clear Opener",tags:["nhom12a","opener","7piecepuzzle"],category:"setup",content:"Một opener làm All Clear có khả năng thành công cao (~84.6% nếu bạn đang giữ I trong ô HOLD và ~61.2% nếu không giữ).\\n\\nTrong chế độ PC Training (Luyện tập PC), setup này được sử dụng để tạo ra setup chưa hoàn chỉnh, không tạo ra lỗ.\\n\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"ce2db6dbe071f5f8b67ae79aac9ce7a5199eeb5f"},{title:"Grace System",tags:["nhom12a","opener","gracesystem","1stpc"],category:"setup",content:"Một opener làm PC có khả năng thành công ~88.57%. Lỗ hình vuông 4 × 4 trong chế độ PC Training cũng dựa trên setup này.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên Four.lol",link:"https://four.lol/perfect-clears/grace-system",id:"851979f05f51cfd8a6279c749f0a75752a56e1b4"},{title:"DPC",tags:["nhom12a","opener"],category:"setup",content:"Một setup làm TSD + PC gần như 100% không có gạch nào trong bảng và gạch cuối cùng trong Túi 7 gạch trong hàng đợi NEXT.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên tetristemplate.info.",link:"https://tetristemplate.info/dpc/",id:"d568180d2c1ea8330d6bcd939fa9bd5d85cf9aec"},{title:"Gamushiro Stacking",tags:["nhom12a","opener"],category:"setup",content:"(ガムシロ積み) Một opener làm TD Attack (TD Attack = T-spin Triple + T-spin Double).\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"778b75a6a4ccde51b4bc60cc20293650951e1c63"},{title:">B|Mid-game",tags:["nhom12b","midgame","mid-game"],category:"",content:"NHÓM 12B: MID-GAME SETUP\\n\\nChỉ những setup cho phép gửi nhiều rác giữa trận. Một số có thể dùng làm opener, nhưng hầu như chúng không cần thiết.",link:"",id:"24dc40e8bb63349e3b09e635b8ea25090e5e2f60"},{title:"C-spin",tags:["nhom12b","midgame","mid-game","cspin"],category:"pattern",content:"Một setup gửi tấn công bằng T-spin Triple + T-spin Double, known as TKI in Japan.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=c-spin",id:"28581dd8fea5d6e5eaed2ff4eb8b5dc94964edfa"},{title:"STSD",tags:["nhom12b","midgame","mid-game"],category:"pattern",content:"Super T-spin Double, một setup cho phép làm T-spin Double.\\nNhưng nếu có rác ngay dưới setup này thì không tài nào làm T-spin Double được\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=stsd",id:"61e264873c7bd3df7b83fc30f1662d0e572d6032"},{title:"Fractal",tags:["nhom12b","midgame","mid-game","fractal","spider"],category:"pattern",content:"Một setup dùng để làm T-spin.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Fractal",id:"9074eb8259957b206d48102e5cfac9c4d6b87136"},{title:"LST stacking",tags:["nhom12b","midgame","mid-game"],category:"pattern",content:"Một setup dùng để làm T-spin với số lượng vô tận.",link:"https://four.lol/stacking/lst",id:"eef4869b8e0e95980d4504a5c5dd3ce0a9eb9743"},{title:"Imperial Cross",tags:["nhom12b","midgame","mid-game","imperialcross"],category:"pattern",content:"Che lỗ hình chữ thập bằng phần nhô ra để thực hiện hai lần T-spin Double\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=imperial_cross",id:"2dc9616322ede73254886a61f0c0eb57b39ac062"},{title:"King Crimson",tags:["nhom12b","midgame","mid-game","kingcrimson"],category:"pattern",content:"Xếp chồng để làm (các) TSD trên STSD.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=King_Crimson",id:"e5af8685b71405df0902fe100d06db57032c2c53"},{title:"PC liên tiếp [1/2]",tags:["nhom12b","midgame","mid-game","pcloop"],category:"pattern",content:"four.lol có hướng dẫn cách làm Perfect Clear liên tiếp. Sau khi hoàn thành PC thứ 7 khi bạn cũng vừa xài đúng 70 gạch (10 túi 7 gạch) nên bạn có thể quay về PC thứ nhất.\\n\\nNhấn nút hình địa cầu để xem setup cho PC thứ nhất (để xem các setup sau, hãy thay 1st trong link bằng 2nd / 3rd / 4th / 5th / 6th / 7th)",link:"https://four.lol/perfect-clears/1st",id:"8ec3440c009d06b37f33a1dcec8641757b6a6611"},{title:"PC liên tiếp [2/2]",tags:["nhom12b","midgame","mid-game","pcloop"],category:"pattern",content:"Một hướng dẫn làm vòng lặp PC hoàn chỉnh được viết bởi NitenTeria.",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"6423ee44f49c51659880da098bedd59569032937"},{title:">C|Donation",tags:["nhom12c","donation","pattern"],category:"",content:'NHÓM 12C: DONATION\\n\\nBiến một hố hoặc một cái giếng (ban đầu được tính để làm Tetris) thành setup T-spin bằng cách \\"cắm thêm gạch vào\\". Sau khi làm T-spin, hố đó sẽ được mở ra để cho phép bạn làm Tetris hoặc làm donation khác. \\"Cắm thêm gạch\\" vào hố hoặc giếng vốn không được tính để làm Tetris thì vẫn có thể gọi là \\"donation\\" như thường.',link:"",id:"01d73bb85a43ecc084a1dadb32d7ac37c99bd19d"},{title:"STMB Cave",tags:["nhom12c","donation","pattern","stmb"],category:"pattern",content:"STMB cave, một setup dạng donation bằng cách sử dụng S / Z để bịt tường rộng 3 ô và làm T-spin Double.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=stmb_cave",id:"e09adc791be46903e0475905ee57d6565b963e80"},{title:"Hamburger",tags:["nhom12c","donation","pattern"],category:"pattern",content:"Một setup dạng donation setup dùng để tạo cơ hội có thể làm Tetris.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=hamburger",id:"a1b3f0e1d4fcb2d33d4c4e4744956be3c3e4e8d6"},{title:"Kaidan",tags:["nhom12c","donation","pattern","kaidan","stairs"],category:"pattern",content:"Một setup dạng donation có thể làm TSD trên địa hình cầu thang.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=kaidan",id:"df668e737e9af15b2d556fb36fba25e0c0f46fd9"},{title:"Shachiku Train",tags:["nhom12c","donation","pattern","shachikutrain","shechu"],category:"pattern",content:"Một setup dạng donation cho phép làm thêm hai TSD từ setup TST.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"dc4327a2f9935348b9ef75ee955fbf97ea92623e"},{title:"Cut Copy",tags:["nhom12c","donation","pattern","cutcopy"],category:"pattern",content:"Một setup dạng donation để làm T-spin Double trên một cái lỗ nhỏ và có thể làm thêm một TSD nữa sau đó.",link:"",id:"5ab976e8a5af8adf031a7c04b88533d46932d182"},{title:"=[NHÓM 13]=",tags:["nhom13"],category:"",content:"NHÓM 13: CÁCH TÍNH TẤN CÔNG",link:"",id:"0cf34b77a992d9444c4b6fb660932ca055b24721"},{title:"Tetris OL attack",tags:["nhom13","top","tetrisonlineattack"],category:"term",content:`[[ -Cách tính tấn công trong Tetris Online - -Đơn / Đôi / Tam / Tetris gửi 0 / 1 / 2 / 4 hàng rác. -T-spin Đơn / Đôi / Tam gửi 2 / 4 / 6 hàng rác, cắt một nửa nếu là Mini. -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:"d7bef2174c7269ecbf8f0cbea4e10124845651bb"},{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:"79b96c49761a8d096dc2d4ff14facb50661df966"},{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"}],bL=ce({__name:"Wrapper",setup(e){const t=C0(),n=N(()=>t.theme==="light"?MI:RI);return(o,r)=>{const i=FE,a=iI,s=W7,l=qE,c=x9;return Ve(),It(c,{theme:Fe(n),class:"h-full"},{default:Se(()=>[pe(l,null,{default:Se(()=>[pe(s,null,{default:Se(()=>[pe(a,null,{default:Se(()=>[pe(i,null,{default:Se(()=>[tg(o.$slots,"default")]),_:3})]),_:3})]),_:3})]),_:3})]),_:3},8,["theme"])}}}),vL={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},yL=Wt("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),xL=[yL],CL=ce({name:"EarthFilled",render:function(t,n){return Ve(),mn("svg",vL,xL)}});function X0(e){return uc()?(Tf(e),!0):!1}function Os(e){return typeof e=="function"?e():Fe(e)}const md=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const kL=Object.prototype.toString,SL=e=>kL.call(e)==="[object Object]",TL=()=>{};function wL(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 _L(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)},Os(t))}return o&&(r.value=!0,md&&l()),X0(s),{isPending:sn(r),start:l,stop:s}}function PL(e){var t;const n=Os(e);return(t=n==null?void 0:n.$el)!=null?t:n}const AL=md?window:void 0,Z0=md?window.navigator:void 0;function Y0(...e){let t,n,o,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,o,r]=e,t=AL):[t,n,o,r]=e,!t)return TL;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=et(()=>[PL(t),Os(r)],([d,u])=>{if(a(),!d)return;const h=SL(u)?{...u}:u;i.push(...n.flatMap(g=>o.map(f=>s(d,g,f,h))))},{immediate:!0,flush:"post"}),c=()=>{l(),a()};return X0(c),c}function EL(){const e=V(!1),t=ln();return t&&$t(()=>{e.value=!0},t),e}function J0(e){const t=EL();return N(()=>(t.value,!!e()))}function ff(e,t={}){const{controls:n=!1,navigator:o=Z0}=t,r=J0(()=>o&&"permissions"in o);let i;const a=typeof e=="string"?{name:e}:e,s=V(),l=()=>{i&&(s.value=i.state)},c=wL(async()=>{if(r.value){if(!i)try{i=await o.permissions.query(a),Y0(i,"change",l),l()}catch{s.value="prompt"}return i}});return c(),n?{state:s,isSupported:r,query:c}:s}function IL(e={}){const{navigator:t=Z0,read:n=!1,source:o,copiedDuring:r=1500,legacy:i=!1}=e,a=J0(()=>t&&"clipboard"in t),s=ff("clipboard-read"),l=ff("clipboard-write"),c=N(()=>a.value||i),d=V(""),u=V(!1),h=_L(()=>u.value=!1,r);function g(){a.value&&m(s.value)?t.clipboard.readText().then(C=>{d.value=C}):d.value=p()}c.value&&n&&Y0(["copy","cut"],g);async function f(C=Os(o)){c.value&&C!=null&&(a.value&&m(l.value)?await t.clipboard.writeText(C):b(C),d.value=C,u.value=!0,h.start())}function b(C){const _=document.createElement("textarea");_.value=C??"",_.style.position="absolute",_.style.opacity="0",document.body.appendChild(_),_.select(),document.execCommand("copy"),_.remove()}function p(){var C,_,y;return(y=(_=(C=document==null?void 0:document.getSelection)==null?void 0:C.call(document))==null?void 0:_.toString())!=null?y:""}function m(C){return C==="granted"||C==="prompt"}return{isSupported:c,text:d,copied:u,copy:f}}const RL=Wt("i",{class:"zChan thinking not-italic text-xl mr-1"},null,-1),rc=ce({__name:"Title",props:{item:{}},setup(e){const t=e,n=N(()=>t.item.title.trim()),o=new RegExp("^tetris","ig"),r=n.value.match(o);return(i,a)=>{const s=ws,l=ka;return i.item.title?Fe(r)?(Ve(),It(l,{key:1},{default:Se(()=>[pe(s,null,{trigger:Se(()=>[RL]),default:Se(()=>[St(" "+An(Fe(r)[0]),1)]),_:1}),St(" "+An(Fe(n).replace(Fe(o),"")),1)]),_:1})):(Ve(),mn(Oe,{key:2},[St(An(i.item.title),1)],64)):(Ve(),mn(Oe,{key:0},[St(" ?")],64))}}}),ML=ce({__name:"DictViewer",props:{item:{}},emits:["tag-click"],setup(e,{emit:t}){const n=e,o=t,r=Fi(),i=XE(),a=N(()=>n.item.content.replace(/\\t/g," ".repeat(4)).replace(/\\n/g,"
")),s=N(()=>new URL(`#${n.item.id}`,location.href).toString());async function l(u){const{copy:h,isSupported:g}=IL({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 $t(()=>{location.replace(s.value)}),(u,h)=>{const g=kI,f=Ul,b=Wa,p=Pb,m=td;return Ve(),It(p,{vertical:""},{default:Se(()=>[pe(g,null,{default:Se(()=>[pe(rc,{item:u.item},null,8,["item"])]),_:1}),pe(f,{class:"whitespace-pre-wrap",innerHTML:Fe(a)},null,8,["innerHTML"]),pe(p,{class:"mt-10 items-end",justify:"space-between"},{default:Se(()=>[pe(p,{size:"small"},{default:Se(()=>[pe(f,null,{default:Se(()=>[St(An(u.$t("tags"))+": ",1)]),_:1}),(Ve(!0),mn(Oe,null,pa(u.item.tags,C=>(Ve(),It(b,{text:"",type:"info",onClick:_=>o("tag-click",C)},{default:Se(()=>[St(An(C),1)]),_:2},1032,["onClick"]))),256))]),_:1}),pe(p,null,{default:Se(()=>[u.item.link?(Ve(),It(b,{key:0,href:u.item.link,tag:"a"},{icon:Se(()=>[pe(m,{component:Fe(CL)},null,8,["component"])]),_:1},8,["href"])):ky("",!0),pe(b,{onClick:h[0]||(h[0]=C=>d(u.item))},{icon:Se(()=>[pe(m,{component:Fe(VI)},null,8,["component"])]),_:1}),pe(b,{onClick:h[1]||(h[1]=C=>c(u.item))},{icon:Se(()=>[pe(m,{component:Fe(oR)},null,8,["component"])]),_:1})]),_:1})]),_:1})]),_:1})}}}),LL=ce({__name:"App",setup(e){const t=C0(),n=[{label:"English",key:"en"},{label:"日本語",key:"ja"},{label:"简体中文",key:"zh"},{label:"Tiếng Việt",key:"vi"}],o=V(),r=V(""),i=N(()=>screen.width<640),a=Fi(),s={en:fL,ja:gL,zh:mL,vi:pL},l=N(()=>s[a.locale.value]);function c(){location.hash.length>1&&(o.value=hS([...s.en,...s.ja,...s.zh],{id:location.hash.substring(1)}))}window.addEventListener("hashchange",()=>{c()}),c();const d=N(()=>{const b=l.value.filter(p=>{const m=r.value.toLowerCase();return[!!p.title.toLowerCase().match(m),p.tags.map(C=>C.toLowerCase()).includes(m)].includes(!0)});return vS(b,"category")});function u(){if(t.theme==="light"){t.theme="dark";return}t.theme="light"}function h(){o.value=void 0,location.replace(new URL(location.pathname,location.href).toString())}function g(b){h(),r.value=b}function f(b){a.locale.value=b}return(b,p)=>{const m=td,C=Wa,_=d7,y=Pb,k=CI,P=n8,v=q7,T=X9,E=A_,L=pE,j=AE,M=RE,K=PE;return Ve(),It(bL,null,{default:Se(()=>[pe(K,{class:"h-full","native-scrollbar":""},{default:Se(()=>[pe(j,{class:"pb-16 h-full mx-2","native-scrollbar":""},{default:Se(()=>[pe(y,{class:"mt-2",justify:"space-between"},{default:Se(()=>[pe(C,{onClick:u},{icon:Se(()=>[pe(m,{component:Fe(t).theme==="light"?Fe(sR):Fe(uR)},null,8,["component"])]),_:1}),pe(_,{options:n,value:b.$i18n.locale,animated:"",trigger:"click",onSelect:f},{default:Se(()=>[pe(C,null,{icon:Se(()=>[pe(m,{component:Fe(ZI)},null,8,["component"])]),_:1})]),_:1},8,["value"])]),_:1}),pe(y,{class:"sm:w-1/3 mx-auto mt-20",vertical:""},{default:Se(()=>[pe(Fe(ka),{class:"text-center"},{default:Se(()=>[pe(k,null,{default:Se(()=>[St(An(b.$t("title")),1)]),_:1}),Fe(o)?(Ve(),It(y,{key:1,justify:"center"},{default:Se(()=>[pe(C,{onClick:h},{default:Se(()=>[St(An(b.$t("back")),1)]),_:1})]),_:1})):(Ve(),It(P,{key:0,value:Fe(r),"onUpdate:value":p[0]||(p[0]=ne=>ht(r)?r.value=ne:null),placeholder:b.$t("search"),clearable:""},null,8,["value","placeholder"]))]),_:1}),pe(v)]),_:1}),pe(y,{size:"large",vertical:""},{default:Se(()=>[Fe(o)?(Ve(),It(Fe(ka),{key:1,class:"sm:w-1/3 mx-auto"},{default:Se(()=>[pe(ML,{item:Fe(o),onTagClick:g},null,8,["item"])]),_:1})):(Ve(),It(y,{key:0,vertical:""},{default:Se(()=>[(Ve(!0),mn(Oe,null,pa(Fe(d),(ne,H)=>(Ve(),It(y,{class:"text-center",vertical:""},{default:Se(()=>[pe(Fe(Ul),{style:Xa({color:Fe(ml)[H]}),class:"font-bold text-2xl",type:"info"},{default:Se(()=>[St(An(H),1)]),_:2},1032,["style"]),Fe(i)?(Ve(),It(L,{key:1,cols:3,"x-gap":10,"y-gap":10,class:"text-center"},{default:Se(()=>[(Ve(!0),mn(Oe,null,pa(ne,U=>(Ve(),It(E,null,{default:Se(()=>[pe(C,{color:Fe(ml)[H],class:"w-full",onClick:F=>o.value=U},{default:Se(()=>[pe(Fe(ws),null,{trigger:Se(()=>[pe(T,null,{default:Se(()=>[pe(rc,{item:U},null,8,["item"])]),_:2},1024)]),default:Se(()=>[St(" "+An(U.title),1)]),_:2},1024)]),_:2},1032,["color","onClick"])]),_:2},1024))),256))]),_:2},1024)):(Ve(),It(y,{key:0,justify:"center"},{default:Se(()=>[(Ve(!0),mn(Oe,null,pa(ne,U=>(Ve(),It(C,{color:Fe(ml)[H],size:"small",onClick:F=>o.value=U},{default:Se(()=>[pe(rc,{item:U},null,8,["item"])]),_:2},1032,["color","onClick"]))),256))]),_:2},1024))]),_:2},1024))),256))]),_:1}))]),_:1})]),_:1}),pe(M,{class:"py-2",position:"absolute"},{default:Se(()=>[pe(y,{size:0,justify:"center"},{default:Se(()=>[pe(Fe(ka),null,{default:Se(()=>[pe(Fe(Ul),null,{default:Se(()=>[St(An(b.$t("maker"))+": ",1)]),_:1}),pe(C,{href:"https://zhazha120.cn",tag:"a",text:"",type:"primary"},{default:Se(()=>[St(" WOSHIZHAZHA120")]),_:1})]),_:1}),pe(v,{vertical:""}),pe(C,{href:"https://github.com/26F-Studio/techmino-online-dict",tag:"a",text:"",type:"primary"},{default:Se(()=>[St(" Github ")]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}});window.addEventListener("load",()=>{const e=c2({render:()=>S(LL)});e.use(uL),e.use(hL),e.mount("#app")})});export default DL(); diff --git a/assets/index-933b2d6b.css b/assets/index-933b2d6b.css deleted file mode 100644 index 8dc9c37..0000000 --- a/assets/index-933b2d6b.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:proportional;src:url(/techmino-online-dict/assets/proportional-f0fa7804.otf)}.zChan.none:before{font-family:proportional;content:"󰀀"}.zChan.normal:before{font-family:proportional;content:"󰀁"}.zChan.full:before{font-family:proportional;content:"󰀂"}.zChan.happy:before{font-family:proportional;content:"󰀃"}.zChan.confused:before{font-family:proportional;content:"󰀄"}.zChan.grinning:before{font-family:proportional;content:"󰀅"}.zChan.frowning:before{font-family:proportional;content:"󰀆"}.zChan.tears:before{font-family:proportional;content:"󰀇"}.zChan.anxious:before{font-family:proportional;content:"󰀈"}.zChan.rage:before{font-family:proportional;content:"󰀉"}.zChan.fear:before{font-family:proportional;content:"󰀊"}.zChan.question:before{font-family:proportional;content:"󰀋"}.zChan.angry:before{font-family:proportional;content:"󰀌"}.zChan.shocked:before{font-family:proportional;content:"󰀍"}.zChan.ellipses:before{font-family:proportional;content:"󰀎"}.zChan.sweat_drop:before{font-family:proportional;content:"󰀏"}.zChan.cry:before{font-family:proportional;content:"󰀐"}.zChan.cracked:before{font-family:proportional;content:"󰀑"}.zChan.qualified:before{font-family:proportional;content:"󰀒"}.zChan.unqualified:before{font-family:proportional;content:"󰀓"}.zChan.understand:before{font-family:proportional;content:"󰀔"}.zChan.thinking:before{font-family:proportional;content:"󰀕"}.zChan.spark:before{font-family:proportional;content:"󰀖"}.mino.Z:before{font-family:proportional;content:"󰁀"}.mino.S:before{font-family:proportional;content:"󰁁"}.mino.J:before{font-family:proportional;content:"󰁂"}.mino.L:before{font-family:proportional;content:"󰁃"}.mino.T:before{font-family:proportional;content:"󰁄"}.mino.O:before{font-family:proportional;content:"󰁅"}.mino.I:before{font-family:proportional;content:"󰁆"}.mino.Z5:before{font-family:proportional;content:"󰁇"}.mino.S5:before{font-family:proportional;content:"󰁈"}.mino.P:before{font-family:proportional;content:"󰁉"}.mino.Q:before{font-family:proportional;content:"󰁊"}.mino.F:before{font-family:proportional;content:"󰁋"}.mino.E:before{font-family:proportional;content:"󰁌"}.mino.T5:before{font-family:proportional;content:"󰁍"}.mino.U:before{font-family:proportional;content:"󰁎"}.mino.V:before{font-family:proportional;content:"󰁏"}.mino.W:before{font-family:proportional;content:"󰁐"}.mino.X:before{font-family:proportional;content:"󰁑"}.mino.J5:before{font-family:proportional;content:"󰁒"}.mino.L5:before{font-family:proportional;content:"󰁓"}.mino.R:before{font-family:proportional;content:"󰁔"}.mino.Y:before{font-family:proportional;content:"󰁕"}.mino.N:before{font-family:proportional;content:"󰁖"}.mino.H:before{font-family:proportional;content:"󰁗"}.mino.I5:before{font-family:proportional;content:"󰁘"}.mino.I3:before{font-family:proportional;content:"󰁙"}.mino.C:before{font-family:proportional;content:"󰁚"}.mino.I2:before{font-family:proportional;content:"󰁛"}.mino.O1:before{font-family:proportional;content:"󰁜"}.icon.menu:before{font-family:proportional;content:"󰂀"}.icon.music:before{font-family:proportional;content:"󰂁"}.icon.language:before{font-family:proportional;content:"󰂂"}.icon.back:before{font-family:proportional;content:"󰂃"}.icon.play_pause:before{font-family:proportional;content:"󰂄"}.icon.info:before{font-family:proportional;content:"󰂅"}.icon.help:before{font-family:proportional;content:"󰂆"}.icon.mute:before{font-family:proportional;content:"󰂇"}.icon.volume_up:before{font-family:proportional;content:"󰂈"}.icon.volume_down:before{font-family:proportional;content:"󰂉"}.icon.retry_spin:before{font-family:proportional;content:"󰂊"}.icon.filledLogo:before{font-family:proportional;content:"󰂋"}.icon.hollowLogo:before{font-family:proportional;content:"󰂌"}.icon.toUp:before{font-family:proportional;content:"󰂍"}.icon.toDown:before{font-family:proportional;content:"󰂎"}.icon.toLeft:before{font-family:proportional;content:"󰂏"}.icon.toRight:before{font-family:proportional;content:"󰂐"}.icon.checkMark:before{font-family:proportional;content:"󰂑"}.icon.crossMark:before{font-family:proportional;content:"󰂒"}.icon.musicMark:before{font-family:proportional;content:"󰂓"}.icon.infoMark:before{font-family:proportional;content:"󰂔"}.icon.warnMark:before{font-family:proportional;content:"󰂕"}.icon.console:before{font-family:proportional;content:"󰂖"}.icon.globe:before{font-family:proportional;content:"󰂗"}.icon.video_camera:before{font-family:proportional;content:"󰂘"}.icon.settings:before{font-family:proportional;content:"󰂙"}.icon.mrz:before{font-family:proportional;content:"󰂚"}.icon.apple:before{font-family:proportional;content:"󰂛"}.icon.home:before{font-family:proportional;content:"󰂜"}.icon.cross_thick:before{font-family:proportional;content:"󰂝"}.icon.num0InSpin:before{font-family:proportional;content:"󰂞"}.icon.num1InSpin:before{font-family:proportional;content:"󰂟"}.icon.num2InSpin:before{font-family:proportional;content:"󰂠"}.icon.num3InSpin:before{font-family:proportional;content:"󰂡"}.icon.num4InSpin:before{font-family:proportional;content:"󰂢"}.icon.play:before{font-family:proportional;content:"󰂣"}.icon.pause:before{font-family:proportional;content:"󰂤"}.icon.nextFrame:before{font-family:proportional;content:"󰂥"}.icon.yen:before{font-family:proportional;content:"󰂦"}.icon.dollar:before{font-family:proportional;content:"󰂧"}.icon.euro:before{font-family:proportional;content:"󰂨"}.icon.pound:before{font-family:proportional;content:"󰂩"}.icon.bitcoin:before{font-family:proportional;content:"󰂪"}.icon.onebag:before{font-family:proportional;content:"󰂫"}.icon.export:before{font-family:proportional;content:"󰂬"}.icon.import:before{font-family:proportional;content:"󰂭"}.icon.trash:before{font-family:proportional;content:"󰂮"}.icon.loadOne:before{font-family:proportional;content:"󰂯"}.icon.saveOne:before{font-family:proportional;content:"󰂰"}.icon.loadTwo:before{font-family:proportional;content:"󰂱"}.icon.saveTwo:before{font-family:proportional;content:"󰂲"}.icon.zBook:before{font-family:proportional;content:"󰂳"}.icon.rankX:before{font-family:proportional;content:"󰂴"}.icon.rankU:before{font-family:proportional;content:"󰂵"}.icon.rankA:before{font-family:proportional;content:"󰂶"}.icon.rankB:before{font-family:proportional;content:"󰂷"}.icon.rankC:before{font-family:proportional;content:"󰂸"}.icon.rankD:before{font-family:proportional;content:"󰂹"}.icon.rankE:before{font-family:proportional;content:"󰂺"}.icon.rankF:before{font-family:proportional;content:"󰂻"}.icon.rankZ:before{font-family:proportional;content:"󰂼"}.icon.rankS:before{font-family:proportional;content:"󰃂"}.icon.speedOneEights:before{font-family:proportional;content:"󰂽"}.icon.speedOneHalf:before{font-family:proportional;content:"󰂾"}.icon.speedOne:before{font-family:proportional;content:"󰂿"}.icon.speedTwo:before{font-family:proportional;content:"󰃀"}.icon.speedFive:before{font-family:proportional;content:"󰃁"}.icon.bone:before{font-family:proportional;content:"󰃃"}.icon.invis:before{font-family:proportional;content:"󰃄"}.icon.bomb:before{font-family:proportional;content:"󰃅"}.icon.garbage:before{font-family:proportional;content:"󰃆"}.icon.copy:before{font-family:proportional;content:"󰃇"}.key.macCmd:before{font-family:proportional;content:"󰄀"}.key.macOpt:before{font-family:proportional;content:"󰄁"}.key.macCtrl:before{font-family:proportional;content:"󰄂"}.key.shift:before{font-family:proportional;content:"󰄃"}.key.capsLock:before{font-family:proportional;content:"󰄄"}.key.enter_or_return:before{font-family:proportional;content:"󰄅"}.key.backspace:before{font-family:proportional;content:"󰄆"}.key.clear:before{font-family:proportional;content:"󰄇"}.key.macFowardDel:before{font-family:proportional;content:"󰄈"}.key.macEsc:before{font-family:proportional;content:"󰄉"}.key.macTab:before{font-family:proportional;content:"󰄊"}.key.fn:before{font-family:proportional;content:"󰄋"}.key.macHome:before{font-family:proportional;content:"󰄌"}.key.macEnd:before{font-family:proportional;content:"󰄍"}.key.macPgup:before{font-family:proportional;content:"󰄎"}.key.macPgdn:before{font-family:proportional;content:"󰄏"}.key.macEnter:before{font-family:proportional;content:"󰄐"}.key.space:before{font-family:proportional;content:"󰄑"}.key.windows:before{font-family:proportional;content:"󰄒"}.key.alt:before{font-family:proportional;content:"󰄓"}.key.ctrl:before{font-family:proportional;content:"󰄔"}.key.winMenu:before{font-family:proportional;content:"󰄕"}.key.tab:before{font-family:proportional;content:"󰄖"}.key.esc:before{font-family:proportional;content:"󰄗"}.key.up:before{font-family:proportional;content:"󰄘"}.key.down:before{font-family:proportional;content:"󰄙"}.key.left:before{font-family:proportional;content:"󰄚"}.key.right:before{font-family:proportional;content:"󰄛"}.key.del:before{font-family:proportional;content:"󰄜"}.key.enterText:before{font-family:proportional;content:"󰄝"}.key.keyboard:before{font-family:proportional;content:"󰄞"}.key.macMediaEject:before{font-family:proportional;content:"󰄟"}.key.isoCtrl:before{font-family:proportional;content:"󰄠"}.key.isoAlt:before{font-family:proportional;content:"󰄡"}.key.macHomeAlt:before{font-family:proportional;content:"󰄢"}.key.macEndAlt:before{font-family:proportional;content:"󰄣"}.key.macPgupAlt:before{font-family:proportional;content:"󰄤"}.key.macPgdnAlt:before{font-family:proportional;content:"󰄥"}.key.iecPower:before{font-family:proportional;content:"󰄦"}.controller.xbox:before{font-family:proportional;content:"󰆀"}.controller.lt:before{font-family:proportional;content:"󰆁"}.controller.rt:before{font-family:proportional;content:"󰆂"}.controller.lb:before{font-family:proportional;content:"󰆃"}.controller.rb:before{font-family:proportional;content:"󰆄"}.controller.xboxX:before{font-family:proportional;content:"󰆅"}.controller.xboxY:before{font-family:proportional;content:"󰆆"}.controller.xboxA:before{font-family:proportional;content:"󰆇"}.controller.xboxB:before{font-family:proportional;content:"󰆈"}.controller.joystickL:before{font-family:proportional;content:"󰆉"}.controller.joystickR:before{font-family:proportional;content:"󰆊"}.controller.jsLU:before{font-family:proportional;content:"󰆋"}.controller.jsLD:before{font-family:proportional;content:"󰆌"}.controller.jsLL:before{font-family:proportional;content:"󰆍"}.controller.jsLR:before{font-family:proportional;content:"󰆎"}.controller.jsRU:before{font-family:proportional;content:"󰆏"}.controller.jsRD:before{font-family:proportional;content:"󰆐"}.controller.jsRL:before{font-family:proportional;content:"󰆑"}.controller.jsRR:before{font-family:proportional;content:"󰆒"}.controller.jsLPress:before{font-family:proportional;content:"󰆓"}.controller.jsRPress:before{font-family:proportional;content:"󰆔"}.controller.dpad:before{font-family:proportional;content:"󰆕"}.controller.dpadU:before{font-family:proportional;content:"󰆖"}.controller.dpadD:before{font-family:proportional;content:"󰆗"}.controller.dpadL:before{font-family:proportional;content:"󰆘"}.controller.dpadR:before{font-family:proportional;content:"󰆙"}.controller.xboxView:before{font-family:proportional;content:"󰆚"}.controller.xboxMenu:before{font-family:proportional;content:"󰆛"}.controller.xboxShare:before{font-family:proportional;content:"󰆜"}.controller.xboxConnect:before{font-family:proportional;content:"󰆝"}.controller.ps:before{font-family:proportional;content:"󰆞"}.controller.psTriangle:before{font-family:proportional;content:"󰆟"}.controller.psCircle:before{font-family:proportional;content:"󰆠"}.controller.psCross:before{font-family:proportional;content:"󰆡"}.controller.psSquare:before{font-family:proportional;content:"󰆢"}.controller.psMute:before{font-family:proportional;content:"󰆣"}.controller.psCreate:before{font-family:proportional;content:"󰆤"}.controller.psOption:before{font-family:proportional;content:"󰆥"}.mahjong.m1:before{font-family:proportional;content:"󰈀"}.mahjong.m2:before{font-family:proportional;content:"󰈁"}.mahjong.m3:before{font-family:proportional;content:"󰈂"}.mahjong.m4:before{font-family:proportional;content:"󰈃"}.mahjong.m5:before{font-family:proportional;content:"󰈄"}.mahjong.m6:before{font-family:proportional;content:"󰈅"}.mahjong.m7:before{font-family:proportional;content:"󰈆"}.mahjong.m8:before{font-family:proportional;content:"󰈇"}.mahjong.m9:before{font-family:proportional;content:"󰈈"}.mahjong.s1:before{font-family:proportional;content:"󰈉"}.mahjong.s2:before{font-family:proportional;content:"󰈊"}.mahjong.s3:before{font-family:proportional;content:"󰈋"}.mahjong.s4:before{font-family:proportional;content:"󰈌"}.mahjong.s5:before{font-family:proportional;content:"󰈍"}.mahjong.s6:before{font-family:proportional;content:"󰈎"}.mahjong.s7:before{font-family:proportional;content:"󰈏"}.mahjong.s8:before{font-family:proportional;content:"󰈐"}.mahjong.s9:before{font-family:proportional;content:"󰈑"}.mahjong.p1:before{font-family:proportional;content:"󰈒"}.mahjong.p2:before{font-family:proportional;content:"󰈓"}.mahjong.p3:before{font-family:proportional;content:"󰈔"}.mahjong.p4:before{font-family:proportional;content:"󰈕"}.mahjong.p5:before{font-family:proportional;content:"󰈖"}.mahjong.p6:before{font-family:proportional;content:"󰈗"}.mahjong.p7:before{font-family:proportional;content:"󰈘"}.mahjong.p8:before{font-family:proportional;content:"󰈙"}.mahjong.p9:before{font-family:proportional;content:"󰈚"}.mahjong.ton:before{font-family:proportional;content:"󰈛"}.mahjong.nan:before{font-family:proportional;content:"󰈜"}.mahjong.sha:before{font-family:proportional;content:"󰈝"}.mahjong.pe:before{font-family:proportional;content:"󰈞"}.mahjong.chun:before{font-family:proportional;content:"󰈟"}.mahjong.hatsu:before{font-family:proportional;content:"󰈠"}.mahjong.haku:before{font-family:proportional;content:"󰈡"}.mahjong.hatsuAlt:before{font-family:proportional;content:"󰈢"}.mahjong.hakuAlt:before{font-family:proportional;content:"󰈣"}.mahjong.haru:before{font-family:proportional;content:"󰈤"}.mahjong.natsu:before{font-family:proportional;content:"󰈥"}.mahjong.aki:before{font-family:proportional;content:"󰈦"}.mahjong.fuyu:before{font-family:proportional;content:"󰈧"}.mahjong.ume:before{font-family:proportional;content:"󰈨"}.mahjong.ran:before{font-family:proportional;content:"󰈩"}.mahjong.kiku:before{font-family:proportional;content:"󰈪"}.mahjong.take:before{font-family:proportional;content:"󰈫"}.mahjong.m5Red:before{font-family:proportional;content:"󰈬"}.mahjong.s5Red:before{font-family:proportional;content:"󰈭"}.mahjong.p5Red:before{font-family:proportional;content:"󰈮"}.mahjong.m1Base:before{font-family:proportional;content:"󰈯"}.mahjong.m2Base:before{font-family:proportional;content:"󰈰"}.mahjong.m3Base:before{font-family:proportional;content:"󰈱"}.mahjong.m4Base:before{font-family:proportional;content:"󰈲"}.mahjong.m5Base:before{font-family:proportional;content:"󰈳"}.mahjong.m6Base:before{font-family:proportional;content:"󰈴"}.mahjong.m7Base:before{font-family:proportional;content:"󰈵"}.mahjong.m8Base:before{font-family:proportional;content:"󰈶"}.mahjong.m9Base:before{font-family:proportional;content:"󰈷"}.mahjong.mComb:before{font-family:proportional;content:"󰈸"}.mahjong.s1Base:before{font-family:proportional;content:"󰈹"}.mahjong.s1Comb:before{font-family:proportional;content:"󰈺"}.mahjong.s5Base:before{font-family:proportional;content:"󰈻"}.mahjong.s5Comb:before{font-family:proportional;content:"󰈼"}.mahjong.s7Base:before{font-family:proportional;content:"󰈽"}.mahjong.s7Comb:before{font-family:proportional;content:"󰈾"}.mahjong.s9Base:before{font-family:proportional;content:"󰈿"}.mahjong.s9Comb:before{font-family:proportional;content:"󰉀"}.mahjong.p2Base:before{font-family:proportional;content:"󰉁"}.mahjong.p2Comb:before{font-family:proportional;content:"󰉂"}.mahjong.p3Base:before{font-family:proportional;content:"󰉃"}.mahjong.p3Comb1:before{font-family:proportional;content:"󰉄"}.mahjong.p3Comb2:before{font-family:proportional;content:"󰉅"}.mahjong.p4Base:before{font-family:proportional;content:"󰉆"}.mahjong.p4Comb:before{font-family:proportional;content:"󰉇"}.mahjong.p5Base:before{font-family:proportional;content:"󰉈"}.mahjong.p5Comb1:before{font-family:proportional;content:"󰉉"}.mahjong.p5Comb2:before{font-family:proportional;content:"󰉊"}.mahjong.p6Base:before{font-family:proportional;content:"󰉋"}.mahjong.p6Comb:before{font-family:proportional;content:"󰉌"}.mahjong.p7Base:before{font-family:proportional;content:"󰉍"}.mahjong.p7Comb:before{font-family:proportional;content:"󰉎"}.mahjong.p9Base:before{font-family:proportional;content:"󰉏"}.mahjong.p9Comb1:before{font-family:proportional;content:"󰉐"}.mahjong.p9Comb2:before{font-family:proportional;content:"󰉑"}.mahjong.frameComb:before{font-family:proportional;content:"󰉒"}.mahjong.s1j:before{font-family:proportional;content:"󰉓"}.mahjong.s1jBase:before{font-family:proportional;content:"󰉔"}.mahjong.s1jComb:before{font-family:proportional;content:"󰉕"}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.absolute{position:absolute}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mr-1{margin-right:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.h-full{height:100%}.w-full{width:100%}.items-end{align-items:flex-end}.whitespace-pre-wrap{white-space:pre-wrap}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-16{padding-bottom:4rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.not-italic{font-style:normal}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@layer{html,body,#app{margin:0;height:100%;width:100%;padding:0;font-family:Harmony Sans SC,Harmony Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji",proportional}}@media (min-width: 640px){.sm\:w-1\/3{width:33.333333%}} diff --git a/assets/index-C5Qhmvz8.css b/assets/index-C5Qhmvz8.css new file mode 100644 index 0000000..9a4dbdc --- /dev/null +++ b/assets/index-C5Qhmvz8.css @@ -0,0 +1 @@ +*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.absolute{position:absolute}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mr-1{margin-right:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.h-full{height:100%}.w-full{width:100%}.items-end{align-items:flex-end}.whitespace-pre-wrap{white-space:pre-wrap}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-16{padding-bottom:4rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.not-italic{font-style:normal}@media (min-width: 640px){.sm\:w-1\/3{width:33.3333333333%}}@font-face{font-family:proportional;src:url(/techmino-online-dict/assets/proportional-DqX3ed1n.otf)}.zChan.none:before{font-family:proportional;content:"󰀀"}.zChan.normal:before{font-family:proportional;content:"󰀁"}.zChan.full:before{font-family:proportional;content:"󰀂"}.zChan.happy:before{font-family:proportional;content:"󰀃"}.zChan.confused:before{font-family:proportional;content:"󰀄"}.zChan.grinning:before{font-family:proportional;content:"󰀅"}.zChan.frowning:before{font-family:proportional;content:"󰀆"}.zChan.tears:before{font-family:proportional;content:"󰀇"}.zChan.anxious:before{font-family:proportional;content:"󰀈"}.zChan.rage:before{font-family:proportional;content:"󰀉"}.zChan.fear:before{font-family:proportional;content:"󰀊"}.zChan.question:before{font-family:proportional;content:"󰀋"}.zChan.angry:before{font-family:proportional;content:"󰀌"}.zChan.shocked:before{font-family:proportional;content:"󰀍"}.zChan.ellipses:before{font-family:proportional;content:"󰀎"}.zChan.sweat_drop:before{font-family:proportional;content:"󰀏"}.zChan.cry:before{font-family:proportional;content:"󰀐"}.zChan.cracked:before{font-family:proportional;content:"󰀑"}.zChan.qualified:before{font-family:proportional;content:"󰀒"}.zChan.unqualified:before{font-family:proportional;content:"󰀓"}.zChan.understand:before{font-family:proportional;content:"󰀔"}.zChan.thinking:before{font-family:proportional;content:"󰀕"}.zChan.spark:before{font-family:proportional;content:"󰀖"}.mino.Z:before{font-family:proportional;content:"󰁀"}.mino.S:before{font-family:proportional;content:"󰁁"}.mino.J:before{font-family:proportional;content:"󰁂"}.mino.L:before{font-family:proportional;content:"󰁃"}.mino.T:before{font-family:proportional;content:"󰁄"}.mino.O:before{font-family:proportional;content:"󰁅"}.mino.I:before{font-family:proportional;content:"󰁆"}.mino.Z5:before{font-family:proportional;content:"󰁇"}.mino.S5:before{font-family:proportional;content:"󰁈"}.mino.P:before{font-family:proportional;content:"󰁉"}.mino.Q:before{font-family:proportional;content:"󰁊"}.mino.F:before{font-family:proportional;content:"󰁋"}.mino.E:before{font-family:proportional;content:"󰁌"}.mino.T5:before{font-family:proportional;content:"󰁍"}.mino.U:before{font-family:proportional;content:"󰁎"}.mino.V:before{font-family:proportional;content:"󰁏"}.mino.W:before{font-family:proportional;content:"󰁐"}.mino.X:before{font-family:proportional;content:"󰁑"}.mino.J5:before{font-family:proportional;content:"󰁒"}.mino.L5:before{font-family:proportional;content:"󰁓"}.mino.R:before{font-family:proportional;content:"󰁔"}.mino.Y:before{font-family:proportional;content:"󰁕"}.mino.N:before{font-family:proportional;content:"󰁖"}.mino.H:before{font-family:proportional;content:"󰁗"}.mino.I5:before{font-family:proportional;content:"󰁘"}.mino.I3:before{font-family:proportional;content:"󰁙"}.mino.C:before{font-family:proportional;content:"󰁚"}.mino.I2:before{font-family:proportional;content:"󰁛"}.mino.O1:before{font-family:proportional;content:"󰁜"}.icon.menu:before{font-family:proportional;content:"󰂀"}.icon.music:before{font-family:proportional;content:"󰂁"}.icon.language:before{font-family:proportional;content:"󰂂"}.icon.back:before{font-family:proportional;content:"󰂃"}.icon.play_pause:before{font-family:proportional;content:"󰂄"}.icon.info:before{font-family:proportional;content:"󰂅"}.icon.help:before{font-family:proportional;content:"󰂆"}.icon.mute:before{font-family:proportional;content:"󰂇"}.icon.volume_up:before{font-family:proportional;content:"󰂈"}.icon.volume_down:before{font-family:proportional;content:"󰂉"}.icon.retry_spin:before{font-family:proportional;content:"󰂊"}.icon.filledLogo:before{font-family:proportional;content:"󰂋"}.icon.hollowLogo:before{font-family:proportional;content:"󰂌"}.icon.toUp:before{font-family:proportional;content:"󰂍"}.icon.toDown:before{font-family:proportional;content:"󰂎"}.icon.toLeft:before{font-family:proportional;content:"󰂏"}.icon.toRight:before{font-family:proportional;content:"󰂐"}.icon.checkMark:before{font-family:proportional;content:"󰂑"}.icon.crossMark:before{font-family:proportional;content:"󰂒"}.icon.musicMark:before{font-family:proportional;content:"󰂓"}.icon.infoMark:before{font-family:proportional;content:"󰂔"}.icon.warnMark:before{font-family:proportional;content:"󰂕"}.icon.console:before{font-family:proportional;content:"󰂖"}.icon.globe:before{font-family:proportional;content:"󰂗"}.icon.video_camera:before{font-family:proportional;content:"󰂘"}.icon.settings:before{font-family:proportional;content:"󰂙"}.icon.mrz:before{font-family:proportional;content:"󰂚"}.icon.apple:before{font-family:proportional;content:"󰂛"}.icon.home:before{font-family:proportional;content:"󰂜"}.icon.cross_thick:before{font-family:proportional;content:"󰂝"}.icon.num0InSpin:before{font-family:proportional;content:"󰂞"}.icon.num1InSpin:before{font-family:proportional;content:"󰂟"}.icon.num2InSpin:before{font-family:proportional;content:"󰂠"}.icon.num3InSpin:before{font-family:proportional;content:"󰂡"}.icon.num4InSpin:before{font-family:proportional;content:"󰂢"}.icon.play:before{font-family:proportional;content:"󰂣"}.icon.pause:before{font-family:proportional;content:"󰂤"}.icon.nextFrame:before{font-family:proportional;content:"󰂥"}.icon.yen:before{font-family:proportional;content:"󰂦"}.icon.dollar:before{font-family:proportional;content:"󰂧"}.icon.euro:before{font-family:proportional;content:"󰂨"}.icon.pound:before{font-family:proportional;content:"󰂩"}.icon.bitcoin:before{font-family:proportional;content:"󰂪"}.icon.onebag:before{font-family:proportional;content:"󰂫"}.icon.export:before{font-family:proportional;content:"󰂬"}.icon.import:before{font-family:proportional;content:"󰂭"}.icon.trash:before{font-family:proportional;content:"󰂮"}.icon.loadOne:before{font-family:proportional;content:"󰂯"}.icon.saveOne:before{font-family:proportional;content:"󰂰"}.icon.loadTwo:before{font-family:proportional;content:"󰂱"}.icon.saveTwo:before{font-family:proportional;content:"󰂲"}.icon.zBook:before{font-family:proportional;content:"󰂳"}.icon.rankX:before{font-family:proportional;content:"󰂴"}.icon.rankU:before{font-family:proportional;content:"󰂵"}.icon.rankA:before{font-family:proportional;content:"󰂶"}.icon.rankB:before{font-family:proportional;content:"󰂷"}.icon.rankC:before{font-family:proportional;content:"󰂸"}.icon.rankD:before{font-family:proportional;content:"󰂹"}.icon.rankE:before{font-family:proportional;content:"󰂺"}.icon.rankF:before{font-family:proportional;content:"󰂻"}.icon.rankZ:before{font-family:proportional;content:"󰂼"}.icon.rankS:before{font-family:proportional;content:"󰃂"}.icon.speedOneEights:before{font-family:proportional;content:"󰂽"}.icon.speedOneHalf:before{font-family:proportional;content:"󰂾"}.icon.speedOne:before{font-family:proportional;content:"󰂿"}.icon.speedTwo:before{font-family:proportional;content:"󰃀"}.icon.speedFive:before{font-family:proportional;content:"󰃁"}.icon.bone:before{font-family:proportional;content:"󰃃"}.icon.invis:before{font-family:proportional;content:"󰃄"}.icon.bomb:before{font-family:proportional;content:"󰃅"}.icon.garbage:before{font-family:proportional;content:"󰃆"}.icon.copy:before{font-family:proportional;content:"󰃇"}.key.macCmd:before{font-family:proportional;content:"󰄀"}.key.macOpt:before{font-family:proportional;content:"󰄁"}.key.macCtrl:before{font-family:proportional;content:"󰄂"}.key.shift:before{font-family:proportional;content:"󰄃"}.key.capsLock:before{font-family:proportional;content:"󰄄"}.key.enter_or_return:before{font-family:proportional;content:"󰄅"}.key.backspace:before{font-family:proportional;content:"󰄆"}.key.clear:before{font-family:proportional;content:"󰄇"}.key.macFowardDel:before{font-family:proportional;content:"󰄈"}.key.macEsc:before{font-family:proportional;content:"󰄉"}.key.macTab:before{font-family:proportional;content:"󰄊"}.key.fn:before{font-family:proportional;content:"󰄋"}.key.macHome:before{font-family:proportional;content:"󰄌"}.key.macEnd:before{font-family:proportional;content:"󰄍"}.key.macPgup:before{font-family:proportional;content:"󰄎"}.key.macPgdn:before{font-family:proportional;content:"󰄏"}.key.macEnter:before{font-family:proportional;content:"󰄐"}.key.space:before{font-family:proportional;content:"󰄑"}.key.windows:before{font-family:proportional;content:"󰄒"}.key.alt:before{font-family:proportional;content:"󰄓"}.key.ctrl:before{font-family:proportional;content:"󰄔"}.key.winMenu:before{font-family:proportional;content:"󰄕"}.key.tab:before{font-family:proportional;content:"󰄖"}.key.esc:before{font-family:proportional;content:"󰄗"}.key.up:before{font-family:proportional;content:"󰄘"}.key.down:before{font-family:proportional;content:"󰄙"}.key.left:before{font-family:proportional;content:"󰄚"}.key.right:before{font-family:proportional;content:"󰄛"}.key.del:before{font-family:proportional;content:"󰄜"}.key.enterText:before{font-family:proportional;content:"󰄝"}.key.keyboard:before{font-family:proportional;content:"󰄞"}.key.macMediaEject:before{font-family:proportional;content:"󰄟"}.key.isoCtrl:before{font-family:proportional;content:"󰄠"}.key.isoAlt:before{font-family:proportional;content:"󰄡"}.key.macHomeAlt:before{font-family:proportional;content:"󰄢"}.key.macEndAlt:before{font-family:proportional;content:"󰄣"}.key.macPgupAlt:before{font-family:proportional;content:"󰄤"}.key.macPgdnAlt:before{font-family:proportional;content:"󰄥"}.key.iecPower:before{font-family:proportional;content:"󰄦"}.controller.xbox:before{font-family:proportional;content:"󰆀"}.controller.lt:before{font-family:proportional;content:"󰆁"}.controller.rt:before{font-family:proportional;content:"󰆂"}.controller.lb:before{font-family:proportional;content:"󰆃"}.controller.rb:before{font-family:proportional;content:"󰆄"}.controller.xboxX:before{font-family:proportional;content:"󰆅"}.controller.xboxY:before{font-family:proportional;content:"󰆆"}.controller.xboxA:before{font-family:proportional;content:"󰆇"}.controller.xboxB:before{font-family:proportional;content:"󰆈"}.controller.joystickL:before{font-family:proportional;content:"󰆉"}.controller.joystickR:before{font-family:proportional;content:"󰆊"}.controller.jsLU:before{font-family:proportional;content:"󰆋"}.controller.jsLD:before{font-family:proportional;content:"󰆌"}.controller.jsLL:before{font-family:proportional;content:"󰆍"}.controller.jsLR:before{font-family:proportional;content:"󰆎"}.controller.jsRU:before{font-family:proportional;content:"󰆏"}.controller.jsRD:before{font-family:proportional;content:"󰆐"}.controller.jsRL:before{font-family:proportional;content:"󰆑"}.controller.jsRR:before{font-family:proportional;content:"󰆒"}.controller.jsLPress:before{font-family:proportional;content:"󰆓"}.controller.jsRPress:before{font-family:proportional;content:"󰆔"}.controller.dpad:before{font-family:proportional;content:"󰆕"}.controller.dpadU:before{font-family:proportional;content:"󰆖"}.controller.dpadD:before{font-family:proportional;content:"󰆗"}.controller.dpadL:before{font-family:proportional;content:"󰆘"}.controller.dpadR:before{font-family:proportional;content:"󰆙"}.controller.xboxView:before{font-family:proportional;content:"󰆚"}.controller.xboxMenu:before{font-family:proportional;content:"󰆛"}.controller.xboxShare:before{font-family:proportional;content:"󰆜"}.controller.xboxConnect:before{font-family:proportional;content:"󰆝"}.controller.ps:before{font-family:proportional;content:"󰆞"}.controller.psTriangle:before{font-family:proportional;content:"󰆟"}.controller.psCircle:before{font-family:proportional;content:"󰆠"}.controller.psCross:before{font-family:proportional;content:"󰆡"}.controller.psSquare:before{font-family:proportional;content:"󰆢"}.controller.psMute:before{font-family:proportional;content:"󰆣"}.controller.psCreate:before{font-family:proportional;content:"󰆤"}.controller.psOption:before{font-family:proportional;content:"󰆥"}.mahjong.m1:before{font-family:proportional;content:"󰈀"}.mahjong.m2:before{font-family:proportional;content:"󰈁"}.mahjong.m3:before{font-family:proportional;content:"󰈂"}.mahjong.m4:before{font-family:proportional;content:"󰈃"}.mahjong.m5:before{font-family:proportional;content:"󰈄"}.mahjong.m6:before{font-family:proportional;content:"󰈅"}.mahjong.m7:before{font-family:proportional;content:"󰈆"}.mahjong.m8:before{font-family:proportional;content:"󰈇"}.mahjong.m9:before{font-family:proportional;content:"󰈈"}.mahjong.s1:before{font-family:proportional;content:"󰈉"}.mahjong.s2:before{font-family:proportional;content:"󰈊"}.mahjong.s3:before{font-family:proportional;content:"󰈋"}.mahjong.s4:before{font-family:proportional;content:"󰈌"}.mahjong.s5:before{font-family:proportional;content:"󰈍"}.mahjong.s6:before{font-family:proportional;content:"󰈎"}.mahjong.s7:before{font-family:proportional;content:"󰈏"}.mahjong.s8:before{font-family:proportional;content:"󰈐"}.mahjong.s9:before{font-family:proportional;content:"󰈑"}.mahjong.p1:before{font-family:proportional;content:"󰈒"}.mahjong.p2:before{font-family:proportional;content:"󰈓"}.mahjong.p3:before{font-family:proportional;content:"󰈔"}.mahjong.p4:before{font-family:proportional;content:"󰈕"}.mahjong.p5:before{font-family:proportional;content:"󰈖"}.mahjong.p6:before{font-family:proportional;content:"󰈗"}.mahjong.p7:before{font-family:proportional;content:"󰈘"}.mahjong.p8:before{font-family:proportional;content:"󰈙"}.mahjong.p9:before{font-family:proportional;content:"󰈚"}.mahjong.ton:before{font-family:proportional;content:"󰈛"}.mahjong.nan:before{font-family:proportional;content:"󰈜"}.mahjong.sha:before{font-family:proportional;content:"󰈝"}.mahjong.pe:before{font-family:proportional;content:"󰈞"}.mahjong.chun:before{font-family:proportional;content:"󰈟"}.mahjong.hatsu:before{font-family:proportional;content:"󰈠"}.mahjong.haku:before{font-family:proportional;content:"󰈡"}.mahjong.hatsuAlt:before{font-family:proportional;content:"󰈢"}.mahjong.hakuAlt:before{font-family:proportional;content:"󰈣"}.mahjong.haru:before{font-family:proportional;content:"󰈤"}.mahjong.natsu:before{font-family:proportional;content:"󰈥"}.mahjong.aki:before{font-family:proportional;content:"󰈦"}.mahjong.fuyu:before{font-family:proportional;content:"󰈧"}.mahjong.ume:before{font-family:proportional;content:"󰈨"}.mahjong.ran:before{font-family:proportional;content:"󰈩"}.mahjong.kiku:before{font-family:proportional;content:"󰈪"}.mahjong.take:before{font-family:proportional;content:"󰈫"}.mahjong.m5Red:before{font-family:proportional;content:"󰈬"}.mahjong.s5Red:before{font-family:proportional;content:"󰈭"}.mahjong.p5Red:before{font-family:proportional;content:"󰈮"}.mahjong.m1Base:before{font-family:proportional;content:"󰈯"}.mahjong.m2Base:before{font-family:proportional;content:"󰈰"}.mahjong.m3Base:before{font-family:proportional;content:"󰈱"}.mahjong.m4Base:before{font-family:proportional;content:"󰈲"}.mahjong.m5Base:before{font-family:proportional;content:"󰈳"}.mahjong.m6Base:before{font-family:proportional;content:"󰈴"}.mahjong.m7Base:before{font-family:proportional;content:"󰈵"}.mahjong.m8Base:before{font-family:proportional;content:"󰈶"}.mahjong.m9Base:before{font-family:proportional;content:"󰈷"}.mahjong.mComb:before{font-family:proportional;content:"󰈸"}.mahjong.s1Base:before{font-family:proportional;content:"󰈹"}.mahjong.s1Comb:before{font-family:proportional;content:"󰈺"}.mahjong.s5Base:before{font-family:proportional;content:"󰈻"}.mahjong.s5Comb:before{font-family:proportional;content:"󰈼"}.mahjong.s7Base:before{font-family:proportional;content:"󰈽"}.mahjong.s7Comb:before{font-family:proportional;content:"󰈾"}.mahjong.s9Base:before{font-family:proportional;content:"󰈿"}.mahjong.s9Comb:before{font-family:proportional;content:"󰉀"}.mahjong.p2Base:before{font-family:proportional;content:"󰉁"}.mahjong.p2Comb:before{font-family:proportional;content:"󰉂"}.mahjong.p3Base:before{font-family:proportional;content:"󰉃"}.mahjong.p3Comb1:before{font-family:proportional;content:"󰉄"}.mahjong.p3Comb2:before{font-family:proportional;content:"󰉅"}.mahjong.p4Base:before{font-family:proportional;content:"󰉆"}.mahjong.p4Comb:before{font-family:proportional;content:"󰉇"}.mahjong.p5Base:before{font-family:proportional;content:"󰉈"}.mahjong.p5Comb1:before{font-family:proportional;content:"󰉉"}.mahjong.p5Comb2:before{font-family:proportional;content:"󰉊"}.mahjong.p6Base:before{font-family:proportional;content:"󰉋"}.mahjong.p6Comb:before{font-family:proportional;content:"󰉌"}.mahjong.p7Base:before{font-family:proportional;content:"󰉍"}.mahjong.p7Comb:before{font-family:proportional;content:"󰉎"}.mahjong.p9Base:before{font-family:proportional;content:"󰉏"}.mahjong.p9Comb1:before{font-family:proportional;content:"󰉐"}.mahjong.p9Comb2:before{font-family:proportional;content:"󰉑"}.mahjong.frameComb:before{font-family:proportional;content:"󰉒"}.mahjong.s1j:before{font-family:proportional;content:"󰉓"}.mahjong.s1jBase:before{font-family:proportional;content:"󰉔"}.mahjong.s1jComb:before{font-family:proportional;content:"󰉕"} diff --git a/assets/index-DjcdJx7V.js b/assets/index-DjcdJx7V.js new file mode 100644 index 0000000..f39f040 --- /dev/null +++ b/assets/index-DjcdJx7V.js @@ -0,0 +1,1880 @@ +var V1=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var KM=V1((rn,an)=>{(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.4.24 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function rc(e,t){const n=new Set(e.split(","));return t?o=>n.has(o.toLowerCase()):o=>n.has(o)}const ot={},mr=[],hn=()=>{},U1=()=>!1,Ka=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ic=e=>e.startsWith("onUpdate:"),mt=Object.assign,ac=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},K1=Object.prototype.hasOwnProperty,ze=(e,t)=>K1.call(e,t),we=Array.isArray,pr=e=>qa(e)==="[object Map]",vf=e=>qa(e)==="[object Set]",Ie=e=>typeof e=="function",pt=e=>typeof e=="string",Yo=e=>typeof e=="symbol",tt=e=>e!==null&&typeof e=="object",yf=e=>(tt(e)||Ie(e))&&Ie(e.then)&&Ie(e.catch),Cf=Object.prototype.toString,qa=e=>Cf.call(e),q1=e=>qa(e).slice(8,-1),kf=e=>qa(e)==="[object Object]",sc=e=>pt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ti=rc(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Xa=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},X1=/-(\w)/g,kr=Xa(e=>e.replace(X1,(t,n)=>n?n.toUpperCase():"")),Z1=/\B([A-Z])/g,Rr=Xa(e=>e.replace(Z1,"-$1").toLowerCase()),xf=Xa(e=>e.charAt(0).toUpperCase()+e.slice(1)),Os=Xa(e=>e?`on${xf(e)}`:""),so=(e,t)=>!Object.is(e,t),Hs=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Y1=e=>{const t=parseFloat(e);return isNaN(t)?e:t},J1=e=>{const t=pt(e)?Number(e):NaN;return isNaN(t)?e:t};let kd;const Tf=()=>kd||(kd=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Za(e){if(we(e)){const t={};for(let n=0;n{if(n){const o=n.split(ev);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function lc(e){let t="";if(pt(e))t=e;else if(we(e))for(let n=0;npt(e)?e:e==null?"":we(e)||tt(e)&&(e.toString===Cf||!Ie(e.toString))?JSON.stringify(e,_f,2):String(e),_f=(e,t)=>t&&t.__v_isRef?_f(e,t.value):pr(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r],i)=>(n[Bs(o,i)+" =>"]=r,n),{})}:vf(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Bs(n))}:Yo(t)?Bs(t):tt(t)&&!we(t)&&!kf(t)?String(t):t,Bs=(e,t="")=>{var n;return Yo(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.24 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let on;class Pf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=on,!t&&on&&(this.index=(on.scopes||(on.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=on;try{return on=this,t()}finally{on=n}}}on(){on=this}off(){on=this.parent}stop(t){if(this._active){let n,o;for(n=0,o=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),po()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=io,n=Wo;try{return io=!0,Wo=this,this._runnings++,xd(this),this.fn()}finally{Sd(this),this._runnings--,Wo=n,io=t}}stop(){var t;this.active&&(xd(this),Sd(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function av(e){return e.value}function xd(e){e._trackId++,e._depsLength=0}function Sd(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Ta=new WeakMap,jo=Symbol(""),pl=Symbol("");function Jt(e,t,n){if(io&&Wo){let o=Ta.get(e);o||Ta.set(e,o=new Map);let r=o.get(n);r||o.set(n,r=Lf(()=>o.delete(n))),If(Wo,r)}}function Fn(e,t,n,o,r,i){const a=Ta.get(e);if(!a)return;let s=[];if(t==="clear")s=[...a.values()];else if(n==="length"&&we(e)){const l=Number(o);a.forEach((c,d)=>{(d==="length"||!Yo(d)&&d>=l)&&s.push(c)})}else switch(n!==void 0&&s.push(a.get(n)),t){case"add":we(e)?sc(n)&&s.push(a.get("length")):(s.push(a.get(jo)),pr(e)&&s.push(a.get(pl)));break;case"delete":we(e)||(s.push(a.get(jo)),pr(e)&&s.push(a.get(pl)));break;case"set":pr(e)&&s.push(a.get(jo));break}hc();for(const l of s)l&&Mf(l,4);fc()}function sv(e,t){var n;return(n=Ta.get(e))==null?void 0:n.get(t)}const lv=rc("__proto__,__v_isRef,__isVue"),Df=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Yo)),Td=cv();function cv(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const o=He(this);for(let i=0,a=this.length;i{e[t]=function(...n){mo(),hc();const o=He(this)[t].apply(this,n);return fc(),po(),o}}),e}function dv(e){Yo(e)||(e=String(e));const t=He(this);return Jt(t,"has",e),t.hasOwnProperty(e)}class $f{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?Sv:Nf:i?Bf:Hf).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const a=we(t);if(!r){if(a&&ze(Td,n))return Reflect.get(Td,n,o);if(n==="hasOwnProperty")return dv}const s=Reflect.get(t,n,o);return(Yo(n)?Df.has(n):lv(n))||(r||Jt(t,"get",n),i)?s:ht(s)?a&&sc(n)?s:s.value:tt(s)?r?sn(s):bo(s):s}}class Of extends $f{constructor(t=!1){super(!1,t)}set(t,n,o,r){let i=t[n];if(!this._isShallow){const l=ui(i);if(!wa(o)&&!ui(o)&&(i=He(i),o=He(o)),!we(t)&&ht(i)&&!ht(o))return l?!1:(i.value=o,!0)}const a=we(t)&&sc(n)?Number(n)e,Ya=e=>Reflect.getPrototypeOf(e);function Gi(e,t,n=!1,o=!1){e=e.__v_raw;const r=He(e),i=He(t);n||(so(t,i)&&Jt(r,"get",t),Jt(r,"get",i));const{has:a}=Ya(r),s=o?gc:n?bc:fi;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 Vi(e,t=!1){const n=this.__v_raw,o=He(n),r=He(e);return t||(so(e,r)&&Jt(o,"has",e),Jt(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Ui(e,t=!1){return e=e.__v_raw,!t&&Jt(He(e),"iterate",jo),Reflect.get(e,"size",e)}function wd(e){e=He(e);const t=He(this);return Ya(t).has.call(t,e)||(t.add(e),Fn(t,"add",e,e)),this}function _d(e,t){t=He(t);const n=He(this),{has:o,get:r}=Ya(n);let i=o.call(n,e);i||(e=He(e),i=o.call(n,e));const a=r.call(n,e);return n.set(e,t),i?so(t,a)&&Fn(n,"set",e,t):Fn(n,"add",e,t),this}function Pd(e){const t=He(this),{has:n,get:o}=Ya(t);let r=n.call(t,e);r||(e=He(e),r=n.call(t,e)),o&&o.call(t,e);const i=t.delete(e);return r&&Fn(t,"delete",e,void 0),i}function Ad(){const e=He(this),t=e.size!==0,n=e.clear();return t&&Fn(e,"clear",void 0,void 0),n}function Ki(e,t){return function(o,r){const i=this,a=i.__v_raw,s=He(a),l=t?gc:e?bc:fi;return!e&&Jt(s,"iterate",jo),a.forEach((c,d)=>o.call(r,l(c),l(d),i))}}function qi(e,t,n){return function(...o){const r=this.__v_raw,i=He(r),a=pr(i),s=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,c=r[e](...o),d=n?gc:t?bc:fi;return!t&&Jt(i,"iterate",l?pl:jo),{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 qn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function mv(){const e={get(i){return Gi(this,i)},get size(){return Ui(this)},has:Vi,add:wd,set:_d,delete:Pd,clear:Ad,forEach:Ki(!1,!1)},t={get(i){return Gi(this,i,!1,!0)},get size(){return Ui(this)},has:Vi,add:wd,set:_d,delete:Pd,clear:Ad,forEach:Ki(!1,!0)},n={get(i){return Gi(this,i,!0)},get size(){return Ui(this,!0)},has(i){return Vi.call(this,i,!0)},add:qn("add"),set:qn("set"),delete:qn("delete"),clear:qn("clear"),forEach:Ki(!0,!1)},o={get(i){return Gi(this,i,!0,!0)},get size(){return Ui(this,!0)},has(i){return Vi.call(this,i,!0)},add:qn("add"),set:qn("set"),delete:qn("delete"),clear:qn("clear"),forEach:Ki(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=qi(i,!1,!1),n[i]=qi(i,!0,!1),t[i]=qi(i,!1,!0),o[i]=qi(i,!0,!0)}),[e,n,t,o]}const[pv,bv,vv,yv]=mv();function mc(e,t){const n=t?e?yv:vv:e?bv:pv;return(o,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(ze(n,r)&&r in o?n:o,r,i)}const Cv={get:mc(!1,!1)},kv={get:mc(!1,!0)},xv={get:mc(!0,!1)},Hf=new WeakMap,Bf=new WeakMap,Nf=new WeakMap,Sv=new WeakMap;function Tv(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function wv(e){return e.__v_skip||!Object.isExtensible(e)?0:Tv(q1(e))}function bo(e){return ui(e)?e:pc(e,!1,hv,Cv,Hf)}function _v(e){return pc(e,!1,gv,kv,Bf)}function sn(e){return pc(e,!0,fv,xv,Nf)}function pc(e,t,n,o,r){if(!tt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const a=wv(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 ui(e)?Go(e.__v_raw):!!(e&&e.__v_isReactive)}function ui(e){return!!(e&&e.__v_isReadonly)}function wa(e){return!!(e&&e.__v_isShallow)}function zf(e){return e?!!e.__v_raw:!1}function He(e){const t=e&&e.__v_raw;return t?He(t):e}function hi(e){return Object.isExtensible(e)&&Sf(e,"__v_skip",!0),e}const fi=e=>tt(e)?bo(e):e,bc=e=>tt(e)?sn(e):e;class Ff{constructor(t,n,o,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new uc(()=>t(this._value),()=>ma(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=o}get value(){const t=He(this);return(!t._cacheable||t.effect.dirty)&&so(t._value,t._value=t.effect.run())&&ma(t,4),Wf(t),t.effect._dirtyLevel>=2&&ma(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Pv(e,t,n=!1){let o,r;const i=Ie(e);return i?(o=e,r=hn):(o=e.get,r=e.set),new Ff(o,r,i||!r,n)}function Wf(e){var t;io&&Wo&&(e=He(e),If(Wo,(t=e.dep)!=null?t:e.dep=Lf(()=>e.dep=void 0,e instanceof Ff?e:void 0)))}function ma(e,t=4,n){e=He(e);const o=e.dep;o&&Mf(o,t)}function ht(e){return!!(e&&e.__v_isRef===!0)}function V(e){return jf(e,!1)}function Ja(e){return jf(e,!0)}function jf(e,t){return ht(e)?e:new Av(e,t)}class Av{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:He(t),this._value=n?t:fi(t)}get value(){return Wf(this),this._value}set value(t){const n=this.__v_isShallow||wa(t)||ui(t);t=n?t:He(t),so(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:fi(t),ma(this,4))}}function Fe(e){return ht(e)?e.value:e}const Rv={get:(e,t,n)=>Fe(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return ht(r)&&!ht(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function Gf(e){return Go(e)?e:new Proxy(e,Rv)}function Ev(e){const t=we(e)?new Array(e.length):{};for(const n in e)t[n]=Vf(e,n);return t}class Iv{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return sv(He(this._object),this._key)}}class Mv{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Ue(e,t,n){return ht(e)?e:Ie(e)?new Mv(e):tt(e)&&arguments.length>1?Vf(e,t,n):V(e)}function Vf(e,t,n){const o=e[t];return ht(o)?o:new Iv(e,t,n)}/** +* @vue/runtime-core v3.4.24 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function ao(e,t,n,o){try{return o?e(...o):e()}catch(r){Qa(r,t,n)}}function fn(e,t,n,o){if(Ie(e)){const r=ao(e,t,n,o);return r&&yf(r)&&r.catch(i=>{Qa(i,t,n)}),r}if(we(e)){const r=[];for(let i=0;i>>1,r=zt[o],i=mi(r);iRn&&zt.splice(t,1)}function Ov(e){we(e)?br.push(...e):(!to||!to.includes(e,e.allowRecurse?$o+1:$o))&&br.push(e),Kf()}function Rd(e,t,n=gi?Rn+1:0){for(;nmi(n)-mi(o));if(br.length=0,to){to.push(...t);return}for(to=t,$o=0;$oe.id==null?1/0:e.id,Hv=(e,t)=>{const n=mi(e)-mi(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Xf(e){bl=!1,gi=!0,zt.sort(Hv);try{for(Rn=0;Rnpt(g)?g.trim():g)),u&&(r=n.map(Y1))}let s,l=o[s=Os(t)]||o[s=Os(kr(t))];!l&&i&&(l=o[s=Os(Rr(t))]),l&&fn(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,fn(c,e,6,r)}}function Zf(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(!Ie(e)){const l=c=>{const d=Zf(c,t,!0);d&&(s=!0,mt(a,d))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!s?(tt(e)&&o.set(e,null),null):(we(i)?i.forEach(l=>a[l]=null):mt(a,i),tt(e)&&o.set(e,a),a)}function es(e,t){return!e||!Ka(t)?!1:(t=t.slice(2).replace(/Once$/,""),ze(e,t[0].toLowerCase()+t.slice(1))||ze(e,Rr(t))||ze(e,t))}let Ct=null,Yf=null;function _a(e){const t=Ct;return Ct=e,Yf=e&&e.type.__scopeId||null,t}function Se(e,t=Ct,n){if(!t||e._n)return e;const o=(...r)=>{o._d&&Wd(-1);const i=_a(t);let a;try{a=e(...r)}finally{_a(i),o._d&&Wd(1)}return a};return o._n=!0,o._c=!0,o._d=!0,o}function Ns(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=_a(e);let m,k;try{if(n.shapeFlag&4){const y=r||o,S=y;m=Pn(c.call(S,y,d,u,g,h,f)),k=s}else{const y=t;m=Pn(y.length>1?y(u,{attrs:s,slots:a,emit:l}):y(u,null)),k=t.props?s:Nv(s)}}catch(y){ii.length=0,Qa(y,e,1),m=pe(Wt)}let x=m;if(k&&b!==!1){const y=Object.keys(k),{shapeFlag:S}=x;y.length&&S&7&&(i&&y.some(ic)&&(k=zv(k,i)),x=mn(x,k))}return n.dirs&&(x=mn(x),x.dirs=x.dirs?x.dirs.concat(n.dirs):n.dirs),n.transition&&(x.transition=n.transition),m=x,_a(p),m}const Nv=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ka(n))&&((t||(t={}))[n]=e[n]);return t},zv=(e,t)=>{const n={};for(const o in e)(!ic(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function Fv(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?Ed(o,a,c):!!a;if(l&8){const d=t.dynamicProps;for(let u=0;ue.__isSuspense;function Vv(e,t){t&&t.pendingBranch?we(e)?t.effects.push(...e):t.effects.push(e):Ov(e)}const Uv=Symbol.for("v-scx"),Kv=()=>Ae(Uv);function lo(e,t){return Cc(e,null,t)}const Xi={};function et(e,t,n){return Cc(e,t,n)}function Cc(e,t,{immediate:n,deep:o,flush:r,once:i,onTrack:a,onTrigger:s}=ot){if(t&&i){const P=t;t=(...v)=>{P(...v),S()}}const l=Lt,c=P=>o===!0?P:Ho(P,o===!1?1:void 0);let d,u=!1,h=!1;if(ht(e)?(d=()=>e.value,u=wa(e)):Go(e)?(d=()=>c(e),u=!0):we(e)?(h=!0,u=e.some(P=>Go(P)||wa(P)),d=()=>e.map(P=>{if(ht(P))return P.value;if(Go(P))return c(P);if(Ie(P))return ao(P,l,2)})):Ie(e)?t?d=()=>ao(e,l,2):d=()=>(g&&g(),fn(e,l,3,[f])):d=hn,t&&o){const P=d;d=()=>Ho(P())}let g,f=P=>{g=x.onStop=()=>{ao(P,l,4),g=x.onStop=void 0}},b;if(rs)if(f=hn,t?n&&fn(t,l,3,[d(),h?[]:void 0,f]):d(),r==="sync"){const P=Kv();b=P.__watcherHandles||(P.__watcherHandles=[])}else return hn;let p=h?new Array(e.length).fill(Xi):Xi;const m=()=>{if(!(!x.active||!x.dirty))if(t){const P=x.run();(o||u||(h?P.some((v,w)=>so(v,p[w])):so(P,p)))&&(g&&g(),fn(t,l,3,[P,p===Xi?void 0:h&&p[0]===Xi?[]:p,f]),p=P)}else x.run()};m.allowRecurse=!!t;let k;r==="sync"?k=m:r==="post"?k=()=>Yt(m,l&&l.suspense):(m.pre=!0,l&&(m.id=l.uid),k=()=>yc(m));const x=new uc(d,hn,k),y=dc(),S=()=>{x.stop(),y&&ac(y.effects,x)};return t?n?m():p=x.run():r==="post"?Yt(x.run.bind(x),l&&l.suspense):x.run(),b&&b.push(S),S}function qv(e,t,n){const o=this.proxy,r=pt(e)?e.includes(".")?Jf(o,e):()=>o[e]:e.bind(o,o);let i;Ie(t)?i=t:(i=t.handler,n=t);const a=Mi(this),s=Cc(r,i.bind(o),n);return a(),s}function Jf(e,t){const n=t.split(".");return()=>{let o=e;for(let r=0;r0){if(n>=t)return e;n++}if(o=o||new Set,o.has(e))return e;if(o.add(e),ht(e))Ho(e.value,t,n,o);else if(we(e))for(let r=0;r{Ho(r,t,n,o)});else if(kf(e))for(const r in e)Ho(e[r],t,n,o);return e}function co(e,t){if(Ct===null)return e;const n=is(Ct)||Ct.proxy,o=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),xt(()=>{e.isUnmounting=!0}),e}const cn=[Function,Array],eg={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:cn,onEnter:cn,onAfterEnter:cn,onEnterCancelled:cn,onBeforeLeave:cn,onLeave:cn,onAfterLeave:cn,onLeaveCancelled:cn,onBeforeAppear:cn,onAppear:cn,onAfterAppear:cn,onAppearCancelled:cn},Xv={name:"BaseTransition",props:eg,setup(e,{slots:t}){const n=Qt(),o=Qf();return()=>{const r=t.default&&kc(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const h of r)if(h.type!==Wt){i=h;break}}const a=He(e),{mode:s}=a;if(o.isLeaving)return zs(i);const l=Id(i);if(!l)return zs(i);const c=pi(l,a,o,n);bi(l,c);const d=n.subTree,u=d&&Id(d);if(u&&u.type!==Wt&&!Oo(l,u)){const h=pi(u,a,o,n);if(bi(u,h),s==="out-in")return o.isLeaving=!0,h.afterLeave=()=>{o.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},zs(i);s==="in-out"&&l.type!==Wt&&(h.delayLeave=(g,f,b)=>{const p=tg(o,u);p[String(u.key)]=u,g[no]=()=>{f(),g[no]=void 0,delete c.delayedLeave},c.delayedLeave=b})}return i}}},Zv=Xv;function tg(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 pi(e,t,n,o){const{appear:r,mode:i,persisted:a=!1,onBeforeEnter:s,onEnter:l,onAfterEnter:c,onEnterCancelled:d,onBeforeLeave:u,onLeave:h,onAfterLeave:g,onLeaveCancelled:f,onBeforeAppear:b,onAppear:p,onAfterAppear:m,onAppearCancelled:k}=t,x=String(e.key),y=tg(n,e),S=(w,R)=>{w&&fn(w,o,9,R)},P=(w,R)=>{const L=R[1];S(w,R),we(w)?w.every(j=>j.length<=1)&&L():w.length<=1&&L()},v={mode:i,persisted:a,beforeEnter(w){let R=s;if(!n.isMounted)if(r)R=b||s;else return;w[no]&&w[no](!0);const L=y[x];L&&Oo(e,L)&&L.el[no]&&L.el[no](),S(R,[w])},enter(w){let R=l,L=c,j=d;if(!n.isMounted)if(r)R=p||l,L=m||c,j=k||d;else return;let M=!1;const U=w[Zi]=ne=>{M||(M=!0,ne?S(j,[w]):S(L,[w]),v.delayedLeave&&v.delayedLeave(),w[Zi]=void 0)};R?P(R,[w,U]):U()},leave(w,R){const L=String(e.key);if(w[Zi]&&w[Zi](!0),n.isUnmounting)return R();S(u,[w]);let j=!1;const M=w[no]=U=>{j||(j=!0,R(),U?S(f,[w]):S(g,[w]),w[no]=void 0,y[L]===e&&delete y[L])};y[L]=e,h?P(h,[w,M]):M()},clone(w){return pi(w,t,n,o)}};return v}function zs(e){if(ts(e))return e=mn(e),e.children=null,e}function Id(e){if(!ts(e))return e;const{shapeFlag:t,children:n}=e;if(t&16)return n[0];if(t&32&&Ie(n.default))return n.default()}function bi(e,t){e.shapeFlag&6&&e.component?bi(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 kc(e,t=!1,n){let o=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader,ts=e=>e.type.__isKeepAlive;function ng(e,t){og(e,"a",t)}function xc(e,t){og(e,"da",t)}function og(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(ns(t,o,n),n){let r=n.parent;for(;r&&r.parent;)ts(r.parent.vnode)&&Yv(o,t,n,r),r=r.parent}}function Yv(e,t,n,o){const r=ns(t,e,o,!0);Sc(()=>{ac(o[t],r)},n)}function ns(e,t,n=Lt,o=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...a)=>{if(n.isUnmounted)return;mo();const s=Mi(n),l=fn(t,n,e,a);return s(),po(),l});return o?r.unshift(i):r.push(i),i}}const Gn=e=>(t,n=Lt)=>(!rs||e==="sp")&&ns(e,(...o)=>t(...o),n),Ln=Gn("bm"),Pt=Gn("m"),Jv=Gn("bu"),rg=Gn("u"),xt=Gn("bum"),Sc=Gn("um"),Qv=Gn("sp"),ey=Gn("rtg"),ty=Gn("rtc");function ny(e,t=Lt){ns("ec",e,t)}function pa(e,t,n,o){let r;const i=n&&n[o];if(we(e)||pt(e)){r=new Array(e.length);for(let a=0,s=e.length;at(a,s,void 0,i&&i[s]));else{const a=Object.keys(e);r=new Array(a.length);for(let s=0,l=a.length;syi(t)?!(t.type===Wt||t.type===Oe&&!ag(t.children)):!0)?e:null}const vl=e=>e?kg(e)?is(e)||e.proxy:vl(e.parent):null,oi=mt(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=>vl(e.parent),$root:e=>vl(e.root),$emit:e=>e.emit,$options:e=>Tc(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,yc(e.update)}),$nextTick:e=>e.n||(e.n=Ft.bind(e.proxy)),$watch:e=>qv.bind(e)}),Fs=(e,t)=>e!==ot&&!e.__isScriptSetup&&ze(e,t),oy={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(Fs(o,t))return a[t]=1,o[t];if(r!==ot&&ze(r,t))return a[t]=2,r[t];if((c=e.propsOptions[0])&&ze(c,t))return a[t]=3,i[t];if(n!==ot&&ze(n,t))return a[t]=4,n[t];yl&&(a[t]=0)}}const d=oi[t];let u,h;if(d)return t==="$attrs"&&Jt(e.attrs,"get",""),d(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==ot&&ze(n,t))return a[t]=4,n[t];if(h=l.config.globalProperties,ze(h,t))return h[t]},set({_:e},t,n){const{data:o,setupState:r,ctx:i}=e;return Fs(r,t)?(r[t]=n,!0):o!==ot&&ze(o,t)?(o[t]=n,!0):ze(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!==ot&&ze(e,a)||Fs(t,a)||(s=i[0])&&ze(s,a)||ze(o,a)||ze(oi,a)||ze(r.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ze(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Md(e){return we(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let yl=!0;function ry(e){const t=Tc(e),n=e.proxy,o=e.ctx;yl=!1,t.beforeCreate&&Ld(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:x,unmounted:y,render:S,renderTracked:P,renderTriggered:v,errorCaptured:w,serverPrefetch:R,expose:L,inheritAttrs:j,components:M,directives:U,filters:ne}=t;if(c&&iy(c,o,null),a)for(const W in a){const re=a[W];Ie(re)&&(o[W]=re.bind(n))}if(r){const W=r.call(n,n);tt(W)&&(e.data=bo(W))}if(yl=!0,i)for(const W in i){const re=i[W],be=Ie(re)?re.bind(n,n):Ie(re.get)?re.get.bind(n,n):hn,ve=!Ie(re)&&Ie(re.set)?re.set.bind(n):hn,_e=N({get:be,set:ve});Object.defineProperty(o,W,{enumerable:!0,configurable:!0,get:()=>_e.value,set:Me=>_e.value=Me})}if(s)for(const W in s)sg(s[W],o,n,W);if(l){const W=Ie(l)?l.call(n):l;Reflect.ownKeys(W).forEach(re=>{je(re,W[re])})}d&&Ld(d,e,"c");function q(W,re){we(re)?re.forEach(be=>W(be.bind(n))):re&&W(re.bind(n))}if(q(Ln,u),q(Pt,h),q(Jv,g),q(rg,f),q(ng,b),q(xc,p),q(ny,w),q(ty,P),q(ey,v),q(xt,k),q(Sc,y),q(Qv,R),we(L))if(L.length){const W=e.exposed||(e.exposed={});L.forEach(re=>{Object.defineProperty(W,re,{get:()=>n[re],set:be=>n[re]=be})})}else e.exposed||(e.exposed={});S&&e.render===hn&&(e.render=S),j!=null&&(e.inheritAttrs=j),M&&(e.components=M),U&&(e.directives=U)}function iy(e,t,n=hn){we(e)&&(e=Cl(e));for(const o in e){const r=e[o];let i;tt(r)?"default"in r?i=Ae(r.from||o,r.default,!0):i=Ae(r.from||o):i=Ae(r),ht(i)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[o]=i}}function Ld(e,t,n){fn(we(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function sg(e,t,n,o){const r=o.includes(".")?Jf(n,o):()=>n[o];if(pt(e)){const i=t[e];Ie(i)&&et(r,i)}else if(Ie(e))et(r,e.bind(n));else if(tt(e))if(we(e))e.forEach(i=>sg(i,t,n,o));else{const i=Ie(e.handler)?e.handler.bind(n):t[e.handler];Ie(i)&&et(r,i,e)}}function Tc(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=>Pa(l,c,a,!0)),Pa(l,t,a)),tt(t)&&i.set(t,l),l}function Pa(e,t,n,o=!1){const{mixins:r,extends:i}=t;i&&Pa(e,i,n,!0),r&&r.forEach(a=>Pa(e,a,n,!0));for(const a in t)if(!(o&&a==="expose")){const s=ay[a]||n&&n[a];e[a]=s?s(e[a],t[a]):t[a]}return e}const ay={data:Dd,props:$d,emits:$d,methods:Jr,computed:Jr,beforeCreate:Vt,created:Vt,beforeMount:Vt,mounted:Vt,beforeUpdate:Vt,updated:Vt,beforeDestroy:Vt,beforeUnmount:Vt,destroyed:Vt,unmounted:Vt,activated:Vt,deactivated:Vt,errorCaptured:Vt,serverPrefetch:Vt,components:Jr,directives:Jr,watch:ly,provide:Dd,inject:sy};function Dd(e,t){return t?e?function(){return mt(Ie(e)?e.call(this,this):e,Ie(t)?t.call(this,this):t)}:t:e}function sy(e,t){return Jr(Cl(e),Cl(t))}function Cl(e){if(we(e)){const t={};for(let n=0;n1)return n&&Ie(t)?t.call(o&&o.proxy):t}}function uy(){return!!(Lt||Ct||vr)}const cg=Object.create(null),dg=()=>Object.create(cg),ug=e=>Object.getPrototypeOf(e)===cg;function hy(e,t,n,o=!1){const r={},i=dg();e.propsDefaults=Object.create(null),hg(e,t,r,i);for(const a in e.propsOptions[0])a in r||(r[a]=void 0);n?e.props=o?r:_v(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function fy(e,t,n,o){const{props:r,attrs:i,vnode:{patchFlag:a}}=e,s=He(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]=fg(u,t,!0);mt(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 tt(e)&&o.set(e,mr),mr;if(we(i))for(let d=0;d-1,g[1]=b<0||f-1||ze(g,"default"))&&s.push(u)}}}const c=[a,s];return tt(e)&&o.set(e,c),c}function Od(e){return e[0]!=="$"&&!ti(e)}function Hd(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Bd(e,t){return Hd(e)===Hd(t)}function Nd(e,t){return we(t)?t.findIndex(n=>Bd(n,e)):Ie(t)&&Bd(t,e)?0:-1}const gg=e=>e[0]==="_"||e==="$stable",wc=e=>we(e)?e.map(Pn):[Pn(e)],gy=(e,t,n)=>{if(t._n)return t;const o=Se((...r)=>wc(t(...r)),n);return o._c=!1,o},mg=(e,t,n)=>{const o=e._ctx;for(const r in e){if(gg(r))continue;const i=e[r];if(Ie(i))t[r]=gy(r,i,o);else if(i!=null){const a=wc(i);t[r]=()=>a}}},pg=(e,t)=>{const n=wc(t);e.slots.default=()=>n},my=(e,t)=>{const n=e.slots=dg();if(e.vnode.shapeFlag&32){const o=t._;o?(mt(n,t),Sf(n,"_",o)):mg(t,n)}else t&&pg(e,t)},py=(e,t,n)=>{const{vnode:o,slots:r}=e;let i=!0,a=ot;if(o.shapeFlag&32){const s=t._;s?n&&s===1?i=!1:(mt(r,t),!n&&s===1&&delete r._):(i=!t.$stable,mg(t,r)),a=t}else t&&(pg(e,t),a={default:1});if(i)for(const s in r)!gg(s)&&a[s]==null&&delete r[s]};function xl(e,t,n,o,r=!1){if(we(e)){e.forEach((h,g)=>xl(h,t&&(we(t)?t[g]:t),n,o,r));return}if(ni(o)&&!r)return;const i=o.shapeFlag&4?is(o.component)||o.component.proxy:o.el,a=r?null:i,{i:s,r:l}=e,c=t&&t.r,d=s.refs===ot?s.refs={}:s.refs,u=s.setupState;if(c!=null&&c!==l&&(pt(c)?(d[c]=null,ze(u,c)&&(u[c]=null)):ht(c)&&(c.value=null)),Ie(l))ao(l,s,12,[a,d]);else{const h=pt(l),g=ht(l);if(h||g){const f=()=>{if(e.f){const b=h?ze(u,l)?u[l]:d[l]:l.value;r?we(b)&&ac(b,i):we(b)?b.includes(i)||b.push(i):h?(d[l]=[i],ze(u,l)&&(u[l]=d[l])):(l.value=[i],e.k&&(d[e.k]=l.value))}else h?(d[l]=a,ze(u,l)&&(u[l]=a)):g&&(l.value=a,e.k&&(d[e.k]=a))};a?(f.id=-1,Yt(f,n)):f()}}}const Yt=Vv;function by(e){return vy(e)}function vy(e,t){const n=Tf();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=hn,insertStaticContent:f}=e,b=(E,A,O,X=null,Z=null,oe=null,le=void 0,C=null,_=!!A.dynamicChildren)=>{if(E===A)return;E&&!Oo(E,A)&&(X=De(E),Me(E,Z,oe,!0),E=null),A.patchFlag===-2&&(_=!1,A.dynamicChildren=null);const{type:I,ref:F,shapeFlag:ie}=A;switch(I){case Er:p(E,A,O,X);break;case Wt:m(E,A,O,X);break;case js:E==null&&k(A,O,X,le);break;case Oe:M(E,A,O,X,Z,oe,le,C,_);break;default:ie&1?S(E,A,O,X,Z,oe,le,C,_):ie&6?U(E,A,O,X,Z,oe,le,C,_):(ie&64||ie&128)&&I.process(E,A,O,X,Z,oe,le,C,_,ct)}F!=null&&Z&&xl(F,E&&E.ref,oe,A||E,!A)},p=(E,A,O,X)=>{if(E==null)o(A.el=s(A.children),O,X);else{const Z=A.el=E.el;A.children!==E.children&&c(Z,A.children)}},m=(E,A,O,X)=>{E==null?o(A.el=l(A.children||""),O,X):A.el=E.el},k=(E,A,O,X)=>{[E.el,E.anchor]=f(E.children,A,O,X,E.el,E.anchor)},x=({el:E,anchor:A},O,X)=>{let Z;for(;E&&E!==A;)Z=h(E),o(E,O,X),E=Z;o(A,O,X)},y=({el:E,anchor:A})=>{let O;for(;E&&E!==A;)O=h(E),r(E),E=O;r(A)},S=(E,A,O,X,Z,oe,le,C,_)=>{A.type==="svg"?le="svg":A.type==="math"&&(le="mathml"),E==null?P(A,O,X,Z,oe,le,C,_):R(E,A,Z,oe,le,C,_)},P=(E,A,O,X,Z,oe,le,C)=>{let _,I;const{props:F,shapeFlag:ie,transition:Q,dirs:$}=E;if(_=E.el=a(E.type,oe,F&&F.is,F),ie&8?d(_,E.children):ie&16&&w(E.children,_,null,X,Z,Ws(E,oe),le,C),$&&Ao(E,null,X,"created"),v(_,E,E.scopeId,le,X),F){for(const me in F)me!=="value"&&!ti(me)&&i(_,me,null,F[me],oe,E.children,X,Z,Ee);"value"in F&&i(_,"value",null,F.value,oe),(I=F.onVnodeBeforeMount)&&Tn(I,X,E)}$&&Ao(E,null,X,"beforeMount");const B=yy(Z,Q);B&&Q.beforeEnter(_),o(_,A,O),((I=F&&F.onVnodeMounted)||B||$)&&Yt(()=>{I&&Tn(I,X,E),B&&Q.enter(_),$&&Ao(E,null,X,"mounted")},Z)},v=(E,A,O,X,Z)=>{if(O&&g(E,O),X)for(let oe=0;oe{for(let I=_;I{const C=A.el=E.el;let{patchFlag:_,dynamicChildren:I,dirs:F}=A;_|=E.patchFlag&16;const ie=E.props||ot,Q=A.props||ot;let $;if(O&&Ro(O,!1),($=Q.onVnodeBeforeUpdate)&&Tn($,O,A,E),F&&Ao(A,E,O,"beforeUpdate"),O&&Ro(O,!0),I?L(E.dynamicChildren,I,C,O,X,Ws(A,Z),oe):le||re(E,A,C,null,O,X,Ws(A,Z),oe,!1),_>0){if(_&16)j(C,A,ie,Q,O,X,Z);else if(_&2&&ie.class!==Q.class&&i(C,"class",null,Q.class,Z),_&4&&i(C,"style",ie.style,Q.style,Z),_&8){const B=A.dynamicProps;for(let me=0;me{$&&Tn($,O,A,E),F&&Ao(A,E,O,"updated")},X)},L=(E,A,O,X,Z,oe,le)=>{for(let C=0;C{if(O!==X){if(O!==ot)for(const C in O)!ti(C)&&!(C in X)&&i(E,C,O[C],null,le,A.children,Z,oe,Ee);for(const C in X){if(ti(C))continue;const _=X[C],I=O[C];_!==I&&C!=="value"&&i(E,C,I,_,le,A.children,Z,oe,Ee)}"value"in X&&i(E,"value",O.value,X.value,le)}},M=(E,A,O,X,Z,oe,le,C,_)=>{const I=A.el=E?E.el:s(""),F=A.anchor=E?E.anchor:s("");let{patchFlag:ie,dynamicChildren:Q,slotScopeIds:$}=A;$&&(C=C?C.concat($):$),E==null?(o(I,O,X),o(F,O,X),w(A.children||[],O,F,Z,oe,le,C,_)):ie>0&&ie&64&&Q&&E.dynamicChildren?(L(E.dynamicChildren,Q,O,Z,oe,le,C),(A.key!=null||Z&&A===Z.subTree)&&_c(E,A,!0)):re(E,A,O,F,Z,oe,le,C,_)},U=(E,A,O,X,Z,oe,le,C,_)=>{A.slotScopeIds=C,E==null?A.shapeFlag&512?Z.ctx.activate(A,O,X,le,_):ne(A,O,X,Z,oe,le,_):H(E,A,_)},ne=(E,A,O,X,Z,oe,le)=>{const C=E.component=Ey(E,X,Z);if(ts(E)&&(C.ctx.renderer=ct),Iy(C),C.asyncDep){if(Z&&Z.registerDep(C,q),!E.el){const _=C.subTree=pe(Wt);m(null,_,A,O)}}else q(C,E,A,O,Z,oe,le)},H=(E,A,O)=>{const X=A.component=E.component;if(Fv(E,A,O))if(X.asyncDep&&!X.asyncResolved){W(X,A,O);return}else X.next=A,$v(X.update),X.effect.dirty=!0,X.update();else A.el=E.el,X.vnode=A},q=(E,A,O,X,Z,oe,le)=>{const C=()=>{if(E.isMounted){let{next:F,bu:ie,u:Q,parent:$,vnode:B}=E;{const Et=bg(E);if(Et){F&&(F.el=B.el,W(E,F,le)),Et.asyncDep.then(()=>{E.isUnmounted||C()});return}}let me=F,ke;Ro(E,!1),F?(F.el=B.el,W(E,F,le)):F=B,ie&&Hs(ie),(ke=F.props&&F.props.onVnodeBeforeUpdate)&&Tn(ke,$,F,B),Ro(E,!0);const Be=Ns(E),dt=E.subTree;E.subTree=Be,b(dt,Be,u(dt.el),De(dt),E,Z,oe),F.el=Be.el,me===null&&Wv(E,Be.el),Q&&Yt(Q,Z),(ke=F.props&&F.props.onVnodeUpdated)&&Yt(()=>Tn(ke,$,F,B),Z)}else{let F;const{el:ie,props:Q}=A,{bm:$,m:B,parent:me}=E,ke=ni(A);if(Ro(E,!1),$&&Hs($),!ke&&(F=Q&&Q.onVnodeBeforeMount)&&Tn(F,me,A),Ro(E,!0),ie&&bt){const Be=()=>{E.subTree=Ns(E),bt(ie,E.subTree,E,Z,null)};ke?A.type.__asyncLoader().then(()=>!E.isUnmounted&&Be()):Be()}else{const Be=E.subTree=Ns(E);b(null,Be,O,X,E,Z,oe),A.el=Be.el}if(B&&Yt(B,Z),!ke&&(F=Q&&Q.onVnodeMounted)){const Be=A;Yt(()=>Tn(F,me,Be),Z)}(A.shapeFlag&256||me&&ni(me.vnode)&&me.vnode.shapeFlag&256)&&E.a&&Yt(E.a,Z),E.isMounted=!0,A=O=X=null}},_=E.effect=new uc(C,hn,()=>yc(I),E.scope),I=E.update=()=>{_.dirty&&_.run()};I.id=E.uid,Ro(E,!0),I()},W=(E,A,O)=>{A.component=E;const X=E.vnode.props;E.vnode=A,E.next=null,fy(E,A.props,X,O),py(E,A.children,O),mo(),Rd(E),po()},re=(E,A,O,X,Z,oe,le,C,_=!1)=>{const I=E&&E.children,F=E?E.shapeFlag:0,ie=A.children,{patchFlag:Q,shapeFlag:$}=A;if(Q>0){if(Q&128){ve(I,ie,O,X,Z,oe,le,C,_);return}else if(Q&256){be(I,ie,O,X,Z,oe,le,C,_);return}}$&8?(F&16&&Ee(I,Z,oe),ie!==I&&d(O,ie)):F&16?$&16?ve(I,ie,O,X,Z,oe,le,C,_):Ee(I,Z,oe,!0):(F&8&&d(O,""),$&16&&w(ie,O,X,Z,oe,le,C,_))},be=(E,A,O,X,Z,oe,le,C,_)=>{E=E||mr,A=A||mr;const I=E.length,F=A.length,ie=Math.min(I,F);let Q;for(Q=0;QF?Ee(E,Z,oe,!0,!1,ie):w(A,O,X,Z,oe,le,C,_,ie)},ve=(E,A,O,X,Z,oe,le,C,_)=>{let I=0;const F=A.length;let ie=E.length-1,Q=F-1;for(;I<=ie&&I<=Q;){const $=E[I],B=A[I]=_?oo(A[I]):Pn(A[I]);if(Oo($,B))b($,B,O,null,Z,oe,le,C,_);else break;I++}for(;I<=ie&&I<=Q;){const $=E[ie],B=A[Q]=_?oo(A[Q]):Pn(A[Q]);if(Oo($,B))b($,B,O,null,Z,oe,le,C,_);else break;ie--,Q--}if(I>ie){if(I<=Q){const $=Q+1,B=$Q)for(;I<=ie;)Me(E[I],Z,oe,!0),I++;else{const $=I,B=I,me=new Map;for(I=B;I<=Q;I++){const ee=A[I]=_?oo(A[I]):Pn(A[I]);ee.key!=null&&me.set(ee.key,I)}let ke,Be=0;const dt=Q-B+1;let Et=!1,$n=0;const Gt=new Array(dt);for(I=0;I=dt){Me(ee,Z,oe,!0);continue}let ue;if(ee.key!=null)ue=me.get(ee.key);else for(ke=B;ke<=Q;ke++)if(Gt[ke-B]===0&&Oo(ee,A[ke])){ue=ke;break}ue===void 0?Me(ee,Z,oe,!0):(Gt[ue-B]=I+1,ue>=$n?$n=ue:Et=!0,b(ee,A[ue],O,null,Z,oe,le,C,_),Be++)}const zr=Et?Cy(Gt):mr;for(ke=zr.length-1,I=dt-1;I>=0;I--){const ee=B+I,ue=A[ee],xe=ee+1{const{el:oe,type:le,transition:C,children:_,shapeFlag:I}=E;if(I&6){_e(E.component.subTree,A,O,X);return}if(I&128){E.suspense.move(A,O,X);return}if(I&64){le.move(E,A,O,ct);return}if(le===Oe){o(oe,A,O);for(let ie=0;ie<_.length;ie++)_e(_[ie],A,O,X);o(E.anchor,A,O);return}if(le===js){x(E,A,O);return}if(X!==2&&I&1&&C)if(X===0)C.beforeEnter(oe),o(oe,A,O),Yt(()=>C.enter(oe),Z);else{const{leave:ie,delayLeave:Q,afterLeave:$}=C,B=()=>o(oe,A,O),me=()=>{ie(oe,()=>{B(),$&&$()})};Q?Q(oe,B,me):me()}else o(oe,A,O)},Me=(E,A,O,X=!1,Z=!1)=>{const{type:oe,props:le,ref:C,children:_,dynamicChildren:I,shapeFlag:F,patchFlag:ie,dirs:Q}=E;if(C!=null&&xl(C,null,O,E,!0),F&256){A.ctx.deactivate(E);return}const $=F&1&&Q,B=!ni(E);let me;if(B&&(me=le&&le.onVnodeBeforeUnmount)&&Tn(me,A,E),F&6)Ye(E.component,O,X);else{if(F&128){E.suspense.unmount(O,X);return}$&&Ao(E,null,A,"beforeUnmount"),F&64?E.type.remove(E,A,O,Z,ct,X):I&&(oe!==Oe||ie>0&&ie&64)?Ee(I,A,O,!1,!0):(oe===Oe&&ie&384||!Z&&F&16)&&Ee(_,A,O),X&<(E)}(B&&(me=le&&le.onVnodeUnmounted)||$)&&Yt(()=>{me&&Tn(me,A,E),$&&Ao(E,null,A,"unmounted")},O)},lt=E=>{const{type:A,el:O,anchor:X,transition:Z}=E;if(A===Oe){Ze(O,X);return}if(A===js){y(E);return}const oe=()=>{r(O),Z&&!Z.persisted&&Z.afterLeave&&Z.afterLeave()};if(E.shapeFlag&1&&Z&&!Z.persisted){const{leave:le,delayLeave:C}=Z,_=()=>le(O,oe);C?C(E.el,oe,_):_()}else oe()},Ze=(E,A)=>{let O;for(;E!==A;)O=h(E),r(E),E=O;r(A)},Ye=(E,A,O)=>{const{bum:X,scope:Z,update:oe,subTree:le,um:C}=E;X&&Hs(X),Z.stop(),oe&&(oe.active=!1,Me(le,E,A,O)),C&&Yt(C,A),Yt(()=>{E.isUnmounted=!0},A),A&&A.pendingBranch&&!A.isUnmounted&&E.asyncDep&&!E.asyncResolved&&E.suspenseId===A.pendingId&&(A.deps--,A.deps===0&&A.resolve())},Ee=(E,A,O,X=!1,Z=!1,oe=0)=>{for(let le=oe;leE.shapeFlag&6?De(E.component.subTree):E.shapeFlag&128?E.suspense.next():h(E.anchor||E.el);let Ot=!1;const Le=(E,A,O)=>{E==null?A._vnode&&Me(A._vnode,null,null,!0):b(A._vnode||null,E,A,null,null,null,O),Ot||(Ot=!0,Rd(),qf(),Ot=!1),A._vnode=E},ct={p:b,um:Me,m:_e,r:lt,mt:ne,mc:w,pc:re,pbc:L,n:De,o:e};let Rt,bt;return t&&([Rt,bt]=t(ct)),{render:Le,hydrate:Rt,createApp:dy(Le,Rt)}}function Ws({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 Ro({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function yy(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function _c(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 bg(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:bg(t)}const ky=e=>e.__isTeleport,ri=e=>e&&(e.disabled||e.disabled===""),zd=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Fd=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Sl=(e,t)=>{const n=e&&e.to;return pt(n)?t?t(n):null:n},xy={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=ri(t.props);let{shapeFlag:k,children:x,dynamicChildren:y}=t;if(e==null){const S=t.el=b(""),P=t.anchor=b("");g(S,n,o),g(P,n,o);const v=t.target=Sl(t.props,f),w=t.targetAnchor=b("");v&&(g(w,v),a==="svg"||zd(v)?a="svg":(a==="mathml"||Fd(v))&&(a="mathml"));const R=(L,j)=>{k&16&&d(x,L,j,r,i,a,s,l)};m?R(n,P):v&&R(v,w)}else{t.el=e.el;const S=t.anchor=e.anchor,P=t.target=e.target,v=t.targetAnchor=e.targetAnchor,w=ri(e.props),R=w?n:P,L=w?S:v;if(a==="svg"||zd(P)?a="svg":(a==="mathml"||Fd(P))&&(a="mathml"),y?(h(e.dynamicChildren,y,R,r,i,a,s),_c(e,t,!0)):l||u(e,t,R,L,r,i,a,s,!1),m)w?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Yi(t,n,S,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=Sl(t.props,f);j&&Yi(t,j,null,c,0)}else w&&Yi(t,P,v,c,1)}vg(t)},remove(e,t,n,o,{um:r,o:{remove:i}},a){const{shapeFlag:s,children:l,anchor:c,targetAnchor:d,target:u,props:h}=e;if(u&&i(d),a&&i(c),s&16){const g=a||!ri(h);for(let f=0;f0?xn||mr:null,Ty(),vi>0&&xn&&xn.push(e),e}function gn(e,t,n,o,r,i){return yg(jt(e,t,n,o,r,i,!0))}function It(e,t,n,o,r){return yg(pe(e,t,n,o,r,!0))}function yi(e){return e?e.__v_isVNode===!0:!1}function Oo(e,t){return e.type===t.type&&e.key===t.key}const Cg=({key:e})=>e??null,ba=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pt(e)||ht(e)||Ie(e)?{i:Ct,r:e,k:t,f:!!n}:e:null);function jt(e,t=null,n=null,o=0,r=null,i=e===Oe?0:1,a=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Cg(t),ref:t&&ba(t),scopeId:Yf,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ct};return s?(Pc(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=pt(n)?8:16),vi>0&&!a&&xn&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&xn.push(l),l}const pe=wy;function wy(e,t=null,n=null,o=0,r=null,i=!1){if((!e||e===jv)&&(e=Wt),yi(e)){const s=mn(e,t,!0);return n&&Pc(s,n),vi>0&&!i&&xn&&(s.shapeFlag&6?xn[xn.indexOf(e)]=s:xn.push(s)),s.patchFlag|=-2,s}if($y(e)&&(e=e.__vccOpts),t){t=_y(t);let{class:s,style:l}=t;s&&!pt(s)&&(t.class=lc(s)),tt(l)&&(zf(l)&&!we(l)&&(l=mt({},l)),t.style=Za(l))}const a=pt(e)?1:Gv(e)?128:ky(e)?64:tt(e)?4:Ie(e)?2:0;return jt(e,t,n,o,r,a,i,!0)}function _y(e){return e?zf(e)||ug(e)?mt({},e):e:null}function mn(e,t,n=!1){const{props:o,ref:r,patchFlag:i,children:a}=e,s=t?Mn(o||{},t):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&Cg(s),ref:t&&t.ref?n&&r?we(r)?r.concat(ba(t)):[r,ba(t)]:ba(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Oe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&mn(e.ssContent),ssFallback:e.ssFallback&&mn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function St(e=" ",t=0){return pe(Er,null,e,t)}function Py(e="",t=!1){return t?(Ve(),It(Wt,null,e)):pe(Wt,null,e)}function Pn(e){return e==null||typeof e=="boolean"?pe(Wt):we(e)?pe(Oe,null,e.slice()):typeof e=="object"?oo(e):pe(Er,null,String(e))}function oo(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:mn(e)}function Pc(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),Pc(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!ug(t)?t._ctx=Ct:r===3&&Ct&&(Ct.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Ie(t)?(t={default:t,_ctx:Ct},n=32):(t=String(t),o&64?(n=16,t=[St(t)]):n=8);e.children=t,e.shapeFlag|=n}function Mn(...e){const t={};for(let n=0;nLt||Ct;let Aa,Tl;{const e=Tf(),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)}};Aa=t("__VUE_INSTANCE_SETTERS__",n=>Lt=n),Tl=t("__VUE_SSR_SETTERS__",n=>rs=n)}const Mi=e=>{const t=Lt;return Aa(e),e.scope.on(),()=>{e.scope.off(),Aa(t)}},jd=()=>{Lt&&Lt.scope.off(),Aa(null)};function kg(e){return e.vnode.shapeFlag&4}let rs=!1;function Iy(e,t=!1){t&&Tl(t);const{props:n,children:o}=e.vnode,r=kg(e);hy(e,n,r,t),my(e,o);const i=r?My(e,t):void 0;return t&&Tl(!1),i}function My(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,oy);const{setup:o}=n;if(o){const r=e.setupContext=o.length>1?Dy(e):null,i=Mi(e);mo();const a=ao(o,e,0,[e.props,r]);if(po(),i(),yf(a)){if(a.then(jd,jd),t)return a.then(s=>{Gd(e,s,t)}).catch(s=>{Qa(s,e,0)});e.asyncDep=a}else Gd(e,a,t)}else xg(e,t)}function Gd(e,t,n){Ie(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:tt(t)&&(e.setupState=Gf(t)),xg(e,n)}let Vd;function xg(e,t,n){const o=e.type;if(!e.render){if(!t&&Vd&&!o.render){const r=o.template||Tc(e).template;if(r){const{isCustomElement:i,compilerOptions:a}=e.appContext.config,{delimiters:s,compilerOptions:l}=o,c=mt(mt({isCustomElement:i,delimiters:s},a),l);o.render=Vd(r,c)}}e.render=o.render||hn}{const r=Mi(e);mo();try{ry(e)}finally{po(),r()}}}const Ly={get(e,t){return Jt(e,"get",""),e[t]}};function Dy(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ly),slots:e.slots,emit:e.emit,expose:t}}function is(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Gf(hi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in oi)return oi[n](e)},has(t,n){return n in t||n in oi}}))}function $y(e){return Ie(e)&&"__vccOpts"in e}const N=(e,t)=>Pv(e,t,rs);function T(e,t,n){const o=arguments.length;return o===2?tt(t)&&!we(t)?yi(t)?pe(e,null,[t]):pe(e,t):pe(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&yi(n)&&(n=[n]),pe(e,t,n))}const Oy="3.4.24";/** +* @vue/runtime-dom v3.4.24 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Hy="http://www.w3.org/2000/svg",By="http://www.w3.org/1998/Math/MathML",ro=typeof document<"u"?document:null,Ud=ro&&ro.createElement("template"),Ny={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"?ro.createElementNS(Hy,e):t==="mathml"?ro.createElementNS(By,e):ro.createElement(e,n?{is:n}:void 0);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>ro.createTextNode(e),createComment:e=>ro.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ro.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{Ud.innerHTML=o==="svg"?`${e}`:o==="mathml"?`${e}`:e;const s=Ud.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]}},Xn="transition",jr="animation",xr=Symbol("_vtc"),pn=(e,{slots:t})=>T(Zv,Tg(e),t);pn.displayName="Transition";const Sg={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},zy=pn.props=mt({},eg,Sg),Eo=(e,t=[])=>{we(e)?e.forEach(n=>n(...t)):e&&e(...t)},Kd=e=>e?we(e)?e.some(t=>t.length>1):e.length>1:!1;function Tg(e){const t={};for(const M in e)M in Sg||(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=Fy(r),b=f&&f[0],p=f&&f[1],{onBeforeEnter:m,onEnter:k,onEnterCancelled:x,onLeave:y,onLeaveCancelled:S,onBeforeAppear:P=m,onAppear:v=k,onAppearCancelled:w=x}=t,R=(M,U,ne)=>{Qn(M,U?d:s),Qn(M,U?c:a),ne&&ne()},L=(M,U)=>{M._isLeaving=!1,Qn(M,u),Qn(M,g),Qn(M,h),U&&U()},j=M=>(U,ne)=>{const H=M?v:k,q=()=>R(U,M,ne);Eo(H,[U,q]),qd(()=>{Qn(U,M?l:i),Nn(U,M?d:s),Kd(H)||Xd(U,o,b,q)})};return mt(t,{onBeforeEnter(M){Eo(m,[M]),Nn(M,i),Nn(M,a)},onBeforeAppear(M){Eo(P,[M]),Nn(M,l),Nn(M,c)},onEnter:j(!1),onAppear:j(!0),onLeave(M,U){M._isLeaving=!0;const ne=()=>L(M,U);Nn(M,u),Nn(M,h),_g(),qd(()=>{M._isLeaving&&(Qn(M,u),Nn(M,g),Kd(y)||Xd(M,o,p,ne))}),Eo(y,[M,ne])},onEnterCancelled(M){R(M,!1),Eo(x,[M])},onAppearCancelled(M){R(M,!0),Eo(w,[M])},onLeaveCancelled(M){L(M),Eo(S,[M])}})}function Fy(e){if(e==null)return null;if(tt(e))return[Gs(e.enter),Gs(e.leave)];{const t=Gs(e);return[t,t]}}function Gs(e){return J1(e)}function Nn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[xr]||(e[xr]=new Set)).add(t)}function Qn(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const n=e[xr];n&&(n.delete(t),n.size||(e[xr]=void 0))}function qd(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Wy=0;function Xd(e,t,n,o){const r=e._endId=++Wy,i=()=>{r===e._endId&&o()};if(n)return setTimeout(i,n);const{type:a,timeout:s,propCount:l}=wg(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(`${Xn}Delay`),i=o(`${Xn}Duration`),a=Zd(r,i),s=o(`${jr}Delay`),l=o(`${jr}Duration`),c=Zd(s,l);let d=null,u=0,h=0;t===Xn?a>0&&(d=Xn,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?Xn:jr:null,h=d?d===Xn?i.length:l.length:0);const g=d===Xn&&/\b(transform|all)(,|$)/.test(o(`${Xn}Property`).toString());return{type:d,timeout:u,propCount:h,hasTransform:g}}function Zd(e,t){for(;e.lengthYd(n)+Yd(e[o])))}function Yd(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function _g(){return document.body.offsetHeight}function jy(e,t,n){const o=e[xr];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ra=Symbol("_vod"),Pg=Symbol("_vsh"),Sr={beforeMount(e,{value:t},{transition:n}){e[Ra]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Gr(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),Gr(e,!0),o.enter(e)):o.leave(e,()=>{Gr(e,!1)}):Gr(e,t))},beforeUnmount(e,{value:t}){Gr(e,t)}};function Gr(e,t){e.style.display=t?e[Ra]:"none",e[Pg]=!t}const Gy=Symbol(""),Vy=/(^|;)\s*display\s*:/;function Uy(e,t,n){const o=e.style,r=pt(n);let i=!1;if(n&&!r){if(t)if(pt(t))for(const a of t.split(";")){const s=a.slice(0,a.indexOf(":")).trim();n[s]==null&&va(o,s,"")}else for(const a in t)n[a]==null&&va(o,a,"");for(const a in n)a==="display"&&(i=!0),va(o,a,n[a])}else if(r){if(t!==n){const a=o[Gy];a&&(n+=";"+a),o.cssText=n,i=Vy.test(n)}}else t&&e.removeAttribute("style");Ra in e&&(e[Ra]=i?o.display:"",e[Pg]&&(o.display="none"))}const Jd=/\s*!important$/;function va(e,t,n){if(we(n))n.forEach(o=>va(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=Ky(e,t);Jd.test(n)?e.setProperty(Rr(o),n.replace(Jd,""),"important"):e[o]=n}}const Qd=["Webkit","Moz","ms"],Vs={};function Ky(e,t){const n=Vs[t];if(n)return n;let o=kr(t);if(o!=="filter"&&o in e)return Vs[t]=o;o=xf(o);for(let r=0;rUs||(e2.then(()=>Us=0),Us=Date.now());function n2(e,t){const n=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=n.attached)return;fn(o2(o,n.value),t,5,[o])};return n.value=e,n.attached=t2(),n}function o2(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 ou=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,r2=(e,t,n,o,r,i,a,s,l)=>{const c=r==="svg";t==="class"?jy(e,o,c):t==="style"?Uy(e,n,o):Ka(t)?ic(t)||Jy(e,t,n,o,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):i2(e,t,o,c))?Xy(e,t,o,i,a,s,l):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),qy(e,t,o,c))};function i2(e,t,n,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&ou(t)&&Ie(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 ou(t)&&pt(n)?!1:t in e}const Ag=new WeakMap,Rg=new WeakMap,Ea=Symbol("_moveCb"),ru=Symbol("_enterCb"),Eg={name:"TransitionGroup",props:mt({},zy,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Qt(),o=Qf();let r,i;return rg(()=>{if(!r.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!u2(r[0].el,n.vnode.el,a))return;r.forEach(l2),r.forEach(c2);const s=r.filter(d2);_g(),s.forEach(l=>{const c=l.el,d=c.style;Nn(c,a),d.transform=d.webkitTransform=d.transitionDuration="";const u=c[Ea]=h=>{h&&h.target!==c||(!h||/transform$/.test(h.propertyName))&&(c.removeEventListener("transitionend",u),c[Ea]=null,Qn(c,a))};c.addEventListener("transitionend",u)})}),()=>{const a=He(e),s=Tg(a);let l=a.tag||Oe;if(r=[],i)for(let c=0;cdelete e.mode;Eg.props;const s2=Eg;function l2(e){const t=e.el;t[Ea]&&t[Ea](),t[ru]&&t[ru]()}function c2(e){Rg.set(e,e.el.getBoundingClientRect())}function d2(e){const t=Ag.get(e),n=Rg.get(e),o=t.left-n.left,r=t.top-n.top;if(o||r){const i=e.el.style;return i.transform=i.webkitTransform=`translate(${o}px,${r}px)`,i.transitionDuration="0s",e}}function u2(e,t,n){const o=e.cloneNode(),r=e[xr];r&&r.forEach(s=>{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}=wg(o);return i.removeChild(o),a}const h2=mt({patchProp:r2},Ny);let iu;function f2(){return iu||(iu=by(h2))}const g2=(...e)=>{const t=f2().createApp(...e),{mount:n}=t;return t.mount=o=>{const r=p2(o);if(!r)return;const i=t._component;!Ie(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.innerHTML="";const a=n(r,!1,m2(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),a},t};function m2(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function p2(e){return pt(e)?document.querySelector(e):e}let Ia=[];const Ig=new WeakMap;function b2(){Ia.forEach(e=>e(...Ig.get(e))),Ia=[]}function Mg(e,...t){Ig.set(e,t),!Ia.includes(e)&&Ia.push(e)===1&&requestAnimationFrame(b2)}function au(e,t){let{target:n}=e;for(;n;){if(n.dataset&&n.dataset[t]!==void 0)return!0;n=n.parentElement}return!1}function Ci(e){return e.composedPath()[0]||null}function v2(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 ir(e,t){var n;if(e==null)return;const o=v2(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 su(e){return typeof e=="string"?e.endsWith("px")?Number(e.slice(0,e.length-2)):Number(e):e}function fr(e){if(e!=null)return typeof e=="number"?`${e}px`:e.endsWith("px")?e:`${e}px`}function as(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 t===void 0?o:o[t]}function y2(e,t){const[n,o]=e.split(" ");return t?t==="row"?n:o:{row:n,col:o||n}}const lu={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"},Ir="^\\s*",Mr="\\s*$",Bo="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",No="([0-9A-Fa-f])",zo="([0-9A-Fa-f]{2})",C2=new RegExp(`${Ir}rgb\\s*\\(${Bo},${Bo},${Bo}\\)${Mr}`),k2=new RegExp(`${Ir}rgba\\s*\\(${Bo},${Bo},${Bo},${Bo}\\)${Mr}`),x2=new RegExp(`${Ir}#${No}${No}${No}${Mr}`),S2=new RegExp(`${Ir}#${zo}${zo}${zo}${Mr}`),T2=new RegExp(`${Ir}#${No}${No}${No}${No}${Mr}`),w2=new RegExp(`${Ir}#${zo}${zo}${zo}${zo}${Mr}`);function Xt(e){return parseInt(e,16)}function Wn(e){try{let t;if(t=S2.exec(e))return[Xt(t[1]),Xt(t[2]),Xt(t[3]),1];if(t=C2.exec(e))return[Nt(t[1]),Nt(t[5]),Nt(t[9]),1];if(t=k2.exec(e))return[Nt(t[1]),Nt(t[5]),Nt(t[9]),ai(t[13])];if(t=x2.exec(e))return[Xt(t[1]+t[1]),Xt(t[2]+t[2]),Xt(t[3]+t[3]),1];if(t=w2.exec(e))return[Xt(t[1]),Xt(t[2]),Xt(t[3]),ai(Xt(t[4])/255)];if(t=T2.exec(e))return[Xt(t[1]+t[1]),Xt(t[2]+t[2]),Xt(t[3]+t[3]),ai(Xt(t[4]+t[4])/255)];if(e in lu)return Wn(lu[e]);throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(t){throw t}}function _2(e){return e>1?1:e<0?0:e}function wl(e,t,n,o){return`rgba(${Nt(e)}, ${Nt(t)}, ${Nt(n)}, ${_2(o)})`}function Ks(e,t,n,o,r){return Nt((e*t*(1-o)+n*o)/r)}function fe(e,t){Array.isArray(e)||(e=Wn(e)),Array.isArray(t)||(t=Wn(t));const n=e[3],o=t[3],r=ai(n+o-n*o);return wl(Ks(e[0],n,t[0],o,r),Ks(e[1],n,t[1],o,r),Ks(e[2],n,t[2],o,r),r)}function K(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:Wn(e);return t.alpha?wl(n,o,r,t.alpha):wl(n,o,r,i)}function gt(e,t){const[n,o,r,i=1]=Array.isArray(e)?e:Wn(e),{lightness:a=1,alpha:s=1}=t;return P2([n*a,o*a,r*a,i*s])}function ai(e){const t=Math.round(Number(e)*100)/100;return t>1?1:t<0?0:t}function Nt(e){const t=Math.round(Number(e));return t>255?255:t<0?0:t}function P2(e){const[t,n,o]=e;return 3 in e?`rgba(${Nt(t)}, ${Nt(n)}, ${Nt(o)}, ${ai(e[3])})`:`rgba(${Nt(t)}, ${Nt(n)}, ${Nt(o)}, 1)`}function ss(e=8){return Math.random().toString(16).slice(2,2+e)}function Lg(e,t="default",n=[]){const r=e.$slots[t];return r===void 0?n:r()}function Xo(e,t=[],n){const o={};return t.forEach(r=>{o[r]=e[r]}),Object.assign(o,n)}function Ac(e,t=[],n){const o={};return Object.getOwnPropertyNames(e).forEach(i=>{t.includes(i)||(o[i]=e[i])}),Object.assign(o,n)}function ki(e,t=!0,n=[]){return e.forEach(o=>{if(o!==null){if(typeof o!="object"){(typeof o=="string"||typeof o=="number")&&n.push(St(String(o)));return}if(Array.isArray(o)){ki(o,t,n);return}if(o.type===Oe){if(o.children===null)return;Array.isArray(o.children)&&ki(o.children,t,n)}else{if(o.type===Wt&&t)return;n.push(o)}}}),n}function We(e,...t){if(Array.isArray(e))e.forEach(n=>We(n,...t));else return e(...t)}function ls(e){return Object.keys(e)}const Mt=(e,...t)=>typeof e=="function"?e(...t):typeof e=="string"?St(e):typeof e=="number"?St(String(e)):null;function Tr(e,t){console.error(`[naive/${e}]: ${t}`)}function Dg(e,t){throw new Error(`[naive/${e}]: ${t}`)}function _l(e,t="default",n=void 0){const o=e[t];if(!o)return Tr("getFirstSlotVNode",`slot[${t}] is empty`),null;const r=ki(o(n));return r.length===1?r[0]:(Tr("getFirstSlotVNode",`slot[${t}] should have exactly one child`),null)}function A2(e){return t=>{t?e.value=t.$el:e.value=null}}function Li(e){return e.some(t=>yi(t)?!(t.type===Wt||t.type===Oe&&!Li(t.children)):!0)?e:null}function Vo(e,t){return e&&Li(e())||t()}function R2(e,t,n){return e&&Li(e(t))||n(t)}function Tt(e,t){const n=e&&Li(e());return t(n||null)}function Pl(e){return!(e&&Li(e()))}function E2(e){var t;const n=(t=e.dirs)===null||t===void 0?void 0:t.find(({dir:o})=>o===Sr);return!!(n&&n.value===!1)}const cu=ce({render(){var e,t;return(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e)}}),I2=/^(\d|\.)+$/,du=/(\d|\.)+/;function ya(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(I2.test(e)){const r=(Number(e)+n)*t;return o?r===0?"0":`${r}px`:`${r}`}else{const r=du.exec(e);return r?e.replace(du,String((Number(r[0])+n)*t)):e}return e}function uu(e){return e.replace(/#|\(|\)|,|\s|\./g,"_")}function M2(e){let t=0;for(let n=0;n{let r=M2(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 $2(e,t){const n=[];return t.split($g).forEach(o=>{e.forEach(r=>{n.push((r&&r+" ")+o)})}),n}function O2(e){let t=[""];return e.forEach(n=>{n=n&&n.trim(),n&&(n.includes("&")?t=D2(t,n):t=$2(t,n))}),t.join(", ").replace(L2," ")}function hu(e){if(!e)return;const t=e.parentElement;t&&t.removeChild(e)}function cs(e){return document.querySelector(`style[cssr-id="${e}"]`)}function H2(e){const t=document.createElement("style");return t.setAttribute("cssr-id",e),t}function Ji(e){return e?/^\s*@(s|m)/.test(e):!1}const B2=/[A-Z]/g;function Og(e){return e.replace(B2,t=>"-"+t.toLowerCase())}function N2(e,t=" "){return typeof e=="object"&&e!==null?` { +`+Object.entries(e).map(n=>t+` ${Og(n[0])}: ${n[1]};`).join(` +`)+` +`+t+"}":`: ${e};`}function z2(e,t,n){return typeof e=="function"?e({context:t.context,props:n}):e}function fu(e,t,n,o){if(!t)return"";const r=z2(t,n,o);if(!r)return"";if(typeof r=="string")return`${e} { +${r} +}`;const i=Object.keys(r);if(i.length===0)return n.config.keepEmptyBlock?e+` { +}`:"";const a=e?[e+" {"]:[];return i.forEach(s=>{const l=r[s];if(s==="raw"){a.push(` +`+l+` +`);return}s=Og(s),l!=null&&a.push(` ${s}${N2(l)}`)}),e&&a.push("}"),a.join(` +`)}function Al(e,t,n){e&&e.forEach(o=>{if(Array.isArray(o))Al(o,t,n);else if(typeof o=="function"){const r=o(t);Array.isArray(r)?Al(r,t,n):r&&n(r)}else o&&n(o)})}function Hg(e,t,n,o,r,i){const a=e.$;let s="";if(!a||typeof a=="string")Ji(a)?s=a:t.push(a);else if(typeof a=="function"){const d=a({context:o.context,props:r});Ji(d)?s=d:t.push(d)}else if(a.before&&a.before(o.context),!a.$||typeof a.$=="string")Ji(a.$)?s=a.$:t.push(a.$);else if(a.$){const d=a.$({context:o.context,props:r});Ji(d)?s=d:t.push(d)}const l=O2(t),c=fu(l,e.props,o,r);s?(n.push(`${s} {`),i&&c&&i.insertRule(`${s} { +${c} +} +`)):(i&&c&&i.insertRule(c),!i&&c.length&&n.push(c)),e.children&&Al(e.children,{context:o.context,props:r},d=>{if(typeof d=="string"){const u=fu(l,{raw:d},o,r);i?i.insertRule(u):n.push(u)}else Hg(d,t,n,o,r,i)}),t.pop(),s&&n.push("}"),a&&a.after&&a.after(o.context)}function Bg(e,t,n,o=!1){const r=[];return Hg(e,[],r,t,n,o?e.instance.__styleSheet:void 0),o?"":r.join(` + +`)}function xi(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 F2(e,t,n){const{els:o}=t;if(n===void 0)o.forEach(hu),t.els=[];else{const r=cs(n);r&&o.includes(r)&&(hu(r),t.els=o.filter(i=>i!==r))}}function gu(e,t){e.push(t)}function W2(e,t,n,o,r,i,a,s,l){if(i&&!l){if(n===void 0){console.error("[css-render/mount]: `id` is required in `silent` mode.");return}const h=window.__cssrContext;h[n]||(h[n]=!0,Bg(t,e,o,i));return}let c;if(n===void 0&&(c=t.render(o),n=xi(c)),l){l.adapter(n,c??t.render(o));return}const d=cs(n);if(d!==null&&!a)return d;const u=d??H2(n);if(c===void 0&&(c=t.render(o)),u.textContent=c,d!==null)return d;if(s){const h=document.head.querySelector(`meta[name="${s}"]`);if(h)return document.head.insertBefore(u,h),gu(t.els,u),u}return r?document.head.insertBefore(u,document.head.querySelector("style, link")):document.head.appendChild(u),gu(t.els,u),u}function j2(e){return Bg(this,this.instance,e)}function G2(e={}){const{id:t,ssr:n,props:o,head:r=!1,silent:i=!1,force:a=!1,anchorMetaName:s}=e;return W2(this.instance,this,t,o,r,i,a,s,n)}function V2(e={}){const{id:t}=e;F2(this.instance,this,t)}const Qi=function(e,t,n,o){return{instance:e,$:t,props:n,children:o,els:[],render:j2,mount:G2,unmount:V2}},U2=function(e,t,n,o){return Array.isArray(t)?Qi(e,{$:null},null,t):Array.isArray(n)?Qi(e,t,null,n):Array.isArray(o)?Qi(e,t,n,o):Qi(e,t,n,null)};function Ng(e={}){let t=null;const n={c:(...o)=>U2(n,...o),use:(o,...r)=>o.install(n,...r),find:cs,context:{},config:e,get __styleSheet(){if(!t){const o=document.createElement("style");return document.head.appendChild(o),t=document.styleSheets[document.styleSheets.length-1],t}return t}};return n}function K2(e,t){if(e===void 0)return!1;if(t){const{context:{ids:n}}=t;return n.has(e)}return cs(e)!==null}function q2(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(y=>y.trim());function k(y){return m.map(S=>`&${(p==null?void 0:p.bPrefix)||t}${b.bem.b}${y!==void 0?`${n}${y}`:""}${o}${S}`).join(", ")}const x=b.bem.els;return x!==null?k(x[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 X2="n",Si=`.${X2}-`,Z2="__",Y2="--",zg=Ng(),Fg=q2({blockPrefix:Si,elementPrefix:Z2,modifierPrefix:Y2});zg.use(Fg);const{c:z,find:XM}=zg,{cB:te,cE:G,cM:J,cNotM:Dt}=Fg;function Wg(e){return z(({props:{bPrefix:t}})=>`${t||Si}modal, ${t||Si}drawer`,[e])}function J2(e){return z(({props:{bPrefix:t}})=>`${t||Si}popover`,[e])}function jg(e){return z(({props:{bPrefix:t}})=>`&${t||Si}modal`,e)}const Q2=(...e)=>z(">",[te(...e)]);function ge(e,t){return e+(t==="default"?"":t.replace(/^[a-z]/,n=>n.toUpperCase()))}let qs;function eC(){return qs===void 0&&(qs=navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom")),qs}const Jo=typeof document<"u"&&typeof window<"u",tC=new WeakSet;function nC(e){return!tC.has(e)}function oC(e,t,n){if(!t)return e;const o=V(e.value);let r=null;return et(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 rC(e){const t=V(!!e.value);if(t.value)return sn(t);const n=et(e,o=>{o&&(t.value=!0,n())});return sn(t)}function wt(e){const t=N(e),n=V(t.value);return et(t,o=>{n.value=o}),typeof e=="function"?n:{__v_isRef:!0,get value(){return n.value},set value(o){e.set(o)}}}function ds(){return Qt()!==null}const us=typeof window<"u";let yr,si;const iC=()=>{var e,t;yr=us?(t=(e=document)===null||e===void 0?void 0:e.fonts)===null||t===void 0?void 0:t.ready:void 0,si=!1,yr!==void 0?yr.then(()=>{si=!0}):si=!0};iC();function aC(e){if(si)return;let t=!1;Pt(()=>{si||yr==null||yr.then(()=>{t||e()})}),xt(()=>{t=!0})}function Ca(e){return e.composedPath()[0]}const sC={mousemoveoutside:new WeakMap,clickoutside:new WeakMap};function lC(e,t,n){if(e==="mousemoveoutside"){const o=r=>{t.contains(Ca(r))||n(r)};return{mousemove:o,touchstart:o}}else if(e==="clickoutside"){let o=!1;const r=a=>{o=!t.contains(Ca(a))},i=a=>{o&&(t.contains(Ca(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 Gg(e,t,n){const o=sC[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=lC(e,t,n)),i}function cC(e,t,n,o){if(e==="mousemoveoutside"||e==="clickoutside"){const r=Gg(e,t,n);return Object.keys(r).forEach(i=>{it(i,document,r[i],o)}),!0}return!1}function dC(e,t,n,o){if(e==="mousemoveoutside"||e==="clickoutside"){const r=Gg(e,t,n);return Object.keys(r).forEach(i=>{Ke(i,document,r[i],o)}),!0}return!1}function uC(){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(v,w,R){const L=v[w];return v[w]=function(){return R.apply(v,arguments),L.apply(v,arguments)},v}function i(v,w){v[w]=Event.prototype[w]}const a=new WeakMap,s=Object.getOwnPropertyDescriptor(Event.prototype,"currentTarget");function l(){var v;return(v=a.get(this))!==null&&v!==void 0?v:null}function c(v,w){s!==void 0&&Object.defineProperty(v,"currentTarget",{configurable:!0,enumerable:!0,get:w??s.get})}const d={bubble:{},capture:{}},u={};function h(){const v=function(w){const{type:R,eventPhase:L,bubbles:j}=w,M=Ca(w);if(L===2)return;const U=L===1?"capture":"bubble";let ne=M;const H=[];for(;ne===null&&(ne=window),H.push(ne),ne!==window;)ne=ne.parentNode||null;const q=d.capture[R],W=d.bubble[R];if(r(w,"stopPropagation",n),r(w,"stopImmediatePropagation",o),c(w,l),U==="capture"){if(q===void 0)return;for(let re=H.length-1;re>=0&&!e.has(w);--re){const be=H[re],ve=q.get(be);if(ve!==void 0){a.set(w,be);for(const _e of ve){if(t.has(w))break;_e(w)}}if(re===0&&!j&&W!==void 0){const _e=W.get(be);if(_e!==void 0)for(const Me of _e){if(t.has(w))break;Me(w)}}}}else if(U==="bubble"){if(W===void 0)return;for(let re=0;reM(w))};return v.displayName="evtdUnifiedWindowEventHandler",v}const f=h(),b=g();function p(v,w){const R=d[v];return R[w]===void 0&&(R[w]=new Map,window.addEventListener(w,f,v==="capture")),R[w]}function m(v){return u[v]===void 0&&(u[v]=new Set,window.addEventListener(v,b)),u[v]}function k(v,w){let R=v.get(w);return R===void 0&&v.set(w,R=new Set),R}function x(v,w,R,L){const j=d[w][R];if(j!==void 0){const M=j.get(v);if(M!==void 0&&M.has(L))return!0}return!1}function y(v,w){const R=u[v];return!!(R!==void 0&&R.has(w))}function S(v,w,R,L){let j;if(typeof L=="object"&&L.once===!0?j=q=>{P(v,w,j,L),R(q)}:j=R,cC(v,w,j,L))return;const U=L===!0||typeof L=="object"&&L.capture===!0?"capture":"bubble",ne=p(U,v),H=k(ne,w);if(H.has(j)||H.add(j),w===window){const q=m(v);q.has(j)||q.add(j)}}function P(v,w,R,L){if(dC(v,w,R,L))return;const M=L===!0||typeof L=="object"&&L.capture===!0,U=M?"capture":"bubble",ne=p(U,v),H=k(ne,w);if(w===window&&!x(w,M?"bubble":"capture",v,R)&&y(v,R)){const W=u[v];W.delete(R),W.size===0&&(window.removeEventListener(v,b),u[v]=void 0)}H.has(R)&&H.delete(R),H.size===0&&ne.delete(w),ne.size===0&&(window.removeEventListener(v,f,U==="capture"),d[U][v]=void 0)}return{on:S,off:P}}const{on:it,off:Ke}=uC(),Qr=V(null);function mu(e){if(e.clientX>0||e.clientY>0)Qr.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?Qr.value={x:n+r/2,y:o+i/2}:Qr.value={x:0,y:0}}else Qr.value=null}}let ea=0,pu=!0;function Vg(){if(!us)return sn(V(null));ea===0&&it("click",document,mu,!0);const e=()=>{ea+=1};return pu&&(pu=ds())?(Ln(e),xt(()=>{ea-=1,ea===0&&Ke("click",document,mu,!0)})):e(),sn(Qr)}const hC=V(void 0);let ta=0;function bu(){hC.value=Date.now()}let vu=!0;function Ug(e){if(!us)return sn(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)}ta===0&&it("click",window,bu,!0);const i=()=>{ta+=1,it("click",window,r,!0)};return vu&&(vu=ds())?(Ln(i),xt(()=>{ta-=1,ta===0&&Ke("click",window,bu,!0),Ke("click",window,r,!0),o()})):i(),sn(t)}let na=0;const fC=typeof window<"u"&&window.matchMedia!==void 0,Uo=V(null);let kn,Fo;function Ma(e){e.matches&&(Uo.value="dark")}function La(e){e.matches&&(Uo.value="light")}function gC(){kn=window.matchMedia("(prefers-color-scheme: dark)"),Fo=window.matchMedia("(prefers-color-scheme: light)"),kn.matches?Uo.value="dark":Fo.matches?Uo.value="light":Uo.value=null,kn.addEventListener?(kn.addEventListener("change",Ma),Fo.addEventListener("change",La)):kn.addListener&&(kn.addListener(Ma),Fo.addListener(La))}function mC(){"removeEventListener"in kn?(kn.removeEventListener("change",Ma),Fo.removeEventListener("change",La)):"removeListener"in kn&&(kn.removeListener(Ma),Fo.removeListener(La)),kn=void 0,Fo=void 0}let yu=!0;function pC(){return fC&&(na===0&&gC(),yu&&(yu=ds())&&(Ln(()=>{na+=1}),xt(()=>{na-=1,na===0&&mC()}))),sn(Uo)}function Rc(e,t){return et(e,n=>{n!==void 0&&(t.value=n)}),N(()=>e.value===void 0?t.value:e.value)}function Di(){const e=V(!1);return Pt(()=>{e.value=!0}),sn(e)}function Kg(e,t){return N(()=>{for(const n of t)if(e[n]!==void 0)return e[n];return e[t[t.length-1]]})}const bC=(typeof window>"u"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function vC(){return bC}const yC={xs:0,s:640,m:1024,l:1280,xl:1536,"2xl":1920};function CC(e){return`(min-width: ${e}px)`}const Vr={};function kC(e=yC){if(!us)return N(()=>[]);if(typeof window.matchMedia!="function")return N(()=>[]);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;Vr[i]===void 0?(a=window.matchMedia(CC(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,Vr[i]={mql:a,cbs:s}):(a=Vr[i].mql,s=Vr[i].cbs),s.add(o),a.matches&&s.forEach(l=>{l(a,r)})}),xt(()=>{n.forEach(r=>{const{cbs:i}=Vr[e[r]];i.has(o)&&i.delete(o)})}),N(()=>{const{value:r}=t;return n.filter(i=>r[i])})}function xC(e={},t){const n=bo({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)&&(it("keydown",document,i),it("keyup",document,a)),t!==void 0&&et(t,l=>{l?(it("keydown",document,i),it("keyup",document,a)):(Ke("keydown",document,i),Ke("keyup",document,a))})};return ds()?(Ln(s),xt(()=>{(t===void 0||t.value)&&(Ke("keydown",document,i),Ke("keyup",document,a))})):s(),sn(n)}const SC="n-internal-select-menu-body",hs="n-modal-body",TC="n-modal-provider",qg="n-modal",fs="n-drawer-body",$i="n-popover-body",Xg="__disabled__";function wr(e){const t=Ae(hs,null),n=Ae(fs,null),o=Ae($i,null),r=Ae(SC,null),i=V();if(typeof document<"u"){i.value=document.fullscreenElement;const a=()=>{i.value=document.fullscreenElement};Pt(()=>{it("fullscreenchange",document,a)}),xt(()=>{Ke("fullscreenchange",document,a)})}return wt(()=>{var a;const{to:s}=e;return s!==void 0?s===!1?Xg: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")})}wr.tdkey=Xg;wr.propTo={type:[String,Object,Boolean],default:void 0};function Rl(e,t,n="default"){const o=t[n];if(o===void 0)throw new Error(`[vueuc/${e}]: slot[${n}] is empty.`);return o()}function El(e,t=!0,n=[]){return e.forEach(o=>{if(o!==null){if(typeof o!="object"){(typeof o=="string"||typeof o=="number")&&n.push(St(String(o)));return}if(Array.isArray(o)){El(o,t,n);return}if(o.type===Oe){if(o.children===null)return;Array.isArray(o.children)&&El(o.children,t,n)}else o.type!==Wt&&n.push(o)}}),n}function Cu(e,t,n="default"){const o=t[n];if(o===void 0)throw new Error(`[vueuc/${e}]: slot[${n}] is empty.`);const r=El(o());if(r.length===1)return r[0];throw new Error(`[vueuc/${e}]: slot[${n}] should have exactly one child.`)}let Zn=null;function Zg(){if(Zn===null&&(Zn=document.getElementById("v-binder-view-measurer"),Zn===null)){Zn=document.createElement("div"),Zn.id="v-binder-view-measurer";const{style:e}=Zn;e.position="fixed",e.left="0",e.right="0",e.top="0",e.bottom="0",e.pointerEvents="none",e.visibility="hidden",document.body.appendChild(Zn)}return Zn.getBoundingClientRect()}function wC(e,t){const n=Zg();return{top:t,left:e,height:0,width:0,right:n.width-e,bottom:n.height-t}}function Xs(e){const t=e.getBoundingClientRect(),n=Zg();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 _C(e){return e.nodeType===9?null:e.parentNode}function Yg(e){if(e===null)return null;const t=_C(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 Yg(t)}const PC=ce({name:"Binder",props:{syncTargetWithParent:Boolean,syncTarget:{type:Boolean,default:!0}},setup(e){var t;je("VBinder",(t=Qt())===null||t===void 0?void 0:t.proxy);const n=Ae("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=Yg(m),m!==null;)i.push(m);for(const k of i)it("scroll",k,u,!0)},s=()=>{for(const m of i)Ke("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=()=>{Mg(h)},h=()=>{l.forEach(m=>m())},g=new Set,f=m=>{g.size===0&&it("resize",window,p),g.has(m)||g.add(m)},b=m=>{g.has(m)&&g.delete(m),g.size===0&&Ke("resize",window,p)},p=()=>{g.forEach(m=>m())};return xt(()=>{Ke("resize",window,p),s()}),{targetRef:o,setTargetRef:r,addScrollListener:c,removeScrollListener:d,addResizeListener:f,removeResizeListener:b}},render(){return Rl("binder",this.$slots)}}),Jg=PC,Qg=ce({name:"Target",setup(){const{setTargetRef:e,syncTarget:t}=Ae("VBinder");return{syncTarget:t,setTargetDirective:{mounted:e,updated:e}}},render(){const{syncTarget:e,setTargetDirective:t}=this;return e?co(Cu("follower",this.$slots),[[t]]):Cu("follower",this.$slots)}}),ar="@@mmoContext",AC={mounted(e,{value:t}){e[ar]={handler:void 0},typeof t=="function"&&(e[ar].handler=t,it("mousemoveoutside",e,t))},updated(e,{value:t}){const n=e[ar];typeof t=="function"?n.handler?n.handler!==t&&(Ke("mousemoveoutside",e,n.handler),n.handler=t,it("mousemoveoutside",e,t)):(e[ar].handler=t,it("mousemoveoutside",e,t)):n.handler&&(Ke("mousemoveoutside",e,n.handler),n.handler=void 0)},unmounted(e){const{handler:t}=e[ar];t&&Ke("mousemoveoutside",e,t),e[ar].handler=void 0}},RC=AC,sr="@@coContext",EC={mounted(e,{value:t,modifiers:n}){e[sr]={handler:void 0},typeof t=="function"&&(e[sr].handler=t,it("clickoutside",e,t,{capture:n.capture}))},updated(e,{value:t,modifiers:n}){const o=e[sr];typeof t=="function"?o.handler?o.handler!==t&&(Ke("clickoutside",e,o.handler,{capture:n.capture}),o.handler=t,it("clickoutside",e,t,{capture:n.capture})):(e[sr].handler=t,it("clickoutside",e,t,{capture:n.capture})):o.handler&&(Ke("clickoutside",e,o.handler,{capture:n.capture}),o.handler=void 0)},unmounted(e,{modifiers:t}){const{handler:n}=e[sr];n&&Ke("clickoutside",e,n,{capture:t.capture}),e[sr].handler=void 0}},Il=EC;function IC(e,t){console.error(`[vdirs/${e}]: ${t}`)}class MC{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&&IC("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 Zs=new MC,lr="@@ziContext",LC={mounted(e,t){const{value:n={}}=t,{zIndex:o,enabled:r}=n;e[lr]={enabled:!!r,initialized:!1},r&&(Zs.ensureZIndex(e,o),e[lr].initialized=!0)},updated(e,t){const{value:n={}}=t,{zIndex:o,enabled:r}=n,i=e[lr].enabled;r&&!i&&(Zs.ensureZIndex(e,o),e[lr].initialized=!0),e[lr].enabled=!!r},unmounted(e,t){if(!e[lr].initialized)return;const{value:n={}}=t,{zIndex:o}=n;Zs.unregister(e,o)}},Ec=LC,em=Symbol("@css-render/vue3-ssr");function DC(e,t){return``}function $C(e,t){const n=Ae(em,null);if(n===null){console.error("[css-render/vue3-ssr]: no ssr context found.");return}const{styles:o,ids:r}=n;r.has(e)||o!==null&&(r.add(e),o.push(DC(e,t)))}const OC=typeof document<"u";function Oi(){if(OC)return;const e=Ae(em,null);if(e!==null)return{adapter:$C,context:e}}function ku(e,t){console.error(`[vueuc/${e}]: ${t}`)}const{c:oa}=Ng(),HC="vueuc-style";function xu(e){return typeof e=="string"?document.querySelector(e):e()}const tm=ce({name:"LazyTeleport",props:{to:{type:[String,Object],default:void 0},disabled:Boolean,show:{type:Boolean,required:!0}},setup(e){return{showTeleport:rC(Ue(e,"show")),mergedTo:N(()=>{const{to:t}=e;return t??"body"})}},render(){return this.showTeleport?this.disabled?Rl("lazy-teleport",this.$slots):T(os,{disabled:this.disabled,to:this.mergedTo},Rl("lazy-teleport",this.$slots)):null}}),ra={top:"bottom",bottom:"top",left:"right",right:"left"},Su={start:"end",center:"center",end:"start"},Ys={top:"height",bottom:"height",left:"width",right:"width"},BC={"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"},NC={"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"},zC={"bottom-start":"right","bottom-end":"left","top-start":"right","top-end":"left","right-start":"bottom","right-end":"top","left-start":"bottom","left-end":"top"},Tu={top:!0,bottom:!1,left:!0,right:!1},wu={top:"end",bottom:"start",left:"end",right:"start"};function FC(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=Tu[f]?k:-k:p=Tu[f]?k:-k),{left:p,top:m}},u=a==="left"||a==="right";if(l!=="center"){const g=zC[e],f=ra[g],b=Ys[g];if(n[b]>t[b]){if(t[g]+t[b]t[f]&&(l=Su[s])}else{const g=a==="bottom"||a==="top"?"left":"top",f=ra[g],b=Ys[g],p=(n[b]-t[b])/2;(t[g]t[f]?(l=wu[g],c=d(b,g,u)):(l=wu[f],c=d(b,f,u)))}let h=a;return t[a] *",{pointerEvents:"all"})])]),nm=ce({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=Ae("VBinder"),n=wt(()=>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)};Pt(()=>{n.value&&(l(),i())});const s=Oi();GC.mount({id:"vueuc/binder",head:!0,anchorMetaName:HC,ssr:s}),xt(()=>{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?wC(f,b):Xs(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:x,placement:y,internalShift:S,flip:P}=e;h.setAttribute("v-placement",y),p?h.setAttribute("v-overlap",""):h.removeAttribute("v-overlap");const{style:v}=h;k==="target"?v.width=`${m.width}px`:k!==void 0?v.width=k:v.width="",x==="target"?v.minWidth=`${m.width}px`:x!==void 0?v.minWidth=x:v.minWidth="";const w=Xs(h),R=Xs(r.value),{left:L,top:j,placement:M}=FC(y,m,w,S,P,p),U=WC(M,p),{left:ne,top:H,transform:q}=jC(M,R,m,j,L,p);h.setAttribute("v-placement",M),h.style.setProperty("--v-offset-left",`${Math.round(L)}px`),h.style.setProperty("--v-offset-top",`${Math.round(j)}px`),h.style.transform=`translateX(${ne}) translateY(${H}) ${q}`,h.style.setProperty("--v-transform-origin",U),h.style.transformOrigin=U};et(n,h=>{h?(i(),c()):a()});const c=()=>{Ft().then(l).catch(h=>console.error(h))};["placement","x","y","internalShift","flip","width","overlap","minWidth"].forEach(h=>{et(Ue(e,h),l)}),["teleportDisabled"].forEach(h=>{et(Ue(e,h),c)}),et(Ue(e,"syncTrigger"),h=>{h.includes("resize")?t.addResizeListener(l):t.removeResizeListener(l),h.includes("scroll")?t.addScrollListener(l):t.removeScrollListener(l)});const d=Di(),u=wt(()=>{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 T(tm,{show:this.show,to:this.mergedTo,disabled:this.teleportDisabled},{default:()=>{var e,t;const n=T("div",{class:["v-binder-follower-container",this.containerClass],ref:"offsetContainerRef"},[T("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?co(n,[[Ec,{enabled:this.mergedEnabled,zIndex:this.zIndex}]]):n}})}});var Ko=[],VC=function(){return Ko.some(function(e){return e.activeTargets.length>0})},UC=function(){return Ko.some(function(e){return e.skippedTargets.length>0})},_u="ResizeObserver loop completed with undelivered notifications.",KC=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:_u}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=_u),window.dispatchEvent(e)},Ti;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(Ti||(Ti={}));var qo=function(e){return Object.freeze(e)},qC=function(){function e(t,n){this.inlineSize=t,this.blockSize=n,qo(this)}return e}(),om=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}(),Ic=function(e){return e instanceof SVGElement&&"getBBox"in e},rm=function(e){if(Ic(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)},Pu=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)},XC=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},li=typeof window<"u"?window:{},ia=new WeakMap,Au=/auto|scroll/,ZC=/^tb|vertical/,YC=/msie|trident/i.test(li.navigator&&li.navigator.userAgent),wn=function(e){return parseFloat(e||"0")},Cr=function(e,t,n){return e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=!1),new qC((n?t:e)||0,(n?e:t)||0)},Ru=qo({devicePixelContentBoxSize:Cr(),borderBoxSize:Cr(),contentBoxSize:Cr(),contentRect:new om(0,0,0,0)}),im=function(e,t){if(t===void 0&&(t=!1),ia.has(e)&&!t)return ia.get(e);if(rm(e))return ia.set(e,Ru),Ru;var n=getComputedStyle(e),o=Ic(e)&&e.ownerSVGElement&&e.getBBox(),r=!YC&&n.boxSizing==="border-box",i=ZC.test(n.writingMode||""),a=!o&&Au.test(n.overflowY||""),s=!o&&Au.test(n.overflowX||""),l=o?0:wn(n.paddingTop),c=o?0:wn(n.paddingRight),d=o?0:wn(n.paddingBottom),u=o?0:wn(n.paddingLeft),h=o?0:wn(n.borderTopWidth),g=o?0:wn(n.borderRightWidth),f=o?0:wn(n.borderBottomWidth),b=o?0:wn(n.borderLeftWidth),p=u+c,m=l+d,k=b+g,x=h+f,y=s?e.offsetHeight-x-e.clientHeight:0,S=a?e.offsetWidth-k-e.clientWidth:0,P=r?p+k:0,v=r?m+x:0,w=o?o.width:wn(n.width)-P-S,R=o?o.height:wn(n.height)-v-y,L=w+p+S+k,j=R+m+y+x,M=qo({devicePixelContentBoxSize:Cr(Math.round(w*devicePixelRatio),Math.round(R*devicePixelRatio),i),borderBoxSize:Cr(L,j,i),contentBoxSize:Cr(w,R,i),contentRect:new om(u,l,w,R)});return ia.set(e,M),M},am=function(e,t,n){var o=im(e,n),r=o.borderBoxSize,i=o.contentBoxSize,a=o.devicePixelContentBoxSize;switch(t){case Ti.DEVICE_PIXEL_CONTENT_BOX:return a;case Ti.BORDER_BOX:return r;default:return i}},JC=function(){function e(t){var n=im(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}(),sm=function(e){if(rm(e))return 1/0;for(var t=0,n=e.parentNode;n;)t+=1,n=n.parentNode;return t},QC=function(){var e=1/0,t=[];Ko.forEach(function(a){if(a.activeTargets.length!==0){var s=[];a.activeTargets.forEach(function(c){var d=new JC(c.target),u=sm(c.target);s.push(d),c.lastReportedSize=am(c.target,c.observedBox),ue?n.activeTargets.push(r):n.skippedTargets.push(r))})})},ek=function(){var e=0;for(Eu(e);VC();)e=QC(),Eu(e);return UC()&&KC(),e>0},Js,lm=[],tk=function(){return lm.splice(0).forEach(function(e){return e()})},nk=function(e){if(!Js){var t=0,n=document.createTextNode(""),o={characterData:!0};new MutationObserver(function(){return tk()}).observe(n,o),Js=function(){n.textContent="".concat(t?t--:t++)}}lm.push(e),Js()},ok=function(e){nk(function(){requestAnimationFrame(e)})},ka=0,rk=function(){return!!ka},ik=250,ak={attributes:!0,characterData:!0,childList:!0,subtree:!0},Iu=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Mu=function(e){return e===void 0&&(e=0),Date.now()+e},Qs=!1,sk=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=ik),!Qs){Qs=!0;var o=Mu(t);ok(function(){var r=!1;try{r=ek()}finally{if(Qs=!1,t=o-Mu(),!rk())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,ak)};document.body?n():li.addEventListener("DOMContentLoaded",n)},e.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Iu.forEach(function(n){return li.addEventListener(n,t.listener,!0)}))},e.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),Iu.forEach(function(n){return li.removeEventListener(n,t.listener,!0)}),this.stopped=!0)},e}(),Ml=new sk,Lu=function(e){!ka&&e>0&&Ml.start(),ka+=e,!ka&&Ml.stop()},lk=function(e){return!Ic(e)&&!XC(e)&&getComputedStyle(e).display==="inline"},ck=function(){function e(t,n){this.target=t,this.observedBox=n||Ti.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var t=am(this.target,this.observedBox,!0);return lk(this.target)&&(this.lastReportedSize=t),this.lastReportedSize.inlineSize!==t.inlineSize||this.lastReportedSize.blockSize!==t.blockSize},e}(),dk=function(){function e(t,n){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=n}return e}(),aa=new WeakMap,Du=function(e,t){for(var n=0;n=0&&(i&&Ko.splice(Ko.indexOf(o),1),o.observationTargets.splice(r,1),Lu(-1))},e.disconnect=function(t){var n=this,o=aa.get(t);o.observationTargets.slice().forEach(function(r){return n.unobserve(t,r.target)}),o.activeTargets.splice(0,o.activeTargets.length)},e}(),uk=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.");sa.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(!Pu(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");sa.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(!Pu(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");sa.unobserve(this,t)},e.prototype.disconnect=function(){sa.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();class hk{constructor(){this.handleResize=this.handleResize.bind(this),this.observer=new(typeof window<"u"&&window.ResizeObserver||uk)(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 $u=new hk,Da=ce({name:"ResizeObserver",props:{onResize:Function},setup(e){let t=!1;const n=Qt().proxy;function o(r){const{onResize:i}=e;i!==void 0&&i(r)}Pt(()=>{const r=n.$el;if(r===void 0){ku("resize-observer","$el does not exist.");return}if(r.nextElementSibling!==r.nextSibling&&r.nodeType===3&&r.nodeValue!==""){ku("resize-observer","$el can not be observed (it may be a text node).");return}r.nextElementSibling!==null&&($u.registerHandler(r.nextElementSibling,o),t=!0)}),xt(()=>{t&&$u.unregisterHandler(n.$el.nextElementSibling)})},render(){return ig(this.$slots,"default")}});function cm(e){return e instanceof HTMLElement}function dm(e){for(let t=0;t=0;t--){const n=e.childNodes[t];if(cm(n)&&(hm(n)||um(n)))return!0}return!1}function hm(e){if(!fk(e))return!1;try{e.focus({preventScroll:!0})}catch{}return document.activeElement===e}function fk(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 Ur=[];const fm=ce({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=ss(),n=V(null),o=V(null);let r=!1,i=!1;const a=typeof document>"u"?null:document.activeElement;function s(){return Ur[Ur.length-1]===t}function l(p){var m;p.code==="Escape"&&s()&&((m=e.onEsc)===null||m===void 0||m.call(e,p))}Pt(()=>{et(()=>e.active,p=>{p?(u(),it("keydown",document,l)):(Ke("keydown",document,l),r&&h())},{immediate:!0})}),xt(()=>{Ke("keydown",document,l),r&&h()});function c(p){if(!i&&s()){const m=d();if(m===null||m.contains(Ci(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(Ur.push(t),e.autoFocus){const{initialFocusTo:m}=e;m===void 0?g("first"):(p=xu(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),Ur=Ur.filter(k=>k!==t),s()))return;const{finalFocusTo:m}=e;m!==void 0?(p=xu(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 x=d();if(x==null||x===k){i=!0,m.focus({preventScroll:!0}),i=!1;return}i=!0;const y=p==="first"?dm(x):um(x);i=!1,y||(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 T(Oe,null,[T("div",{"aria-hidden":"true",tabindex:t?"0":"-1",ref:"focusableStartRef",style:n,onFocus:this.handleStartFocus}),e(),T("div",{"aria-hidden":"true",style:n,ref:"focusableEndRef",tabindex:t?"0":"-1",onFocus:this.handleEndFocus})])}});let cr=0,Ou="",Hu="",Bu="",Nu="";const zu=V("0px");function gk(e){if(typeof document>"u")return;const t=document.documentElement;let n,o=!1;const r=()=>{t.style.marginRight=Ou,t.style.overflow=Hu,t.style.overflowX=Bu,t.style.overflowY=Nu,zu.value="0px"};Pt(()=>{n=et(e,i=>{if(i){if(!cr){const a=window.innerWidth-t.offsetWidth;a>0&&(Ou=t.style.marginRight,t.style.marginRight=`${a}px`,zu.value=`${a}px`),Hu=t.style.overflow,Bu=t.style.overflowX,Nu=t.style.overflowY,t.style.overflow="hidden",t.style.overflowX="hidden",t.style.overflowY="hidden"}o=!0,cr++}else cr--,cr||r(),o=!1},{immediate:!0})}),xt(()=>{n==null||n(),o&&(cr--,cr||r(),o=!1)})}const Mc=V(!1),Fu=()=>{Mc.value=!0},Wu=()=>{Mc.value=!1};let Kr=0;const mk=()=>(Jo&&(Ln(()=>{Kr||(window.addEventListener("compositionstart",Fu),window.addEventListener("compositionend",Wu)),Kr++}),xt(()=>{Kr<=1?(window.removeEventListener("compositionstart",Fu),window.removeEventListener("compositionend",Wu),Kr=0):Kr--})),Mc);function gm(e){const t={isDeactivated:!1};let n=!1;return ng(()=>{if(t.isDeactivated=!1,!n){n=!0;return}e()}),xc(()=>{t.isDeactivated=!0,n||(n=!0)}),t}const ju="n-form-item";function mm(e,{defaultSize:t="medium",mergedSize:n,mergedDisabled:o}={}){const r=Ae(ju,null);je(ju,null);const i=N(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=N(o?()=>o(r):()=>{const{disabled:l}=e;return l!==void 0?l:r?r.disabled.value:!1}),s=N(()=>{const{status:l}=e;return l||(r==null?void 0:r.mergedValidationStatus.value)});return xt(()=>{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 pm=typeof global=="object"&&global&&global.Object===Object&&global,pk=typeof self=="object"&&self&&self.Object===Object&&self,Dn=pm||pk||Function("return this")(),uo=Dn.Symbol,bm=Object.prototype,bk=bm.hasOwnProperty,vk=bm.toString,qr=uo?uo.toStringTag:void 0;function yk(e){var t=bk.call(e,qr),n=e[qr];try{e[qr]=void 0;var o=!0}catch{}var r=vk.call(e);return o&&(t?e[qr]=n:delete e[qr]),r}var Ck=Object.prototype,kk=Ck.toString;function xk(e){return kk.call(e)}var Sk="[object Null]",Tk="[object Undefined]",Gu=uo?uo.toStringTag:void 0;function Qo(e){return e==null?e===void 0?Tk:Sk:Gu&&Gu in Object(e)?yk(e):xk(e)}function ho(e){return e!=null&&typeof e=="object"}var wk="[object Symbol]";function Lc(e){return typeof e=="symbol"||ho(e)&&Qo(e)==wk}function vm(e,t){for(var n=-1,o=e==null?0:e.length,r=Array(o);++n0){if(++t>=Uk)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Zk(e){return function(){return e}}var $a=function(){try{var e=tr(Object,"defineProperty");return e({},"",{}),e}catch{}}(),Yk=$a?function(e,t){return $a(e,"toString",{configurable:!0,enumerable:!1,value:Zk(t),writable:!0})}:Dc;const Jk=Yk;var Qk=Xk(Jk),ex=9007199254740991,tx=/^(?:0|[1-9]\d*)$/;function Oc(e,t){var n=typeof e;return t=t??ex,!!t&&(n=="number"||n!="symbol"&&tx.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=lx}function Lr(e){return e!=null&&Bc(e.length)&&!$c(e)}function cx(e,t,n){if(!vo(n))return!1;var o=typeof t;return(o=="number"?Lr(n)&&Oc(t,n.length):o=="string"&&t in n)?Hi(n[t],e):!1}function dx(e){return sx(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&&cx(n[0],n[1],a)&&(i=r<3?void 0:i,r=1),t=Object(t);++o-1}function k3(e,t){var n=this.__data__,o=gs(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}function Vn(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:j3(e,t,n)}var V3="\\ud800-\\udfff",U3="\\u0300-\\u036f",K3="\\ufe20-\\ufe2f",q3="\\u20d0-\\u20ff",X3=U3+K3+q3,Z3="\\ufe0e\\ufe0f",Y3="\\u200d",J3=RegExp("["+Y3+V3+X3+Z3+"]");function Em(e){return J3.test(e)}function Q3(e){return e.split("")}var Im="\\ud800-\\udfff",e4="\\u0300-\\u036f",t4="\\ufe20-\\ufe2f",n4="\\u20d0-\\u20ff",o4=e4+t4+n4,r4="\\ufe0e\\ufe0f",i4="["+Im+"]",Dl="["+o4+"]",$l="\\ud83c[\\udffb-\\udfff]",a4="(?:"+Dl+"|"+$l+")",Mm="[^"+Im+"]",Lm="(?:\\ud83c[\\udde6-\\uddff]){2}",Dm="[\\ud800-\\udbff][\\udc00-\\udfff]",s4="\\u200d",$m=a4+"?",Om="["+r4+"]?",l4="(?:"+s4+"(?:"+[Mm,Lm,Dm].join("|")+")"+Om+$m+")*",c4=Om+$m+l4,d4="(?:"+[Mm+Dl+"?",Dl,Lm,Dm,i4].join("|")+")",u4=RegExp($l+"(?="+$l+")|"+d4+c4,"g");function h4(e){return e.match(u4)||[]}function f4(e){return Em(e)?h4(e):Q3(e)}function g4(e){return function(t){t=ps(t);var n=Em(t)?f4(t):void 0,o=n?n[0]:t.charAt(0),r=n?G3(n,1).join(""):t.slice(1);return o[e]()+r}}var m4=g4("toUpperCase");function p4(e,t,n,o){var r=-1,i=e==null?0:e.length;for(o&&i&&(n=e[++r]);++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&O5?new Na:void 0;for(i.set(e,t),i.set(t,e);++u{const d=i==null?void 0:i.value;n.mount({id:d===void 0?t:d+t,head:!0,props:{bPrefix:d?`.${d}-`:void 0},anchorMetaName:Pi,ssr:a}),s!=null&&s.preflightStyleDisabled||np.mount({id:"n-global",head:!0,anchorMetaName:Pi,ssr:a})};a?c():Ln(c)}return N(()=>{var c;const{theme:{common:d,self:u,peers:h={}}={},themeOverrides:g={},builtinThemeOverrides:f={}}=r,{common:b,peers:p}=g,{common:m=void 0,[e]:{common:k=void 0,self:x=void 0,peers:y={}}={}}=(s==null?void 0:s.mergedThemeRef.value)||{},{common:S=void 0,[e]:P={}}=(s==null?void 0:s.mergedThemeOverridesRef.value)||{},{common:v,peers:w={}}=P,R=ei({},d||k||m||o.common,S,v,b),L=ei((c=u||x||o.self)===null||c===void 0?void 0:c(R),f,P,g);return{common:R,self:L,peers:ei({},o.peers,y,h),peerOverrides:ei({},f.peers,w,p)}})}Re.props={theme:Object,themeOverrides:Object,builtinThemeOverrides:Object};const Ai="n";function at(e={},t={defaultBordered:!0}){const n=Ae(jn,null);return{inlineThemeDisabled:n==null?void 0:n.inlineThemeDisabled,mergedRtlRef:n==null?void 0:n.mergedRtlRef,mergedComponentPropsRef:n==null?void 0:n.mergedComponentPropsRef,mergedBreakpointsRef:n==null?void 0:n.mergedBreakpointsRef,mergedBorderedRef:N(()=>{var o,r;const{bordered:i}=e;return i!==void 0?i:(r=(o=n==null?void 0:n.mergedBorderedRef.value)!==null&&o!==void 0?o:t.defaultBordered)!==null&&r!==void 0?r:!0}),mergedClsPrefixRef:n?n.mergedClsPrefixRef:Ja(Ai),namespaceRef:N(()=>n==null?void 0:n.mergedNamespaceRef.value)}}function D6(){const e=Ae(jn,null);return e?e.mergedClsPrefixRef:Ja(Ai)}const $6={name:"en-US",global:{undo:"Undo",redo:"Redo",confirm:"Confirm",clear:"Clear"},Popconfirm:{positiveText:"Confirm",negativeText:"Cancel"},Cascader:{placeholder:"Please Select",loading:"Loading",loadingRequiredMessage:e=>`Please load all ${e}'s descendants before checking it.`},Time:{dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss"},DatePicker:{yearFormat:"yyyy",monthFormat:"MMM",dayFormat:"eeeeee",yearTypeFormat:"yyyy",monthTypeFormat:"yyyy-MM",dateFormat:"yyyy-MM-dd",dateTimeFormat:"yyyy-MM-dd HH:mm:ss",quarterFormat:"yyyy-qqq",weekFormat:"yyyy-w",clear:"Clear",now:"Now",confirm:"Confirm",selectTime:"Select Time",selectDate:"Select Date",datePlaceholder:"Select Date",datetimePlaceholder:"Select Date and Time",monthPlaceholder:"Select Month",yearPlaceholder:"Select Year",quarterPlaceholder:"Select Quarter",weekPlaceholder:"Select Week",startDatePlaceholder:"Start Date",endDatePlaceholder:"End Date",startDatetimePlaceholder:"Start Date and Time",endDatetimePlaceholder:"End Date and Time",startMonthPlaceholder:"Start Month",endMonthPlaceholder:"End Month",monthBeforeYear:!0,firstDayOfWeek:6,today:"Today"},DataTable:{checkTableAll:"Select all in the table",uncheckTableAll:"Unselect all in the table",confirm:"Confirm",clear:"Clear"},LegacyTransfer:{sourceTitle:"Source",targetTitle:"Target"},Transfer:{selectAll:"Select all",unselectAll:"Unselect all",clearAll:"Clear",total:e=>`Total ${e} items`,selected:e=>`${e} items selected`},Empty:{description:"No Data"},Select:{placeholder:"Please Select"},TimePicker:{placeholder:"Select Time",positiveText:"OK",negativeText:"Cancel",now:"Now",clear:"Clear"},Pagination:{goto:"Goto",selectionSuffix:"page"},DynamicTags:{add:"Add"},Log:{loading:"Loading"},Input:{placeholder:"Please Input"},InputNumber:{placeholder:"Please Input"},DynamicInput:{create:"Create"},ThemeEditor:{title:"Theme Editor",clearAllVars:"Clear All Variables",clearSearch:"Clear Search",filterCompName:"Filter Component Name",filterVarName:"Filter Variable Name",import:"Import",export:"Export",restore:"Reset to Default"},Image:{tipPrevious:"Previous picture (←)",tipNext:"Next picture (→)",tipCounterclockwise:"Counterclockwise",tipClockwise:"Clockwise",tipZoomOut:"Zoom out",tipZoomIn:"Zoom in",tipDownload:"Download",tipClose:"Close (Esc)",tipOriginalSize:"Zoom to original size"}},O6=$6;function ol(e){return function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,o=e.formats[n]||e.formats[e.defaultWidth];return o}}function Xr(e){return function(t,n){var o=n!=null&&n.context?String(n.context):"standalone",r;if(o==="formatting"&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,a=n!=null&&n.width?String(n.width):i;r=e.formattingValues[a]||e.formattingValues[i]}else{var s=e.defaultWidth,l=n!=null&&n.width?String(n.width):e.defaultWidth;r=e.values[l]||e.values[s]}var c=e.argumentCallback?e.argumentCallback(t):t;return r[c]}}function Zr(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.width,r=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;var a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?B6(s,function(u){return u.test(a)}):H6(s,function(u){return u.test(a)}),c;c=e.valueCallback?e.valueCallback(l):l,c=n.valueCallback?n.valueCallback(c):c;var d=t.slice(a.length);return{value:c,rest:d}}}function H6(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function B6(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},o=t.match(e.matchPattern);if(!o)return null;var r=o[0],i=t.match(e.parsePattern);if(!i)return null;var a=e.valueCallback?e.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;var s=t.slice(r.length);return{value:a,rest:s}}}var z6={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},F6=function(t,n,o){var r,i=z6[t];return typeof i=="string"?r=i:n===1?r=i.one:r=i.other.replace("{{count}}",n.toString()),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"in "+r:r+" ago":r};const W6=F6;var j6={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},G6={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},V6={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},U6={date:ol({formats:j6,defaultWidth:"full"}),time:ol({formats:G6,defaultWidth:"full"}),dateTime:ol({formats:V6,defaultWidth:"full"})};const K6=U6;var q6={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},X6=function(t,n,o,r){return q6[t]};const Z6=X6;var Y6={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},J6={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Q6={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},eS={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},tS={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},nS={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},oS=function(t,n){var o=Number(t),r=o%100;if(r>20||r<10)switch(r%10){case 1:return o+"st";case 2:return o+"nd";case 3:return o+"rd"}return o+"th"},rS={ordinalNumber:oS,era:Xr({values:Y6,defaultWidth:"wide"}),quarter:Xr({values:J6,defaultWidth:"wide",argumentCallback:function(t){return t-1}}),month:Xr({values:Q6,defaultWidth:"wide"}),day:Xr({values:eS,defaultWidth:"wide"}),dayPeriod:Xr({values:tS,defaultWidth:"wide",formattingValues:nS,defaultFormattingWidth:"wide"})};const iS=rS;var aS=/^(\d+)(th|st|nd|rd)?/i,sS=/\d+/i,lS={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},cS={any:[/^b/i,/^(a|c)/i]},dS={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},uS={any:[/1/i,/2/i,/3/i,/4/i]},hS={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},fS={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},gS={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},mS={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},pS={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},bS={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},vS={ordinalNumber:N6({matchPattern:aS,parsePattern:sS,valueCallback:function(t){return parseInt(t,10)}}),era:Zr({matchPatterns:lS,defaultMatchWidth:"wide",parsePatterns:cS,defaultParseWidth:"any"}),quarter:Zr({matchPatterns:dS,defaultMatchWidth:"wide",parsePatterns:uS,defaultParseWidth:"any",valueCallback:function(t){return t+1}}),month:Zr({matchPatterns:hS,defaultMatchWidth:"wide",parsePatterns:fS,defaultParseWidth:"any"}),day:Zr({matchPatterns:gS,defaultMatchWidth:"wide",parsePatterns:mS,defaultParseWidth:"any"}),dayPeriod:Zr({matchPatterns:pS,defaultMatchWidth:"any",parsePatterns:bS,defaultParseWidth:"any"})};const yS=vS;var CS={code:"en-US",formatDistance:W6,formatLong:K6,formatRelative:Z6,localize:iS,match:yS,options:{weekStartsOn:0,firstWeekContainsDate:1}};const kS=CS,xS={name:"en-US",locale:kS},SS=xS;function TS(e){const{mergedLocaleRef:t,mergedDateLocaleRef:n}=Ae(jn,null)||{},o=N(()=>{var i,a;return(a=(i=t==null?void 0:t.value)===null||i===void 0?void 0:i[e])!==null&&a!==void 0?a:O6[e]});return{dateLocaleRef:N(()=>{var i;return(i=n==null?void 0:n.value)!==null&&i!==void 0?i:SS}),localeRef:o}}function Dr(e,t,n){if(!t)return;const o=Oi(),r=Ae(jn,null),i=()=>{const a=n.value;t.mount({id:a===void 0?e:a+e,head:!0,anchorMetaName:Pi,props:{bPrefix:a?`.${a}-`:void 0},ssr:o}),r!=null&&r.preflightStyleDisabled||np.mount({id:"n-global",head:!0,anchorMetaName:Pi,ssr:o})};o?i():Ln(i)}function At(e,t,n,o){var r;n||Dg("useThemeClass","cssVarsRef is not passed");const i=(r=Ae(jn,null))===null||r===void 0?void 0:r.mergedThemeHashRef,a=V(""),s=Oi();let l;const c=`__${e}`,d=()=>{let u=c;const h=t?t.value:void 0,g=i==null?void 0:i.value;g&&(u+="-"+g),h&&(u+="-"+h);const{themeOverrides:f,builtinThemeOverrides:b}=o;f&&(u+="-"+xi(JSON.stringify(f))),b&&(u+="-"+xi(JSON.stringify(b))),a.value=u,l=()=>{const p=n.value;let m="";for(const k in p)m+=`${k}: ${p[k]};`;z(`.${u}`,m).mount({id:u,ssr:s}),l=void 0}};return lo(()=>{d()}),{themeClass:a,onRender:()=>{l==null||l()}}}function Co(e,t,n){if(!t)return;const o=Oi(),r=N(()=>{const{value:a}=t;if(!a)return;const s=a[e];if(s)return s}),i=()=>{lo(()=>{const{value:a}=n,s=`${a}${e}Rtl`;if(K2(s,o))return;const{value:l}=r;l&&l.style.mount({id:s,head:!0,anchorMetaName:Pi,props:{bPrefix:a?`.${a}-`:void 0},ssr:o})})};return o?i():Ln(i),r}function $r(e,t){return ce({name:m4(e),setup(){var n;const o=(n=Ae(jn,null))===null||n===void 0?void 0:n.mergedIconsRef;return()=>{var r;const i=(r=o==null?void 0:o.value)===null||r===void 0?void 0:r[e];return i?i():t}}})}const wS=ce({name:"ChevronRight",render(){return T("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},T("path",{d:"M5.64645 3.14645C5.45118 3.34171 5.45118 3.65829 5.64645 3.85355L9.79289 8L5.64645 12.1464C5.45118 12.3417 5.45118 12.6583 5.64645 12.8536C5.84171 13.0488 6.15829 13.0488 6.35355 12.8536L10.8536 8.35355C11.0488 8.15829 11.0488 7.84171 10.8536 7.64645L6.35355 3.14645C6.15829 2.95118 5.84171 2.95118 5.64645 3.14645Z",fill:"currentColor"}))}}),_S=$r("close",T("svg",{viewBox:"0 0 12 12",version:"1.1",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0},T("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},T("g",{fill:"currentColor","fill-rule":"nonzero"},T("path",{d:"M2.08859116,2.2156945 L2.14644661,2.14644661 C2.32001296,1.97288026 2.58943736,1.95359511 2.7843055,2.08859116 L2.85355339,2.14644661 L6,5.293 L9.14644661,2.14644661 C9.34170876,1.95118446 9.65829124,1.95118446 9.85355339,2.14644661 C10.0488155,2.34170876 10.0488155,2.65829124 9.85355339,2.85355339 L6.707,6 L9.85355339,9.14644661 C10.0271197,9.32001296 10.0464049,9.58943736 9.91140884,9.7843055 L9.85355339,9.85355339 C9.67998704,10.0271197 9.41056264,10.0464049 9.2156945,9.91140884 L9.14644661,9.85355339 L6,6.707 L2.85355339,9.85355339 C2.65829124,10.0488155 2.34170876,10.0488155 2.14644661,9.85355339 C1.95118446,9.65829124 1.95118446,9.34170876 2.14644661,9.14644661 L5.293,6 L2.14644661,2.85355339 C1.97288026,2.67998704 1.95359511,2.41056264 2.08859116,2.2156945 L2.14644661,2.14644661 L2.08859116,2.2156945 Z"}))))),PS=ce({name:"Eye",render(){return T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},T("path",{d:"M255.66 112c-77.94 0-157.89 45.11-220.83 135.33a16 16 0 0 0-.27 17.77C82.92 340.8 161.8 400 255.66 400c92.84 0 173.34-59.38 221.79-135.25a16.14 16.14 0 0 0 0-17.47C428.89 172.28 347.8 112 255.66 112z",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32"}),T("circle",{cx:"256",cy:"256",r:"80",fill:"none",stroke:"currentColor","stroke-miterlimit":"10","stroke-width":"32"}))}}),AS=ce({name:"EyeOff",render(){return T("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},T("path",{d:"M432 448a15.92 15.92 0 0 1-11.31-4.69l-352-352a16 16 0 0 1 22.62-22.62l352 352A16 16 0 0 1 432 448z",fill:"currentColor"}),T("path",{d:"M255.66 384c-41.49 0-81.5-12.28-118.92-36.5c-34.07-22-64.74-53.51-88.7-91v-.08c19.94-28.57 41.78-52.73 65.24-72.21a2 2 0 0 0 .14-2.94L93.5 161.38a2 2 0 0 0-2.71-.12c-24.92 21-48.05 46.76-69.08 76.92a31.92 31.92 0 0 0-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416a239.13 239.13 0 0 0 75.8-12.58a2 2 0 0 0 .77-3.31l-21.58-21.58a4 4 0 0 0-3.83-1a204.8 204.8 0 0 1-51.16 6.47z",fill:"currentColor"}),T("path",{d:"M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96a227.34 227.34 0 0 0-74.89 12.83a2 2 0 0 0-.75 3.31l21.55 21.55a4 4 0 0 0 3.88 1a192.82 192.82 0 0 1 50.21-6.69c40.69 0 80.58 12.43 118.55 37c34.71 22.4 65.74 53.88 89.76 91a.13.13 0 0 1 0 .16a310.72 310.72 0 0 1-64.12 72.73a2 2 0 0 0-.15 2.95l19.9 19.89a2 2 0 0 0 2.7.13a343.49 343.49 0 0 0 68.64-78.48a32.2 32.2 0 0 0-.1-34.78z",fill:"currentColor"}),T("path",{d:"M256 160a95.88 95.88 0 0 0-21.37 2.4a2 2 0 0 0-1 3.38l112.59 112.56a2 2 0 0 0 3.38-1A96 96 0 0 0 256 160z",fill:"currentColor"}),T("path",{d:"M165.78 233.66a2 2 0 0 0-3.38 1a96 96 0 0 0 115 115a2 2 0 0 0 1-3.38z",fill:"currentColor"}))}}),Vc=$r("error",T("svg",{viewBox:"0 0 48 48",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},T("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},T("g",{"fill-rule":"nonzero"},T("path",{d:"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M17.8838835,16.1161165 L17.7823881,16.0249942 C17.3266086,15.6583353 16.6733914,15.6583353 16.2176119,16.0249942 L16.1161165,16.1161165 L16.0249942,16.2176119 C15.6583353,16.6733914 15.6583353,17.3266086 16.0249942,17.7823881 L16.1161165,17.8838835 L22.233,24 L16.1161165,30.1161165 L16.0249942,30.2176119 C15.6583353,30.6733914 15.6583353,31.3266086 16.0249942,31.7823881 L16.1161165,31.8838835 L16.2176119,31.9750058 C16.6733914,32.3416647 17.3266086,32.3416647 17.7823881,31.9750058 L17.8838835,31.8838835 L24,25.767 L30.1161165,31.8838835 L30.2176119,31.9750058 C30.6733914,32.3416647 31.3266086,32.3416647 31.7823881,31.9750058 L31.8838835,31.8838835 L31.9750058,31.7823881 C32.3416647,31.3266086 32.3416647,30.6733914 31.9750058,30.2176119 L31.8838835,30.1161165 L25.767,24 L31.8838835,17.8838835 L31.9750058,17.7823881 C32.3416647,17.3266086 32.3416647,16.6733914 31.9750058,16.2176119 L31.8838835,16.1161165 L31.7823881,16.0249942 C31.3266086,15.6583353 30.6733914,15.6583353 30.2176119,16.0249942 L30.1161165,16.1161165 L24,22.233 L17.8838835,16.1161165 L17.7823881,16.0249942 L17.8838835,16.1161165 Z"}))))),za=$r("info",T("svg",{viewBox:"0 0 28 28",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},T("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},T("g",{"fill-rule":"nonzero"},T("path",{d:"M14,2 C20.6274,2 26,7.37258 26,14 C26,20.6274 20.6274,26 14,26 C7.37258,26 2,20.6274 2,14 C2,7.37258 7.37258,2 14,2 Z M14,11 C13.4477,11 13,11.4477 13,12 L13,12 L13,20 C13,20.5523 13.4477,21 14,21 C14.5523,21 15,20.5523 15,20 L15,20 L15,12 C15,11.4477 14.5523,11 14,11 Z M14,6.75 C13.3096,6.75 12.75,7.30964 12.75,8 C12.75,8.69036 13.3096,9.25 14,9.25 C14.6904,9.25 15.25,8.69036 15.25,8 C15.25,7.30964 14.6904,6.75 14,6.75 Z"}))))),Uc=$r("success",T("svg",{viewBox:"0 0 48 48",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},T("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},T("g",{"fill-rule":"nonzero"},T("path",{d:"M24,4 C35.045695,4 44,12.954305 44,24 C44,35.045695 35.045695,44 24,44 C12.954305,44 4,35.045695 4,24 C4,12.954305 12.954305,4 24,4 Z M32.6338835,17.6161165 C32.1782718,17.1605048 31.4584514,17.1301307 30.9676119,17.5249942 L30.8661165,17.6161165 L20.75,27.732233 L17.1338835,24.1161165 C16.6457281,23.6279612 15.8542719,23.6279612 15.3661165,24.1161165 C14.9105048,24.5717282 14.8801307,25.2915486 15.2749942,25.7823881 L15.3661165,25.8838835 L19.8661165,30.3838835 C20.3217282,30.8394952 21.0415486,30.8698693 21.5323881,30.4750058 L21.6338835,30.3838835 L32.6338835,19.3838835 C33.1220388,18.8957281 33.1220388,18.1042719 32.6338835,17.6161165 Z"}))))),Kc=$r("warning",T("svg",{viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},T("g",{stroke:"none","stroke-width":"1","fill-rule":"evenodd"},T("g",{"fill-rule":"nonzero"},T("path",{d:"M12,2 C17.523,2 22,6.478 22,12 C22,17.522 17.523,22 12,22 C6.477,22 2,17.522 2,12 C2,6.478 6.477,2 12,2 Z M12.0018002,15.0037242 C11.450254,15.0037242 11.0031376,15.4508407 11.0031376,16.0023869 C11.0031376,16.553933 11.450254,17.0010495 12.0018002,17.0010495 C12.5533463,17.0010495 13.0004628,16.553933 13.0004628,16.0023869 C13.0004628,15.4508407 12.5533463,15.0037242 12.0018002,15.0037242 Z M11.99964,7 C11.4868042,7.00018474 11.0642719,7.38637706 11.0066858,7.8837365 L11,8.00036004 L11.0018003,13.0012393 L11.00857,13.117858 C11.0665141,13.6151758 11.4893244,14.0010638 12.0021602,14.0008793 C12.514996,14.0006946 12.9375283,13.6145023 12.9951144,13.1171428 L13.0018002,13.0005193 L13,7.99964009 L12.9932303,7.8830214 C12.9352861,7.38570354 12.5124758,6.99981552 11.99964,7 Z"}))))),RS=ce({name:"ChevronDown",render(){return T("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},T("path",{d:"M3.14645 5.64645C3.34171 5.45118 3.65829 5.45118 3.85355 5.64645L8 9.79289L12.1464 5.64645C12.3417 5.45118 12.6583 5.45118 12.8536 5.64645C13.0488 5.84171 13.0488 6.15829 12.8536 6.35355L8.35355 10.8536C8.15829 11.0488 7.84171 11.0488 7.64645 10.8536L3.14645 6.35355C2.95118 6.15829 2.95118 5.84171 3.14645 5.64645Z",fill:"currentColor"}))}}),ES=$r("clear",T("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},T("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},T("g",{fill:"currentColor","fill-rule":"nonzero"},T("path",{d:"M8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 C2,4.6862915 4.6862915,2 8,2 Z M6.5343055,5.83859116 C6.33943736,5.70359511 6.07001296,5.72288026 5.89644661,5.89644661 L5.89644661,5.89644661 L5.83859116,5.9656945 C5.70359511,6.16056264 5.72288026,6.42998704 5.89644661,6.60355339 L5.89644661,6.60355339 L7.293,8 L5.89644661,9.39644661 L5.83859116,9.4656945 C5.70359511,9.66056264 5.72288026,9.92998704 5.89644661,10.1035534 L5.89644661,10.1035534 L5.9656945,10.1614088 C6.16056264,10.2964049 6.42998704,10.2771197 6.60355339,10.1035534 L6.60355339,10.1035534 L8,8.707 L9.39644661,10.1035534 L9.4656945,10.1614088 C9.66056264,10.2964049 9.92998704,10.2771197 10.1035534,10.1035534 L10.1035534,10.1035534 L10.1614088,10.0343055 C10.2964049,9.83943736 10.2771197,9.57001296 10.1035534,9.39644661 L10.1035534,9.39644661 L8.707,8 L10.1035534,6.60355339 L10.1614088,6.5343055 C10.2964049,6.33943736 10.2771197,6.07001296 10.1035534,5.89644661 L10.1035534,5.89644661 L10.0343055,5.83859116 C9.83943736,5.70359511 9.57001296,5.72288026 9.39644661,5.89644661 L9.39644661,5.89644661 L8,7.293 L6.60355339,5.89644661 Z"}))))),vs=ce({name:"BaseIconSwitchTransition",setup(e,{slots:t}){const n=Di();return()=>T(pn,{name:"icon-switch-transition",appear:n.value},t)}}),op=ce({name:"FadeInExpandTransition",props:{appear:Boolean,group:Boolean,mode:String,onLeave:Function,onAfterLeave:Function,onAfterEnter:Function,width:Boolean,reverse:Boolean},setup(e,{slots:t}){function n(s){e.width?s.style.maxWidth=`${s.offsetWidth}px`:s.style.maxHeight=`${s.offsetHeight}px`,s.offsetWidth}function o(s){e.width?s.style.maxWidth="0":s.style.maxHeight="0",s.offsetWidth;const{onLeave:l}=e;l&&l()}function r(s){e.width?s.style.maxWidth="":s.style.maxHeight="";const{onAfterLeave:l}=e;l&&l()}function i(s){if(s.style.transition="none",e.width){const l=s.offsetWidth;s.style.maxWidth="0",s.offsetWidth,s.style.transition="",s.style.maxWidth=`${l}px`}else if(e.reverse)s.style.maxHeight=`${s.offsetHeight}px`,s.offsetHeight,s.style.transition="",s.style.maxHeight="0";else{const l=s.offsetHeight;s.style.maxHeight="0",s.offsetWidth,s.style.transition="",s.style.maxHeight=`${l}px`}s.offsetWidth}function a(s){var l;e.width?s.style.maxWidth="":e.reverse||(s.style.maxHeight=""),(l=e.onAfterEnter)===null||l===void 0||l.call(e)}return()=>{const{group:s,width:l,appear:c,mode:d}=e,u=s?s2:pn,h={name:l?"fade-in-width-expand-transition":"fade-in-height-expand-transition",appear:c,onEnter:i,onAfterEnter:a,onBeforeLeave:n,onLeave:o,onAfterLeave:r};return s||(h.mode=d),T(u,h,t)}}}),IS=te("base-icon",` + height: 1em; + width: 1em; + line-height: 1em; + text-align: center; + display: inline-block; + position: relative; + fill: currentColor; + transform: translateZ(0); +`,[z("svg",` + height: 1em; + width: 1em; + `)]),fo=ce({name:"BaseIcon",props:{role:String,ariaLabel:String,ariaDisabled:{type:Boolean,default:void 0},ariaHidden:{type:Boolean,default:void 0},clsPrefix:{type:String,required:!0},onClick:Function,onMousedown:Function,onMouseup:Function},setup(e){Dr("-base-icon",IS,Ue(e,"clsPrefix"))},render(){return T("i",{class:`${this.clsPrefix}-base-icon`,onClick:this.onClick,onMousedown:this.onMousedown,onMouseup:this.onMouseup,role:this.role,"aria-label":this.ariaLabel,"aria-hidden":this.ariaHidden,"aria-disabled":this.ariaDisabled},this.$slots)}}),MS=te("base-close",` + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + background-color: transparent; + color: var(--n-close-icon-color); + border-radius: var(--n-close-border-radius); + height: var(--n-close-size); + width: var(--n-close-size); + font-size: var(--n-close-icon-size); + outline: none; + border: none; + position: relative; + padding: 0; +`,[J("absolute",` + height: var(--n-close-icon-size); + width: var(--n-close-icon-size); + `),z("&::before",` + content: ""; + position: absolute; + width: var(--n-close-size); + height: var(--n-close-size); + left: 50%; + top: 50%; + transform: translateY(-50%) translateX(-50%); + transition: inherit; + border-radius: inherit; + `),Dt("disabled",[z("&:hover",` + color: var(--n-close-icon-color-hover); + `),z("&:hover::before",` + background-color: var(--n-close-color-hover); + `),z("&:focus::before",` + background-color: var(--n-close-color-hover); + `),z("&:active",` + color: var(--n-close-icon-color-pressed); + `),z("&:active::before",` + background-color: var(--n-close-color-pressed); + `)]),J("disabled",` + cursor: not-allowed; + color: var(--n-close-icon-color-disabled); + background-color: transparent; + `),J("round",[z("&::before",` + border-radius: 50%; + `)])]),ys=ce({name:"BaseClose",props:{isButtonTag:{type:Boolean,default:!0},clsPrefix:{type:String,required:!0},disabled:{type:Boolean,default:void 0},focusable:{type:Boolean,default:!0},round:Boolean,onClick:Function,absolute:Boolean},setup(e){return Dr("-base-close",MS,Ue(e,"clsPrefix")),()=>{const{clsPrefix:t,disabled:n,absolute:o,round:r,isButtonTag:i}=e;return T(i?"button":"div",{type:i?"button":void 0,tabindex:n||!e.focusable?-1:0,"aria-disabled":n,"aria-label":"close",role:i?void 0:"button",disabled:n,class:[`${t}-base-close`,o&&`${t}-base-close--absolute`,n&&`${t}-base-close--disabled`,r&&`${t}-base-close--round`],onMousedown:s=>{e.focusable||s.preventDefault()},onClick:e.onClick},T(fo,{clsPrefix:t},{default:()=>T(_S,null)}))}}}),{cubicBezierEaseInOut:LS}=yo;function Ri({originalTransform:e="",left:t=0,top:n=0,transition:o=`all .3s ${LS} !important`}={}){return[z("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:e+" scale(0.75)",left:t,top:n,opacity:0}),z("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${e}`,left:t,top:n,opacity:1}),z("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:t,top:n,transition:o})]}const DS=z([z("@keyframes rotator",` + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + }`),te("base-loading",` + position: relative; + line-height: 0; + width: 1em; + height: 1em; + `,[G("transition-wrapper",` + position: absolute; + width: 100%; + height: 100%; + `,[Ri()]),G("placeholder",` + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%) translateY(-50%); + `,[Ri({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})]),G("container",` + animation: rotator 3s linear infinite both; + `,[G("icon",` + height: 1em; + width: 1em; + `)])])]),rl="1.6s",$S={strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0}},qc=ce({name:"BaseLoading",props:Object.assign({clsPrefix:{type:String,required:!0},show:{type:Boolean,default:!0},scale:{type:Number,default:1},radius:{type:Number,default:100}},$S),setup(e){Dr("-base-loading",DS,Ue(e,"clsPrefix"))},render(){const{clsPrefix:e,radius:t,strokeWidth:n,stroke:o,scale:r}=this,i=t/r;return T("div",{class:`${e}-base-loading`,role:"img","aria-label":"loading"},T(vs,null,{default:()=>this.show?T("div",{key:"icon",class:`${e}-base-loading__transition-wrapper`},T("div",{class:`${e}-base-loading__container`},T("svg",{class:`${e}-base-loading__icon`,viewBox:`0 0 ${2*i} ${2*i}`,xmlns:"http://www.w3.org/2000/svg",style:{color:o}},T("g",null,T("animateTransform",{attributeName:"transform",type:"rotate",values:`0 ${i} ${i};270 ${i} ${i}`,begin:"0s",dur:rl,fill:"freeze",repeatCount:"indefinite"}),T("circle",{class:`${e}-base-loading__icon`,fill:"none",stroke:"currentColor","stroke-width":n,"stroke-linecap":"round",cx:i,cy:i,r:t-n/2,"stroke-dasharray":5.67*t,"stroke-dashoffset":18.48*t},T("animateTransform",{attributeName:"transform",type:"rotate",values:`0 ${i} ${i};135 ${i} ${i};450 ${i} ${i}`,begin:"0s",dur:rl,fill:"freeze",repeatCount:"indefinite"}),T("animate",{attributeName:"stroke-dashoffset",values:`${5.67*t};${1.42*t};${5.67*t}`,begin:"0s",dur:rl,fill:"freeze",repeatCount:"indefinite"})))))):T("div",{key:"placeholder",class:`${e}-base-loading__placeholder`},this.$slots)}))}});function Ch(e){return Array.isArray(e)?e:[e]}const Fl={STOP:"STOP"};function rp(e,t){const n=t(e);e.children!==void 0&&n!==Fl.STOP&&e.children.forEach(o=>rp(o,t))}function OS(e,t={}){const{preserveGroup:n=!1}=t,o=[],r=n?a=>{a.isLeaf||(o.push(a.key),i(a.children))}:a=>{a.isLeaf||(a.isGroup||o.push(a.key),i(a.children))};function i(a){a.forEach(r)}return i(e),o}function HS(e,t){const{isLeaf:n}=e;return n!==void 0?n:!t(e)}function BS(e){return e.children}function NS(e){return e.key}function zS(){return!1}function FS(e,t){const{isLeaf:n}=e;return!(n===!1&&!Array.isArray(t(e)))}function WS(e){return e.disabled===!0}function jS(e,t){return e.isLeaf===!1&&!Array.isArray(t(e))}function il(e){var t;return e==null?[]:Array.isArray(e)?e:(t=e.checkedKeys)!==null&&t!==void 0?t:[]}function al(e){var t;return e==null||Array.isArray(e)?[]:(t=e.indeterminateKeys)!==null&&t!==void 0?t:[]}function GS(e,t){const n=new Set(e);return t.forEach(o=>{n.has(o)||n.add(o)}),Array.from(n)}function VS(e,t){const n=new Set(e);return t.forEach(o=>{n.has(o)&&n.delete(o)}),Array.from(n)}function US(e){return(e==null?void 0:e.type)==="group"}class KS extends Error{constructor(){super(),this.message="SubtreeNotLoadedError: checking a subtree whose required nodes are not fully loaded."}}function qS(e,t,n,o){return Fa(t.concat(e),n,o,!1)}function XS(e,t){const n=new Set;return e.forEach(o=>{const r=t.treeNodeMap.get(o);if(r!==void 0){let i=r.parent;for(;i!==null&&!(i.disabled||n.has(i.key));)n.add(i.key),i=i.parent}}),n}function ZS(e,t,n,o){const r=Fa(t,n,o,!1),i=Fa(e,n,o,!0),a=XS(e,n),s=[];return r.forEach(l=>{(i.has(l)||a.has(l))&&s.push(l)}),s.forEach(l=>r.delete(l)),r}function sl(e,t){const{checkedKeys:n,keysToCheck:o,keysToUncheck:r,indeterminateKeys:i,cascade:a,leafOnly:s,checkStrategy:l,allowNotLoaded:c}=e;if(!a)return o!==void 0?{checkedKeys:GS(n,o),indeterminateKeys:Array.from(i)}:r!==void 0?{checkedKeys:VS(n,r),indeterminateKeys:Array.from(i)}:{checkedKeys:Array.from(n),indeterminateKeys:Array.from(i)};const{levelTreeNodeMap:d}=t;let u;r!==void 0?u=ZS(r,n,t,c):o!==void 0?u=qS(o,n,t,c):u=Fa(n,t,c,!1);const h=l==="parent",g=l==="child"||s,f=u,b=new Set,p=Math.max.apply(null,Array.from(d.keys()));for(let m=p;m>=0;m-=1){const k=m===0,x=d.get(m);for(const y of x){if(y.isLeaf)continue;const{key:S,shallowLoaded:P}=y;if(g&&P&&y.children.forEach(L=>{!L.disabled&&!L.isLeaf&&L.shallowLoaded&&f.has(L.key)&&f.delete(L.key)}),y.disabled||!P)continue;let v=!0,w=!1,R=!0;for(const L of y.children){const j=L.key;if(!L.disabled){if(R&&(R=!1),f.has(j))w=!0;else if(b.has(j)){w=!0,v=!1;break}else if(v=!1,w)break}}v&&!R?(h&&y.children.forEach(L=>{!L.disabled&&f.has(L.key)&&f.delete(L.key)}),f.add(S)):w&&b.add(S),k&&g&&f.has(S)&&f.delete(S)}}return{checkedKeys:Array.from(f),indeterminateKeys:Array.from(b)}}function Fa(e,t,n,o){const{treeNodeMap:r,getChildren:i}=t,a=new Set,s=new Set(e);return e.forEach(l=>{const c=r.get(l);c!==void 0&&rp(c,d=>{if(d.disabled)return Fl.STOP;const{key:u}=d;if(!a.has(u)&&(a.add(u),s.add(u),jS(d.rawNode,i))){if(o)return Fl.STOP;if(!n)throw new KS}})}),s}function YS(e,{includeGroup:t=!1,includeSelf:n=!0},o){var r;const i=o.treeNodeMap;let a=e==null?null:(r=i.get(e))!==null&&r!==void 0?r:null;const s={keyPath:[],treeNodePath:[],treeNode:a};if(a!=null&&a.ignored)return s.treeNode=null,s;for(;a;)!a.ignored&&(t||!a.isGroup)&&s.treeNodePath.push(a),a=a.parent;return s.treeNodePath.reverse(),n||s.treeNodePath.pop(),s.keyPath=s.treeNodePath.map(l=>l.key),s}function JS(e){if(e.length===0)return null;const t=e[0];return t.isGroup||t.ignored||t.disabled?t.getNext():t}function QS(e,t){const n=e.siblings,o=n.length,{index:r}=e;return t?n[(r+1)%o]:r===n.length-1?null:n[r+1]}function kh(e,t,{loop:n=!1,includeDisabled:o=!1}={}){const r=t==="prev"?eT:QS,i={reverse:t==="prev"};let a=!1,s=null;function l(c){if(c!==null){if(c===e){if(!a)a=!0;else if(!e.disabled&&!e.isGroup){s=e;return}}else if((!c.disabled||o)&&!c.ignored&&!c.isGroup){s=c;return}if(c.isGroup){const d=Xc(c,i);d!==null?s=d:l(r(c,n))}else{const d=r(c,!1);if(d!==null)l(d);else{const u=tT(c);u!=null&&u.isGroup?l(r(u,n)):n&&l(r(c,!0))}}}}return l(e),s}function eT(e,t){const n=e.siblings,o=n.length,{index:r}=e;return t?n[(r-1+o)%o]:r===0?null:n[r-1]}function tT(e){return e.parent}function Xc(e,t={}){const{reverse:n=!1}=t,{children:o}=e;if(o){const{length:r}=o,i=n?r-1:0,a=n?-1:r,s=n?-1:1;for(let l=i;l!==a;l+=s){const c=o[l];if(!c.disabled&&!c.ignored)if(c.isGroup){const d=Xc(c,t);if(d!==null)return d}else return c}}return null}const nT={getChild(){return this.ignored?null:Xc(this)},getParent(){const{parent:e}=this;return e!=null&&e.isGroup?e.getParent():e},getNext(e={}){return kh(this,"next",e)},getPrev(e={}){return kh(this,"prev",e)}};function oT(e,t){const n=t?new Set(t):void 0,o=[];function r(i){i.forEach(a=>{o.push(a),!(a.isLeaf||!a.children||a.ignored)&&(a.isGroup||n===void 0||n.has(a.key))&&r(a.children)})}return r(e),o}function rT(e,t){const n=e.key;for(;t;){if(t.key===n)return!0;t=t.parent}return!1}function ip(e,t,n,o,r,i=null,a=0){const s=[];return e.forEach((l,c)=>{var d;const u=Object.create(o);if(u.rawNode=l,u.siblings=s,u.level=a,u.index=c,u.isFirstChild=c===0,u.isLastChild=c+1===e.length,u.parent=i,!u.ignored){const h=r(l);Array.isArray(h)&&(u.children=ip(h,t,n,o,r,u,a+1))}s.push(u),t.set(u.key,u),n.has(a)||n.set(a,[]),(d=n.get(a))===null||d===void 0||d.push(u)}),s}function iT(e,t={}){var n;const o=new Map,r=new Map,{getDisabled:i=WS,getIgnored:a=zS,getIsGroup:s=US,getKey:l=NS}=t,c=(n=t.getChildren)!==null&&n!==void 0?n:BS,d=t.ignoreEmptyChildren?y=>{const S=c(y);return Array.isArray(S)?S.length?S:null:S}:c,u=Object.assign({get key(){return l(this.rawNode)},get disabled(){return i(this.rawNode)},get isGroup(){return s(this.rawNode)},get isLeaf(){return HS(this.rawNode,d)},get shallowLoaded(){return FS(this.rawNode,d)},get ignored(){return a(this.rawNode)},contains(y){return rT(this,y)}},nT),h=ip(e,o,r,u,d);function g(y){if(y==null)return null;const S=o.get(y);return S&&!S.isGroup&&!S.ignored?S:null}function f(y){if(y==null)return null;const S=o.get(y);return S&&!S.ignored?S:null}function b(y,S){const P=f(y);return P?P.getPrev(S):null}function p(y,S){const P=f(y);return P?P.getNext(S):null}function m(y){const S=f(y);return S?S.getParent():null}function k(y){const S=f(y);return S?S.getChild():null}const x={treeNodes:h,treeNodeMap:o,levelTreeNodeMap:r,maxLevel:Math.max(...r.keys()),getChildren:d,getFlattenedNodes(y){return oT(h,y)},getNode:g,getPrev:b,getNext:p,getParent:m,getChild:k,getFirstAvailableNode(){return JS(h)},getPath(y,S={}){return YS(y,S,x)},getCheckedKeys(y,S={}){const{cascade:P=!0,leafOnly:v=!1,checkStrategy:w="all",allowNotLoaded:R=!1}=S;return sl({checkedKeys:il(y),indeterminateKeys:al(y),cascade:P,leafOnly:v,checkStrategy:w,allowNotLoaded:R},x)},check(y,S,P={}){const{cascade:v=!0,leafOnly:w=!1,checkStrategy:R="all",allowNotLoaded:L=!1}=P;return sl({checkedKeys:il(S),indeterminateKeys:al(S),keysToCheck:y==null?[]:Ch(y),cascade:v,leafOnly:w,checkStrategy:R,allowNotLoaded:L},x)},uncheck(y,S,P={}){const{cascade:v=!0,leafOnly:w=!1,checkStrategy:R="all",allowNotLoaded:L=!1}=P;return sl({checkedKeys:il(S),indeterminateKeys:al(S),keysToUncheck:y==null?[]:Ch(y),cascade:v,leafOnly:w,checkStrategy:R,allowNotLoaded:L},x)},getNonLeafKeys(y={}){return OS(h,y)}};return x}const he={neutralBase:"#000",neutralInvertBase:"#fff",neutralTextBase:"#fff",neutralPopover:"rgb(72, 72, 78)",neutralCard:"rgb(24, 24, 28)",neutralModal:"rgb(44, 44, 50)",neutralBody:"rgb(16, 16, 20)",alpha1:"0.9",alpha2:"0.82",alpha3:"0.52",alpha4:"0.38",alpha5:"0.28",alphaClose:"0.52",alphaDisabled:"0.38",alphaDisabledInput:"0.06",alphaPending:"0.09",alphaTablePending:"0.06",alphaTableStriped:"0.05",alphaPressed:"0.05",alphaAvatar:"0.18",alphaRail:"0.2",alphaProgressRail:"0.12",alphaBorder:"0.24",alphaDivider:"0.09",alphaInput:"0.1",alphaAction:"0.06",alphaTab:"0.04",alphaScrollbar:"0.2",alphaScrollbarHover:"0.3",alphaCode:"0.12",alphaTag:"0.2",primaryHover:"#7fe7c4",primaryDefault:"#63e2b7",primaryActive:"#5acea7",primarySuppl:"rgb(42, 148, 125)",infoHover:"#8acbec",infoDefault:"#70c0e8",infoActive:"#66afd3",infoSuppl:"rgb(56, 137, 197)",errorHover:"#e98b8b",errorDefault:"#e88080",errorActive:"#e57272",errorSuppl:"rgb(208, 58, 82)",warningHover:"#f5d599",warningDefault:"#f2c97d",warningActive:"#e6c260",warningSuppl:"rgb(240, 138, 0)",successHover:"#7fe7c4",successDefault:"#63e2b7",successActive:"#5acea7",successSuppl:"rgb(42, 148, 125)"},aT=Wn(he.neutralBase),ap=Wn(he.neutralInvertBase),sT="rgba("+ap.slice(0,3).join(", ")+", ";function Ne(e){return sT+String(e)+")"}function lT(e){const t=Array.from(ap);return t[3]=Number(e),fe(aT,t)}const cT=Object.assign(Object.assign({name:"common"},yo),{baseColor:he.neutralBase,primaryColor:he.primaryDefault,primaryColorHover:he.primaryHover,primaryColorPressed:he.primaryActive,primaryColorSuppl:he.primarySuppl,infoColor:he.infoDefault,infoColorHover:he.infoHover,infoColorPressed:he.infoActive,infoColorSuppl:he.infoSuppl,successColor:he.successDefault,successColorHover:he.successHover,successColorPressed:he.successActive,successColorSuppl:he.successSuppl,warningColor:he.warningDefault,warningColorHover:he.warningHover,warningColorPressed:he.warningActive,warningColorSuppl:he.warningSuppl,errorColor:he.errorDefault,errorColorHover:he.errorHover,errorColorPressed:he.errorActive,errorColorSuppl:he.errorSuppl,textColorBase:he.neutralTextBase,textColor1:Ne(he.alpha1),textColor2:Ne(he.alpha2),textColor3:Ne(he.alpha3),textColorDisabled:Ne(he.alpha4),placeholderColor:Ne(he.alpha4),placeholderColorDisabled:Ne(he.alpha5),iconColor:Ne(he.alpha4),iconColorDisabled:Ne(he.alpha5),iconColorHover:Ne(Number(he.alpha4)*1.25),iconColorPressed:Ne(Number(he.alpha4)*.8),opacity1:he.alpha1,opacity2:he.alpha2,opacity3:he.alpha3,opacity4:he.alpha4,opacity5:he.alpha5,dividerColor:Ne(he.alphaDivider),borderColor:Ne(he.alphaBorder),closeIconColorHover:Ne(Number(he.alphaClose)),closeIconColor:Ne(Number(he.alphaClose)),closeIconColorPressed:Ne(Number(he.alphaClose)),closeColorHover:"rgba(255, 255, 255, .12)",closeColorPressed:"rgba(255, 255, 255, .08)",clearColor:Ne(he.alpha4),clearColorHover:gt(Ne(he.alpha4),{alpha:1.25}),clearColorPressed:gt(Ne(he.alpha4),{alpha:.8}),scrollbarColor:Ne(he.alphaScrollbar),scrollbarColorHover:Ne(he.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Ne(he.alphaProgressRail),railColor:Ne(he.alphaRail),popoverColor:he.neutralPopover,tableColor:he.neutralCard,cardColor:he.neutralCard,modalColor:he.neutralModal,bodyColor:he.neutralBody,tagColor:lT(he.alphaTag),avatarColor:Ne(he.alphaAvatar),invertedColor:he.neutralBase,inputColor:Ne(he.alphaInput),codeColor:Ne(he.alphaCode),tabColor:Ne(he.alphaTab),actionColor:Ne(he.alphaAction),tableHeaderColor:Ne(he.alphaAction),hoverColor:Ne(he.alphaPending),tableColorHover:Ne(he.alphaTablePending),tableColorStriped:Ne(he.alphaTableStriped),pressedColor:Ne(he.alphaPressed),opacityDisabled:he.alphaDisabled,inputColorDisabled:Ne(he.alphaDisabledInput),buttonColor2:"rgba(255, 255, 255, .08)",buttonColor2Hover:"rgba(255, 255, 255, .12)",buttonColor2Pressed:"rgba(255, 255, 255, .08)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .24), 0 3px 6px 0 rgba(0, 0, 0, .18), 0 5px 12px 4px rgba(0, 0, 0, .12)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .24), 0 6px 12px 0 rgba(0, 0, 0, .16), 0 9px 18px 8px rgba(0, 0, 0, .10)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),ae=cT,ye={neutralBase:"#FFF",neutralInvertBase:"#000",neutralTextBase:"#000",neutralPopover:"#fff",neutralCard:"#fff",neutralModal:"#fff",neutralBody:"#fff",alpha1:"0.82",alpha2:"0.72",alpha3:"0.38",alpha4:"0.24",alpha5:"0.18",alphaClose:"0.6",alphaDisabled:"0.5",alphaDisabledInput:"0.02",alphaPending:"0.05",alphaTablePending:"0.02",alphaPressed:"0.07",alphaAvatar:"0.2",alphaRail:"0.14",alphaProgressRail:".08",alphaBorder:"0.12",alphaDivider:"0.06",alphaInput:"0",alphaAction:"0.02",alphaTab:"0.04",alphaScrollbar:"0.25",alphaScrollbarHover:"0.4",alphaCode:"0.05",alphaTag:"0.02",primaryHover:"#36ad6a",primaryDefault:"#18a058",primaryActive:"#0c7a43",primarySuppl:"#36ad6a",infoHover:"#4098fc",infoDefault:"#2080f0",infoActive:"#1060c9",infoSuppl:"#4098fc",errorHover:"#de576d",errorDefault:"#d03050",errorActive:"#ab1f3f",errorSuppl:"#de576d",warningHover:"#fcb040",warningDefault:"#f0a020",warningActive:"#c97c10",warningSuppl:"#fcb040",successHover:"#36ad6a",successDefault:"#18a058",successActive:"#0c7a43",successSuppl:"#36ad6a"},dT=Wn(ye.neutralBase),sp=Wn(ye.neutralInvertBase),uT="rgba("+sp.slice(0,3).join(", ")+", ";function xh(e){return uT+String(e)+")"}function Bt(e){const t=Array.from(sp);return t[3]=Number(e),fe(dT,t)}const hT=Object.assign(Object.assign({name:"common"},yo),{baseColor:ye.neutralBase,primaryColor:ye.primaryDefault,primaryColorHover:ye.primaryHover,primaryColorPressed:ye.primaryActive,primaryColorSuppl:ye.primarySuppl,infoColor:ye.infoDefault,infoColorHover:ye.infoHover,infoColorPressed:ye.infoActive,infoColorSuppl:ye.infoSuppl,successColor:ye.successDefault,successColorHover:ye.successHover,successColorPressed:ye.successActive,successColorSuppl:ye.successSuppl,warningColor:ye.warningDefault,warningColorHover:ye.warningHover,warningColorPressed:ye.warningActive,warningColorSuppl:ye.warningSuppl,errorColor:ye.errorDefault,errorColorHover:ye.errorHover,errorColorPressed:ye.errorActive,errorColorSuppl:ye.errorSuppl,textColorBase:ye.neutralTextBase,textColor1:"rgb(31, 34, 37)",textColor2:"rgb(51, 54, 57)",textColor3:"rgb(118, 124, 130)",textColorDisabled:Bt(ye.alpha4),placeholderColor:Bt(ye.alpha4),placeholderColorDisabled:Bt(ye.alpha5),iconColor:Bt(ye.alpha4),iconColorHover:gt(Bt(ye.alpha4),{lightness:.75}),iconColorPressed:gt(Bt(ye.alpha4),{lightness:.9}),iconColorDisabled:Bt(ye.alpha5),opacity1:ye.alpha1,opacity2:ye.alpha2,opacity3:ye.alpha3,opacity4:ye.alpha4,opacity5:ye.alpha5,dividerColor:"rgb(239, 239, 245)",borderColor:"rgb(224, 224, 230)",closeIconColor:Bt(Number(ye.alphaClose)),closeIconColorHover:Bt(Number(ye.alphaClose)),closeIconColorPressed:Bt(Number(ye.alphaClose)),closeColorHover:"rgba(0, 0, 0, .09)",closeColorPressed:"rgba(0, 0, 0, .13)",clearColor:Bt(ye.alpha4),clearColorHover:gt(Bt(ye.alpha4),{lightness:.75}),clearColorPressed:gt(Bt(ye.alpha4),{lightness:.9}),scrollbarColor:xh(ye.alphaScrollbar),scrollbarColorHover:xh(ye.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Bt(ye.alphaProgressRail),railColor:"rgb(219, 219, 223)",popoverColor:ye.neutralPopover,tableColor:ye.neutralCard,cardColor:ye.neutralCard,modalColor:ye.neutralModal,bodyColor:ye.neutralBody,tagColor:"#eee",avatarColor:Bt(ye.alphaAvatar),invertedColor:"rgb(0, 20, 40)",inputColor:Bt(ye.alphaInput),codeColor:"rgb(244, 244, 248)",tabColor:"rgb(247, 247, 250)",actionColor:"rgb(250, 250, 252)",tableHeaderColor:"rgb(250, 250, 252)",hoverColor:"rgb(243, 243, 245)",tableColorHover:"rgba(0, 0, 100, 0.03)",tableColorStriped:"rgba(0, 0, 100, 0.02)",pressedColor:"rgb(237, 237, 239)",opacityDisabled:ye.alphaDisabled,inputColorDisabled:"rgb(250, 250, 252)",buttonColor2:"rgba(46, 51, 56, .05)",buttonColor2Hover:"rgba(46, 51, 56, .09)",buttonColor2Pressed:"rgba(46, 51, 56, .13)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .08), 0 3px 6px 0 rgba(0, 0, 0, .06), 0 5px 12px 4px rgba(0, 0, 0, .04)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"}),se=hT,fT={iconSizeSmall:"34px",iconSizeMedium:"40px",iconSizeLarge:"46px",iconSizeHuge:"52px"},lp=e=>{const{textColorDisabled:t,iconColor:n,textColor2:o,fontSizeSmall:r,fontSizeMedium:i,fontSizeLarge:a,fontSizeHuge:s}=e;return Object.assign(Object.assign({},fT),{fontSizeSmall:r,fontSizeMedium:i,fontSizeLarge:a,fontSizeHuge:s,textColor:t,iconColor:n,extraTextColor:o})},gT={name:"Empty",common:se,self:lp},Kn=gT,mT={name:"Empty",common:ae,self:lp},nr=mT,cp=e=>{const{scrollbarColor:t,scrollbarColorHover:n}=e;return{color:t,colorHover:n}},pT={name:"Scrollbar",common:se,self:cp},Kt=pT,bT={name:"Scrollbar",common:ae,self:cp},en=bT,{cubicBezierEaseInOut:Sh}=yo;function Zc({name:e="fade-in",enterDuration:t="0.2s",leaveDuration:n="0.2s",enterCubicBezier:o=Sh,leaveCubicBezier:r=Sh}={}){return[z(`&.${e}-transition-enter-active`,{transition:`all ${t} ${o}!important`}),z(`&.${e}-transition-leave-active`,{transition:`all ${n} ${r}!important`}),z(`&.${e}-transition-enter-from, &.${e}-transition-leave-to`,{opacity:0}),z(`&.${e}-transition-leave-from, &.${e}-transition-enter-to`,{opacity:1})]}const vT=te("scrollbar",` + overflow: hidden; + position: relative; + z-index: auto; + height: 100%; + width: 100%; +`,[z(">",[te("scrollbar-container",` + width: 100%; + overflow: scroll; + height: 100%; + min-height: inherit; + max-height: inherit; + scrollbar-width: none; + `,[z("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` + width: 0; + height: 0; + display: none; + `),z(">",[te("scrollbar-content",` + box-sizing: border-box; + min-width: 100%; + `)])])]),z(">, +",[te("scrollbar-rail",` + position: absolute; + pointer-events: none; + user-select: none; + -webkit-user-select: none; + `,[J("horizontal",` + left: 2px; + right: 2px; + bottom: 4px; + height: var(--n-scrollbar-height); + `,[z(">",[G("scrollbar",` + height: var(--n-scrollbar-height); + border-radius: var(--n-scrollbar-border-radius); + right: 0; + `)])]),J("vertical",` + right: 4px; + top: 2px; + bottom: 2px; + width: var(--n-scrollbar-width); + `,[z(">",[G("scrollbar",` + width: var(--n-scrollbar-width); + border-radius: var(--n-scrollbar-border-radius); + bottom: 0; + `)])]),J("disabled",[z(">",[G("scrollbar","pointer-events: none;")])]),z(">",[G("scrollbar",` + z-index: 1; + position: absolute; + cursor: pointer; + pointer-events: all; + background-color: var(--n-scrollbar-color); + transition: background-color .2s var(--n-scrollbar-bezier); + `,[Zc(),z("&:hover","background-color: var(--n-scrollbar-color-hover);")])])])])]),yT=Object.assign(Object.assign({},Re.props),{size:{type:Number,default:5},duration:{type:Number,default:0},scrollable:{type:Boolean,default:!0},xScrollable:Boolean,trigger:{type:String,default:"hover"},useUnifiedContainer:Boolean,triggerDisplayManually:Boolean,container:Function,content:Function,containerClass:String,containerStyle:[String,Object],contentClass:[String,Array],contentStyle:[String,Object],horizontalRailStyle:[String,Object],verticalRailStyle:[String,Object],onScroll:Function,onWheel:Function,onResize:Function,internalOnUpdateScrollLeft:Function,internalHoistYRail:Boolean}),dp=ce({name:"Scrollbar",props:yT,inheritAttrs:!1,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n,mergedRtlRef:o}=at(e),r=Co("Scrollbar",o,t),i=V(null),a=V(null),s=V(null),l=V(null),c=V(null),d=V(null),u=V(null),h=V(null),g=V(null),f=V(null),b=V(null),p=V(0),m=V(0),k=V(!1),x=V(!1);let y=!1,S=!1,P,v,w=0,R=0,L=0,j=0;const M=vC(),U=N(()=>{const{value:ee}=h,{value:ue}=d,{value:xe}=f;return ee===null||ue===null||xe===null?0:Math.min(ee,xe*ee/ue+e.size*1.5)}),ne=N(()=>`${U.value}px`),H=N(()=>{const{value:ee}=g,{value:ue}=u,{value:xe}=b;return ee===null||ue===null||xe===null?0:xe*ee/ue+e.size*1.5}),q=N(()=>`${H.value}px`),W=N(()=>{const{value:ee}=h,{value:ue}=p,{value:xe}=d,{value:qe}=f;if(ee===null||xe===null||qe===null)return 0;{const ft=xe-ee;return ft?ue/ft*(qe-U.value):0}}),re=N(()=>`${W.value}px`),be=N(()=>{const{value:ee}=g,{value:ue}=m,{value:xe}=u,{value:qe}=b;if(ee===null||xe===null||qe===null)return 0;{const ft=xe-ee;return ft?ue/ft*(qe-H.value):0}}),ve=N(()=>`${be.value}px`),_e=N(()=>{const{value:ee}=h,{value:ue}=d;return ee!==null&&ue!==null&&ue>ee}),Me=N(()=>{const{value:ee}=g,{value:ue}=u;return ee!==null&&ue!==null&&ue>ee}),lt=N(()=>{const{trigger:ee}=e;return ee==="none"||k.value}),Ze=N(()=>{const{trigger:ee}=e;return ee==="none"||x.value}),Ye=N(()=>{const{container:ee}=e;return ee?ee():a.value}),Ee=N(()=>{const{content:ee}=e;return ee?ee():s.value}),De=gm(()=>{e.container||ct({top:p.value,left:m.value})}),Ot=()=>{De.isDeactivated||ie()},Le=ee=>{if(De.isDeactivated)return;const{onResize:ue}=e;ue&&ue(ee),ie()},ct=(ee,ue)=>{if(!e.scrollable)return;if(typeof ee=="number"){bt(ee,ue??0,0,!1,"auto");return}const{left:xe,top:qe,index:ft,elSize:Ht,position:yn,behavior:st,el:nn,debounce:To=!0}=ee;(xe!==void 0||qe!==void 0)&&bt(xe??0,qe??0,0,!1,st),nn!==void 0?bt(0,nn.offsetTop,nn.offsetHeight,To,st):ft!==void 0&&Ht!==void 0?bt(0,ft*Ht,Ht,To,st):yn==="bottom"?bt(0,Number.MAX_SAFE_INTEGER,0,!1,st):yn==="top"&&bt(0,0,0,!1,st)},Rt=(ee,ue)=>{if(!e.scrollable)return;const{value:xe}=Ye;xe&&(typeof ee=="object"?xe.scrollBy(ee):xe.scrollBy(ee,ue||0))};function bt(ee,ue,xe,qe,ft){const{value:Ht}=Ye;if(Ht){if(qe){const{scrollTop:yn,offsetHeight:st}=Ht;if(ue>yn){ue+xe<=yn+st||Ht.scrollTo({left:ee,top:ue+xe-st,behavior:ft});return}}Ht.scrollTo({left:ee,top:ue,behavior:ft})}}function E(){oe(),le(),ie()}function A(){O()}function O(){X(),Z()}function X(){v!==void 0&&window.clearTimeout(v),v=window.setTimeout(()=>{x.value=!1},e.duration)}function Z(){P!==void 0&&window.clearTimeout(P),P=window.setTimeout(()=>{k.value=!1},e.duration)}function oe(){P!==void 0&&window.clearTimeout(P),k.value=!0}function le(){v!==void 0&&window.clearTimeout(v),x.value=!0}function C(ee){const{onScroll:ue}=e;ue&&ue(ee),_()}function _(){const{value:ee}=Ye;ee&&(p.value=ee.scrollTop,m.value=ee.scrollLeft*(r!=null&&r.value?-1:1))}function I(){const{value:ee}=Ee;ee&&(d.value=ee.offsetHeight,u.value=ee.offsetWidth);const{value:ue}=Ye;ue&&(h.value=ue.offsetHeight,g.value=ue.offsetWidth);const{value:xe}=c,{value:qe}=l;xe&&(b.value=xe.offsetWidth),qe&&(f.value=qe.offsetHeight)}function F(){const{value:ee}=Ye;ee&&(p.value=ee.scrollTop,m.value=ee.scrollLeft*(r!=null&&r.value?-1:1),h.value=ee.offsetHeight,g.value=ee.offsetWidth,d.value=ee.scrollHeight,u.value=ee.scrollWidth);const{value:ue}=c,{value:xe}=l;ue&&(b.value=ue.offsetWidth),xe&&(f.value=xe.offsetHeight)}function ie(){e.scrollable&&(e.useUnifiedContainer?F():(I(),_()))}function Q(ee){var ue;return!(!((ue=i.value)===null||ue===void 0)&&ue.contains(Ci(ee)))}function $(ee){ee.preventDefault(),ee.stopPropagation(),S=!0,it("mousemove",window,B,!0),it("mouseup",window,me,!0),R=m.value,L=r!=null&&r.value?window.innerWidth-ee.clientX:ee.clientX}function B(ee){if(!S)return;P!==void 0&&window.clearTimeout(P),v!==void 0&&window.clearTimeout(v);const{value:ue}=g,{value:xe}=u,{value:qe}=H;if(ue===null||xe===null)return;const Ht=(r!=null&&r.value?window.innerWidth-ee.clientX-L:ee.clientX-L)*(xe-ue)/(ue-qe),yn=xe-ue;let st=R+Ht;st=Math.min(yn,st),st=Math.max(st,0);const{value:nn}=Ye;if(nn){nn.scrollLeft=st*(r!=null&&r.value?-1:1);const{internalOnUpdateScrollLeft:To}=e;To&&To(st)}}function me(ee){ee.preventDefault(),ee.stopPropagation(),Ke("mousemove",window,B,!0),Ke("mouseup",window,me,!0),S=!1,ie(),Q(ee)&&O()}function ke(ee){ee.preventDefault(),ee.stopPropagation(),y=!0,it("mousemove",window,Be,!0),it("mouseup",window,dt,!0),w=p.value,j=ee.clientY}function Be(ee){if(!y)return;P!==void 0&&window.clearTimeout(P),v!==void 0&&window.clearTimeout(v);const{value:ue}=h,{value:xe}=d,{value:qe}=U;if(ue===null||xe===null)return;const Ht=(ee.clientY-j)*(xe-ue)/(ue-qe),yn=xe-ue;let st=w+Ht;st=Math.min(yn,st),st=Math.max(st,0);const{value:nn}=Ye;nn&&(nn.scrollTop=st)}function dt(ee){ee.preventDefault(),ee.stopPropagation(),Ke("mousemove",window,Be,!0),Ke("mouseup",window,dt,!0),y=!1,ie(),Q(ee)&&O()}lo(()=>{const{value:ee}=Me,{value:ue}=_e,{value:xe}=t,{value:qe}=c,{value:ft}=l;qe&&(ee?qe.classList.remove(`${xe}-scrollbar-rail--disabled`):qe.classList.add(`${xe}-scrollbar-rail--disabled`)),ft&&(ue?ft.classList.remove(`${xe}-scrollbar-rail--disabled`):ft.classList.add(`${xe}-scrollbar-rail--disabled`))}),Pt(()=>{e.container||ie()}),xt(()=>{P!==void 0&&window.clearTimeout(P),v!==void 0&&window.clearTimeout(v),Ke("mousemove",window,Be,!0),Ke("mouseup",window,dt,!0)});const Et=Re("Scrollbar","-scrollbar",vT,Kt,e,t),$n=N(()=>{const{common:{cubicBezierEaseInOut:ee,scrollbarBorderRadius:ue,scrollbarHeight:xe,scrollbarWidth:qe},self:{color:ft,colorHover:Ht}}=Et.value;return{"--n-scrollbar-bezier":ee,"--n-scrollbar-color":ft,"--n-scrollbar-color-hover":Ht,"--n-scrollbar-border-radius":ue,"--n-scrollbar-width":qe,"--n-scrollbar-height":xe}}),Gt=n?At("scrollbar",void 0,$n,e):void 0;return Object.assign(Object.assign({},{scrollTo:ct,scrollBy:Rt,sync:ie,syncUnifiedContainer:F,handleMouseEnterWrapper:E,handleMouseLeaveWrapper:A}),{mergedClsPrefix:t,rtlEnabled:r,containerScrollTop:p,wrapperRef:i,containerRef:a,contentRef:s,yRailRef:l,xRailRef:c,needYBar:_e,needXBar:Me,yBarSizePx:ne,xBarSizePx:q,yBarTopPx:re,xBarLeftPx:ve,isShowXBar:lt,isShowYBar:Ze,isIos:M,handleScroll:C,handleContentResize:Ot,handleContainerResize:Le,handleYScrollMouseDown:ke,handleXScrollMouseDown:$,cssVars:n?void 0:$n,themeClass:Gt==null?void 0:Gt.themeClass,onRender:Gt==null?void 0:Gt.onRender})},render(){var e;const{$slots:t,mergedClsPrefix:n,triggerDisplayManually:o,rtlEnabled:r,internalHoistYRail:i}=this;if(!this.scrollable)return(e=t.default)===null||e===void 0?void 0:e.call(t);const a=this.trigger==="none",s=(d,u)=>T("div",{ref:"yRailRef",class:[`${n}-scrollbar-rail`,`${n}-scrollbar-rail--vertical`,d],"data-scrollbar-rail":!0,style:[u||"",this.verticalRailStyle],"aria-hidden":!0},T(a?cu:pn,a?null:{name:"fade-in-transition"},{default:()=>this.needYBar&&this.isShowYBar&&!this.isIos?T("div",{class:`${n}-scrollbar-rail__scrollbar`,style:{height:this.yBarSizePx,top:this.yBarTopPx},onMousedown:this.handleYScrollMouseDown}):null})),l=()=>{var d,u;return(d=this.onRender)===null||d===void 0||d.call(this),T("div",Mn(this.$attrs,{role:"none",ref:"wrapperRef",class:[`${n}-scrollbar`,this.themeClass,r&&`${n}-scrollbar--rtl`],style:this.cssVars,onMouseenter:o?void 0:this.handleMouseEnterWrapper,onMouseleave:o?void 0:this.handleMouseLeaveWrapper}),[this.container?(u=t.default)===null||u===void 0?void 0:u.call(t):T("div",{role:"none",ref:"containerRef",class:[`${n}-scrollbar-container`,this.containerClass],style:this.containerStyle,onScroll:this.handleScroll,onWheel:this.onWheel},T(Da,{onResize:this.handleContentResize},{default:()=>T("div",{ref:"contentRef",role:"none",style:[{width:this.xScrollable?"fit-content":null},this.contentStyle],class:[`${n}-scrollbar-content`,this.contentClass]},t)})),i?null:s(void 0,void 0),this.xScrollable&&T("div",{ref:"xRailRef",class:[`${n}-scrollbar-rail`,`${n}-scrollbar-rail--horizontal`],style:this.horizontalRailStyle,"data-scrollbar-rail":!0,"aria-hidden":!0},T(a?cu:pn,a?null:{name:"fade-in-transition"},{default:()=>this.needXBar&&this.isShowXBar&&!this.isIos?T("div",{class:`${n}-scrollbar-rail__scrollbar`,style:{width:this.xBarSizePx,right:r?this.xBarLeftPx:void 0,left:r?void 0:this.xBarLeftPx},onMousedown:this.handleXScrollMouseDown}):null}))])},c=this.container?l():T(Da,{onResize:this.handleContainerResize},{default:l});return i?T(Oe,null,c,s(this.themeClass,this.cssVars)):c}}),Cs=dp,up=dp,CT={height:"calc(var(--n-option-height) * 7.6)",paddingSmall:"4px 0",paddingMedium:"4px 0",paddingLarge:"4px 0",paddingHuge:"4px 0",optionPaddingSmall:"0 12px",optionPaddingMedium:"0 12px",optionPaddingLarge:"0 12px",optionPaddingHuge:"0 12px",loadingSize:"18px"},hp=e=>{const{borderRadius:t,popoverColor:n,textColor3:o,dividerColor:r,textColor2:i,primaryColorPressed:a,textColorDisabled:s,primaryColor:l,opacityDisabled:c,hoverColor:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g,fontSizeHuge:f,heightSmall:b,heightMedium:p,heightLarge:m,heightHuge:k}=e;return Object.assign(Object.assign({},CT),{optionFontSizeSmall:u,optionFontSizeMedium:h,optionFontSizeLarge:g,optionFontSizeHuge:f,optionHeightSmall:b,optionHeightMedium:p,optionHeightLarge:m,optionHeightHuge:k,borderRadius:t,color:n,groupHeaderTextColor:o,actionDividerColor:r,optionTextColor:i,optionTextColorPressed:a,optionTextColorDisabled:s,optionTextColorActive:l,optionOpacityDisabled:c,optionCheckColor:l,optionColorPending:d,optionColorActive:"rgba(0, 0, 0, 0)",optionColorActivePending:d,actionTextColor:i,loadingColor:l})},kT={name:"InternalSelectMenu",common:se,peers:{Scrollbar:Kt,Empty:Kn},self:hp},Bi=kT,xT={name:"InternalSelectMenu",common:ae,peers:{Scrollbar:en,Empty:nr},self:hp},Ni=xT,{cubicBezierEaseIn:Th,cubicBezierEaseOut:wh}=yo;function fp({transformOrigin:e="inherit",duration:t=".2s",enterScale:n=".9",originalTransform:o="",originalTransition:r=""}={}){return[z("&.fade-in-scale-up-transition-leave-active",{transformOrigin:e,transition:`opacity ${t} ${Th}, transform ${t} ${Th} ${r&&","+r}`}),z("&.fade-in-scale-up-transition-enter-active",{transformOrigin:e,transition:`opacity ${t} ${wh}, transform ${t} ${wh} ${r&&","+r}`}),z("&.fade-in-scale-up-transition-enter-from, &.fade-in-scale-up-transition-leave-to",{opacity:0,transform:`${o} scale(${n})`}),z("&.fade-in-scale-up-transition-leave-from, &.fade-in-scale-up-transition-enter-to",{opacity:1,transform:`${o} scale(1)`})]}const ST=te("base-wave",` + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + border-radius: inherit; +`),TT=ce({name:"BaseWave",props:{clsPrefix:{type:String,required:!0}},setup(e){Dr("-base-wave",ST,Ue(e,"clsPrefix"));const t=V(null),n=V(!1);let o=null;return xt(()=>{o!==null&&window.clearTimeout(o)}),{active:n,selfRef:t,play(){o!==null&&(window.clearTimeout(o),n.value=!1,o=null),Ft(()=>{var r;(r=t.value)===null||r===void 0||r.offsetHeight,n.value=!0,o=window.setTimeout(()=>{n.value=!1,o=null},1e3)})}}},render(){const{clsPrefix:e}=this;return T("div",{ref:"selfRef","aria-hidden":!0,class:[`${e}-base-wave`,this.active&&`${e}-base-wave--active`]})}}),wT={space:"6px",spaceArrow:"10px",arrowOffset:"10px",arrowOffsetVertical:"10px",arrowHeight:"6px",padding:"8px 14px"},gp=e=>{const{boxShadow2:t,popoverColor:n,textColor2:o,borderRadius:r,fontSize:i,dividerColor:a}=e;return Object.assign(Object.assign({},wT),{fontSize:i,borderRadius:r,color:n,dividerColor:a,textColor:o,boxShadow:t})},_T={name:"Popover",common:se,self:gp},ko=_T,PT={name:"Popover",common:ae,self:gp},or=PT,ll={top:"bottom",bottom:"top",left:"right",right:"left"},vt="var(--n-arrow-height) * 1.414",AT=z([te("popover",` + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + position: relative; + font-size: var(--n-font-size); + color: var(--n-text-color); + box-shadow: var(--n-box-shadow); + word-break: break-word; + `,[z(">",[te("scrollbar",` + height: inherit; + max-height: inherit; + `)]),Dt("raw",` + background-color: var(--n-color); + border-radius: var(--n-border-radius); + `,[Dt("scrollable",[Dt("show-header-or-footer","padding: var(--n-padding);")])]),G("header",` + padding: var(--n-padding); + border-bottom: 1px solid var(--n-divider-color); + transition: border-color .3s var(--n-bezier); + `),G("footer",` + padding: var(--n-padding); + border-top: 1px solid var(--n-divider-color); + transition: border-color .3s var(--n-bezier); + `),J("scrollable, show-header-or-footer",[G("content",` + padding: var(--n-padding); + `)])]),te("popover-shared",` + transform-origin: inherit; + `,[te("popover-arrow-wrapper",` + position: absolute; + overflow: hidden; + pointer-events: none; + `,[te("popover-arrow",` + transition: background-color .3s var(--n-bezier); + position: absolute; + display: block; + width: calc(${vt}); + height: calc(${vt}); + box-shadow: 0 0 8px 0 rgba(0, 0, 0, .12); + transform: rotate(45deg); + background-color: var(--n-color); + pointer-events: all; + `)]),z("&.popover-transition-enter-from, &.popover-transition-leave-to",` + opacity: 0; + transform: scale(.85); + `),z("&.popover-transition-enter-to, &.popover-transition-leave-from",` + transform: scale(1); + opacity: 1; + `),z("&.popover-transition-enter-active",` + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .15s var(--n-bezier-ease-out), + transform .15s var(--n-bezier-ease-out); + `),z("&.popover-transition-leave-active",` + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .15s var(--n-bezier-ease-in), + transform .15s var(--n-bezier-ease-in); + `)]),dn("top-start",` + top: calc(${vt} / -2); + left: calc(${On("top-start")} - var(--v-offset-left)); + `),dn("top",` + top: calc(${vt} / -2); + transform: translateX(calc(${vt} / -2)) rotate(45deg); + left: 50%; + `),dn("top-end",` + top: calc(${vt} / -2); + right: calc(${On("top-end")} + var(--v-offset-left)); + `),dn("bottom-start",` + bottom: calc(${vt} / -2); + left: calc(${On("bottom-start")} - var(--v-offset-left)); + `),dn("bottom",` + bottom: calc(${vt} / -2); + transform: translateX(calc(${vt} / -2)) rotate(45deg); + left: 50%; + `),dn("bottom-end",` + bottom: calc(${vt} / -2); + right: calc(${On("bottom-end")} + var(--v-offset-left)); + `),dn("left-start",` + left: calc(${vt} / -2); + top: calc(${On("left-start")} - var(--v-offset-top)); + `),dn("left",` + left: calc(${vt} / -2); + transform: translateY(calc(${vt} / -2)) rotate(45deg); + top: 50%; + `),dn("left-end",` + left: calc(${vt} / -2); + bottom: calc(${On("left-end")} + var(--v-offset-top)); + `),dn("right-start",` + right: calc(${vt} / -2); + top: calc(${On("right-start")} - var(--v-offset-top)); + `),dn("right",` + right: calc(${vt} / -2); + transform: translateY(calc(${vt} / -2)) rotate(45deg); + top: 50%; + `),dn("right-end",` + right: calc(${vt} / -2); + bottom: calc(${On("right-end")} + var(--v-offset-top)); + `),...R6({top:["right-start","left-start"],right:["top-end","bottom-end"],bottom:["right-end","left-end"],left:["top-start","bottom-start"]},(e,t)=>{const n=["right","left"].includes(t),o=n?"width":"height";return e.map(r=>{const i=r.split("-")[1]==="end",s=`calc((${`var(--v-target-${o}, 0px)`} - ${vt}) / 2)`,l=On(r);return z(`[v-placement="${r}"] >`,[te("popover-shared",[J("center-arrow",[te("popover-arrow",`${t}: calc(max(${s}, ${l}) ${i?"+":"-"} var(--v-offset-${n?"left":"top"}));`)])])])})})]);function On(e){return["top","bottom"].includes(e.split("-")[0])?"var(--n-arrow-offset)":"var(--n-arrow-offset-vertical)"}function dn(e,t){const n=e.split("-")[0],o=["top","bottom"].includes(n)?"height: var(--n-space-arrow);":"width: var(--n-space-arrow);";return z(`[v-placement="${e}"] >`,[te("popover-shared",` + margin-${ll[n]}: var(--n-space); + `,[J("show-arrow",` + margin-${ll[n]}: var(--n-space-arrow); + `),J("overlap",` + margin: 0; + `),Q2("popover-arrow-wrapper",` + right: 0; + left: 0; + top: 0; + bottom: 0; + ${n}: 100%; + ${ll[n]}: auto; + ${o} + `,[te("popover-arrow",t)])])])}const mp=Object.assign(Object.assign({},Re.props),{to:wr.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}),pp=({arrowClass:e,arrowStyle:t,arrowWrapperClass:n,arrowWrapperStyle:o,clsPrefix:r})=>T("div",{key:"__popover-arrow__",style:o,class:[`${r}-popover-arrow-wrapper`,n]},T("div",{class:[`${r}-popover-arrow`,e],style:t})),RT=ce({name:"PopoverBody",inheritAttrs:!1,props:mp,setup(e,{slots:t,attrs:n}){const{namespaceRef:o,mergedClsPrefixRef:r,inlineThemeDisabled:i}=at(e),a=Re("Popover","-popover",AT,ko,e,r),s=V(null),l=Ae("NPopover"),c=V(null),d=V(e.show),u=V(!1);lo(()=>{const{show:v}=e;v&&!eC()&&!e.internalDeactivateImmediately&&(u.value=!0)});const h=N(()=>{const{trigger:v,onClickoutside:w}=e,R=[],{positionManuallyRef:{value:L}}=l;return L||(v==="click"&&!w&&R.push([Il,y,void 0,{capture:!0}]),v==="hover"&&R.push([RC,x])),w&&R.push([Il,y,void 0,{capture:!0}]),(e.displayDirective==="show"||e.animated&&u.value)&&R.push([Sr,e.show]),R}),g=N(()=>{const v=e.width==="trigger"?void 0:ya(e.width),w=[];v&&w.push({width:v});const{maxWidth:R,minWidth:L}=e;return R&&w.push({maxWidth:ya(R)}),L&&w.push({maxWidth:ya(L)}),i||w.push(f.value),w}),f=N(()=>{const{common:{cubicBezierEaseInOut:v,cubicBezierEaseIn:w,cubicBezierEaseOut:R},self:{space:L,spaceArrow:j,padding:M,fontSize:U,textColor:ne,dividerColor:H,color:q,boxShadow:W,borderRadius:re,arrowHeight:be,arrowOffset:ve,arrowOffsetVertical:_e}}=a.value;return{"--n-box-shadow":W,"--n-bezier":v,"--n-bezier-ease-in":w,"--n-bezier-ease-out":R,"--n-font-size":U,"--n-text-color":ne,"--n-color":q,"--n-divider-color":H,"--n-border-radius":re,"--n-arrow-height":be,"--n-arrow-offset":ve,"--n-arrow-offset-vertical":_e,"--n-padding":M,"--n-space":L,"--n-space-arrow":j}}),b=i?At("popover",void 0,f,e):void 0;l.setBodyInstance({syncPosition:p}),xt(()=>{l.setBodyInstance(null)}),et(Ue(e,"show"),v=>{e.animated||(v?d.value=!0:d.value=!1)});function p(){var v;(v=s.value)===null||v===void 0||v.syncPosition()}function m(v){e.trigger==="hover"&&e.keepAliveOnHover&&e.show&&l.handleMouseEnter(v)}function k(v){e.trigger==="hover"&&e.keepAliveOnHover&&l.handleMouseLeave(v)}function x(v){e.trigger==="hover"&&!S().contains(Ci(v))&&l.handleMouseMoveOutside(v)}function y(v){(e.trigger==="click"&&!S().contains(Ci(v))||e.onClickoutside)&&l.handleClickOutside(v)}function S(){return l.getTriggerElement()}je($i,c),je(fs,null),je(hs,null);function P(){if(b==null||b.onRender(),!(e.displayDirective==="show"||e.show||e.animated&&u.value))return null;let w;const R=l.internalRenderBodyRef.value,{value:L}=r;if(R)w=R([`${L}-popover-shared`,b==null?void 0:b.themeClass.value,e.overlap&&`${L}-popover-shared--overlap`,e.showArrow&&`${L}-popover-shared--show-arrow`,e.arrowPointToCenter&&`${L}-popover-shared--center-arrow`],c,g.value,m,k);else{const{value:j}=l.extraClassRef,{internalTrapFocus:M}=e,U=!Pl(t.header)||!Pl(t.footer),ne=()=>{var H,q;const W=U?T(Oe,null,Tt(t.header,ve=>ve?T("div",{class:[`${L}-popover__header`,e.headerClass],style:e.headerStyle},ve):null),Tt(t.default,ve=>ve?T("div",{class:[`${L}-popover__content`,e.contentClass],style:e.contentStyle},t):null),Tt(t.footer,ve=>ve?T("div",{class:[`${L}-popover__footer`,e.footerClass],style:e.footerStyle},ve):null)):e.scrollable?(H=t.default)===null||H===void 0?void 0:H.call(t):T("div",{class:[`${L}-popover__content`,e.contentClass],style:e.contentStyle},t),re=e.scrollable?T(up,{contentClass:U?void 0:`${L}-popover__content ${(q=e.contentClass)!==null&&q!==void 0?q:""}`,contentStyle:U?void 0:e.contentStyle},{default:()=>W}):W,be=e.showArrow?pp({arrowClass:e.arrowClass,arrowStyle:e.arrowStyle,arrowWrapperClass:e.arrowWrapperClass,arrowWrapperStyle:e.arrowWrapperStyle,clsPrefix:L}):null;return[re,be]};w=T("div",Mn({class:[`${L}-popover`,`${L}-popover-shared`,b==null?void 0:b.themeClass.value,j.map(H=>`${L}-${H}`),{[`${L}-popover--scrollable`]:e.scrollable,[`${L}-popover--show-header-or-footer`]:U,[`${L}-popover--raw`]:e.raw,[`${L}-popover-shared--overlap`]:e.overlap,[`${L}-popover-shared--show-arrow`]:e.showArrow,[`${L}-popover-shared--center-arrow`]:e.arrowPointToCenter}],ref:c,style:g.value,onKeydown:l.handleKeydown,onMouseenter:m,onMouseleave:k},n),M?T(fm,{active:e.show,autoFocus:!0},{default:ne}):ne())}return co(w,h.value)}return{displayed:u,namespace:o,isMounted:l.isMountedRef,zIndex:l.zIndexRef,followerRef:s,adjustedTo:wr(e),followerEnabled:d,renderContentNode:P}},render(){return T(nm,{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===wr.tdkey},{default:()=>this.animated?T(pn,{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()})}}),ET=Object.keys(mp),IT={focus:["onFocus","onBlur"],click:["onClick"],hover:["onMouseenter","onMouseleave"],manual:[],nested:["onFocus","onBlur","onMouseenter","onMouseleave","onClick"]};function MT(e,t,n){IT[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 ks={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:wr.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},LT=Object.assign(Object.assign(Object.assign({},Re.props),ks),{internalOnAfterLeave:Function,internalRenderBody:Function}),xs=ce({name:"Popover",inheritAttrs:!1,props:LT,__popover__:!0,setup(e){const t=Di(),n=V(null),o=N(()=>e.show),r=V(e.defaultShow),i=Rc(o,r),a=wt(()=>e.disabled?!1:i.value),s=()=>{if(e.disabled)return!0;const{getDisabled:H}=e;return!!(H!=null&&H())},l=()=>s()?!1:i.value,c=Kg(e,["arrow","showArrow"]),d=N(()=>e.overlap?!1:c.value);let u=null;const h=V(null),g=V(null),f=wt(()=>e.x!==void 0&&e.y!==void 0);function b(H){const{"onUpdate:show":q,onUpdateShow:W,onShow:re,onHide:be}=e;r.value=H,q&&We(q,H),W&&We(W,H),H&&re&&We(re,!0),H&&be&&We(be,!1)}function p(){u&&u.syncPosition()}function m(){const{value:H}=h;H&&(window.clearTimeout(H),h.value=null)}function k(){const{value:H}=g;H&&(window.clearTimeout(H),g.value=null)}function x(){const H=s();if(e.trigger==="focus"&&!H){if(l())return;b(!0)}}function y(){const H=s();if(e.trigger==="focus"&&!H){if(!l())return;b(!1)}}function S(){const H=s();if(e.trigger==="hover"&&!H){if(k(),h.value!==null||l())return;const q=()=>{b(!0),h.value=null},{delay:W}=e;W===0?q():h.value=window.setTimeout(q,W)}}function P(){const H=s();if(e.trigger==="hover"&&!H){if(m(),g.value!==null||!l())return;const q=()=>{b(!1),g.value=null},{duration:W}=e;W===0?q():g.value=window.setTimeout(q,W)}}function v(){P()}function w(H){var q;l()&&(e.trigger==="click"&&(m(),k(),b(!1)),(q=e.onClickoutside)===null||q===void 0||q.call(e,H))}function R(){if(e.trigger==="click"&&!s()){m(),k();const H=!l();b(H)}}function L(H){e.internalTrapFocus&&H.key==="Escape"&&(m(),k(),b(!1))}function j(H){r.value=H}function M(){var H;return(H=n.value)===null||H===void 0?void 0:H.targetRef}function U(H){u=H}return je("NPopover",{getTriggerElement:M,handleKeydown:L,handleMouseEnter:S,handleMouseLeave:P,handleClickOutside:w,handleMouseMoveOutside:v,setBodyInstance:U,positionManuallyRef:f,isMountedRef:t,zIndexRef:Ue(e,"zIndex"),extraClassRef:Ue(e,"internalExtraClass"),internalRenderBodyRef:Ue(e,"internalRenderBody")}),lo(()=>{i.value&&s()&&b(!1)}),{binderInstRef:n,positionManually:f,mergedShowConsideringDisabledProp:a,uncontrolledShow:r,mergedShowArrow:d,getMergedShow:l,setShow:j,handleClick:R,handleMouseEnter:S,handleMouseLeave:P,handleFocus:x,handleBlur:y,syncPosition:p}},render(){var e;const{positionManually:t,$slots:n}=this;let o,r=!1;if(!t&&(n.activator?o=_l(n,"activator"):o=_l(n,"trigger"),o)){o=mn(o),o=o.type===Er?T("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)})}};MT(o,a?"nested":t?"manual":this.trigger,l)}}return T(Jg,{ref:"binderInstRef",syncTarget:!r,syncTargetWithParent:this.internalSyncTargetWithParent},{default:()=>{this.mergedShowConsideringDisabledProp;const i=this.getMergedShow();return[this.internalTrapFocus&&i?co(T("div",{style:{position:"fixed",inset:0}}),[[Ec,{enabled:i,zIndex:this.zIndex}]]):null,t?null:T(Qg,null,{default:()=>o}),T(RT,Xo(this.$props,ET,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)}})]}})}}),bp={closeIconSizeTiny:"12px",closeIconSizeSmall:"12px",closeIconSizeMedium:"14px",closeIconSizeLarge:"14px",closeSizeTiny:"16px",closeSizeSmall:"16px",closeSizeMedium:"18px",closeSizeLarge:"18px",padding:"0 7px",closeMargin:"0 0 0 4px"},DT={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:x,fontSizeTiny:y,fontSizeSmall:S,fontSizeMedium:P,heightMini:v,heightTiny:w,heightSmall:R,heightMedium:L,buttonColor2Hover:j,buttonColor2Pressed:M,fontWeightStrong:U}=e;return Object.assign(Object.assign({},bp),{closeBorderRadius:k,heightTiny:v,heightSmall:w,heightMedium:R,heightLarge:L,borderRadius:k,opacityDisabled:h,fontSizeTiny:x,fontSizeSmall:y,fontSizeMedium:S,fontSizeLarge:P,fontWeightStrong:U,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:j,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 ${K(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:K(r,{alpha:.16}),colorBorderedPrimary:"#0000",closeIconColorPrimary:gt(r,{lightness:.7}),closeIconColorHoverPrimary:gt(r,{lightness:.7}),closeIconColorPressedPrimary:gt(r,{lightness:.7}),closeColorHoverPrimary:K(r,{alpha:.16}),closeColorPressedPrimary:K(r,{alpha:.12}),borderInfo:`1px solid ${K(i,{alpha:.3})}`,textColorInfo:i,colorInfo:K(i,{alpha:.16}),colorBorderedInfo:"#0000",closeIconColorInfo:gt(i,{alpha:.7}),closeIconColorHoverInfo:gt(i,{alpha:.7}),closeIconColorPressedInfo:gt(i,{alpha:.7}),closeColorHoverInfo:K(i,{alpha:.16}),closeColorPressedInfo:K(i,{alpha:.12}),borderSuccess:`1px solid ${K(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:K(a,{alpha:.16}),colorBorderedSuccess:"#0000",closeIconColorSuccess:gt(a,{alpha:.7}),closeIconColorHoverSuccess:gt(a,{alpha:.7}),closeIconColorPressedSuccess:gt(a,{alpha:.7}),closeColorHoverSuccess:K(a,{alpha:.16}),closeColorPressedSuccess:K(a,{alpha:.12}),borderWarning:`1px solid ${K(s,{alpha:.3})}`,textColorWarning:s,colorWarning:K(s,{alpha:.16}),colorBorderedWarning:"#0000",closeIconColorWarning:gt(s,{alpha:.7}),closeIconColorHoverWarning:gt(s,{alpha:.7}),closeIconColorPressedWarning:gt(s,{alpha:.7}),closeColorHoverWarning:K(s,{alpha:.16}),closeColorPressedWarning:K(s,{alpha:.11}),borderError:`1px solid ${K(l,{alpha:.3})}`,textColorError:l,colorError:K(l,{alpha:.16}),colorBorderedError:"#0000",closeIconColorError:gt(l,{alpha:.7}),closeIconColorHoverError:gt(l,{alpha:.7}),closeIconColorPressedError:gt(l,{alpha:.7}),closeColorHoverError:K(l,{alpha:.16}),closeColorPressedError:K(l,{alpha:.12})})}},vp=DT,$T=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:x,fontSizeMedium:y,heightMini:S,heightTiny:P,heightSmall:v,heightMedium:w,closeColorHover:R,closeColorPressed:L,buttonColor2Hover:j,buttonColor2Pressed:M,fontWeightStrong:U}=e;return Object.assign(Object.assign({},bp),{closeBorderRadius:p,heightTiny:S,heightSmall:P,heightMedium:v,heightLarge:w,borderRadius:p,opacityDisabled:u,fontSizeTiny:m,fontSizeSmall:k,fontSizeMedium:x,fontSizeLarge:y,fontWeightStrong:U,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:j,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:R,closeColorPressed:L,borderPrimary:`1px solid ${K(r,{alpha:.3})}`,textColorPrimary:r,colorPrimary:K(r,{alpha:.12}),colorBorderedPrimary:K(r,{alpha:.1}),closeIconColorPrimary:r,closeIconColorHoverPrimary:r,closeIconColorPressedPrimary:r,closeColorHoverPrimary:K(r,{alpha:.12}),closeColorPressedPrimary:K(r,{alpha:.18}),borderInfo:`1px solid ${K(i,{alpha:.3})}`,textColorInfo:i,colorInfo:K(i,{alpha:.12}),colorBorderedInfo:K(i,{alpha:.1}),closeIconColorInfo:i,closeIconColorHoverInfo:i,closeIconColorPressedInfo:i,closeColorHoverInfo:K(i,{alpha:.12}),closeColorPressedInfo:K(i,{alpha:.18}),borderSuccess:`1px solid ${K(a,{alpha:.3})}`,textColorSuccess:a,colorSuccess:K(a,{alpha:.12}),colorBorderedSuccess:K(a,{alpha:.1}),closeIconColorSuccess:a,closeIconColorHoverSuccess:a,closeIconColorPressedSuccess:a,closeColorHoverSuccess:K(a,{alpha:.12}),closeColorPressedSuccess:K(a,{alpha:.18}),borderWarning:`1px solid ${K(s,{alpha:.35})}`,textColorWarning:s,colorWarning:K(s,{alpha:.15}),colorBorderedWarning:K(s,{alpha:.12}),closeIconColorWarning:s,closeIconColorHoverWarning:s,closeIconColorPressedWarning:s,closeColorHoverWarning:K(s,{alpha:.12}),closeColorPressedWarning:K(s,{alpha:.18}),borderError:`1px solid ${K(l,{alpha:.23})}`,textColorError:l,colorError:K(l,{alpha:.1}),colorBorderedError:K(l,{alpha:.08}),closeIconColorError:l,closeIconColorHoverError:l,closeIconColorPressedError:l,closeColorHoverError:K(l,{alpha:.12}),closeColorPressedError:K(l,{alpha:.18})})},OT={name:"Tag",common:se,self:$T},yp=OT,HT=te("base-clear",` + flex-shrink: 0; + height: 1em; + width: 1em; + position: relative; +`,[z(">",[G("clear",` + font-size: var(--n-clear-size); + height: 1em; + width: 1em; + cursor: pointer; + color: var(--n-clear-color); + transition: color .3s var(--n-bezier); + display: flex; + `,[z("&:hover",` + color: var(--n-clear-color-hover)!important; + `),z("&:active",` + color: var(--n-clear-color-pressed)!important; + `)]),G("placeholder",` + display: flex; + `),G("clear, placeholder",` + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%) translateY(-50%); + `,[Ri({originalTransform:"translateX(-50%) translateY(-50%)",left:"50%",top:"50%"})])])]),Wl=ce({name:"BaseClear",props:{clsPrefix:{type:String,required:!0},show:Boolean,onClear:Function},setup(e){return Dr("-base-clear",HT,Ue(e,"clsPrefix")),{handleMouseDown(t){t.preventDefault()}}},render(){const{clsPrefix:e}=this;return T("div",{class:`${e}-base-clear`},T(vs,null,{default:()=>{var t,n;return this.show?T("div",{key:"dismiss",class:`${e}-base-clear__clear`,onClick:this.onClear,onMousedown:this.handleMouseDown,"data-clear":!0},Vo(this.$slots.icon,()=>[T(fo,{clsPrefix:e},{default:()=>T(ES,null)})])):T("div",{key:"icon",class:`${e}-base-clear__placeholder`},(n=(t=this.$slots).placeholder)===null||n===void 0?void 0:n.call(t))}}))}}),BT=ce({name:"InternalSelectionSuffix",props:{clsPrefix:{type:String,required:!0},showArrow:{type:Boolean,default:void 0},showClear:{type:Boolean,default:void 0},loading:{type:Boolean,default:!1},onClear:Function},setup(e,{slots:t}){return()=>{const{clsPrefix:n}=e;return T(qc,{clsPrefix:n,class:`${n}-base-suffix`,strokeWidth:24,scale:.85,show:e.loading},{default:()=>e.showArrow?T(Wl,{clsPrefix:n,show:e.showClear,onClear:e.onClear},{placeholder:()=>T(fo,{clsPrefix:n,class:`${n}-base-suffix__arrow`},{default:()=>Vo(t.default,()=>[T(RS,null)])})}):null})}}}),Cp={paddingSingle:"0 26px 0 12px",paddingMultiple:"3px 26px 0 12px",clearSize:"16px",arrowSize:"16px"},NT=e=>{const{borderRadius:t,textColor2:n,textColorDisabled:o,inputColor:r,inputColorDisabled:i,primaryColor:a,primaryColorHover:s,warningColor:l,warningColorHover:c,errorColor:d,errorColorHover:u,borderColor:h,iconColor:g,iconColorDisabled:f,clearColor:b,clearColorHover:p,clearColorPressed:m,placeholderColor:k,placeholderColorDisabled:x,fontSizeTiny:y,fontSizeSmall:S,fontSizeMedium:P,fontSizeLarge:v,heightTiny:w,heightSmall:R,heightMedium:L,heightLarge:j}=e;return Object.assign(Object.assign({},Cp),{fontSizeTiny:y,fontSizeSmall:S,fontSizeMedium:P,fontSizeLarge:v,heightTiny:w,heightSmall:R,heightMedium:L,heightLarge:j,borderRadius:t,textColor:n,textColorDisabled:o,placeholderColor:k,placeholderColorDisabled:x,color:r,colorDisabled:i,colorActive:r,border:`1px solid ${h}`,borderHover:`1px solid ${s}`,borderActive:`1px solid ${a}`,borderFocus:`1px solid ${s}`,boxShadowHover:"none",boxShadowActive:`0 0 0 2px ${K(a,{alpha:.2})}`,boxShadowFocus:`0 0 0 2px ${K(a,{alpha:.2})}`,caretColor:a,arrowColor:g,arrowColorDisabled:f,loadingColor:a,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,borderActiveWarning:`1px solid ${l}`,borderFocusWarning:`1px solid ${c}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 0 2px ${K(l,{alpha:.2})}`,boxShadowFocusWarning:`0 0 0 2px ${K(l,{alpha:.2})}`,colorActiveWarning:r,caretColorWarning:l,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,borderActiveError:`1px solid ${d}`,borderFocusError:`1px solid ${u}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 0 2px ${K(d,{alpha:.2})}`,boxShadowFocusError:`0 0 0 2px ${K(d,{alpha:.2})}`,colorActiveError:r,caretColorError:d,clearColor:b,clearColorHover:p,clearColorPressed:m})},zT={name:"InternalSelection",common:se,peers:{Popover:ko},self:NT},Yc=zT,FT={name:"InternalSelection",common:ae,peers:{Popover:or},self(e){const{borderRadius:t,textColor2:n,textColorDisabled:o,inputColor:r,inputColorDisabled:i,primaryColor:a,primaryColorHover:s,warningColor:l,warningColorHover:c,errorColor:d,errorColorHover:u,iconColor:h,iconColorDisabled:g,clearColor:f,clearColorHover:b,clearColorPressed:p,placeholderColor:m,placeholderColorDisabled:k,fontSizeTiny:x,fontSizeSmall:y,fontSizeMedium:S,fontSizeLarge:P,heightTiny:v,heightSmall:w,heightMedium:R,heightLarge:L}=e;return Object.assign(Object.assign({},Cp),{fontSizeTiny:x,fontSizeSmall:y,fontSizeMedium:S,fontSizeLarge:P,heightTiny:v,heightSmall:w,heightMedium:R,heightLarge:L,borderRadius:t,textColor:n,textColorDisabled:o,placeholderColor:m,placeholderColorDisabled:k,color:r,colorDisabled:i,colorActive:K(a,{alpha:.1}),border:"1px solid #0000",borderHover:`1px solid ${s}`,borderActive:`1px solid ${a}`,borderFocus:`1px solid ${s}`,boxShadowHover:"none",boxShadowActive:`0 0 8px 0 ${K(a,{alpha:.4})}`,boxShadowFocus:`0 0 8px 0 ${K(a,{alpha:.4})}`,caretColor:a,arrowColor:h,arrowColorDisabled:g,loadingColor:a,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,borderActiveWarning:`1px solid ${l}`,borderFocusWarning:`1px solid ${c}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 8px 0 ${K(l,{alpha:.4})}`,boxShadowFocusWarning:`0 0 8px 0 ${K(l,{alpha:.4})}`,colorActiveWarning:K(l,{alpha:.1}),caretColorWarning:l,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,borderActiveError:`1px solid ${d}`,borderFocusError:`1px solid ${u}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 8px 0 ${K(d,{alpha:.4})}`,boxShadowFocusError:`0 0 8px 0 ${K(d,{alpha:.4})}`,colorActiveError:K(d,{alpha:.1}),caretColorError:d,clearColor:f,clearColorHover:b,clearColorPressed:p})}},Jc=FT,{cubicBezierEaseInOut:Yn}=yo;function WT({duration:e=".2s",delay:t=".1s"}={}){return[z("&.fade-in-width-expand-transition-leave-from, &.fade-in-width-expand-transition-enter-to",{opacity:1}),z("&.fade-in-width-expand-transition-leave-to, &.fade-in-width-expand-transition-enter-from",` + opacity: 0!important; + margin-left: 0!important; + margin-right: 0!important; + `),z("&.fade-in-width-expand-transition-leave-active",` + overflow: hidden; + transition: + opacity ${e} ${Yn}, + max-width ${e} ${Yn} ${t}, + margin-left ${e} ${Yn} ${t}, + margin-right ${e} ${Yn} ${t}; + `),z("&.fade-in-width-expand-transition-enter-active",` + overflow: hidden; + transition: + opacity ${e} ${Yn} ${t}, + max-width ${e} ${Yn}, + margin-left ${e} ${Yn}, + margin-right ${e} ${Yn}; + `)]}const kp={iconMargin:"11px 8px 0 12px",iconMarginRtl:"11px 12px 0 8px",iconSize:"24px",closeIconSize:"16px",closeSize:"20px",closeMargin:"13px 14px 0 0",closeMarginRtl:"13px 0 0 14px",padding:"13px"},jT={name:"Alert",common:ae,self(e){const{lineHeight:t,borderRadius:n,fontWeightStrong:o,dividerColor:r,inputColor:i,textColor1:a,textColor2:s,closeColorHover:l,closeColorPressed:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,infoColorSuppl:g,successColorSuppl:f,warningColorSuppl:b,errorColorSuppl:p,fontSize:m}=e;return Object.assign(Object.assign({},kp),{fontSize:m,lineHeight:t,titleFontWeight:o,borderRadius:n,border:`1px solid ${r}`,color:i,titleTextColor:a,iconColor:s,contentTextColor:s,closeBorderRadius:n,closeColorHover:l,closeColorPressed:c,closeIconColor:d,closeIconColorHover:u,closeIconColorPressed:h,borderInfo:`1px solid ${K(g,{alpha:.35})}`,colorInfo:K(g,{alpha:.25}),titleTextColorInfo:a,iconColorInfo:g,contentTextColorInfo:s,closeColorHoverInfo:l,closeColorPressedInfo:c,closeIconColorInfo:d,closeIconColorHoverInfo:u,closeIconColorPressedInfo:h,borderSuccess:`1px solid ${K(f,{alpha:.35})}`,colorSuccess:K(f,{alpha:.25}),titleTextColorSuccess:a,iconColorSuccess:f,contentTextColorSuccess:s,closeColorHoverSuccess:l,closeColorPressedSuccess:c,closeIconColorSuccess:d,closeIconColorHoverSuccess:u,closeIconColorPressedSuccess:h,borderWarning:`1px solid ${K(b,{alpha:.35})}`,colorWarning:K(b,{alpha:.25}),titleTextColorWarning:a,iconColorWarning:b,contentTextColorWarning:s,closeColorHoverWarning:l,closeColorPressedWarning:c,closeIconColorWarning:d,closeIconColorHoverWarning:u,closeIconColorPressedWarning:h,borderError:`1px solid ${K(p,{alpha:.35})}`,colorError:K(p,{alpha:.25}),titleTextColorError:a,iconColorError:p,contentTextColorError:s,closeColorHoverError:l,closeColorPressedError:c,closeIconColorError:d,closeIconColorHoverError:u,closeIconColorPressedError:h})}},GT=jT,VT=e=>{const{lineHeight:t,borderRadius:n,fontWeightStrong:o,baseColor:r,dividerColor:i,actionColor:a,textColor1:s,textColor2:l,closeColorHover:c,closeColorPressed:d,closeIconColor:u,closeIconColorHover:h,closeIconColorPressed:g,infoColor:f,successColor:b,warningColor:p,errorColor:m,fontSize:k}=e;return Object.assign(Object.assign({},kp),{fontSize:k,lineHeight:t,titleFontWeight:o,borderRadius:n,border:`1px solid ${i}`,color:a,titleTextColor:s,iconColor:l,contentTextColor:l,closeBorderRadius:n,closeColorHover:c,closeColorPressed:d,closeIconColor:u,closeIconColorHover:h,closeIconColorPressed:g,borderInfo:`1px solid ${fe(r,K(f,{alpha:.25}))}`,colorInfo:fe(r,K(f,{alpha:.08})),titleTextColorInfo:s,iconColorInfo:f,contentTextColorInfo:l,closeColorHoverInfo:c,closeColorPressedInfo:d,closeIconColorInfo:u,closeIconColorHoverInfo:h,closeIconColorPressedInfo:g,borderSuccess:`1px solid ${fe(r,K(b,{alpha:.25}))}`,colorSuccess:fe(r,K(b,{alpha:.08})),titleTextColorSuccess:s,iconColorSuccess:b,contentTextColorSuccess:l,closeColorHoverSuccess:c,closeColorPressedSuccess:d,closeIconColorSuccess:u,closeIconColorHoverSuccess:h,closeIconColorPressedSuccess:g,borderWarning:`1px solid ${fe(r,K(p,{alpha:.33}))}`,colorWarning:fe(r,K(p,{alpha:.08})),titleTextColorWarning:s,iconColorWarning:p,contentTextColorWarning:l,closeColorHoverWarning:c,closeColorPressedWarning:d,closeIconColorWarning:u,closeIconColorHoverWarning:h,closeIconColorPressedWarning:g,borderError:`1px solid ${fe(r,K(m,{alpha:.25}))}`,colorError:fe(r,K(m,{alpha:.08})),titleTextColorError:s,iconColorError:m,contentTextColorError:l,closeColorHoverError:c,closeColorPressedError:d,closeIconColorError:u,closeIconColorHoverError:h,closeIconColorPressedError:g})},UT={name:"Alert",common:se,self:VT},KT=UT,{cubicBezierEaseInOut:_n,cubicBezierEaseOut:qT,cubicBezierEaseIn:XT}=yo;function ZT({overflow:e="hidden",duration:t=".3s",originalTransition:n="",leavingDelay:o="0s",foldPadding:r=!1,enterToProps:i=void 0,leaveToProps:a=void 0,reverse:s=!1}={}){const l=s?"leave":"enter",c=s?"enter":"leave";return[z(`&.fade-in-height-expand-transition-${c}-from, + &.fade-in-height-expand-transition-${l}-to`,Object.assign(Object.assign({},i),{opacity:1})),z(`&.fade-in-height-expand-transition-${c}-to, + &.fade-in-height-expand-transition-${l}-from`,Object.assign(Object.assign({},a),{opacity:0,marginTop:"0 !important",marginBottom:"0 !important",paddingTop:r?"0 !important":void 0,paddingBottom:r?"0 !important":void 0})),z(`&.fade-in-height-expand-transition-${c}-active`,` + overflow: ${e}; + transition: + max-height ${t} ${_n} ${o}, + opacity ${t} ${qT} ${o}, + margin-top ${t} ${_n} ${o}, + margin-bottom ${t} ${_n} ${o}, + padding-top ${t} ${_n} ${o}, + padding-bottom ${t} ${_n} ${o} + ${n?","+n:""} + `),z(`&.fade-in-height-expand-transition-${l}-active`,` + overflow: ${e}; + transition: + max-height ${t} ${_n}, + opacity ${t} ${XT}, + margin-top ${t} ${_n}, + margin-bottom ${t} ${_n}, + padding-top ${t} ${_n}, + padding-bottom ${t} ${_n} + ${n?","+n:""} + `)]}const YT={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"},xp=e=>{const{borderRadius:t,railColor:n,primaryColor:o,primaryColorHover:r,primaryColorPressed:i,textColor2:a}=e;return Object.assign(Object.assign({},YT),{borderRadius:t,railColor:n,railColorActive:o,linkColor:K(o,{alpha:.15}),linkTextColor:a,linkTextColorHover:r,linkTextColorPressed:i,linkTextColorActive:o})},JT={name:"Anchor",common:se,self:xp},QT=JT,ew={name:"Anchor",common:ae,self:xp},tw=ew,nw=Jo&&"chrome"in window;Jo&&navigator.userAgent.includes("Firefox");const Sp=Jo&&navigator.userAgent.includes("Safari")&&!nw,Tp={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"},ow={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:x,heightMedium:y,heightLarge:S,clearColor:P,clearColorHover:v,clearColorPressed:w,placeholderColor:R,placeholderColorDisabled:L,iconColor:j,iconColorDisabled:M,iconColorHover:U,iconColorPressed:ne}=e;return Object.assign(Object.assign({},Tp),{countTextColorDisabled:o,countTextColor:n,heightTiny:k,heightSmall:x,heightMedium:y,heightLarge:S,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:R,placeholderColorDisabled:L,color:a,colorDisabled:s,colorFocus:K(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 ${K(r,{alpha:.3})}`,loadingColor:r,loadingColorWarning:l,borderWarning:`1px solid ${l}`,borderHoverWarning:`1px solid ${c}`,colorFocusWarning:K(l,{alpha:.1}),borderFocusWarning:`1px solid ${c}`,boxShadowFocusWarning:`0 0 8px 0 ${K(l,{alpha:.3})}`,caretColorWarning:l,loadingColorError:d,borderError:`1px solid ${d}`,borderHoverError:`1px solid ${u}`,colorFocusError:K(d,{alpha:.1}),borderFocusError:`1px solid ${u}`,boxShadowFocusError:`0 0 8px 0 ${K(d,{alpha:.3})}`,caretColorError:d,clearColor:P,clearColorHover:v,clearColorPressed:w,iconColor:j,iconColorDisabled:M,iconColorHover:U,iconColorPressed:ne,suffixTextColor:t})}},vn=ow,rw=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:x,heightSmall:y,heightMedium:S,heightLarge:P,actionColor:v,clearColor:w,clearColorHover:R,clearColorPressed:L,placeholderColor:j,placeholderColorDisabled:M,iconColor:U,iconColorDisabled:ne,iconColorHover:H,iconColorPressed:q}=e;return Object.assign(Object.assign({},Tp),{countTextColorDisabled:o,countTextColor:n,heightTiny:x,heightSmall:y,heightMedium:S,heightLarge:P,fontSizeTiny:b,fontSizeSmall:p,fontSizeMedium:m,fontSizeLarge:k,lineHeight:f,lineHeightTextarea:f,borderRadius:g,iconSize:"16px",groupLabelColor:v,groupLabelTextColor:t,textColor:t,textColorDisabled:o,textDecorationColor:t,caretColor:r,placeholderColor:j,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 ${K(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 ${K(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 ${K(u,{alpha:.2})}`,caretColorError:u,clearColor:w,clearColorHover:R,clearColorPressed:L,iconColor:U,iconColorDisabled:ne,iconColorHover:H,iconColorPressed:q,suffixTextColor:t})},iw={name:"Input",common:se,self:rw},ln=iw,wp="n-input";function aw(e){let t=0;for(const n of e)t++;return t}function ca(e){return e===""||e==null}function sw(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 et(e,r),{recordCursor:n,restoreCursor:o}}const _h=ce({name:"InputWordCount",setup(e,{slots:t}){const{mergedValueRef:n,maxlengthRef:o,mergedClsPrefixRef:r,countGraphemesRef:i}=Ae(wp),a=N(()=>{const{value:s}=n;return s===null||Array.isArray(s)?0:(i.value||aw)(s)});return()=>{const{value:s}=o,{value:l}=n;return T("span",{class:`${r.value}-input-word-count`},R2(t.default,{value:l===null||Array.isArray(l)?"":l},()=>[s===void 0?a.value:`${a.value} / ${s}`]))}}}),lw=te("input",` + max-width: 100%; + cursor: text; + line-height: 1.5; + z-index: auto; + outline: none; + box-sizing: border-box; + position: relative; + display: inline-flex; + border-radius: var(--n-border-radius); + background-color: var(--n-color); + transition: background-color .3s var(--n-bezier); + font-size: var(--n-font-size); + --n-padding-vertical: calc((var(--n-height) - 1.5 * var(--n-font-size)) / 2); +`,[G("input, textarea",` + overflow: hidden; + flex-grow: 1; + position: relative; + `),G("input-el, textarea-el, input-mirror, textarea-mirror, separator, placeholder",` + box-sizing: border-box; + font-size: inherit; + line-height: 1.5; + font-family: inherit; + border: none; + outline: none; + background-color: #0000; + text-align: inherit; + transition: + -webkit-text-fill-color .3s var(--n-bezier), + caret-color .3s var(--n-bezier), + color .3s var(--n-bezier), + text-decoration-color .3s var(--n-bezier); + `),G("input-el, textarea-el",` + -webkit-appearance: none; + scrollbar-width: none; + width: 100%; + min-width: 0; + text-decoration-color: var(--n-text-decoration-color); + color: var(--n-text-color); + caret-color: var(--n-caret-color); + background-color: transparent; + `,[z("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",` + width: 0; + height: 0; + display: none; + `),z("&::placeholder",` + color: #0000; + -webkit-text-fill-color: transparent !important; + `),z("&:-webkit-autofill ~",[G("placeholder","display: none;")])]),J("round",[Dt("textarea","border-radius: calc(var(--n-height) / 2);")]),G("placeholder",` + pointer-events: none; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + overflow: hidden; + color: var(--n-placeholder-color); + `,[z("span",` + width: 100%; + display: inline-block; + `)]),J("textarea",[G("placeholder","overflow: visible;")]),Dt("autosize","width: 100%;"),J("autosize",[G("textarea-el, input-el",` + position: absolute; + top: 0; + left: 0; + height: 100%; + `)]),te("input-wrapper",` + overflow: hidden; + display: inline-flex; + flex-grow: 1; + position: relative; + padding-left: var(--n-padding-left); + padding-right: var(--n-padding-right); + `),G("input-mirror",` + padding: 0; + height: var(--n-height); + line-height: var(--n-height); + overflow: hidden; + visibility: hidden; + position: static; + white-space: pre; + pointer-events: none; + `),G("input-el",` + padding: 0; + height: var(--n-height); + line-height: var(--n-height); + `,[z("&[type=password]::-ms-reveal","display: none;"),z("+",[G("placeholder",` + display: flex; + align-items: center; + `)])]),Dt("textarea",[G("placeholder","white-space: nowrap;")]),G("eye",` + display: flex; + align-items: center; + justify-content: center; + transition: color .3s var(--n-bezier); + `),J("textarea","width: 100%;",[te("input-word-count",` + position: absolute; + right: var(--n-padding-right); + bottom: var(--n-padding-vertical); + `),J("resizable",[te("input-wrapper",` + resize: vertical; + min-height: var(--n-height); + `)]),G("textarea-el, textarea-mirror, placeholder",` + height: 100%; + padding-left: 0; + padding-right: 0; + padding-top: var(--n-padding-vertical); + padding-bottom: var(--n-padding-vertical); + word-break: break-word; + display: inline-block; + vertical-align: bottom; + box-sizing: border-box; + line-height: var(--n-line-height-textarea); + margin: 0; + resize: none; + white-space: pre-wrap; + scroll-padding-block-end: var(--n-padding-vertical); + `),G("textarea-mirror",` + width: 100%; + pointer-events: none; + overflow: hidden; + visibility: hidden; + position: static; + white-space: pre-wrap; + overflow-wrap: break-word; + `)]),J("pair",[G("input-el, placeholder","text-align: center;"),G("separator",` + display: flex; + align-items: center; + transition: color .3s var(--n-bezier); + color: var(--n-text-color); + white-space: nowrap; + `,[te("icon",` + color: var(--n-icon-color); + `),te("base-icon",` + color: var(--n-icon-color); + `)])]),J("disabled",` + cursor: not-allowed; + background-color: var(--n-color-disabled); + `,[G("border","border: var(--n-border-disabled);"),G("input-el, textarea-el",` + cursor: not-allowed; + color: var(--n-text-color-disabled); + text-decoration-color: var(--n-text-color-disabled); + `),G("placeholder","color: var(--n-placeholder-color-disabled);"),G("separator","color: var(--n-text-color-disabled);",[te("icon",` + color: var(--n-icon-color-disabled); + `),te("base-icon",` + color: var(--n-icon-color-disabled); + `)]),te("input-word-count",` + color: var(--n-count-text-color-disabled); + `),G("suffix, prefix","color: var(--n-text-color-disabled);",[te("icon",` + color: var(--n-icon-color-disabled); + `),te("internal-icon",` + color: var(--n-icon-color-disabled); + `)])]),Dt("disabled",[G("eye",` + color: var(--n-icon-color); + cursor: pointer; + `,[z("&:hover",` + color: var(--n-icon-color-hover); + `),z("&:active",` + color: var(--n-icon-color-pressed); + `)]),z("&:hover",[G("state-border","border: var(--n-border-hover);")]),J("focus","background-color: var(--n-color-focus);",[G("state-border",` + border: var(--n-border-focus); + box-shadow: var(--n-box-shadow-focus); + `)])]),G("border, state-border",` + box-sizing: border-box; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + pointer-events: none; + border-radius: inherit; + border: var(--n-border); + transition: + box-shadow .3s var(--n-bezier), + border-color .3s var(--n-bezier); + `),G("state-border",` + border-color: #0000; + z-index: 1; + `),G("prefix","margin-right: 4px;"),G("suffix",` + margin-left: 4px; + `),G("suffix, prefix",` + transition: color .3s var(--n-bezier); + flex-wrap: nowrap; + flex-shrink: 0; + line-height: var(--n-height); + white-space: nowrap; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--n-suffix-text-color); + `,[te("base-loading",` + font-size: var(--n-icon-size); + margin: 0 2px; + color: var(--n-loading-color); + `),te("base-clear",` + font-size: var(--n-icon-size); + `,[G("placeholder",[te("base-icon",` + transition: color .3s var(--n-bezier); + color: var(--n-icon-color); + font-size: var(--n-icon-size); + `)])]),z(">",[te("icon",` + transition: color .3s var(--n-bezier); + color: var(--n-icon-color); + font-size: var(--n-icon-size); + `)]),te("base-icon",` + font-size: var(--n-icon-size); + `)]),te("input-word-count",` + pointer-events: none; + line-height: 1.5; + font-size: .85em; + color: var(--n-count-text-color); + transition: color .3s var(--n-bezier); + margin-left: 4px; + font-variant: tabular-nums; + `),["warning","error"].map(e=>J(`${e}-status`,[Dt("disabled",[te("base-loading",` + color: var(--n-loading-color-${e}) + `),G("input-el, textarea-el",` + caret-color: var(--n-caret-color-${e}); + `),G("state-border",` + border: var(--n-border-${e}); + `),z("&:hover",[G("state-border",` + border: var(--n-border-hover-${e}); + `)]),z("&:focus",` + background-color: var(--n-color-focus-${e}); + `,[G("state-border",` + box-shadow: var(--n-box-shadow-focus-${e}); + border: var(--n-border-focus-${e}); + `)]),J("focus",` + background-color: var(--n-color-focus-${e}); + `,[G("state-border",` + box-shadow: var(--n-box-shadow-focus-${e}); + border: var(--n-border-focus-${e}); + `)])])]))]),cw=te("input",[J("disabled",[G("input-el, textarea-el",` + -webkit-text-fill-color: var(--n-text-color-disabled); + `)])]),dw=Object.assign(Object.assign({},Re.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}),uw=ce({name:"Input",props:dw,setup(e){const{mergedClsPrefixRef:t,mergedBorderedRef:n,inlineThemeDisabled:o,mergedRtlRef:r}=at(e),i=Re("Input","-input",lw,ln,e,t);Sp&&Dr("-input-safari",cw,t);const a=V(null),s=V(null),l=V(null),c=V(null),d=V(null),u=V(null),h=V(null),g=sw(h),f=V(null),{localeRef:b}=TS("Input"),p=V(e.defaultValue),m=Ue(e,"value"),k=Rc(m,p),x=mm(e),{mergedSizeRef:y,mergedDisabledRef:S,mergedStatusRef:P}=x,v=V(!1),w=V(!1),R=V(!1),L=V(!1);let j=null;const M=N(()=>{const{placeholder:D,pair:Y}=e;return Y?Array.isArray(D)?D:D===void 0?["",""]:[D,D]:D===void 0?[b.value.placeholder]:[D]}),U=N(()=>{const{value:D}=R,{value:Y}=k,{value:Ce}=M;return!D&&(ca(Y)||Array.isArray(Y)&&ca(Y[0]))&&Ce[0]}),ne=N(()=>{const{value:D}=R,{value:Y}=k,{value:Ce}=M;return!D&&Ce[1]&&(ca(Y)||Array.isArray(Y)&&ca(Y[1]))}),H=wt(()=>e.internalForceFocus||v.value),q=wt(()=>{if(S.value||e.readonly||!e.clearable||!H.value&&!w.value)return!1;const{value:D}=k,{value:Y}=H;return e.pair?!!(Array.isArray(D)&&(D[0]||D[1]))&&(w.value||Y):!!D&&(w.value||Y)}),W=N(()=>{const{showPasswordOn:D}=e;if(D)return D;if(e.showPasswordToggle)return"click"}),re=V(!1),be=N(()=>{const{textDecoration:D}=e;return D?Array.isArray(D)?D.map(Y=>({textDecoration:Y})):[{textDecoration:D}]:["",""]}),ve=V(void 0),_e=()=>{var D,Y;if(e.type==="textarea"){const{autosize:Ce}=e;if(Ce&&(ve.value=(Y=(D=f.value)===null||D===void 0?void 0:D.$el)===null||Y===void 0?void 0:Y.offsetWidth),!s.value||typeof Ce=="boolean")return;const{paddingTop:Je,paddingBottom:ut,lineHeight:Xe}=window.getComputedStyle(s.value),wo=Number(Je.slice(0,-2)),_o=Number(ut.slice(0,-2)),Po=Number(Xe.slice(0,-2)),{value:Fr}=l;if(!Fr)return;if(Ce.minRows){const Wr=Math.max(Ce.minRows,1),$s=`${wo+_o+Po*Wr}px`;Fr.style.minHeight=$s}if(Ce.maxRows){const Wr=`${wo+_o+Po*Ce.maxRows}px`;Fr.style.maxHeight=Wr}}},Me=N(()=>{const{maxlength:D}=e;return D===void 0?void 0:Number(D)});Pt(()=>{const{value:D}=k;Array.isArray(D)||nn(D)});const lt=Qt().proxy;function Ze(D,Y){const{onUpdateValue:Ce,"onUpdate:value":Je,onInput:ut}=e,{nTriggerFormInput:Xe}=x;Ce&&We(Ce,D,Y),Je&&We(Je,D,Y),ut&&We(ut,D,Y),p.value=D,Xe()}function Ye(D,Y){const{onChange:Ce}=e,{nTriggerFormChange:Je}=x;Ce&&We(Ce,D,Y),p.value=D,Je()}function Ee(D){const{onBlur:Y}=e,{nTriggerFormBlur:Ce}=x;Y&&We(Y,D),Ce()}function De(D){const{onFocus:Y}=e,{nTriggerFormFocus:Ce}=x;Y&&We(Y,D),Ce()}function Ot(D){const{onClear:Y}=e;Y&&We(Y,D)}function Le(D){const{onInputBlur:Y}=e;Y&&We(Y,D)}function ct(D){const{onInputFocus:Y}=e;Y&&We(Y,D)}function Rt(){const{onDeactivate:D}=e;D&&We(D)}function bt(){const{onActivate:D}=e;D&&We(D)}function E(D){const{onClick:Y}=e;Y&&We(Y,D)}function A(D){const{onWrapperFocus:Y}=e;Y&&We(Y,D)}function O(D){const{onWrapperBlur:Y}=e;Y&&We(Y,D)}function X(){R.value=!0}function Z(D){R.value=!1,D.target===u.value?oe(D,1):oe(D,0)}function oe(D,Y=0,Ce="input"){const Je=D.target.value;if(nn(Je),D instanceof InputEvent&&!D.isComposing&&(R.value=!1),e.type==="textarea"){const{value:Xe}=f;Xe&&Xe.syncUnifiedContainer()}if(j=Je,R.value)return;g.recordCursor();const ut=le(Je);if(ut)if(!e.pair)Ce==="input"?Ze(Je,{source:Y}):Ye(Je,{source:Y});else{let{value:Xe}=k;Array.isArray(Xe)?Xe=[Xe[0],Xe[1]]:Xe=["",""],Xe[Y]=Je,Ce==="input"?Ze(Xe,{source:Y}):Ye(Xe,{source:Y})}lt.$forceUpdate(),ut||Ft(g.restoreCursor)}function le(D){const{countGraphemes:Y,maxlength:Ce,minlength:Je}=e;if(Y){let Xe;if(Ce!==void 0&&(Xe===void 0&&(Xe=Y(D)),Xe>Number(Ce))||Je!==void 0&&(Xe===void 0&&(Xe=Y(D)),Xe{Je.preventDefault(),Ke("mouseup",document,Y)};if(it("mouseup",document,Y),W.value!=="mousedown")return;re.value=!0;const Ce=()=>{re.value=!1,Ke("mouseup",document,Ce)};it("mouseup",document,Ce)}function Gt(D){e.onKeyup&&We(e.onKeyup,D)}function zr(D){switch(e.onKeydown&&We(e.onKeydown,D),D.key){case"Escape":ue();break;case"Enter":ee(D);break}}function ee(D){var Y,Ce;if(e.passivelyActivated){const{value:Je}=L;if(Je){e.internalDeactivateOnEnter&&ue();return}D.preventDefault(),e.type==="textarea"?(Y=s.value)===null||Y===void 0||Y.focus():(Ce=d.value)===null||Ce===void 0||Ce.focus()}}function ue(){e.passivelyActivated&&(L.value=!1,Ft(()=>{var D;(D=a.value)===null||D===void 0||D.focus()}))}function xe(){var D,Y,Ce;S.value||(e.passivelyActivated?(D=a.value)===null||D===void 0||D.focus():((Y=s.value)===null||Y===void 0||Y.focus(),(Ce=d.value)===null||Ce===void 0||Ce.focus()))}function qe(){var D;!((D=a.value)===null||D===void 0)&&D.contains(document.activeElement)&&document.activeElement.blur()}function ft(){var D,Y;(D=s.value)===null||D===void 0||D.select(),(Y=d.value)===null||Y===void 0||Y.select()}function Ht(){S.value||(s.value?s.value.focus():d.value&&d.value.focus())}function yn(){const{value:D}=a;D!=null&&D.contains(document.activeElement)&&D!==document.activeElement&&ue()}function st(D){if(e.type==="textarea"){const{value:Y}=s;Y==null||Y.scrollTo(D)}else{const{value:Y}=d;Y==null||Y.scrollTo(D)}}function nn(D){const{type:Y,pair:Ce,autosize:Je}=e;if(!Ce&&Je)if(Y==="textarea"){const{value:ut}=l;ut&&(ut.textContent=(D??"")+`\r +`)}else{const{value:ut}=c;ut&&(D?ut.textContent=D:ut.innerHTML=" ")}}function To(){_e()}const yd=V({top:"0"});function r1(D){var Y;const{scrollTop:Ce}=D.target;yd.value.top=`${-Ce}px`,(Y=f.value)===null||Y===void 0||Y.syncUnifiedContainer()}let Wi=null;lo(()=>{const{autosize:D,type:Y}=e;D&&Y==="textarea"?Wi=et(k,Ce=>{!Array.isArray(Ce)&&Ce!==j&&nn(Ce)}):Wi==null||Wi()});let ji=null;lo(()=>{e.type==="textarea"?ji=et(k,D=>{var Y;!Array.isArray(D)&&D!==j&&((Y=f.value)===null||Y===void 0||Y.syncUnifiedContainer())}):ji==null||ji()}),je(wp,{mergedValueRef:k,maxlengthRef:Me,mergedClsPrefixRef:t,countGraphemesRef:Ue(e,"countGraphemes")});const i1={wrapperElRef:a,inputElRef:d,textareaElRef:s,isCompositing:R,clear:me,focus:xe,blur:qe,select:ft,deactivate:yn,activate:Ht,scrollTo:st},a1=Co("Input",r,t),Cd=N(()=>{const{value:D}=y,{common:{cubicBezierEaseInOut:Y},self:{color:Ce,borderRadius:Je,textColor:ut,caretColor:Xe,caretColorError:wo,caretColorWarning:_o,textDecorationColor:Po,border:Fr,borderDisabled:Wr,borderHover:$s,borderFocus:s1,placeholderColor:l1,placeholderColorDisabled:c1,lineHeightTextarea:d1,colorDisabled:u1,colorFocus:h1,textColorDisabled:f1,boxShadowFocus:g1,iconSize:m1,colorFocusWarning:p1,boxShadowFocusWarning:b1,borderWarning:v1,borderFocusWarning:y1,borderHoverWarning:C1,colorFocusError:k1,boxShadowFocusError:x1,borderError:S1,borderFocusError:T1,borderHoverError:w1,clearSize:_1,clearColor:P1,clearColorHover:A1,clearColorPressed:R1,iconColor:E1,iconColorDisabled:I1,suffixTextColor:M1,countTextColor:L1,countTextColorDisabled:D1,iconColorHover:$1,iconColorPressed:O1,loadingColor:H1,loadingColorError:B1,loadingColorWarning:N1,[ge("padding",D)]:z1,[ge("fontSize",D)]:F1,[ge("height",D)]:W1}}=i.value,{left:j1,right:G1}=as(z1);return{"--n-bezier":Y,"--n-count-text-color":L1,"--n-count-text-color-disabled":D1,"--n-color":Ce,"--n-font-size":F1,"--n-border-radius":Je,"--n-height":W1,"--n-padding-left":j1,"--n-padding-right":G1,"--n-text-color":ut,"--n-caret-color":Xe,"--n-text-decoration-color":Po,"--n-border":Fr,"--n-border-disabled":Wr,"--n-border-hover":$s,"--n-border-focus":s1,"--n-placeholder-color":l1,"--n-placeholder-color-disabled":c1,"--n-icon-size":m1,"--n-line-height-textarea":d1,"--n-color-disabled":u1,"--n-color-focus":h1,"--n-text-color-disabled":f1,"--n-box-shadow-focus":g1,"--n-loading-color":H1,"--n-caret-color-warning":_o,"--n-color-focus-warning":p1,"--n-box-shadow-focus-warning":b1,"--n-border-warning":v1,"--n-border-focus-warning":y1,"--n-border-hover-warning":C1,"--n-loading-color-warning":N1,"--n-caret-color-error":wo,"--n-color-focus-error":k1,"--n-box-shadow-focus-error":x1,"--n-border-error":S1,"--n-border-focus-error":T1,"--n-border-hover-error":w1,"--n-loading-color-error":B1,"--n-clear-color":P1,"--n-clear-size":_1,"--n-clear-color-hover":A1,"--n-clear-color-pressed":R1,"--n-icon-color":E1,"--n-icon-color-hover":$1,"--n-icon-color-pressed":O1,"--n-icon-color-disabled":I1,"--n-suffix-text-color":M1}}),rr=o?At("input",N(()=>{const{value:D}=y;return D[0]}),Cd,e):void 0;return Object.assign(Object.assign({},i1),{wrapperElRef:a,inputElRef:d,inputMirrorElRef:c,inputEl2Ref:u,textareaElRef:s,textareaMirrorElRef:l,textareaScrollbarInstRef:f,rtlEnabled:a1,uncontrolledValue:p,mergedValue:k,passwordVisible:re,mergedPlaceholder:M,showPlaceholder1:U,showPlaceholder2:ne,mergedFocus:H,isComposing:R,activated:L,showClearButton:q,mergedSize:y,mergedDisabled:S,textDecorationStyle:be,mergedClsPrefix:t,mergedBordered:n,mergedShowPasswordOn:W,placeholderStyle:yd,mergedStatus:P,textAreaScrollContainerWidth:ve,handleTextAreaScroll:r1,handleCompositionStart:X,handleCompositionEnd:Z,handleInput:oe,handleInputBlur:C,handleInputFocus:_,handleWrapperBlur:I,handleWrapperFocus:F,handleMouseEnter:Be,handleMouseLeave:dt,handleMouseDown:ke,handleChange:Q,handleClick:$,handleClear:B,handlePasswordToggleClick:Et,handlePasswordToggleMousedown:$n,handleWrapperKeydown:zr,handleWrapperKeyup:Gt,handleTextAreaMirrorResize:To,getTextareaScrollContainer:()=>s.value,mergedTheme:i,cssVars:o?void 0:Cd,themeClass:rr==null?void 0:rr.themeClass,onRender:rr==null?void 0:rr.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(),T("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},T("div",{class:`${n}-input-wrapper`},Tt(l.prefix,c=>c&&T("div",{class:`${n}-input__prefix`},c)),i==="textarea"?T(Cs,{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 T(Oe,null,T("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?T("div",{class:`${n}-input__placeholder`,style:[this.placeholderStyle,h],key:"placeholder"},this.mergedPlaceholder[0]):null,this.autosize?T(Da,{onResize:this.handleTextAreaMirrorResize},{default:()=>T("div",{ref:"textareaMirrorElRef",class:`${n}-input__textarea-mirror`,key:"mirror"})}):null)}}):T("div",{class:`${n}-input__input`},T("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?T("div",{class:`${n}-input__placeholder`},T("span",null,this.mergedPlaceholder[0])):null,this.autosize?T("div",{class:`${n}-input__input-mirror`,key:"mirror",ref:"inputMirrorElRef"}," "):null),!this.pair&&Tt(l.suffix,c=>c||this.clearable||this.showCount||this.mergedShowPasswordOn||this.loading!==void 0?T("div",{class:`${n}-input__suffix`},[Tt(l["clear-icon-placeholder"],d=>(this.clearable||d)&&T(Wl,{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?T(BT,{clsPrefix:n,loading:this.loading,showArrow:!1,showClear:!1,style:this.cssVars}):null,this.internalLoadingBeforeSuffix?c:null,this.showCount&&this.type!=="textarea"?T(_h,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"?T("div",{class:`${n}-input__eye`,onMousedown:this.handlePasswordToggleMousedown,onClick:this.handlePasswordToggleClick},this.passwordVisible?Vo(l["password-visible-icon"],()=>[T(fo,{clsPrefix:n},{default:()=>T(PS,null)})]):Vo(l["password-invisible-icon"],()=>[T(fo,{clsPrefix:n},{default:()=>T(AS,null)})])):null]):null)),this.pair?T("span",{class:`${n}-input__separator`},Vo(l.separator,()=>[this.separator])):null,this.pair?T("div",{class:`${n}-input-wrapper`},T("div",{class:`${n}-input__input`},T("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?T("div",{class:`${n}-input__placeholder`},T("span",null,this.mergedPlaceholder[1])):null),Tt(l.suffix,c=>(this.clearable||c)&&T("div",{class:`${n}-input__suffix`},[this.clearable&&T(Wl,{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?T("div",{class:`${n}-input__border`}):null,this.mergedBordered?T("div",{class:`${n}-input__state-border`}):null,this.showCount&&i==="textarea"?T(_h,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 _p(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const hw={name:"AutoComplete",common:se,peers:{InternalSelectMenu:Bi,Input:ln},self:_p},fw=hw,gw={name:"AutoComplete",common:ae,peers:{InternalSelectMenu:Ni,Input:vn},self:_p},mw=gw,Pp=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:fe(o,n),colorModal:fe(d,n),colorPopover:fe(u,n)}},pw={name:"Avatar",common:se,self:Pp},Ap=pw,bw={name:"Avatar",common:ae,self:Pp},Rp=bw,Ep=()=>({gap:"-12px"}),vw={name:"AvatarGroup",common:se,peers:{Avatar:Ap},self:Ep},yw=vw,Cw={name:"AvatarGroup",common:ae,peers:{Avatar:Rp},self:Ep},kw=Cw,Ip={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"},xw={name:"BackTop",common:ae,self(e){const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Ip),{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)"})}},Sw=xw,Tw=e=>{const{popoverColor:t,textColor2:n,primaryColorHover:o,primaryColorPressed:r}=e;return Object.assign(Object.assign({},Ip),{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)"})},ww={name:"BackTop",common:se,self:Tw},_w=ww,Pw={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}}},Aw=Pw,Rw=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}},Ew={name:"Badge",common:se,self:Rw},Iw=Ew,Mw={fontWeightActive:"400"},Mp=e=>{const{fontSize:t,textColor3:n,textColor2:o,borderRadius:r,buttonColor2Hover:i,buttonColor2Pressed:a}=e;return Object.assign(Object.assign({},Mw),{fontSize:t,itemLineHeight:"1.25",itemTextColor:n,itemTextColorHover:o,itemTextColorPressed:o,itemTextColorActive:o,itemBorderRadius:r,itemColorHover:i,itemColorPressed:a,separatorColor:n})},Lw={name:"Breadcrumb",common:se,self:Mp},Dw=Lw,$w={name:"Breadcrumb",common:ae,self:Mp},Ow=$w;function Io(e){return fe(e,[255,255,255,.16])}function da(e){return fe(e,[0,0,0,.12])}const Hw="n-button-group",Bw={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"},Lp=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:x,infoColorPressed:y,successColor:S,successColorHover:P,successColorPressed:v,warningColor:w,warningColorHover:R,warningColorPressed:L,errorColor:j,errorColorHover:M,errorColorPressed:U,fontWeight:ne,buttonColor2:H,buttonColor2Hover:q,buttonColor2Pressed:W,fontWeightStrong:re}=e;return Object.assign(Object.assign({},Bw),{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:H,colorSecondaryHover:q,colorSecondaryPressed:W,colorTertiary:H,colorTertiaryHover:q,colorTertiaryPressed:W,colorQuaternary:"#0000",colorQuaternaryHover:q,colorQuaternaryPressed:W,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:x,colorPressedInfo:y,colorFocusInfo:x,colorDisabledInfo:k,textColorInfo:m,textColorHoverInfo:m,textColorPressedInfo:m,textColorFocusInfo:m,textColorDisabledInfo:m,textColorTextInfo:k,textColorTextHoverInfo:x,textColorTextPressedInfo:y,textColorTextFocusInfo:x,textColorTextDisabledInfo:u,textColorGhostInfo:k,textColorGhostHoverInfo:x,textColorGhostPressedInfo:y,textColorGhostFocusInfo:x,textColorGhostDisabledInfo:k,borderInfo:`1px solid ${k}`,borderHoverInfo:`1px solid ${x}`,borderPressedInfo:`1px solid ${y}`,borderFocusInfo:`1px solid ${x}`,borderDisabledInfo:`1px solid ${k}`,rippleColorInfo:k,colorSuccess:S,colorHoverSuccess:P,colorPressedSuccess:v,colorFocusSuccess:P,colorDisabledSuccess:S,textColorSuccess:m,textColorHoverSuccess:m,textColorPressedSuccess:m,textColorFocusSuccess:m,textColorDisabledSuccess:m,textColorTextSuccess:S,textColorTextHoverSuccess:P,textColorTextPressedSuccess:v,textColorTextFocusSuccess:P,textColorTextDisabledSuccess:u,textColorGhostSuccess:S,textColorGhostHoverSuccess:P,textColorGhostPressedSuccess:v,textColorGhostFocusSuccess:P,textColorGhostDisabledSuccess:S,borderSuccess:`1px solid ${S}`,borderHoverSuccess:`1px solid ${P}`,borderPressedSuccess:`1px solid ${v}`,borderFocusSuccess:`1px solid ${P}`,borderDisabledSuccess:`1px solid ${S}`,rippleColorSuccess:S,colorWarning:w,colorHoverWarning:R,colorPressedWarning:L,colorFocusWarning:R,colorDisabledWarning:w,textColorWarning:m,textColorHoverWarning:m,textColorPressedWarning:m,textColorFocusWarning:m,textColorDisabledWarning:m,textColorTextWarning:w,textColorTextHoverWarning:R,textColorTextPressedWarning:L,textColorTextFocusWarning:R,textColorTextDisabledWarning:u,textColorGhostWarning:w,textColorGhostHoverWarning:R,textColorGhostPressedWarning:L,textColorGhostFocusWarning:R,textColorGhostDisabledWarning:w,borderWarning:`1px solid ${w}`,borderHoverWarning:`1px solid ${R}`,borderPressedWarning:`1px solid ${L}`,borderFocusWarning:`1px solid ${R}`,borderDisabledWarning:`1px solid ${w}`,rippleColorWarning:w,colorError:j,colorHoverError:M,colorPressedError:U,colorFocusError:M,colorDisabledError:j,textColorError:m,textColorHoverError:m,textColorPressedError:m,textColorFocusError:m,textColorDisabledError:m,textColorTextError:j,textColorTextHoverError:M,textColorTextPressedError:U,textColorTextFocusError:M,textColorTextDisabledError:u,textColorGhostError:j,textColorGhostHoverError:M,textColorGhostPressedError:U,textColorGhostFocusError:M,textColorGhostDisabledError:j,borderError:`1px solid ${j}`,borderHoverError:`1px solid ${M}`,borderPressedError:`1px solid ${U}`,borderFocusError:`1px solid ${M}`,borderDisabledError:`1px solid ${j}`,rippleColorError:j,waveOpacity:"0.6",fontWeight:ne,fontWeightStrong:re})},Nw={name:"Button",common:se,self:Lp},qt=Nw,zw={name:"Button",common:ae,self(e){const t=Lp(e);return t.waveOpacity="0.8",t.colorOpacitySecondary="0.16",t.colorOpacitySecondaryHover="0.2",t.colorOpacitySecondaryPressed="0.12",t}},tn=zw,Fw=z([te("button",` + margin: 0; + font-weight: var(--n-font-weight); + line-height: 1; + font-family: inherit; + padding: var(--n-padding); + height: var(--n-height); + font-size: var(--n-font-size); + border-radius: var(--n-border-radius); + color: var(--n-text-color); + background-color: var(--n-color); + width: var(--n-width); + white-space: nowrap; + outline: none; + position: relative; + z-index: auto; + border: none; + display: inline-flex; + flex-wrap: nowrap; + flex-shrink: 0; + align-items: center; + justify-content: center; + user-select: none; + -webkit-user-select: none; + text-align: center; + cursor: pointer; + text-decoration: none; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + border-color .3s var(--n-bezier); + `,[J("color",[G("border",{borderColor:"var(--n-border-color)"}),J("disabled",[G("border",{borderColor:"var(--n-border-color-disabled)"})]),Dt("disabled",[z("&:focus",[G("state-border",{borderColor:"var(--n-border-color-focus)"})]),z("&:hover",[G("state-border",{borderColor:"var(--n-border-color-hover)"})]),z("&:active",[G("state-border",{borderColor:"var(--n-border-color-pressed)"})]),J("pressed",[G("state-border",{borderColor:"var(--n-border-color-pressed)"})])])]),J("disabled",{backgroundColor:"var(--n-color-disabled)",color:"var(--n-text-color-disabled)"},[G("border",{border:"var(--n-border-disabled)"})]),Dt("disabled",[z("&:focus",{backgroundColor:"var(--n-color-focus)",color:"var(--n-text-color-focus)"},[G("state-border",{border:"var(--n-border-focus)"})]),z("&:hover",{backgroundColor:"var(--n-color-hover)",color:"var(--n-text-color-hover)"},[G("state-border",{border:"var(--n-border-hover)"})]),z("&:active",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[G("state-border",{border:"var(--n-border-pressed)"})]),J("pressed",{backgroundColor:"var(--n-color-pressed)",color:"var(--n-text-color-pressed)"},[G("state-border",{border:"var(--n-border-pressed)"})])]),J("loading","cursor: wait;"),te("base-wave",` + pointer-events: none; + top: 0; + right: 0; + bottom: 0; + left: 0; + animation-iteration-count: 1; + animation-duration: var(--n-ripple-duration); + animation-timing-function: var(--n-bezier-ease-out), var(--n-bezier-ease-out); + `,[J("active",{zIndex:1,animationName:"button-wave-spread, button-wave-opacity"})]),Jo&&"MozBoxSizing"in document.createElement("div").style?z("&::moz-focus-inner",{border:0}):null,G("border, state-border",` + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + border-radius: inherit; + transition: border-color .3s var(--n-bezier); + pointer-events: none; + `),G("border",{border:"var(--n-border)"}),G("state-border",{border:"var(--n-border)",borderColor:"#0000",zIndex:1}),G("icon",` + margin: var(--n-icon-margin); + margin-left: 0; + height: var(--n-icon-size); + width: var(--n-icon-size); + max-width: var(--n-icon-size); + font-size: var(--n-icon-size); + position: relative; + flex-shrink: 0; + `,[te("icon-slot",` + height: var(--n-icon-size); + width: var(--n-icon-size); + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + display: flex; + align-items: center; + justify-content: center; + `,[Ri({top:"50%",originalTransform:"translateY(-50%)"})]),WT()]),G("content",` + display: flex; + align-items: center; + flex-wrap: nowrap; + min-width: 0; + `,[z("~",[G("icon",{margin:"var(--n-icon-margin)",marginRight:0})])]),J("block",` + display: flex; + width: 100%; + `),J("dashed",[G("border, state-border",{borderStyle:"dashed !important"})]),J("disabled",{cursor:"not-allowed",opacity:"var(--n-opacity-disabled)"})]),z("@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)"}}),z("@keyframes button-wave-opacity",{from:{opacity:"var(--n-wave-opacity)"},to:{opacity:0}})]),Ww=Object.assign(Object.assign({},Re.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:!Sp}}),jw=ce({name:"Button",props:Ww,setup(e){const t=V(null),n=V(null),o=V(!1),r=wt(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),i=Ae(Hw,{}),{mergedSizeRef:a}=mm({},{defaultSize:"medium",mergedSize:y=>{const{size:S}=e;if(S)return S;const{size:P}=i;if(P)return P;const{mergedSize:v}=y||{};return v?v.value:"medium"}}),s=N(()=>e.focusable&&!e.disabled),l=y=>{var S;s.value||y.preventDefault(),!e.nativeFocusBehavior&&(y.preventDefault(),!e.disabled&&s.value&&((S=t.value)===null||S===void 0||S.focus({preventScroll:!0})))},c=y=>{var S;if(!e.disabled&&!e.loading){const{onClick:P}=e;P&&We(P,y),e.text||(S=n.value)===null||S===void 0||S.play()}},d=y=>{switch(y.key){case"Enter":if(!e.keyboard)return;o.value=!1}},u=y=>{switch(y.key){case"Enter":if(!e.keyboard||e.loading){y.preventDefault();return}o.value=!0}},h=()=>{o.value=!1},{inlineThemeDisabled:g,mergedClsPrefixRef:f,mergedRtlRef:b}=at(e),p=Re("Button","-button",Fw,qt,e,f),m=Co("Button",b,f),k=N(()=>{const y=p.value,{common:{cubicBezierEaseInOut:S,cubicBezierEaseOut:P},self:v}=y,{rippleDuration:w,opacityDisabled:R,fontWeight:L,fontWeightStrong:j}=v,M=a.value,{dashed:U,type:ne,ghost:H,text:q,color:W,round:re,circle:be,textColor:ve,secondary:_e,tertiary:Me,quaternary:lt,strong:Ze}=e,Ye={"font-weight":Ze?j:L};let Ee={"--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 De=ne==="tertiary",Ot=ne==="default",Le=De?"default":ne;if(q){const C=ve||W;Ee={"--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||v[ge("textColorText",Le)],"--n-text-color-hover":C?Io(C):v[ge("textColorTextHover",Le)],"--n-text-color-pressed":C?da(C):v[ge("textColorTextPressed",Le)],"--n-text-color-focus":C?Io(C):v[ge("textColorTextHover",Le)],"--n-text-color-disabled":C||v[ge("textColorTextDisabled",Le)]}}else if(H||U){const C=ve||W;Ee={"--n-color":"#0000","--n-color-hover":"#0000","--n-color-pressed":"#0000","--n-color-focus":"#0000","--n-color-disabled":"#0000","--n-ripple-color":W||v[ge("rippleColor",Le)],"--n-text-color":C||v[ge("textColorGhost",Le)],"--n-text-color-hover":C?Io(C):v[ge("textColorGhostHover",Le)],"--n-text-color-pressed":C?da(C):v[ge("textColorGhostPressed",Le)],"--n-text-color-focus":C?Io(C):v[ge("textColorGhostHover",Le)],"--n-text-color-disabled":C||v[ge("textColorGhostDisabled",Le)]}}else if(_e){const C=Ot?v.textColor:De?v.textColorTertiary:v[ge("color",Le)],_=W||C,I=ne!=="default"&&ne!=="tertiary";Ee={"--n-color":I?K(_,{alpha:Number(v.colorOpacitySecondary)}):v.colorSecondary,"--n-color-hover":I?K(_,{alpha:Number(v.colorOpacitySecondaryHover)}):v.colorSecondaryHover,"--n-color-pressed":I?K(_,{alpha:Number(v.colorOpacitySecondaryPressed)}):v.colorSecondaryPressed,"--n-color-focus":I?K(_,{alpha:Number(v.colorOpacitySecondaryHover)}):v.colorSecondaryHover,"--n-color-disabled":v.colorSecondary,"--n-ripple-color":"#0000","--n-text-color":_,"--n-text-color-hover":_,"--n-text-color-pressed":_,"--n-text-color-focus":_,"--n-text-color-disabled":_}}else if(Me||lt){const C=Ot?v.textColor:De?v.textColorTertiary:v[ge("color",Le)],_=W||C;Me?(Ee["--n-color"]=v.colorTertiary,Ee["--n-color-hover"]=v.colorTertiaryHover,Ee["--n-color-pressed"]=v.colorTertiaryPressed,Ee["--n-color-focus"]=v.colorSecondaryHover,Ee["--n-color-disabled"]=v.colorTertiary):(Ee["--n-color"]=v.colorQuaternary,Ee["--n-color-hover"]=v.colorQuaternaryHover,Ee["--n-color-pressed"]=v.colorQuaternaryPressed,Ee["--n-color-focus"]=v.colorQuaternaryHover,Ee["--n-color-disabled"]=v.colorQuaternary),Ee["--n-ripple-color"]="#0000",Ee["--n-text-color"]=_,Ee["--n-text-color-hover"]=_,Ee["--n-text-color-pressed"]=_,Ee["--n-text-color-focus"]=_,Ee["--n-text-color-disabled"]=_}else Ee={"--n-color":W||v[ge("color",Le)],"--n-color-hover":W?Io(W):v[ge("colorHover",Le)],"--n-color-pressed":W?da(W):v[ge("colorPressed",Le)],"--n-color-focus":W?Io(W):v[ge("colorFocus",Le)],"--n-color-disabled":W||v[ge("colorDisabled",Le)],"--n-ripple-color":W||v[ge("rippleColor",Le)],"--n-text-color":ve||(W?v.textColorPrimary:De?v.textColorTertiary:v[ge("textColor",Le)]),"--n-text-color-hover":ve||(W?v.textColorHoverPrimary:v[ge("textColorHover",Le)]),"--n-text-color-pressed":ve||(W?v.textColorPressedPrimary:v[ge("textColorPressed",Le)]),"--n-text-color-focus":ve||(W?v.textColorFocusPrimary:v[ge("textColorFocus",Le)]),"--n-text-color-disabled":ve||(W?v.textColorDisabledPrimary:v[ge("textColorDisabled",Le)])};let ct={"--n-border":"initial","--n-border-hover":"initial","--n-border-pressed":"initial","--n-border-focus":"initial","--n-border-disabled":"initial"};q?ct={"--n-border":"none","--n-border-hover":"none","--n-border-pressed":"none","--n-border-focus":"none","--n-border-disabled":"none"}:ct={"--n-border":v[ge("border",Le)],"--n-border-hover":v[ge("borderHover",Le)],"--n-border-pressed":v[ge("borderPressed",Le)],"--n-border-focus":v[ge("borderFocus",Le)],"--n-border-disabled":v[ge("borderDisabled",Le)]};const{[ge("height",M)]:Rt,[ge("fontSize",M)]:bt,[ge("padding",M)]:E,[ge("paddingRound",M)]:A,[ge("iconSize",M)]:O,[ge("borderRadius",M)]:X,[ge("iconMargin",M)]:Z,waveOpacity:oe}=v,le={"--n-width":be&&!q?Rt:"initial","--n-height":q?"initial":Rt,"--n-font-size":bt,"--n-padding":be||q?"initial":re?A:E,"--n-icon-size":O,"--n-icon-margin":Z,"--n-border-radius":q?"initial":be||re?Rt:X};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":S,"--n-bezier-ease-out":P,"--n-ripple-duration":w,"--n-opacity-disabled":R,"--n-wave-opacity":oe},Ye),Ee),ct),le)}),x=g?At("button",N(()=>{let y="";const{dashed:S,type:P,ghost:v,text:w,color:R,round:L,circle:j,textColor:M,secondary:U,tertiary:ne,quaternary:H,strong:q}=e;S&&(y+="a"),v&&(y+="b"),w&&(y+="c"),L&&(y+="d"),j&&(y+="e"),U&&(y+="f"),ne&&(y+="g"),H&&(y+="h"),q&&(y+="i"),R&&(y+="j"+uu(R)),M&&(y+="k"+uu(M));const{value:W}=a;return y+="l"+W[0],y+="m"+P[0],y}),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:N(()=>{const{color:y}=e;if(!y)return null;const S=Io(y);return{"--n-border-color":y,"--n-border-color-hover":S,"--n-border-color-pressed":da(y),"--n-border-color-focus":S,"--n-border-color-disabled":y}}),cssVars:g?void 0:k,themeClass:x==null?void 0:x.themeClass,onRender:x==null?void 0:x.onRender}},render(){const{mergedClsPrefix:e,tag:t,onRender:n}=this;n==null||n();const o=Tt(this.$slots.default,r=>r&&T("span",{class:`${e}-button__content`},r));return T(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,T(op,{width:!0},{default:()=>Tt(this.$slots.icon,r=>(this.loading||this.renderIcon||r)&&T("span",{class:`${e}-button__icon`,style:{margin:Pl(this.$slots.default)?"0":""}},T(vs,null,{default:()=>this.loading?T(qc,{clsPrefix:e,key:"loading",class:`${e}-icon-slot`,strokeWidth:20}):T("div",{key:"icon",class:`${e}-icon-slot`,role:"none"},this.renderIcon?this.renderIcon():r)})))}),this.iconPlacement==="left"&&o,this.text?null:T(TT,{ref:"waveElRef",clsPrefix:e}),this.showBorder?T("div",{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?T("div",{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),Wa=jw,Gw={titleFontSize:"22px"},Dp=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({},Gw),{borderRadius:t,borderColor:fe(h,s),borderColorModal:fe(g,s),borderColorPopover:fe(f,s),textColor:r,titleFontWeight:l,titleTextColor:i,dayTextColor:a,fontSize:n,lineHeight:o,dateColorCurrent:c,dateTextColorCurrent:d,cellColorHover:fe(h,u),cellColorHoverModal:fe(g,u),cellColorHoverPopover:fe(f,u),cellColor:h,cellColorModal:g,cellColorPopover:f,barColor:c})},Vw={name:"Calendar",common:se,peers:{Button:qt},self:Dp},Uw=Vw,Kw={name:"Calendar",common:ae,peers:{Button:tn},self:Dp},qw=Kw,$p=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}},Xw={name:"ColorPicker",common:se,peers:{Input:ln,Button:qt},self:$p},Zw=Xw,Yw={name:"ColorPicker",common:ae,peers:{Input:vn,Button:tn},self:$p},Jw=Yw,Qw={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"},Op=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({},Qw),{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})},e8={name:"Card",common:se,self:Op},Qc=e8,t8={name:"Card",common:ae,self(e){const t=Op(e),{cardColor:n,modalColor:o,popoverColor:r}=e;return t.colorEmbedded=n,t.colorEmbeddedModal=o,t.colorEmbeddedPopover=r,t}},Hp=t8,n8=z([te("card",` + font-size: var(--n-font-size); + line-height: var(--n-line-height); + display: flex; + flex-direction: column; + width: 100%; + box-sizing: border-box; + position: relative; + border-radius: var(--n-border-radius); + background-color: var(--n-color); + color: var(--n-text-color); + word-break: break-word; + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + box-shadow .3s var(--n-bezier), + border-color .3s var(--n-bezier); + `,[jg({background:"var(--n-color-modal)"}),J("hoverable",[z("&:hover","box-shadow: var(--n-box-shadow);")]),J("content-segmented",[z(">",[G("content",{paddingTop:"var(--n-padding-bottom)"})])]),J("content-soft-segmented",[z(">",[G("content",` + margin: 0 var(--n-padding-left); + padding: var(--n-padding-bottom) 0; + `)])]),J("footer-segmented",[z(">",[G("footer",{paddingTop:"var(--n-padding-bottom)"})])]),J("footer-soft-segmented",[z(">",[G("footer",` + padding: var(--n-padding-bottom) 0; + margin: 0 var(--n-padding-left); + `)])]),z(">",[te("card-header",` + box-sizing: border-box; + display: flex; + align-items: center; + font-size: var(--n-title-font-size); + padding: + var(--n-padding-top) + var(--n-padding-left) + var(--n-padding-bottom) + var(--n-padding-left); + `,[G("main",` + font-weight: var(--n-title-font-weight); + transition: color .3s var(--n-bezier); + flex: 1; + min-width: 0; + color: var(--n-title-text-color); + `),G("extra",` + display: flex; + align-items: center; + font-size: var(--n-font-size); + font-weight: 400; + transition: color .3s var(--n-bezier); + color: var(--n-text-color); + `),G("close",` + margin: 0 0 0 8px; + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + `)]),G("action",` + box-sizing: border-box; + transition: + background-color .3s var(--n-bezier), + border-color .3s var(--n-bezier); + background-clip: padding-box; + background-color: var(--n-action-color); + `),G("content","flex: 1; min-width: 0;"),G("content, footer",` + box-sizing: border-box; + padding: 0 var(--n-padding-left) var(--n-padding-bottom) var(--n-padding-left); + font-size: var(--n-font-size); + `,[z("&:first-child",{paddingTop:"var(--n-padding-bottom)"})]),G("action",` + background-color: var(--n-action-color); + padding: var(--n-padding-bottom) var(--n-padding-left); + border-bottom-left-radius: var(--n-border-radius); + border-bottom-right-radius: var(--n-border-radius); + `)]),te("card-cover",` + overflow: hidden; + width: 100%; + border-radius: var(--n-border-radius) var(--n-border-radius) 0 0; + `,[z("img",` + display: block; + width: 100%; + `)]),J("bordered",` + border: 1px solid var(--n-border-color); + `,[z("&:target","border-color: var(--n-color-target);")]),J("action-segmented",[z(">",[G("action",[z("&:not(:first-child)",{borderTop:"1px solid var(--n-border-color)"})])])]),J("content-segmented, content-soft-segmented",[z(">",[G("content",{transition:"border-color 0.3s var(--n-bezier)"},[z("&:not(:first-child)",{borderTop:"1px solid var(--n-border-color)"})])])]),J("footer-segmented, footer-soft-segmented",[z(">",[G("footer",{transition:"border-color 0.3s var(--n-bezier)"},[z("&:not(:first-child)",{borderTop:"1px solid var(--n-border-color)"})])])]),J("embedded",` + background-color: var(--n-color-embedded); + `)]),Wg(te("card",` + background: var(--n-color-modal); + `,[J("embedded",` + background-color: var(--n-color-embedded-modal); + `)])),J2(te("card",` + background: var(--n-color-popover); + `,[J("embedded",` + background-color: var(--n-color-embedded-popover); + `)]))]),ed={title:String,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"}},o8=ls(ed),r8=Object.assign(Object.assign({},Re.props),ed),i8=ce({name:"Card",props:r8,setup(e){const t=()=>{const{onClose:c}=e;c&&We(c)},{inlineThemeDisabled:n,mergedClsPrefixRef:o,mergedRtlRef:r}=at(e),i=Re("Card","-card",n8,Qc,e,o),a=Co("Card",r,o),s=N(()=>{const{size:c}=e,{self:{color:d,colorModal:u,colorTarget:h,textColor:g,titleTextColor:f,titleFontWeight:b,borderColor:p,actionColor:m,borderRadius:k,lineHeight:x,closeIconColor:y,closeIconColorHover:S,closeIconColorPressed:P,closeColorHover:v,closeColorPressed:w,closeBorderRadius:R,closeIconSize:L,closeSize:j,boxShadow:M,colorPopover:U,colorEmbedded:ne,colorEmbeddedModal:H,colorEmbeddedPopover:q,[ge("padding",c)]:W,[ge("fontSize",c)]:re,[ge("titleFontSize",c)]:be},common:{cubicBezierEaseInOut:ve}}=i.value,{top:_e,left:Me,bottom:lt}=as(W);return{"--n-bezier":ve,"--n-border-radius":k,"--n-color":d,"--n-color-modal":u,"--n-color-popover":U,"--n-color-embedded":ne,"--n-color-embedded-modal":H,"--n-color-embedded-popover":q,"--n-color-target":h,"--n-text-color":g,"--n-line-height":x,"--n-action-color":m,"--n-title-text-color":f,"--n-title-font-weight":b,"--n-close-icon-color":y,"--n-close-icon-color-hover":S,"--n-close-icon-color-pressed":P,"--n-close-color-hover":v,"--n-close-color-pressed":w,"--n-border-color":p,"--n-box-shadow":M,"--n-padding-top":_e,"--n-padding-bottom":lt,"--n-padding-left":Me,"--n-font-size":re,"--n-title-font-size":be,"--n-close-size":j,"--n-close-icon-size":L,"--n-close-border-radius":R}}),l=n?At("card",N(()=>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(),T(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},Tt(l.cover,c=>c&&T("div",{class:`${o}-card-cover`,role:"none"},c)),Tt(l.header,c=>c||this.title||this.closable?T("div",{class:[`${o}-card-header`,this.headerClass],style:this.headerStyle},T("div",{class:`${o}-card-header__main`,role:"heading"},c||this.title),Tt(l["header-extra"],d=>d&&T("div",{class:[`${o}-card-header__extra`,this.headerExtraClass],style:this.headerExtraStyle},d)),this.closable?T(ys,{clsPrefix:o,class:`${o}-card-header__close`,onClick:this.handleCloseClick,absolute:!0}):null):null),Tt(l.default,c=>c&&T("div",{class:[`${o}-card__content`,this.contentClass],style:this.contentStyle,role:"none"},c)),Tt(l.footer,c=>c&&[T("div",{class:[`${o}-card__footer`,this.footerClass],style:this.footerStyle,role:"none"},c)]),Tt(l.action,c=>c&&T("div",{class:`${o}-card__action`,role:"none"},c)))}}),Bp=e=>({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"}),a8={name:"Carousel",common:se,self:Bp},s8=a8,l8={name:"Carousel",common:ae,self:Bp},c8=l8,d8={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"},Np=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({},d8),{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 ${K(l,{alpha:.3})}`,textColor:c,textColorDisabled:a})},u8={name:"Checkbox",common:se,self:Np},Or=u8,h8={name:"Checkbox",common:ae,self(e){const{cardColor:t}=e,n=Np(e);return n.color="#0000",n.checkMarkColor=t,n}},Hr=h8,zp=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"}},f8={name:"Cascader",common:se,peers:{InternalSelectMenu:Bi,InternalSelection:Yc,Scrollbar:Kt,Checkbox:Or,Empty:Kn},self:zp},g8=f8,m8={name:"Cascader",common:ae,peers:{InternalSelectMenu:Ni,InternalSelection:Jc,Scrollbar:en,Checkbox:Hr,Empty:Kn},self:zp},p8=m8,b8={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}}},Fp=b8,v8=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}},y8={name:"Code",common:se,self:v8},Wp=y8,jp=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"}},C8={name:"Collapse",common:se,self:jp},k8=C8,x8={name:"Collapse",common:ae,self:jp},S8=x8,Gp=e=>{const{cubicBezierEaseInOut:t}=e;return{bezier:t}},T8={name:"CollapseTransition",common:se,self:Gp},w8=T8,_8={name:"CollapseTransition",common:ae,self:Gp},P8=_8,A8={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:{type:String,default:Ai},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:()=>(Tr("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}},R8=ce({name:"ConfigProvider",alias:["App"],props:A8,setup(e){const t=Ae(jn,null),n=N(()=>{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=N(()=>{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:ei({},b,f)}}}),r=wt(()=>{const{namespace:f}=e;return f===void 0?t==null?void 0:t.mergedNamespaceRef.value:f}),i=wt(()=>{const{bordered:f}=e;return f===void 0?t==null?void 0:t.mergedBorderedRef.value:f}),a=N(()=>{const{icons:f}=e;return f===void 0?t==null?void 0:t.mergedIconsRef.value:f}),s=N(()=>{const{componentOptions:f}=e;return f!==void 0?f:t==null?void 0:t.mergedComponentPropsRef.value}),l=N(()=>{const{clsPrefix:f}=e;return f!==void 0?f:t?t.mergedClsPrefixRef.value:Ai}),c=N(()=>{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]=hi(m),(f=m.peers)===null||f===void 0||f.forEach(k=>{k.name in p||(p[k.name]=hi(k))});return p}),d=N(()=>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=N(()=>{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}-${xi(JSON.stringify(o.value))}`:m:p?xi(JSON.stringify(o.value)):""});return je(jn,{mergedThemeHashRef:g,mergedBreakpointsRef:d,mergedRtlRef:c,mergedIconsRef:a,mergedComponentPropsRef:s,mergedBorderedRef:i,mergedNamespaceRef:r,mergedClsPrefixRef:l,mergedLocaleRef:N(()=>{const{locale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedLocaleRef.value:f}),mergedDateLocaleRef:N(()=>{const{dateLocale:f}=e;if(f!==null)return f===void 0?t==null?void 0:t.mergedDateLocaleRef.value:f}),mergedHljsRef:N(()=>{const{hljs:f}=e;return f===void 0?t==null?void 0:t.mergedHljsRef.value:f}),mergedKatexRef:N(()=>{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):T(this.as||this.tag,{class:`${this.mergedClsPrefix||Ai}-config-provider`},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),E8={name:"Popselect",common:ae,peers:{Popover:or,InternalSelectMenu:Ni}},Vp=E8;function I8(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const M8={name:"Popselect",common:se,peers:{Popover:ko,InternalSelectMenu:Bi},self:I8},Up=M8;function Kp(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const L8={name:"Select",common:se,peers:{InternalSelection:Yc,InternalSelectMenu:Bi},self:Kp},qp=L8,D8={name:"Select",common:ae,peers:{InternalSelection:Jc,InternalSelectMenu:Ni},self:Kp},Xp=D8,$8={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"},Zp=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({},$8),{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})},O8={name:"Pagination",common:se,peers:{Select:qp,Input:ln,Popselect:Up},self:Zp},Yp=O8,H8={name:"Pagination",common:ae,peers:{Select:Xp,Input:vn,Popselect:Vp},self(e){const{primaryColor:t,opacity3:n}=e,o=K(t,{alpha:Number(n)}),r=Zp(e);return r.itemBorderActive=`1px solid ${o}`,r.itemBorderDisabled="1px solid #0000",r}},Jp=H8,Qp={padding:"8px 14px"},B8={name:"Tooltip",common:ae,peers:{Popover:or},self(e){const{borderRadius:t,boxShadow2:n,popoverColor:o,textColor2:r}=e;return Object.assign(Object.assign({},Qp),{borderRadius:t,boxShadow:n,color:o,textColor:r})}},Ss=B8,N8=e=>{const{borderRadius:t,boxShadow2:n,baseColor:o}=e;return Object.assign(Object.assign({},Qp),{borderRadius:t,boxShadow:n,color:fe(o,"rgba(0, 0, 0, .85)"),textColor:o})},z8={name:"Tooltip",common:se,peers:{Popover:ko},self:N8},zi=z8,F8={name:"Ellipsis",common:ae,peers:{Tooltip:Ss}},eb=F8,W8={name:"Ellipsis",common:se,peers:{Tooltip:zi}},td=W8,tb={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"},j8={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({},tb),{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 ${K(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 ${K(n,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${n}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})}},nb=j8,G8=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({},tb),{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 ${K(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 ${K(n,{alpha:.3})}`,buttonBoxShadowHover:"inset 0 0 0 1px #0000",buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:l})},V8={name:"Radio",common:se,self:G8},ob=V8,U8={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"},rb=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({},U8),{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:K(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})},K8={name:"Dropdown",common:se,peers:{Popover:ko},self:rb},Ts=K8,q8={name:"Dropdown",common:ae,peers:{Popover:or},self(e){const{primaryColorSuppl:t,primaryColor:n,popoverColor:o}=e,r=rb(e);return r.colorInverted=o,r.optionColorActive=K(n,{alpha:.15}),r.optionColorActiveInverted=t,r.optionColorHoverInverted=t,r}},nd=q8,X8={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"},ib=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:x}=e;return Object.assign(Object.assign({},X8),{actionDividerColor:p,lineHeight:h,borderRadius:u,fontSizeSmall:g,fontSizeMedium:f,fontSizeLarge:b,borderColor:fe(t,p),tdColorHover:fe(t,s),tdColorStriped:fe(t,x),thColor:fe(t,a),thColorHover:fe(fe(t,a),s),tdColor:t,tdTextColor:r,thTextColor:i,thFontWeight:d,thButtonColorHover:s,thIconColor:l,thIconColorActive:c,borderColorModal:fe(n,p),tdColorHoverModal:fe(n,s),tdColorStripedModal:fe(n,x),thColorModal:fe(n,a),thColorHoverModal:fe(fe(n,a),s),tdColorModal:n,borderColorPopover:fe(o,p),tdColorHoverPopover:fe(o,s),tdColorStripedPopover:fe(o,x),thColorPopover:fe(o,a),thColorHoverPopover:fe(fe(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})},Z8={name:"DataTable",common:se,peers:{Button:qt,Checkbox:Or,Radio:ob,Pagination:Yp,Scrollbar:Kt,Empty:Kn,Popover:ko,Ellipsis:td,Dropdown:Ts},self:ib},Y8=Z8,J8={name:"DataTable",common:ae,peers:{Button:tn,Checkbox:Hr,Radio:nb,Pagination:Jp,Scrollbar:en,Empty:nr,Popover:or,Ellipsis:eb,Dropdown:nd},self(e){const t=ib(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}},Q8=J8,e9=Object.assign(Object.assign({},ks),Re.props),t9=ce({name:"Tooltip",props:e9,__popover__:!0,setup(e){const{mergedClsPrefixRef:t}=at(e),n=Re("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:N(()=>n.value.self)})},render(){const{mergedTheme:e,internalExtraClass:t}=this;return T(xs,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)}}),n9=te("ellipsis",{overflow:"hidden"},[Dt("line-clamp",` + white-space: nowrap; + display: inline-block; + vertical-align: bottom; + max-width: 100%; + `),J("line-clamp",` + display: -webkit-inline-box; + -webkit-box-orient: vertical; + `),J("cursor-pointer",` + cursor: pointer; + `)]);function Ph(e){return`${e}-ellipsis--line-clamp`}function Ah(e,t){return`${e}-ellipsis--cursor-${t}`}const o9=Object.assign(Object.assign({},Re.props),{expandTrigger:String,lineClamp:[Number,String],tooltip:{type:[Boolean,Object],default:!0}}),r9=ce({name:"Ellipsis",inheritAttrs:!1,props:o9,setup(e,{slots:t,attrs:n}){const o=D6(),r=Re("Ellipsis","-ellipsis",n9,td,e,o),i=V(null),a=V(null),s=V(null),l=V(!1),c=N(()=>{const{lineClamp:p}=e,{value:m}=l;return p!==void 0?{textOverflow:"","-webkit-line-clamp":m?"":p}:{textOverflow:m?"":"ellipsis","-webkit-line-clamp":""}});function d(){let p=!1;const{value:m}=l;if(m)return!0;const{value:k}=i;if(k){const{lineClamp:x}=e;if(g(k),x!==void 0)p=k.scrollHeight<=k.offsetHeight;else{const{value:y}=a;y&&(p=y.getBoundingClientRect().width<=k.getBoundingClientRect().width)}f(k,p)}return p}const u=N(()=>e.expandTrigger==="click"?()=>{var p;const{value:m}=l;m&&((p=s.value)===null||p===void 0||p.setShow(!1)),l.value=!m}:void 0);xc(()=>{var p;e.tooltip&&((p=s.value)===null||p===void 0||p.setShow(!1))});const h=()=>T("span",Object.assign({},Mn(n,{class:[`${o.value}-ellipsis`,e.lineClamp!==void 0?Ph(o.value):void 0,e.expandTrigger==="click"?Ah(o.value,"pointer"):void 0],style:c.value}),{ref:"triggerRef",onClick:u.value,onMouseenter:e.expandTrigger==="click"?d:void 0}),e.lineClamp?t:T("span",{ref:"triggerInnerRef"},t));function g(p){if(!p)return;const m=c.value,k=Ph(o.value);e.lineClamp!==void 0?b(p,k,"add"):b(p,k,"remove");for(const x in m)p.style[x]!==m[x]&&(p.style[x]=m[x])}function f(p,m){const k=Ah(o.value,"pointer");e.expandTrigger==="click"&&!m?b(p,k,"add"):b(p,k,"remove")}function b(p,m,k){k==="add"?p.classList.contains(m)||p.classList.add(m):p.classList.contains(m)&&p.classList.remove(m)}return{mergedTheme:r,triggerRef:i,triggerInnerRef:a,tooltipRef:s,handleClick:u,renderTrigger:h,getTooltipDisabled:d}},render(){var e;const{tooltip:t,renderTrigger:n,$slots:o}=this;if(t){const{mergedTheme:r}=this;return T(t9,Object.assign({ref:"tooltipRef",placement:"top"},t,{getDisabled:this.getTooltipDisabled,theme:r.peers.Tooltip,themeOverrides:r.peerOverrides.Tooltip}),{trigger:n,default:(e=o.tooltip)!==null&&e!==void 0?e:o.default})}else return n()}}),ab=ce({name:"DropdownDivider",props:{clsPrefix:{type:String,required:!0}},render(){return T("div",{class:`${this.clsPrefix}-dropdown-divider`})}}),sb=e=>{const{textColorBase:t,opacity1:n,opacity2:o,opacity3:r,opacity4:i,opacity5:a}=e;return{color:t,opacity1Depth:n,opacity2Depth:o,opacity3Depth:r,opacity4Depth:i,opacity5Depth:a}},i9={name:"Icon",common:se,self:sb},lb=i9,a9={name:"Icon",common:ae,self:sb},s9=a9,l9=te("icon",` + height: 1em; + width: 1em; + line-height: 1em; + text-align: center; + display: inline-block; + position: relative; + fill: currentColor; + transform: translateZ(0); +`,[J("color-transition",{transition:"color .3s var(--n-bezier)"}),J("depth",{color:"var(--n-color)"},[z("svg",{opacity:"var(--n-opacity)",transition:"opacity .3s var(--n-bezier)"})]),z("svg",{height:"1em",width:"1em"})]),c9=Object.assign(Object.assign({},Re.props),{depth:[String,Number],size:[Number,String],color:String,component:Object}),od=ce({_n_icon__:!0,name:"Icon",inheritAttrs:!1,props:c9,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Re("Icon","-icon",l9,lb,e,t),r=N(()=>{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?At("icon",N(()=>`${e.depth||"d"}`),r,e):void 0;return{mergedClsPrefix:t,mergedStyle:N(()=>{const{size:a,color:s}=e;return{fontSize:ya(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__&&Tr("icon","don't wrap `n-icon` inside `n-icon`"),i==null||i(),T("i",Mn(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?T(r):this.$slots)}}),rd="n-dropdown-menu",ws="n-dropdown",Rh="n-dropdown-option";function jl(e,t){return e.type==="submenu"||e.type===void 0&&e[t]!==void 0}function d9(e){return e.type==="group"}function cb(e){return e.type==="divider"}function u9(e){return e.type==="render"}const db=ce({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=Ae(ws),{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=Ae(Rh,null),m=Ae(rd),k=Ae($i),x=N(()=>e.tmNode.rawNode),y=N(()=>{const{value:W}=h;return jl(e.tmNode.rawNode,W)}),S=N(()=>{const{disabled:W}=e.tmNode;return W}),P=N(()=>{if(!y.value)return!1;const{key:W,disabled:re}=e.tmNode;if(re)return!1;const{value:be}=n,{value:ve}=o,{value:_e}=r,{value:Me}=i;return be!==null?Me.includes(W):ve!==null?Me.includes(W)&&Me[Me.length-1]!==W:_e!==null?Me.includes(W):!1}),v=N(()=>o.value===null&&!s.value),w=oC(P,300,v),R=N(()=>!!(p!=null&&p.enteringSubmenuRef.value)),L=V(!1);je(Rh,{enteringSubmenuRef:L});function j(){L.value=!0}function M(){L.value=!1}function U(){const{parentKey:W,tmNode:re}=e;re.disabled||l.value&&(r.value=W,o.value=null,n.value=re.key)}function ne(){const{tmNode:W}=e;W.disabled||l.value&&n.value!==W.key&&U()}function H(W){if(e.tmNode.disabled||!l.value)return;const{relatedTarget:re}=W;re&&!au({target:re},"dropdownOption")&&!au({target:re},"scrollbarRail")&&(n.value=null)}function q(){const{value:W}=y,{tmNode:re}=e;l.value&&!W&&!re.disabled&&(t.doSelect(re.key,re.rawNode),t.doUpdateShow(!1))}return{labelField:u,renderLabel:c,renderIcon:d,siblingHasIcon:m.showIconRef,siblingHasSubmenu:m.hasSubmenuRef,menuProps:b,popoverBody:k,animated:s,mergedShowSubmenu:N(()=>w.value&&!R.value),rawNode:x,hasSubmenu:y,pending:wt(()=>{const{value:W}=i,{key:re}=e.tmNode;return W.includes(re)}),childActive:wt(()=>{const{value:W}=a,{key:re}=e.tmNode,be=W.findIndex(ve=>re===ve);return be===-1?!1:be{const{value:W}=a,{key:re}=e.tmNode,be=W.findIndex(ve=>re===ve);return be===-1?!1:be===W.length-1}),mergedDisabled:S,renderOption:g,nodeProps:f,handleClick:q,handleMouseMove:ne,handleMouseEnter:U,handleMouseLeave:H,handleSubmenuBeforeEnter:j,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=T(ub,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=T("div",Object.assign({class:[`${i}-dropdown-option`,p==null?void 0:p.class],"data-dropdown-option":!0},p),T("div",Mn(b,h),[T("div",{class:[`${i}-dropdown-option-body__prefix`,a&&`${i}-dropdown-option-body__prefix--show-icon`]},[c?c(o):Mt(o.icon)]),T("div",{"data-dropdown-option":!0,class:`${i}-dropdown-option-body__label`},l?l(o):Mt((t=o[this.labelField])!==null&&t!==void 0?t:o.title)),T("div",{"data-dropdown-option":!0,class:[`${i}-dropdown-option-body__suffix`,s&&`${i}-dropdown-option-body__suffix--has-submenu`]},this.hasSubmenu?T(od,null,{default:()=>T(wS,null)}):null)]),this.hasSubmenu?T(Jg,null,{default:()=>[T(Qg,null,{default:()=>T("div",{class:`${i}-dropdown-offset-container`},T(nm,{show:this.mergedShowSubmenu,placement:this.placement,to:g&&this.popoverBody||void 0,teleportDisabled:!g},{default:()=>T("div",{class:`${i}-dropdown-menu-wrapper`},n?T(pn,{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}}),h9=ce({name:"DropdownGroupHeader",props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){const{showIconRef:e,hasSubmenuRef:t}=Ae(rd),{renderLabelRef:n,labelFieldRef:o,nodePropsRef:r,renderOptionRef:i}=Ae(ws);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=T("div",Object.assign({class:`${t}-dropdown-option`},r==null?void 0:r(s)),T("div",{class:`${t}-dropdown-option-body ${t}-dropdown-option-body--group`},T("div",{"data-dropdown-option":!0,class:[`${t}-dropdown-option-body__prefix`,o&&`${t}-dropdown-option-body__prefix--show-icon`]},Mt(s.icon)),T("div",{class:`${t}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(s):Mt((e=s.title)!==null&&e!==void 0?e:s[this.labelField])),T("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}}),f9=ce({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 T(Oe,null,T(h9,{clsPrefix:n,tmNode:e,key:e.key}),o==null?void 0:o.map(r=>{const{rawNode:i}=r;return i.show===!1?null:cb(i)?T(ab,{clsPrefix:n,key:r.key}):r.isGroup?(Tr("dropdown","`group` node is not allowed to be put in `group` node."),null):T(db,{clsPrefix:n,tmNode:r,parentKey:t,key:r.key})}))}}),g9=ce({name:"DropdownRenderOption",props:{tmNode:{type:Object,required:!0}},render(){const{rawNode:{render:e,props:t}}=this.tmNode;return T("div",t,[e==null?void 0:e()])}}),ub=ce({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}=Ae(ws);je(rd,{showIconRef:N(()=>{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:N(()=>{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})=>jl(l,r));const{rawNode:s}=i;return jl(s,r)})})});const o=V(null);return je(hs,null),je(fs,null),je($i,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:u9(i)?T(g9,{tmNode:r,key:r.key}):cb(i)?T(ab,{clsPrefix:t,key:r.key}):d9(i)?T(f9,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):T(db,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key,props:i.props,scrollable:n})});return T("div",{class:[`${t}-dropdown-menu`,n&&`${t}-dropdown-menu--scrollable`],ref:"bodyRef"},n?T(up,{contentClass:`${t}-dropdown-menu__content`},{default:()=>o}):o,this.showArrow?pp({clsPrefix:t,arrowStyle:this.arrowStyle,arrowClass:void 0,arrowWrapperClass:void 0,arrowWrapperStyle:void 0}):null)}}),m9=te("dropdown-menu",` + transform-origin: var(--v-transform-origin); + background-color: var(--n-color); + border-radius: var(--n-border-radius); + box-shadow: var(--n-box-shadow); + position: relative; + transition: + background-color .3s var(--n-bezier), + box-shadow .3s var(--n-bezier); +`,[fp(),te("dropdown-option",` + position: relative; + `,[z("a",` + text-decoration: none; + color: inherit; + outline: none; + `,[z("&::before",` + content: ""; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + `)]),te("dropdown-option-body",` + display: flex; + cursor: pointer; + position: relative; + height: var(--n-option-height); + line-height: var(--n-option-height); + font-size: var(--n-font-size); + color: var(--n-option-text-color); + transition: color .3s var(--n-bezier); + `,[z("&::before",` + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 4px; + right: 4px; + transition: background-color .3s var(--n-bezier); + border-radius: var(--n-border-radius); + `),Dt("disabled",[J("pending",` + color: var(--n-option-text-color-hover); + `,[G("prefix, suffix",` + color: var(--n-option-text-color-hover); + `),z("&::before","background-color: var(--n-option-color-hover);")]),J("active",` + color: var(--n-option-text-color-active); + `,[G("prefix, suffix",` + color: var(--n-option-text-color-active); + `),z("&::before","background-color: var(--n-option-color-active);")]),J("child-active",` + color: var(--n-option-text-color-child-active); + `,[G("prefix, suffix",` + color: var(--n-option-text-color-child-active); + `)])]),J("disabled",` + cursor: not-allowed; + opacity: var(--n-option-opacity-disabled); + `),J("group",` + font-size: calc(var(--n-font-size) - 1px); + color: var(--n-group-header-text-color); + `,[G("prefix",` + width: calc(var(--n-option-prefix-width) / 2); + `,[J("show-icon",` + width: calc(var(--n-option-icon-prefix-width) / 2); + `)])]),G("prefix",` + width: var(--n-option-prefix-width); + display: flex; + justify-content: center; + align-items: center; + color: var(--n-prefix-color); + transition: color .3s var(--n-bezier); + z-index: 1; + `,[J("show-icon",` + width: var(--n-option-icon-prefix-width); + `),te("icon",` + font-size: var(--n-option-icon-size); + `)]),G("label",` + white-space: nowrap; + flex: 1; + z-index: 1; + `),G("suffix",` + box-sizing: border-box; + flex-grow: 0; + flex-shrink: 0; + display: flex; + justify-content: flex-end; + align-items: center; + min-width: var(--n-option-suffix-width); + padding: 0 8px; + transition: color .3s var(--n-bezier); + color: var(--n-suffix-color); + z-index: 1; + `,[J("has-submenu",` + width: var(--n-option-icon-suffix-width); + `),te("icon",` + font-size: var(--n-option-icon-size); + `)]),te("dropdown-menu","pointer-events: all;")]),te("dropdown-offset-container",` + pointer-events: none; + position: absolute; + left: 0; + right: 0; + top: -4px; + bottom: -4px; + `)]),te("dropdown-divider",` + transition: background-color .3s var(--n-bezier); + background-color: var(--n-divider-color); + height: 1px; + margin: 4px 0; + `),te("dropdown-menu-wrapper",` + transform-origin: var(--v-transform-origin); + width: fit-content; + `),z(">",[te("scrollbar",` + height: inherit; + max-height: inherit; + `)]),Dt("scrollable",` + padding: var(--n-padding); + `),J("scrollable",[G("content",` + padding: var(--n-padding); + `)])]),p9={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]},b9=Object.keys(ks),v9=Object.assign(Object.assign(Object.assign({},ks),p9),Re.props),y9=ce({name:"Dropdown",inheritAttrs:!1,props:v9,setup(e){const t=V(!1),n=Rc(Ue(e,"show"),t),o=N(()=>{const{keyField:M,childrenField:U}=e;return iT(e.options,{getKey(ne){return ne[M]},getDisabled(ne){return ne.disabled===!0},getIgnored(ne){return ne.type==="divider"||ne.type==="render"},getChildren(ne){return ne[U]}})}),r=N(()=>o.value.treeNodes),i=V(null),a=V(null),s=V(null),l=N(()=>{var M,U,ne;return(ne=(U=(M=i.value)!==null&&M!==void 0?M:a.value)!==null&&U!==void 0?U:s.value)!==null&&ne!==void 0?ne:null}),c=N(()=>o.value.getPath(l.value).keyPath),d=N(()=>o.value.getPath(e.value).keyPath),u=wt(()=>e.keyboard&&n.value);xC({keydown:{ArrowUp:{prevent:!0,handler:S},ArrowRight:{prevent:!0,handler:y},ArrowDown:{prevent:!0,handler:P},ArrowLeft:{prevent:!0,handler:x},Enter:{prevent:!0,handler:v},Escape:k}},u);const{mergedClsPrefixRef:h,inlineThemeDisabled:g}=at(e),f=Re("Dropdown","-dropdown",m9,Ts,e,h);je(ws,{labelFieldRef:Ue(e,"labelField"),childrenFieldRef:Ue(e,"childrenField"),renderLabelRef:Ue(e,"renderLabel"),renderIconRef:Ue(e,"renderIcon"),hoverKeyRef:i,keyboardKeyRef:a,lastToggledSubmenuKeyRef:s,pendingKeyPathRef:c,activeKeyPathRef:d,animatedRef:Ue(e,"animated"),mergedShowRef:n,nodePropsRef:Ue(e,"nodeProps"),renderOptionRef:Ue(e,"renderOption"),menuPropsRef:Ue(e,"menuProps"),doSelect:b,doUpdateShow:p}),et(n,M=>{!e.animated&&!M&&m()});function b(M,U){const{onSelect:ne}=e;ne&&We(ne,M,U)}function p(M){const{"onUpdate:show":U,onUpdateShow:ne}=e;U&&We(U,M),ne&&We(ne,M),t.value=M}function m(){i.value=null,a.value=null,s.value=null}function k(){p(!1)}function x(){R("left")}function y(){R("right")}function S(){R("up")}function P(){R("down")}function v(){const M=w();M!=null&&M.isLeaf&&n.value&&(b(M.key,M.rawNode),p(!1))}function w(){var M;const{value:U}=o,{value:ne}=l;return!U||ne===null?null:(M=U.getNode(ne))!==null&&M!==void 0?M:null}function R(M){const{value:U}=l,{value:{getFirstAvailableNode:ne}}=o;let H=null;if(U===null){const q=ne();q!==null&&(H=q.key)}else{const q=w();if(q){let W;switch(M){case"down":W=q.getNext();break;case"up":W=q.getPrev();break;case"right":W=q.getChild();break;case"left":W=q.getParent();break}W&&(H=W.key)}}H!==null&&(i.value=null,a.value=H)}const L=N(()=>{const{size:M,inverted:U}=e,{common:{cubicBezierEaseInOut:ne},self:H}=f.value,{padding:q,dividerColor:W,borderRadius:re,optionOpacityDisabled:be,[ge("optionIconSuffixWidth",M)]:ve,[ge("optionSuffixWidth",M)]:_e,[ge("optionIconPrefixWidth",M)]:Me,[ge("optionPrefixWidth",M)]:lt,[ge("fontSize",M)]:Ze,[ge("optionHeight",M)]:Ye,[ge("optionIconSize",M)]:Ee}=H,De={"--n-bezier":ne,"--n-font-size":Ze,"--n-padding":q,"--n-border-radius":re,"--n-option-height":Ye,"--n-option-prefix-width":lt,"--n-option-icon-prefix-width":Me,"--n-option-suffix-width":_e,"--n-option-icon-suffix-width":ve,"--n-option-icon-size":Ee,"--n-divider-color":W,"--n-option-opacity-disabled":be};return U?(De["--n-color"]=H.colorInverted,De["--n-option-color-hover"]=H.optionColorHoverInverted,De["--n-option-color-active"]=H.optionColorActiveInverted,De["--n-option-text-color"]=H.optionTextColorInverted,De["--n-option-text-color-hover"]=H.optionTextColorHoverInverted,De["--n-option-text-color-active"]=H.optionTextColorActiveInverted,De["--n-option-text-color-child-active"]=H.optionTextColorChildActiveInverted,De["--n-prefix-color"]=H.prefixColorInverted,De["--n-suffix-color"]=H.suffixColorInverted,De["--n-group-header-text-color"]=H.groupHeaderTextColorInverted):(De["--n-color"]=H.color,De["--n-option-color-hover"]=H.optionColorHover,De["--n-option-color-active"]=H.optionColorActive,De["--n-option-text-color"]=H.optionTextColor,De["--n-option-text-color-hover"]=H.optionTextColorHover,De["--n-option-text-color-active"]=H.optionTextColorActive,De["--n-option-text-color-child-active"]=H.optionTextColorChildActive,De["--n-prefix-color"]=H.prefixColor,De["--n-suffix-color"]=H.suffixColor,De["--n-group-header-text-color"]=H.groupHeaderTextColor),De}),j=g?At("dropdown",N(()=>`${e.size[0]}${e.inverted?"i":""}`),L,e):void 0;return{mergedClsPrefix:h,mergedTheme:f,tmNodes:r,mergedShow:n,handleAfterLeave:()=>{e.animated&&m()},doUpdateShow:p,cssVars:g?void 0:L,themeClass:j==null?void 0:j.themeClass,onRender:j==null?void 0:j.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:A2(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 T(ub,Mn(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 T(xs,Object.assign({},Xo(this.$props,b9),n),{trigger:()=>{var o,r;return(r=(o=this.$slots).default)===null||r===void 0?void 0:r.call(o)}})}}),C9={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"},hb=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({},C9),{panelColor:t,panelBoxShadow:s,panelDividerColor:i,itemTextColor:n,itemTextColorActive:o,itemColorHover:r,itemOpacityDisabled:a,itemBorderRadius:l,borderRadius:l,iconColor:c,iconColorDisabled:d})},k9={name:"TimePicker",common:se,peers:{Scrollbar:Kt,Button:qt,Input:ln},self:hb},fb=k9,x9={name:"TimePicker",common:ae,peers:{Scrollbar:en,Button:tn,Input:vn},self:hb},gb=x9,S9={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"},mb=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({},S9),{itemFontSize:n,calendarDaysFontSize:n,calendarTitleFontSize:n,itemTextColor:o,itemTextColorDisabled:r,itemTextColorActive:i,itemTextColorCurrent:a,itemColorIncluded:K(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})},T9={name:"DatePicker",common:se,peers:{Input:ln,Button:qt,TimePicker:fb,Scrollbar:Kt},self:mb},w9=T9,_9={name:"DatePicker",common:ae,peers:{Input:vn,Button:tn,TimePicker:gb,Scrollbar:en},self(e){const{popoverColor:t,hoverColor:n,primaryColor:o}=e,r=mb(e);return r.itemColorDisabled=fe(t,n),r.itemColorIncluded=K(o,{alpha:.15}),r.itemColorHover=fe(t,n),r}},P9=_9,A9={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"},pb=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({},A9),{lineHeight:d,fontSizeSmall:u,fontSizeMedium:h,fontSizeLarge:g,titleTextColor:o,thColor:fe(r,t),thColorModal:fe(i,t),thColorPopover:fe(a,t),thTextColor:o,thFontWeight:c,tdTextColor:n,tdColor:r,tdColorModal:i,tdColorPopover:a,borderColor:fe(r,s),borderColorModal:fe(i,s),borderColorPopover:fe(a,s),borderRadius:l})},R9={name:"Descriptions",common:se,self:pb},E9=R9,I9={name:"Descriptions",common:ae,self:pb},M9=I9,L9={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"},bb=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({},L9),{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})},D9={name:"Dialog",common:se,peers:{Button:qt},self:bb},id=D9,$9={name:"Dialog",common:ae,peers:{Button:tn},self:bb},vb=$9,_s={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,onPositiveClick:Function,onNegativeClick:Function,onClose:Function},yb=ls(_s),O9=z([te("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); + position: relative; + background: var(--n-color); + color: var(--n-text-color); + box-sizing: border-box; + margin: auto; + border-radius: var(--n-border-radius); + padding: var(--n-padding); + transition: + border-color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + `,[G("icon",{color:"var(--n-icon-color)"}),J("bordered",{border:"var(--n-border)"}),J("icon-top",[G("close",{margin:"var(--n-close-margin)"}),G("icon",{margin:"var(--n-icon-margin)"}),G("content",{textAlign:"center"}),G("title",{justifyContent:"center"}),G("action",{justifyContent:"center"})]),J("icon-left",[G("icon",{margin:"var(--n-icon-margin)"}),J("closable",[G("title",` + padding-right: calc(var(--n-close-size) + 6px); + `)])]),G("close",` + position: absolute; + right: 0; + top: 0; + margin: var(--n-close-margin); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + z-index: 1; + `),G("content",` + font-size: var(--n-font-size); + margin: var(--n-content-margin); + position: relative; + word-break: break-word; + `,[J("last","margin-bottom: 0;")]),G("action",` + display: flex; + justify-content: flex-end; + `,[z("> *:not(:last-child)",` + margin-right: var(--n-action-space); + `)]),G("icon",` + font-size: var(--n-icon-size); + transition: color .3s var(--n-bezier); + `),G("title",` + transition: color .3s var(--n-bezier); + display: flex; + align-items: center; + font-size: var(--n-title-font-size); + font-weight: var(--n-title-font-weight); + color: var(--n-title-text-color); + `),te("dialog-icon-container",` + display: flex; + justify-content: center; + `)]),Wg(te("dialog",` + width: 446px; + max-width: calc(100vw - 32px); + `)),te("dialog",[jg(` + width: 446px; + max-width: calc(100vw - 32px); + `)])]),H9={default:()=>T(za,null),info:()=>T(za,null),success:()=>T(Uc,null),warning:()=>T(Kc,null),error:()=>T(Vc,null)},Cb=ce({name:"Dialog",alias:["NimbusConfirmCard","Confirm"],props:Object.assign(Object.assign({},Re.props),_s),setup(e){const{mergedComponentPropsRef:t,mergedClsPrefixRef:n,inlineThemeDisabled:o,mergedRtlRef:r}=at(e),i=Co("Dialog",r,n),a=N(()=>{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=Re("Dialog","-dialog",O9,id,e,n),u=N(()=>{const{type:g}=e,f=a.value,{common:{cubicBezierEaseInOut:b},self:{fontSize:p,lineHeight:m,border:k,titleTextColor:x,textColor:y,color:S,closeBorderRadius:P,closeColorHover:v,closeColorPressed:w,closeIconColor:R,closeIconColorHover:L,closeIconColorPressed:j,closeIconSize:M,borderRadius:U,titleFontWeight:ne,titleFontSize:H,padding:q,iconSize:W,actionSpace:re,contentMargin:be,closeSize:ve,[f==="top"?"iconMarginIconTop":"iconMargin"]:_e,[f==="top"?"closeMarginIconTop":"closeMargin"]:Me,[ge("iconColor",g)]:lt}}=d.value,Ze=as(_e);return{"--n-font-size":p,"--n-icon-color":lt,"--n-bezier":b,"--n-close-margin":Me,"--n-icon-margin-top":Ze.top,"--n-icon-margin-right":Ze.right,"--n-icon-margin-bottom":Ze.bottom,"--n-icon-margin-left":Ze.left,"--n-icon-size":W,"--n-close-size":ve,"--n-close-icon-size":M,"--n-close-border-radius":P,"--n-close-color-hover":v,"--n-close-color-pressed":w,"--n-close-icon-color":R,"--n-close-icon-color-hover":L,"--n-close-icon-color-pressed":j,"--n-color":S,"--n-text-color":y,"--n-border-radius":U,"--n-padding":q,"--n-line-height":m,"--n-border":k,"--n-content-margin":be,"--n-title-font-size":H,"--n-title-font-weight":ne,"--n-title-text-color":x,"--n-action-space":re}}),h=o?At("dialog",N(()=>`${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 x=i?T(fo,{clsPrefix:k,class:`${k}-dialog__icon`},{default:()=>Tt(this.$slots.icon,S=>S||(this.icon?Mt(this.icon):H9[this.type]()))}):null,y=Tt(this.$slots.action,S=>S||d||c||l?T("div",{class:`${k}-dialog__action`},S||(l?[Mt(l)]:[this.negativeText&&T(Wa,Object.assign({theme:b.peers.Button,themeOverrides:b.peerOverrides.Button,ghost:!0,size:"small",onClick:f},h),{default:()=>Mt(this.negativeText)}),this.positiveText&&T(Wa,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:()=>Mt(this.positiveText)})])):null);return T("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?Tt(this.$slots.close,S=>{const P=[`${k}-dialog__close`,this.rtlEnabled&&`${k}-dialog--rtl`];return S?T("div",{class:P},S):T(ys,{clsPrefix:k,class:P,onClick:this.handleCloseClick})}):null,i&&n==="top"?T("div",{class:`${k}-dialog-icon-container`},x):null,T("div",{class:`${k}-dialog__title`},i&&n==="left"?x:null,Vo(this.$slots.header,()=>[Mt(a)])),T("div",{class:[`${k}-dialog__content`,y?"":`${k}-dialog__content--last`]},Vo(this.$slots.default,()=>[Mt(s)])),y)}}),kb="n-dialog-provider",B9="n-dialog-api",N9="n-dialog-reactive-list",xb=e=>{const{modalColor:t,textColor2:n,boxShadow3:o}=e;return{color:t,textColor:n,boxShadow:o}},z9={name:"Modal",common:se,peers:{Scrollbar:Kt,Dialog:id,Card:Qc},self:xb},Sb=z9,F9={name:"Modal",common:ae,peers:{Scrollbar:en,Dialog:vb,Card:Hp},self:xb},W9=F9,ad=Object.assign(Object.assign({},ed),_s),j9=ls(ad),G9=ce({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},ad),{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);et(Ue(e,"show"),p=>{p&&(o.value=!0)}),gk(N(()=>e.blockScroll&&o.value));const a=Ae(qg);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:x,offsetTop:y}=p;if(m){const S=m.y,P=m.x;r.value=-(x-P),i.value=-(y-S-k)}p.style.transformOrigin=s()}function c(p){Ft(()=>{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 et(b,p=>{p&&Ft(()=>{const m=p.el;m&&t.value!==m&&(t.value=m)})}),je(hs,t),je(fs,null),je($i,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=_l(e),!s){Tr("modal","default slot is empty");return}s=mn(s),s.props=Mn({class:`${a}-modal`},t,s.props||{})}return this.displayDirective==="show"||this.displayed||this.show?co(T("div",{role:"none",class:`${a}-modal-body-wrapper`},T(Cs,{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),T(fm,{disabled:!this.trapFocus,active:this.show,onEsc:this.onEsc,autoFocus:this.autoFocus},{default:()=>{var c;return T(pn,{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=[[Sr,this.show]],{onClickoutside:u}=this;return u&&d.push([Il,this.onClickoutside,void 0,{capture:!0}]),co(this.preset==="confirm"||this.preset==="dialog"?T(Cb,Object.assign({},this.$attrs,{class:[`${a}-modal`,this.$attrs.class],ref:"bodyRef",theme:this.mergedTheme.peers.Dialog,themeOverrides:this.mergedTheme.peerOverrides.Dialog},Xo(this.$props,yb),{"aria-modal":"true"}),e):this.preset==="card"?T(i8,Object.assign({},this.$attrs,{ref:"bodyRef",class:[`${a}-modal`,this.$attrs.class],theme:this.mergedTheme.peers.Card,themeOverrides:this.mergedTheme.peerOverrides.Card},Xo(this.$props,o8),{"aria-modal":"true",role:"dialog"}),e):this.childNodeRef=s,d)}})}})]}})),[[Sr,this.displayDirective==="if"||this.displayed||this.show]]):null}}),V9=z([te("modal-container",` + position: fixed; + left: 0; + top: 0; + height: 0; + width: 0; + display: flex; + `),te("modal-mask",` + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: rgba(0, 0, 0, .4); + `,[Zc({enterDuration:".25s",leaveDuration:".25s",enterCubicBezier:"var(--n-bezier-ease-out)",leaveCubicBezier:"var(--n-bezier-ease-out)"})]),te("modal-body-wrapper",` + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + overflow: visible; + `,[te("modal-scroll-content",` + min-height: 100%; + display: flex; + position: relative; + `)]),te("modal",` + position: relative; + align-self: center; + color: var(--n-text-color); + margin: auto; + box-shadow: var(--n-box-shadow); + `,[fp({duration:".25s",enterScale:".5"})])]),U9=Object.assign(Object.assign(Object.assign(Object.assign({},Re.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}}),ad),{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}),K9=ce({name:"Modal",inheritAttrs:!1,props:U9,setup(e){const t=V(null),{mergedClsPrefixRef:n,namespaceRef:o,inlineThemeDisabled:r}=at(e),i=Re("Modal","-modal",V9,Sb,e,n),a=Ug(64),s=Vg(),l=Di(),c=e.internalDialog?Ae(kb,null):null,d=e.internalModal?Ae(TC,null):null,u=mk();function h(P){const{onUpdateShow:v,"onUpdate:show":w,onHide:R}=e;v&&We(v,P),w&&We(w,P),R&&!P&&R(P)}function g(){const{onClose:P}=e;P?Promise.resolve(P()).then(v=>{v!==!1&&h(!1)}):h(!1)}function f(){const{onPositiveClick:P}=e;P?Promise.resolve(P()).then(v=>{v!==!1&&h(!1)}):h(!1)}function b(){const{onNegativeClick:P}=e;P?Promise.resolve(P()).then(v=>{v!==!1&&h(!1)}):h(!1)}function p(){const{onBeforeLeave:P,onBeforeHide:v}=e;P&&We(P),v&&v()}function m(){const{onAfterLeave:P,onAfterHide:v}=e;P&&We(P),v&&v()}function k(P){var v;const{onMaskClick:w}=e;w&&w(P),e.maskClosable&&!((v=t.value)===null||v===void 0)&&v.contains(Ci(P))&&h(!1)}function x(P){var v;(v=e.onEsc)===null||v===void 0||v.call(e),e.show&&e.closeOnEsc&&nC(P)&&!u.value&&h(!1)}je(qg,{getMousePosition:()=>{const P=c||d;if(P){const{clickedRef:v,clickedPositionRef:w}=P;if(v.value&&w.value)return w.value}return a.value?s.value:null},mergedClsPrefixRef:n,mergedThemeRef:i,isMountedRef:l,appearRef:Ue(e,"internalAppear"),transformOriginRef:Ue(e,"transformOrigin")});const y=N(()=>{const{common:{cubicBezierEaseOut:P},self:{boxShadow:v,color:w,textColor:R}}=i.value;return{"--n-bezier-ease-out":P,"--n-box-shadow":v,"--n-color":w,"--n-text-color":R}}),S=r?At("theme-class",void 0,y,e):void 0;return{mergedClsPrefix:n,namespace:o,isMounted:l,containerRef:t,presetProps:N(()=>Xo(e,j9)),handleEsc:x,handleAfterLeave:m,handleClickoutside:k,handleBeforeLeave:p,doUpdateShow:h,handleNegativeClick:b,handlePositiveClick:f,handleCloseClick:g,cssVars:r?void 0:y,themeClass:S==null?void 0:S.themeClass,onRender:S==null?void 0:S.onRender}},render(){const{mergedClsPrefix:e}=this;return T(tm,{to:this.to,show:this.show},{default:()=>{var t;(t=this.onRender)===null||t===void 0||t.call(this);const{unstableShowMask:n}=this;return co(T("div",{role:"none",ref:"containerRef",class:[`${e}-modal-container`,this.themeClass,this.namespace],style:this.cssVars},T(G9,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 T(pn,{name:"fade-in-transition",key:"mask",appear:(o=this.internalAppear)!==null&&o!==void 0?o:this.isMounted},{default:()=>this.show?T("div",{"aria-hidden":!0,ref:"containerRef",class:`${e}-modal-mask`,onClick:this.handleClickoutside}):null})}:void 0}),this.$slots)),[[Ec,{zIndex:this.zIndex,enabled:this.show}]])}})}}),q9=Object.assign(Object.assign({},_s),{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}),X9=ce({name:"DialogEnvironment",props:Object.assign(Object.assign({},q9),{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 T(K9,{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:()=>T(Cb,Object.assign({},Xo(this.$props,yb),{style:this.internalStyle,onClose:o,onNegativeClick:n,onPositiveClick:e}))})}}),Z9={injectionKey:String,to:[String,Object]},Y9=ce({name:"DialogProvider",props:Z9,setup(){const e=V([]),t={};function n(s={}){const l=ss(),c=bo(Object.assign(Object.assign({},s),{key:l,destroy:()=>{t[`n-dialog-${l}`].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.hide()})}const a={create:n,destroyAll:i,info:o[0],success:o[1],warning:o[2],error:o[3]};return je(B9,a),je(kb,{clickedRef:Ug(64),clickedPositionRef:Vg()}),je(N9,e),Object.assign(Object.assign({},a),{dialogList:e,dialogInstRefs:t,handleAfterLeave:r})},render(){var e,t;return T(Oe,null,[this.dialogList.map(n=>T(X9,Ac(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)])}}),Tb=e=>{const{textColor1:t,dividerColor:n,fontWeightStrong:o}=e;return{textColor:t,color:n,fontWeight:o}},J9={name:"Divider",common:se,self:Tb},wb=J9,Q9={name:"Divider",common:ae,self:Tb},e7=Q9,t7=te("divider",` + position: relative; + display: flex; + width: 100%; + box-sizing: border-box; + font-size: 16px; + color: var(--n-text-color); + transition: + color .3s var(--n-bezier), + background-color .3s var(--n-bezier); +`,[Dt("vertical",` + margin-top: 24px; + margin-bottom: 24px; + `,[Dt("no-title",` + display: flex; + align-items: center; + `)]),G("title",` + display: flex; + align-items: center; + margin-left: 12px; + margin-right: 12px; + white-space: nowrap; + font-weight: var(--n-font-weight); + `),J("title-position-left",[G("line",[J("left",{width:"28px"})])]),J("title-position-right",[G("line",[J("right",{width:"28px"})])]),J("dashed",[G("line",` + background-color: #0000; + height: 0px; + width: 100%; + border-style: dashed; + border-width: 1px 0 0; + `)]),J("vertical",` + display: inline-block; + height: 1em; + margin: 0 8px; + vertical-align: middle; + width: 1px; + `),G("line",` + border: none; + transition: background-color .3s var(--n-bezier), border-color .3s var(--n-bezier); + height: 1px; + width: 100%; + margin: 0; + `),Dt("dashed",[G("line",{backgroundColor:"var(--n-color)"})]),J("dashed",[G("line",{borderColor:"var(--n-color)"})]),J("vertical",{backgroundColor:"var(--n-color)"})]),n7=Object.assign(Object.assign({},Re.props),{titlePlacement:{type:String,default:"center"},dashed:Boolean,vertical:Boolean}),o7=ce({name:"Divider",props:n7,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Re("Divider","-divider",t7,wb,e,t),r=N(()=>{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?At("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),T("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:T("div",{class:`${a}-divider__line ${a}-divider__line--left`}),!o&&t.default?T(Oe,null,T("div",{class:`${a}-divider__title`},this.$slots),T("div",{class:`${a}-divider__line ${a}-divider__line--right`})):null)}}),_b=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}},r7={name:"Drawer",common:se,peers:{Scrollbar:Kt},self:_b},i7=r7,a7={name:"Drawer",common:ae,peers:{Scrollbar:en},self:_b},s7=a7,Pb={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"},l7={name:"DynamicInput",common:ae,peers:{Input:vn,Button:tn},self(){return Pb}},c7=l7,d7=()=>Pb,u7={name:"DynamicInput",common:se,peers:{Input:ln,Button:qt},self:d7},h7=u7,Ab={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},f7={name:"Space",self(){return Ab}},Rb=f7,g7=()=>Ab,m7={name:"Space",self:g7},sd=m7;let cl;const p7=()=>{if(!Jo)return!0;if(cl===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),cl=t}return cl},b7=Object.assign(Object.assign({},Re.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}}),Eb=ce({name:"Space",props:b7,setup(e){const{mergedClsPrefixRef:t,mergedRtlRef:n}=at(e),o=Re("Space","-space",void 0,sd,e,t),r=Co("Space",n,t);return{useGap:p7(),rtlEnabled:r,mergedClsPrefix:t,margin:N(()=>{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}=y2(a);return{horizontal:su(l),vertical:su(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=ki(Lg(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`,x=f.length-1,y=r.startsWith("space-");return T("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((S,P)=>S.type===Wt?S:T("div",{role:"none",class:i,style:[a,{maxWidth:"100%"},u?"":e?{marginBottom:P!==x?m:""}:d?{marginLeft:y?r==="space-between"&&P===x?"":p:P!==x?b:"",marginRight:y?r==="space-between"&&P===0?"":p:"",paddingTop:k,paddingBottom:k}:{marginRight:y?r==="space-between"&&P===x?"":p:P!==x?b:"",marginLeft:y?r==="space-between"&&P===0?"":p:"",paddingTop:k,paddingBottom:k}]},S)))}}),v7={name:"DynamicTags",common:ae,peers:{Input:vn,Button:tn,Tag:vp,Space:Rb},self(){return{inputWidth:"64px"}}},y7=v7,C7={name:"DynamicTags",common:se,peers:{Input:ln,Button:qt,Tag:yp,Space:sd},self(){return{inputWidth:"64px"}}},k7=C7,x7={name:"Element",common:ae},S7=x7,T7={name:"Element",common:se},Ib=T7,w7=Object.assign(Object.assign({},Re.props),{tag:{type:String,default:"div"}}),xa=ce({name:"Element",alias:["El"],props:w7,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Re("Element","-element",void 0,Ib,e,t),r=N(()=>{const{common:a}=o.value;return Object.keys(a).reduce((s,l)=>(s[`--${E6(l)}`]=a[l],s),{})}),i=n?At("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(),T(t,{role:"none",class:[`${n}-element`,r],style:o},(e=a.default)===null||e===void 0?void 0:e.call(a))}}),Mb={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"},_7={name:"Flex",self(){return Mb}},P7=_7,A7=()=>Mb,R7={name:"Flex",self:A7},E7=R7,I7={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"},Lb=e=>{const{heightSmall:t,heightMedium:n,heightLarge:o,textColor1:r,errorColor:i,warningColor:a,lineHeight:s,textColor3:l}=e;return Object.assign(Object.assign({},I7),{blankHeightSmall:t,blankHeightMedium:n,blankHeightLarge:o,lineHeight:s,labelTextColor:r,asteriskColor:i,feedbackTextColorError:i,feedbackTextColorWarning:a,feedbackTextColor:l})},M7={name:"Form",common:se,self:Lb},L7=M7,D7={name:"Form",common:ae,self:Lb},$7=D7,Eh=1,Db="n-grid",$b=1,O7={span:{type:[Number,String],default:$b},offset:{type:[Number,String],default:0},suffix:Boolean,privateOffset:Number,privateSpan:Number,privateColStart:Number,privateShow:{type:Boolean,default:!0}},H7=ce({__GRID_ITEM__:!0,name:"GridItem",alias:["Gi"],props:O7,setup(){const{isSsrRef:e,xGapRef:t,itemStyleRef:n,overflowRef:o,layoutShiftDisabledRef:r}=Ae(Db),i=Qt();return{overflow:o,itemStyle:n,layoutShiftDisabled:r,mergedXGap:N(()=>fr(t.value||0)),deriveStyle:()=>{e.value;const{privateSpan:a=$b,privateShow:s=!0,privateColStart:l=void 0,privateOffset:c=0}=i.vnode.props,{value:d}=t,u=fr(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 T("div",{style:{gridColumn:`span ${n} / span ${n}`,marginLeft:o?`calc((100% - (${n} - 1) * ${r}) / ${n} * ${o} + ${r} * ${o})`:""}},this.$slots)}return T("div",{style:[this.itemStyle,this.deriveStyle()]},(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e,{overflow:this.overflow}))}}),B7={closeMargin:"16px 12px",closeSize:"20px",closeIconSize:"16px",width:"365px",padding:"16px",titleFontSize:"16px",metaFontSize:"12px",descriptionFontSize:"12px"},Ob=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({},B7),{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})},N7={name:"Notification",common:se,peers:{Scrollbar:Kt},self:Ob},Hb=N7,z7={name:"Notification",common:ae,peers:{Scrollbar:en},self:Ob},F7=z7,W7={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"},Bb=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({},W7),{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})},j7={name:"Message",common:se,self:Bb},Nb=j7,G7={name:"Message",common:ae,self:Bb},V7=G7,U7={name:"ButtonGroup",common:ae},K7=U7,q7={name:"ButtonGroup",common:se},X7=q7,Z7={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}}},Y7=Z7,J7=e=>{const{primaryColor:t,successColor:n,warningColor:o,errorColor:r,infoColor:i,fontWeightStrong:a}=e;return{fontWeight:a,rotate:"252deg",colorStartPrimary:K(t,{alpha:.6}),colorEndPrimary:t,colorStartInfo:K(i,{alpha:.6}),colorEndInfo:i,colorStartWarning:K(o,{alpha:.6}),colorEndWarning:o,colorStartError:K(r,{alpha:.6}),colorEndError:r,colorStartSuccess:K(n,{alpha:.6}),colorEndSuccess:n}},Q7={name:"GradientText",common:se,self:J7},e_=Q7,t_={name:"InputNumber",common:ae,peers:{Button:tn,Input:vn},self(e){const{textColorDisabled:t}=e;return{iconColorDisabled:t}}},n_=t_,o_=e=>{const{textColorDisabled:t}=e;return{iconColorDisabled:t}},r_={name:"InputNumber",common:se,peers:{Button:qt,Input:ln},self:o_},i_=r_,a_={name:"Layout",common:ae,peers:{Scrollbar:en},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:fe(n,a),siderToggleBarColorHover:fe(n,s),__invertScrollbar:"false"}}},s_=a_,l_=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:fe(o,s),siderToggleBarColorHover:fe(o,l),__invertScrollbar:"true"}},c_={name:"Layout",common:se,peers:{Scrollbar:Kt},self:l_},ld=c_,zb=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:fe(o,l),colorPopover:r,colorHoverPopover:fe(r,l),borderColor:i,borderColorModal:fe(o,i),borderColorPopover:fe(r,i),borderRadius:a,fontSize:s}},d_={name:"List",common:se,self:zb},u_=d_,h_={name:"List",common:ae,self:zb},f_=h_,g_={name:"LoadingBar",common:ae,self(e){const{primaryColor:t}=e;return{colorError:"red",colorLoading:t,height:"2px"}}},m_=g_,p_=e=>{const{primaryColor:t,errorColor:n}=e;return{colorError:n,colorLoading:t,height:"2px"}},b_={name:"LoadingBar",common:se,self:p_},Fb=b_,v_={name:"Log",common:ae,peers:{Scrollbar:en,Code:Fp},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}}},y_=v_,C_=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}},k_={name:"Log",common:se,peers:{Scrollbar:Kt,Code:Wp},self:C_},x_=k_,S_={name:"Mention",common:ae,peers:{InternalSelectMenu:Ni,Input:vn},self(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}},T_=S_,w_=e=>{const{boxShadow2:t}=e;return{menuBoxShadow:t}},__={name:"Mention",common:se,peers:{InternalSelectMenu:Bi,Input:ln},self:w_},P_=__;function A_(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}}const Wb=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:K(o,{alpha:.1}),itemColorActiveHover:K(o,{alpha:.1}),itemColorActiveCollapsed:K(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},A_("#BBB",o,"#FFF","#AAA"))},R_={name:"Menu",common:se,peers:{Tooltip:zi,Dropdown:Ts},self:Wb},E_=R_,I_={name:"Menu",common:ae,peers:{Tooltip:Ss,Dropdown:nd},self(e){const{primaryColor:t,primaryColorSuppl:n}=e,o=Wb(e);return o.itemColorActive=K(t,{alpha:.15}),o.itemColorActiveHover=K(t,{alpha:.15}),o.itemColorActiveCollapsed=K(t,{alpha:.15}),o.itemColorActiveInverted=n,o.itemColorActiveHoverInverted=n,o.itemColorActiveCollapsedInverted=n,o}},M_=I_,L_={titleFontSize:"18px",backSize:"22px"};function jb(e){const{textColor1:t,textColor2:n,textColor3:o,fontSize:r,fontWeightStrong:i,primaryColorHover:a,primaryColorPressed:s}=e;return Object.assign(Object.assign({},L_),{titleFontWeight:i,fontSize:r,titleTextColor:t,backColor:n,backColorHover:a,backColorPressed:s,subtitleTextColor:o})}const D_={name:"PageHeader",common:se,self:jb},$_={name:"PageHeader",common:ae,self:jb},O_={iconSize:"22px"},Gb=e=>{const{fontSize:t,warningColor:n}=e;return Object.assign(Object.assign({},O_),{fontSize:t,iconColor:n})},H_={name:"Popconfirm",common:se,peers:{Button:qt,Popover:ko},self:Gb},B_=H_,N_={name:"Popconfirm",common:ae,peers:{Button:tn,Popover:or},self:Gb},z_=N_,Vb=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%)"}},F_={name:"Progress",common:se,self:Vb},Ub=F_,W_={name:"Progress",common:ae,self(e){const t=Vb(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}},Kb=W_,j_={name:"Rate",common:ae,self(e){const{railColor:t}=e;return{itemColor:t,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}},G_=j_,V_=e=>{const{railColor:t}=e;return{itemColor:t,itemColorActive:"#FFCC33",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}},U_={name:"Rate",common:se,self:V_},K_=U_,q_={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},qb=e=>{const{textColor2:t,textColor1:n,errorColor:o,successColor:r,infoColor:i,warningColor:a,lineHeight:s,fontWeightStrong:l}=e;return Object.assign(Object.assign({},q_),{lineHeight:s,titleFontWeight:l,titleTextColor:n,textColor:t,iconColorError:o,iconColorSuccess:r,iconColorInfo:i,iconColorWarning:a})},X_={name:"Result",common:se,self:qb},Z_=X_,Y_={name:"Result",common:ae,self:qb},J_=Y_,Xb={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"},Q_={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({},Xb),{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:""})}},eP=Q_,tP=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({},Xb),{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:""})},nP={name:"Slider",common:se,self:tP},oP=nP,Zb=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}},rP={name:"Spin",common:se,self:Zb},iP=rP,aP={name:"Spin",common:ae,self:Zb},sP=aP,Yb=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}},lP={name:"Statistic",common:se,self:Yb},cP=lP,dP={name:"Statistic",common:ae,self:Yb},uP=dP,hP={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"},Jb=e=>{const{fontWeightStrong:t,baseColor:n,textColorDisabled:o,primaryColor:r,errorColor:i,textColor1:a,textColor2:s}=e;return Object.assign(Object.assign({},hP),{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})},fP={name:"Steps",common:se,self:Jb},gP=fP,mP={name:"Steps",common:ae,self:Jb},pP=mP,Qb={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"},bP={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({},Qb),{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 ${K(r,{alpha:.3})}`})}},vP=bP,yP=e=>{const{primaryColor:t,opacityDisabled:n,borderRadius:o,textColor3:r}=e;return Object.assign(Object.assign({},Qb),{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 ${K(t,{alpha:.2})}`})},CP={name:"Switch",common:se,self:yP},kP=CP,xP={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"},e0=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({},xP),{fontSizeSmall:h,fontSizeMedium:g,fontSizeLarge:f,lineHeight:u,borderRadius:c,borderColor:fe(n,t),borderColorModal:fe(o,t),borderColorPopover:fe(r,t),tdColor:n,tdColorModal:o,tdColorPopover:r,tdColorStriped:fe(n,a),tdColorStripedModal:fe(o,a),tdColorStripedPopover:fe(r,a),thColor:fe(n,i),thColorModal:fe(o,i),thColorPopover:fe(r,i),thTextColor:s,tdTextColor:l,thFontWeight:d})},SP={name:"Table",common:se,self:e0},TP=SP,wP={name:"Table",common:ae,self:e0},_P=wP,PP={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"},t0=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({},PP),{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})},AP={name:"Tabs",common:se,self:t0},RP=AP,EP={name:"Tabs",common:ae,self(e){const t=t0(e),{inputColor:n}=e;return t.colorSegment=n,t.tabColorSegment=n,t}},IP=EP,n0=e=>{const{textColor1:t,textColor2:n,fontWeightStrong:o,fontSize:r}=e;return{fontSize:r,titleTextColor:t,textColor:n,titleFontWeight:o}},MP={name:"Thing",common:se,self:n0},LP=MP,DP={name:"Thing",common:ae,self:n0},$P=DP,o0={titleMarginMedium:"0 0 6px 0",titleMarginLarge:"-2px 0 6px 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"},OP={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({},o0),{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})}},HP=OP,BP=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({},o0),{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})},NP={name:"Timeline",common:se,self:BP},zP=NP,r0={extraFontSizeSmall:"12px",extraFontSizeMedium:"12px",extraFontSizeLarge:"14px",titleFontSizeSmall:"14px",titleFontSizeMedium:"16px",titleFontSizeLarge:"16px",closeSize:"20px",closeIconSize:"16px",headerHeightSmall:"44px",headerHeightMedium:"44px",headerHeightLarge:"50px"},FP={name:"Transfer",common:ae,peers:{Checkbox:Hr,Scrollbar:en,Input:vn,Empty:nr,Button:tn},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:x,dividerColor:y}=e;return Object.assign(Object.assign({},r0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:y,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:x})}},WP=FP,jP=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:x,closeIconColorPressed:y}=e;return Object.assign(Object.assign({},r0),{itemHeightSmall:a,itemHeightMedium:a,itemHeightLarge:i,fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n,borderRadius:s,dividerColor:f,borderColor:f,listColor:l,headerColor:fe(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:x,closeIconColorPressed:y})},GP={name:"Transfer",common:se,peers:{Checkbox:Or,Scrollbar:Kt,Input:ln,Empty:Kn,Button:qt},self:jP},VP=GP,i0=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:K(i,{alpha:.1}),arrowColor:a,nodeTextColor:s,nodeTextColorDisabled:l,loadingColor:i,dropMarkColor:i,lineColor:n}},UP={name:"Tree",common:se,peers:{Checkbox:Or,Scrollbar:Kt,Empty:Kn},self:i0},a0=UP,KP={name:"Tree",common:ae,peers:{Checkbox:Hr,Scrollbar:en,Empty:nr},self(e){const{primaryColor:t}=e,n=i0(e);return n.nodeColorActive=K(t,{alpha:.15}),n}},s0=KP,qP={name:"TreeSelect",common:ae,peers:{Tree:s0,Empty:nr,InternalSelection:Jc}},XP=qP,ZP=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"}},YP={name:"TreeSelect",common:se,peers:{Tree:a0,Empty:Kn,InternalSelection:Yc},self:ZP},JP=YP,QP={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"},l0=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({},QP),{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"})},eA={name:"Typography",common:se,self:l0},cd=eA,tA={name:"Typography",common:ae,self:l0},nA=tA,c0=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:K(o,{alpha:.06}),itemTextColor:r,itemTextColorError:o,itemTextColorSuccess:i,itemIconColor:t,itemDisabledOpacity:a,itemBorderImageCardError:`1px solid ${o}`,itemBorderImageCard:`1px solid ${l}`}},oA={name:"Upload",common:se,peers:{Button:qt,Progress:Ub},self:c0},rA=oA,iA={name:"Upload",common:ae,peers:{Button:tn,Progress:Kb},self(e){const{errorColor:t}=e,n=c0(e);return n.itemColorHoverError=K(t,{alpha:.09}),n}},aA=iA,sA={name:"Watermark",common:ae,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},lA=sA,cA={name:"Watermark",common:se,self(e){const{fontFamily:t}=e;return{fontFamily:t}}},dA=cA,uA={name:"Row",common:se},hA=uA,fA={name:"Row",common:ae},gA=fA,mA=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)"}},pA={name:"FloatButtonGroup",common:se,self:mA},bA=pA,vA={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}}},yA=vA,CA=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}},kA={name:"FloatButton",common:se,self:CA},xA=kA,SA={xs:0,s:640,m:1024,l:1280,xl:1536,xxl:1920},d0=24,dl="__ssr__",TA={layoutShiftDisabled:Boolean,responsive:{type:[String,Boolean],default:"self"},cols:{type:[Number,String],default:d0},itemResponsive:Boolean,collapsed:Boolean,collapsedRows:{type:Number,default:1},itemStyle:[Object,String],xGap:{type:[Number,String],default:0},yGap:{type:[Number,String],default:0}},wA=ce({name:"Grid",inheritAttrs:!1,props:TA,setup(e){const{mergedClsPrefixRef:t,mergedBreakpointsRef:n}=at(e),o=/^\d+$/,r=V(void 0),i=kC((n==null?void 0:n.value)||SA),a=wt(()=>!!(e.itemResponsive||!o.test(e.cols.toString())||!o.test(e.xGap.toString())||!o.test(e.yGap.toString()))),s=N(()=>{if(a.value)return e.responsive==="self"?r.value:i.value}),l=wt(()=>{var m;return(m=Number(ir(e.cols.toString(),s.value)))!==null&&m!==void 0?m:d0}),c=wt(()=>ir(e.xGap.toString(),s.value)),d=wt(()=>ir(e.yGap.toString(),s.value)),u=m=>{r.value=m.contentRect.width},h=m=>{Mg(u,m)},g=V(!1),f=N(()=>{if(e.responsive==="self")return h}),b=V(!1),p=V();return Pt(()=>{const{value:m}=p;m&&m.hasAttribute(dl)&&(m.removeAttribute(dl),b.value=!0)}),je(Db,{layoutShiftDisabledRef:Ue(e,"layoutShiftDisabled"),isSsrRef:b,itemStyleRef:Ue(e,"itemStyle"),xGapRef:c,overflowRef:g}),{isSsr:!Jo,contentEl:p,mergedClsPrefix:t,style:N(()=>e.layoutShiftDisabled?{width:"100%",display:"grid",gridTemplateColumns:`repeat(${e.cols}, minmax(0, 1fr))`,columnGap:fr(e.xGap),rowGap:fr(e.yGap)}:{width:"100%",display:"grid",gridTemplateColumns:`repeat(${l.value}, minmax(0, 1fr))`,columnGap:fr(c.value),rowGap:fr(d.value)}),isResponsive:a,responsiveQuery:s,responsiveCols:l,handleResize:f,overflow:g}},render(){if(this.layoutShiftDisabled)return T("div",Mn({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=ki(Lg(this)),c=[],{collapsed:d,collapsedRows:u,responsiveCols:h,responsiveQuery:g}=this;l.forEach(k=>{var x,y,S,P,v;if(((x=k==null?void 0:k.type)===null||x===void 0?void 0:x.__GRID_ITEM__)!==!0)return;if(E2(k)){const L=mn(k);L.props?L.props.privateShow=!1:L.props={privateShow:!1},c.push({child:L,rawChildSpan:0});return}k.dirs=((y=k.dirs)===null||y===void 0?void 0:y.filter(({dir:L})=>L!==Sr))||null,((S=k.dirs)===null||S===void 0?void 0:S.length)===0&&(k.dirs=null);const w=mn(k),R=Number((v=ir((P=w.props)===null||P===void 0?void 0:P.span,g))!==null&&v!==void 0?v:Eh);R!==0&&c.push({child:w,rawChildSpan:R})});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=ir((o=b.props)===null||o===void 0?void 0:o.span,g))!==null&&r!==void 0?r:Eh),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:x}of c){if(m&&(this.overflow=!0),!m){const y=Number((s=ir((a=k.props)===null||a===void 0?void 0:a.offset,g))!==null&&s!==void 0?s:0),S=Math.min(x+y,h);if(k.props?(k.props.privateSpan=S,k.props.privateOffset=y):k.props={privateSpan:S,privateOffset:y},d){const P=p%h;S+P>h&&(p+=h-P),S+p+f>u*h?m=!0:p+=S}}m&&(k.props?k.props.privateShow!==!0&&(k.props.privateShow=!1):k.props={privateShow:!1})}return T("div",Mn({ref:"contentEl",class:`${this.mergedClsPrefix}-grid`,style:this.style,[dl]:this.isSsr||void 0},this.$attrs),c.map(({child:k})=>k))};return this.isResponsive&&this.responsive==="self"?T(Da,{onResize:this.handleResize},{default:e}):e()}}),u0=e=>{const{primaryColor:t,baseColor:n}=e;return{color:t,iconColor:n}},_A={name:"IconWrapper",common:se,self:u0},PA=_A,AA={name:"IconWrapper",common:ae,self:u0},RA=AA;function EA(){return{toolbarIconColor:"rgba(255, 255, 255, .9)",toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}const IA={name:"Image",common:se,peers:{Tooltip:zi},self:EA},MA={name:"Image",common:ae,peers:{Tooltip:Ss},self:e=>{const{textColor2:t}=e;return{toolbarIconColor:t,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}},h0={type:String,default:"static"},LA=te("layout",` + color: var(--n-text-color); + background-color: var(--n-color); + box-sizing: border-box; + position: relative; + z-index: auto; + flex: auto; + overflow: hidden; + transition: + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); +`,[te("layout-scroll-container",` + overflow-x: hidden; + box-sizing: border-box; + height: 100%; + `),J("absolute-positioned",` + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + `)]),DA={embedded:Boolean,position:h0,nativeScrollbar:{type:Boolean,default:!0},scrollbarProps:Object,onScroll:Function,contentClass:String,contentStyle:{type:[String,Object],default:""},hasSider:Boolean,siderPlacement:{type:String,default:"left"}},$A="n-layout";function f0(e){return ce({name:e?"LayoutContent":"Layout",props:Object.assign(Object.assign({},Re.props),DA),setup(t){const n=V(null),o=V(null),{mergedClsPrefixRef:r,inlineThemeDisabled:i}=at(t),a=Re("Layout","-layout",LA,ld,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($A,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)};gm(()=>{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=N(()=>{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?At("layout",N(()=>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 T("div",{class:i,style:this.cssVars},this.nativeScrollbar?T("div",{ref:"scrollableElRef",class:[`${n}-layout-scroll-container`,this.contentClass],style:[this.contentStyle,r],onScroll:this.handleNativeElScroll},this.$slots):T(Cs,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 OA=f0(!1),HA=f0(!0),BA=te("layout-footer",` + transition: + box-shadow .3s var(--n-bezier), + color .3s var(--n-bezier), + background-color .3s var(--n-bezier), + border-color .3s var(--n-bezier); + color: var(--n-text-color); + background-color: var(--n-color); + box-sizing: border-box; +`,[J("absolute-positioned",` + position: absolute; + left: 0; + right: 0; + bottom: 0; + `),J("bordered",` + border-top: solid 1px var(--n-border-color); + `)]),NA=Object.assign(Object.assign({},Re.props),{inverted:Boolean,position:h0,bordered:Boolean}),zA=ce({name:"LayoutFooter",props:NA,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Re("Layout","-layout-footer",BA,ld,e,t),r=N(()=>{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?At("layout-footer",N(()=>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),T("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)}}),g0={extraFontSize:"12px",width:"440px"},FA={name:"Transfer",common:ae,peers:{Checkbox:Hr,Scrollbar:en,Input:vn,Empty:nr,Button:tn},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({},g0),{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})}},WA=FA,jA=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({},g0),{itemHeightSmall:c,itemHeightMedium:l,itemHeightLarge:s,fontSizeSmall:a,fontSizeMedium:i,fontSizeLarge:r,borderRadius:d,borderColor:p,listColor:u,headerColor:fe(u,h),titleTextColor:g,titleTextColorDisabled:f,extraTextColor:b,filterDividerColor:p,itemTextColor:b,itemTextColorDisabled:f,itemColorPending:m,titleFontWeight:t,iconColor:o,iconColorDisabled:n})},GA={name:"Transfer",common:se,peers:{Checkbox:Or,Scrollbar:Kt,Input:ln,Empty:Kn,Button:qt},self:jA},VA=GA,m0="n-loading-bar",UA="n-loading-bar-api",KA=te("loading-bar-container",` + z-index: 5999; + position: fixed; + top: 0; + left: 0; + right: 0; + height: 2px; +`,[Zc({enterDuration:"0.3s",leaveDuration:"0.8s"}),te("loading-bar",` + width: 100%; + transition: + max-width 4s linear, + background .2s linear; + height: var(--n-height); + `,[J("starting",` + background: var(--n-color-loading); + `),J("finishing",` + background: var(--n-color-loading); + transition: + max-width .2s linear, + background .2s linear; + `),J("error",` + background: var(--n-color-error); + transition: + max-width .2s linear, + background .2s linear; + `)])]);var ua=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 ha(e,t){return`${t}-loading-bar ${t}-loading-bar--${e}`}const qA=ce({name:"LoadingBar",props:{containerClass:String,containerStyle:[String,Object]},setup(){const{inlineThemeDisabled:e}=at(),{props:t,mergedClsPrefixRef:n}=Ae(m0),o=V(null),r=V(!1),i=V(!1),a=V(!1),s=V(!1);let l=!1;const c=V(!1),d=N(()=>{const{loadingBarStyle:S}=t;return S?S[c.value?"error":"loading"]:""});function u(){return ua(this,void 0,void 0,function*(){r.value=!1,a.value=!1,l=!1,c.value=!1,s.value=!0,yield Ft(),s.value=!1})}function h(S=0,P=80,v="starting"){return ua(this,void 0,void 0,function*(){if(i.value=!0,yield u(),l)return;a.value=!0,yield Ft();const w=o.value;w&&(w.style.maxWidth=`${S}%`,w.style.transition="none",w.offsetWidth,w.className=ha(v,n.value),w.style.transition="",w.style.maxWidth=`${P}%`)})}function g(){return ua(this,void 0,void 0,function*(){if(l||c.value)return;i.value&&(yield Ft()),l=!0;const S=o.value;S&&(S.className=ha("finishing",n.value),S.style.maxWidth="100%",S.offsetWidth,a.value=!1)})}function f(){if(!(l||c.value))if(!a.value)h(100,100,"error").then(()=>{c.value=!0;const S=o.value;S&&(S.className=ha("error",n.value),S.offsetWidth,a.value=!1)});else{c.value=!0;const S=o.value;if(!S)return;S.className=ha("error",n.value),S.style.maxWidth="100%",S.offsetWidth,a.value=!1}}function b(){r.value=!0}function p(){r.value=!1}function m(){return ua(this,void 0,void 0,function*(){yield u()})}const k=Re("LoadingBar","-loading-bar",KA,Fb,t,n),x=N(()=>{const{self:{height:S,colorError:P,colorLoading:v}}=k.value;return{"--n-height":S,"--n-color-loading":v,"--n-color-error":P}}),y=e?At("loading-bar",void 0,x,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:x,themeClass:y==null?void 0:y.themeClass,onRender:y==null?void 0:y.onRender}},render(){if(!this.started)return null;const{mergedClsPrefix:e}=this;return T(pn,{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),co(T("div",{class:[`${e}-loading-bar-container`,this.themeClass,this.containerClass],style:this.containerStyle},T("div",{ref:"loadingBarRef",class:[`${e}-loading-bar`],style:[this.cssVars,this.mergedLoadingBarStyle]})),[[Sr,this.loading||!this.loading&&this.entering]])}})}}),XA=Object.assign(Object.assign({},Re.props),{to:{type:[String,Object,Boolean],default:void 0},containerClass:String,containerStyle:[String,Object],loadingBarStyle:{type:Object}}),ZA=ce({name:"LoadingBarProvider",props:XA,setup(e){const t=Di(),n=V(null),o={start(){var i;t.value?(i=n.value)===null||i===void 0||i.start():Ft(()=>{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():Ft(()=>{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():Ft(()=>{var a;(a=n.value)===null||a===void 0||a.finish()})}},{mergedClsPrefixRef:r}=at(e);return je(UA,o),je(m0,{props:e,mergedClsPrefixRef:r}),Object.assign(o,{loadingBarRef:n})},render(){var e,t;return T(Oe,null,T(os,{disabled:this.to===!1,to:this.to||"body"},T(qA,{ref:"loadingBarRef",containerStyle:this.containerStyle,containerClass:this.containerClass})),(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e))}}),p0={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},b0="n-message-api",v0="n-message-provider",YA=z([te("message-wrapper",` + margin: var(--n-margin); + z-index: 0; + transform-origin: top center; + display: flex; + `,[ZT({overflow:"visible",originalTransition:"transform .3s var(--n-bezier)",enterToProps:{transform:"scale(1)"},leaveToProps:{transform:"scale(0.85)"}})]),te("message",` + box-sizing: border-box; + display: flex; + align-items: center; + transition: + color .3s var(--n-bezier), + box-shadow .3s var(--n-bezier), + background-color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + transform .3s var(--n-bezier), + margin-bottom .3s var(--n-bezier); + padding: var(--n-padding); + border-radius: var(--n-border-radius); + flex-wrap: nowrap; + overflow: hidden; + max-width: var(--n-max-width); + color: var(--n-text-color); + background-color: var(--n-color); + box-shadow: var(--n-box-shadow); + `,[G("content",` + display: inline-block; + line-height: var(--n-line-height); + font-size: var(--n-font-size); + `),G("icon",` + position: relative; + margin: var(--n-icon-margin); + height: var(--n-icon-size); + width: var(--n-icon-size); + font-size: var(--n-icon-size); + flex-shrink: 0; + `,[["default","info","success","warning","error","loading"].map(e=>J(`${e}-type`,[z("> *",` + color: var(--n-icon-color-${e}); + transition: color .3s var(--n-bezier); + `)])),z("> *",` + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + `,[Ri()])]),G("close",` + margin: var(--n-close-margin); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + flex-shrink: 0; + `,[z("&:hover",` + color: var(--n-close-icon-color-hover); + `),z("&:active",` + color: var(--n-close-icon-color-pressed); + `)])]),te("message-container",` + z-index: 6000; + position: fixed; + height: 0; + overflow: visible; + display: flex; + flex-direction: column; + align-items: center; + `,[J("top",` + top: 12px; + left: 0; + right: 0; + `),J("top-left",` + top: 12px; + left: 12px; + right: 0; + align-items: flex-start; + `),J("top-right",` + top: 12px; + left: 0; + right: 12px; + align-items: flex-end; + `),J("bottom",` + bottom: 4px; + left: 0; + right: 0; + justify-content: flex-end; + `),J("bottom-left",` + bottom: 4px; + left: 12px; + right: 0; + justify-content: flex-end; + align-items: flex-start; + `),J("bottom-right",` + bottom: 4px; + left: 0; + right: 12px; + justify-content: flex-end; + align-items: flex-end; + `)])]),JA={info:()=>T(za,null),success:()=>T(Uc,null),warning:()=>T(Kc,null),error:()=>T(Vc,null),default:()=>null},QA=ce({name:"Message",props:Object.assign(Object.assign({},p0),{render:Function}),setup(e){const{inlineThemeDisabled:t,mergedRtlRef:n}=at(e),{props:o,mergedClsPrefixRef:r}=Ae(v0),i=Co("Message",n,r),a=Re("Message","-message",YA,Nb,o,r),s=N(()=>{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:x,borderRadius:y,iconColorInfo:S,iconColorSuccess:P,iconColorWarning:v,iconColorError:w,iconColorLoading:R,closeIconSize:L,closeBorderRadius:j,[ge("textColor",c)]:M,[ge("boxShadow",c)]:U,[ge("color",c)]:ne,[ge("closeColorHover",c)]:H,[ge("closeColorPressed",c)]:q,[ge("closeIconColor",c)]:W,[ge("closeIconColorPressed",c)]:re,[ge("closeIconColorHover",c)]:be}}=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":L,"--n-close-border-radius":j,"--n-close-size":p,"--n-close-margin":b,"--n-text-color":M,"--n-color":ne,"--n-box-shadow":U,"--n-icon-color-info":S,"--n-icon-color-success":P,"--n-icon-color-warning":v,"--n-icon-color-error":w,"--n-icon-color-loading":R,"--n-close-color-hover":H,"--n-close-color-pressed":q,"--n-close-icon-color":W,"--n-close-icon-color-pressed":re,"--n-close-icon-color-hover":be,"--n-line-height":x,"--n-border-radius":y}}),l=t?At("message",N(()=>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 T("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):T("div",{class:[`${r}-message ${r}-message--${t}-type`,this.rtlEnabled&&`${r}-message--rtl`]},(u=eR(l,t,r))&&d?T("div",{class:`${r}-message__icon ${r}-message__icon--${t}-type`},T(vs,null,{default:()=>u})):null,T("div",{class:`${r}-message__content`},Mt(o)),n?T(ys,{clsPrefix:r,class:`${r}-message__close`,onClick:c,absolute:!0}):null))}});function eR(e,t,n){if(typeof e=="function")return e();{const o=t==="loading"?T(qc,{clsPrefix:n,strokeWidth:24,scale:.85}):JA[t]();return o?T(fo,{clsPrefix:n,key:t},{default:()=>o}):null}}const tR=ce({name:"MessageEnvironment",props:Object.assign(Object.assign({},p0),{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);Pt(()=>{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 T(op,{appear:!0,onAfterLeave:this.handleAfterLeave,onLeave:this.onLeave},{default:()=>[this.show?T(QA,{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]})}}),nR=Object.assign(Object.assign({},Re.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]}),oR=ce({name:"MessageProvider",props:nR,setup(e){const{mergedClsPrefixRef:t}=at(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(v0,{props:e,mergedClsPrefixRef:t}),je(b0,r);function i(l,c){const d=ss(),u=bo(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 T(Oe,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.messageList.length?T(os,{to:(n=this.to)!==null&&n!==void 0?n:"body"},T("div",{class:[`${this.mergedClsPrefix}-message-container`,`${this.mergedClsPrefix}-message-container--${this.placement}`,this.containerClass],key:"message-container",style:this.containerStyle},this.messageList.map(o=>T(tR,Object.assign({ref:r=>{r&&(this.messageRefs[o.key]=r)},internalKey:o.key,onInternalAfterLeave:this.handleAfterLeave},Ac(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 rR(){const e=Ae(b0,null);return e===null&&Dg("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 Ps="n-notification-provider",iR=ce({name:"NotificationContainer",props:{scrollable:{type:Boolean,required:!0},placement:{type:String,required:!0}},setup(){const{mergedThemeRef:e,mergedClsPrefixRef:t,wipTransitionCountRef:n}=Ae(Ps),o=V(null);return lo(()=>{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 T("div",{ref:"selfRef",class:[`${n}-notification-container`,t&&`${n}-notification-container--scrollable`,`${n}-notification-container--${r}`]},t?T(Cs,{theme:o.peers.Scrollbar,themeOverrides:o.peerOverrides.Scrollbar,contentStyle:{overflow:"hidden"}},e):e)}}),aR={info:()=>T(za,null),success:()=>T(Uc,null),warning:()=>T(Kc,null),error:()=>T(Vc,null),default:()=>null},dd={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},sR=ls(dd),lR=ce({name:"Notification",props:dd,setup(e){const{mergedClsPrefixRef:t,mergedThemeRef:n,props:o}=Ae(Ps),{inlineThemeDisabled:r,mergedRtlRef:i}=at(),a=Co("Notification",i,t),s=N(()=>{const{type:c}=e,{self:{color:d,textColor:u,closeIconColor:h,closeIconColorHover:g,closeIconColorPressed:f,headerTextColor:b,descriptionTextColor:p,actionTextColor:m,borderRadius:k,headerFontWeight:x,boxShadow:y,lineHeight:S,fontSize:P,closeMargin:v,closeSize:w,width:R,padding:L,closeIconSize:j,closeBorderRadius:M,closeColorHover:U,closeColorPressed:ne,titleFontSize:H,metaFontSize:q,descriptionFontSize:W,[ge("iconColor",c)]:re},common:{cubicBezierEaseOut:be,cubicBezierEaseIn:ve,cubicBezierEaseInOut:_e}}=n.value,{left:Me,right:lt,top:Ze,bottom:Ye}=as(L);return{"--n-color":d,"--n-font-size":P,"--n-text-color":u,"--n-description-text-color":p,"--n-action-text-color":m,"--n-title-text-color":b,"--n-title-font-weight":x,"--n-bezier":_e,"--n-bezier-ease-out":be,"--n-bezier-ease-in":ve,"--n-border-radius":k,"--n-box-shadow":y,"--n-close-border-radius":M,"--n-close-color-hover":U,"--n-close-color-pressed":ne,"--n-close-icon-color":h,"--n-close-icon-color-hover":g,"--n-close-icon-color-pressed":f,"--n-line-height":S,"--n-icon-color":re,"--n-close-margin":v,"--n-close-size":w,"--n-close-icon-size":j,"--n-width":R,"--n-padding-left":Me,"--n-padding-right":lt,"--n-padding-top":Ze,"--n-padding-bottom":Ye,"--n-title-font-size":H,"--n-meta-font-size":q,"--n-description-font-size":W}}),l=r?At("notification",N(()=>e.type[0]),s,o):void 0;return{mergedClsPrefix:t,showAvatar:N(()=>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),T("div",{class:[`${t}-notification-wrapper`,this.themeClass],onMouseenter:this.onMouseenter,onMouseleave:this.onMouseleave,style:this.cssVars},T("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?T("div",{class:`${t}-notification__avatar`},this.avatar?Mt(this.avatar):this.type!=="default"?T(fo,{clsPrefix:t},{default:()=>aR[this.type]()}):null):null,this.closable?T(ys,{clsPrefix:t,class:`${t}-notification__close`,onClick:this.handleCloseClick}):null,T("div",{ref:"bodyRef",class:`${t}-notification-main`},this.title?T("div",{class:`${t}-notification-main__header`},Mt(this.title)):null,this.description?T("div",{class:`${t}-notification-main__description`},Mt(this.description)):null,this.content?T("pre",{class:`${t}-notification-main__content`},Mt(this.content)):null,this.meta||this.action?T("div",{class:`${t}-notification-main-footer`},this.meta?T("div",{class:`${t}-notification-main-footer__meta`},Mt(this.meta)):null,this.action?T("div",{class:`${t}-notification-main-footer__action`},Mt(this.action)):null):null)))}}),cR=Object.assign(Object.assign({},dd),{duration:Number,onClose:Function,onLeave:Function,onAfterEnter:Function,onAfterLeave:Function,onHide:Function,onAfterShow:Function,onAfterHide:Function}),dR=ce({name:"NotificationEnvironment",props:Object.assign(Object.assign({},cR),{internalKey:{type:String,required:!0},onInternalAfterLeave:{type:Function,required:!0}}),setup(e){const{wipTransitionCountRef:t}=Ae(Ps),n=V(!0);let o=null;function r(){n.value=!1,o&&window.clearTimeout(o)}function i(f){t.value++,Ft(()=>{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 Pt(()=>{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 T(pn,{name:"notification-transition",appear:!0,onBeforeEnter:this.handleBeforeEnter,onAfterEnter:this.handleAfterEnter,onBeforeLeave:this.handleBeforeLeave,onLeave:this.handleLeave,onAfterLeave:this.handleAfterLeave},{default:()=>this.show?T(lR,Object.assign({},Xo(this.$props,sR),{onClose:this.handleClose,onMouseenter:this.duration&&this.keepAliveOnHover?this.handleMouseenter:void 0,onMouseleave:this.duration&&this.keepAliveOnHover?this.handleMouseleave:void 0})):null})}}),uR=z([te("notification-container",` + z-index: 4000; + position: fixed; + overflow: visible; + display: flex; + flex-direction: column; + align-items: flex-end; + `,[z(">",[te("scrollbar",` + width: initial; + overflow: visible; + height: -moz-fit-content !important; + height: fit-content !important; + max-height: 100vh !important; + `,[z(">",[te("scrollbar-container",` + height: -moz-fit-content !important; + height: fit-content !important; + max-height: 100vh !important; + `,[te("scrollbar-content",` + padding-top: 12px; + padding-bottom: 33px; + `)])])])]),J("top, top-right, top-left",` + top: 12px; + `,[z("&.transitioning >",[te("scrollbar",[z(">",[te("scrollbar-container",` + min-height: 100vh !important; + `)])])])]),J("bottom, bottom-right, bottom-left",` + bottom: 12px; + `,[z(">",[te("scrollbar",[z(">",[te("scrollbar-container",[te("scrollbar-content",` + padding-bottom: 12px; + `)])])])]),te("notification-wrapper",` + display: flex; + align-items: flex-end; + margin-bottom: 0; + margin-top: 12px; + `)]),J("top, bottom",` + left: 50%; + transform: translateX(-50%); + `,[te("notification-wrapper",[z("&.notification-transition-enter-from, &.notification-transition-leave-to",` + transform: scale(0.85); + `),z("&.notification-transition-leave-from, &.notification-transition-enter-to",` + transform: scale(1); + `)])]),J("top",[te("notification-wrapper",` + transform-origin: top center; + `)]),J("bottom",[te("notification-wrapper",` + transform-origin: bottom center; + `)]),J("top-right, bottom-right",[te("notification",` + margin-left: 28px; + margin-right: 16px; + `)]),J("top-left, bottom-left",[te("notification",` + margin-left: 16px; + margin-right: 28px; + `)]),J("top-right",` + right: 0; + `,[fa("top-right")]),J("top-left",` + left: 0; + `,[fa("top-left")]),J("bottom-right",` + right: 0; + `,[fa("bottom-right")]),J("bottom-left",` + left: 0; + `,[fa("bottom-left")]),J("scrollable",[J("top-right",` + top: 0; + `),J("top-left",` + top: 0; + `),J("bottom-right",` + bottom: 0; + `),J("bottom-left",` + bottom: 0; + `)]),te("notification-wrapper",` + margin-bottom: 12px; + `,[z("&.notification-transition-enter-from, &.notification-transition-leave-to",` + opacity: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; + `),z("&.notification-transition-leave-from, &.notification-transition-enter-to",` + opacity: 1; + `),z("&.notification-transition-leave-active",` + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + transform .3s var(--n-bezier-ease-in), + max-height .3s var(--n-bezier), + margin-top .3s linear, + margin-bottom .3s linear, + box-shadow .3s var(--n-bezier); + `),z("&.notification-transition-enter-active",` + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + transform .3s var(--n-bezier-ease-out), + max-height .3s var(--n-bezier), + margin-top .3s linear, + margin-bottom .3s linear, + box-shadow .3s var(--n-bezier); + `)]),te("notification",` + background-color: var(--n-color); + color: var(--n-text-color); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier), + opacity .3s var(--n-bezier), + box-shadow .3s var(--n-bezier); + font-family: inherit; + font-size: var(--n-font-size); + font-weight: 400; + position: relative; + display: flex; + overflow: hidden; + flex-shrink: 0; + padding-left: var(--n-padding-left); + padding-right: var(--n-padding-right); + width: var(--n-width); + max-width: calc(100vw - 16px - 16px); + border-radius: var(--n-border-radius); + box-shadow: var(--n-box-shadow); + box-sizing: border-box; + opacity: 1; + `,[G("avatar",[te("icon",` + color: var(--n-icon-color); + `),te("base-icon",` + color: var(--n-icon-color); + `)]),J("show-avatar",[te("notification-main",` + margin-left: 40px; + width: calc(100% - 40px); + `)]),J("closable",[te("notification-main",[z("> *:first-child",` + padding-right: 20px; + `)]),G("close",` + position: absolute; + top: 0; + right: 0; + margin: var(--n-close-margin); + transition: + background-color .3s var(--n-bezier), + color .3s var(--n-bezier); + `)]),G("avatar",` + position: absolute; + top: var(--n-padding-top); + left: var(--n-padding-left); + width: 28px; + height: 28px; + font-size: 28px; + display: flex; + align-items: center; + justify-content: center; + `,[te("icon","transition: color .3s var(--n-bezier);")]),te("notification-main",` + padding-top: var(--n-padding-top); + padding-bottom: var(--n-padding-bottom); + box-sizing: border-box; + display: flex; + flex-direction: column; + margin-left: 8px; + width: calc(100% - 8px); + `,[te("notification-main-footer",` + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 12px; + `,[G("meta",` + font-size: var(--n-meta-font-size); + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-description-text-color); + `),G("action",` + cursor: pointer; + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-action-text-color); + `)]),G("header",` + font-weight: var(--n-title-font-weight); + font-size: var(--n-title-font-size); + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-title-text-color); + `),G("description",` + margin-top: 8px; + font-size: var(--n-description-font-size); + white-space: pre-wrap; + word-wrap: break-word; + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-description-text-color); + `),G("content",` + line-height: var(--n-line-height); + margin: 12px 0 0 0; + font-family: inherit; + white-space: pre-wrap; + word-wrap: break-word; + transition: color .3s var(--n-bezier-ease-out); + color: var(--n-text-color); + `,[z("&:first-child","margin: 0;")])])])])]);function fa(e){const n=e.split("-")[1]==="left"?"calc(-100%)":"calc(100%)";return te("notification-wrapper",[z("&.notification-transition-enter-from, &.notification-transition-leave-to",` + transform: translate(${n}, 0); + `),z("&.notification-transition-leave-from, &.notification-transition-enter-to",` + transform: translate(0, 0); + `)])}const hR="n-notification-api",fR=Object.assign(Object.assign({},Re.props),{containerClass:String,containerStyle:[String,Object],to:[String,Object],scrollable:{type:Boolean,default:!0},max:Number,placement:{type:String,default:"top-right"},keepAliveOnHover:Boolean}),gR=ce({name:"NotificationProvider",props:fR,setup(e){const{mergedClsPrefixRef:t}=at(e),n=V([]),o={},r=new Set;function i(g){const f=ss(),b=()=>{r.add(f),o[f]&&o[f].hide()},p=bo(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,x=0;for(const y of n.value){if(!r.has(y.key)){o[y.key]&&(y.destroy(),k=!0);break}x++}k||n.value.splice(x,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=Re("Notification","-notification",uR,Hb,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(hR,c),je(Ps,{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 T(Oe,null,(t=(e=this.$slots).default)===null||t===void 0?void 0:t.call(e),this.notificationList.length?T(os,{to:(n=this.to)!==null&&n!==void 0?n:"body"},T(iR,{class:this.containerClass,style:this.containerStyle,scrollable:this.scrollable&&o!=="top"&&o!=="bottom",placement:o},{default:()=>this.notificationList.map(r=>T(dR,Object.assign({ref:i=>{const a=r.key;i===null?delete this.notificationRefs[a]:this.notificationRefs[a]=i}},Ac(r,["destroy","hide","deactivate"]),{internalKey:r.key,onInternalAfterLeave:this.handleAfterLeave,keepAliveOnHover:r.keepAliveOnHover===void 0?this.keepAliveOnHover:r.keepAliveOnHover})))})):null)}}),mR={name:"QrCode",common:ae,self:e=>({borderRadius:e.borderRadius})},pR=mR,bR=e=>({borderRadius:e.borderRadius}),vR={name:"QrCode",common:se,self:bR},yR=vR,CR={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}}},kR=e=>{const{heightSmall:t,heightMedium:n,heightLarge:o,borderRadius:r}=e;return{color:"#eee",colorEnd:"#ddd",borderRadius:r,heightSmall:t,heightMedium:n,heightLarge:o}},xR={name:"Skeleton",common:se,self:kR},SR={name:"Split",common:ae},TR=SR,wR=e=>{const{primaryColorHover:t,borderColor:n}=e;return{resizableTriggerColorHover:t,resizableTriggerColor:n}},_R={name:"Split",common:se,self:wR},PR=_R,AR=te("h",` + font-size: var(--n-font-size); + font-weight: var(--n-font-weight); + margin: var(--n-margin); + transition: color .3s var(--n-bezier); + color: var(--n-text-color); +`,[z("&:first-child",{marginTop:0}),J("prefix-bar",{position:"relative",paddingLeft:"var(--n-prefix-width)"},[J("align-text",{paddingLeft:0},[z("&::before",{left:"calc(-1 * var(--n-prefix-width))"})]),z("&::before",` + content: ""; + width: var(--n-bar-width); + border-radius: calc(var(--n-bar-width) / 2); + transition: background-color .3s var(--n-bezier); + left: 0; + top: 0; + bottom: 0; + position: absolute; + `),z("&::before",{backgroundColor:"var(--n-bar-color)"})])]),RR=Object.assign(Object.assign({},Re.props),{type:{type:String,default:"default"},prefix:String,alignText:Boolean}),Br=e=>ce({name:`H${e}`,props:RR,setup(t){const{mergedClsPrefixRef:n,inlineThemeDisabled:o}=at(t),r=Re("Typography","-h",AR,cd,t,n),i=N(()=>{const{type:s}=t,{common:{cubicBezierEaseInOut:l},self:{headerFontWeight:c,headerTextColor:d,[ge("headerPrefixWidth",e)]:u,[ge("headerFontSize",e)]:h,[ge("headerMargin",e)]:g,[ge("headerBarWidth",e)]:f,[ge("headerBarColor",s)]:b}}=r.value;return{"--n-bezier":l,"--n-font-size":h,"--n-margin":g,"--n-bar-color":b,"--n-bar-width":f,"--n-font-weight":c,"--n-text-color":d,"--n-prefix-width":u}}),a=o?At(`h${e}`,N(()=>t.type[0]),i,t):void 0;return{mergedClsPrefix:n,cssVars:o?void 0:i,themeClass:a==null?void 0:a.themeClass,onRender:a==null?void 0:a.onRender}},render(){var t;const{prefix:n,alignText:o,mergedClsPrefix:r,cssVars:i,$slots:a}=this;return(t=this.onRender)===null||t===void 0||t.call(this),T(`h${e}`,{class:[`${r}-h`,`${r}-h${e}`,this.themeClass,{[`${r}-h--prefix-bar`]:n,[`${r}-h--align-text`]:o}],style:i},a)}}),ER=Br("1"),IR=Br("2");Br("3");Br("4");Br("5");Br("6");const MR=te("text",` + transition: color .3s var(--n-bezier); + color: var(--n-text-color); +`,[J("strong",` + font-weight: var(--n-font-weight-strong); + `),J("italic",{fontStyle:"italic"}),J("underline",{textDecoration:"underline"}),J("code",` + line-height: 1.4; + display: inline-block; + font-family: var(--n-font-famliy-mono); + transition: + color .3s var(--n-bezier), + border-color .3s var(--n-bezier), + background-color .3s var(--n-bezier); + box-sizing: border-box; + padding: .05em .35em 0 .35em; + border-radius: var(--n-code-border-radius); + font-size: .9em; + color: var(--n-code-text-color); + background-color: var(--n-code-color); + border: var(--n-code-border); + `)]),LR=Object.assign(Object.assign({},Re.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}}),Gl=ce({name:"Text",props:LR,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=at(e),o=Re("Typography","-text",MR,cd,e,t),r=N(()=>{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?At("text",N(()=>`${e.type[0]}${e.depth||""}`),r,e):void 0;return{mergedClsPrefix:t,compitableTag:Kg(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?T("code",{class:r,style:this.cssVars},this.delete?T("del",null,i):i):this.delete?T("del",{class:r,style:this.cssVars},i):T(this.compitableTag||"span",{class:r,style:this.cssVars},i)}}),y0=()=>({}),DR={name:"Equation",common:se,self:y0},$R=DR,OR={name:"Equation",common:ae,self:y0},HR=OR,BR={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)"}}},NR=BR,zR={name:"dark",common:ae,Alert:GT,Anchor:tw,AutoComplete:mw,Avatar:Rp,AvatarGroup:kw,BackTop:Sw,Badge:Aw,Breadcrumb:Ow,Button:tn,ButtonGroup:K7,Calendar:qw,Card:Hp,Carousel:c8,Cascader:p8,Checkbox:Hr,Code:Fp,Collapse:S8,CollapseTransition:P8,ColorPicker:Jw,DataTable:Q8,DatePicker:P9,Descriptions:M9,Dialog:vb,Divider:e7,Drawer:s7,Dropdown:nd,DynamicInput:c7,DynamicTags:y7,Element:S7,Empty:nr,Ellipsis:eb,Equation:HR,Flex:P7,Form:$7,GradientText:Y7,Icon:s9,IconWrapper:RA,Image:MA,Input:vn,InputNumber:n_,LegacyTransfer:WA,Layout:s_,List:f_,LoadingBar:m_,Log:y_,Menu:M_,Mention:T_,Message:V7,Modal:W9,Notification:F7,PageHeader:$_,Pagination:Jp,Popconfirm:z_,Popover:or,Popselect:Vp,Progress:Kb,QrCode:pR,Radio:nb,Rate:G_,Result:J_,Row:gA,Scrollbar:en,Select:Xp,Skeleton:CR,Slider:eP,Space:Rb,Spin:sP,Statistic:uP,Steps:pP,Switch:vP,Table:_P,Tabs:IP,Tag:vp,Thing:$P,TimePicker:gb,Timeline:HP,Tooltip:Ss,Transfer:WP,Tree:s0,TreeSelect:XP,Typography:nA,Upload:aA,Watermark:lA,Split:TR,FloatButton:yA,FloatButtonGroup:NR},FR={name:"light",common:se,Alert:KT,Anchor:QT,AutoComplete:fw,Avatar:Ap,AvatarGroup:yw,BackTop:_w,Badge:Iw,Breadcrumb:Dw,Button:qt,ButtonGroup:X7,Calendar:Uw,Card:Qc,Carousel:s8,Cascader:g8,Checkbox:Or,Code:Wp,Collapse:k8,CollapseTransition:w8,ColorPicker:Zw,DataTable:Y8,DatePicker:w9,Descriptions:E9,Dialog:id,Divider:wb,Drawer:i7,Dropdown:Ts,DynamicInput:h7,DynamicTags:k7,Element:Ib,Empty:Kn,Equation:$R,Ellipsis:td,Flex:E7,Form:L7,GradientText:e_,Icon:lb,IconWrapper:PA,Image:IA,Input:ln,InputNumber:i_,Layout:ld,LegacyTransfer:VA,List:u_,LoadingBar:Fb,Log:x_,Menu:E_,Mention:P_,Message:Nb,Modal:Sb,Notification:Hb,PageHeader:D_,Pagination:Yp,Popconfirm:B_,Popover:ko,Popselect:Up,Progress:Ub,QrCode:yR,Radio:ob,Rate:K_,Row:hA,Result:Z_,Scrollbar:Kt,Skeleton:xR,Select:qp,Slider:oP,Space:sd,Spin:iP,Statistic:cP,Steps:gP,Switch:kP,Table:TP,Tabs:RP,Tag:yp,Thing:LP,TimePicker:fb,Timeline:zP,Tooltip:zi,Transfer:VP,Tree:a0,TreeSelect:JP,Typography:cd,Upload:rA,Watermark:dA,Split:PR,FloatButton:xA,FloatButtonGroup:bA},WR=jt("i",{class:"zChan thinking not-italic text-xl mr-1"},null,-1),Vl=ce({__name:"Title",props:{item:{}},setup(e){const t=e,n=N(()=>t.item.title.trim()),o=new RegExp("^tetris","ig"),r=n.value.match(o);return(i,a)=>{const s=xs,l=xa;return i.item.title?Fe(r)?(Ve(),It(l,{key:1},{default:Se(()=>[pe(s,null,{trigger:Se(()=>[WR]),default:Se(()=>[St(" "+An(Fe(r)[0]),1)]),_:1}),St(" "+An(Fe(n).replace(Fe(o),"")),1)]),_:1})):(Ve(),gn(Oe,{key:2},[St(An(i.item.title),1)],64)):(Ve(),gn(Oe,{key:0},[St(" ?")],64))}}}),jR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},GR=jt("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),VR=[GR],UR=ce({name:"EarthFilled",render:function(t,n){return Ve(),gn("svg",jR,VR)}}),KR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},qR=jt("path",{opacity:".3",d:"M8 7h11v14H8z",fill:"currentColor"},null,-1),XR=jt("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),ZR=[qR,XR],YR=ce({name:"ContentCopyTwotone",render:function(t,n){return Ve(),gn("svg",KR,ZR)}}),JR={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},QR=jt("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),eE=jt("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),tE=[QR,eE],nE=ce({name:"LanguageTwotone",render:function(t,n){return Ve(),gn("svg",JR,tE)}}),oE={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},rE=jt("circle",{cx:"18",cy:"5",opacity:".3",r:"1",fill:"currentColor"},null,-1),iE=jt("circle",{cx:"6",cy:"12",opacity:".3",r:"1",fill:"currentColor"},null,-1),aE=jt("circle",{cx:"18",cy:"19.02",opacity:".3",r:"1",fill:"currentColor"},null,-1),sE=jt("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),lE=[rE,iE,aE,sE],cE=ce({name:"ShareTwotone",render:function(t,n){return Ve(),gn("svg",oE,lE)}});var dE=!1;function C0(e){return dc()?(Af(e),!0):!1}function As(e){return typeof e=="function"?e():Fe(e)}const ud=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const uE=Object.prototype.toString,hE=e=>uE.call(e)==="[object Object]",fE=()=>{};function gE(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 mE(e){return e||Qt()}function Ih(e,t=!0,n){mE()?Pt(e,n):t?e():Ft(e)}function pE(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)},As(t))}return o&&(r.value=!0,ud&&l()),C0(s),{isPending:sn(r),start:l,stop:s}}function bE(e){var t;const n=As(e);return(t=n==null?void 0:n.$el)!=null?t:n}const vE=ud?window:void 0,k0=ud?window.navigator:void 0;function x0(...e){let t,n,o,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,o,r]=e,t=vE):[t,n,o,r]=e,!t)return fE;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=et(()=>[bE(t),As(r)],([d,u])=>{if(a(),!d)return;const h=hE(u)?{...u}:u;i.push(...n.flatMap(g=>o.map(f=>s(d,g,f,h))))},{immediate:!0,flush:"post"}),c=()=>{l(),a()};return C0(c),c}function yE(){const e=V(!1),t=Qt();return t&&Pt(()=>{e.value=!0},t),e}function S0(e){const t=yE();return N(()=>(t.value,!!e()))}function Mh(e,t={}){const{controls:n=!1,navigator:o=k0}=t,r=S0(()=>o&&"permissions"in o);let i;const a=typeof e=="string"?{name:e}:e,s=V(),l=()=>{i&&(s.value=i.state)},c=gE(async()=>{if(r.value){if(!i)try{i=await o.permissions.query(a),x0(i,"change",l),l()}catch{s.value="prompt"}return i}});return c(),n?{state:s,isSupported:r,query:c}:s}function CE(e={}){const{navigator:t=k0,read:n=!1,source:o,copiedDuring:r=1500,legacy:i=!1}=e,a=S0(()=>t&&"clipboard"in t),s=Mh("clipboard-read"),l=Mh("clipboard-write"),c=N(()=>a.value||i),d=V(""),u=V(!1),h=pE(()=>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&&x0(["copy","cut"],g);async function f(k=As(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 x=document.createElement("textarea");x.value=k??"",x.style.position="absolute",x.style.opacity="0",document.body.appendChild(x),x.select(),document.execCommand("copy"),x.remove()}function p(){var k,x,y;return(y=(x=(k=document==null?void 0:document.getSelection)==null?void 0:k.call(document))==null?void 0:x.toString())!=null?y:""}function m(k){return k==="granted"||k==="prompt"}return{isSupported:c,text:d,copied:u,copy:f}}/*! + * shared v9.13.1 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */const ja=typeof window<"u",xo=(e,t=!1)=>t?Symbol.for(e):Symbol(e),kE=(e,t,n)=>xE({l:e,k:t,s:n}),xE=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),yt=e=>typeof e=="number"&&isFinite(e),SE=e=>w0(e)==="[object Date]",go=e=>w0(e)==="[object RegExp]",Rs=e=>Pe(e)&&Object.keys(e).length===0,$t=Object.assign;let Lh;const zn=()=>Lh||(Lh=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Dh(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const TE=Object.prototype.hasOwnProperty;function Ga(e,t){return TE.call(e,t)}const rt=Array.isArray,Qe=e=>typeof e=="function",de=e=>typeof e=="string",$e=e=>typeof e=="boolean",Ge=e=>e!==null&&typeof e=="object",wE=e=>Ge(e)&&Qe(e.then)&&Qe(e.catch),T0=Object.prototype.toString,w0=e=>T0.call(e),Pe=e=>{if(!Ge(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},_E=e=>e==null?"":rt(e)||Pe(e)&&e.toString===T0?JSON.stringify(e,null,2):String(e);function PE(e,t=""){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,"")}function Es(e){let t=e;return()=>++t}function AE(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const ga=e=>!Ge(e)||rt(e);function Sa(e,t){if(ga(e)||ga(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=>{ga(o[i])||ga(r[i])?r[i]=o[i]:n.push({src:o[i],des:r[i]})})}}/*! + * message-compiler v9.13.1 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */function RE(e,t,n){return{line:e,column:t,offset:n}}function Va(e,t,n){const o={start:e,end:t};return n!=null&&(o.source=n),o}const EE=/\{([0-9a-zA-Z]+)\}/g;function _0(e,...t){return t.length===1&&IE(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(EE,(n,o)=>t.hasOwnProperty(o)?t[o]:"")}const P0=Object.assign,$h=e=>typeof e=="string",IE=e=>e!==null&&typeof e=="object";function A0(e,t=""){return e.reduce((n,o,r)=>r===0?n+o:n+t+o,"")}const hd={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},ME={[hd.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function LE(e,t,...n){const o=_0(ME[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},DE={[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 Nr(e,t,n={}){const{domain:o,messages:r,args:i}=n,a=_0((r||DE)[e]||"",...i||[]),s=new SyntaxError(String(a));return s.code=e,t&&(s.location=t),s.domain=o,s}function $E(e){throw e}const Hn=" ",OE="\r",Ut=` +`,HE="\u2028",BE="\u2029";function NE(e){const t=e;let n=0,o=1,r=1,i=0;const a=v=>t[v]===OE&&t[v+1]===Ut,s=v=>t[v]===Ut,l=v=>t[v]===BE,c=v=>t[v]===HE,d=v=>a(v)||s(v)||l(v)||c(v),u=()=>n,h=()=>o,g=()=>r,f=()=>i,b=v=>a(v)||l(v)||c(v)?Ut:t[v],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 x(){return a(n+i)&&i++,i++,t[n+i]}function y(){n=0,o=1,r=1,i=0}function S(v=0){i=v}function P(){const v=n+i;for(;v!==n;)k();i=0}return{index:u,line:h,column:g,peekOffset:f,charAt:b,currentChar:p,currentPeek:m,next:k,peek:x,reset:y,resetPeek:S,skipToPeek:P}}const Jn=void 0,zE=".",Oh="'",FE="tokenizer";function WE(e,t={}){const n=t.location!==!1,o=NE(e),r=()=>o.index(),i=()=>RE(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,_,I,...F){const ie=c();if(_.column+=I,_.offset+=I,d){const Q=n?Va(ie.startLoc,_):null,$=Nr(C,Q,{domain:FE,args:F});d($)}}function h(C,_,I){C.endLoc=i(),C.currentType=_;const F={type:_};return n&&(F.loc=Va(C.startLoc,C.endLoc)),I!=null&&(F.value=I),F}const g=C=>h(C,14);function f(C,_){return C.currentChar()===_?(C.next(),_):(u(Te.EXPECTED_TOKEN,i(),0,_),"")}function b(C){let _="";for(;C.currentPeek()===Hn||C.currentPeek()===Ut;)_+=C.currentPeek(),C.peek();return _}function p(C){const _=b(C);return C.skipToPeek(),_}function m(C){if(C===Jn)return!1;const _=C.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_===95}function k(C){if(C===Jn)return!1;const _=C.charCodeAt(0);return _>=48&&_<=57}function x(C,_){const{currentType:I}=_;if(I!==2)return!1;b(C);const F=m(C.currentPeek());return C.resetPeek(),F}function y(C,_){const{currentType:I}=_;if(I!==2)return!1;b(C);const F=C.currentPeek()==="-"?C.peek():C.currentPeek(),ie=k(F);return C.resetPeek(),ie}function S(C,_){const{currentType:I}=_;if(I!==2)return!1;b(C);const F=C.currentPeek()===Oh;return C.resetPeek(),F}function P(C,_){const{currentType:I}=_;if(I!==8)return!1;b(C);const F=C.currentPeek()===".";return C.resetPeek(),F}function v(C,_){const{currentType:I}=_;if(I!==9)return!1;b(C);const F=m(C.currentPeek());return C.resetPeek(),F}function w(C,_){const{currentType:I}=_;if(!(I===8||I===12))return!1;b(C);const F=C.currentPeek()===":";return C.resetPeek(),F}function R(C,_){const{currentType:I}=_;if(I!==10)return!1;const F=()=>{const Q=C.currentPeek();return Q==="{"?m(C.peek()):Q==="@"||Q==="%"||Q==="|"||Q===":"||Q==="."||Q===Hn||!Q?!1:Q===Ut?(C.peek(),F()):M(C,!1)},ie=F();return C.resetPeek(),ie}function L(C){b(C);const _=C.currentPeek()==="|";return C.resetPeek(),_}function j(C){const _=b(C),I=C.currentPeek()==="%"&&C.peek()==="{";return C.resetPeek(),{isModulo:I,hasSpace:_.length>0}}function M(C,_=!0){const I=(ie=!1,Q="",$=!1)=>{const B=C.currentPeek();return B==="{"?Q==="%"?!1:ie:B==="@"||!B?Q==="%"?!0:ie:B==="%"?(C.peek(),I(ie,"%",!0)):B==="|"?Q==="%"||$?!0:!(Q===Hn||Q===Ut):B===Hn?(C.peek(),I(!0,Hn,$)):B===Ut?(C.peek(),I(!0,Ut,$)):!0},F=I();return _&&C.resetPeek(),F}function U(C,_){const I=C.currentChar();return I===Jn?Jn:_(I)?(C.next(),I):null}function ne(C){const _=C.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36}function H(C){return U(C,ne)}function q(C){const _=C.charCodeAt(0);return _>=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===95||_===36||_===45}function W(C){return U(C,q)}function re(C){const _=C.charCodeAt(0);return _>=48&&_<=57}function be(C){return U(C,re)}function ve(C){const _=C.charCodeAt(0);return _>=48&&_<=57||_>=65&&_<=70||_>=97&&_<=102}function _e(C){return U(C,ve)}function Me(C){let _="",I="";for(;_=be(C);)I+=_;return I}function lt(C){p(C);const _=C.currentChar();return _!=="%"&&u(Te.EXPECTED_TOKEN,i(),0,_),C.next(),"%"}function Ze(C){let _="";for(;;){const I=C.currentChar();if(I==="{"||I==="}"||I==="@"||I==="|"||!I)break;if(I==="%")if(M(C))_+=I,C.next();else break;else if(I===Hn||I===Ut)if(M(C))_+=I,C.next();else{if(L(C))break;_+=I,C.next()}else _+=I,C.next()}return _}function Ye(C){p(C);let _="",I="";for(;_=W(C);)I+=_;return C.currentChar()===Jn&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I}function Ee(C){p(C);let _="";return C.currentChar()==="-"?(C.next(),_+=`-${Me(C)}`):_+=Me(C),C.currentChar()===Jn&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),_}function De(C){return C!==Oh&&C!==Ut}function Ot(C){p(C),f(C,"'");let _="",I="";for(;_=U(C,De);)_==="\\"?I+=Le(C):I+=_;const F=C.currentChar();return F===Ut||F===Jn?(u(Te.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),F===Ut&&(C.next(),f(C,"'")),I):(f(C,"'"),I)}function Le(C){const _=C.currentChar();switch(_){case"\\":case"'":return C.next(),`\\${_}`;case"u":return ct(C,_,4);case"U":return ct(C,_,6);default:return u(Te.UNKNOWN_ESCAPE_SEQUENCE,i(),0,_),""}}function ct(C,_,I){f(C,_);let F="";for(let ie=0;ie{const F=C.currentChar();return F==="{"||F==="%"||F==="@"||F==="|"||F==="("||F===")"||!F||F===Hn?I:(I+=F,C.next(),_(I))};return _("")}function O(C){p(C);const _=f(C,"|");return p(C),_}function X(C,_){let I=null;switch(C.currentChar()){case"{":return _.braceNest>=1&&u(Te.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),C.next(),I=h(_,2,"{"),p(C),_.braceNest++,I;case"}":return _.braceNest>0&&_.currentType===2&&u(Te.EMPTY_PLACEHOLDER,i(),0),C.next(),I=h(_,3,"}"),_.braceNest--,_.braceNest>0&&p(C),_.inLinked&&_.braceNest===0&&(_.inLinked=!1),I;case"@":return _.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I=Z(C,_)||g(_),_.braceNest=0,I;default:{let ie=!0,Q=!0,$=!0;if(L(C))return _.braceNest>0&&u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),I=h(_,1,O(C)),_.braceNest=0,_.inLinked=!1,I;if(_.braceNest>0&&(_.currentType===5||_.currentType===6||_.currentType===7))return u(Te.UNTERMINATED_CLOSING_BRACE,i(),0),_.braceNest=0,oe(C,_);if(ie=x(C,_))return I=h(_,5,Ye(C)),p(C),I;if(Q=y(C,_))return I=h(_,6,Ee(C)),p(C),I;if($=S(C,_))return I=h(_,7,Ot(C)),p(C),I;if(!ie&&!Q&&!$)return I=h(_,13,bt(C)),u(Te.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,I.value),p(C),I;break}}return I}function Z(C,_){const{currentType:I}=_;let F=null;const ie=C.currentChar();switch((I===8||I===9||I===12||I===10)&&(ie===Ut||ie===Hn)&&u(Te.INVALID_LINKED_FORMAT,i(),0),ie){case"@":return C.next(),F=h(_,8,"@"),_.inLinked=!0,F;case".":return p(C),C.next(),h(_,9,".");case":":return p(C),C.next(),h(_,10,":");default:return L(C)?(F=h(_,1,O(C)),_.braceNest=0,_.inLinked=!1,F):P(C,_)||w(C,_)?(p(C),Z(C,_)):v(C,_)?(p(C),h(_,12,E(C))):R(C,_)?(p(C),ie==="{"?X(C,_)||F:h(_,11,A(C))):(I===8&&u(Te.INVALID_LINKED_FORMAT,i(),0),_.braceNest=0,_.inLinked=!1,oe(C,_))}}function oe(C,_){let I={type:14};if(_.braceNest>0)return X(C,_)||g(_);if(_.inLinked)return Z(C,_)||g(_);switch(C.currentChar()){case"{":return X(C,_)||g(_);case"}":return u(Te.UNBALANCED_CLOSING_BRACE,i(),0),C.next(),h(_,3,"}");case"@":return Z(C,_)||g(_);default:{if(L(C))return I=h(_,1,O(C)),_.braceNest=0,_.inLinked=!1,I;const{isModulo:ie,hasSpace:Q}=j(C);if(ie)return Q?h(_,0,Ze(C)):h(_,4,lt(C));if(M(C))return h(_,0,Ze(C));break}}return I}function le(){const{currentType:C,offset:_,startLoc:I,endLoc:F}=l;return l.lastType=C,l.lastOffset=_,l.lastStartLoc=I,l.lastEndLoc=F,l.offset=r(),l.startLoc=i(),o.currentChar()===Jn?h(l,14):oe(o,l)}return{nextToken:le,currentOffset:r,currentPosition:i,context:c}}const jE="parser",GE=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function VE(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 UE(e={}){const t=e.location!==!1,{onError:n,onWarn:o}=e;function r(x,y,S,P,...v){const w=x.currentPosition();if(w.offset+=P,w.column+=P,n){const R=t?Va(S,w):null,L=Nr(y,R,{domain:jE,args:v});n(L)}}function i(x,y,S,P,...v){const w=x.currentPosition();if(w.offset+=P,w.column+=P,o){const R=t?Va(S,w):null;o(LE(y,R,v))}}function a(x,y,S){const P={type:x};return t&&(P.start=y,P.end=y,P.loc={start:S,end:S}),P}function s(x,y,S,P){P&&(x.type=P),t&&(x.end=y,x.loc&&(x.loc.end=S))}function l(x,y){const S=x.context(),P=a(3,S.offset,S.startLoc);return P.value=y,s(P,x.currentOffset(),x.currentPosition()),P}function c(x,y){const S=x.context(),{lastOffset:P,lastStartLoc:v}=S,w=a(5,P,v);return w.index=parseInt(y,10),x.nextToken(),s(w,x.currentOffset(),x.currentPosition()),w}function d(x,y,S){const P=x.context(),{lastOffset:v,lastStartLoc:w}=P,R=a(4,v,w);return R.key=y,S===!0&&(R.modulo=!0),x.nextToken(),s(R,x.currentOffset(),x.currentPosition()),R}function u(x,y){const S=x.context(),{lastOffset:P,lastStartLoc:v}=S,w=a(9,P,v);return w.value=y.replace(GE,VE),x.nextToken(),s(w,x.currentOffset(),x.currentPosition()),w}function h(x){const y=x.nextToken(),S=x.context(),{lastOffset:P,lastStartLoc:v}=S,w=a(8,P,v);return y.type!==12?(r(x,Te.UNEXPECTED_EMPTY_LINKED_MODIFIER,S.lastStartLoc,0),w.value="",s(w,P,v),{nextConsumeToken:y,node:w}):(y.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,Cn(y)),w.value=y.value||"",s(w,x.currentOffset(),x.currentPosition()),{node:w})}function g(x,y){const S=x.context(),P=a(7,S.offset,S.startLoc);return P.value=y,s(P,x.currentOffset(),x.currentPosition()),P}function f(x){const y=x.context(),S=a(6,y.offset,y.startLoc);let P=x.nextToken();if(P.type===9){const v=h(x);S.modifier=v.node,P=v.nextConsumeToken||x.nextToken()}switch(P.type!==10&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(P)),P=x.nextToken(),P.type===2&&(P=x.nextToken()),P.type){case 11:P.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(P)),S.key=g(x,P.value||"");break;case 5:P.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(P)),S.key=d(x,P.value||"");break;case 6:P.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(P)),S.key=c(x,P.value||"");break;case 7:P.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(P)),S.key=u(x,P.value||"");break;default:{r(x,Te.UNEXPECTED_EMPTY_LINKED_KEY,y.lastStartLoc,0);const v=x.context(),w=a(7,v.offset,v.startLoc);return w.value="",s(w,v.offset,v.startLoc),S.key=w,s(S,v.offset,v.startLoc),{nextConsumeToken:P,node:S}}}return s(S,x.currentOffset(),x.currentPosition()),{node:S}}function b(x){const y=x.context(),S=y.currentType===1?x.currentOffset():y.offset,P=y.currentType===1?y.endLoc:y.startLoc,v=a(2,S,P);v.items=[];let w=null,R=null;do{const M=w||x.nextToken();switch(w=null,M.type){case 0:M.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(M)),v.items.push(l(x,M.value||""));break;case 6:M.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(M)),v.items.push(c(x,M.value||""));break;case 4:R=!0;break;case 5:M.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(M)),v.items.push(d(x,M.value||"",!!R)),R&&(i(x,hd.USE_MODULO_SYNTAX,y.lastStartLoc,0,Cn(M)),R=null);break;case 7:M.value==null&&r(x,Te.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,Cn(M)),v.items.push(u(x,M.value||""));break;case 8:{const U=f(x);v.items.push(U.node),w=U.nextConsumeToken||null;break}}}while(y.currentType!==14&&y.currentType!==1);const L=y.currentType===1?y.lastOffset:x.currentOffset(),j=y.currentType===1?y.lastEndLoc:x.currentPosition();return s(v,L,j),v}function p(x,y,S,P){const v=x.context();let w=P.items.length===0;const R=a(1,y,S);R.cases=[],R.cases.push(P);do{const L=b(x);w||(w=L.items.length===0),R.cases.push(L)}while(v.currentType!==14);return w&&r(x,Te.MUST_HAVE_MESSAGES_IN_PLURAL,S,0),s(R,x.currentOffset(),x.currentPosition()),R}function m(x){const y=x.context(),{offset:S,startLoc:P}=y,v=b(x);return y.currentType===14?v:p(x,S,P,v)}function k(x){const y=WE(x,P0({},e)),S=y.context(),P=a(0,S.offset,S.startLoc);return t&&P.loc&&(P.loc.source=x),P.body=m(y),e.onCacheKey&&(P.cacheKey=e.onCacheKey(x)),S.currentType!==14&&r(y,Te.UNEXPECTED_LEXICAL_ANALYSIS,S.lastStartLoc,0,x[S.offset]||""),s(P,y.currentOffset(),y.currentPosition()),P}return{parse:k}}function Cn(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 KE(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:i=>(n.helpers.add(i),i)}}function Hh(e,t){for(let n=0;nBh(n)),e}function Bh(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 QE(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),_r(e,t.key),t.modifier?(e.push(", "),_r(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function eI(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=$h(t.mode)?t.mode:"normal",o=$h(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=JE(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 { ${A0(s.map(u=>`${u}: _${u}`),", ")} } = ctx`),l.newline()),l.push("return "),_r(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 rI(e,t={}){const n=P0({},t),o=!!n.jit,r=!!n.minify,i=n.optimize==null?!0:n.optimize,s=UE(n).parse(e);return o?(i&&XE(s),r&&hr(s),{ast:s,code:""}):(qE(s,n),oI(s,n))}/*! + * core-base v9.13.1 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */function iI(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(zn().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(zn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(zn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const So=[];So[0]={w:[0],i:[3,0],"[":[4],o:[7]};So[1]={w:[1],".":[2],"[":[4],o:[7]};So[2]={w:[2],i:[3,0],0:[3,0]};So[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};So[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};So[5]={"'":[4,0],o:8,l:[5,0]};So[6]={'"':[4,0],o:8,l:[6,0]};const aI=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function sI(e){return aI.test(e)}function lI(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 cI(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 dI(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:sI(t)?lI(t):"*"+t}function uI(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=dI(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=cI(i),u=So[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 Nh=new Map;function hI(e,t){return Ge(e)?e[t]:null}function fI(e,t){if(!Ge(e))return null;let n=Nh.get(t);if(n||(n=uI(t),n&&Nh.set(t,n)),!n)return null;const o=n.length;let r=e,i=0;for(;ie,mI=e=>"",pI="text",bI=e=>e.length===0?"":PE(e),vI=_E;function zh(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function yI(e){const t=yt(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(yt(e.named.count)||yt(e.named.n))?yt(e.named.count)?e.named.count:yt(e.named.n)?e.named.n:t:t}function CI(e,t){t.count||(t.count=e),t.n||(t.n=e)}function kI(e={}){const t=e.locale,n=yI(e),o=Ge(e.pluralRules)&&de(t)&&Qe(e.pluralRules[t])?e.pluralRules[t]:zh,r=Ge(e.pluralRules)&&de(t)&&Qe(e.pluralRules[t])?zh:void 0,i=m=>m[o(n,m.length,r)],a=e.list||[],s=m=>a[m],l=e.named||{};yt(e.pluralIndex)&&CI(n,l);const c=m=>l[m];function d(m){const k=Qe(e.messages)?e.messages(m):Ge(e.messages)?e.messages[m]:!1;return k||(e.parent?e.parent.message(m):mI)}const u=m=>e.modifiers?e.modifiers[m]:gI,h=Pe(e.processor)&&Qe(e.processor.normalize)?e.processor.normalize:bI,g=Pe(e.processor)&&Qe(e.processor.interpolate)?e.processor.interpolate:vI,f=Pe(e.processor)&&de(e.processor.type)?e.processor.type:pI,p={list:s,named:c,plural:i,linked:(m,...k)=>{const[x,y]=k;let S="text",P="";k.length===1?Ge(x)?(P=x.modifier||P,S=x.type||S):de(x)&&(P=x||P):k.length===2&&(de(x)&&(P=x||P),de(y)&&(S=y||S));const v=d(m)(p),w=S==="vnode"&&rt(v)&&P?v[0]:v;return P?u(P)(w,S):w},message:d,type:f,interpolate:g,normalize:h,values:$t({},a,l)};return p}let Ei=null;function xI(e){Ei=e}function SI(e,t,n){Ei&&Ei.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}const TI=wI("function:translate");function wI(e){return t=>Ei&&Ei.emit(e,t)}const R0=hd.__EXTEND_POINT__,Mo=Es(R0),_I={NOT_FOUND_KEY:R0,FALLBACK_TO_TRANSLATE:Mo(),CANNOT_FORMAT_NUMBER:Mo(),FALLBACK_TO_NUMBER_FORMAT:Mo(),CANNOT_FORMAT_DATE:Mo(),FALLBACK_TO_DATE_FORMAT:Mo(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Mo(),__EXTEND_POINT__:Mo()},E0=Te.__EXTEND_POINT__,Lo=Es(E0),Sn={INVALID_ARGUMENT:E0,INVALID_DATE_ARGUMENT:Lo(),INVALID_ISO_DATE_ARGUMENT:Lo(),NOT_SUPPORT_NON_STRING_MESSAGE:Lo(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:Lo(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:Lo(),NOT_SUPPORT_LOCALE_TYPE:Lo(),__EXTEND_POINT__:Lo()};function En(e){return Nr(e,null,void 0)}function gd(e,t){return t.locale!=null?Fh(t.locale):Fh(e.locale)}let ul;function Fh(e){if(de(e))return e;if(Qe(e)){if(e.resolvedOnce&&ul!=null)return ul;if(e.constructor.name==="Function"){const t=e();if(wE(t))throw En(Sn.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return ul=t}else throw En(Sn.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw En(Sn.NOT_SUPPORT_LOCALE_TYPE)}function PI(e,t,n){return[...new Set([n,...rt(t)?t:Ge(t)?Object.keys(t):de(t)?[t]:[n]])]}function I0(e,t,n){const o=de(n)?n:Pr,r=e;r.__localeChainCache||(r.__localeChainCache=new Map);let i=r.__localeChainCache.get(o);if(!i){i=[];let a=[n];for(;rt(a);)a=Wh(i,a,t);const s=rt(t)||!Pe(t)?t:t.default?t.default:null;a=de(s)?[s]:s,rt(a)&&Wh(i,a,!1),r.__localeChainCache.set(o,i)}return i}function Wh(e,t,n){let o=!0;for(let r=0;r`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function II(){return{upper:(e,t)=>t==="text"&&de(e)?e.toUpperCase():t==="vnode"&&Ge(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&de(e)?e.toLowerCase():t==="vnode"&&Ge(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&de(e)?Gh(e):t==="vnode"&&Ge(e)&&"__v_isVNode"in e?Gh(e.children):e}}let M0;function Vh(e){M0=e}let L0;function MI(e){L0=e}let D0;function LI(e){D0=e}let $0=null;const DI=e=>{$0=e},$I=()=>$0;let O0=null;const Uh=e=>{O0=e},OI=()=>O0;let Kh=0;function HI(e={}){const t=Qe(e.onWarn)?e.onWarn:AE,n=de(e.version)?e.version:EI,o=de(e.locale)||Qe(e.locale)?e.locale:Pr,r=Qe(o)?Pr:o,i=rt(e.fallbackLocale)||Pe(e.fallbackLocale)||de(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||{},II()),d=e.pluralRules||{},u=Qe(e.missing)?e.missing:null,h=$e(e.missingWarn)||go(e.missingWarn)?e.missingWarn:!0,g=$e(e.fallbackWarn)||go(e.fallbackWarn)?e.fallbackWarn:!0,f=!!e.fallbackFormat,b=!!e.unresolving,p=Qe(e.postTranslation)?e.postTranslation:null,m=Pe(e.processor)?e.processor:null,k=$e(e.warnHtmlMessage)?e.warnHtmlMessage:!0,x=!!e.escapeParameter,y=Qe(e.messageCompiler)?e.messageCompiler:M0,S=Qe(e.messageResolver)?e.messageResolver:L0||hI,P=Qe(e.localeFallbacker)?e.localeFallbacker:D0||PI,v=Ge(e.fallbackContext)?e.fallbackContext:void 0,w=e,R=Ge(w.__datetimeFormatters)?w.__datetimeFormatters:new Map,L=Ge(w.__numberFormatters)?w.__numberFormatters:new Map,j=Ge(w.__meta)?w.__meta:{};Kh++;const M={version:n,cid:Kh,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:x,messageCompiler:y,messageResolver:S,localeFallbacker:P,fallbackContext:v,onWarn:t,__meta:j};return M.datetimeFormats=s,M.numberFormats=l,M.__datetimeFormatters=R,M.__numberFormatters=L,__INTLIFY_PROD_DEVTOOLS__&&SI(M,n,j),M}function md(e,t,n,o,r){const{missing:i,onWarn:a}=e;if(i!==null){const s=i(e,n,t,r);return de(s)?s:t}else return t}function Yr(e,t,n){const o=e;o.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function BI(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function NI(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let o=n+1;ozI(n,e)}function zI(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,qh(e,a)],[]))}else return qh(e,n)}function qh(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,Ul(e,i)],[]);return e.normalize(o)}}function Ul(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(Ul(e,o.k||o.key),r?Ul(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 H0=e=>e;let gr=Object.create(null);const Ar=e=>Ge(e)&&(e.t===0||e.type===0)&&("b"in e||"body"in e);function B0(e,t={}){let n=!1;const o=t.onError||$E;return t.onError=r=>{n=!0,o(r)},{...rI(e,t),detectError:n}}const FI=(e,t)=>{if(!de(e))throw En(Sn.NOT_SUPPORT_NON_STRING_MESSAGE);{$e(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||H0)(e),r=gr[o];if(r)return r;const{code:i,detectError:a}=B0(e,t),s=new Function(`return ${i}`)();return a?s:gr[o]=s}};function WI(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&de(e)){$e(t.warnHtmlMessage)&&t.warnHtmlMessage;const o=(t.onCacheKey||H0)(e),r=gr[o];if(r)return r;const{ast:i,detectError:a}=B0(e,{...t,location:!1,jit:!0}),s=hl(i);return a?s:gr[o]=s}else{const n=e.cacheKey;if(n){const o=gr[n];return o||(gr[n]=hl(e))}else return hl(e)}}const Xh=()=>"",un=e=>Qe(e);function Zh(e,...t){const{fallbackFormat:n,postTranslation:o,unresolving:r,messageCompiler:i,fallbackLocale:a,messages:s}=e,[l,c]=Kl(...t),d=$e(c.missingWarn)?c.missingWarn:e.missingWarn,u=$e(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,h=$e(c.escapeParameter)?c.escapeParameter:e.escapeParameter,g=!!c.resolvedMessage,f=de(c.default)||$e(c.default)?$e(c.default)?i?l:()=>l:c.default:n?i?l:()=>l:"",b=n||f!=="",p=gd(e,c);h&&jI(c);let[m,k,x]=g?[l,p,s[p]||{}]:N0(e,l,p,a,u,d),y=m,S=l;if(!g&&!(de(y)||Ar(y)||un(y))&&b&&(y=f,S=y),!g&&(!(de(y)||Ar(y)||un(y))||!de(k)))return r?Is:l;let P=!1;const v=()=>{P=!0},w=un(y)?y:z0(e,l,k,y,S,v);if(P)return y;const R=UI(e,k,x,c),L=kI(R),j=GI(e,w,L),M=o?o(j,l):j;if(__INTLIFY_PROD_DEVTOOLS__){const U={timestamp:Date.now(),key:de(l)?l:un(y)?y.key:"",locale:k||(un(y)?y.locale:""),format:de(y)?y:un(y)?y.source:"",message:M};U.meta=$t({},e.__meta,$I()||{}),TI(U)}return M}function jI(e){rt(e.list)?e.list=e.list.map(t=>de(t)?Dh(t):t):Ge(e.named)&&Object.keys(e.named).forEach(t=>{de(e.named[t])&&(e.named[t]=Dh(e.named[t]))})}function N0(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,VI(e,n,r,o,s,i));return l.locale=n,l.key=t,l.source=o,l}function GI(e,t,n){return t(n)}function Kl(...e){const[t,n,o]=e,r={};if(!de(t)&&!yt(t)&&!un(t)&&!Ar(t))throw En(Sn.INVALID_ARGUMENT);const i=yt(t)?String(t):(un(t),t);return yt(n)?r.plural=n:de(n)?r.default=n:Pe(n)&&!Rs(n)?r.named=n:rt(n)&&(r.list=n),yt(o)?r.plural=o:de(o)?r.default=o:Pe(o)&&$t(r,o),[i,r]}function VI(e,t,n,o,r,i){return{locale:t,key:n,warnHtmlMessage:r,onError:a=>{throw i&&i(a),a},onCacheKey:a=>kE(t,n,a)}}function UI(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]=N0(d,g,t,s,l,c);f=a(b,g)}if(de(f)||Ar(f)){let b=!1;const m=z0(e,g,t,f,g,()=>{b=!0});return b?Xh:m}else return un(f)?f:Xh}};return e.processor&&(h.processor=e.processor),o.list&&(h.list=o.list),o.named&&(h.named=o.named),yt(o.plural)&&(h.pluralIndex=o.plural),h}function Yh(e,...t){const{datetimeFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__datetimeFormatters:s}=e,[l,c,d,u]=ql(...t),h=$e(d.missingWarn)?d.missingWarn:e.missingWarn;$e(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=gd(e,d),b=a(e,r,f);if(!de(l)||l==="")return new Intl.DateTimeFormat(f,u).format(c);let p={},m,k=null;const x="datetime format";for(let P=0;P{F0.includes(l)?a[l]=n[l]:i[l]=n[l]}),de(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function Jh(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__datetimeFormatters.has(i)&&o.__datetimeFormatters.delete(i)}}function Qh(e,...t){const{numberFormats:n,unresolving:o,fallbackLocale:r,onWarn:i,localeFallbacker:a}=e,{__numberFormatters:s}=e,[l,c,d,u]=Xl(...t),h=$e(d.missingWarn)?d.missingWarn:e.missingWarn;$e(d.fallbackWarn)?d.fallbackWarn:e.fallbackWarn;const g=!!d.part,f=gd(e,d),b=a(e,r,f);if(!de(l)||l==="")return new Intl.NumberFormat(f,u).format(c);let p={},m,k=null;const x="number format";for(let P=0;P{W0.includes(l)?a[l]=n[l]:i[l]=n[l]}),de(o)?i.locale=o:Pe(o)&&(a=o),Pe(r)&&(a=r),[i.key||"",s,i,a]}function ef(e,t,n){const o=e;for(const r in n){const i=`${t}__${r}`;o.__numberFormatters.has(i)&&o.__numberFormatters.delete(i)}}iI();/*! + * vue-i18n v9.13.1 + * (c) 2024 kazuya kawaguchi + * Released under the MIT License. + */const KI="9.13.1";function qI(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(zn().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(zn().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(zn().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(zn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(zn().__INTLIFY_PROD_DEVTOOLS__=!1)}const j0=_I.__EXTEND_POINT__,Bn=Es(j0);Bn(),Bn(),Bn(),Bn(),Bn(),Bn(),Bn(),Bn(),Bn();const G0=Sn.__EXTEND_POINT__,Zt=Es(G0),kt={UNEXPECTED_RETURN_TYPE:G0,INVALID_ARGUMENT:Zt(),MUST_BE_CALL_SETUP_TOP:Zt(),NOT_INSTALLED:Zt(),NOT_AVAILABLE_IN_LEGACY_MODE:Zt(),REQUIRED_VALUE:Zt(),INVALID_VALUE:Zt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Zt(),NOT_INSTALLED_WITH_PROVIDE:Zt(),UNEXPECTED_ERROR:Zt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Zt(),BRIDGE_SUPPORT_VUE_2_ONLY:Zt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Zt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Zt(),__EXTEND_POINT__:Zt()};function _t(e,...t){return Nr(e,null,void 0)}const Zl=xo("__translateVNode"),Yl=xo("__datetimeParts"),Jl=xo("__numberParts"),V0=xo("__setPluralRules"),U0=xo("__injectWithOption"),Ql=xo("__dispose");function Ii(e){if(!Ge(e))return e;for(const t in e)if(Ga(e,t))if(!t.includes("."))Ge(e[t])&&Ii(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]||{},Sa(c,a[l])):Sa(c,a)}else de(s)&&Sa(JSON.parse(s),a)}),r==null&&i)for(const s in a)Ga(a,s)&&Ii(a[s]);return a}function K0(e){return e.type}function q0(e,t,n){let o=Ge(t.messages)?t.messages:{};"__i18nGlobal"in n&&(o=Ms(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 tf(e){return pe(Er,null,e,0)}const nf="__INTLIFY_META__",of=()=>[],XI=()=>!1;let rf=0;function af(e){return(t,n,o,r)=>e(n,o,Qt()||void 0,r)}const ZI=()=>{const e=Qt();let t=null;return e&&(t=K0(e)[nf])?{[nf]:t}:null};function pd(e={},t){const{__root:n,__injectWithOption:o}=e,r=n===void 0,i=e.flatJson,a=ja?V:Ja,s=!!e.translateExistCompatible;let l=$e(e.inheritLocale)?e.inheritLocale:!0;const c=a(n&&l?n.locale.value:de(e.locale)?e.locale:Pr),d=a(n&&l?n.fallbackLocale.value:de(e.fallbackLocale)||rt(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),u=a(Ms(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:$e(e.missingWarn)||go(e.missingWarn)?e.missingWarn:!0,b=n?n.fallbackWarn:$e(e.fallbackWarn)||go(e.fallbackWarn)?e.fallbackWarn:!0,p=n?n.fallbackRoot:$e(e.fallbackRoot)?e.fallbackRoot:!0,m=!!e.fallbackFormat,k=Qe(e.missing)?e.missing:null,x=Qe(e.missing)?af(e.missing):null,y=Qe(e.postTranslation)?e.postTranslation:null,S=n?n.warnHtmlMessage:$e(e.warnHtmlMessage)?e.warnHtmlMessage:!0,P=!!e.escapeParameter;const v=n?n.modifiers:Pe(e.modifiers)?e.modifiers:{};let w=e.pluralRules||n&&n.pluralRules,R;R=(()=>{r&&Uh(null);const $={version:KI,locale:c.value,fallbackLocale:d.value,messages:u.value,modifiers:v,pluralRules:w,missing:x===null?void 0:x,missingWarn:f,fallbackWarn:b,fallbackFormat:m,unresolving:!0,postTranslation:y===null?void 0:y,warnHtmlMessage:S,escapeParameter:P,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};$.datetimeFormats=h.value,$.numberFormats=g.value,$.__datetimeFormatters=Pe(R)?R.__datetimeFormatters:void 0,$.__numberFormatters=Pe(R)?R.__numberFormatters:void 0;const B=HI($);return r&&Uh(B),B})(),Yr(R,c.value,d.value);function j(){return[c.value,d.value,u.value,h.value,g.value]}const M=N({get:()=>c.value,set:$=>{c.value=$,R.locale=c.value}}),U=N({get:()=>d.value,set:$=>{d.value=$,R.fallbackLocale=d.value,Yr(R,c.value,$)}}),ne=N(()=>u.value),H=N(()=>h.value),q=N(()=>g.value);function W(){return Qe(y)?y:null}function re($){y=$,R.postTranslation=$}function be(){return k}function ve($){$!==null&&(x=af($)),k=$,R.missing=x}const _e=($,B,me,ke,Be,dt)=>{j();let Et;try{__INTLIFY_PROD_DEVTOOLS__,r||(R.fallbackContext=n?OI():void 0),Et=$(R)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(R.fallbackContext=void 0)}if(me!=="translate exists"&&yt(Et)&&Et===Is||me==="translate exists"&&!Et){const[$n,Gt]=B();return n&&p?ke(n):Be($n)}else{if(dt(Et))return Et;throw _t(kt.UNEXPECTED_RETURN_TYPE)}};function Me(...$){return _e(B=>Reflect.apply(Zh,null,[B,...$]),()=>Kl(...$),"translate",B=>Reflect.apply(B.t,B,[...$]),B=>B,B=>de(B))}function lt(...$){const[B,me,ke]=$;if(ke&&!Ge(ke))throw _t(kt.INVALID_ARGUMENT);return Me(B,me,$t({resolvedMessage:!0},ke||{}))}function Ze(...$){return _e(B=>Reflect.apply(Yh,null,[B,...$]),()=>ql(...$),"datetime format",B=>Reflect.apply(B.d,B,[...$]),()=>jh,B=>de(B))}function Ye(...$){return _e(B=>Reflect.apply(Qh,null,[B,...$]),()=>Xl(...$),"number format",B=>Reflect.apply(B.n,B,[...$]),()=>jh,B=>de(B))}function Ee($){return $.map(B=>de(B)||yt(B)||$e(B)?tf(String(B)):B)}const Ot={normalize:Ee,interpolate:$=>$,type:"vnode"};function Le(...$){return _e(B=>{let me;const ke=B;try{ke.processor=Ot,me=Reflect.apply(Zh,null,[ke,...$])}finally{ke.processor=null}return me},()=>Kl(...$),"translate",B=>B[Zl](...$),B=>[tf(B)],B=>rt(B))}function ct(...$){return _e(B=>Reflect.apply(Qh,null,[B,...$]),()=>Xl(...$),"number format",B=>B[Jl](...$),of,B=>de(B)||rt(B))}function Rt(...$){return _e(B=>Reflect.apply(Yh,null,[B,...$]),()=>ql(...$),"datetime format",B=>B[Yl](...$),of,B=>de(B)||rt(B))}function bt($){w=$,R.pluralRules=w}function E($,B){return _e(()=>{if(!$)return!1;const me=de(B)?B:c.value,ke=X(me),Be=R.messageResolver(ke,$);return s?Be!=null:Ar(Be)||un(Be)||de(Be)},()=>[$],"translate exists",me=>Reflect.apply(me.te,me,[$,B]),XI,me=>$e(me))}function A($){let B=null;const me=I0(R,d.value,c.value);for(let ke=0;ke{l&&(c.value=$,R.locale=$,Yr(R,c.value,d.value))}),et(n.fallbackLocale,$=>{l&&(d.value=$,R.fallbackLocale=$,Yr(R,c.value,d.value))}));const Q={id:rf,locale:M,fallbackLocale:U,get inheritLocale(){return l},set inheritLocale($){l=$,$&&n&&(c.value=n.locale.value,d.value=n.fallbackLocale.value,Yr(R,c.value,d.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:ne,get modifiers(){return v},get pluralRules(){return w||{}},get isGlobal(){return r},get missingWarn(){return f},set missingWarn($){f=$,R.missingWarn=f},get fallbackWarn(){return b},set fallbackWarn($){b=$,R.fallbackWarn=b},get fallbackRoot(){return p},set fallbackRoot($){p=$},get fallbackFormat(){return m},set fallbackFormat($){m=$,R.fallbackFormat=m},get warnHtmlMessage(){return S},set warnHtmlMessage($){S=$,R.warnHtmlMessage=$},get escapeParameter(){return P},set escapeParameter($){P=$,R.escapeParameter=$},t:Me,getLocaleMessage:X,setLocaleMessage:Z,mergeLocaleMessage:oe,getPostTranslationHandler:W,setPostTranslationHandler:re,getMissingHandler:be,setMissingHandler:ve,[V0]:bt};return Q.datetimeFormats=H,Q.numberFormats=q,Q.rt=lt,Q.te=E,Q.tm=O,Q.d=Ze,Q.n=Ye,Q.getDateTimeFormat=le,Q.setDateTimeFormat=C,Q.mergeDateTimeFormat=_,Q.getNumberFormat=I,Q.setNumberFormat=F,Q.mergeNumberFormat=ie,Q[U0]=o,Q[Zl]=Le,Q[Yl]=Rt,Q[Jl]=ct,Q}function YI(e){const t=de(e.locale)?e.locale:Pr,n=de(e.fallbackLocale)||rt(e.fallbackLocale)||Pe(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,o=Qe(e.missing)?e.missing:void 0,r=$e(e.silentTranslationWarn)||go(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=$e(e.silentFallbackWarn)||go(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,a=$e(e.fallbackRoot)?e.fallbackRoot:!0,s=!!e.formatFallbackMessages,l=Pe(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,d=Qe(e.postTranslation)?e.postTranslation:void 0,u=de(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,h=!!e.escapeParameterHtml,g=$e(e.sync)?e.sync:!0;let f=e.messages;if(Pe(e.sharedMessages)){const P=e.sharedMessages;f=Object.keys(P).reduce((w,R)=>{const L=w[R]||(w[R]={});return $t(L,P[R]),w},f||{})}const{__i18n:b,__root:p,__injectWithOption:m}=e,k=e.datetimeFormats,x=e.numberFormats,y=e.flatJson,S=e.translateExistCompatible;return{locale:t,fallbackLocale:n,messages:f,flatJson:y,datetimeFormats:k,numberFormats:x,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:S,__i18n:b,__root:p,__injectWithOption:m}}function ec(e={},t){{const n=pd(YI(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 $e(n.missingWarn)?!n.missingWarn:n.missingWarn},set silentTranslationWarn(i){n.missingWarn=$e(i)?!i:i},get silentFallbackWarn(){return $e(n.fallbackWarn)?!n.fallbackWarn:n.fallbackWarn},set silentFallbackWarn(i){n.fallbackWarn=$e(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(!de(a))throw _t(kt.INVALID_ARGUMENT);const h=a;return de(s)?c.locale=s:rt(s)?d=s:Pe(s)&&(u=s),rt(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(!de(a))throw _t(kt.INVALID_ARGUMENT);const h=a;return de(s)?c.locale=s:yt(s)?c.plural=s:rt(s)?d=s:Pe(s)&&(u=s),de(l)?c.locale=l:rt(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 bd={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function JI({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((o,r)=>[...o,...r.type===Oe?r.children:[r]],[]):t.reduce((n,o)=>{const r=e[o];return r&&(n[o]=r()),n},{})}function X0(e){return Oe}const QI=ce({name:"i18n-t",props:$t({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>yt(e)||!isNaN(e)}},bd),setup(e,t){const{slots:n,attrs:o}=t,r=e.i18n||Fi({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=de(e.plural)?+e.plural:e.plural);const s=JI(t,i),l=r[Zl](e.keypath,s,a),c=$t({},o),d=de(e.tag)||Ge(e.tag)?e.tag:X0();return T(d,c,l)}}}),sf=QI;function eM(e){return rt(e)&&!de(e[0])}function Z0(e,t,n,o){const{slots:r,attrs:i}=t;return()=>{const a={part:!0};let s={};e.locale&&(a.locale=e.locale),de(e.format)?a.key=e.format:Ge(e.format)&&(de(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];rt(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 eM(b)&&(b[0].key=`${h.type}-${g}`),b}):de(l)&&(c=[l]);const d=$t({},i),u=de(e.tag)||Ge(e.tag)?e.tag:X0();return T(u,d,c)}}const tM=ce({name:"i18n-n",props:$t({value:{type:Number,required:!0},format:{type:[String,Object]}},bd),setup(e,t){const n=e.i18n||Fi({useScope:e.scope,__useComponent:!0});return Z0(e,t,W0,(...o)=>n[Jl](...o))}}),lf=tM,nM=ce({name:"i18n-d",props:$t({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},bd),setup(e,t){const n=e.i18n||Fi({useScope:e.scope,__useComponent:!0});return Z0(e,t,F0,(...o)=>n[Yl](...o))}}),cf=nM;function oM(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 rM(e){const t=a=>{const{instance:s,modifiers:l,value:c}=a;if(!s||!s.$)throw _t(kt.UNEXPECTED_ERROR);const d=oM(e,s.$),u=df(c);return[Reflect.apply(d.t,d,[...uf(u)]),d]};return{created:(a,s)=>{const[l,c]=t(s);ja&&e.global===c&&(a.__i18nWatcher=et(c.locale,()=>{s.instance&&s.instance.$forceUpdate()})),a.__composer=c,a.textContent=l},unmounted:a=>{ja&&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=df(s);a.textContent=Reflect.apply(l.t,l,[...uf(c)])}},getSSRProps:a=>{const[s]=t(a);return{textContent:s}}}}function df(e){if(de(e))return{path:e};if(Pe(e)){if(!("path"in e))throw _t(kt.REQUIRED_VALUE,"path");return e}else throw _t(kt.INVALID_VALUE)}function uf(e){const{path:t,locale:n,args:o,choice:r,plural:i}=e,a={},s=o||{};return de(n)&&(a.locale=n),yt(r)&&(a.plural=r),yt(i)&&(a.plural=i),[t,s,a]}function iM(e,t,...n){const o=Pe(n[0])?n[0]:{},r=!!o.useI18nComponentName;($e(o.globalInstall)?o.globalInstall:!0)&&([r?"i18n":sf.name,"I18nT"].forEach(a=>e.component(a,sf)),[lf.name,"I18nN"].forEach(a=>e.component(a,lf)),[cf.name,"I18nD"].forEach(a=>e.component(a,cf))),e.directive("t",rM(t))}function aM(e,t,n){return{beforeCreate(){const o=Qt();if(!o)throw _t(kt.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=hf(e,i);else{i.__injectWithOption=!0,i.__extender=n.__vueI18nExtend,this.$i18n=ec(i);const a=this.$i18n;a.__extender&&(a.__disposer=a.__extender(this.$i18n))}}else if(r.__i18n)if(this===this.$root)this.$i18n=hf(e,r);else{this.$i18n=ec({__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&&q0(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=Qt();if(!o)throw _t(kt.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 hf(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[V0](t.pluralizationRules||e.pluralizationRules);const n=Ms(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 sM=xo("global-vue-i18n");function lM(e={},t){const n=__VUE_I18N_LEGACY_API__&&$e(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,o=$e(e.globalInjection)?e.globalInjection:!0,r=__VUE_I18N_LEGACY_API__&&n?!!e.allowComposition:!0,i=new Map,[a,s]=cM(e,n),l=xo("");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=vM(g,h.global)),__VUE_I18N_FULL_INSTALL__&&iM(g,h,...f),__VUE_I18N_LEGACY_API__&&n&&g.mixin(aM(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 Fi(e={}){const t=Qt();if(t==null)throw _t(kt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw _t(kt.NOT_INSTALLED);const n=dM(t),o=hM(n),r=K0(t),i=uM(e,r);if(__VUE_I18N_LEGACY_API__&&n.mode==="legacy"&&!e.__useComponent){if(!n.allowComposition)throw _t(kt.NOT_AVAILABLE_IN_LEGACY_MODE);return pM(t,i,o,e)}if(i==="global")return q0(o,e,r),o;if(i==="parent"){let l=fM(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=pd(l),a.__composerExtend&&(s[Ql]=a.__composerExtend(s)),mM(a,t,s),a.__setInstance(t,s)}return s}function cM(e,t,n){const o=cc();{const r=__VUE_I18N_LEGACY_API__&&t?o.run(()=>ec(e)):o.run(()=>pd(e));if(r==null)throw _t(kt.UNEXPECTED_ERROR);return[o,r]}}function dM(e){{const t=Ae(e.isCE?sM:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw _t(e.isCE?kt.NOT_INSTALLED_WITH_PROVIDE:kt.UNEXPECTED_ERROR);return t}}function uM(e,t){return Rs(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function hM(e){return e.mode==="composition"?e.global:e.global.__composer}function fM(e,t,n=!1){let o=null;const r=t.root;let i=gM(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[U0]&&(o=null))}if(o!=null||r===i)break;i=i.parent}return o}function gM(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function mM(e,t,n){Pt(()=>{},t),Sc(()=>{const o=n;e.__deleteInstance(t);const r=o[Ql];r&&(r(),delete o[Ql])},t)}function pM(e,t,n,o={}){const r=t==="local",i=Ja(null);if(r&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw _t(kt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const a=$e(o.inheritLocale)?o.inheritLocale:!de(o.locale),s=V(!r||a?n.locale.value:de(o.locale)?o.locale:Pr),l=V(!r||a?n.fallbackLocale.value:de(o.fallbackLocale)||rt(o.fallbackLocale)||Pe(o.fallbackLocale)||o.fallbackLocale===!1?o.fallbackLocale:s.value),c=V(Ms(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:$e(o.missingWarn)||go(o.missingWarn)?o.missingWarn:!0,g=r?n.fallbackWarn:$e(o.fallbackWarn)||go(o.fallbackWarn)?o.fallbackWarn:!0,f=r?n.fallbackRoot:$e(o.fallbackRoot)?o.fallbackRoot:!0,b=!!o.fallbackFormat,p=Qe(o.missing)?o.missing:null,m=Qe(o.postTranslation)?o.postTranslation:null,k=r?n.warnHtmlMessage:$e(o.warnHtmlMessage)?o.warnHtmlMessage:!0,x=!!o.escapeParameter,y=r?n.modifiers:Pe(o.modifiers)?o.modifiers:{},S=o.pluralRules||r&&n.pluralRules;function P(){return[s.value,l.value,c.value,d.value,u.value]}const v=N({get:()=>i.value?i.value.locale.value:s.value,set:A=>{i.value&&(i.value.locale.value=A),s.value=A}}),w=N({get:()=>i.value?i.value.fallbackLocale.value:l.value,set:A=>{i.value&&(i.value.fallbackLocale.value=A),l.value=A}}),R=N(()=>i.value?i.value.messages.value:c.value),L=N(()=>d.value),j=N(()=>u.value);function M(){return i.value?i.value.getPostTranslationHandler():m}function U(A){i.value&&i.value.setPostTranslationHandler(A)}function ne(){return i.value?i.value.getMissingHandler():p}function H(A){i.value&&i.value.setMissingHandler(A)}function q(A){return P(),A()}function W(...A){return i.value?q(()=>Reflect.apply(i.value.t,null,[...A])):q(()=>"")}function re(...A){return i.value?Reflect.apply(i.value.rt,null,[...A]):""}function be(...A){return i.value?q(()=>Reflect.apply(i.value.d,null,[...A])):q(()=>"")}function ve(...A){return i.value?q(()=>Reflect.apply(i.value.n,null,[...A])):q(()=>"")}function _e(A){return i.value?i.value.tm(A):{}}function Me(A,O){return i.value?i.value.te(A,O):!1}function lt(A){return i.value?i.value.getLocaleMessage(A):{}}function Ze(A,O){i.value&&(i.value.setLocaleMessage(A,O),c.value[A]=O)}function Ye(A,O){i.value&&i.value.mergeLocaleMessage(A,O)}function Ee(A){return i.value?i.value.getDateTimeFormat(A):{}}function De(A,O){i.value&&(i.value.setDateTimeFormat(A,O),d.value[A]=O)}function Ot(A,O){i.value&&i.value.mergeDateTimeFormat(A,O)}function Le(A){return i.value?i.value.getNumberFormat(A):{}}function ct(A,O){i.value&&(i.value.setNumberFormat(A,O),u.value[A]=O)}function Rt(A,O){i.value&&i.value.mergeNumberFormat(A,O)}const bt={get id(){return i.value?i.value.id:-1},locale:v,fallbackLocale:w,messages:R,datetimeFormats:L,numberFormats:j,get inheritLocale(){return i.value?i.value.inheritLocale:a},set inheritLocale(A){i.value&&(i.value.inheritLocale=A)},get availableLocales(){return i.value?i.value.availableLocales:Object.keys(c.value)},get modifiers(){return i.value?i.value.modifiers:y},get pluralRules(){return i.value?i.value.pluralRules:S},get isGlobal(){return i.value?i.value.isGlobal:!1},get missingWarn(){return i.value?i.value.missingWarn:h},set missingWarn(A){i.value&&(i.value.missingWarn=A)},get fallbackWarn(){return i.value?i.value.fallbackWarn:g},set fallbackWarn(A){i.value&&(i.value.missingWarn=A)},get fallbackRoot(){return i.value?i.value.fallbackRoot:f},set fallbackRoot(A){i.value&&(i.value.fallbackRoot=A)},get fallbackFormat(){return i.value?i.value.fallbackFormat:b},set fallbackFormat(A){i.value&&(i.value.fallbackFormat=A)},get warnHtmlMessage(){return i.value?i.value.warnHtmlMessage:k},set warnHtmlMessage(A){i.value&&(i.value.warnHtmlMessage=A)},get escapeParameter(){return i.value?i.value.escapeParameter:x},set escapeParameter(A){i.value&&(i.value.escapeParameter=A)},t:W,getPostTranslationHandler:M,setPostTranslationHandler:U,getMissingHandler:ne,setMissingHandler:H,rt:re,d:be,n:ve,tm:_e,te:Me,getLocaleMessage:lt,setLocaleMessage:Ze,mergeLocaleMessage:Ye,getDateTimeFormat:Ee,setDateTimeFormat:De,mergeDateTimeFormat:Ot,getNumberFormat:Le,setNumberFormat:ct,mergeNumberFormat:Rt};function E(A){A.locale.value=s.value,A.fallbackLocale.value=l.value,Object.keys(c.value).forEach(O=>{A.mergeLocaleMessage(O,c.value[O])}),Object.keys(d.value).forEach(O=>{A.mergeDateTimeFormat(O,d.value[O])}),Object.keys(u.value).forEach(O=>{A.mergeNumberFormat(O,u.value[O])}),A.escapeParameter=x,A.fallbackFormat=b,A.fallbackRoot=f,A.fallbackWarn=g,A.missingWarn=h,A.warnHtmlMessage=k}return Ln(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw _t(kt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const A=i.value=e.proxy.$i18n.__composer;t==="global"?(s.value=A.locale.value,l.value=A.fallbackLocale.value,c.value=A.messages.value,d.value=A.datetimeFormats.value,u.value=A.numberFormats.value):r&&E(A)}),bt}const bM=["locale","fallbackLocale","availableLocales"],ff=["t","rt","d","n","tm","te"];function vM(e,t){const n=Object.create(null);return bM.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i)throw _t(kt.UNEXPECTED_ERROR);const a=ht(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,ff.forEach(r=>{const i=Object.getOwnPropertyDescriptor(t,r);if(!i||!i.value)throw _t(kt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,i)}),()=>{delete e.config.globalProperties.$i18n,ff.forEach(r=>{delete e.config.globalProperties[`$${r}`]})}}qI();__INTLIFY_JIT_COMPILATION__?Vh(WI):Vh(FI);MI(fI);LI(I0);if(__INTLIFY_PROD_DEVTOOLS__){const e=zn();e.__INTLIFY__=!0,xI(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const yM=ce({__name:"DictViewer",props:{item:{}},emits:["tag-click"],setup(e,{emit:t}){const n=e,o=t,r=Fi(),i=rR(),a=N(()=>n.item.content.replace(/\\t/g," ".repeat(4)).replace(/\\n/g,"
")),s=N(()=>new URL(`#${n.item.id}`,location.href).toString());async function l(u){const{copy:h,isSupported:g}=CE({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 Pt(()=>{location.replace(s.value)}),(u,h)=>{const g=IR,f=Gl,b=Wa,p=Eb,m=od;return Ve(),It(p,{vertical:""},{default:Se(()=>[pe(g,null,{default:Se(()=>[pe(Vl,{item:u.item},null,8,["item"])]),_:1}),pe(f,{class:"whitespace-pre-wrap",innerHTML:Fe(a)},null,8,["innerHTML"]),pe(p,{class:"mt-10 items-end",justify:"space-between"},{default:Se(()=>[pe(p,{size:"small"},{default:Se(()=>[pe(f,null,{default:Se(()=>[St(An(u.$t("tags"))+": ",1)]),_:1}),(Ve(!0),gn(Oe,null,pa(u.item.tags,k=>(Ve(),It(b,{text:"",type:"info",onClick:x=>o("tag-click",k)},{default:Se(()=>[St(An(k),1)]),_:2},1032,["onClick"]))),256))]),_:1}),pe(p,null,{default:Se(()=>[u.item.link?(Ve(),It(b,{key:0,href:u.item.link,tag:"a"},{icon:Se(()=>[pe(m,{component:Fe(UR)},null,8,["component"])]),_:1},8,["href"])):Py("",!0),pe(b,{onClick:h[0]||(h[0]=k=>d(u.item))},{icon:Se(()=>[pe(m,{component:Fe(YR)},null,8,["component"])]),_:1}),pe(b,{onClick:h[1]||(h[1]=k=>c(u.item))},{icon:Se(()=>[pe(m,{component:Fe(cE)},null,8,["component"])]),_:1})]),_:1})]),_:1})]),_:1})}}});/*! + * pinia v2.1.7 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */let Y0;const Ls=e=>Y0=e,J0=Symbol();function tc(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var di;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(di||(di={}));function CM(){const e=cc(!0),t=e.run(()=>V({}));let n=[],o=[];const r=hi({install(i){Ls(r),r._a=i,i.provide(J0,r),i.config.globalProperties.$pinia=r,o.forEach(a=>n.push(a)),o=[]},use(i){return!this._a&&!dE?o.push(i):n.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Q0=()=>{};function gf(e,t,n,o=Q0){e.push(t);const r=()=>{const i=e.indexOf(t);i>-1&&(e.splice(i,1),o())};return!n&&dc()&&Af(r),r}function dr(e,...t){e.slice().forEach(n=>{n(...t)})}const kM=e=>e();function nc(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];tc(r)&&tc(o)&&e.hasOwnProperty(n)&&!ht(o)&&!Go(o)?e[n]=nc(r,o):e[n]=o}return e}const xM=Symbol();function SM(e){return!tc(e)||!e.hasOwnProperty(xM)}const{assign:eo}=Object;function TM(e){return!!(ht(e)&&e.effect)}function wM(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=Ev(n.state.value[e]);return eo(d,i,Object.keys(a||{}).reduce((u,h)=>(u[h]=hi(N(()=>{Ls(n);const g=n._s.get(e);return a[h].call(g,g)})),u),{}))}return l=e1(e,c,t,n,o,!0),l}function e1(e,t,n={},o,r,i){let a;const s=eo({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(w){let R;c=d=!1,typeof w=="function"?(w(o.state.value[e]),R={type:di.patchFunction,storeId:e,events:g}):(nc(o.state.value[e],w),R={type:di.patchObject,payload:w,storeId:e,events:g});const L=b=Symbol();Ft().then(()=>{b===L&&(c=!0)}),d=!0,dr(u,R,o.state.value[e])}const m=i?function(){const{state:R}=n,L=R?R():{};this.$patch(j=>{eo(j,L)})}:Q0;function k(){a.stop(),u=[],h=[],o._s.delete(e)}function x(w,R){return function(){Ls(o);const L=Array.from(arguments),j=[],M=[];function U(q){j.push(q)}function ne(q){M.push(q)}dr(h,{args:L,name:w,store:S,after:U,onError:ne});let H;try{H=R.apply(this&&this.$id===e?this:S,L)}catch(q){throw dr(M,q),q}return H instanceof Promise?H.then(q=>(dr(j,q),q)).catch(q=>(dr(M,q),Promise.reject(q))):(dr(j,H),H)}}const y={_p:o,$id:e,$onAction:gf.bind(null,h),$patch:p,$reset:m,$subscribe(w,R={}){const L=gf(u,w,R.detached,()=>j()),j=a.run(()=>et(()=>o.state.value[e],M=>{(R.flush==="sync"?d:c)&&w({storeId:e,type:di.direct,events:g},M)},eo({},l,R)));return L},$dispose:k},S=bo(y);o._s.set(e,S);const v=(o._a&&o._a.runWithContext||kM)(()=>o._e.run(()=>(a=cc()).run(t)));for(const w in v){const R=v[w];if(ht(R)&&!TM(R)||Go(R))i||(f&&SM(R)&&(ht(R)?R.value=f[w]:nc(R,f[w])),o.state.value[e][w]=R);else if(typeof R=="function"){const L=x(w,R);v[w]=L,s.actions[w]=R}}return eo(S,v),eo(He(S),v),Object.defineProperty(S,"$state",{get:()=>o.state.value[e],set:w=>{p(R=>{eo(R,w)})}}),o._p.forEach(w=>{eo(S,a.run(()=>w({store:S,app:o._a,pinia:o,options:s})))}),f&&i&&n.hydrate&&n.hydrate(S.$state,f),c=!0,d=!0,S}function _M(e,t,n){let o,r;const i=typeof t=="function";typeof e=="string"?(o=e,r=i?n:t):(r=e,o=e.id);function a(s,l){const c=uy();return s=s||(c?Ae(J0,null):null),s&&Ls(s),s=Y0,s._s.has(o)||(i?e1(o,t,r,s):wM(o,r,s)),s._s.get(o)}return a.$id=o,a}const t1=_M("app",{state:()=>({locale:"zh",theme:pC().value}),persist:{enabled:!0}}),PM=ce({__name:"Wrapper",setup(e){const t=t1(),n=N(()=>t.theme==="light"?FR:zR);return(o,r)=>{const i=ZA,a=gR,s=Y9,l=oR,c=R8;return Ve(),It(c,{theme:Fe(n),class:"h-full"},{default:Se(()=>[pe(l,null,{default:Se(()=>[pe(s,null,{default:Se(()=>[pe(a,null,{default:Se(()=>[pe(i,null,{default:Se(()=>[ig(o.$slots,"default")]),_:3})]),_:3})]),_:3})]),_:3})]),_:3},8,["theme"])}}}),mf=(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 AM=({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)),mf(l,t))}),t.$subscribe(()=>{s.forEach(l=>{mf(l,t)})})}};const RM=CM().use(AM),EM=lM({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"}}}),fl={help:"#fdba74",org:"#fbb741",game:"#14a3c7",term:"#ff7f7f",setup:"#94a3b8",pattern:"#bfdfa5",command:"#0284c7",english:"#2563eb",name:"#7a5299"},IM=[{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 adds an extra block of offset in that direction, in addition to the normal offsets in the wall kick tables (horizonal extra offset that indicated by the keypress must not be in the opposite direction to the composite horizonal offset, and distance of the composite offset must not exceed √5). If the tests fail, left and right offsets will be canceled then try again, then down offsets.\\nCompared 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:"a196d7935cf87854b37f52456f9bfbda881ea6c3"},{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:"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"}],MM=[{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"}],LM=[{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. + +Để nhảy nhanh tới mục lục, hãy gõ "mucluc" trên thanh tìm kiếm. + +Đây là bản Việt hóa của Squishy từ bản dịch tiếng Anh của User670 và C₂₉H₂₅N₃O₅. +Được chuẩn hóa lại nhờ sự giúp đỡ của cộng đồng Tetris Việt Nam. +Bản dịch có thể có sai sót so với Zictionary tiếng Trung (bản gốc). + +Bạn muốn đóng góp vào bản dịch? Bạn có thể vào trang dự án Techmino trên GitHub để làm nhé.`,link:"https://github.com/26F-Studio/Techmino/blob/main/parts/language/dict_vi.lua",id:"7926bd35ccd93b6debe05dec9893e4b23ad6639c"},{title:"Mục lục",tags:["nhom01","index","mucluc"],category:"help",content:`01. Về Zictionary & Bản dịch game & Mục lục ← bạn đang xem mục này +02. Dự án Techmino: Trang web chính thức, Dự án trên GitHub, Discord +03. Ủng hộ cho tác giả của Techmino +04. Mẹo và lời khuyên: + - Lời khuyên dành cho những người mới tập chơi + - Đề xuất luyện tập, Học làm T-spin, Điều chỉnh DAS + - Bố cục phím, Khả năng xử lý gạch, Các nút xoay + +05. Các yếu tố cần thiết của các game xếp gạch hiện đại: + - Next, Hold, In-place Hold, Swap, Topping out, Vùng đệm, Vùng biến mất + 05A. Gạch: Hình dạng, màu, hướng và tên của gạch + 05B. Hệ thống xoay gạch: ARS, ASC, ASC+, BRS, BiRS, C2RS, C2sym, NRS, SRS, SRS+, TRS, XRS + 05C. Hệ thống điều khiển: IRS, IHS, IMS + 05D. Cách kiểu xáo gạch: Túi 7 gạch, His, EZ-Start, Reverb, C2 + (và vấn đề Drought của một vài kiểu xáo) + + 05E. Thông số + 05E1. Thông số của game: + - Tốc độ rơi, 20G + - ARE, Line ARE, Death ARE + - Lockdown Delay, Spawn & Clear delay + 05E2. Thông số điều khiển: + DAS & ARR, DAS cut, Auto-lock cut, SDF + 05F. Điều khiển + 05F1. Tốc độ: LPM, PPS, BPM, KPM, KPP + 05F2. Kỹ thuật: Hypertapping, Rolling, Finesse + 05F3. Độ trễ đầu vào + 05G. Khả năng tấn công + - APM, SPM, DPM, RPM, ADPM, APL + - Tấn công & Phòng thủ + - Combo, Spike, Debt, Passthrough, Timing + + 05H. Hành động bất cẩn (Mis-): Misdrop, Mishold + 05I. Spin: (Mini) / (All-) / (T-) / (O-) spin; Fin, Neo, Iso; Freestyle + 05J: Kỹ thuật xóa hàng: + - Single, Double, Triple (Xóa 1/2/3 hàng); Techrash; Tetris + - TSS, TSD, TST, MTSS, MTSD + - Perfect Clear, Half Perfect Clear + 05K. Các thuật ngữ khác: sub, 'Doing Research', Bone block + +06. Các game xếp gạch + (Danh sách rất dài, gõ trên thanh tìm kiếm "nhom06" để xem danh sách đầy đủ) + +07. Một vài cơ chế và chế độ của một số game: + - Tàng hình một phần, tàng hình hoàn toàn + - Chế độ MPH, Secert Grade, Deepdrop +08. Bot: Cold Clear, ZZZbot + +09. Wiki; các trang web bày setup & cung cấp câu đố, chia sẻ setup + 09A. Wiki: Huiji Wiki, Wiki Hard Drop, tetris.wiki, Tetris Wiki Fandom + 09B. Bày setup: Four.lol, Tetris Hall, Tetris Template Collections, tetristemplate.info, 4-Wide Trainer + 09C. Chia sẻ câu đố: TTT, TTPC, NAZO, TPO + 09D. Chia sẻ setup: Fumen, Fumen bản Điện thoại +10. Cộng đồng: Tetris Online Servers, Tetris Việt Nam + +11. Xếp lên và đào xuống + 11A. Stacking (Xếp lên): + - Side / Center / Partial well + - Side / Center 1 / 2 / 3 / 4-wide + - Residual + - 6-3 Stacking + 11B. Digging (Đào xuống) + +12. Setup (Opener, Mid-game setup, Donation, Pattern) + 12A. Opener: DT Cannon, DTPC, BT Cannon, BTPC, TKI 3 Perfect Clear, QT Cannon, Mini-Triple, Trinity, Wolfmoon Cannon, Sewer, TKI, God Spin, Albatross, Pelican, Perrfect Clear Opener, Grace System, DPC, Gamushiro Stacking + 12B. Mid-game: C-spin, STSD, Fractal, LST stacking, Imperial Cross, King Crimson, PC liên tiếp (1+2+3) + 12C. Donation: Hamburger, STMB Cave, Kaidan, Shachiku Train, Cut Copy + +13. Cách tính lượng sát thơng gây ra: Tetris Online / Notris Foes, Techmino + +14. Console và chuyện quản lý dữ liệu game + - Console, đặt lại thiết lập, tình trạng mở khóa, bố cục phím + - Xóa toàn bộ thành tích, kỷ lục, bản phát lại, bộ nhớ đệm +15. Các thuật ngữ không liên quan gì tới Tetris (tiếng Anh): SFX, BGM, TAS, AFK`,link:"",id:"e1e6555f9c1e8d8bacbe17f835304e69094cd2f4"},{title:"=[NHÓM 02]=",tags:["nhom02"],category:"",content:"NHÓM 02: DỰ ÁN TECHMINO",link:"",id:"b1179b38381460a357e2aecf7bfc415a46c562b2"},{title:"Website chính thức",tags:["nhom02","websites;","trang","chủ"],category:"org",content:"Trang web chính thức của Techmino!\\nBạn có thể lấy bản mới nhất của Techmino cũng như tạo tài khoản, thay avatar ngay tại đó\\nNhấn vào nút hình địa cầu ở bên phải để mở website trên trình duyệt của bạn.",link:"http://studio26f.org",id:"1886285b352c8f95146cc7d1cc39c16745b501d9"},{title:"Dự án trên GitHub",tags:["nhom02;","mã","nguồn","mở;","github;","repository;","kho","lưu","trữ"],category:"org",content:"Repository chính thức của Techmino trên GitHub. Chúng tôi sẽ rất cảm kích nếu bạn tặng cho chúng tôi một ngôi sao!",link:"https://github.com/26F-Studio/Techmino",id:"cbfde028a744aca323d1a6f5a1d22e0d03784594"},{title:"Discord",tags:["nhom02","máy","chủ","server"],category:"org",content:`Discord của Techmino chính là nơi mà bạn có thể cập nhật mọi thông tin về Techmino, hoặc đơn giản là đến trò chuyện với tất cả mọi người. + +Nhấn nút hình địa cầu để tham gia cùng chúng tôi!`,link:"https://discord.gg/f9pUvkh",id:"44eba79ca0eb70be8f3025972c324915a79262d1"},{title:"=[NHÓM 03]=",tags:["nhom03"],category:"",content:"NHÓM 03: ỦNG HỘ CHO TÁC GIẢ CỦA TECHMINO",link:"",id:"f9120fe0156e312d5b04a822d5f8a4b8a6645dfe"},{title:"=[NHÓM 03]=",tags:["nhom03"],category:"",content:"Nội dung của nhóm này đã bị ẩn đi do yêu cầu của nền tảng. Nhưng bạn vẫn có thể hỏi về nội dung này trong server Discord của chúng tôi.",link:"",id:"f94fd4c6e7abbaa7fd5d0a669df73142ac1eea12"},{title:"Ủng hộ 1",tags:["nhom03;","wechat","alipay"],category:"org",content:'Để ủng hộ cho Techmino thông qua WeChat Pay hoặc Alipay, gõ \\"support\\" ở trong console và quét mã QR.',link:"",id:"40366f34c726520e2baf5cd93b151d6bb43932a5"},{title:"*ĐÃ ẨN*",tags:[],category:"org",content:"",link:"",id:"dd4b934536db95436f5d707915f0aa768497fe4e"},{title:"Ủng hộ 2",tags:["nhom03;","afdian","aidadian"],category:"org",content:"Để ủng hộ cho Techmino qua Aifadian, nhấn vào nút hình địa cầu để mở trang ủng hộ này. Lưu ý là Aifadian sẽ tính thêm 6% phí giao dịch.",link:"https://afdian.net/@MrZ_26",id:"d6498d56c4dbfe91395fd37dd72cc9697120cb3a"},{title:"*ĐÃ ẨN*",tags:[],category:"org",content:"",link:"",id:"dd4b934536db95436f5d707915f0aa768497fe4e"},{title:"Ủng hộ 3",tags:["nhom03;","patreon"],category:"org",content:"Để ủng hộ cho Techmino qua Patreon, hãy nhấn vào nút hình địa cầu để mở trang ủng hộ này. Lưu ý là Patreon có thể tính phí dịch vụ cho bạn đối với các giao dịch trên một số tiền nhất định.",link:"https://www.patreon.com/techmino",id:"da131c1f4ff290137f50655625b909522d6e2e40"},{title:"*ĐÃ ẨN*",tags:[],category:"org",content:"",link:"",id:"dd4b934536db95436f5d707915f0aa768497fe4e"},{title:"=[NHÓM 04]=",tags:["nhom04"],category:"",content:"NHÓM 04: MẸO & LỜI KHUYÊN",link:"",id:"a67510a23a19222238355f523f5655e9e97196f4"},{title:"Mới tập chơi?",tags:["guides","newbie","noob","readme","recommendations","suggestions","helps"],category:"help",content:`Chúng tôi có vài lời khuyên dành cho những người mới chơi xếp gạch: + Hai thứ cơ bản: + 1. Chọn những game xếp gạch chuyên nghiệp có cơ chế điều khiển tốt. Techmino, TETR.IO, Jstris và Tetris Online là một số lựa chọn khá tốt đấy. Đừng chơi những game có đánh giá không tốt bởi vì đa số chúng không đi sát với Guideline, hoặc là có cơ chế điều khiển tệ hại; gây ảnh hưởng xấu trong quá trình luyện tập. + 2. Dành thời gian để học các kỹ năng cơ bản đã. Cố gắng dành nhiều thời gian hơn cho các kỹ năng như đọc hàng NEXT hoặc có thể xóa Tetris một cách ổn định. Làm chủ các phần cơ bản trước khi nghĩ tới những kỹ năng nâng cao hơn như T-spin. + Ba kỹ năng cần có: + 1. Nhớ các vị trí xuất hiện của gạch. + 2. Nhớ các chuỗi thao tác để di chuyển gạch đến vị trí mong muốn. + 3. Suy nghĩ trước về vị trí đặt viên gạch sắp tới. + +Bạn có thể nhấn nút Mở link để mở bài "Suggestion for new players to Tetris Online", viết bởi Tatianyi - một người chơi xếp gạch ở Trung Quốc (dịch sang tiếng Anh bởi User670).`,link:"https://github.com/user670/temp/blob/master/tips_to_those_new_to_top.md",id:"b7742ebf044060cf4022bdc27cd05eae335f4eb3"},{title:"Đề xuất luyện tập",tags:["nhom04","readme","noob","new","guides","recommendations","suggestions","helps;","đề","xuất","luyện","tập;","người","mới","chơi;","hướng","dẫn;","lời","khuyên;","gợi","ý"],category:"help",content:`Lời khuyên khi tập chơi: +Sau đây là vài lời khuyên của chúng tôi để cải thiện kỹ năng chơi của bạn. Bạn cũng đừng ngại nghỉ ngơi và dành nhiều thời gian hơn để chơi những chế độ bạn thích nếu bạn cảm thấy mệt mỏi. Chúc bạn thành công! + +Những lời khuyên này đã được sắp xếp thành nhóm với độ khó tăng dần. Tuy vậy, chúng tôi khuyên bạn hãy làm cả 3 cùng lúc thay vì từng cái một (A → B → C) + +A. Stacking (Xếp gạch) + A1. Suy nghĩ kỹ trước khi đặt gạch. Chưa vừa ý? Suy nghĩ thêm lần nữa. + A2. Xếp gạch càng phẳng càng tốt để bạn có thể ra quyết định đặt gạch dễ dàng hơn. + A3. Lên kế hoạch trước cách xếp, hãy tận dụng tối đa NEXT và HOLD để giữ được thế đẹp. + +B. Efficiency & Speed (Hiệu quả & Tốc độ) + B1. Đừng dựa vào bóng gạch quá nhiều! Nên tập trung vào việc suy nghĩ vị trí tốt nhất cho gạch đó. + B2. Nên sử dụng 2 (hoặc 3, tùy game) phím xoay thay vì nhấn 1 phím xoay liên tục trong thời gian dài. + B3. Đừng lo lắng về tốc độ khi bạn mới tập chơi Finesse. Bạn có thể bắt đầu học bằng cách chơi chậm, rồi từ từ bạn có thể tập chơi nhanh hơn khi đã quen tay - việc này không khó đâu! + +C. Practice (Luyện tập): + Cố gắng hoàn thành các chế độ sau + C1. "40 hàng". + C2. "40 hàng" mà không dùng HOLD. + C3. "40 hàng" mà chỉ được làm Techrash. + C4. "40 hàng" mà chỉ được làm Techrash và không được dùng HOLD. + +Mẹo: Bạn có thể điều chỉnh độ khó nhóm C tùy vào khả năng của bạn. + +Sau khi xong nhóm C, hãy luyện tập tiếp nhóm A, đây là kỹ năng RẤT quan trọng trong bất kỳ game xếp gạch nào. Sau khi làm chủ được kỹ năng đọc NEXT thì bạn dễ dàng thành thạo các thứ khác.`,link:"",id:"1504750dbb0e6d16e1ae6afd24c8bea17f0aac05"},{title:"Học làm T-spin",tags:["nhom04","tspin;","học;","hướng","dẫn;","mẹo;","lời","khuyên;","đề","xuất"],category:"help",content:`T-spin là một kỹ năng khá khó, không tài nào thành thạo nổi nếu chỉ có nhìn vào địa hình nơi làm T-spin. Bạn cần phải có kỹ năng đọc NEXT và lên kế hoạch tốt để có thể làm T-spin + +Lời khuyên của chúng tôi, bạn nên bắt đầu học làm T-spin khi bạn có thể: + - Xoá 40 hàng trong vòng 60 giây (tùy vào khả năng cá nhân con số này sẽ khác) + - Xóa 40 hàng chỉ dùng Tetris + - Xóa 40 hàng chỉ dùng Tetris + không HOLD mà không bị mất tốc độ quá nhiều + +Những chế độ này sẽ giúp bạn củng cố kỹ năng đọc NEXT và lên kế hoạch.`,link:"",id:"5e6f167a1c05c7e380f1d79c0213316986a72e7d"},{title:"Điều chỉnh DAS",tags:["nhom04","das","tuning"],category:"help",content:"Với những người chơi đã có kinh nghiệm mà muốn chơi nhanh hơn, khuyên dùng DAS 4-6f (67-100 ms) và ARR 0f (các viên gạch sẽ ngay lập tức dính vào tường khi DAS kết thúc).\\n\\nNếu bạn thấy khó điều khiển, hãy thử tăng DAS lên 1-2f, nhưng giữ ARR bé hơn 2f (33 ms).\\n\\nTóm lại, DAS nên để thấp nhất có thể nhưng vẫn phải đảm bảo được game có thể phân biệt được bạn đang nhấn hay giữ phím trong khi ARR để ở mức thấp nhất có thể.",link:"",id:"1d313f9b7b750999ce724488d61eac2967fd5551"},{title:"Bố cục phím",tags:["nhom04","feel"],category:"help",content:`Dưới đây là vài lời khuyên hữu ích khi bạn đang chỉnh sửa bố cục phím + +1. Một ngón tay chỉ nên thực hiện một chức năng duy nhất. Ví dụ như: một ngón cho sang trái, một ngón cho sang phải, một ngón cho rơi mạnh, …; và gán một ngón tay cho cả phím xoay trái và xoay phải (vì không ai xoay cả hai phía cùng một lúc cả) + +2. Trừ khi bạn tự tin với ngón út của mình, thì không nên để ngón tay này làm bất kì việc nào hết! (Vì chúng rất kém linh hoạt). Lời khuyên: nên xài ngón trỏ và ngón giữa vì hai ngón này là nhanh nhẹn nhất, nhưng bạn cũng có thể thoải mái tìm hiểu xem các ngón tay của mình nhanh chậm thế nào, mạnh yếu ra sao. + +3. Không nhất thiết phải sao chép bố cục phím của người khác, vì không ai giống ai. Bố cục phím thường không ảnh huởng quá nhiều đến kỹ năng của bạn nếu bạn đã tuân theo quy tắc 1 và 2.`,link:"",id:"485e0b794b2fb31f381aed4ad96f46f44df1b5bd"},{title:"Khả năng xử lý gạch",tags:["nhom04","feel","handling"],category:"help",content:`Những yếu tố sau có thể ảnh hưởng tới việc xử lý gạch của bạn: + +1. Độ trễ đầu vào, có thể là do cấu hình, thông số hoặc tình trạng của thiết bị. Khởi động lại trò chơi; bảo dưỡng, sửa chữa thiết bị của bạn hoặc đổi sang thiết bị mới có thể khắc phục vấn đề này. +2. Độ ổn định của game, phụ thuộc vào cách thiết kế và cách lập trình của game. Có thể cải thiện tình trạng này bằng cách tắt hiệu ứng hình ảnh hoặc để chất lượng đồ họa ở mức thấp. +3. Thiết kế có chủ đích trong game. +4. Thông số điều khiển gạch chưa hợp lí (ví dụ: DAS, ARR, SDARR,…). Thay đổi các cài đặt này có thể giúp bạn. +5. Tư thế chơi không hợp lý. Hãy thử tìm tư thế chơi thoải mái nhất có thể. +6. Thao tác không quen sau khi đổi bố cục phím hoặc thiết bị. Tập làm quen với chúng hoặc thay đổi cài đặt phím. +7. Mỏi cơ, chuột rút,… làm cho việc phản ứng và phối hợp tay khó khăn hơn. Hãy nghỉ ngơi và trở lại sau một vài ngày.`,link:"",id:"2b7e8773e5693b33e04c4b38d8901c0e47bf7c4a"},{title:"Các nút xoay",tags:["nhom04","doublerotation","phím","xoay"],category:"help",content:"Dùng cả nút xoay trái và phải sẽ giảm số lần nhấn nút, vì xoay một hướng ba lần thì cũng tương tự xoay một lần hướng ngược lại.\\nĐây cũng là một thứ cần phải lưu ý nếu bạn muốn thành thạo Finesse.\\n\\nNếu bạn dùng thêm nút xoay 180°, bạn có thể xoay tới bất kì hướng nào chỉ với 1 lần nhấn phím (nếu không xét spin).\\n\\nTuy nhiên, chúng tôi không khuyến khích dùng 180° vì không phải game nào cũng hỗ trợ xoay 180°, và sự khác biệt về tốc độ giữa việc dùng hai nút và ba nút là không quá đáng kể.\\nBạn có thể bỏ qua kỹ thuật này trừ khi bạn muốn chơi nhanh hơn chớp.",link:"",id:"ed4c4d951cf06b326be9b00c9a3c6afe33064674"},{title:"=[NHÓM 05]=",tags:["nhom05"],category:"",content:`NHÓM 05: CÁC YẾU TỐ CẦN THIẾT CỦA CÁC GAME XẾP GẠCH HIỆN ĐẠI + +Khái niệm về trò chơi Tetris hay trò chơi xếp gạch "hiện đại" khá là mờ nhạt. +Nói chung, một game xếp gạch hiện đại thường sẽ bám sát theo Tetris Design Guideline (Bộ nguyên tắc thiết kế cho một game Tetris). Game nào thỏa mãn đa số các tiêu chí dưới đây có thể được coi là game xếp gạch hiện đại. + + 1. Phần có thể nhìn thấy được của bảng có kích thước 10 cột × 20 hàng, cùng với 2 - 3 hàng ẩn ở trên cùng. (Kích thước bảng thực tế ở trong mã nguồn game thường cố định ở 10 cột × 40 hàng). + 2. Gạch mới xuất hiện ở giữa trên cùng của vùng có thể nhìn thấy (thường là ở hàng 21-22). Mỗi gạch đều có màu sắc và hướng xuất hiện mặc định riêng. Với những gạch có chiều dài lẻ có thể lệch sang trái hoặc phải 1 ô. + 3. Có một bộ xáo gạch như 7-Bag hay His được thiết kế để giảm hoặc tránh tình trạng Flood hay Drought. + 4. Có một hệ thống xoay, và cho phép xoay theo ít nhất 2 hướng. Ưu tiên hệ thống xoay SRS hoặc các biến thể tương tự. + 5. Có hệ thống chờ khóa gạch thích hợp. + 6. Có cơ chế top-out thích hợp. + 7. Có hàng NEXT hiện từ 3 - 6 gạch sắp rơi (vẫn chấp nhận trường hợp chỉ hiện 1 gạch) và những gạch trong cột này phải giống tư thế khi chúng vừa mới xuất hiện trong bảng. + 8. Cho phép giữ gạch. + 9. Nếu có hệ thống chờ tạo gạch hoặc hệ thống chờ xóa hàng, game thường sẽ có hệ thống IRS và IHS. Techmino còn có cả hệ thống IMS nữa (tìm trong Zictionary để biết thêm). + 10. Có hệ thống DAS nhằm hỗ trợ các chuyển động ngang một cách chính xác và nhanh chóng.`,link:"",id:"01daf132f6678ee9a119e1b48206d2d340363b1a"},{title:"Next (Kế / Tiếp)",tags:["nhom05","preview"],category:"term",content:"Là một hàng dùng để hiện chuỗi gạch sẽ lần lượt xuất hiện. Có một kỹ năng cần thiết đó là lên kế hoạch trước cách đặt các gạch từ hàng NEXT. Số lượng gạch bạn muốn lên kế hoạch là tùy thuộc vào bạn và có thể thay đổi tùy theo chế độ chơi và tình trạng bảng chơi hiện tại của bạn.",link:"",id:"8a234ed90bab0149fbee6d0c0473ae7788009a43"},{title:"Hold (Giữ/Trữ/Cất)",tags:["nhom05"],category:"term",content:"Một chức năng cho phép bạn sử dụng gạch ở trong ô HOLD\\n(hoặc gạch đầu tiên ở hàng NEXT nếu bạn chưa cất gạch trước đó)\\nvà cất gạch đang rơi vào ô HOLD \\n\\nBình thường, Hold chỉ có thể được sử dụng 1 lần cho mỗi gạch.\\n\\nTrên thực tế, việc dùng Hold hay không cũng có ưu nhược của nó.\\nNếu không dùng Hold:\\n\\t- Có thể giảm áp lực cho người chơi khi điều khiển gạch.\\n\\t- Đồng thời có thể giảm số phím cần nhấn trong game → có thể tăng KPS lên.\\nTrên thực tế, đã có nhiều kỷ lục 40L được xác lập mà không cần Hold.\\n\\nNếu dùng Hold:\\n\\t- Hold có thể có ích trong nhiều trường hợp khác nhau (ví dụ như khi đang chơi ở tốc độ rơi cao).\\n\\t- Cho phép người chơi có thể làm được nhiều setup phức tạp hơn mà không đẩy thêm áp lực cho người chơi.",link:"",id:"d02efd3956a794d061b7456ec7b52059419cb9dd"},{title:"Hold tại chỗ",tags:["nhom05","physicalhold","physics","inplacehold"],category:"term",content:'*Chỉ có trên Techmino*\\n\\"Giữ ngay tại chỗ\\".\\n\\nMột kiểu Hold đặc biệt cho phép gạch được lấy ra từ HOLD sẽ xuất hiện ngay tại vị trí mà gạch hiện tại đang rơi (khác với Hold thông thường khi mà gạch sẽ xuất hiện ở trên cùng của bảng).\\nBạn có thể bật chức năng này trong Chế độ tự do.\\n\\nFun fact: người Trung gọi cái này là \\"Physical Hold\\',link:"",id:"e071629204bf27b88454c7e01e0e7aea7cca4695"},{title:"Swap (Chuyển)",tags:["nhom05","hold"],category:"term",content:'Một biến thể khác của \\"Hold\\". Swap sẽ đổi gạch đang rơi với gạch tiếp theo trong NEXT. Bạn có thể bật chức năng này trong Chế độ tự do.',link:"",id:"938e3ce3a64c332521abe9ffa0564560a5c15b70"},{title:"Topping out",tags:["nhom05","topout","toppingout","game","over"],category:"term",content:`Một tựa game xếp gạch hiện đại thường có 3 điều kiện để "game over": + +1. Block out: Gạch mới nằm chồng lên một gạch đã đặt. +2. Lock out: Có gạch nằm hoàn toàn ở phía trên vùng nhìn thấy. +3. Top out: Độ cao của bảng vượt quá độ cao cho phép (thường là 40 hàng). Cái này đa số là do hàng rác đẩy bảng lên quá cao. + +Techmino mặc định sẽ không kiểm tra điều kiện Lock out và Top out.`,link:"",id:"6c1fca413e0706dc25db9292fbbda6d51413583a"},{title:"Vùng đệm",tags:["nhom05","invisible","buffer","zone"],category:"term",content:'Tên tiếng Anh là \\"Buffer Zone\\". Chỉ bao gồm các hàng từ hàng 21-40 (nằm ở phía trên vùng nhìn thấy).\\n\\nTồn tại vùng này là vì sẽ có trường hợp hàng rác sẽ đẩy gạch trong bảng ra khỏi vùng nhìn thấy (dễ thấy nhất là Center 4-Wide).\\nNhững ô gạch nào đi ra khỏi vùng nhìn thấy được sẽ đi vào vùng đệm và sẽ xuất hiện lại trong vùng nhìn thấy nếu bạn đã xóa đủ hàng.\\n\\nVùng đệm thường cao 20 ô (thường là do bảng đã bị cố định kích thước ở trong các dòng code), nhưng có game có vùng này cao vô hạn (ví dụ như trong chính Techmino luôn, khi bảng có thể mở rộng kích thước của nó).\\n\\nCác bạn có thể tìm hiểu thêm ở mục \\"Vùng biến mất\\".',link:"",id:"febbe1fe4095417e59d6904c88ca5bf55e9bce4f"},{title:"Vùng biến mất",tags:["nhom05","gone","vanish","zone"],category:"term",content:`Tên tiếng Anh: "Vanish Zone". Là vùng bao gồm các hàng nằm ở trên "Vùng đệm", thường bắt đầu từ hàng 40 trở lên. + +Bình thường, nếu có ô gạch nào ở trong vùng này thì game sẽ kích hoạt ngay cơ chế top-out. +Tuy nhiên, mỗi game sẽ có cách xử lý khác nhau. Ví dụ: + - Jstris: Vùng biến mất nằm ở hàng 22 trở lên, những ô gạch nào nằm trong vùng này sẽ biến mất hoàn toàn. + - Tetris Online: Game sập. + - Puyo Puyo Tetris: Các ô gạch ở vùng biến mất sẽ sao chép lại vô số lần khi chúng quay về lại vùng nhìn thấy (nhấn vào hình địa cầu để xem ví dụ của trường hợp này).`,link:"https://youtu.be/z4WtWISkrdU",id:"0cf84e1cb6e4ab493b1b0ef98b309b5aca10d57c"},{title:">A|Gạch",tags:["nhom05a"],category:"",content:"Bạn có biết?\\nGame này hỗ trợ và cho phép bạn chơi với 29 loại gạch khác nhau\\n\\n1 Mino | 1 Domino | 2 Trimino | 7 Tetromino | 18 Pentomino\\n\\nMino: gạch 1 ô\\nDomino: gạch 2 ô\\nTrimino: gạch 3 ô\\nTetromino: gạch 4 ô\\nPentomino: gạch 5 ô\\n\\nTechmino có Hexomino (gạch 5 ô) không?\\nBây giờ thì chưa nhưng tương lai thì có thể có.",link:"",id:"a36def6b8a1abb8fe8e02ac107edbc4685d38e0e"},{title:"Hình dạng",tags:["nhom05a","hình","dáng`tetromino","tetramino","tetrimino"],category:"term",content:'Trong đa số các game xếp gạch, tất cả gạch đều là Tetromino\\n\\nCó 7 loại Tetromino, nếu cho phép xoay nhưng không lật ngang hay dọc, gồm: Z, S, J, L, T, O, và I.\\nHãy xem mục \\"Tên\\" (Nhóm 05A) để có thêm thông tin.',link:"",id:"f07215fbff68eefeeb0bfdf906273a092cf669f5"},{title:"Màu",tags:["nhom05a","màu`tetromino","tetramino","tetrimino"],category:"term",content:"Nhiều game xếp gạch hiện đại, từ chính thức tới fan-made, đã và đang sử dụng cùng một bảng màu duy nhất cho Tetromino.\\n\\nNhững màu này bao gồm:\\n\\tZ - Đỏ \\n\\tS - Xanh lá \\n\\tJ - Xanh dương \\n\\tL - Cam \\n\\tT - Tím \\n\\tO - Vàng \\n\\tI - Xanh lơ\\n\\nTechmino cũng sử dụng bảng màu này để tô màu cho Tetromino.",link:"",id:"bf5bab1a1b98bb38f044caf1ffae956dbe1fceaf"},{title:"Tên",tags:["nhom05a","mino","tên","gạch`tetromino","tetramino","tetrimino"],category:"term",content:"Đây là danh sách gạch mà Techmino sử dụng\\n(cùng với tên tương ứng của chúng):\\n\\nTetromino:\\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\\nPentomino:\\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\\nTrimino, Domino và Mino:\\nI3:`CHAR.mino.I3`, C:`CHAR.mino.C`, I2:`CHAR.mino.I2`, O1:`CHAR.mino.O1.",link:"",id:"0808a868fc252ddfa6f26eff789ead614bcf5898"},{title:"Hướng",tags:["nhom05a","0r2l","02","20","rl","lr`tetromino","tetramino","tetrimino"],category:"term",content:`Trong hệ thống xoay SRS và các biến thể của SRS, nhiều người sử dụng một hệ thống số và chữ cái để mô tả hướng của gạch: + 0: Hướng mặc định của hệ thống xoay + R: Xoay phải, góc 90° theo chiều kim đồng hồ + L: Xoay trái, góc 90° theo ngược chiều kim đồng hồ + 2: Xoay 2 lần, góc 180° theo bất kì chiều nào. + +Hệ thống mô tả cách xoay như sau: + - 0 → L nghĩa là xoay gạch ngược chiều kim đồng hồ, từ hướng ban đầu (0) sang hướng bên trái (L) + - 0 → R nghĩa là xoay gạch theo chiều kim đồng hồ, từ hướng ban đầu (0) sang hướng bên phải (R) + - 2 → R nghĩa là xoay gạch theo chiều kim đồng hồ, từ hướng 180° (2) sang hướng bên phải (R).`,link:"",id:"b374ee5e09a4efbcf62aa46c8313024bc6ed5da4"},{title:">B|Hệ thống xoay",tags:["nhom05b"],category:"",content:`Một hệ thống để xác định cách gạch xoay. + +Ở các trò xếp gạch hiện đại, mỗi gạch có thể xoay dựa trên một tâm xoay cố định (vài game có thể không có cái này). +Nếu gạch sau khi xoay đè lên gạch khác / ra ngoài bảng, hệ thống sẽ thử "wall-kicking" (đẩy gạch sang các vị trí xung quanh). +Tuy nhiên, nếu khoảng cách quá lớn thì hệ thống xoay không thể đá gạch được + +Wall-kick cho phép gạch có thể đến những lỗ có hình dạng nào đó mà bình thường không thể tiếp cận được. Các vị trí mà gạch hệ thống xoay có thể thử được chứa trong một bảng gọi là "wall-kick table".`,link:"",id:"819ba648b62293d1dcc6001f45c2a60e90526a84"},{title:"ARS",tags:["nhom05b","arikrotationsystem","atarirotationsystem"],category:"term",content:"Có thể chỉ 1 trong 2 hệ thống sau:\\nArika Rotation System (Hệ thống xoay Arika): hệ thống xoay được dùng trong series game Tetris: The Grand Master.\\nAtari Rotation System (Hệ thống xoay Atari), hệ thống xoay luôn căn chỉnh các gạch ở trên cùng bên trái khi xoay.",link:"",id:"98ecc8f91fe7345e60f53ff4764b01daa1ec19b2"},{title:"ASC",tags:["nhom05b","ascension"],category:"term",content:"Hệ thống xoay được dùng trong Ascension (tên viết tắt cũng là ASC) - một bản clone của Tetris. Tất cả các gạch đều sử dụng chung hai bảng wall-kick đối xứng với nhau cho 2 hướng xoay và vùng đá phải nằm trong khoảng cách 2 ô ở tất cả 4 hướng.",link:"",id:"38975a865589d4c9f5039f1e827b0ed0ac5e7183"},{title:"ASC+",tags:["nhom05b","ascension","ascplus"],category:"term",content:"Một phiên bản được chỉnh sửa của ASC trong Techmino để hỗ trợ wall-kick khi xoay 180°.",link:"",id:"7dd7a5f78429bdb1e0bd250f4e2ad8f7adcd7774"},{title:"BPS",tags:["nhom05b","bulletproofsoftware"],category:"term",content:"BPS rotation system | Hệ thống xoay BPS\\nĐược dùng trong các game Tetris được viết bởi Bullet-Proof Software.",link:"",id:"00e339b72578fec63f997fb304cac9886f972083"},{title:"BiRS",tags:["nhom05b","biasrs","biasrotationsystem"],category:"term",content:`Bias Rotation System | Hệ thống xoay Bias. +*Chỉ có trên Techmino* + +Một hệ thống xoay dựa trên SRS và XRS + +Để kích hoạt offset bổ sung trong BiRS, cần phải thỏa hai điều kiện sau cùng lúc: +1. Một nút di chuyển (Trái / Phải / Thả nhẹ) phải được giữ +2. Gạch hiện tại phải chạm một ô gạch bất kỳ hoặc chạm tường ở hướng đang được giữ ở bước 1 + +Nếu thực hiện thành công, offset ở hướng đang được giữ ở bước 1 sẽ được thêm 1 ô. Tuy nhiên, để kick được thì cần phải tuân thêm hai điều kiện: + +1. Khoảng cách Euclide từ tâm tới vị trí đá tới được chọn phải bé hơn √5 +2. Hướng của cú đá không phải là hướng đối diện với hướng đã được xác định bằng phím bấm. + +Nếu không dùng kick đó được, offset trái phải sẽ bị hủy và thử lại, nếu không được nữa thì hủy luôn offset dưới. + +So với XRS, BiRS dễ nhớ hơn vì chỉ dùng một bảng wall-kick; nhưng vẫn giữ được khả năng vượt địa hình của SRS.`,link:"",id:"8d475ec12766385240234b0522833caf465ae0b5"},{title:"C2RS",tags:["nhom05b","c2rs","cultris2"],category:"term",content:"Cultris II rotation system | Hệ thống xoay Cultris II\\n\\nMột hệ thống xoay ở trong Cultris II - một bản clone của Tetris.\\nToàn bộ gạch và cả hướng xoay đều sử dụng chung một bảng wall-kick (trái 1, phải 1, dưới 1, dưới trái 1, dưới phải 1, trái 2 và phải 2) và phía bên trái được ưu tiên hơn so với bên phải.\\n\\nTrong Techmino có một bản chỉnh sửa của hệ thống này, đó là C2sym.",link:"",id:"6c60d2cdda7d3c08f9c6f9d92dfca2bb9b20e22d"},{title:"C2sym",tags:["nhom05b","cultris2"],category:"term",content:"Một bản chỉnh sửa của C2RS trong Techmino. Hệ thống sẽ ưu tiên hướng trái hoặc phải tùy vào hình dạng của các viên gạch khác nhau.",link:"",id:"4c5ae6a71c25388d1ed0fdeb74ac9d13738ade68"},{title:"DRS",tags:["nhom05b","dtetrotationsystem"],category:"term",content:"DTET Rotation System | Hệ thống xoay DTET\\nHệ thống xoay trong DTET.",link:"",id:"d8d40a4a8b77492da839f3ee647026de2721ecc6"},{title:"NRS",tags:["nhom05b","nintendorotationsystem"],category:"term",content:"Nintendo Rotation System | Hệ thống xoay Nintendo\\n\\nHệ thống được sử dụng trong các game Tetris cho hai hệ máy Nintendo Entertainment System (NES) và Game Boy.\\nHệ thống xoay này có hai phiên bản ngược chiều nhau. Trên Game Boy thì gạch sẽ căn về phía bên trái, còn NES thì gạch sẽ căn về phía bên phải.",link:"",id:"cd91f84e27c1c96a586b2fc5345d494597a6b9e4"},{title:"SRS",tags:["nhom05b","superrotationsystem"],category:"term",content:"Super Rotation System | Hệ thống xoay Siêu Cấp\\n\\nHệ thống xoay này được sử dụng rất nhiều trong các game xếp gạch hiện đại và có rất nhiều hệ thống xoay do fan làm ra cũng dựa vào hệ thống này.\\nCó tất cả 8 bảng wall-kick trong SRS, tương ứng với hai hướng xoay cho tất cả bốn tư thế của tất cả các gạch (không có trường hợp cho 180°). Nếu gạch đụng tường, đụng đáy, hay đè lên gạch khác sau khi xoay, hệ thống sẽ kiểm tra các vị trí xung quanh. Bạn có thể xem đầy đủ các bảng wall-kick của SRS trên Tetris Wiki.",link:"",id:"6325859edf8f0316beb976c251e3739320ba9081"},{title:"SRS+",tags:["nhom05b","srsplus","superrotationsystemplus"],category:"term",content:"Một biến thể của SRS để thêm hỗ trợ wall-kick khi xoay 180°.",link:"",id:"e3b3a98396f109df26f4d44777870a9989a74866"},{title:"TRS",tags:["nhom05b","techminorotationsystem"],category:"term",content:'Techmino Rotation System | Hệ thống xoay Techmino\\n*Chỉ có trên Techmino*\\n\\nMột hệ thống xoay dựa trên SRS.\\nHệ thống này khắc phục được hiện tượng gạch S / Z bị kẹt trong một số trường hợp.\\n\\nHơn nữa, TRS có thêm các bảng wall-kick dành cho Pentomino dựa trên logic của SRS với Tetromino.\\n\\nHệ thống cũng hỗ trợ O-Spin, cho phép gạch O có thể đá hoặc \\"biến hình\\".',link:"",id:"4b869ed5e64eed946f0d8d4ee3ff53da60539f0b"},{title:"XRS",tags:["nhom05b","xrs"],category:"term",content:"X rotation system | Hệ thống xoay X, một hệ thống xoay trong T-ex.\\n\\nỞ trong các hệ thống khác, bảng wall-kick là cố định, nên gạch chỉ có thể bị đá ra một hướng (và hướng đó có thể không phải là hướng mà người chơi muốn). XRS giải quyết vấn đề nan giải này bằng cách cho phép người chơi giữ phím di chuyển (Trái / Phải / Thả nhẹ) để hệ thống ưu tiên theo hướng đó. Điều đó làm cho việc điều khiển hướng đi của gạch sau khi wall-kick của người chơi dễ dàng hơn.",link:"",id:"8313913e9f2100a15d29fc661f0bf3e043c2ac35"},{title:">C|Hệ thg đ.khiển",tags:["nhom05c"],category:"",content:"NHÓM 5C: HỆ THỐNG ĐIỀU KHIỂN",link:"",id:"d2f6a01e025c3491115f573968646a84f36d4e7e"},{title:"IRS",tags:["nhom05c","initialrotationsystem"],category:"term",content:"Initial Rotation System\\nCho phép bạn giữ phím xoay trong lúc chờ tạo gạch (spawn delay) để gạch được xoay sẵn lúc xuất hiện. Việc này có thể giúp bạn thoát chết trong một vài tình huống.",link:"",id:"6eb922490b4344c5aa99427d8d17aca5790e5b82"},{title:"IHS",tags:["nhom05c","initialholdsystem"],category:"term",content:"Initial Hold System\\nCho phép bạn giữ phím Hold trong lúc chờ tạo gạch (spawn delay) để thay gạch sắp tới bằng gạch trong HOLD. Việc này có thể giúp bạn thoát chết trong một vài tình huống.",link:"",id:"2651cd73fca2dd2cf48f14dd9a01b7c3e14a0e77"},{title:"IMS",tags:["nhom05c","initialmovesystem"],category:"term",content:'Initial Movement System\\n*Chỉ có trên Techmino*\\n\\nCho phép bạn giữ một phím di chuyển trái phải trong lúc chờ tạo gạch (spawn delay) để gạch xuất hiện cách chỗ ban đầu 1 ô theo hướng được giữ. Việc này có thể giúp bạn thoát chết trong một vài tình huống.\\nLưu ý: DAS buộc phải được \\"nạp đầy\\" trước khi gạch xuất hiện.',link:"",id:"737e54d1f4d8cba7da621c8b9fb8d295ac1592d2"},{title:">D|Các kiểu xáo",tags:["nhom05d"],category:"",content:"",link:"",id:"b2bc4b4f7d39aa5c345be88a8556a4a9be3aa36a"},{title:"Túi 7",tags:["nhom05d","bag7","randomgenerator","túi","7","gạch;","kiểu","xáo","túi","7","gạch"],category:"term",content:'Tên gọi chính thức là \\"Random Generator\\" (Trình xáo gạch ngẫu nhiên) hay \\"7-Bag Generator\\" (Kiểu xáo Túi 7 gạch).\\nĐây là kiểu xáo hay được sử dụng bởi đa số các xếp gạch hiện đại.\\n\\nChuỗi gạch sẽ được chia thành các nhóm (túi). Mỗi túi gạch đều có dủ 7 Tetromino nhưng trình tự thì ngẫu nhiên.\\nMột vài ví dụ về chuỗi gạch: ZSJLTOI, OTSLZIJ, LTISZOJ.\\n\\nKiểu xáo này cho phép ngăn chặn tình trạng sự xuất hiện không đồng đều của các viên gạch.',link:"",id:"3b4c086a01c9e03a74b44c6cc095c55240b3b5db"},{title:"His",tags:["nhom05d","historygenerator","hisgenerator"],category:"term",content:`Một kiểu xáo gạch được sử dụng nhiều trong series game Tetris: The Grand Master. + +Trong kiểu xáo này, cách chọn gạch diễn ra như nhau: + - Bước 1: Chọn ngẫu nhiên một trong bảy Tetromino. + - Bước 2: Kiểm tra xem liệu gạch đã bốc trúng có phải là một trong những gạch đã xuất hiện gần nhất không. + : Tới Bước 3 + : Nhảy tới Bước 4 + - Bước 3: Cộng 1 vào số lần đã bốc lại, kiểm tra xem liệu số lần đã bốc lại có vượt qua giới hạn tối đa hay không? + : Tới Bước 4 + : Nhảy về Bước 1 + - Bước 4: Dùng gạch đã bốc trúng + +Kiểu xáo này hay được mô tả bằng "His [A] Roll [B]" +Trong đó: + - Nhớ A gạch đã xuất hiện gần nhất. + - Chỉ có thể bốc lại tối đa B lần. +Ví dụ: His4 Roll6 + - Nhớ 4 gạch xuất hiện gần nhất. + - Chỉ có thể bốc lại tối đa 6 lần. + +Trong Techmino, số lần bốc lại gạch bằng một nửa số gạch đã kiểm tra của kiểu/hệ thống xáo. + +Kiểu xáo His là phiên bản cải tiến so với kiểu xáo ngẫu nhiên đơn giản và giảm tình trạng chuỗi S và Z liên tục.`,link:"",id:"b2535f013370b62d60bca9036014dec7129b43f7"},{title:"HisPool [1/2]",tags:["nhom05d","hispool","historypoolgenerator","kiểu","xáo","hispool"],category:"term",content:'Một biến thể của kiểu xáo gạch His.\\n\\nĐi kèm với cơ chế \\"Pool\\" (Rổ) dựa trên những gạch đã xuất hiện gằn nhất,cho phép gạch chưa được xuất hiện quá lâu có cơ hội xuất hiện cao hơn.\\n\\nKiểu xáo này giúp ổn định chuỗi gạch và đảm bảo rằng flood & drought không xảy ra quá lâu.\\n\\nĐộ ổn định của kiểu xáo này tùy thuộc vào chuỗi gạch gần nhất và túi gạch.',link:"",id:"cbc16ce2bca92a2920d40e6f441f33ee8e69a685"},{title:"HisPool [2/2]",tags:["nhom05d","hispool","historypoolgenerator","kiểu","xáo","hispool"],category:"term",content:`[Sea: Phần này không có trong Zictionary ngôn ngữ khác!] +Cách hoạt động của kiểu xáo HisPool diễn ra tuần tự như sau: + +Bước 1: Lấy một viên gạch ngẫu nhiên trong cái Rổ. + - Kiểm tra xem gạch vừa bốc có nằm trong số gạch đã chọn hay không? + : Chọn gạch vừa bốc và tới bước 2 + : Lặp lại bước 1 cho tới khi thỏa một trong hai điều kiện sau: + -- Gạch vừa bốc không nằm trong số gạch đã chọn gần nhất. + -- Hết lượt bốc lại + Sau khi hết lặp, chọn gạch được bốc trúng gần nhất. + +Bước 2: Gạch được bốc trúng sẽ được lấy ra khỏi Rổ. + - Với mỗi gạch còn lại, cộng 1 vào số lần chưa bốc trúng. + - Rổ lúc này còn 34 gạch. + +Bước 3: Thêm gạch có số lần chưa bốc trúng nhiều nhất vào lại rổ (để đảm bảo số lượng là 35 gạch), và đặt lại số lần chưa bốc trúng của nó về 0 + +Bước 4: Thêm gạch đã chọn vào chuỗi NEXT cũng như chuỗi gạch đã chọn gần nhất, rồi quay về Bước 1.`,link:"",id:"f98f66575271a2989f97a33b77f47af0d909864e"},{title:"bagES",tags:["nhom05d","bages","easy","start","khởi","đầu","suôn","sẻ;","kiểu","xáo","ez-start;","kiểu","xáo","ezstart"],category:"term",content:"*Chỉ có trên Techmino*\\nTên khác: EZ-Start generator (Khởi đầu suôn sẻ)\\n\\nMột biến thể của kiểu xáo Túi. Gạch đầu tiên của mỗi túi sẽ không bao giờ là gạch khó đặt: S / Z / O / S5 / Z5 / F / E / W / X / N / H.",link:"",id:"937f6f594fcecb9a3a8197474434027026e3a99f"},{title:"Reverb",tags:["nhom05d","kiểu","xáo","reverb"],category:"term",content:"*Chỉ có trên Techmino*\\nMột biến thể của kiểu xáo Túi. \\n\\nKiểu xáo Reverb sẽ lặp ngẫu nhiên một vài gạch từ kiểu xáo Túi. Xác suất lặp lại gạch giảm nếu gạch đã xuất hiện và ngược lại\\nSố lần lặp lại trên lý thuyết nằm từ 0 tới 6",link:"",id:"0ae080977469261426fbace816ec510381ac6b52"},{title:"C2",tags:["nhom05d","cultris2generator","cultrisiigenerator","c2generator"],category:"term",content:'Đây là kiểu xáo được dùng trong Cultris II với cách hoạt động như sau:\\n\\nBước 1. Ban đầu toàn bộ Tetromino sẽ có trọng số (\\"weight\\") là 0.\\n\\nBước 2. Cứ sau mỗi lần xáo gạch, toàn bộ trọng số của các gạch sẽ bị chia hết cho 2, và được cộng một số thực ngẫu nhiên từ 0 tới 1.\\n\\nBước 3. Gạch có trọng số cao nhất, và sau đó trọng số của nó sẽ bị chia cho 3.5.\\n\\nBước 4: Về Bước 2 và tiếp tục lặp lại',link:"",id:"f09f1cf6b521d304e32fd5a82ef69a1427482bdf"},{title:"H. tg. Drought",tags:["drought"],category:"term",content:"Hiện tượng gạch người chơi đang rất cần nhưng lại không xuất hiện trong thời gian quá dài. Thường dùng để chỉ hiện tượng khát gạch I trong mấy game cổ điển vì chúng thường dùng bộ xáo gạch ngẫu nhiên đơn giản.\\n\\nHiện nay, ở các game hiện đại, hiện tượng drought không thể xảy ra vì khoảng cách tối đa giữa 2 gạch cùng loại là 13 gạch.",link:"",id:"e13718d61cc5f332753ab13eb091082977358060"},{title:">E|Thông số",tags:["nhom05e"],category:"",content:"",link:"",id:"f0ed0cd42a5bdabd85414b6d3fb1049fe8b83b6c"},{title:">E1|Thg số game",tags:["nhom05e1"],category:"",content:"NHÓM 5E1: THÔNG SỐ GAME",link:"",id:"1fac7af85f77a298fb0f5f35f4d9363269ad0a52"},{title:"Tốc độ rơi",tags:["nhom05e1","trọng","lực","falling","speed","gravity"],category:"term",content:`Tốc độ gạch rơi xuống. Đơn vị là "G". +Chỉ số hàng gạch rơi xuống trong một khung hình. +Con số này luôn đi kèm với giả thiết là game đang chạy ở 60FPS. + +Ví dụ: gạch di chuyển xuống 1 ô / 60 khung hình (1 ô / giây) thì tốc độ rơi là ¹⁄₆₀ G + +Tốc độ tối đa của game xếp gạch hiện đại là 20G (bởi vì có 20 hàng trong vùng nhìn thấy được). + +Trong Techmino, tốc độ còn được biểu diễn ở dạng số khung hình gạch cần để đi xuống 1 ô. +60 ở hệ thống đó tương đương với 1 ô / 1 giây hoặc 1G. + +Trong thực tiễn, "20G" không chỉ "20 ô / giây" mà chỉ "Tốc độ tối đa" +Xem mục tiếp theo để biết thêm.`,link:"",id:"4fa0dd27621093a67b273ed0117727062b38e3d0"},{title:"20G",tags:["nhom05e1","trọng","lực;","ngay","lập","tức;","gravity","instantly"],category:"term",content:"Tốc độ tối đa trong các game xếp gạch hiện đại.\\n\\nMặc dù nhìn qua thuật ngữ này thể hiện tốc độ rơi là 20 hàng / khung hình, nhưng thật ra chúng được dùng để chỉ tốc độ vô tận.\\n\\nHơn nữa, trong các chế độ 20G, game sẽ ưu tiên di chuyển gạch xuống đáy hơn là bất cứ thao tác di chuyển nào từ người chơi.\\nLấy ví dụ: ngay cả khi ARR được đặt là 0, gạch vẫn cứ di chuyển một mạch xuống phía dưới một cách hồn nhiên giống như người chơi chưa nhấn gì.\\nViệc này gây khó cho người chơi khi họ muốn gạch leo ra khỏi hố hoặc nhảy ra khỏi lỗ trong một số tình huống.",link:"",id:"42e3eb0c23eeedeaa4683c9e3b8424fc48967611"},{title:"Lockdown Delay",tags:["nhom05e1","lockdelay","lockdowndelay","lockdowntimer","ld;","thời","gian","chờ","khóa","gạch"],category:"term",content:"Thời gian chờ khóa gạch, viết tắt là LD.\\nĐây là khoảng thời gian ngay sau khi gạch chạm đất và trước khi gạch bị khóa (không thể điều khiển được nữa).\\n\\nTrong các game xếp gạch cổ điển, khoảng thời gian chờ này = khoảng thời gian gạch cần có để di chuyển xuống 1 ô, và không có cơ chế nào để trì hoãn việc khóa gạch.\\n\\nTrong các game xếp gạch hiện đại, thời gian chờ được thong thả hơn, và trong game thường có cơ chế trì hoãn việc khóa gạch, trong đó bạn có thể di chuyển hoặc xoay gạch để đặt lại thời gian chờ (tối đa 15 lần trong hầu hết các game).",link:"",id:"76673e3c7b19505ef940c85430e6f3a6f0ef6e60"},{title:"Spawn&ClearDelay",tags:["nhom05e1","spawndelay","cleardelay;","thời","gian","chờ","gạch","sinh","ra;","thời","gian","chờ","xóa","hàng"],category:"term",content:"Spawn Delay (Thời gian chờ gạch sinh ra): Khoảng thời gian từ lúc gạch bị khóa cho tới khi gạch mới được sinh ra.\\n\\nLine Clear Delay (Thời gian chờ xóa hàng): Thời gian để hiệu ứng xóa hàng thực hiện xong.",link:"",id:"7ffaa94f81a2a82dd1aed3fbf74669ab44dee315"},{title:"ARE",tags:["nhom05e1","spawn","appearance","delay"],category:"term",content:'Thời gian chờ xuất hiện gạch mới\\nHay còn được biết với tên: Appearance Delay và Entry Delay.\\n\\n\\"ARE\\" chỉ khoảng thời gian sau khi gạch bị khóa và trước khi gạch mới xuất hiện\\n\\nP/s: Từ \\"ARE\\" không phải là từ viết tắt hay hay là một dạng của \\"be\\" trong tiếng Anh; nó bắt nguồn từ <あれ> (a-re) trong tiếng Nhật, có nghĩa là \\"nó\\" hoặc \\"cái đó\\" / \\"cái kia\\" / \\"cái ấy\\".',link:"",id:"ccabbdc030560f858662eb34909557e7017e3ef6"},{title:"Line ARE",tags:["nhom05e1","appearance","delay"],category:"term",content:"Khoảng thời gian khi hiệu ứng xóa hàng bắt đầu chạy cho tới khi gạch mới xuất hiện.",link:"",id:"27adf9cafe44613ca1c7c529059e38cfc447575b"},{title:"Death ARE",tags:["nhom05e1","die","delay"],category:"term",content:"Một cơ chế đặc biệt cho phép tránh game over trong một số trường hợp.\\n\\nDeath ARE sẽ được kích hoạt khi có một viên gạch chặn ngay tại vị trí xuất hiện của gạch mới (dẫn tới hiện tượng block out)\\nKhi kích hoạt, spawn ARE sẽ được cộng với một khoảng thời gian bổ sung để cho phép người chơi dùng IRS, IHS hoặc IMS.\\n\\nÝ tưởng về cơ chế này được đề xuất lần đầu bởi @NOT_A_ROBOT.",link:"",id:"175b18d6e89ac5afb6b8e880232f70b65ee9569e"},{title:">E2|Thg số đ.khiển",tags:["nhom05e2"],category:"",content:"NHÓM 5E2: THÔNG SỐ ĐIỀU KHIỂN",link:"",id:"e9702fe1281378567f72ce2f48bb9e21e678308e"},{title:"DAS&ARR (dễ hiểu)",tags:["nhom05e2","das","delayedautoshift"],category:"term",content:'Tưởng tượng bạn đang gõ chữ, và bạn nhấn giữ phím \\"O\\".\\nVà bạn sẽ nhận được một chuỗi toàn là o.\\n\\nỞ trên thanh thời gian thì nó trông như thế này: o-----o-o-o-o-o-o-o-o-o…\\n\\"-----\\" là DAS, còn \\"-\\" là ARR.',link:"",id:"e3513dfbe35a202109b4e533059a6049e50348e9"},{title:"DAS & ARR",tags:["nhom05e2","das","và","arr","delayedautoshift","autorepeatrate"],category:"term",content:"DAS, hay Delayed Auto-shift, chỉ khoảng thời gian sau khi gạch di chuyển sang một hướng đã chọn 1 ô cho đến truớc khi gạch di chuển một cách tự động.\\n\\nARR, hay Auto-Repeat Rate, chỉ khoảng cách thời gian giữ 2 lần di chuyển sang 1 ô trong lúc gạch đang tự động di chuyển.\\n\\nDAS và ARR được tính bằng f (khung hình) (¹/₆₀ ở 60FPS). 1ms = 16²/₃ khung hình.",link:"",id:"831664fa86cc5ff27da97654b301fc41efa41039"},{title:"DAS cut",tags:["nhom05e2","dascut","dcd"],category:"term",content:"Cơ chế đặc biệt sẽ được kích hoạt khi gạch mới xuất hiện. Khi kích hoạt, cơ chế này sẽ tăng DAS lên một chút để gạch không tự di chuyển ngay khi đang có phím được giữ.\\n\\nCác game khác có thể có tính năng tương tự nhưng cách hoạt động có thể khác nhau.",link:"",id:"41eb761678d3f97a02717bd274386cc5c3a09d14"},{title:"Auto-lock cut",tags:["nhom05e2","autolockcut"],category:"term",content:"Một tính năng trong Techmino cho phép ngăn chặn việc misdrop khi gạch mới vừa xuất hiện. Nút Thả mạnh sẽ bị tắt trong một khoảng thời gian ngắn sau khi gạch trước đó bị khóa.\\n\\nCác game khác có thể có tính năng tương tự nhưng cách hoạt động có thể khác nhau.",link:"",id:"de8acc2343af07a8a5434e61476f0e4209d3a4ec"},{title:"SDF",tags:["nhom05e2","softdropfactor"],category:"term",content:'Soft Drop Factor (Hệ số tốc độ rơi nhẹ)\\n\\nMột cách để xác định tốc độ gạch rơi khi nhấn phím \\"Thả nhẹ\\". Hầu hết các game xác đinh tốc độ rơi bằng công thức: Tốc độ thả nhẹ = SDF × 20\\n\\nTuy nhiên trong Techmino, tốc độ thả nhẹ là cố định với thông số SDARR (ARR nhưng dành cho nút \\"thả nhẹ\\").',link:"",id:"788a1286bf47d09b01ba806d1fc8deea24c76125"},{title:">F|Điều khiển",tags:["nhom05f"],category:"",content:"",link:"",id:"d3d553dc2cad800b0d93465b6ba44909603d8246"},{title:">F1|Tốc độ đ.khiển",tags:["nhom05f1"],category:"",content:"NHÓM 5F1: TỐC ĐỘ ĐIỀU KHIỂN",link:"",id:"0fde8d1952e33e368e9f4e445db75c549c650273"},{title:"LPM",tags:["nhom05f1","linesperminute;","số","hàng","mỗi","phút;","tốc","độ"],category:"term",content:`Lines per minute | Số hàng mỗi phút\\nPhản ánh tốc độ chơi.\\n\\nMỗi game có cách tính LPM khác nhau. Ví dụ như, Tetris Online tính LPM dựa trên PPS (nhìn mục ở bên dưới), trong đó 1 PPS = 24 LPM; do đó số hàng rác sẽ không được tính vào LPM và làm cho LPM lệch đi so với nghĩa đen của nó. Trong Techmino, giá trị LPM theo cách tính đó gọi là \\"L'PM\\`,link:"",id:"e3cc520818475699fa7b086cc6ff171869c8eccd"},{title:"PPS",tags:["nhom05f1","piecespersecond","số","gạch","mỗi","giây;","tốc","độ"],category:"term",content:"Pieces per second | Số gạch mỗi giây\\nPhản ánh tốc độ chơi.",link:"",id:"e1a50a861bf3c4997a0d8b725d61088d0570c198"},{title:"BPM",tags:["nhom05f1","blocksperminute","piecesperminute","số","gạch","mỗi","phút;","tốc","độ"],category:"term",content:"Blocks per minute | Số gạch mỗi phút\\nPhản ánh tốc độ chơi.\\n\\nNgoài ra chúng được gọi là PPM (để tránh nhầm lẫn với một thuật ngữ trong âm nhạc) (P là viết tắt của từ Pieces).",link:"",id:"d648e2d19a3206ee9625de8b4316674b46725b86"},{title:"KPM",tags:["nhom05f1","keysperminute","keypressesperminute","số","lần","nhấn","mỗi","phút;","số","phím","mỗi","phút"],category:"term",content:"Keypresses per minute | Số lần nhấn mỗi phút\\nPhản ánh tốc độ người chơi nhấn phím hoặc nút.",link:"",id:"e4cc846ad96dcf34f987d76fde3742444ddb1d54"},{title:"KPP",tags:["nhom05f1","số","lần","nhấn","mỗi","gạch;","số","phím","mỗi","gạch"],category:"term",content:"Keypresses per piece | Số lần nhấn mỗi viên gạch\\nPhản ánh mức độ hiệu quả việc điều khiển gạch.\\nCó thể giảm con số này bằng cách học Finesse",link:"",id:"4a0d0495c6123aa978f989b3d4a1fdd1897c2759"},{title:">F2|K.th. đ.khiển",tags:["nhom05f2"],category:"",content:"NHÓM 5F2: KỸ THUẬT ĐIỀU KHIỂN",link:"",id:"75b049eddb453d215cb2b2a8d8149cf5fad9e96e"},{title:"Finesse",tags:["nhom05f2","finesse","lỗi","di","chuyển"],category:"term",content:`Một kỹ thuật di chuyển gạch vào vị trí mong muốn với chuỗi phím ngắn nhất có thể, giúp tiết kiệm thời gian và giảm khả năng misdrop. + +Đây là một kỹ năng quan trọng nên bạn hãy học Finesse sớm nhất có thể. Bạn có thể thấy khá nhiều video hướng dẫn trên Youtube cũng như các trang hướng dẫn với hình minh họa trên Google. Hãy bắt đầu từ thứ cơ bản nhất, rồi luyện tập dần để tăng độ chính xác lên. Hãy nhớ ưu tiên chính xác hơn là tốc độ nhé. + +Bạn sẽ không bị mất Finesse khi bạn nhét gạch hay thực hiện Spin vì Techmino chỉ kiểm tra những vị trí không yêu cầu soft drop + +Techmino cũng có finesse rate (%) (tỉ lệ *không* mắc lỗi di chuyển), được tính như sau: + - 100% (Perfect) khi số lần nhấn phím bằng hoặc ít hơn mức chuẩn + - 50% (Great) khi số lần nhấn phím cao hơn mức chuẩn 1 phím + - 25% (Bad) khi số lần nhấn phím cao hơn mức chuẩn 2 phím + - 0% (Miss) khi số lần nhấn phím cao hơn mức chuẩn 3 phím +Một Bad hoặc Miss sẽ phá combo finesse. + +Lưu ý: + - Finesse thường sẽ không được tính trong một vài tình huống như tốc độ rơi cao, phải sử dụng thả nhẹ hay bảng rất cao. Tuy nhiên, bộ đếm finesse của Techmino vẫn chạy bất chấp ở điều kiện nào (kể cả tốc độ rơi cao như 20G). Do vậy finesse rate thường sẽ không mang ý nghĩa gì trong trường hợp này. + - Bạn sẽ không bị mất Finesse khi bạn nhét gạch hay thực hiện Spin vì Techmino chỉ kiểm tra những vị trí không yêu cầu soft drop`,link:"",id:"216693c6ebf2aa034fe1a2d27121a4f8ac729a45"},{title:"Hypertapping",tags:["nhom05f2","hypertapper","nhấn","liên","tục"],category:"term",content:'Hypertapping (Nhấn liên tục)\\n\\nĐề cập tới một kỹ năng là khi bạn rung tay liên tục thay vì giữ phím.\\n\\nTrong các game xếp gạch cổ điển, thông số DAS rất cao và không thể điều chỉnh được, dẫn tới nhấn nút liên tục sẽ nhanh hơn so với giữ phím.\\nBây giờ thì không cần vì các game xếp gạch hiện đại đã có DAS và ARR có thể điều chỉnh được (nếu có chăng không điều chỉnh được thì DAS cũng đã thấp hơn nhiều so với ngày trước)\\n\\nNhững người dùng kỹ năng này được gọi là \\"hypertapper\\',link:"",id:"e9991a9c525abc09fc7107a32c97afed9a0d17ac"},{title:"Rolling",tags:["nhom05f2"],category:"term",content:`Một phương pháp khác để di chuyển nhanh ở chế độ trọng lực cao (khoảng 1G) (với cài đặt DAS / ARR chậm). + +Để thực hiện thao tác rolling: + - Cố định ngón tay của bạn trên phím bạn muốn nhấn ở một bên tay + - Sau đó dùng các ngón tay ở bên kia gõ mạnh liên tục ở mặt sau của tay cầm. + +Phương pháp này nhanh hơn nhiều so với việc nhấn liên tục (xem mục "Hypertapping" để biết thêm thông tin) và yêu cầu ít công sức hơn. +Phương pháp này lần đầu tiên được tìm thấy bởi Cheez-fish - người đã đạt tốc độ nhấn lên tới 20 Hz.`,link:"",id:"a70637d6abe22dff0b619bb2abbd8ef174af94d2"},{title:">F3|Độ trễ input",tags:["nhom05f3","input","delay"],category:"",content:"Độ trễ đầu vào\\n\\nBất kỳ thiết bị đầu vào cũng cần một khoảng thời gian để tín hiệu có thể tới game, không cao thì thấp, từ mấy ms đến cả trăm ms.\\n\\nNếu độ trễ đầu vào quá cao, thì việc điều khiển sẽ không thoải mái.\\n\\nĐộ trễ này thường do phần cứng và phần mềm, thứ mà bạn gần như không kiểm soát được. Hiệu ứng này dễ thấy nhất ở trong các game như Tetris Online hay Tetris Effect.\\n\\nBật chế độ Hiệu suất cao (Performance mode) hoặc tắt chế độ tiết kiệm năng lượng (Energy saving), đồng thời bật chế độ Gaming trên màn hình máy tính / TV, có thể giúp giảm độ trễ.",link:"",id:"415973ec170a21f3a5716074e64b6dda4b64b814"},{title:">G|K.năng t.công",tags:["nhom05g"],category:"",content:"NHÓM 5G: KHẢ NĂNG TẤN CÔNG",link:"",id:"4236ad60e4bc425f8c8f0d0e3c76998d0327de14"},{title:"APM",tags:["nhom05g","attackperminute;","số","hàng","tấn","công","mỗi","phút;","số","hàng","tấn","công","trong","một","phút"],category:"term",content:"Attack per minute\\n\\tSố hàng tấn công trung bình mà một người chơi có thể tạo ra mỗi phút (bất kể đó là đòn tấn công hoặc chỉ dùng để hủy đòn tấn công của đối thủ)\\n\\nPhản ánh sức mạnh tấn công của người chơi",link:"",id:"6022efe3e5413aff247effdbd6b9beff6acddc3c"},{title:"SPM",tags:["nhom05g","linessentperminute;","số","hàng","gửi","mỗi","phút;","số","hàng","gửi","trong","một","phút."],category:"term",content:'[lines] Sent per minute\\n\\tSố hàng tấn công trung bình mà được gửi vào đối thủ trong một phút.\\n\\nPhản ánh sức mạnh tấn công \\"thực tế\\" của người chơi (không tính các hàng dùng để chặn rác tới).',link:"",id:"819603c983a57b88fa74cb8e126b6fc6574511df"},{title:"DPM",tags:["nhom05g","digperminute","defendperminute","số","hàng","đào","xuống","mỗi","phút;","số","hàng","đào","xuống","trong","một","phút"],category:"term",content:"Dig / Defend per minute\\n\\tSố hàng đào xuống trung bình mỗi phút\\n\\nĐôi khi có thể phản ánh mức độ sống sót của người chơi khi nhận được rác",link:"",id:"716ee4961bcaefaa1882ab2a13c501c75dfd604f"},{title:"RPM",tags:["nhom05g","receive;","receiveperminute;","số","hàng","rác","phải","nhận","mỗi","phút;","số","rác","phải","nhận","mỗi","phút;","số","hàng","rác","phải","nhận","trong","một","phút;","số","rác","phải","nhận","trong","mỗi","phút"],category:"term",content:"[lines] Receive per Minute\\n\\tSố hàng rác trung bình nhận được mỗi phút\\n\\nPhản ánh áp lực hiện có của người chơi phải chịu ở một mức độ nào đó.",link:"",id:"576848e5d786490aacbbdb638bc3b0a1ae79bc35"},{title:"ADPM",tags:["nhom05g","attackdigperminute","vs;","số","hàng","tấn","công","và","đào","xuống","mỗi","phút;","số","hàng","tấn","công","và","đào","xuống","mỗi","phút"],category:"term",content:"Attack & Dig per minute\\n\\tSố hàng tấn công & đào xuống trung bình mỗi phút\\n\\nDùng để so sánh sự khác nhau về kỹ năng của hai người chơi trong cùng một trận đấu; chính xác hơn một chút so với APM\\n\\nVS Score (điểm VS) trong TETR.IO chính là ADPM mỗi 100 giây",link:"",id:"658315e4e9d18aea6ee5a60fcfe6adfa4ec8ea83"},{title:"APL",tags:["nhom05g","attackperline","efficiency;","số","hàng","tấn","công;","số","hàng","đã","xóa;","độ","hiệu","quả"],category:"term",content:'Attack per line (cleared)\\n\\tSố hàng tấn công / Số hàng đã xóa\\n\\nCòn được biết với tên \\"efficiency\\" (độ hiệu quả). Phản ánh độ hiệu quả khi tấn công sau mỗi lần xóa hàng.\\nVí dụ Tetris và T-spin có độ hiệu quả cao hơn so với xóa 2 / 3 hàng.',link:"",id:"f7f2c409272ce792ba2ea214402cbf70b7662c2d"},{title:"Tấn công&Phg thủ",tags:["nhom05g","attacking","defending","phòng","thủ;","tấn","công","&","phòng","thủ;","tấn","công","và","phòng","thủ"],category:"term",content:`Tấn công: Gửi hàng rác tới đối thủ bằng cách gửi nhiều hàng. + +Phòng thủ: Loại hàng rác ra khỏi hàng chờ bằng cách thực hiện các kiểu xóa đặc biệt sau khi đối thủ gửi hàng rác. + +Phản công: Gửi hàng rác lại sau khi xử xong toàn bộ hàng rác trong hàng chờ. + +Trong hầu hết các game, tấn công và phòng thủ là tương đương nhau: một đòn tấn công sẽ chặn một cú rác tới.`,link:"",id:"4cedd7492500d476f10f4edcb5292c3cb3eaf4b2"},{title:"Combo",tags:["nhom05g","ren","combo"],category:"term",content:'Xóa nhiều hàng liên tiếp để tạo ra combo. Từ lần xóa hàng thứ 2 thì tính là 1 Combo, và từ lần xóa hàng thứ 3 thì tính là 2 Combo, và cứ như thế.\\nKhông như Back to Back, đặt một viên gạch = phá combo.\\n\\nỞ cộng đồng xếp gạch Nhật, combo được gọi là \\"REN\\", từ chữ kanji tiếng Nhật <連> (れん, ren).',link:"",id:"1af2c3293f69dc5673e1f079856188c34b1febc0"},{title:"Spike",tags:["nhom05g","spike"],category:"term",content:"Làm nhiều đợt tấn công liên tiếp trong một khoảng thời gian ngắn.\\n\\nCả Techmino và TETR.IO đều có bộ đếm spike, sẽ hiện bao nhiêu hàng rác bạn đã gửi cho đối thủ trong lúc spike.\\n\\nLưu ý: hàng rác mà bị tích lũy do mạng lag thì không được tính là spike.",link:"",id:"4ed130cdc0f445ce290a3a96aec3df6f7b881fc9"},{title:"'Debt'",tags:["nhom05g","debt","owe"],category:"term",content:'Một thuật ngữ hay được sử dụng trong cộng đồng Tetris Trung Quốc.\\n\\n\\"Debt\\" đề cập đến tình huống mà bạn chỉ có thể tấn công KHI và CHỈ KHI setup được hoàn thành. Nên, khi đang làm một hoặc nhiều debt liên tiếp, người chơi bắt buộc phải để ý tới đối thủ để đảm bảo an toàn; còn không, bạn có thể bị bón hành sấp mặt.\\n\\nThuật ngữ này hay được sử dụng để diễn tả một số setup như TST tower.',link:"",id:"1f944dcc861db7a0128bcae61a8b9e65eff8d625"},{title:"Passthrough",tags:["nhom05g","pingthrough"],category:"term",content:'Chỉ tình huống cả hai người chơi cùng gửi tấn công lẫn nhau, nhưng thay vì chúng hủy bỏ lẫn nhau thì nó lại gửi thẳng vào bảng của đối phương.\\n\\nMột thuật ngữ khác là \\"pingthrough\\" đề cập tình huống passthrough xảy ra do ping cao.',link:"",id:"07e9017e1ddfeb5aa57b3be59da1f075d8a1fd87"},{title:"Timing",tags:["nhom05g"],category:"term",content:"Timimg đề cập đến việc lựa chọn khoảnh khắc để tấn công với nỗ lực tối ưu. Chọn đúng thời điểm cho phép bạn có thể phòng thủ trong khi đè bẹp đối thủ của bạn. Tuy nhiên, chúng tôi đề nghị những người chơi mới tập trung vào bảng và cải thiện tốc độ trước khi tập trung vào timing.",link:"",id:"8ba2a8161299eba258be813d9ca3cc7075aa5e00"},{title:">H|Mis-action",tags:["nhom05h","misaction","misdrop","mishold"],category:"",content:"Misdrop: Vô tình thả rơi / đặt gạch vào nơi không mong muốn.\\nMishold: Vô tình nhấn nhầm phím Hold. Việc này có thể dẫn đến việc dùng một viên gạch không mong muốn.\\n\\nCả misdrop và mishold có thể làm bạn mất cơ hội để làm PC",link:"",id:"99626b14c0c2e11385395ff82896910ee8ca67c9"},{title:">I|Spin",tags:["nhom05i"],category:"",content:"(Ở trong một số game)\\n\\nXoay gạch để di chuyển tới một vị trí mà bình thường sẽ không tiếp cận được. Ở một số game, thao tác này sẽ gửi thêm hàng rác hoặc là tăng thêm điểm. Mỗi game sẽ có cách kiểm tra Spin khác nhau.",link:"",id:"ab8b1e1792fe47a4624a51dfa36c9914024e3d56"},{title:"Mini",tags:["nhom05i"],category:"term",content:'Một kiểu spin (được cho là) dễ làm hơn so với spin thông thường (vì trong một số game cũ, chúng được gọi là \\"Ez T-spin\\").\\nLượng điểm bổ sung và hàng rác đều ít hơn so với spin thông thường.\\n\\nMỗi game sẽ có các quy tắc khác nhau để kiểm tra và chúng có thể không trực quan.\\nNhưng bạn chỉ cần nhớ mấy cái bố cục làm Mini-spin là được!',link:"",id:"2c066eb35195c9458f11d15a4550c3522405d2db"},{title:"All-spin",tags:["nhom05i","allspin"],category:"term",content:'Một quy luật mà trong đó, làm Spin bằng gạch gì đều cũng được thưởng thêm điểm và gửi thêm hàng rác; trái ngược với\\"T-spin Only\\" (Chỉ làm T-spin).',link:"",id:"ca45fa29c0615e75752420601d317be054239b72"},{title:"T-spin",tags:["nhom05i","tspin"],category:"term",content:'Spin được thực hiện bởi Tetromino T.\\n\\nT-spin chủ yếu được phát hiện bởi \\"quy luật 3 góc\\".\\nTức là, nếu 3 trong 4 góc của một hình chữ nhật (có tâm là tâm xoay của gạch T) bị đè bởi bất kỳ gạch nào, thì spin đó được tính là T-spin.\\n\\nNgoài quy tắc đó ra thì còn có một số quy tắc để phát hiện T-spin và phân biệt giữa T-spin và Mini T-spin.',link:"",id:"0f0fbac25dc242d07b99a4a4b4586685b293ac6a"},{title:"O-Spin",tags:["nhom05i","ospin"],category:"term",content:'Gạch O vốn dĩ \\"tròn\\", không đổi hình dạng khi xoay ở bất cứ hướng nào, nên nó không thể \\"đá\\" được. Do đó gạch O không tài nào leo ra khỏi \\"lỗ\\" hoặc \\"hố\\" nếu bị kẹt. Từ việc này, có một người đã làm một cái video fake cách làm O-spin trong Tetris 99 và Tetris Friends\\n\\nHiện tại có 2 hệ thống xoay hỗ trợ O-spin:\\n\\tXRS cho phép gạch O có thể \\"teleport\\" tới một cái lỗ.\\n\\tTRS cho phép gạch O \\"teleport\\" và \\"biến hình\\',link:"",id:"0e91159448a3758570bc0f06b87ca3a7713fff0e"},{title:"Fin, Neo, Iso",tags:["nhom05i","fin","neo","iso"],category:"pattern",content:"Tên của 3 kiểu T-spin sử dụng wall-kick table đặc biệt của gạch T. Chúng không được sử dụng nhiều trong game bởi vì độ phức tạp và thường hay bị nerf bởi đa số game.",link:"",id:"6d8823307e0e9d5b79e054b7f2571d460135ff17"},{title:"Freestyle",tags:["nhom05i"],category:"term",content:"Thuật ngữ hay được nhắc nhiều trong thử thách 20TSD. Freestyle là kiểu chơi không dùng setup nào để hoàn thành một số lượng TSD nhất định nào đó.\\n\\nFreestyle khó hơn nhiều so với việc sử dụng setup nào đó như LST\\nNhững màn chạy dùng Freestyle có thể phản ánh cho các kỹ năng T-spin của người chơi trong các trận đấu trong thế giới thực.",link:"",id:"8c56d1d9d5dacf3f1a0bb8e834b51555aca0c925"},{title:">J|K.th. xóa hàng",tags:["nhom05j"],category:"",content:"NHÓM 5J: KỸ THUẬT XÓA HÀNG",link:"",id:"a31bb6e829ad7533f347ba9875ba8990c58940e9"},{title:"Xóa 1 / 2 / 3 hàng",tags:["nhom05j","1","2","3","single","double","triple"],category:"term",content:"Single: Xóa 1 hàng cùng một lúc.\\nDouble: Xóa 2 hàng cùng lúc.\\nTriple: Xóa 3 hàng cùng lúc.",link:"",id:"f87a29c3e2fa962369dc371b90a912ccb9213c74"},{title:"Techrash",tags:["nhom05j","tetris","4"],category:"term",content:"*Chỉ có trên Techmino*\\nXóa 4 hàng cùng một lúc.",link:"",id:"581aeb9553b5fc2814749554149b50c01272be9e"},{title:"Tetris",tags:["nhom05j","4"],category:"term",content:'Đây chính là tên của một tựa game (và cũng là tên thương hiệu của nó). Đây cũng là thuật ngữ chỉ việc xóa 4 hàng cùng lúc trong các game chính thức.\\n\\nĐược ghép từ 2 từ: Tetra (<τέτταρες>, \\"téttares\\", có nghĩa là số 4 trong tiếng Hy Lạp) and tennis (quần vợt, môn thể thao yêu thích nhất của người đã sáng tạo ra Tetris).\\n\\nNhắc nhẹ: những game xếp gạch được phát triển bởi Nintendo và SEGA đều được cấp phép bởi TTC. Hai công ty này không (hề) sở hữu bản quyền của Tetris',link:"",id:"af48fe99d409bfda2f0dbe896f2fc6a16adb68c6"},{title:"TSS, TSD, TST",tags:["nhom05j","t1","tspinsingle","T-spin","Đơn","t2","tspindouble","T-spn","Đôi","t3","tspintriple","T-spin","Tam"],category:"term",content:"T-spin Single (TSS) | T-spin Đơn\\n\\tXóa một hàng bằng T-spin.\\n\\nT-spin Double (TSD) | T-spin Đôi\\n\\tXóa hai hàng bằng T-spin.\\n\\nT-spin Triple (TST) | T-spin Tam\\n\\tXóa ba hàng bằng T-spin.",link:"",id:"f97799aaa0bda464faa21db9bfe63ab715384531"},{title:"MTSS",tags:["nhom05j","mintspinsingle","tsms","tspinminisingle","Mini","T-spin","Đơn"],category:"term",content:'Mini T-spin Single | Mini T-spin Đơn\\nTừng biết tới với cái tên \\"T-spin Mini Single\\" (TSMS) (T-spin Mini Đơn).\\n\\nXóa một hàng bằng Mini T-spin.\\n\\nMỗi game sẽ có cách khác nhau để xác định xem T-spin đó có phải là Mini hay không.',link:"",id:"d2ea085bad3bf2489b164352415d424a8718af95"},{title:"MTSD",tags:["nhom05j","minitspindouble","tsmd","tspinminidouble","Mini","T-spin","Đôi"],category:"term",content:'Mini T-spin Double | Mini T-spin Đôi\\nTừng biết tới với cái tên \\"T-spin Mini Double\\" (TSMD) (T-spin Mini Đôi).\\n\\nXóa hai hàng bằng Mini T-spin.\\n\\nMTSD chỉ xuất hiện hạn chế trong một vài game và có các cách kích hoạt khác nhau.',link:"",id:"e806ee88f6612ecebac7aa815e8261d2ff1374e3"},{title:"Back to Back",tags:["nhom05j","b2b","btb","backtoback"],category:"term",content:"Hay còn gọi là B2B. Xóa 2 hoặc nhiều lần xóa theo kiểu nâng cao (như Tetris hay Spin) liên tiếp (nhưng không được kiểu xóa bình thường giữa chừng).\\nKhông như combo, Back To Back sẽ không bị mất khi đặt gạch.\\n\\nỞ Techmino, B2B được tính bằng thanh năng lượng, chứ không tính theo số lần xóa kiểu đặc biệt.\\nCũng trong Techmino, nhiều B2B liên tiếp được tính là Back-to-back-to-back (B3B) (xem mục B2B2B để biết thêm).\\n\\nTechmino cũng tính cả PC và HPC liên tiếp là B2B và B3B",link:"",id:"686a49a6cc7776d4829cab4e07f95a78a3e57ee5"},{title:"B2B2B",tags:["nhom05j","b3b","backtobacktoback"],category:"term",content:"*Chỉ có trên Techmino*\\n\\nBack to back to back, hay còn gọi là B3B (hoặc B2B2B). Thực hiện nhiều Back to Back liên tiếp để lấp đầy thanh B3B; cuối cùng khi bạn đã lấp B3B vượt một mức nhất định, bạn có thể tấn công mạnh hơn khi làm được B2B, nhờ sức mạnh từ B3B",link:"",id:"b4c31186c57bd9bca81ee6386b6ddb2ded6c4259"},{title:"All Clear",tags:["nhom05j","pc","perfectclear","ac","allclear"],category:"term",content:'Còn được biết tới là Perfect Clear (PC). Đây là thuật ngữ được dùng nhiều trong cộng đồng và cũng như được dùng trong Techmino\\nXóa toàn bộ gạch ra khỏi bảng, không trừ gạch nào\\n\\n[Sea: còn có một từ ít dùng nữa, đó là \\"Bravo\\"]',link:"",id:"7c4933d999dc244af9de4dec72921ed3be472cf9"},{title:"HPC",tags:["nhom05j","hc","halfperfectclear"],category:"term",content:"*Chỉ có trên Techmino*\\nHalf Perfect Clear\\n\\nMột biến thể của All Clear. Nếu hàng đó bị xóa mà rõ ràng giống với Perfect Clear khi bỏ qua những hàng bên dưới, thì được tính là Half Perfect Clear và sẽ gửi thêm một lượng hàng rác nhỏ",link:"",id:"6436f4a12ea6f7a5a3d1a86816b625d6816b3a4a"},{title:">K|T.ngữ khác",tags:["nhom05k"],category:"",content:"NHÓM 5L: CÁC THUẬT NGỮ KHÁC",link:"",id:"c6ebc456edf87c3eef11bb697af2235b04794fba"},{title:"sub",tags:["nhom05k","sub"],category:"term",content:'Sub-[số] có nghĩa là khoảng thời gian ở dưới một mốc nhất định. Đơn vị thời gian thường được bỏ qua và có thể tự suy ra.\\n\\nVí dụ: \\"sub-30\\" có nghĩa là hoàn thành chế độ 40 hàng dưới 30 giây, \\"sub-15\\" có nghĩa là hoàn thành chế độ 1000 hàng dưới 15 phút.\\n\\n\\"Sub\\" thường được sử dụng với số đã được làm tròn (cho nên hiếm khi người ta sử dụng theo kiểu \\"sub-62\\")',link:"",id:"46d2b76f28ca62cfaa8bba74d6df88b60120b964"},{title:"‘Researching’",tags:["nhom05k","scientificresearching"],category:"term",content:"(<科研>, ké yán)\\n\\nMột thuật ngữ đôi khi được dùng ở cộng đồng Tetris Trung Quốc, chỉ việc nghiên cứu / luyện tập kỹ thuật nào đó (ví dụ như một setup T-spin mới) trong môi trường chơi đơn và tốc độ rơi thấp…\\nTrong Techmino, thuật ngữ này chỉ những mode đòi hỏi bạn gần như phải dùng spin trong suốt màn chạy.",link:"",id:"af194c3cb1fb90736f9b1970207bd3e1c74c6772"},{title:"Bone block",tags:["nhom05k","bone","tgm"],category:"term",content:`Đây là skin được dùng trong những phiên bản đời đầu của Tetris + +Trước đây, tất cả máy tính đều sử dụng Giao diện Dòng lệnh (Command-Line Interfaces), cho nên mỗi ô gạch đều được hiển thị dưới dạng 2 ngoặc vuông (như thế này:\`CHAR.icon.bone\`). +Trông nó nhìn rất giống cục xương, nên đôi khi được gọi là skin bone block (gạch xương). + +Trong Techmino, bone block được mô tả là "một skin gạch duy nhất, lạ mắt mà tất cả các gạch đều sử dụng". +Skin khác nhau sẽ có skin bone block khác nhau. + +Cũng trong Techmino nhưng ở tiếng Việt, từ "gạch\`CHAR.icon.boneđược dùng để chỉ bone block.`,link:"",id:"1e195dc5bee6ab15b3a503747b1baeb19177345d"},{title:"=[NHÓM 06]=",tags:["nhom06"],category:"",content:`NHÓM 06: CÁC GAME XẾP GẠCH + +Nội dung sau đây là những giới thiệu ngắn gọn về một số game xếp gạch chính thức và do fan làm có mức độ phổ biến cao. MrZ - tác giả của Techmino đã để lại một vài lời nhận xét, được đánh dấu chủ yếu bằng hai dấu ngoặc vuông + +Squishy cũng có một số lời nhận xét và thông tin bổ sung, lời này được đánh dấu bắt đầu bằng "Sea" và ở trong một cặp ngoặc vuông + +Hãy nhớ là không phải game nào được nói đến đều có lời nhận xét, chúng chỉ là những ý kiến chủ quan và không có tính chuyên môn, và cũng không nhất thiết phản ánh chất lượng của game. Chỉ đọc / dùng để tham khảo.`,link:"",id:"ebd654757378d083ae111a40154032f542487fff"},{title:"King of Stackers",tags:["nhom06","kos","kingofstackers"],category:"game",content:`Chơi trên trình duyệt | Chơi trực tuyến | Hỗ trợ màn hình cảm ứng + +Gọi tắt là KoS. Một game xếp gạch chơi trên trình duyệt theo lượt. Về cơ bản: người chơi sẽ thay phiên nhau đặt các gạch trong bảng của họ theo chu kỳ 7 gạch. Hàng rác chỉ có thể vào bảng khi một gạch được đặt mà không xóa một hàng nào. Trò chơi mang tính chiến lược cao và có các tùy chọn khác nhau cho cơ chế tấn công.`,link:"https://kingofstackers.com/games.php",id:"19baf92beb3a1253849a11399525c12fd74d925c"},{title:"Tetr.js",tags:["nhom06","tetrjs","tetr.js"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng + +Một game xếp gạch chơi trên trình duyệt với nhiều điều chỉnh và chế độ chuyên nghiệp. +Liên kết của mục này sẽ đưa bạn tới bản của Farter (bản này là một bản đã mod, đã thêm một vài chế độ khác) +Bạn cũng có thể tìm một phiên bản khác có tên là "Tetr.js Enhanced" - bản mod này do Dr Ocelot làm (đã bị gỡ xuống và thay thế bằng Tetra Legends, nhưng cũng bị dừng phát triển hoàn toàn từ T12 / 2020) + +[MrZ: Giao diện đơn giản với hầu như không có bất kỳ animation nào. +Chỉ có một số tổ hợp phím ảo khả dụng cho thiết bị di động.]`,link:"http://farter.cn/t",id:"100c280face148b5188dfd0cb4cd211f0bb9fc0f"},{title:"Tetra Legends",tags:["nhom06","tl","tetralegends"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn + +Gọi tắt là TL. Một tựa game chứa nhiều chế độ chơi đơn + 2 chế độ nhịp điệu. Nó cũng hình dung các cơ chế thường ẩn trong các trò chơi Tetris khác. Quá trình phát triển đã dừng lại hoàn toàn từ T12 / 2020.`,link:"https://tetralegends.app",id:"5d060afe77884aec40364108d41584dd5cce7607"},{title:"Ascension",tags:["nhom06","asc"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến + +Gọi tắt là ASC. Game sử dụng hệ thống xoay có tên là ASC và có nhiều chế độ chơi đơn. Chế độ 1 đấu 1 hiện vẫn còn trong giai đoạn Alpha (tính tới 16 / T4 / 2022). +Chế độ Stack của Techmino cũng bắt nguồn từ game này.`,link:"https://asc.winternebs.com",id:"645c8ce080e0c65dd2490cf4577d0a01af0707e6"},{title:"Jstris",tags:["nhom06","js"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến | Hỗ trợ cảm ứng + +Gọi tắt là JS. Game này có một số chế độ chơi đơn với thông số có thể điều chỉnh được. Có thể điều chỉnh phím ảo trên màn hình, nhưng trò chơi này không có hiệu ứng động nào cả.`,link:"https://jstris.jezevec10.com",id:"e5af3dd8a2d2dc8ff097616d88c6c7cff46e7887"},{title:"TETR.IO",tags:["nhom06","io","tetrio"],category:"game",content:`Chơi trên trình duyệt / client chính thức | Chơi đơn / Chơi trực tuyến + +Gọi tắt là tetrio hoặc IO. Trò chơi này có một hệ thống xếp rank cũng như có chế độ tự do với nhiều thông số có thể tùy chỉnh. Trò chơi này cũng có một client dành cho máy tính, giúp cải thiện tốc độ, giảm độ trễ và bỏ quảng cáo + +[MrZ: Có vẻ như Safari không thể mở game này.]`,link:"https://tetr.io",id:"d8c866cbfb2debeaff1f5472597b0b60e443e04f"},{title:"Nuketris",tags:["nhom06"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến + +Một trò xếp gạch có chế độ 1 đấu 1 có xếp rank + các chế độ chơi đơn thông thường`,link:"https://nuketris.com",id:"7a674d46b1235e2f56bc3b676c0007758490004a"},{title:"Worldwide Combos",tags:["nhom06","wwc","worldwidecombos"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn / Chơi trực tuyến + +Gọi tắt là WWC. Có chế độ 1 đấu 1 toàn cầu: chơi với người thật hoặc chơi với replay; có vài quy tắc khác nhau, với các trận đấu gửi rác bằng bom.`,link:"https://worldwidecombos.com",id:"95a6b080ebfb1d455a0b454ef554d6d3d4142da0"},{title:"Tetris Friends",tags:["nhom06","tetris","friends","tf","tetrisfriends","notrisfoes"],category:"game",content:`Chơi trên trình duyệt / client chính thức | Chơi đơn / Chơi trực tuyến + +Gọi tắt là TF. Một game xếp gạch dùng engine là một plugin đã nghỉ hưu từ năm 2021 (vì vấn đề bảo mật). Từng rất phổ biến trong quá khứ, nhưng tất cả máy chủ chính thức đã đóng cửa từ mấy năm trước. Hiện giờ vẫn còn một máy chủ riêng tên là "Notris Foes". Nhấn vào nút hình địa cầu để mở ở trong trình duyệt`,link:"https://notrisfoes.com",id:"9674c9c443946b9bde5efe0769883c100624e6fb"},{title:"tetris.com [1 / 2]",tags:["nhom06","tetris","tetris.com","online","official"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng + +Game Tetris chính thức từ tetris.com, mà chỉ có một chế độ (Marathon). Bù lại, có hỗ trợ hệ thống điều khiển thông minh bằng chuột`,link:"",id:"b361d86a01eaf1ccd5d8805832f90e02b88c9d6a"},{title:"tetris.com [2 / 2]",tags:["nhom06","tetris","tetris.com","online","official"],category:"game",content:`[Mục này được viết bởi Squishy, chỉ xuất hiện ở bản dịch Zictionary này +Có thể áp dụng cho "Tetris Gems" và "Tetris Mind Bender"] + +Hiện có ba cách điều khiển: hai cách dành cho màn hình cảm ứng gồm "vuốt" (swipe) và "thông minh" (smart), hoặc cắm bàn phím (nếu máy hỗ trợ). +Bạn có thể thử nghiệm với cả ba chế độ điều khiển để tìm xem chế độ nào tối ưu với mình nhất + +Để điều khiển bằng bàn phím thì hãy kết nối bàn phím (miễn là điện thoại nhận được bàn phím thì game cũng sẽ nhận) +Để đổi giữa "vuốt" và "thông minh" thì hãy mở Options của game.`,link:"",id:"8e12dab0ac3f4a822ac31aacc93c1b9639dbfa9d"},{title:"Tetris Gems",tags:["nhom06","tetris","online","official","gem"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng + +Một game xếp gạch khác từ tetris.com +Có cơ chế trọng lực và mỗi ván chỉ kéo dài trong 1 phút. Có 3 loại gem (ngọc) khác nhau với chức năng khác nhau.`,link:"",id:"f04b61008fdb169cccc8c960e62e18a74956fc8e"},{title:"Tetris Mind Bender",tags:["nhom06","tetris","online","official","gem"],category:"game",content:`Chơi trên trình duyệt | Chơi đơn | Hỗ trợ màn hình cảm ứng + +Một game xếp gạch khác từ tetris.com +Một chế độ Marathon vô tận với một mino đặc biệt gọi là "Mind Bender" sẽ đưa cho bạn ngẫu nhiên một hiệu ứng nào đó (có thể là tốt hoặc xấu).`,link:"",id:"a371b0bc3c48927f6285ab002cb9e28589d55d68"},{title:"Techmino",tags:["nhom06"],category:"game",content:`Đa nền tảng | Chơi đơn / Chơi trực tuyến + +Gọi tắt là Tech. Một tựa game xếp gạch được phát triển bởi MrZ (và các thành viên khác trong 26F-Studio). Sử dụng engine LÖVE (love2d). Có rất nhiều chế độ chơi đơn, cũng như có nhiều thông số có thể tùy chỉnh được. Tuy nhiên, chế độ nhiều người chơi hiện tại vẫn đang còn phát triển`,link:"",id:"b44e3a61aa39ed9df6e925b53619af0607a10dc8"},{title:"Falling Lightblocks",tags:["nhom06","fl","fallinglightblocks"],category:"game",content:`Chơi trên trình duyệt / iOS / Android | Chơi đơn / Chơi trực tuyến + +Một game xếp gạch đa nền tảng có thể chơi ở chế độ dọc hoặc ngang. Game này có DAS và ARE khi xóa hàng cố định; và có thể điều chỉnh cơ chế điều khiển trên điện thoại. Hầu hết các chế độ trong game đều được thiết kế dựa trên NES Tetris, nhưng cũng có vài chế độ hiện đại. Chế độ Battle theo kiểu nửa "theo lượt", nửa "theo thời gian thực", rác cũng không vào hàng chờ hay có thể hủy được.`,link:"https://golfgl.de/lightblocks/",id:"f96c5c55878a10f42c552895d49188f2ed2b1ee5"},{title:"Cambridge",tags:["nhom06"],category:"game",content:`Đa nền tảng | Chơi đơn + +Một game xếp gạch được phát triển bằng LÖVE, với mục tiêu là tạo ra một nền tảng mạnh mẽ, dễ dàng tùy chỉnh để tạo ra các chế độ mới. Ban đầu được phát triển bởi Joe Zeng, Milla đã tiếp quản quá trình phát triển từ 08 / T10 / 2020, kể từ V0.1.5. + +- Tetris Wiki`,link:"",id:"ca392dd55a88731012949a3f750b3bf0f0508952"},{title:"Nanamino",tags:["nhom06"],category:"game",content:`Windows / Android | Chơi đơn + +Một trò chơi do fan làm đang được phát triển với hệ thống xoay đặc trưng cực kỳ thú vị,`,link:"",id:"31c53278114d64d8e3ac92b7453c23fabd46e03a"},{title:"TGM",tags:["nhom06","tetrisgrandmaster","tetristhegrandmaster"],category:"game",content:`Máy thùng, và các hệ máy khác* | Chơi đơn / Chơi hai người + +Tetris: The Grand Master, một series Tetris dành cho máy thùng, nổi tiếng với độ khó cực cao - được xem là series game khó nhất (tại thời điểm ra mắt). Những thứ như S13 hay GM cũng từ chính series này. TGM3 được coi là tựa game nổi tiếng nhất của series này. + +(*): Hiện TGM1 và TGM2 đã được port sang PS và Switch dưới gói Arcade Archives.`,link:"",id:"bafc4c3bbcc01230d5aae01c5016c4890d8a1521"},{title:"DTET",tags:["nhom06"],category:"game",content:`Windows | Chơi đơn + +Một game xếp gạch dựa trên quy tắc Cổ điển của TGM + 20G với hệ thống xoay gạch mạnh mẽ. Cơ chế điều khiển tốt nhưng không có tùy chỉnh nào ngoài việc có thể gán lại phím. + +Game này bây giờ hơi khó tìm và bạn có thể phải cài tệp DLL cần thiết bằng tay. Tuy nhiên cũng may là có một bài hướng dẫn cách cài DTET, bạn có thể nhấn nút hình địa cầu để mở bài viết. + +CẢNH BÁO: Hãy cẩn thận khi tải bất cứ thứ gì về, kể cả file DLL hay EXE!`,link:"https://t-sp.in/dtet",id:"5d2322c6a4822a4d27b2663e9d42ce560eacfeb9"},{title:"Heboris",tags:["nhom06","hb"],category:"game",content:`Windows | Chơi đơn + +Một game với phong cách chơi máy thùng, có khả năng mô phỏng nhiều chế độ của các trò chơi Tetris khác.`,link:"",id:"b6290881755b84e35aab37a5164c2d4526a9059a"},{title:"Texmaster",tags:["nhom06","txm"],category:"game",content:`Windows | Chơi đơn + +Một game có tất cả chế độ trong TGM để có thể sử dụng để luyện chơi TGM. Cần lưu ý rằng World Rule trong Texmaster sẽ hơi khác một chút so với TGM, ví dụ như game sử dụng cơ chế "Thả nhẹ-khóa tức thì"* thay vì sử dụng cơ chế "Thả nhẹ" thông thường và bảng kick cũng có đôi chút khác biệt + +(*): Bản Zictionary tiếng Anh ghi là "instant-lock soft drop(s)". Có thể hiểu là bạn giữ nút Thả nhẹ, gạch vừa chạm đất là chốt vị trí đó luôn - giống với các game xếp gạch cổ điển.`,link:"",id:"31a272f537e0d89aadc01668963ab362d8132210"},{title:"Tetris Effect",tags:["nhom06","tec","tetriseffectconnected"],category:"game",content:`PS / Oculus Quest / Xbox / NS / Windows | Chơi đơn / Chơi trực tuyến + +Gọi tắt là TE(C). Một game xếp gạch chính thức với đồ họa và nhạc nền lạ mắt chuyển động theo điều khiển của bạn. Phiên bản cơ bản (Tetris Effect) chỉ có các chế độ chơi đơn. Phiên bản mở rộng, Tetris Effected Connected có 4 chế độ chơi trực tuyến đó là: Connected (VS), Zone Battle, Score Attack, và Classic Score Attack.`,link:"",id:"4b4a75bcba16682ed2a265aacfebcec142481a1d"},{title:"Tetris 99",tags:["nhom06","t99","tetris99"],category:"game",content:`Nintendo Switch | Chơi đơn / Chơi trực tuyến + +Một trò chơi nổi tiếng với chế độ Battle Royale 99 người và có nhiều chiến lược thú vị mà không có trong các game chiến đấu truyền thống. Nó cũng có các chế độ chơi đơn hạn chế như Marathon hay các trận đấu bot có sẵn dưới dạng DLC.`,link:"",id:"2b34a25506deb4be8f3b45bd9f8541d2d6855ab1"},{title:"Puyo Puyo Tetris",tags:["nhom06","ppt","puyopuyotetris"],category:"game",content:`PS / NS / Xbox / Windows | Chơi đơn / Chơi trực tuyến + +Đây là một game được ghép từ hai trò chơi giải đố: Tetris và Puyo Puyo, và bạn có thể chơi đối đầu trong cả hai game này. Có nhiều chế độ chơi đơn và chơi trực tuyến. + +[MrZ: Bản PC (Steam) có cơ chế điều khiển và trải nghiệm trực tuyến khá là tệ.]`,link:"",id:"838b46138bf233c7c473e5e2ba4a3bd132987091"},{title:"Tetris Online",tags:["nhom06","top","tetrisonline"],category:"game",content:`Windows | Chơi đơn / Chơi trực tuyến + +Một game xếp gạch của Nhật Bản đã nghỉ hưu từ lâu. Có chế độ chơi đơn và chơi trực tuyến. Có thể điều chỉnh DAS và ARR (nhưng không thể đặt thành 0). Độ trễ đầu vào nhỏ. Tuy server chính ở Nhật đã bị đóng cửa còn lâu nhưng vẫn còn tồn tại server riêng. Game rất phù hợp cho những người mới bắt đầu.`,link:"",id:"16b111f52a3fbffdccb79672d1922ba24ecbe789"},{title:"Tetra Online",tags:["nhom06","TO","tetraonline"],category:"game",content:`Windows / macOS / Linux | Chơi đơn / Chơi trực tuyến + +Gọi tắt là TO. Một tựa game xếp gạch được phát triển bởi Dr Ocelot và Mine. Các loại độ trễ như AREs được cố tình đẩy ở giá trị cao, và những ai đã từng quen chơi xếp gạch mà có độ trễ thấp / không có độ trễ sẽ khó làm quen với game này +Game đã bị gỡ khỏi Steam vào ngày 9 / T12 / 2020 do TTC gửi thông báo DMCA +Dù sao thì, vẫn còn một bản build có thể tải từ GitHub.`,link:"https://github.com/Juan-Cartes/Tetra-Offline/releases/tag/1.0",id:"20c4307f43674f184deaf184e40a8abd2b338c80"},{title:"Cultris II",tags:["nhom06","c2","cultris2","cultrisii"],category:"game",content:`Windows / OS X | Chơi đơn / Chơi trực tuyến + +Gọi tắt là C2. Được thiết kế dựa trên Tetris cổ điển, Cultris II cho phép bạn có thể điều chỉnh DAS và ARR. Chế độ chiến đấu tập trung vào các combo dựa trên thời gian, thử thách người chơi về mặt tốc độ, n-wide setup và kỹ năng đào xuống của người chơi + +[MrZ: Phiên bản dành cho Mac đã không được bảo trì trong thời gian dài. Nếu bạn đang dùng macOS 10.15 Catalina hoặc macOS mới hơn thì không thể chạy game này.]`,link:"",id:"43e31cf6e3abe2f925529b8089e30936d816df20"},{title:"Nullpomino",tags:["nhom06","np"],category:"game",content:`Windows / macOS / Linux | Chơi đơn / Chơi trực tuyến + +Gọi tắt là NP. Một game xếp gạch chuyên nghiệp có khả năng tùy biến cao. Gần như mọi thông số trong game đều có thể điều chỉnh được. + +[MrZ: Giao diện của game mang phong cách retro. Ngoài ra, game chỉ có thể điều khiển thông qua bàn phím, nên một vài người chơi mới sẽ gặp khó khi làm quen. Ngoài ra, có vẻ như macOS Monterey không thể chạy được game này.]`,link:"",id:"a6bd81b830adca16a2fb72424daab53ccccbf133"},{title:"Misamino",tags:["nhom06"],category:"game",content:`Windows | Chơi đơn + +Chỉ có chế độ chơi 1 đấu 1 với bot, chủ yếu là chơi theo lượt. Bạn có thể viết bot cho game này (nhưng bạn cần phải học API của nó). + +Misamino cũng là tên của bot trong game này.`,link:"",id:"efe566afed212c13d3de24c098dee6e89cb1f6aa"},{title:"Touhoumino",tags:["nhom06"],category:"game",content:`Windows | Chơi đơn + +Một game Tetris do fan làm. Game này là một bản chỉnh sửa của Nullpomino với các yếu tố được thêm vào từ Touhou Project. + +Chế độ Marathon có chứa "Spell Cards" của Touhou Project (thêm hiệu ứng đặc biệt để quấy phá màn chơi), chỉ có thể phá bằng cách đạt được số điểm yêu cầu trong thời gian có hạn. + +[MrZ: Chỉ nên chơi nếu bạn đã có kỹ năng ở mức nào đó*, nếu không, bạn thậm chí không biết mình đã chết như thế nào.] + +(*) Bản Zictionary tiếng Anh ghi là: "half-decent skills", dịch sát nghĩa là "một nửa kỹ năng`,link:"",id:"7039bedf46f079bdb657aa357cc1d8fde7b8fd9b"},{title:"Tetris Blitz",tags:["nhom06","blitz","ea","mobile","phone"],category:"game",content:`iOS / Android | Chơi đơn + +Một game xếp gạch được làm bởi Electronic Arts (EA). Có cơ chế trọng lực, và mỗi ván game chỉ kéo dài trong vòng 2 phút. Game sẽ tạo một cái giếng cao khoảng 10 hàng ở đầu game (và ngay sau khi bạn làm được Perfect Clear). Game có chế độ "Frenzy" có thể kích hoạt bằng cách liên tục xóa hàng; cùng với rất nhiều loại power-up khác nhau, có cả Finisher giúp cho màn chơi kết thúc của bạn thêm đẹp mắt và buff mạnh số điểm của bạn lên. Game không có cơ chế top-out mà thay vào đó game sẽ tự động xóa các hàng trên cùng nếu có gạch chồng lên gạch đã đặt. + +Game đã nghỉ hưu từ T04 / 2020`,link:"",id:"ddc5e03e4fc2572464b2825517cfed62fa43a704"},{title:"Tetris (EA)",tags:["nhom06","tetris","ea","galaxy","universe","cosmos","mobile","phone"],category:"game",content:`iOS / Android | Chơi đơn / Chơi trực tuyến? + +Một tựa game xếp gạch được phát triển bởi EA. Có hai cách điều khiển: Swipe (Vuốt) và One-Touch (Một chạm). Game này có chế độ Galaxy cùng với chế độ Marathon (có cơ chế trọng lực), và mục tiêu của chế độ này là xóa hết tất cả các gạch của Galaxy trước khi hết chuỗi gạch + +Ra mắt lần đầu năm 2011, nghỉ hưu từ T04 / 2020 + +[Sea: game đang nhắc ở đây là bản năm 2011 (phát hành khoảng 2011 - 2012)]`,link:"",id:"e7c4086aadf1f00040390d7d43d42f662e146924"},{title:"Tetris (N3TWORK)",tags:["nhom06","tetris","n3twork","mobile","phone"],category:"game",content:`iOS / Android | Chơi đơn + +Một tựa game xếp gạch, trước đây được phát triển bởi N3TWORK; PlayStudio đã tiếp quản quá trình phát triển từ cuối tháng 11 năm 2021. Có chế độ Chơi nhanh (Ultra nhưng 3 phút), Marathon, chế độ Royale 100 người chơi và chế độ Phiêu lưu (nơi mà bạn sẽ phải hoàn thành mục tiêu của màn chơi chỉ với số bước di chuyển có hạn). + +Từ cuối T11 / đầu T12 / 2022 và sau này, tất cả các tài khoản mới tạo chỉ có thể chơi chế độ Marathon và chế độ Phiêu lưu. + +[MrZ: UI thì tuyệt nhưng cơ chế điều khiển thì tệ] +[Sea: Bạn tốt hơn đi kiếm game khác chứ game này bây giờ rác quá!]`,link:"",id:"ed8eb0e1b78ccba218b6e48dfa35a04efbc76c34"},{title:"Tetris Beat",tags:["nhom06","n3twork","rhythm"],category:"game",content:`iOS | Chơi đơn + +Một game xếp gạch tới từ N3TWORK nhưng chỉ dành cho Apple Arcade. Ngoài chế độ Marathon cổ điển, game giới thiệu một chế độ được gọi là "Beat": người chơi sẽ phải thả gạch theo nhịp của BGM. + +[MrZ: Hiệu ứng của game rất là nặng và cơ chế điều khiển không được lý tưởng]`,link:"",id:"897ef0e0202a8c670aaba9f2ef7a05aa634bf99a"},{title:"Tetris Journey",tags:["nhom06","tetrisjourney","mobile","phone","huanyouji"],category:"game",content:`iOS / Android | Chơi đơn + +(俄罗斯方块环游记) + +Một game xếp gạch đã nghỉ hưu từng được phát triển bởi Tencent dành cho Trung Quốc. +Có 3 chế độ chơi trực tuyến, 4 chế độ chơi đơn cùng với một chế độ dựa trên cấp độ +Mỗi trận trong chế độ chơi trực tuyến dài 2 phút, nếu không ai bị top out thì ai gửi nhiều hàng nhất sẽ giành chiến thắng. + +Có thể điều chỉnh vị trí và kích thước phím ảo, nhưng không thể điều chỉnh DAS và ARR. +Game đã nghỉ hưu từ 15 / T02 / 2023.`,link:"",id:"b222e45b0007457830e0b316c7ea8673d8382ca8"},{title:"JJ Tetris",tags:["nhom06","jjtetris"],category:"game",content:`Android | Chơi trực tuyến + +(JJ块) + +Một game xếp gạch ở trên JJ Card Games (JJ棋牌). Chơi ở màn hình dọc, độ trễ đầu vào thấp, điều khiển mượt. DAS / ARR có thể điều chỉnh được và có thể đổi giữ Thả nhanh / Thả nhẹ, nhưng hạn chế về tùy biến bố cục phím ảo. Không HOLD cũng như B2B, không bộ đệm rác hay cơ chế hủy rác. Mỗi tấn công gửi tối đa 4 hàng, còn cơ chế combo thì "ao chình". Phần còn lại thì tương tự như Tetris hiện đại.`,link:"",id:"285e83ff9265b82bcd335e7ac47901f45ff94b4b"},{title:"Huopin Tetris",tags:["nhom06","huopin","qq"],category:"game",content:`Windows | Chơi trực tuyến + +(火拼俄罗斯) + +Một game xếp gạch ở trên Tencent Game Center - một nền tảng chơi game trực tuyến dành riêng tại Trung Quốc. Có bảng rộng 12 ô, 1 NEXT, 0 HOLD, DAS và ARR giống với DAS và ARR hay dùng trong các app gõ văn bản. Chỉ có thể gửi rác bằng Tetris (gửi 3 hàng rác) và xóa 3 hàng (gửi 2 hàng rác). Hàng rác có cấu trúc xen kẽ và gần như không thể đào.`,link:"",id:"ea31cc29cf88efc1cf5893fd89997d17dc27348e"},{title:"=[NHÓM 07]=",tags:["nhom07"],category:"",content:"NHÓM 07: MỘT VÀI CƠ CHẾ VÀ CHẾ ĐỘ CỦA MỘT SỐ GAME",link:"",id:"243cdca7b0a6bb1f99af6e9c1f109f6460f2f61d"},{title:"Tàng hình một phần",tags:["nhom07","half","invisible","semi"],category:"term",content:'Tên tiếng Anh: Semi-invisible\\nChỉ một quy tắc trong đó gạch sẽ tàng hình sau một khoảng thời gian từ lúc nó được đặt xuống.\\nKhoảng thời gian đó thường không được cố định, nên vẫn có thể mô tả nó là \\"biến mất sau một vài giây\\".',link:"",id:"2d035a9574e6023eb09b8f35c8c1cf3c452a4b8e"},{title:"Tàng hình",tags:["nhom07","invisible"],category:"term",content:'Tên tiếng Anh: Invisible\\nChỉ một quy tắc trong đó gạch sẽ tàng hình ngay lập tức sau khi đặt xuống\\n \\nNếu mode tàng hình hoàn toàn mà có hiệu ứng biến mất thì vẫn được chấp nhận. Tuy nhiên, nó làm game dễ hơn đôi chút\\n\\nỞ Techmino, chế độ tàng hình mà không có hiệu ứng biến mất được gọi là \\"sudden invisible.\\',link:"",id:"9b746f2500936729ca9b2a4a9f50eebd690dedab"},{title:"Chế độ MPH",tags:["nhom07","mph"],category:"term",content:'Sự kết hợp của ba quy tắc:\\n\\n\\"Memoryless - Không nhớ gì\\" (chuỗi gạch tạo ra hoàn toàn ngẫu nhiên)\\n\\"Previewless - Không biết trước gạch nào sẽ tới\\" (không có hàng NEXT)\\n\\"Holdless- Không có ô HOLD\\".\\n\\nMột chế độ đòi hỏi tốc độ và phản ứng nhạy bén từ người chơi.',link:"",id:"d06870134d79e48146554b26cc577d0845dd200e"},{title:"Secret Grade",tags:["nhom07","larger","than",">","<"],category:"term",content:'Một easter egg trong series TGM.\\n\\nĐể có được \\"secret grade\\", người chơi sẽ làm một đường dích dắc (zigzag) (trông giống như \\">\\" hay \\"<\\") bằng cách tạo ra 1 ô trống duy nhất cho từng hàng. Mục tiêu cuối cùng là hoàn thành đường dích dắc cao (hơn) 19 hàng.\\n\\nNhấn vào nút hình địa cầu để xem các kỹ thuật dùng để đạt được Secret Grade.',link:"https://harddrop.com/wiki?search=Secret_Grade_Techniques",id:"c1ea852455df70659574fb0b5955f24e1f2430c7"},{title:"Deepdrop (Rơi sâu)",tags:["nhom07"],category:"term",content:"*Chỉ có trên Techmino*\\n\\nMột chức năng cho phép cho phép gạch có thể teleport xuyên đất để xuống phía dưới. Khi gạch đụng vào gạch đã đặt, nhấn phím Thả nhẹ để kích hoạt Deepdrop. Nếu có một cái lỗ phù hợp với hình dạng của gạch ở dưới vị trí gạch đang rơi, gạch sẽ được teleport vào lỗ đó.\\nCơ chế này đặc biệt hữu ích cho AI vì nó cho phép AI bỏ qua sự khác biệt giữa các hệ thống xoay khác nhau.",link:"",id:"9f09fb6bfecd43a3ed30d2e51a85854dcd90eea0"},{title:"=[NHÓM 08]=",tags:["nhom08"],category:"",content:"NHÓM 08: BOT",link:"",id:"a98d880dc385583a997c9619bd9eb65ad97da5e9"},{title:"Cold Clear",tags:["nhom08","cc","coldclear","ai","bot"],category:"term",content:"Một bot chơi Tetris. Được viết bởi MinusKelvin, ban đầu được viết cho Puyo Puyo Tetris.\\nBản Cold Clear ở trong Techmino có hỗ trợ All-spin và hệ thống TRS (nhưng không hỗ trợ O-spin).",link:"",id:"fe8bc5b17172626df7e12d9116c6e7bc4767165d"},{title:"ZZZbot",tags:["nhom08","ai","bot","zzztoj"],category:"term",content:"Một bot chơi xếp gạch. Được viết bởi một người chơi Tetris Trung Quốc có tên là 奏之章 (Zòu Zhī Zhāng) và hoạt động khá tốt trong nhiều game (sau khi điều chỉnh các thông số cần thiết).\\nBạn cũng có thể sử dụng bot này trên TETR.IO.",link:"",id:"2c6101494fda7d74bd4c1c0d764608d61b32f7be"},{title:"=[NHÓM 09]=",tags:["nhom09"],category:"",content:"NHÓM 09: WIKI; CÁC TRANG WEB BÀY SETUP,\\nCUNG CẤP CÂU ĐỐ & CHIA SẺ SETUP",link:"",id:"782bff73a7d00bf7d4d2637f79914a17adb22608"},{title:">A|Wiki",tags:["nhom09a"],category:"",content:"",link:"",id:"04b57c88eef668d6d8e85598b3f129e69e8d97bf"},{title:"Huiji Wiki",tags:["nhom09a","huiji","wiki"],category:"help",content:"(灰机wiki)\\n\\nMột wiki về Tetris của những người đam mê Tetris từ các nhóm và chi nhánh của Cộng đồng Nghiên cứu Tetris Trung Quốc. Hiện tại hầu hết các trang đều được tham khảo và dịch từ Wiki Hard Drop và Tetris Wiki. Liên kết sẽ dẫn bạn tới bản tiếng Trung giản thể.",link:"https://tetris.huijiwiki.com",id:"b3066d268e915afb5b1ed4035910ee0d86d7bcea"},{title:"Wiki Hard Drop",tags:["nhom09a","harddrop","hd","wiki"],category:"help",content:"Một wiki về Tetris được host bởi cộng đồng Hard Drop.",link:"https://harddrop.com/wiki/Tetris_Wiki",id:"e1b4dbcab8143995232d84f33db1b8ee46d9e69c"},{title:"Tetris.wiki",tags:["nhom09a","tetris","wiki"],category:"help",content:"Một wiki tập trung vào các nội dung liên quan đến Tetris. Wiki được tạo ra từ năm 2015 bởi Myndzi. Trong những năm qua, hàng nghìn đóng góp đã được thực hiện để ghi lại các game xếp gạch chính thức và các game do fan làm, các series, những cơ chế của game,… cũng như tạo ra những bài hướng dẫn để cải thiện trải nghiệm chơi.",link:"https://tetris.wiki",id:"3ce6495bda9a492f0a80d77964220ba72f115a3a"},{title:"Tetris Wiki Fandom",tags:["nhom09a","tetris","wiki","fandom"],category:"help",content:"Cũng là một wiki về Tetris nhưng nó ở trên Fandom",link:"https://tetris.fandom.com/wiki/Tetris_Wiki",id:"90062d5081d44f5297a1a2a8a9b69d832e6507b7"},{title:">B|Câu đố",tags:["nhom09b"],category:"",content:"NHÓM 09B: CÁC TRANG WEB CUNG CẤP CÂU ĐỐ",link:"",id:"1d90b0ee512c67d5486b93579370d142c6723052"},{title:"TTT",tags:["nhom09b","tetris","trainer","tres","bien","T.T.T."],category:"game",content:`Tetris Trainer Très-Bien (viết bởi こな "kona"). Một website chứa các hướng dẫn thực hành các kỹ thuật nâng cao trong Tetris hiện đại (lưu ý: website này chỉ hỗ trợ bàn phím vật lý, không hỗ trợ bàn phím ảo). +Đề xuất cho những người chơi có thể hoàn thành chế độ 40L chỉ làm Tetris + không dùng Hold +Website này đề cập tới T-spin, finesse, SRS và một số setup để chơi Battle +Liên kết sẽ dẫn bạn tới phiên bản tiếng Anh, được dịch bởi User670 (Bản gốc là bản tiếng Nhật).`,link:"https://user670.github.io/tetris-trainer-tres-bien/",id:"71d9d1b69264d227c5b4766f2ebfbac701d41b45"},{title:"TTPC",tags:["nhom09b","tetris","perfect","clear","challenge","T.T.P.C"],category:"game",content:`Tetris Perfect Clear Challenge (viết bởi chokotia). Một website hướng dẫn bạn cách làm Perfect Clear khi sử dụng hệ thống xoay SRS và Bag-7 (chỉ hỗ trợ bàn phím). Đề xuất sử dụng nếu bạn đã hoàn thành TTT và đã làm quen với SRS + +Liên kết sẽ dẫn bạn tới phiên bản tiếng Anh, bản gốc là tiếng Nhật`,link:"https://teatube.cn/ttpc/ttpc/",id:"788e505b25eabcdc0100002f72a2ddd424d3b3eb"},{title:"NAZO",tags:["nhom09b"],category:"game",content:`(ナゾ) + +Một website chứa các loại câu đố SRS từ dễ đến cực kỳ khó, bao gồm T-spin và All spin. Đề xuất cho những người đã hoàn thành TTT. + +Liên kết sẽ dẫn bạn tới bản tiếng Trung Giản thể, nguyên bản bằng tiếng Nhật.`,link:"https://teatube.cn/nazo/",id:"741b2e6dc8778917dfde9ac1a18120b36708bfd3"},{title:"TPO",tags:["nhom09b","nazo","T.P.O"],category:"game",content:"Tetris Puzzle O. Một trang web bằng tiếng Nhật được viết bởi TCV100 (có lấy một vài câu đố từ NAZO sang).",link:"http://121.36.2.245:3000/tpo",id:"f75b34a257eb4589bb9da8a8bae8dc4ba6c2a8d4"},{title:"4-wide Trainer",tags:["nhom09b","nazo"],category:"game",content:"Một công cụ được viết bởi DDRKirby(ISQ) để học & làm quen 4-wide.",link:"https://ddrkirby.com/games/4-wide-trainer/4-wide-trainer.html",id:"083f48aa72654b5afce732b2f654c9dbdcd7f378"},{title:">C|Setup",tags:["nhom09c"],category:"",content:"NHÓM 09C: CÁC TRANG WEB BÀY SETUP",link:"",id:"7ec9157be0567a75744b5e31c784f4e3093f1fcd"},{title:"Four.lol",tags:["nhom09c","four","wiki"],category:"help",content:"Một website chứa các setup để làm opener",link:"https://four.lol",id:"8fdd85b06a22cc54cde1da6b6b906b69c43976b4"},{title:"‘Tetris Hall’",tags:["nhom09c","tetris","hall"],category:"help",content:"(テトリス堂)\\n\\nMột trang web tiếng Nhật, chứa nhiều setup, hướng dẫn cũng như có các minigame. Nó cũng có mô tả chi tiết về PC liên tiếp",link:"https://shiwehi.com/tetris/",id:"28d4411a1afd7846156edc4b96a6502dc650895c"},{title:"‘Tetris Template Collections’",tags:["nhom09c","tetris","template","collections"],category:"help",content:"(テトリステンプレ集@テト譜)\\n\\nMột trang web tiếng Nhật với các setup và các danh mục chi tiết. Hầu hết các setup đều có ảnh minh họa, vì vậy việc chia sẻ với người khác sẽ dễ dàng hơn.",link:"https://w.atwiki.jp/tetrismaps/",id:"5de3300951a61087ecb9cf4fd23fb76aafd55258"},{title:"tetristemplate.info",tags:["nhom09c"],category:"help",content:"(テトリスブログ - PerfectClear)\\n\\nMột trang web ở Nhật Bản chứa một số setup. Tuy số lượng không bằng các trang web khác nhưng bù lại các setup đều được giải thích rất chi tiết",link:"https://tetristemplate.info/",id:"6572160a0dc40c4c77efc706e93837605e9c3d32"},{title:">D|Chia sẻ setup",tags:["nhom09d"],category:"",content:"NHÓM 09D: CÁC TRANG WEB CHIA SẺ SETUP",link:"",id:"8a1c9097f012b946d14ada473c382b9855594318"},{title:"Fumen",tags:["nhom09d"],category:"help",content:"Đây là một công cụ chỉnh sửa bảng dành cho Tetris bằng tiếng Nhật. Thường được sử dụng để chia sẻ setup, PC solution (hướng đi để làm PC), v.v.\\nLiên kết của mục này sẽ dẫn bạn tới bản tiếng Anh.",link:"http://fumen.zui.jp/#english.js",id:"68197b2e0f89fcdc10577517e47572d90cb1843a"},{title:"Fumen bản Đ.thoại",tags:["nhom09d","fumenformobile","fm"],category:"help",content:"Fumen for Mobile (Fumen bản dành cho Điện thoại)\\nCũng là Fumen nhưng hỗ trợ cho màn hình cảm ứng",link:"https://knewjade.github.io/fumen-for-mobile/",id:"797553c87ac1b8b63b92e619a4c17f8774185fde"},{title:"=[NHÓM 10]=",tags:["nhom10"],category:"",content:"NHÓM 10: CỘNG ĐỒNG",link:"",id:"eae17ae001f6d36996a33ae818e73f7174972078"},{title:"Tetris OL Servers",tags:["nhom10","tetrisonline","servers","tos"],category:"org",content:'Hãy lên Google tra \\"Tetris Online Poland\\" để tìm server ở Ba Lan.\\nCòn nếu tìm server Tetris Online Study được đặt tại Trung Quốc (cung cấp bởi Teatube) thì nhấn vào nút hình địa cầu',link:"https://teatube.cn/tos/",id:"53b30a9bdad30dfb969678a1b954156a65bc9e49"},{title:"Tetris Việt Nam",tags:["nhom10","community","vietnam","tetris","việt","nam"],category:"org",content:`Một trong những cộng đồng xếp gạch tại Việt Nam. Đây là nơi chia sẻ kinh nghiệm và thông tin: bao gồm cả game, các giải đấu và các sự kiên liên quan đến xếp gạch. + +Nhấn nút hình địa cầu để vào server Discord, còn nếu muốn vào nhóm Facebook thì hãy vào Facebook và tìm nhóm "Tetris Việt Nam".`,link:"https://discord.gg/jX7BX9g",id:"a5cd01860fc671cebafc8270bf4aa99bb058d621"},{title:"=[NHÓM 11]=",tags:["nhom11"],category:"",content:"NHÓM 11: XẾP LÊN VÀ ĐÀO XUỐNG",link:"",id:"1816caf61b243fd228668ffdd16adf60a0a8627c"},{title:"A|Stacking",tags:["nhom11a"],category:"",content:"NHÓM 11A: STACKING (XẾP LÊN)\\n\\nDùng để chỉ việc xếp các gạch làm sao mà không để lại một cái lỗ.\\nĐây là kỹ năng càn thiết yêu càu khả năng tận dụng hàng NEXT.\\nBạn có thể cải thiện kỹ năng này bằng cách luyện tập 40L với 0 HOLD",link:"",id:"5655035f52e93885bc666b700c5c6c17c9eb2c5d"},{title:"Side well",tags:["nhom11a","ren","combo","sidewell"],category:"term",content:"Một phương pháp xếp gạch đặc biệt mà bạn sẽ để lại một cái lỗ có một chiều rộng nhất định ở một bên bảng.\\n\\nCó 4 loại setup này: Setup Side 1-wide là setup truyền thống để làm Tetris (ví dụ như, Side well Tetris). Các loại setup như Side 2-, 3-, hay 4-wide; là những setup được dùng để làm combo.\\n\\nĐối với những người chơi mới, đây là cách hiệu quả nhất để tấn công.\\n\\nNHƯNG, đối thủ có thể dễ dàng tấn công lại bạn, một là chết còn không thì stack của bạn sẽ bị cắt ngắn do bạn phải phản công lại.\\nTrong thực tế, setup này chỉ dùng sau khi dùng setup T-spin nào đó hoặc là đối thủ chưa thể tấn công ngay; khi đó, side well có thể được sử dụng để tăng số cú tấn công tức thì.",link:"",id:"a0240cd8a4faf6cf6842388be03766059dbb81b1"},{title:"Center well",tags:["nhom11a","ren","combo","centerwell"],category:"term",content:"Một phương pháp xếp gạch mà bạn sẽ để lại một cái giếng có chiều rộng nhất định ở giữa bảng. Bạn cũng có thể tránh bị top-out nếu giếng đủ rộng.",link:"",id:"58fa0a0bf0387857f2d9dae6fad86695f7b00ae4"},{title:"Partial well",tags:["nhom11a","ren","combo","partialwell"],category:"term",content:"Một phương pháp xếp gạch mà bạn sẽ để lại một cái giếng có chiều rộng nhất định nhưng không ở giữa hay một bên bảng.",link:"",id:"6200b2023b492893a872a9053da1f6fc7138b818"},{title:"Side 1-wide",tags:["nhom11a","s1w","side1wide","sidewelltetris"],category:"term",content:'Hay còn gọi là S1W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 1 ô ở một bên bảng.\\n\\nĐây được coi là setup / cách chơi xếp gạch kinh điển nhất\\n\\nNhững người mới tập chơi có thể dùng setup này để gửi Tetris, vì chúng có thể tấn công tốt trong một thời gian ngắn.\\nTuy nhiên, những người chơi giỏi hơn thường sẽ không dùng setup này do ít hiệu quả + dễ bị tấn công trong lúc xây → dễ bị game over; họ chỉ xây S1W nếu như tình hình hiện tại đủ thuận lợi cho setup này.\\n\\nSetup này còn được biết tới với cái tên \\"Side well Tetris\\".',link:"",id:"925c4826b57231e3f6271e8d9d79f5f892e8604d"},{title:"Side 2-wide",tags:["nhom11a","s2w","side2wide","sidewell"],category:"term",content:"Hay còn gọi là S2W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 2 ô ở một bên bảng.\\n\\nS2W rất dễ xây và có thể tạo ra combo khá dài khi kết hợp với HOLD.\\nTuy nhiên, những người chơi giỏi hơn cũng sẽ ít khi dùng setup này vì các lý do tương tự như S1W.",link:"",id:"947eff513868be5c761b7a187883a05176c7bc9c"},{title:"Side 3-wide",tags:["nhom11a","s3w","side3wide","sidewell"],category:"term",content:"Hay còn gọi là S3W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 3 ô ở một bên bảng.\\n\\nĐây là setup it phổ biến hơn so với Side 2-wide.\\n\\nMặc dù khi so sánh, S3W có thể làm nhiều combo hơn so với S2W nhưng S3W hay dễ bị hỏng combo.",link:"",id:"1b780e9fef6c285b10ad9a6d5e4381bfc11d1534"},{title:"Side 4-wide",tags:["nhom11a","s4w","side4wide","sidewell"],category:"term",content:"Hay còn gọi là S4W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 4 ô ở một bên bảng.\\n\\nĐây là setup phổ biến dùng để làm combo.\\n\\nNgoài việc tạo ra được những combo dài hơn, S4W lại tốn ít thời gian hơn để xây so với setup side well khác. Việc này cho phép người chơi gửi tấn công sớm hơn trước khi đối thủ có thể trở tay kịp.\\n\\nSo với C4W, S4W được coi là cân bằng hơn vì người chơi có thể bị top-out trong khi đang xây setup này.",link:"",id:"acf005a3adc32aa0b212bc58cf7a937f21081685"},{title:"Center 1-wide",tags:["nhom11a","c1w","center1wide","centerwelltetris"],category:"term",content:"Hay còn gọi là C1W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 1 ô ở giữa bảng.\\n\\nChủ yếu dùng trong combat bởi vì cho phép làm Tetris và T-spin trong khi nó không quá khó để làm.",link:"",id:"c25f07d5e9445f1d32a8c08a5aec9b50e8063fcc"},{title:"Center 2-wide",tags:["nhom11a","c2w","center2wide"],category:"term",content:"Hay còn gọi là C2W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 2 ô ở giữa bảng.\\n\\nĐây là một setup combo có thể làm được nhưng ít phổ biến lắm.",link:"",id:"2e85bd6062974ccbd7deda1e0af80d2d41fd46f4"},{title:"Center 3-wide",tags:["nhom11a","c3w","center3wide"],category:"term",content:"Hay còn gọi là C3W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 3 ô ở giữa bảng.\\n\\nĐây là một setup combo có thể làm được nhưng ít phổ biến lắm.",link:"",id:"346e3a3e9e42b25edbada824c6d522a7dab3d49f"},{title:"Center 4-wide",tags:["nhom11a","c4w","center4wide"],category:"term",content:"Hay còn gọi là C4W.\\nVới setup này bạn sẽ xây một cái giếng sâu rộng 4 ô ở giữa bảng.\\n\\nĐây là một setup khét tiếng có thể tạo ra lượng combo rất lớn nếu người xây tận dụng tốt.\\nSetup này rất dễ xây, và có khả năng phòng thủ tốt trước các đòn tấn công bằng cách lợi dụng một lỗ hổng khi kiểm tra điều kiện chết trong (đa số) các game xếp gạch.\\n\\nRất nhiều người chơi ghét setup này vì nhiều lý do khác nhau; nhưng chủ yếu là vì phần thắng luôn thuộc về những người dùng setup này.\\nHãy cẩn thận khi dùng setup này trong các trận đấu thực tế.",link:"",id:"23141a356aeb11accae01d33da3d2608c264400f"},{title:"Residual",tags:["nhom11a","c4w","s4w"],category:"term",content:"Thuật ngữ này đề cập đến số ô gạch được để dư trong cái giếng sau khi xây xong setup 4-wide.\\nCác combo dài chủ yếu được thực hiện bằng cách dùng 3-residual (3-res) hay 6-residual (6-res).\\n\\n3-res dễ học hơn tại vì nó có ít biến thể hơn và có cơ hội cao để tạo ra combo dài hơn\\n6-res linh hoạt hơn nhiều đồng nghĩa với việc khó nhớ hơn, nhưng combo tạo ra lại dài hơn 3-res nếu mọi thứ thuận lợi.\\n\\nNói chung, thứ tự ưu tiên của setup này là 6-res, rồi 3 sau đó 5, và cuối cùng là 4-res.",link:"",id:"d32a745334d3ce125b1653483dd243c10f21a17b"},{title:"6 - 3 Stacking",tags:["nhom11a","63stacking","six-three","sixthree"],category:"term",content:"Một phương pháp để xếp gạch đặc biệt, khi bạn sẽ phải tạo ra một bức tường cao rộng 6 ô ở bên trái và một bức tường cao nữa rộng 3 ô ở bên phải.\\n\\nĐối với một người chơi có kỹ năng, phương pháp cho phép người chơi giảm số phím cần nhấn, và đây là một phương pháp phổ biến để chơi Sprint (như 10 hàng, 20 hàng, 40 hàng,…). Phương pháp này hoạt động được nhờ việc vị trí xuất hiện của 3 gạch J, L, T hay dịch về bên trái 1 ô.\\n\\nNhắc nhẹ: Phương pháp này CÓ THỂ tăng số lần nhấn phím ở người mới tập chơi.",link:"",id:"cbb6156cbd7cc08b97a5b0c5badfe86aff1ff970"},{title:">B|Digging",tags:["nhom11b"],category:"",content:"Digging (Đào xuống)\\nCòn được biết tới với tên là Downstacking\\n\\nDọn hàng rác để tiếp xúc đáy bảng.",link:"",id:"78bee480e1ce8fcbcd48a5cc8d38ca5ab41b6768"},{title:"=[NHÓM 12]=",tags:["nhom12"],category:"",content:"NHÓM 12: Setup (Opener, Mid-game setup, Donation)",link:"",id:"15ecf9228c926cff650e2e4cd5c45f05aa793283"},{title:">A|Opener",tags:["nhom12a","opener"],category:"",content:`NHÓM 12A: OPENER +Opener thường là các setup thường dùng ở đầu trận. Bạn vẫn có thể làm những setup này giữa trận, nhưng thường sẽ yêu cầu một tập hợp các vị trí gạch khác nhau. + +Opener phải đạt 2 trong 4 tiêu chí sau +- Có thể thích ứng với các chuỗi gạch khác nhau, +- Tấn công mạnh, ít lãng phí gạch T +- Dùng Finesse trong đa số hành động, ít dùng thả nhẹ +- Có chiến lược rõ ràng và ít nhánh / biến thể. + +Đa số opener được thiết kế cho kiểu xáo Túi 7. Chúng có thể không hoạt động với các kiểu xáo khác.`,link:"",id:"cbfbfce08ebf5a4f68b1f6c6cf35de2c6e003fca"},{title:"DT Cannon",tags:["nhom12a","opener","dtcannon","doubletriplecannon"],category:"setup",content:"Double-Triple Cannon (Súng thần công T-spin Đôi-Tam).\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=dt",id:"b7dca635191ef93f5bd3c0c4dcc6465452951f40"},{title:"DTPC",tags:["nhom12a","opener","dtcannon","doubletriplecannon"],category:"setup",content:"Phần tiếp theo của DT Cannon kết thúc bằng All Clear.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=dt",id:"3c5b6c5f8c67d7ca3793cff41459a3849a74053e"},{title:"BT Cannon",tags:["nhom12a","opener","btcannon","betacannon"],category:"setup",content:"β Cannon, Beta Cannon.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=bt_cannon",id:"6e0f95b11fd26854d65eceebb9b563d6baacf9cd"},{title:"BTPC",tags:["nhom12a","opener","btcannon","betacannon"],category:"setup",content:"Phần tiếp theo của DT Cannon kết thúc bằng All Clear.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=bt_cannon",id:"201d3c88de4404b1647fff86ba92a27b6959eacd"},{title:"TKI 3 Perfect Clear",tags:["nhom12a","opener","ddpc","tki3perfectclear"],category:"setup",content:"Một opener làm TSD dẫn đến Double-Double-All Clear.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=TKI_3_Perfect_Clear",id:"7a8068258cb3a9856b10bc2f582e4e2e5f761f51"},{title:"QT Cannon",tags:["nhom12a","opener","qtcannon"],category:"setup",content:"Một setup gần giống với DT Cannon và khả năng gửi DT Attack¹ cao.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop\\n\\n¹: DT Attack = T-spin Double + T-spin Triple",link:"https://harddrop.com/wiki?search=QT_cannon",id:"5aab9280708179c398e946086be6ef7a089b2ee7"},{title:"Mini-Triple",tags:["nhom12a","opener","mt","minitriple"],category:"setup",content:"Một setup làm Mini T-spin và T-spin Triple.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=mt",id:"e52160963ee209c45ed884fa82cffec79586a7b7"},{title:"Trinity",tags:["nhom12a","opener"],category:"setup",content:"Một setup làm TSD + TSD + TSD hoặc TSMS + TST + TSD. Để có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=trinity",id:"911d077de03982a50738101497a7af399bcaefc2"},{title:"Wolfmoon Cannon",tags:["nhom12a","opener","wolfmooncannon"],category:"setup",content:"Một opener.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=wolfmoon_cannon",id:"80c1fb840f781d41f159c481f3cb7415d88b5706"},{title:"Sewer",tags:["nhom12a","opener"],category:"setup",content:"Một opener.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=sewer",id:"14290bc66fd877b60151616eb17365bcee5477ae"},{title:"TKI",tags:["nhom12a","opener","tki-3","tki3"],category:"setup",content:"TKI-3. Có thể chỉ TKI-3 bắt đầu bằng một TSD hoặc C-spin bắt đầu bằng một TST.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=tki_3_opening",id:"def33bada80d3a7cb798e5d5b02cf129cd624097"},{title:"God Spin",tags:["nhom12a","opener","godspin"],category:"setup",content:"Một setup nhìn đẹp mắt [nhưng khó sử dụng trên thực tế]. Được phát minh bởi Windkey.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=godspin",id:"f4ecaf38f9adae8c0124c279cd1b404c5555bf08"},{title:"Albatross",tags:["nhom12a","opener"],category:"setup",content:"Một opener nhìn đẹp mắt, nhịp độ nhanh với TSD - TST - TSD - All Clear, khó mà lãng phí được gạch T.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Albatross_Special",id:"47ebe12f4d769df30ee91590082c15f9a05af93f"},{title:"Pelican",tags:["nhom12a","opener"],category:"setup",content:"Một opener kiểu Alabatross được sử dụng trong trường hợp trật tự gạch tới không ủng hộ opener Alabatross gốc.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Pelican",id:"96fafbede9d43aa8c9e271d737200b55ae67b443"},{title:"Perfect Clear Opener",tags:["nhom12a","opener","7piecepuzzle"],category:"setup",content:"Một opener làm All Clear có khả năng thành công cao (~84.6% nếu bạn đang giữ I trong ô HOLD và ~61.2% nếu không giữ).\\n\\nTrong chế độ PC Training (Luyện tập PC), setup này được sử dụng để tạo ra setup chưa hoàn chỉnh, không tạo ra lỗ.\\n\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Perfect_Clear_Opener",id:"ce2db6dbe071f5f8b67ae79aac9ce7a5199eeb5f"},{title:"Grace System",tags:["nhom12a","opener","gracesystem","1stpc"],category:"setup",content:"Một opener làm PC có khả năng thành công ~88.57%. Lỗ hình vuông 4 × 4 trong chế độ PC Training cũng dựa trên setup này.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên Four.lol",link:"https://four.lol/perfect-clears/grace-system",id:"851979f05f51cfd8a6279c749f0a75752a56e1b4"},{title:"DPC",tags:["nhom12a","opener"],category:"setup",content:"Một setup làm TSD + PC gần như 100% không có gạch nào trong bảng và gạch cuối cùng trong Túi 7 gạch trong hàng đợi NEXT.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên tetristemplate.info.",link:"https://tetristemplate.info/dpc/",id:"d568180d2c1ea8330d6bcd939fa9bd5d85cf9aec"},{title:"Gamushiro Stacking",tags:["nhom12a","opener"],category:"setup",content:"(ガムシロ積み) Một opener làm TD Attack (TD Attack = T-spin Triple + T-spin Double).\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Gamushiro_Stacking",id:"778b75a6a4ccde51b4bc60cc20293650951e1c63"},{title:">B|Mid-game",tags:["nhom12b","midgame","mid-game"],category:"",content:"NHÓM 12B: MID-GAME SETUP\\n\\nChỉ những setup cho phép gửi nhiều rác giữa trận. Một số có thể dùng làm opener, nhưng hầu như chúng không cần thiết.",link:"",id:"24dc40e8bb63349e3b09e635b8ea25090e5e2f60"},{title:"C-spin",tags:["nhom12b","midgame","mid-game","cspin"],category:"pattern",content:"Một setup gửi tấn công bằng T-spin Triple + T-spin Double, known as TKI in Japan.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=c-spin",id:"28581dd8fea5d6e5eaed2ff4eb8b5dc94964edfa"},{title:"STSD",tags:["nhom12b","midgame","mid-game"],category:"pattern",content:"Super T-spin Double, một setup cho phép làm T-spin Double.\\nNhưng nếu có rác ngay dưới setup này thì không tài nào làm T-spin Double được\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=stsd",id:"61e264873c7bd3df7b83fc30f1662d0e572d6032"},{title:"Fractal",tags:["nhom12b","midgame","mid-game","fractal","spider"],category:"pattern",content:"Một setup dùng để làm T-spin.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Fractal",id:"9074eb8259957b206d48102e5cfac9c4d6b87136"},{title:"LST stacking",tags:["nhom12b","midgame","mid-game"],category:"pattern",content:"Một setup dùng để làm T-spin với số lượng vô tận.",link:"https://four.lol/stacking/lst",id:"eef4869b8e0e95980d4504a5c5dd3ce0a9eb9743"},{title:"Imperial Cross",tags:["nhom12b","midgame","mid-game","imperialcross"],category:"pattern",content:"Che lỗ hình chữ thập bằng phần nhô ra để thực hiện hai lần T-spin Double\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=imperial_cross",id:"2dc9616322ede73254886a61f0c0eb57b39ac062"},{title:"King Crimson",tags:["nhom12b","midgame","mid-game","kingcrimson"],category:"pattern",content:"Xếp chồng để làm (các) TSD trên STSD.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=King_Crimson",id:"e5af8685b71405df0902fe100d06db57032c2c53"},{title:"PC liên tiếp [1/2]",tags:["nhom12b","midgame","mid-game","pcloop"],category:"pattern",content:"four.lol có hướng dẫn cách làm Perfect Clear liên tiếp. Sau khi hoàn thành PC thứ 7 khi bạn cũng vừa xài đúng 70 gạch (10 túi 7 gạch) nên bạn có thể quay về PC thứ nhất.\\n\\nNhấn nút hình địa cầu để xem setup cho PC thứ nhất (để xem các setup sau, hãy thay 1st trong link bằng 2nd / 3rd / 4th / 5th / 6th / 7th)",link:"https://four.lol/perfect-clears/1st",id:"8ec3440c009d06b37f33a1dcec8641757b6a6611"},{title:"PC liên tiếp [2/2]",tags:["nhom12b","midgame","mid-game","pcloop"],category:"pattern",content:"Một hướng dẫn làm vòng lặp PC hoàn chỉnh được viết bởi NitenTeria.",link:"https://docs.qq.com/sheet/DRmxvWmt3SWxwS2tV",id:"6423ee44f49c51659880da098bedd59569032937"},{title:">C|Donation",tags:["nhom12c","donation","pattern"],category:"",content:'NHÓM 12C: DONATION\\n\\nBiến một hố hoặc một cái giếng (ban đầu được tính để làm Tetris) thành setup T-spin bằng cách \\"cắm thêm gạch vào\\". Sau khi làm T-spin, hố đó sẽ được mở ra để cho phép bạn làm Tetris hoặc làm donation khác. \\"Cắm thêm gạch\\" vào hố hoặc giếng vốn không được tính để làm Tetris thì vẫn có thể gọi là \\"donation\\" như thường.',link:"",id:"01d73bb85a43ecc084a1dadb32d7ac37c99bd19d"},{title:"STMB Cave",tags:["nhom12c","donation","pattern","stmb"],category:"pattern",content:"STMB cave, một setup dạng donation bằng cách sử dụng S / Z để bịt tường rộng 3 ô và làm T-spin Double.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=stmb_cave",id:"e09adc791be46903e0475905ee57d6565b963e80"},{title:"Hamburger",tags:["nhom12c","donation","pattern"],category:"pattern",content:"Một setup dạng donation setup dùng để tạo cơ hội có thể làm Tetris.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=hamburger",id:"a1b3f0e1d4fcb2d33d4c4e4744956be3c3e4e8d6"},{title:"Kaidan",tags:["nhom12c","donation","pattern","kaidan","stairs"],category:"pattern",content:"Một setup dạng donation có thể làm TSD trên địa hình cầu thang.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=kaidan",id:"df668e737e9af15b2d556fb36fba25e0c0f46fd9"},{title:"Shachiku Train",tags:["nhom12c","donation","pattern","shachikutrain","shechu"],category:"pattern",content:"Một setup dạng donation cho phép làm thêm hai TSD từ setup TST.\\nĐể có thêm thông tin, bạn có thể nhấn nút hình địa cầu để mở bài ở trên wiki Hard Drop",link:"https://harddrop.com/wiki?search=Shachiku_Train",id:"dc4327a2f9935348b9ef75ee955fbf97ea92623e"},{title:"Cut Copy",tags:["nhom12c","donation","pattern","cutcopy"],category:"pattern",content:"Một setup dạng donation để làm T-spin Double trên một cái lỗ nhỏ và có thể làm thêm một TSD nữa sau đó.",link:"",id:"5ab976e8a5af8adf031a7c04b88533d46932d182"},{title:"=[NHÓM 13]=",tags:["nhom13"],category:"",content:"NHÓM 13: CÁCH TÍNH TẤN CÔNG",link:"",id:"0cf34b77a992d9444c4b6fb660932ca055b24721"},{title:"Tetris OL attack",tags:["nhom13","top","tetrisonlineattack"],category:"term",content:`Cách tính tấn công trong Tetris Online + +Đơn / Đôi / Tam / Tetris gửi 0 / 1 / 2 / 4 hàng rác. +T-spin Đơn / Đôi / Tam gửi 2 / 4 / 6 hàng rác, cắt một nửa nếu là Mini. +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"}],DM=[{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:"db48bfb4186f84c0391a54e898c1dcfc705b1f29"},{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:"2e684b1296c93ab61fee3ee132448e9a73cf1a71"},{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:["irs","initialrotatesystem"],category:"term",content:"Initial Rotation System 提前旋转系统\\n方块出现前提前按下旋转后,出现时就是转好的形状,有时可以避免死亡。",link:"",id:"df56dc17c1c71d88f776c8989f44e46bd373fe91"},{title:"提前暂存(IHS)",tags:["ihs","initialholdsystem"],category:"term",content:"Initial Hold System 提前Hold系统\\n方块出现前提前按下hold后,直接出现hold里的方块,有时可以避免死亡。",link:"",id:"dfa0fb067ad7de4e9f078f3b0122943af0f79b74"},{title:"提前移动(IMS)",tags:["ims","initialmovesystem"],category:"term",content:"Initial Move System 提前移动系统\\n方块出现前提前按住移动后,出现时会朝移动方向偏一格,有时可以避免死亡(Techmino限定)。\\n注:需要块出现时das已充满",link:"",id:"dbb98c2013dd63489d4f23a39828862643abc70c"},{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:"误硬降打断(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"}],$M={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},OM=jt("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),HM=[OM],BM=ce({name:"Moon",render:function(t,n){return Ve(),gn("svg",$M,HM)}}),NM={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},zM=jt("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[jt("circle",{cx:"12",cy:"12",r:"4"}),jt("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),FM=[zM],WM=ce({name:"Sun",render:function(t,n){return Ve(),gn("svg",NM,FM)}});var jM=function(e,t,n){if(n||arguments.length===2)for(var o=0,r=t.length,i;oscreen.width<640),a=Fi(),s={en:IM,ja:MM,zh:DM,vi:LM},l=N(()=>s[a.locale.value]);Ih(()=>{function f(){location.hash.length>1&&(o.value=Ua([...s.en,...s.ja,...s.zh,...s.vi],b=>b.id===location.hash.substring(1)))}window.addEventListener("hashchange",()=>{f()}),f()});const c=N(()=>{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 oc(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 Ih(()=>{a.locale.value=t.locale}),(f,b)=>{const p=od,m=Wa,k=y9,x=Eb,y=ER,S=uw,P=o7,v=r9,w=H7,R=wA,L=HA,j=zA,M=OA;return Ve(),It(PM,null,{default:Se(()=>[pe(M,{"native-scrollbar":"",position:"absolute"},{default:Se(()=>[pe(L,{class:"pb-16 mx-2","native-scrollbar":""},{default:Se(()=>[pe(x,{class:"mt-2",justify:"space-between"},{default:Se(()=>[pe(m,{onClick:d},{icon:Se(()=>[pe(p,{component:Fe(t).theme==="light"?Fe(BM):Fe(WM)},null,8,["component"])]),_:1}),pe(k,{options:n,value:f.$i18n.locale,animated:"",trigger:"click",onSelect:g},{default:Se(()=>[pe(m,null,{icon:Se(()=>[pe(p,{component:Fe(nE)},null,8,["component"])]),_:1})]),_:1},8,["value"])]),_:1}),pe(x,{class:"sm:w-1/3 mx-auto mt-20",vertical:""},{default:Se(()=>[pe(Fe(xa),{class:"text-center"},{default:Se(()=>[pe(y,null,{default:Se(()=>[St(An(f.$t("title")),1)]),_:1}),Fe(o)?(Ve(),It(x,{key:1,justify:"center"},{default:Se(()=>[pe(m,{onClick:u},{default:Se(()=>[St(An(f.$t("back")),1)]),_:1})]),_:1})):(Ve(),It(S,{key:0,value:Fe(r),"onUpdate:value":b[0]||(b[0]=U=>ht(r)?r.value=U:null),placeholder:f.$t("search"),clearable:""},null,8,["value","placeholder"]))]),_:1}),pe(P)]),_:1}),pe(x,{size:"large",vertical:""},{default:Se(()=>[Fe(o)?(Ve(),It(Fe(xa),{key:1,class:"sm:w-1/3 mx-auto"},{default:Se(()=>[pe(yM,{item:Fe(o),onTagClick:h},null,8,["item"])]),_:1})):(Ve(),It(x,{key:0,vertical:""},{default:Se(()=>[(Ve(!0),gn(Oe,null,pa(Fe(c),(U,ne)=>(Ve(),It(x,{class:"text-center",vertical:""},{default:Se(()=>[pe(Fe(Gl),{style:Za({color:Fe(fl)[ne]}),class:"font-bold text-2xl",type:"info"},{default:Se(()=>[St(An(ne),1)]),_:2},1032,["style"]),Fe(i)?(Ve(),It(R,{key:1,cols:3,"x-gap":10,"y-gap":10,class:"text-center"},{default:Se(()=>[(Ve(!0),gn(Oe,null,pa(U,H=>(Ve(),It(w,null,{default:Se(()=>[pe(m,{color:Fe(fl)[ne],class:"w-full",onClick:q=>o.value=H},{default:Se(()=>[pe(Fe(xs),null,{trigger:Se(()=>[pe(v,null,{default:Se(()=>[pe(Vl,{item:H},null,8,["item"])]),_:2},1024)]),default:Se(()=>[St(" "+An(H.title),1)]),_:2},1024)]),_:2},1032,["color","onClick"])]),_:2},1024))),256))]),_:2},1024)):(Ve(),It(x,{key:0,justify:"center"},{default:Se(()=>[(Ve(!0),gn(Oe,null,pa(U,H=>(Ve(),It(m,{color:Fe(fl)[ne],size:"small",onClick:q=>o.value=H},{default:Se(()=>[pe(Vl,{item:H},null,8,["item"])]),_:2},1032,["color","onClick"]))),256))]),_:2},1024))]),_:2},1024))),256))]),_:1}))]),_:1})]),_:1}),pe(j,{class:"py-2",position:"absolute"},{default:Se(()=>[pe(x,{size:0,justify:"center"},{default:Se(()=>[pe(Fe(xa),null,{default:Se(()=>[pe(Fe(Gl),null,{default:Se(()=>[St(An(f.$t("maker"))+": ",1)]),_:1}),pe(m,{href:"https://zhazha120.cn",tag:"a",text:"",type:"primary"},{default:Se(()=>[St(" WOSHIZHAZHA120")]),_:1})]),_:1}),pe(P,{vertical:""}),pe(m,{href:"https://github.com/26F-Studio/techmino-online-dict",tag:"a",text:"",type:"primary"},{default:Se(()=>[St(" Github ")]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}}),vd=g2({render:()=>T(UM)});vd.use(RM);vd.use(EM);vd.mount("#app")});export default KM(); diff --git a/assets/proportional-f0fa7804.otf b/assets/proportional-DqX3ed1n.otf similarity index 100% rename from assets/proportional-f0fa7804.otf rename to assets/proportional-DqX3ed1n.otf diff --git a/index.html b/index.html index 7093ac4..05615db 100644 --- a/index.html +++ b/index.html @@ -1,12 +1,11 @@ - - - - Techmino 在线词典 - - + + + Techmino 在线词典 + +