@ihabdevteam/core 0.235.0 → 0.237.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/hooks.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";var s=require("react"),se=require("react-i18next"),ae=require("i18next"),Dt=typeof document<"u"?document.currentScript:null;function Io(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if(n!=="default"){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var dn=Io(s);function ko({storageKey:e="fontScale",baseFont:t=20,minScale:n=.8,maxScale:o=1.4,step:r=.1,lineHeightRatio:a=1.4}={}){const u=S=>Math.max(n,Math.min(o,Number(S))),i=S=>{try{const E=localStorage.getItem(S),L=E?Number(E):1;return Number.isFinite(L)?u(L):u(1)}catch{return u(1)}},[l,c]=s.useState(()=>i(e)),[g,d]=s.useState(e);g!==e&&(d(e),c(i(e))),s.useEffect(()=>{try{localStorage.setItem(e,String(l))}catch{}},[e,l]);const C=S=>{c(typeof S=="function"?E=>u(S(E)):u(S))},f=()=>C(S=>+(S+r).toFixed(6)),m=()=>C(S=>+(S-r).toFixed(6)),w=l<o-Number.EPSILON,h=l>n+Number.EPSILON,p=Math.round(t*l),y=Math.round(p*a);return{scale:l,setScale:C,increase:f,decrease:m,canIncrease:w,canDecrease:h,fontSize:p,lineHeight:y}}const Cn=s.createContext(null);function xo(e){return/max-width:\s*7[0-9][0-9]px/.test(e)}const gn=e=>typeof window>"u"||!window.matchMedia?!1:window.matchMedia(e).matches;function jo(e){const t=s.useCallback(n=>{if(typeof window>"u"||!window.matchMedia)return()=>{};const o=window.matchMedia(e);return o.addEventListener?o.addEventListener("change",n):o.addListener&&o.addListener(n),()=>{o.removeEventListener?o.removeEventListener("change",n):o.removeListener&&o.removeListener(n)}},[e]);return dn.useSyncExternalStore(t,()=>gn(e),()=>!1)}function Fo(e){const[t,n]=s.useState(gn(e));return s.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const o=window.matchMedia(e),r=u=>n(u.matches),a=o;return a.addEventListener?a.addEventListener("change",r):a.addListener&&a.addListener(r),n(o.matches),()=>{a.removeEventListener?a.removeEventListener("change",r):a.removeListener&&a.removeListener(r)}},[e]),t}const $o=typeof dn.useSyncExternalStore=="function"?jo:Fo;function Ho(e){const t=s.useContext(Cn),n=$o(e);return t&&typeof t.mobile=="boolean"&&xo(e)?t.mobile:n}function fn(e){const t=s.useRef(e);return s.useEffect(()=>{t.current=e}),t}function mn(e,t){const n=fn(t);s.useEffect(()=>{const o=()=>n.current();try{window.addEventListener(e,o)}catch{}return()=>{try{window.removeEventListener(e,o)}catch{}}},[e,n])}const Tt=" \xB7 ",pn=(()=>{if(typeof document>"u")return"";const e=document.title;return e.includes(Tt)?e.split(Tt).pop()??e:e})(),hn=s.createContext(!1),be=[];let yn=null;function Go(e){const t=s.useContext(hn);s.useEffect(()=>{if(t||typeof e!="string"||!e)return;be.length===0&&(yn=document.title);const n={text:pn?`${e}${Tt}${pn}`:e};return be.push(n),document.title=n.text,()=>{const o=be.lastIndexOf(n);o>=0&&be.splice(o,1),document.title=be.length?be[be.length-1].text:yn??document.title}},[e,t])}const Vo=/^(\d{4}-\d{2}-\d{2})[T ](\d{2}:\d{2})(?::(\d{2})(?:\.(\d+))?)?$/;function Wo(e){let t;if(e instanceof Date)t=e;else if(typeof e=="string"){const n=e.trim(),o=Vo.exec(n);t=new Date(o?`${o[1]}T${o[2]}:${o[3]??"00"}${o[4]?`.${o[4].slice(0,3).padEnd(3,"0")}`:""}+09:00`:n)}else t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Le(){return Re(new Date)}function Re(e){if(e==null||e==="")return"";const t=Wo(e);return t?new Intl.DateTimeFormat("fr-CA",{timeZone:"Asia/Seoul"}).format(t):""}function Yo(e,t){const[n,o,r]=e.split("-").map(Number),[a,u,i]=t.split("-").map(Number);return Math.round((Date.UTC(a,u-1,i)-Date.UTC(n,o-1,r))/864e5)}function Ko(){const{t:e}=se.useTranslation();return s.useCallback(t=>{if(!t)return"";const n=Re(t);if(!n)return"";const o=Yo(n,Le());return o<=0?e("myHomework.relativeDay.today","\uC624\uB298"):o===1?e("myHomework.relativeDay.yesterday","\uC5B4\uC81C"):e("myHomework.relativeDay.daysAgo",{n:o})},[e])}const Uo=()=>{const e="\uC54C \uC218 \uC5C6\uB294 \uC624\uB958",t=typeof ae?.t=="function"?ae.t("common.unknownError",{defaultValue:e}):void 0;return typeof t=="string"&&t?t:e};function zo(e,t){if(t===void 0&&(t=Uo()),e instanceof Error)return e.message||t;if(typeof e=="string")return e||t;if(e&&typeof e=="object"){const n=e;for(const o of[n.message,n.error_description,n.error])if(typeof o=="string"&&o)return o}return t}function qo(e){const{t}=se.useTranslation(),[n,o]=s.useState({current:"",next:"",confirm:""}),[r,a]=s.useState(null),[u,i]=s.useState(!1),l=s.useRef(null),c=s.useRef(!1);s.useEffect(()=>()=>{l.current!==null&&clearTimeout(l.current)},[]);const g=s.useCallback(()=>{o({current:"",next:"",confirm:""}),a(null)},[]),d=s.useCallback(async()=>{if(c.current)return;if(!n.current){a({type:"error",text:t("account.security.password.currentRequired","\uD604\uC7AC \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.")});return}if(!n.next){a({type:"error",text:t("account.security.password.newRequired","\uC0C8 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.")});return}if(n.next!==n.confirm){a({type:"error",text:t("account.security.password.mismatch","\uC0C8 \uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.")});return}i(!0),c.current=!0;let C;try{C=e?await e(n.current,n.next):null}catch(f){C=zo(f)}finally{c.current=!1,i(!1)}if(C){a({type:"error",text:C});return}a({type:"success",text:t("account.security.password.changed","\uBE44\uBC00\uBC88\uD638\uAC00 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4.")}),o({current:"",next:"",confirm:""}),l.current!==null&&clearTimeout(l.current),l.current=setTimeout(()=>a(null),1500)},[n,e,t]);return{pw:n,setPw:o,pwMsg:r,setPwMsg:a,pwLoading:u,handleChangePw:d,reset:g}}const Jo={\u3131:"\u3131",\u3132:"\u3131",\u314B:"\u3131",\u3133:"\u3131",\u313A:"\u3131",\u3134:"\u3134",\u3135:"\u3134",\u3136:"\u3134",\u3137:"\u3137",\u3145:"\u3137",\u3146:"\u3137",\u3148:"\u3137",\u314A:"\u3137",\u314C:"\u3137",\u314E:"\u3137",\u3139:"\u3139",\u313C:"\u3139",\u313D:"\u3139",\u313E:"\u3139",\u3140:"\u3139",\u3141:"\u3141",\u313B:"\u3141",\u3142:"\u3142",\u314D:"\u3142",\u313F:"\u3142",\u3144:"\u3142",\u3147:"\u3147"},Nt={\u314F:{nucleus:"\u314F"},\u3151:{glide:"j",nucleus:"\u314F"},\u3153:{nucleus:"\u3153"},\u3155:{glide:"j",nucleus:"\u3153"},\u3157:{nucleus:"\u3157"},\u315B:{glide:"j",nucleus:"\u3157"},\u315C:{nucleus:"\u315C"},\u3160:{glide:"j",nucleus:"\u315C"},\u3161:{nucleus:"\u3161"},\u3163:{nucleus:"\u3163"},\u3150:{nucleus:"\u3154/\u3150"},\u3152:{glide:"j",nucleus:"\u3154/\u3150"},\u3154:{nucleus:"\u3154/\u3150"},\u3156:{glide:"j",nucleus:"\u3154/\u3150"},\u3158:{glide:"w",nucleus:"\u314F"},\u3159:{glide:"w",nucleus:"\u3154/\u3150"},\u315A:{glide:"w",nucleus:"\u3154/\u3150"},\u315D:{glide:"w",nucleus:"\u3153"},\u315E:{glide:"w",nucleus:"\u3154/\u3150"},\u315F:{glide:"w",nucleus:"\u3163"},\u3162:{glide:"\u0270",nucleus:"\u3163"}};function Qo(e,t){return(Nt[e]?.glide??"")!==(Nt[t]?.glide??"")}function Pe(e){return Jo[e]??e}const Q=["\u3131","\u3132","\u3134","\u3137","\u3138","\u3139","\u3141","\u3142","\u3143","\u3145","\u3146","\u3147","\u3148","\u3149","\u314A","\u314B","\u314C","\u314D","\u314E"],te=["\u314F","\u3150","\u3151","\u3152","\u3153","\u3154","\u3155","\u3156","\u3157","\u3158","\u3159","\u315A","\u315B","\u315C","\u315D","\u315E","\u315F","\u3160","\u3161","\u3162","\u3163"],oe=["","\u3131","\u3132","\u3133","\u3134","\u3135","\u3136","\u3137","\u3139","\u313A","\u313B","\u313C","\u313D","\u313E","\u313F","\u3140","\u3141","\u3142","\u3144","\u3145","\u3146","\u3147","\u3148","\u314A","\u314B","\u314C","\u314D","\u314E"];function V(e){if(!e)return null;const t=e.charCodeAt(0)-44032;return t<0||t>=11172?null:{cho:Math.floor(t/588),jung:Math.floor(t%588/28),jong:t%28}}function Zo(){const e=new Map;return t=>{let n=e.get(t);return n||(n=[...t].map(o=>V(o)),e.set(t,n)),n}}function fe(e,t,n=0){return String.fromCharCode(44032+(e*21+t)*28+n)}function Xo(e,t){if(!e||!t||e===t||e.length!==t.length)return"random";let n=0,o=null;for(let r=0;r<e.length;r++){const a=V(e[r]),u=V(t[r]);if(!a||!u)return"random";if(a.cho===u.cho&&a.jung===u.jung&&a.jong===u.jong)continue;n++;const i=a.cho!==u.cho,l=a.jung!==u.jung,c=a.jong!==u.jong;(i?1:0)+(l?1:0)+(c?1:0)>1?o="multi":i?o="cho":l?o="jung":o="jong"}return n!==1?"random":o==="cho"?"cho":o==="jung"?"jung":o==="jong"?"jong":"random"}const ot={3:["\u3131","\u3145"],5:["\u3134","\u3148"],6:["\u3134","\u314E"],9:["\u3139","\u3131"],10:["\u3139","\u3141"],11:["\u3139","\u3142"],12:["\u3139","\u3145"],13:["\u3139","\u314C"],14:["\u3139","\u314D"],15:["\u3139","\u314E"],18:["\u3142","\u3145"]};Object.fromEntries(Object.entries(ot).map(([e,t])=>[t.join(""),oe[Number(e)]]));function er(e,t){if(!e||!t)return!1;for(const n of e){const o=V(n);if(o){if(Q[o.cho]===t)return!0;if(o.jong>0){if(oe[o.jong]===t)return!0;const r=ot[o.jong];if(r&&r.includes(t))return!0}}}return!1}function tr(e,t,n){const o=oe[e];return o===t?!0:n==="phoneme"&&Pe(o)===Pe(t)}function Me(e){if(!e)return 0;let t=0;for(const n of e)V(n)&&t++;return t}function nr(e){if(!e)return!1;let t=!1;for(const n of e){const o=V(n);if(o&&(t=!0,o.jong>0))return!1}return t}function or(e,t,n){return e.jong<=0?!1:t.some(o=>tr(e.jong,o,n))}function rr(e,t,n,o="glyph"){if(!e)return!1;const r=[...e],a=u=>{const i=V(r[u]);if(!i||t.cho&&!t.cho.includes(Q[i.cho])||t.jung&&!t.jung.includes(te[i.jung]))return!1;if(t.jongNone){if(i.jong>0)return!1}else if(t.jong&&!or(i,t.jong,o))return!1;return!0};if(n==="head")return a(0);if(n==="tail")return a(r.length-1);if(n==="mid"){for(let u=1;u<r.length-1;u++)if(a(u))return!0;return!1}for(let u=0;u<r.length;u++)if(a(u))return!0;return!1}const ar={cho:Q.length,jung:te.length,jong:oe.length};function ur(e,t,n,o,r=1/0){if(!e||n<1)return[];const a=[...e].map(d=>V(d));if(a.some(d=>!d))return[];const u=a,i=u.length;if(n>i)return[];const l=ar[t],c=new Set,g=[];(function d(C,f){if(f.length===n){g.push([...f]);return}for(let m=C;m<i;m++)f.push(m),d(m+1,f),f.pop()})(0,[]);for(const d of g)if((function C(f,m){if(c.size>=r)return;if(f===d.length){const p=m.map(y=>fe(y.cho,y.jung,y.jong)).join("");p!==e&&o.has(p)&&c.add(p);return}const w=d[f],h=u[w][t];for(let p=0;p<l;p++){if(p===h)continue;const y=m.slice();if(y[w]={...m[w],[t]:p},C(f+1,y),c.size>=r)return}})(0,u),c.size>=r)break;return[...c]}function ir(e,t){if(!e||!t||e.length!==t.length)return-1;let n=0;for(let o=0;o<e.length;o++){const r=V(e[o]),a=V(t[o]);if(!r||!a)return-1;r.cho!==a.cho&&n++,r.jung!==a.jung&&n++,r.jong!==a.jong&&n++}return n}const bn="word_pair_index_v2",Sn="word_pair_index_sig_v2";let Ie=null;function lr(){try{if(typeof localStorage>"u")return null;const e=localStorage.getItem(bn),t=localStorage.getItem(Sn);return!e||!t?null:{index:JSON.parse(e),sig:t}}catch{return null}}function ke(){if(Ie)return Ie;const e=lr();return e?(Ie=e.index,e.sig,Ie):null}function sr(){Ie=null;try{typeof localStorage<"u"&&(localStorage.removeItem(bn),localStorage.removeItem(Sn))}catch{}}const wn="word_image_existence_map_v1";let De=null,xe=0,En=-1,je=null,An=-1,vn=new Set;function Bn(){if(De)return De;try{const e=typeof localStorage<"u"?localStorage.getItem(wn):null,t=e?JSON.parse(e):null;De=t&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{De={}}return De}function Dn(){const e=Bn();if(En===xe)return je?{...je}:null;const t=Object.values(e);return je=t.length===0?null:{total:t.length,exists:t.filter(Boolean).length},En=xe,je?{...je}:null}function Tn(){const e=Bn();if(An===xe)return vn;const t=new Set;for(const n in e)e[n]===!0&&n.endsWith("_1")&&t.add(n.slice(0,-2));return vn=t,An=xe,t}function cr(){De={},xe++;try{typeof localStorage<"u"&&localStorage.removeItem(wn)}catch{}}const Nn=[{id:"wordData",labelKey:"settings.cache.group.wordData.label",subKey:"settings.cache.group.wordData.sub",keys:["word_data_cache","word_data_version"]},{id:"pairIndex",labelKey:"settings.cache.group.pairIndex.label",subKey:"settings.cache.group.pairIndex.sub",keys:["word_pair_index_v2","word_pair_index_sig_v2"]},{id:"imageCache",labelKey:"settings.cache.group.imageCache.label",subKey:"settings.cache.group.imageCache.sub",keys:["word_image_existence_map_v1"]}];function _n(e){return e.reduce((t,n)=>{try{const o=localStorage.getItem(n);return t+(o?new Blob([o]).size:0)}catch{return t}},0)}function dr(e){return e===0?"0 B":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(2)} MB`:`${(e/(1024*1024*1024)).toFixed(2)} GB`}function Cr(e){const{t}=se.useTranslation(),[n,o]=s.useState({}),[r,a]=s.useState(null),[u,i]=s.useState(null),[l,c]=s.useState(null),g=s.useCallback(()=>{const C={};Nn.forEach(f=>{C[f.id]=_n([...f.keys])}),o(C),typeof navigator<"u"&&navigator.storage?.estimate&&navigator.storage.estimate().then(f=>{c({usage:f.usage??0,quota:f.quota??0})}).catch(()=>{})},[]);s.useEffect(()=>{g()},[g]);const d=s.useCallback(async C=>{a(C);try{C==="wordData"?(localStorage.removeItem("word_data_cache"),localStorage.removeItem("word_data_version")):C==="pairIndex"?sr():C==="imageCache"&&cr(),g(),e?.(t("settings.cache.cleared","\uCE90\uC2DC\uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4."))}finally{a(null)}},[g,e,t]);return{cacheSizes:n,clearingId:r,confirmCacheId:u,setConfirmCacheId:i,storageEstimate:l,refreshCacheSizes:g,handleClearCache:d}}function gr(e){const[t,n]=s.useState(null),[o,r]=s.useState(null),a=s.useCallback(()=>{const u=ke();if(u){const l=Object.values(u),c=l.filter(g=>g.cho.length+g.jung.length+g.jong.length>0).length;n({matched:c,total:l.length})}else n(null);const i=Dn();r(i?{exists:i.exists,total:i.total}:null)},[]);return s.useEffect(()=>{a();const u=setTimeout(a,1e3);return()=>clearTimeout(u)},[e?.length,a]),{pairStats:t,imgStats:o,setPairStats:n,setImgStats:r,refreshStats:a}}function Se(e,t){if(e===t)return!0;const n=e?.id,o=t?.id;return n!=null&&n!==""&&n===o}function On(e,t=[]){const[n,o]=s.useState(t),[r,a]=s.useState(null),[u,i]=s.useState(!1),[l,c]=s.useState(e),g=s.useRef(!1),d=s.useRef(null);s.useEffect(()=>{if(u)return;if(g.current){g.current=!1;return}const p=d.current;p!==null&&p.length===t.length&&p.every((y,S)=>y===t[S])||(d.current=t,o(t),a(y=>y==null?y:t.find(S=>Se(S,y))??y))},[t,u]),s.useEffect(()=>{!u&&r!=null&&c({...r})},[u,r]);const C=s.useCallback(p=>{a(p),i(!1),c({...p})},[]),f=s.useCallback(()=>i(!0),[]),m=s.useCallback(()=>i(!1),[]),w=s.useCallback((p,y)=>{o(p),a(y),i(S=>(S&&(g.current=!0),!1))},[]),h=s.useCallback(p=>{o(y=>y.filter(S=>!Se(S,p))),a(null)},[]);return{list:n,setList:o,selected:r,setSelected:a,isEditing:u,setIsEditing:i,editForm:l,setEditForm:c,openDetail:C,startEditing:f,cancelEditing:m,commitEdit:w,remove:h}}const Fe=()=>{const[e,t,n]=Le().split("-");return{year:e,month:t,day:n}},fr={year:"",month:"",day:"",hour:"09",minute:"00",memo:""};function mr(e=[]){const{list:t,setList:n,selected:o,setSelected:r,isEditing:a,setIsEditing:u,editForm:i,setEditForm:l,openDetail:c,commitEdit:g}=On(fr,e),{year:d,month:C,day:f}=Fe(),[m,w]=s.useState({year:d,month:C,day:f,hour:"09",minute:"00",memo:""});return{visitHistory:t,visitForm:m,setVisitForm:w,setVisit:h=>p=>w(y=>({...y,[h]:p})),selectedVisit:o,setSelectedVisit:r,isEditingVisit:a,setIsEditingVisit:u,editVisitForm:i,setEditVisitForm:l,openVisitDetail:c,handleVisitSave:h=>{n(E=>[m,...E]);const{year:p,month:y,day:S}=Fe();w({year:p,month:y,day:S,hour:"09",minute:"00",memo:""}),h?.()},handleVisitEditSave:()=>{g(h=>h.map(p=>o!=null&&Se(p,o)?i:p),i)},addVisit:h=>{n(p=>[h,...p])},removeVisit:h=>{n(p=>p.filter(y=>!Se(y,h)))},revertVisitEdit:(h,p)=>{n(y=>y.map(S=>S===p?h:S)),r(y=>y===p?h:y)}}}const Ln=e=>`${e.year.padStart(4,"0")}-${e.month.padStart(2,"0")}-${e.day.padStart(2,"0")} ${e.hour.padStart(2,"0")}:${e.minute.padStart(2,"0")}`,$e=e=>[...e].sort((t,n)=>{const o=Ln(t),r=Ln(n);return o<r?-1:o>r?1:0}),pr={year:"",month:"",day:"",hour:"09",minute:"00",memo:""};function hr(e,t=[]){const n=s.useMemo(()=>$e(t),[t]),{list:o,setList:r,selected:a,setSelected:u,isEditing:i,setIsEditing:l,editForm:c,setEditForm:g,openDetail:d,commitEdit:C,remove:f}=On(pr,n),[m,w]=s.useState([]),{year:h,month:p,day:y}=Fe(),[S,E]=s.useState({year:h,month:p,day:y,hour:"09",minute:"00",memo:""}),L=O=>k=>E(W=>({...W,[O]:k})),v=O=>{r(U=>$e([...U,S]));const{year:k,month:W,day:X}=Fe();E({year:k,month:W,day:X,hour:"09",minute:"00",memo:""}),O?.()},T=()=>{C(O=>$e(O.map(k=>a!=null&&Se(k,a)?c:k)),c)},D=s.useCallback(O=>{f(O)},[f]),I=s.useCallback(O=>{e({year:O.year,month:O.month,day:O.day,hour:O.hour,minute:O.minute,memo:O.memo,...O.id!=null?{id:O.id}:{}}),f(O)},[e,f]),B=s.useCallback(O=>{r(k=>k.filter(W=>!Se(W,O))),w(k=>[O,...k]),u(null)},[r,u]),$=s.useCallback(O=>{r(k=>$e([...k,O]))},[r]),F=s.useCallback(O=>{r(k=>k.filter(W=>!Se(W,O)))},[r]),M=s.useCallback((O,k)=>{r(W=>$e(W.map(X=>X===k?O:X))),u(W=>W===k?O:W)},[r,u]);return{scheduleList:o,noShowList:m,addSchedule:$,removeSchedule:F,revertScheduleEdit:M,scheduleForm:S,setScheduleForm:E,setSchedule:L,selectedSchedule:a,setSelectedSchedule:u,isEditingSchedule:i,setIsEditingSchedule:l,editScheduleForm:c,setEditScheduleForm:g,openScheduleDetail:d,handleScheduleSave:v,handleScheduleEditSave:T,handleScheduleDelete:D,handleScheduleToVisit:I,handleScheduleNoVisit:B}}const rt=[{value:"10",label:"10\uAC1C\uC529 \uBCF4\uAE30"},{value:"25",label:"25\uAC1C\uC529 \uBCF4\uAE30"},{value:"50",label:"50\uAC1C\uC529 \uBCF4\uAE30"},{value:"100",label:"100\uAC1C\uC529 \uBCF4\uAE30"}];function yr(e){const{t}=se.useTranslation(),[n,o]=s.useState(""),[r,a]=s.useState("25"),[u,i]=s.useState("all"),[l,c]=s.useState(1),g=s.useMemo(()=>e.filter(({item:w,status:h})=>!(n&&!w.memo.includes(n)||u!=="all"&&h!==u)),[e,n,u]),d=Math.max(1,Math.ceil(g.length/Number(r))),C=Math.min(l,d),f=s.useMemo(()=>g.slice((C-1)*Number(r),C*Number(r)),[g,C,r]),m=s.useMemo(()=>rt.map(w=>({...w,label:t("common.pageSizeLabel",{n:w.value,defaultValue:w.label})})),[t]);return{vapSearch:n,setVapSearch:o,vapPageSize:r,setVapPageSize:a,vapPageSizeOptions:m,vapStatus:u,setVapStatus:i,vapPage:C,setVapPage:c,vapFiltered:g,vapTotal:d,vapPageItems:f}}const br=(()=>{let e=null;return()=>(e||(e=new Intl.Collator("ko")),e)})();function Rn(e,t){return br().compare(e,t)}const at=new Map;function Sr(e){const t=at.get(e);if(t)return t;const n=[],o=/-?\d+(?:\.\d+)?/g;let r=0;for(let a=o.exec(e);a;a=o.exec(e)){let u=a.index,i=a[0];i[0]==="-"&&u>0&&!/\s/.test(e[u-1])&&(u+=1,i=i.slice(1)),u>r&&n.push(e.slice(r,u)),n.push(Number(i)),r=a.index+a[0].length}return r<e.length&&n.push(e.slice(r)),at.size>5e3&&at.clear(),at.set(e,n),n}function wr(e){if(!/^[\d\s-]+$/.test(e))return null;const t=e.replace(/\D/g,"");return t.length<9||t.length>11?null:t[0]==="0"||t[0]==="1"&&e!==t?t:null}function Er(e,t){const n=c=>c==null||typeof c=="number"&&Number.isNaN(c)?"":String(c).trim(),o=n(e),r=n(t);if(o===r)return 0;const a=(c,g)=>{if(typeof c=="number"&&!Number.isNaN(c))return[c];const d=wr(g);return d!==null?[d]:Sr(g)},u=a(e,o),i=a(t,r),l=Math.min(u.length,i.length);for(let c=0;c<l;c++){const g=u[c],d=i[c];if(typeof g=="number"&&typeof d=="number"){if(g!==d)return g-d;continue}if(typeof g=="number")return-1;if(typeof d=="number")return 1;const C=Rn(g,d);if(C!==0)return C}return u.length!==i.length?u.length-i.length:Rn(o,r)}const Pn=e=>e==null||typeof e=="number"&&Number.isNaN(e)||typeof e=="string"&&e.trim()==="";function Ar(e,t,n){const o=Pn(e),r=Pn(t);if(o||r)return o===r?0:o?1:-1;const a=Er(e,t);return n?a:-a}function vr(e,t,n){const{t:o}=se.useTranslation(),[r,a]=s.useState(()=>{const m=n?.initialPageSize;return m&&rt.some(w=>w.value===m)?m:"25"}),[u,i]=s.useState(1),[l,c]=s.useState(t);Object.is(l,t)||(c(t),u!==1&&i(1));const g=s.useMemo(()=>rt.map(m=>({...m,label:o("visits.showN",{n:m.value})})),[o]),d=s.useCallback(m=>{a(m),i(1)},[]),C=Math.max(1,Math.ceil(e.length/Number(r)));(u>C||u<1||!Number.isFinite(u))&&i(Math.min(Math.max(1,Number.isFinite(u)?u:1),C));const f=Math.min(Math.max(1,Number.isFinite(u)?u:1),C);return{pageRows:s.useMemo(()=>e.slice((f-1)*Number(r),f*Number(r)),[e,f,r]),pageSizeProps:{options:g,value:r,onChange:d},paginationProps:{page:f,total:C,onChange:i},setPage:i}}function Br(e){const[t,n]=s.useState(null),o=s.useRef(t),r=s.useRef(e?.onSortChange);r.current=e?.onSortChange;const a=s.useCallback(l=>{const c=o.current,g=c?.key===l?{key:l,asc:!c.asc}:{key:l,asc:!0};o.current=g,n(g),r.current?.(g)},[]),u=s.useCallback((l,c)=>({label:l,sortDir:t?.key===c?t.asc?"asc":"desc":null,onClick:()=>a(c)}),[t,a]),i=s.useCallback((l,c)=>{if(!t)return l;const{key:g,asc:d}=t;return[...l].sort((C,f)=>Ar(c(C,g),c(f,g),d))},[t]);return{\uC815\uB82C:t,\uCE78:u,sortRows:i}}const Mn=e=>e==="\uC88C"||e==="\uC6B0"?e:null;function Dr(){const[e,t]=s.useState(!1),[n,o]=s.useState("\uC88C"),[r,a]=s.useState({\uC88C:null,\uC6B0:null}),[u,i]=s.useState({\uC88C:[],\uC6B0:[]}),[l,c]=s.useState(!1),[g,d]=s.useState("\uC88C"),C=s.useCallback(m=>{const w=Mn(m.direction);w&&(a(h=>({...h,[w]:m})),i(h=>({...h,[w]:[m,...h[w]]})),t(!1))},[]),f=s.useCallback(m=>{const w=Mn(m.direction);w&&(a(h=>({...h,[w]:m})),c(!1))},[]);return{showDevice:e,setShowDevice:t,deviceDirection:n,setDeviceDirection:o,devices:r,setDevices:a,deviceHistory:u,setDeviceHistory:i,showDeviceList:l,setShowDeviceList:c,listForSide:g,setListForSide:d,handleDeviceSubmit:C,handleSelectFromList:f}}const Tr="__ihab_core_word_pool__";function ut(){return globalThis[Tr]??null}function H(e,t=Math.random){const n=e.slice();for(let o=n.length-1;o>0;o--){const r=Math.floor(t()*(o+1));[n[o],n[r]]=[n[r],n[o]]}return n}function ce(e,t,n=Math.random){return!Array.isArray(e)||e.length===0||t<=0?[]:t>=e.length?H(e,n):H(e,n).slice(0,t)}const _t={SAME_SOUND_PICK:{difficulty:!0,choseong:!0,group:"discrimination"},SAME_OR_DIFF:{difficulty:!0,choseong:!0,group:"discrimination"},HEAR_AND_PICK_SAME:{difficulty:!0,choseong:!0,group:"discrimination"},HEAR_AND_PICK_INCLUDED:{difficulty:!0,choseong:!0,group:"discrimination"},STARTS_WITH_SAME_SOUND:{difficulty:!1,choseong:!0,group:"discrimination"},LISTEN_AND_REMEMBER_ORDER:{difficulty:!1,choseong:!0,group:"attention"},MERGE_2_SYLLABLES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_3_SYLLABLES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_2_PHONEMES:{difficulty:!1,choseong:!0,group:"synthesis"},MERGE_3_PHONEMES:{difficulty:!1,choseong:!0,group:"synthesis"},DROP_1_FROM_2SYLL:{difficulty:!1,choseong:!0,group:"deletion"},DROP_1_FROM_3SYLL:{difficulty:!1,choseong:!0,group:"deletion"},DROP_PART_FROM_COMPOUND:{difficulty:!1,choseong:!0,group:"deletion"},DROP_FINAL_CONSONANT_FROM_1SYLL:{difficulty:!1,choseong:!0,group:"deletion"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{difficulty:!1,choseong:!0,group:"deletion"},CHANGE_1_SYLL_IN_2SYLL:{difficulty:!0,choseong:!0,group:"substitution"},CHANGE_1_SYLL_IN_3SYLL:{difficulty:!0,choseong:!0,group:"substitution"},CHANGE_1_PHONEME_IN_1SYLL:{difficulty:!1,choseong:!0,group:"substitution"},CHANGE_1_PHONEME_IN_2SYLL:{difficulty:!0,choseong:!0,group:"substitution"}},Ot=Q.indexOf("\u3147"),it={DROP_FINAL_CONSONANT_FROM_1SYLL:{syllables:1,syllable:e=>e.jong>0},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{syllables:1,syllable:e=>e.jong===0&&e.cho!==Ot},MERGE_2_SYLLABLES:{syllables:2,syllable:()=>!0},MERGE_3_SYLLABLES:{syllables:3,syllable:()=>!0},MERGE_2_PHONEMES:{syllables:1,syllable:e=>e.jong===0&&e.cho!==Ot},MERGE_3_PHONEMES:{syllables:1,syllable:e=>e.jong>0&&!ot[e.jong]&&e.cho!==Ot}},Lt={cho:Q,jung:te,jong:oe},z=e=>Array.isArray(e)?e.length>0:!!e;function Rt(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){const o=e[n],r=t[n];if(!(!o||!r)&&(o.cho!==r.cho&&Q[o.cho]==="\u3147"!=(Q[r.cho]==="\u3147")||o.jung!==r.jung&&Qo(te[o.jung],te[r.jung])||o.jong!==r.jong&&o.jong===0!=(r.jong===0)))return!0}return!1}function Nr(e,t,n){const o=n.pronOf(e),r=n.decompOf,a=n.sameStructureOnly&&r?r(o):null,u=[];for(const i of t)i!==e&&(n.okSet&&!n.okSet.has(i)||n.pronOf(i)!==o&&(a&&r&&Rt(a,r(n.pronOf(i)))||u.push(i)));return u}function In(e,t,n){const o=t?.[e];if(!o)return[];const r=n.kind?o[n.kind]??[]:[...o.cho??[],...o.jung??[],...o.jong??[]];return Nr(e,r,n)}function _r(e,t,n,o,r,a,u){const i=["cho","jung","jong"].filter(C=>z(e[C])),l={};for(const C of i){const f=e[C];l[C]=new Set(Array.isArray(f)?f:[f])}const c=r==="pron",g=new Map;for(const C of t){const f=n(a(C));if(f.some(p=>!p))continue;let m=f;if(!c&&(m=n(C),m.length!==f.length||m.some(p=>!p)))continue;const w=f.length,h=g.get(w);h?h.push({w:C,dPron:f,dPos:m}):g.set(w,[{w:C,dPron:f,dPos:m}])}const d=new Map;for(const[C,f]of g){const m=new Map,w=(h,p)=>{const y=h.dPos[p];return y!=null&&i.every(S=>l[S].has(Lt[S][y[S]]))};for(const h of f){let p;if(u==="head")p=w(h,0)?0:-1;else if(u==="tail")p=w(h,C-1)?C-1:-1;else if(u==="mid"){p=-1;for(let S=1;S<C-1;S++)if(w(h,S)){p=S;break}}else p=h.dPos.findIndex(S=>S!=null&&i.every(E=>l[E].has(Lt[E][S[E]])));if(p<0)continue;const y=m.get(p);y?y.push(h):m.set(p,[h])}for(const[h,p]of m){const y=i.includes("cho"),S=i.includes("jung"),E=i.includes("jong"),L=T=>{let D="";for(let I=0;I<C;I++){const B=T[I];I===h?D+=(y?"*":B.cho)+"."+(S?"*":B.jung)+"."+(E?"*":B.jong)+".":D+=B.cho+"."+B.jung+"."+B.jong+"."}return D},v=new Map;for(const T of f){const D=L(T.dPron),I=v.get(D);I?I.push(T):v.set(D,[T])}for(const T of p){const D=v.get(L(T.dPron))??[],I=[];for(const B of D){if(B.w===T.w)continue;let $=!0;for(const F of i){const M=T.dPron[h][F],O=B.dPron[h][F];if(O===M){$=!1;break}if(c&&l[F].has(Lt[F][O])){$=!1;break}}$&&(o&&Rt(T.dPron,B.dPron)||I.push(B.w))}d.set(T.w,I)}}}return d}const Or=e=>e==null?[]:Array.isArray(e)?e:[e];function Lr(e){if([...e].length!==1)return"";const t=V(e);if(!t)return"";const n=Pe(oe[t.jong]),o=n===""?0:oe.indexOf(n);return fe(t.cho,t.jung,o<0?0:o)}function kn(e,t){return t.get(e)||Lr(e)||e}function lt(e){return e?z(e.cho)?"cho":z(e.jung)?"jung":z(e.jong)?"jong":null:null}function we(e,t){const n=(r,a)=>!z(r)||Or(r).includes(a),o=t.jongNone?e.jong===0:n(t.jong,oe[e.jong]);return n(t.cho,Q[e.cho])&&n(t.jung,te[e.jung])&&o}function He(e,t,n){const o=[...e];if(n!=="pron")return o.map(a=>V(a));const r=[...t.get(e)||e];return r.length!==o.length?o.map(a=>V(a)):r.map(a=>V(a))}function Ge(e,t,n,o,r){const a=t==="cho"?Q:t==="jung"?te:oe,u=e[t],i=[],l=d=>t==="jung"?Pr(kn(d,r)):kn(d,r),c=new Map([[l(n),-1]]),g=H(a.map((d,C)=>C).filter(d=>d!==u&&(t!=="cho"||a[d]!=="\u3147")&&(t!=="jong"||d!==0)));for(const d of g){if(i.length>=o)break;const C=t==="cho"?fe(d,e.jung,e.jong):t==="jung"?fe(e.cho,d,e.jong):fe(e.cho,e.jung,d),f=l(C),m=c.get(f);if(m!==void 0){t==="jung"&&m>=0&&r.has(C)&&!r.has(i[m])&&(i[m]=C);continue}c.set(f,i.length),i.push(C)}return i}const Rr={\u3154:"\u3150",\u3156:"\u3152",\u315A:"\u3159",\u315E:"\u3159"};function Pr(e){if([...e].length!==1)return e;const t=V(e);if(!t)return e;const n=Rr[te[t.jung]];return n?fe(t.cho,te.indexOf(n),t.jong):e}function Mr(e,t,n,o,r,a=null){const u=[...e];if(u.length!==2)return null;const i=u.map(d=>V(d));if(i.some(d=>!d))return null;const l=He(e,n,o);if(l.some(d=>!d))return null;const c=lt(t);let g=c&&t?l.map((d,C)=>we(d,t)?C:-1).filter(d=>d>=0):[0,1];if(a!=null&&(g=g.filter(d=>d!==a)),!g.length)return null;for(const d of H(g)){const C=u[d];if(!r.has(C))continue;const f=Ge(i[d],c??"cho",C,40,n),m=[];for(const w of f)if(w!==C&&r.has(w)&&!m.includes(w)&&m.push(w),m.length>=2)break;if(!(m.length<2))return{question:e,distractors:[C,...m]}}return null}function Ir(e,t,n,o,r,a=null){const u=[...e];if(u.length!==3)return null;const i=u.map(d=>V(d));if(i.some(d=>!d))return null;const l=He(e,n,o);if(l.some(d=>!d))return null;const c=lt(t),g=c&&t?l.map((d,C)=>we(d,t)?C:-1).filter(d=>d>=0):[0,1,2];if(!g.length)return null;for(const d of H(g))for(const C of H([0,1,2].filter(f=>f!==d&&(a==null||f===a)))){const f=[0,1,2].filter(y=>y!==C),m=f.map(y=>u[y]).join("");if(!r.has(m))continue;const w=f.indexOf(d),h=Ge(i[d],c??"cho",u[d],40,n),p=[];for(const y of h){const S=f.map(L=>u[L]);S[w]=y;const E=S.join("");if(E!==m&&r.has(E)&&!p.includes(E)&&p.push(E),p.length>=2)break}if(!(p.length<2))return{question:e,distractors:[m,...p]}}return null}function kr(e,t,n,o,r,a=null){const u=[...e],i=u.length;if(i<2)return null;const l=[];for(let g=1;g<=i-1;g++)l.push({remain:u.slice(0,g).join(""),dropped:u.slice(g).join(""),droppedEnd:1}),l.push({remain:u.slice(i-g).join(""),dropped:u.slice(0,i-g).join(""),droppedEnd:0});const c=lt(t);for(const{remain:g,dropped:d,droppedEnd:C}of H(l)){if(a!=null&&C!==a||[...g].length===1&&[...d].length===1||g===e||!r.has(g)||!r.has(d))continue;const f=[...g],m=f.map(p=>V(p));if(m.some(p=>!p))continue;const w=He(g,n,o);if(w.some(p=>!p))continue;const h=c&&t?w.map((p,y)=>we(p,t)?y:-1).filter(p=>p>=0):f.map((p,y)=>y);if(h.length)for(const p of H(h)){const y=Ge(m[p],c??"cho",f[p],40,n),S=[];for(const E of y){const L=[...f];L[p]=E;const v=L.join("");if(v!==g&&r.has(v)&&!S.includes(v)&&S.push(v),S.length>=2)break}if(S.length>=2)return{question:e,distractors:[g,...S],dropped:d}}}return null}function xr(e,t,n,o,r,a=null){if([...e].length!==1)return null;const u=V(n.get(e)||e);if(!u||u.jong===0)return null;const i=fe(u.cho,u.jung,0),l=Ge({cho:u.cho,jung:u.jung,jong:0},"cho",i,2,n);return l.length<2?null:{question:e,distractors:[i,...l]}}const Pt=Q.indexOf("\u3147");function jr(e,t,n,o,r,a=null){if([...e].length!==1)return null;const u=V(n.get(e)||e);if(!u||u.jong!==0||u.cho===Pt)return null;const i=fe(Pt,u.jung,0),l=Ge({cho:Pt,jung:u.jung,jong:0},"jung",i,2,n);return l.length<2?null:{question:e,distractors:[i,...l]}}function Fr(e){const t=new Map;for(const n of e){const o=[...n],r=o.length;if(!(r<2||r>3))for(let a=0;a<r;a++){let u=r+"|"+a+"|";for(let l=0;l<r;l++)u+=l===a?"*":o[l];const i=t.get(u);i?i.push(n):t.set(u,[n])}}return t}function $r(e,t,n,o,r,a=null,u=null,i=2){const l=[...e],c=l.length;if(c<2||c>3)return null;const g=l.map(y=>V(y));if(g.some(y=>!y))return null;const d=He(e,n,o);if(d.some(y=>!y))return null;const C=y=>n.get(y)??y,f=C(e),m=!!t&&(z(t.cho)||z(t.jung)||z(t.jong)),w=!!u&&(z(u.cho)||z(u.jung)||z(u.jong)),h=y=>{let S=c+"|"+y+"|";for(let E=0;E<c;E++)S+=E===y?"*":l[E];return S};let p;if(a!=null){if(a>=c||m&&!we(d[a],t))return null;p=[a]}else m?p=d.map((y,S)=>we(y,t)?S:-1).filter(y=>y>=0):p=Array.from({length:c},(y,S)=>S);for(const y of H(p)){const S=r.get(h(y))??[],E=[],L=[];for(const B of S){if(B===e)continue;const $=[...B].map(k=>V(k)),F=g[y],M=$[y];if(!F||!M)continue;let O=0;if(F.cho!==M.cho&&O++,F.jung!==M.jung&&O++,F.jong!==M.jong&&O++,!(O<i||C(B)===f))if(w){const k=He(B,n,o)[y];k&&we(k,u)?E.push(B):L.push(B)}else E.push(B)}if(!E.length)continue;const v=H(E)[0],T=[],D=new Set([f,C(v)]),I=w?L:E.filter(B=>B!==v);for(const B of H(I)){const $=C(B);if(!D.has($)&&(D.add($),T.push(B),T.length>=2))break}if(!w&&T.length<2)for(const B of H(S)){if(B===e||B===v)continue;const $=C(B);if(!D.has($)&&(D.add($),T.push(B),T.length>=2))break}if(!(T.length<2))return{question:e,distractors:[v,...T]}}return null}let st=null,xn=null,jn=null;function Hr(){const e=ut();if(e&&e.entries.length>0){const t=ke();if(st&&xn===e&&jn===t)return st;const n=new Set,o=[];for(const r of e.entries)!r.word||n.has(r.word)||(n.add(r.word),o.push({w:r.word,s:r.syllables,p:t?.[r.word]?[...t[r.word].cho??[],...t[r.word].jung??[],...t[r.word].jong??[]]:[],pron:r.pronunciation||r.word,grade:r.grade}));return st=o,xn=e,jn=t,st}return[]}const de=new Proxy([],{get(e,t){const n=Hr(),o=n[t];return typeof o=="function"?o.bind(n):o}});function Mt(e){return e.length?e[Math.floor(Math.random()*e.length)]:void 0}function re(e,t){if(t>=e.length)return H(e);if(t===0)return[];const n=e.slice();for(let o=0;o<t;o++){const r=o+Math.floor(Math.random()*(n.length-o)),a=n[o];n[o]=n[r],n[r]=a}return n.slice(0,t)}let It=null,Fn=null;function me(){const e=ut();if(It&&Fn===e)return It;const t=new Map;for(const n of de)n.w&&t.set(n.w,n.pron);return It=t,Fn=e,t}function q(e){return me().get(e)||e}function ct(e,t,n=new Set){const o=[];for(const r of H(e)){if(o.length>=t)break;const a=q(r);n.has(a)||(n.add(a),o.push(r))}return o}let Gr=0;function Z(e){return`${e}-rt-${++Gr}`}function Te(e){const t=Dn();if(!t||t.total===0){const r=new Set;for(const a of e)r.add(a);return r}const n=Tn(),o=new Set;for(const r of e)n.has(r)&&o.add(r);return o}const dt=new Map;let $n=null,Hn=null;function Ve(e){return e==null?"":Array.isArray(e)?e.slice().sort().join(","):e}function kt(e){const t=Ve(e.choseong),n=e.composition,o=n?.syllable==null?"":Array.isArray(n.syllable)?n.syllable.slice().sort().join(","):String(n.syllable),r=n?`${Ve(n.cho)}/${Ve(n.jung)}/${Ve(n.jong)}/${n.jongNone?"N":""}/${o}`:"",a=Ve(e.grade);return`${e.difficulty??""}|${t}|${r}|${e.excludeNoImage?"1":"0"}|${e.count??""}|x${e.contrastCount??1}|${e.fullCount?"F":""}|s${e.sameStructureOnly===!1?"0":"1"}|v${e.phonemeView==="pron"?"p":"c"}|g${a}|t${e.targetSyllable??""}|c${e.choicesPerItem??""}`}const xt=new Map;function Vr(e){return kt({...e,count:void 0,choicesPerItem:void 0,fullCount:!1})}async function ne(e){const t=ut(),n=ke();(t!==$n||n!==Hn)&&(dt.clear(),xt.clear(),$n=t,Hn=n);const o=kt(e);return dt.has(o)||dt.set(o,Wr(e)),dt.get(o)}function Gn(e){if(!e)return null;const t=u=>u==null?null:Array.isArray(u)?u.length?u:null:[u],n=t(e.cho),o=t(e.jung),r=!!e.jongNone,a=r?null:t(e.jong);return n||o||a||r?r&&!n&&!o&&!a?u=>nr(u):u=>rr(u,{cho:n,jung:o,jong:a,jongNone:r}):null}function Vn(e){const t=e.grade&&e.grade.length>0?new Set(e.grade):null,n=e.composition??null,o=n?.syllable!=null?new Set(Array.isArray(n.syllable)?n.syllable:[n.syllable]):null,r=n?[Gn(n),o?u=>o.has(Me(u)):null].filter(u=>u!=null):[];if(!t&&r.length===0)return null;const a=e.phonemeView==="pron";return u=>{if(t&&(!u.grade||!t.has(u.grade)))return!1;if(r.length===0)return!0;const i=a?q(u.w):u.w;return r.every(l=>l(i))}}async function Wr(e){const{difficulty:t=null,choseong:n=null,composition:o=null,targetSyllable:r=null,excludeNoImage:a=!1}=e,u=e.grade&&e.grade.length>0?new Set(e.grade):null,i=e.sameStructureOnly??!0,l=e.phonemeView==="pron"?"pron":"char",c=Math.max(1,e.contrastCount??1),g=t==="cho"||t==="jung"||t==="jong",d=g&&c>=2,C=t==="count",f=n?new Set(Array.isArray(n)?n:[n]):null,m=o?.syllable!=null?new Set(Array.isArray(o.syllable)?o.syllable:[o.syllable]):null,w=o?[Gn(o),m?A=>m.has(Me(A)):null].filter(A=>A!=null):[],h=t==="random"||t===null,p=h||C,y=h||d||C;let S=de.filter(A=>!A.w||u&&(!A.grade||!u.has(A.grade))?!1:y?!0:Array.isArray(A.p)&&A.p.length>0);f&&(S=S.filter(A=>{for(const N of f)if(er(A.w,N))return!0;return!1})),w.length>0&&(S=S.filter(A=>{const N=l==="pron"?q(A.w):A.w;return w.every(P=>P(N))})),r&&(S=S.filter(A=>A.w[0]===r));let E;if(a){const A=new Set;for(const N of S)if(A.add(N.w),Array.isArray(N.p))for(const P of N.p)A.add(P);if(p)for(const N of de)N.w&&A.add(N.w);E=Te(A)}else{const A=new Set;for(const N of S)if(A.add(N.w),Array.isArray(N.p))for(const P of N.p)A.add(P);if(p)for(const N of de)N.w&&A.add(N.w);E=A}let L=null;if(d){const A=new Set;for(const N of de)N.w&&A.add(N.w);L=a?Te(A):A}const v=S.filter(A=>E.has(A.w)),T=600,D=Array.from(E),I=D.length>T?re(D,T):D,B=C&&o!=null&&(z(o.cho)||z(o.jung)||z(o.jong)),$=2500,F=new Map;if(C&&!B&&c>=2){for(const A of D){const N=Me(A),P=F.get(N);P?P.push(A):F.set(N,[A])}for(const[A,N]of F)N.length>$&&F.set(A,re(N,$))}const M=Zo();let O=null;if(B){const A=Vr(e),N=a?Tn():null,P=xt.get(A);O=P&&P.\uC774\uBBF8\uC9C0\uC9D1\uD569===N?P.map:_r(o,D,M,i,l,q),xt.set(A,{\uC774\uBBF8\uC9C0\uC9D1\uD569:N,map:O})}const k=500,W=1500,X=e.fullCount?v:t==="random"?v.length>k?re(v,k):v:v.length>W?re(v,W):v,U=ke(),he=[];for(const A of X){let N;const P=q(A.w);if(d)N=ur(A.w,t,c,L,24).filter(G=>q(G)!==P);else if(C)B?N=(O.get(A.w)??[]).filter(G=>q(G)!==P):c<=1?N=In(A.w,U,{okSet:E,pronOf:q,decompOf:M,sameStructureOnly:!1}):N=(F.get(Me(A.w))??[]).filter(G=>{if(G===A.w||q(G)===P)return!1;const Y=ir(P,q(G));return c>=5?Y>=5:Y===c});else if(h){const G=Y=>Y!==A.w&&Y.length===A.w.length&&q(Y)!==P;if(e.fullCount){const Y=Math.max(1,(e.choicesPerItem??3)-1),ee=[],ye=new Set;for(const Oe of I){if(!G(Oe))continue;const Ee=q(Oe);if(!ye.has(Ee)&&(ye.add(Ee),ee.push(Oe),ee.length>=Y))break}N=ee}else N=I.filter(G)}else{const G=t;N=In(A.w,U,{kind:G,okSet:E,pronOf:q,decompOf:M,sameStructureOnly:!1}),N.length===0&&(N=(I.length>30?re(I,30):I).filter(Y=>Y!==A.w&&Xo(A.w,Y)===t&&q(Y)!==P))}if(i&&N.length>0&&(g||C&&!B)){const G=M(q(A.w));N=N.filter(Y=>!Rt(G,M(q(Y))))}N.length!==0&&he.push({word:A,usable:N})}return he}async function Wn(e,t){const{choicesPerItem:n=3,count:o=10}=t,r=n-1,a=(await ne(t)).filter(i=>i.usable.length>=r),u=[];for(const i of H(a)){if(u.length>=o)break;const l=ct(i.usable,r);if(l.length<r)continue;const c=H([i.word.w,...l]);u.push({id:Z(e+"-item"),index:u.length+1,word:i.word.w,syllables:i.word.s,choices:c,answerIndex:c.indexOf(i.word.w)})}return u}async function Yr(e){const{choicesPerItem:t=3,count:n=10}=e,o=t-1,r=await ne({...e,difficulty:null});if(r.length<t)return[];const a=e.composition??null,u=[],i=H([...r]);for(const l of i){if(u.length>=n)break;const c=l.word.w,g=[...l.word.pron||c],d=a&&lt(a)?g.filter(h=>{const p=V(h);return!!p&&we(p,a)}):[],C=Mt(d.length?d:g);if(!C)continue;const f=r.filter(h=>h.word.w!==c&&h.word.s===l.word.s&&!(h.word.pron||h.word.w).includes(C)&&h.word.pron!==l.word.pron);if(f.length<o)continue;const m=ct(f.map(h=>h.word.w),o);if(m.length<o)continue;const w=H([c,...m]);u.push({id:Z("HPI-item"),index:u.length+1,targetSyllable:C,word:c,choices:w,answerIndex:w.indexOf(c)})}return u}async function Kr(e){const{count:t=10}=e,n=(await ne(e)).filter(a=>a.usable.length>=1);if(!n.length)return[];const o=n.length>=t?re(n,t):H(Array.from({length:t},(a,u)=>n[u%n.length])),r=H(Array.from({length:t},(a,u)=>u<Math.ceil(t/2)));return o.map((a,u)=>{const i=r[u];let l;if(i)l=[a.word.w,a.word.w];else{const c=Mt(a.usable);l=Math.random()<.5?[a.word.w,c]:[c,a.word.w]}return{id:Z("SOD-item"),index:u+1,word:a.word.w,pair:l,same:i}})}async function Ur(e){const{choicesPerItem:t=3,count:n=10}=e,o=t-1,r=await ne({...e,difficulty:null});if(r.length<t+1)return[];const a=r.map(C=>C.word.w),u=new Map(r.map(C=>[C.word.w,C.word.pron])),i=C=>(u.get(C)||C)[0]??"",l={};for(const C of r){const f=i(C.word.w);f&&(l[f]||(l[f]=[]),l[f].push(C.word.w))}const c=Object.entries(l).filter(([,C])=>C.length>=2).map(([C])=>C);if(c.length===0)return[];const g=[],d=H([...c]);for(let C=0;g.length<n&&C<n*4;C++){const f=d[C%d.length],m=l[f];if(m.length<2)continue;const w=H([...m]),h=w[0],p=w[1];if(!h||!p||h===p||(u.get(h)||h)===(u.get(p)||p))continue;const y=u.get(p)||p,S=a.filter(v=>i(v)!==f&&v!==h&&v!==p&&v.length===p.length&&(u.get(v)||v)!==y);if(S.length<o)continue;const E=ct(S,o);if(E.length<o)continue;const L=H([p,...E]);g.push({id:Z("SWS-item"),index:g.length+1,sourceWord:h,targetSyllable:f,word:p,choices:L,answerIndex:L.indexOf(p)})}return g}function Yn(e,t,n){const o=me(),r=l=>o.get(l)||l,a=(l,c)=>{const g=[...l],d=[...c];if(g.length!==d.length)return-1;let C=-1;for(let f=0;f<g.length;f++)if(g[f]!==d[f]){if(C>=0)return-1;C=f}return C},u=e.map(l=>({e:l,swaps:l.usable.filter(c=>!!c&&a(l.word.w,c)>=0&&r(c)!==r(l.word.w))})).filter(l=>l.swaps.length>0),i=[];for(const{e:l,swaps:c}of H(u)){if(i.length>=t)break;const g=Mt(c)??"",d=[...l.word.w],C=[...g],f=a(l.word.w,g),m=ct(l.usable.filter(w=>w&&w!==g),2,new Set([r(g),r(l.word.w)]));m.length<2||i.push({id:Z(n),index:i.length+1,word:l.word.w,original:l.word.w,changed:g,changedFrom:f>=0?d[f]:"",changedTo:f>=0?C[f]:"",distractors:m})}return i}async function Kn(e,t,n){const{count:o=10}=t,r=me(),a=de.filter(m=>m.w&&m.s===e),u=t.excludeNoImage?Te(a.map(m=>m.w)):null,i=u?a.filter(m=>u.has(m.w)):a,l=new Set(i.map(m=>m.w)),c=Fr(l),g=t.phonemeView??"char",d=t.composition??null,C=Vn(t),f=[];for(const m of H(i)){if(f.length>=o)break;if(C&&!C(m))continue;const w=$r(m.w,d,r,g,c,null,null);if(!w)continue;const h=w.distractors[0],p=[...m.w],y=[...h],S=p.findIndex((E,L)=>E!==y[L]);f.push({id:Z(n),index:f.length+1,word:m.w,original:m.w,changed:h,changedFrom:S>=0?p[S]:"",changedTo:S>=0?y[S]:"",distractors:w.distractors.slice(1)})}return f}async function zr(e){return Kn(2,e,"CS2-item")}async function qr(e){return Kn(3,e,"CS3-item")}async function Jr(e){const t=(await ne({...e,difficulty:"count",contrastCount:1})).filter(n=>n.word.s===1&&n.usable.length>=1);return Yn(t,e.count??10,"CP1-item")}async function Qr(e){const t=e.difficulty&&e.difficulty!=="random"?e.difficulty:"count",n=(await ne({...e,difficulty:t,contrastCount:1})).filter(o=>o.word.s===2&&o.usable.length>=1);return Yn(n,e.count??10,"CP2-item")}async function Zr(e){const{count:t=10}=e,n=(await ne({...e})).filter(o=>o.word.s===2);return re(n,t).map((o,r)=>({id:Z("M2S-item"),index:r+1,word:o.word.w,answer:o.word.w,parts:[...o.word.w]}))}async function Xr(e){const{count:t=10}=e,n=(await ne({...e})).filter(o=>o.word.s===3);return re(n,t).map((o,r)=>({id:Z("M3S-item"),index:r+1,word:o.word.w,answer:o.word.w,parts:[...o.word.w]}))}function jt(e){const t=de.map(n=>n.w);return e.excludeNoImage?Te(t):new Set(t)}async function ea(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s===2),o=me(),r=jt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=Mr(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=[...i.word.w],C=d[0]===c?d[1]:d[0];u.push({id:Z("D2-item"),index:u.length+1,original:i.word.w,word:i.word.w,dropped:C,missingResult:c,distractors:g})}return u}async function ta(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s===3),o=me(),r=jt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=Ir(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=[...i.word.w];let C="";for(let f=0;f<d.length;f++)if(d.filter((m,w)=>w!==f).join("")===c){C=d[f];break}u.push({id:Z("D3-item"),index:u.length+1,original:i.word.w,word:i.word.w,dropped:C,missingResult:c,distractors:g})}return u}async function na(e){const{count:t=10}=e,n=(await ne({...e})).filter(i=>i.word.s>=3),o=me(),r=jt(e),a=e.phonemeView??"char",u=[];for(const i of H(n)){if(u.length>=t)break;const l=kr(i.word.w,e.composition??null,o,a,r);if(!l)continue;const[c,...g]=l.distractors,d=i.word.w,C=l.dropped??(d.startsWith(c)?d.slice(c.length):d.endsWith(c)?d.slice(0,d.length-c.length):"");u.push({id:Z("DPC-item"),index:u.length+1,original:d,word:d,dropped:C,missingResult:c,distractors:g})}return u}async function oa(e){const{count:t=10}=e,n=(await ne({...e})).map(o=>o.word.w);return n.length<3?[]:Array.from({length:t},(o,r)=>{const a=re(n,3);return{id:Z("LRO-item"),index:r+1,sequence:a,choices:H(a)}})}function Ct(e,t,n){const o=de.filter(i=>i.w&&i.s===e),r=t.excludeNoImage?Te(o.map(i=>i.w)):null,a=Vn(t),u=[];for(const i of o)if(!(r&&!r.has(i.w))&&!(a&&!a(i))){if(n){const l=V(i.w);if(!l||!n(l))continue}u.push(i)}return u}function ra(e){const t=Ct(1,e,it.MERGE_2_PHONEMES.syllable);return re(t,e.count??10).map((n,o)=>{const r=V(n.w);return{id:Z("M2P-item"),index:o+1,parts:[Q[r.cho],te[r.jung]],answer:n.w,word:n.w}})}function aa(e){const t=Ct(1,e,it.MERGE_3_PHONEMES.syllable);return re(t,e.count??10).map((n,o)=>{const r=V(n.w);return{id:Z("M3P-item"),index:o+1,parts:[Q[r.cho],te[r.jung],oe[r.jong]],answer:n.w,word:n.w}})}function ua(e){const t=it.DROP_FINAL_CONSONANT_FROM_1SYLL,n=Ct(t.syllables,e,t.syllable),o=me(),r=[];for(const a of H(n)){if(r.length>=(e.count??10))break;const u=xr(a.w,null,o);if(!u)continue;const[i,...l]=u.distractors;r.push({id:Z("DFC-item"),index:r.length+1,original:a.w,word:a.w,result:i,distractors:l})}return r}function ia(e){const t=it.REMOVE_CONSONANT_AND_IDENTIFY_PHONEME,n=Ct(t.syllables,e,t.syllable),o=me(),r=[];for(const a of H(n)){if(r.length>=(e.count??10))break;const u=jr(a.w,null,o);if(!u)continue;const i=V(o.get(a.w)||a.w);if(!i)continue;const[l,...c]=u.distractors;r.push({id:Z("RCP-item"),index:r.length+1,base:a.w,word:a.w,missingConsonant:Q[i.cho],remaining:l,distractors:c})}return r}const gt=new Map;let Un=null,zn=null;async function qn(e,t={}){const n=ut(),o=ke();(n!==Un||o!==zn)&&(gt.clear(),Un=n,zn=o);const r=`${e}:${kt(t)}`;if(gt.has(r))return gt.get(r);const a=await sa(e,t);return gt.set(r,a),a}const la={SAME_SOUND_PICK:e=>Wn("SSP",e),HEAR_AND_PICK_SAME:e=>Wn("HPS",e),HEAR_AND_PICK_INCLUDED:e=>Yr(e),SAME_OR_DIFF:e=>Kr(e),STARTS_WITH_SAME_SOUND:e=>Ur(e),LISTEN_AND_REMEMBER_ORDER:e=>oa(e),MERGE_2_SYLLABLES:e=>Zr(e),MERGE_3_SYLLABLES:e=>Xr(e),MERGE_2_PHONEMES:e=>ra(e),MERGE_3_PHONEMES:e=>aa(e),DROP_1_FROM_2SYLL:e=>ea(e),DROP_1_FROM_3SYLL:e=>ta(e),DROP_PART_FROM_COMPOUND:e=>na(e),DROP_FINAL_CONSONANT_FROM_1SYLL:e=>ua(e),REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:e=>ia(e),CHANGE_1_SYLL_IN_2SYLL:e=>zr(e),CHANGE_1_SYLL_IN_3SYLL:e=>qr(e),CHANGE_1_PHONEME_IN_1SYLL:e=>Jr(e),CHANGE_1_PHONEME_IN_2SYLL:e=>Qr(e)};async function sa(e,t={}){const n=la[e];return n?await n(t):[]}async function ca(e){const t=["random","count"],n=Object.keys(_t);let o=0;for(const r of t)for(const a of n){const u=_t[a];qn(a,{difficulty:u.difficulty?r:null,contrastCount:1,composition:null,count:5,excludeNoImage:e,sameStructureOnly:!0,phonemeView:"char",grade:null}).catch(()=>{}),++o%6===0&&await new Promise(i=>setTimeout(i,0))}}async function da(e){const t=await ne({...e,fullCount:!0}),n=e.choicesPerItem!=null?Math.max(1,e.choicesPerItem-1):1;return t.filter(o=>new Set(o.usable.map(r=>q(r))).size>=n).length}async function Ca(e={}){const t=[];for(const i of de)i.w&&t.push(i.w);const n=e.excludeNoImage?Te(t):t,o=new Set,r=new Set,a=new Set,u=new Set;for(const i of n){u.add(Me(i));for(const l of i){const c=V(l);if(c&&(Q[c.cho]!=="\u3147"&&o.add(Q[c.cho]),r.add(te[c.jung]),c.jong>0)){a.add(oe[c.jong]);const g=ot[c.jong];g&&g.forEach(d=>a.add(d))}}}return{cho:o,jung:r,jong:a,syllable:u}}const ue="\uC804\uCCB4";var ga={statusFilter:"\uC0C1\uD0DC \uD544\uD130",pageSizeSelect:"\uD398\uC774\uC9C0\uB2F9 \uD45C\uC2DC \uAC1C\uC218",selectedCount:"{{count}}\uAC1C \uC120\uD0DD\uB428",selectedOfMax:"\uCD5C\uB300 {{max}}\uAC1C \uC911 {{count}}\uAC1C",cancel:"\uCDE8\uC18C",info:"\uC124\uBA85",errorState:{message:"\uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",retry:"\uB2E4\uC2DC \uC2DC\uB3C4"},save:"\uC800\uC7A5",confirm:"\uD655\uC778",discardConfirm:{title:"\uC785\uB825\uC744 \uCDE8\uC18C\uD560\uAE4C\uC694?",body:"\uC800\uC7A5\uD558\uC9C0 \uC54A\uC73C\uBA74 \uC9C0\uAE08\uAE4C\uC9C0 \uC785\uB825\uD55C \uB0B4\uC6A9\uC774 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",confirm:"\uC785\uB825 \uCDE8\uC18C"},close:"\uB2EB\uAE30",back:"\uB4A4\uB85C",emptyTrainingName:"\uD6C8\uB828 \uC774\uB984\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.",remove:"\uC81C\uAC70",image:"\uC774\uBBF8\uC9C0",delete:"\uC0AD\uC81C",reset:"\uCD08\uAE30\uD654",update:"\uC5C5\uB370\uC774\uD2B8",download:"\uB2E4\uC6B4\uB85C\uB4DC",likeCount:"\uC88B\uC544\uC694 {{count}}",downloadCount:"\uAC00\uC838\uAC04 \uC218 {{count}}",search:"\uAC80\uC0C9",empty:"\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",yes:"\uC608",no:"\uC544\uB2C8\uC624",all:"\uC804\uCCB4",none:"\uC5C6\uC74C",days:"{{count}}\uC77C",loadMore:"\uB354\uBCF4\uAE30",more:"\uB354\uBCF4\uAE30",moreFor:"{{name}} \uB354\uBCF4\uAE30",retry:"\uB2E4\uC2DC \uC2DC\uB3C4",prevPage:"\uC774\uC804 \uD398\uC774\uC9C0",nextPage:"\uB2E4\uC74C \uD398\uC774\uC9C0",play:"\uC7AC\uC0DD",pause:"\uBA48\uCDA4",playPause:"\uC7AC\uC0DD / \uBA48\uCDA4",replay:"\uB2E4\uC2DC\uB4E3\uAE30",subscription:"\uC774\uC6A9\uAD8C",done:"\uC644\uB8CC",failed:"\uC2E4\uD328",continue:"\uACC4\uC18D",notification:"\uC54C\uB9BC",emptyList:"\uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",noMatches:"\uB9DE\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",menu:"\uBA54\uB274",resetSelection:"\uC120\uD0DD \uCD08\uAE30\uD654",pageSizeLabel:"{{n}}\uAC1C\uC529 \uBCF4\uAE30",totalCountPrefix:"\uCD1D ",totalCountSuffix:"\uAC1C",expand:"\uD3BC\uCE58\uAE30",collapse:"\uC811\uAE30",popup:"\uD31D\uC5C5",codeBlock:"\uCF54\uB4DC \uBE14\uB85D",totalPrefix:"\uCD1D ",copyCode:"\uCF54\uB4DC \uBCF5\uC0AC",copied:"\uBCF5\uC0AC\uB428",col:{problem:"\uBB38\uC81C"},phonetics:{place:{labial:"\uC591\uC21C\uC74C",alveolar:"\uCE58\uC870\uC74C",palatal:"\uACBD\uAD6C\uAC1C\uC74C",velar:"\uC5F0\uAD6C\uAC1C\uC74C",glottal:"\uC131\uBB38\uC74C"},vowel:{frontHigh:"\uC804\uC124 \uACE0\uBAA8\uC74C",backHighUnrounded:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uD3C9\uC21C",backHighRounded:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uC6D0\uC21C",frontMid:"\uC804\uC124 \uC911\uBAA8\uC74C",backMidUnrounded:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uD3C9\uC21C",backMidRounded:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uC6D0\uC21C",low:"\uC800\uBAA8\uC74C"},glide:{j:"j\uD65C\uC74C",w:"w\uD65C\uC74C",velar:"\u0270\uD65C\uC74C"}},unknownError:"\uC54C \uC218 \uC5C6\uB294 \uC624\uB958",networkError:"\uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0\uC774 \uBD88\uC548\uC815\uD569\uB2C8\uB2E4. \uC5F0\uACB0 \uC0C1\uD0DC\uB97C \uD655\uC778\uD55C \uB4A4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694."},fa={rangeSelect:"\uAE30\uAC04 \uC120\uD0DD",dow:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],yearMonth:"{{year}}\uB144 {{month}}\uC6D4",prevMonth:"\uC774\uC804 \uB2EC",addOnDate:"{{date}}\uC5D0 \uBC29\uBB38 \uB4F1\uB85D",nextMonth:"\uB2E4\uC74C \uB2EC",prevWeek:"\uC774\uC804 \uC8FC",nextWeek:"\uB2E4\uC74C \uC8FC",legend:{visited:"\uBC29\uBB38",scheduled:"\uC608\uC57D",noVisit:"\uBBF8\uBC29\uBB38"},periodSelect:"\uAE30\uAC04 \uB2E8\uC704",visitCount:"\uBC29\uBB38 {{count}}\uAC74"},ma={planSuffix:"\uC774\uC6A9\uAD8C",labeledPlan:"{{label}} \uC774\uC6A9\uAD8C",couponCode:"\uC774\uC6A9\uAD8C \uCF54\uB4DC",specialLabel:"\uC624\uD508\uD2B9\uAC00",unitDay:"\uC77C",unitYear:"\uB144",remainingDay:"{{n}}\uC77C \uB0A8\uC74C",remainingHour:"{{n}}\uC2DC\uAC04 \uB0A8\uC74C",remainingMinute:"{{n}}\uBD84 \uB0A8\uC74C",remainingSecond:"{{n}}\uCD08 \uB0A8\uC74C",expired:"\uB9CC\uB8CC\uB428",menu:{use:"\uC0AC\uC6A9\uD558\uAE30",refund:"\uD658\uBD88\uD558\uAE30",delete:"\uC0AD\uC81C\uD558\uAE30"}},pa={clearAriaLabel:"\uAC80\uC0C9\uC5B4 \uC9C0\uC6B0\uAE30"},ha={starLabel:"{{n}}\uBC88\uC9F8 \uBCC4 \uC120\uD0DD",valueLabel:"{{max}}\uC810 \uB9CC\uC810\uC5D0 {{value}}\uC810",groupLabel:"\uBCC4\uC810"},ya={selected:"\uC120\uD0DD\uB428"},ba={placeholder:"\uC120\uD0DD"},Sa={collapse:"\uC811\uAE30",expand:"\uD3BC\uCE58\uAE30"},wa={biArea:"BI \uC601\uC5ED",biSymbol:"BI \uC2EC\uBCFC",logoMalgwi:"\uB9D0\uADC0 \uB85C\uACE0",logoManager:"\uB9D0\uADC0\uB9E4\uB2C8\uC800 \uB85C\uACE0",menuOpen:"\uBA54\uB274 \uC5F4\uAE30",utilMenu:"\uC720\uD2F8\uB9AC\uD2F0 \uBA54\uB274",menuClose:"\uBA54\uB274 \uB2EB\uAE30"},Ea={mainMenu:"\uBA54\uC778 \uBA54\uB274",bottomNav:"\uD558\uB2E8 \uB124\uBE44\uAC8C\uC774\uC158",goToManager:"\uB9D0\uADC0\uB9E4\uB2C8\uC800\uB85C \uC774\uB3D9",goToMalgwi:"\uB9D0\uADC0\uB85C \uC774\uB3D9",modeLabelManager:"\uB9D0\uADC0 \uB9E4\uB2C8\uC800",modeLabelMalgwi:"\uB9D0\uADC0",training:"\uD6C8\uB828",settings:"\uC124\uC815",notifications:"\uC54C\uB9BC",account:"\uACC4\uC815",help:"\uB3C4\uC6C0\uB9D0",feedback:"\uBC84\uADF8\uC2E0\uACE0",debug:"\uB514\uBC84\uADF8",coupons:"\uCFE0\uD3F0",topic:"\uC8FC\uC81C\uBCC4 \uB4E3\uAE30",trainingType:"\uD6C8\uB828\uBCC4 \uB4E3\uAE30",wordPairs:"\uB300\uB9BD\uC30D \uCC3E\uAE30",wordSearch:"\uB2E8\uC5B4 \uCC3E\uAE30",wordTable:"\uB2E8\uC5B4\uD45C \uB9CC\uB4E4\uAE30",company:"\uC5C5\uCCB4\uC815\uBCF4",more:"\uB354\uBCF4\uAE30",moreMenu:"\uB354\uBCF4\uAE30 \uBA54\uB274",badgeLabel:"{{label}}, {{count}}\uAC1C"},Aa={language:{training:{label:"\uD6C8\uB828 \uC5B8\uC5B4",sub:"\uD6C8\uB828\uC5D0 \uC0AC\uC6A9\uB418\uB294 \uB2E8\uC5B4\uC640 \uC74C\uC131 \uC5B8\uC5B4"}},notifications:{title:"\uC54C\uB9BC"},display:{fontSize:{small:"\uC791\uAC8C",large:"\uD06C\uAC8C"}},cache:{title:"\uCE90\uC2DC \uAD00\uB9AC",confirmMessage:"\uCE90\uC2DC({{size}})\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4. \uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?",delete:"\uC0AD\uC81C",deleting:"\uC0AD\uC81C \uC911",cleared:"\uCE90\uC2DC\uAC00 \uC0AD\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",group:{wordData:{label:"\uB2E8\uC5B4 \uB370\uC774\uD130",sub:"\uB2E8\uC5B4 \uBAA9\uB85D \uBC0F \uBC84\uC804 \uC815\uBCF4"},pairIndex:{label:"\uB2E8\uC5B4\uC30D \uC778\uB371\uC2A4",sub:"\uCD08\uC131\xB7\uC911\uC131\xB7\uC885\uC131 \uB300\uB9BD\uC30D \uBD84\uC11D \uCE90\uC2DC"},imageCache:{label:"\uC774\uBBF8\uC9C0 \uCE90\uC2DC",sub:"\uB2E8\uC5B4\uBCC4 \uC774\uBBF8\uC9C0 \uC874\uC7AC \uC5EC\uBD80 \uD655\uC778 \uACB0\uACFC"},trainingRecord:{label:"\uD6C8\uB828 \uAE30\uB85D",sub:"\uC624\uB298\uC758 \uD6C8\uB828 \uC9C4\uD589\uB960 \uBC0F \uD559\uC2B5 \uC77C\uC218"}}},button:{save:"\uC124\uC815 \uC800\uC7A5"},popup:{clear:{confirm:"\uCD08\uAE30\uD654"},update:{confirm:"\uC5C5\uB370\uC774\uD2B8"},cache:{title:"{{label}} \uC0AD\uC81C",message:"{{label}}({{size}})\uB97C \uC0AD\uC81C\uD569\uB2C8\uB2E4. \uACC4\uC18D\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C?"}},saved:"\u2713 \uC800\uC7A5\uB428",account:{title:"\uACC4\uC815",delete:{sub:"\uD0C8\uD1F4 \uD6C4 30\uC77C \uC774\uB0B4 \uC7AC\uAC00\uC785 \uC2DC \uBCF5\uAD6C \uAC00\uB2A5\uD569\uB2C8\uB2E4."}}},va={addButton:"\uC774\uC6A9\uAD8C \uCD94\uAC00\uD558\uAE30",couponButton:"\uCFE0\uD3F0 \uC785\uB825",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",segment:{personal:"\uB9D0\uADC0",org:"\uB9D0\uADC0\uB9E4\uB2C8\uC800"},org:{title:"\uD604\uC7AC \uC774\uC6A9\uAD8C",disc:"\uAE30\uAD00\uC5D0\uC11C \uC0AC\uC6A9 \uC911\uC778 \uC774\uC6A9\uAD8C \uC815\uBCF4\uC785\uB2C8\uB2E4.",empty:"\uB4F1\uB85D\uB41C \uAE30\uAD00 \uC774\uC6A9\uAD8C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",fallbackTitle:"\uAE30\uAD00 \uC774\uC6A9\uAD8C",startDate:"\uC2DC\uC791\uC77C",endDate:"\uB9CC\uB8CC\uC77C",remaining:"\uB0A8\uC740 \uAE30\uAC04",duration:"\uC774\uC6A9 \uAE30\uAC04"},active:{infoTitle:"\uC774\uC6A9 \uC815\uBCF4",refund:"\uD658\uBD88 \uC694\uCCAD",startDate:"\uC0AC\uC6A9 \uC2DC\uC791\uC77C",endDate:"\uC885\uB8CC\uC77C",remaining:"\uB0A8\uC740 \uAE30\uAC04"},pending:{title:"\uBCF4\uC720",empty:"\uB300\uAE30 \uC911\uC778 \uC774\uC6A9\uAD8C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."}},Ba={profile:{planSuffix:"\uD50C\uB79C",plan:"\uD50C\uB79C"},basicInfo:{name:{placeholder:"\uD64D\uAE38\uB3D9"}},security:{title:"\uBCF4\uC548",password:{label:"\uBE44\uBC00\uBC88\uD638",currentRequired:"\uD604\uC7AC \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.",newRequired:"\uC0C8 \uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694.",mismatch:"\uC0C8 \uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",changed:"\uBE44\uBC00\uBC88\uD638\uAC00 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},twoFactor:{label:"2\uB2E8\uACC4 \uC778\uC99D",sub:"\uACC4\uC815 \uBCF4\uC548\uC744 \uAC15\uD654\uD558\uC138\uC694"}}},Da={guide:{faq:{title:"\uC790\uC8FC \uBB3B\uB294 \uC9C8\uBB38",desc:"FAQ \uBAA8\uC544\uBCF4\uAE30"}}},Ta={settings:"\uC124\uC815",start:{title:"\uB2E8\uC5B4\uD6C8\uB828 \uC2DC\uC791",description:"\uC544\uB798 \uD6C8\uB828 \uC720\uD615\uC744 \uC120\uD0DD\uD574 \uC2DC\uC791\uD558\uC138\uC694"},difficulty:{tooltip:"\uAC00\uC7A5 \uC26C\uC6B4 \uB09C\uC774\uB3C4\uB294 '\uBB34\uC791\uC704', \uAC00\uC7A5 \uC5B4\uB824\uC6B4 \uB09C\uC774\uB3C4\uB294 '\uCD08\uC131\uCC28\uC774' \uC785\uB2C8\uB2E4."},contrast:{label:"\uB300\uB9BD",type:"\uB300\uB9BD \uC885\uB958",count:"\uB300\uB9BD \uAC2F\uC218",n:"{{n}}\uAC1C"},filter:{random:"\uBB34\uC791\uC704",trainOnset:"\uCD08\uC131",trainVowel:"\uBAA8\uC74C",trainCoda:"\uC885\uC131",phonemeGroup:"\uD6C8\uB828 \uC74C\uC808",noLimit:"\uBB34\uAD00",codaExclude:"\uC81C\uC678",gradeLabel:"\uB4F1\uAE09",excludeImageInfo:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC: \uB2E8\uC5B4 \uC911\uC5D0 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uB2E8\uC5B4\uB9CC \uACB0\uACFC\uC5D0 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4.",sameStructureInfo:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC: \uC815\uB2F5\uACFC \uC624\uB2F5\uC758 \uC74C\uC808 \uAD6C\uC870(\uAE00\uC790 \uC218\xB7\uBC1B\uCE68 \uC720\uBB34 \uB4F1)\uAC00 \uAC19\uC740 \uACB0\uACFC\uB9CC \uB0A8\uACA8\uC694.",selectSection:"\uC120\uD0DD",excludeImage:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC",sameStructure:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"},noQuestions:"\uBB38\uC81C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",countQuestions:"{{n}}\uBB38\uC81C",countSentences:"{{n}}\uBB38\uC7A5",comingSoon:"\uC900\uBE44 \uC911",nextQuestion:"\uB2E4\uC74C \uBB38\uC81C",noiseRatioTitle:"\uC18C\uC74C \uBE44\uC728",noiseRatioValue:"{{ratio}}\uBC30",noiseTypeTitle:"\uC18C\uC74C \uC885\uB958",playVolumeTitle:"\uC804\uCCB4 \uC18C\uB9AC",playSpeedTitle:"\uC7AC\uC0DD \uC18D\uB3C4",meter:{sentence:"\uC7AC\uC0DD",noise:"\uC18C\uC74C",toggle:"\uC624\uB514\uC624 \uBBF8\uD130 \uD45C\uC2DC"},viewResult:"\uACB0\uACFC\uBCF4\uAE30",problemNotice:"{{n}}\uBC88 \uBB38\uC81C \uC785\uB2C8\uB2E4.",trainingSettingsTitle:"\uD6C8\uB828 \uC124\uC815",sentencePreview:"\uBB38\uC7A5 \uBBF8\uB9AC\uBCF4\uAE30",notHeard:"\uC548 \uB4E4\uB838\uC5B4\uC694.",heardWell:"\uC798 \uB4E4\uB838\uC5B4\uC694.",confirmTitle:"\uBB38\uC7A5\uC744 \uD655\uC778\uD558\uACE0 \uC798 \uB4E4\uB838\uB294\uC9C0 \uC120\uD0DD\uD558\uC138\uC694.",noSoundWaveform:"\uC18C\uB9AC \uBE44\uAD50 \uBB38\uC81C\uB294 \uC6E8\uC774\uBE0C\uD3FC\uC744 \uD45C\uD604\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",noise:{level:{none:"\uC5C6\uC74C",weak:"\uC57D\uD568",medium:"\uBCF4\uD1B5",strong:"\uAC15\uD568",veryStrong:"\uB9E4\uC6B0 \uAC15\uD568"},type:{none:"\uC5C6\uC74C",default:"\uAE30\uBCF8",street:"\uAE38\uAC70\uB9AC",buzz:"\uC640\uAE00\uC640\uAE00",restaurant:"\uC2DD\uB2F9"}},listenTitle:"\uC81C\uC2DC\uD558\uB294 \uBB38\uC7A5\uC744 \uB4E4\uC5B4\uC8FC\uC138\uC694.",listenButton:"\uBB38\uC7A5 \uB4E3\uAE30",playSound:"\uC18C\uB9AC \uB4E3\uAE30",playAll:"\uBAA8\uB450 \uB4E3\uAE30",selectInOrder:"\uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694.",stop:"\uC815\uC9C0",preview:"\uBBF8\uB9AC \uB4E3\uAE30",next:"\uB2E4\uC74C",completed:"\uD6C8\uB828 \uC644\uB8CC",selected:"\uC120\uD0DD\uB428",nthSelected:"{{n}}\uBC88\uC9F8 \uC120\uD0DD",fontSizeMin:"\uAE00\uC528 \uD06C\uAE30\uAC00 \uCD5C\uC18C\uC785\uB2C8\uB2E4.",fontSizeMax:"\uAE00\uC528 \uD06C\uAE30\uAC00 \uCD5C\uB300\uC785\uB2C8\uB2E4.",fontSizeDecrease:"\uAE00\uC790 \uD06C\uAE30 \uAC10\uC18C",fontSizeIncrease:"\uAE00\uC790 \uD06C\uAE30 \uC99D\uAC00",toggleBackground:"\uBC30\uACBD \uC804\uD658",cardInstructions:"\uB0B1\uB9D0 \uCE74\uB4DC\uB97C \uBCF4\uACE0 \uC18C\uB9AC\uB97C \uB4E3\uACE0 \uD655\uC778\uD558\uC138\uC694.",noCards:"\uCE74\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",audioFetchError:"\uC0AC\uC6B4\uB4DC \uC18C\uC2A4\uB97C \uAC00\uC838\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",ttsUnavailable:"\uC774 \uAE30\uAE30\uC5D0\uC11C\uB294 \uC74C\uC131\uC744 \uB4E4\uB824\uC904 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",selectConfirm:"\uBB38\uC81C\uB97C \uBCF4\uACE0 \uD574\uB2F9\uD558\uB294 \uB0B4\uC6A9\uC744 \uC120\uD0DD\uD558\uC138\uC694.",orderListDefault:"\uBB38\uC7A5\uC744 \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uBC30\uCE58\uD558\uC138\uC694.",result:{pendingDone:"\uACB0\uACFC\uB97C \uACC4\uC0B0\uD558\uB294 \uC911\uC774\uB77C \uC544\uC9C1 \uC644\uB8CC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.",eyebrow:"\uD6C8\uB828 \uC644\uB8CC",title:"\uD6C8\uB828\uC744 \uBAA8\uB450 \uB9C8\uCCE4\uC2B5\uB2C8\uB2E4.",scoreAria:"{{correct}} / {{total}} \uBB38\uD56D",elapsed:"\uC18C\uC694 \uC2DC\uAC04",summary:"{{correct}}\uAC1C\uC758 \uBB38\uD56D\uC744 \uC798 \uB4E4\uC5C8\uC2B5\uB2C8\uB2E4.",tableAriaLabel:"\uBB38\uD56D\uBCC4 \uD310\uC815",colJudge:"\uD310\uC815",colAnswerSelected:"\uC815\uB2F5 \xB7 \uC120\uD0DD",colAnswer:"\uC815\uB2F5",colSelected:"\uC120\uD0DD",heardWell:"\uC798 \uB4E4\uC5C8\uC5B4\uC694",notHeard:"\uBABB \uB4E4\uC5C8\uC5B4\uC694",notJudged:"\uBBF8\uD310\uC815",replay:"\uB2E4\uC2DC\uD558\uAE30",done:"\uC644\uB8CC",viewResult:"\uACB0\uACFC \uD655\uC778",noContent:"(\uB0B4\uC6A9\uC5C6\uC74C)"},up:"\uC704\uB85C",down:"\uC544\uB798\uB85C",prev:"\uC774\uC804",listenLabel:"\uBB38\uC7A5 \uB4E3\uAE30",sourcePlay:"\uC18C\uC2A4 {{n}} \uC7AC\uC0DD",listen:"\uB4E3\uAE30",audioStatus:{idle:"\uB300\uAE30",resolving:"\uB9AC\uC18C\uC2A4 \uB9E4\uD551 \uC911\u2026",checking_exists:"\uD30C\uC77C \uC874\uC7AC \uD655\uC778\u2026",getting_signed_url:"\uC11C\uBA85 URL \uC870\uD68C\u2026",downloading:"\uB2E4\uC6B4\uB85C\uB4DC \uC911\u2026",measuring_duration:"\uC624\uB514\uC624 \uAE38\uC774 \uCE21\uC815\u2026",ready:"\uC900\uBE44 \uC644\uB8CC",error:"\uC624\uB958 \uBC1C\uC0DD"}},Na={totalCount:"\uAC1C\uC758 \uD6C8\uB828 \uBB36\uC74C",renameGroup:"\uADF8\uB8F9 \uC774\uB984 \uBC14\uAFB8\uAE30",itemCount:"\uD6C8\uB828 \uAC1C\uC218",menu:{edit:"\uD6C8\uB828 \uBB36\uC74C \uC218\uC815",rename:"\uC774\uB984 \uBC14\uAFB8\uAE30",move:"\uADF8\uB8F9 \uC774\uB3D9",duplicate:"\uD6C8\uB828 \uBB36\uC74C \uBCF5\uC0AC",publish:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uC62C\uB9AC\uAE30"},sort:{customers:"\uD6C8\uB828 \uACE0\uAC1D"},copyLink:"\uB9C1\uD06C \uBCF5\uC0AC",removeLink:"\uB9C1\uD06C \uC81C\uAC70",linkRemoved:"\uB9C1\uD06C\uAC00 \uC81C\uAC70\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",linkSaveFirst:"\uBA3C\uC800 \uD6C8\uB828 \uBB36\uC74C\uC744 \uC800\uC7A5\uD574\uC8FC\uC138\uC694.",linkSaveFirstHint:"\uC800\uC7A5\uB41C \uD6C8\uB828 \uBB36\uC74C\uC5D0\uC11C\uB9CC \uACF5\uC720 \uB9C1\uD06C\uB97C \uC0DD\uC131\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",linkCopySelect:"\uBCF5\uC0AC\uAC00 \uB9C9\uD600 \uB9C1\uD06C\uB97C \uC120\uD0DD\uD588\uC2B5\uB2C8\uB2E4. Ctrl/\u2318+C\uB85C \uBCF5\uC0AC\uD558\uC138\uC694.",nameRequired:"\uD6C8\uB828 \uBB36\uC74C \uC774\uB984\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694.",itemRequired:"\uD6C8\uB828\uC744 1\uAC1C \uC774\uC0C1 \uB2F4\uC544\uC8FC\uC138\uC694.",randomAdd:"\uBB34\uC791\uC704 \uCD94\uAC00"},_a={totalCount:"\uBA85\uC758 \uACE0\uAC1D",loadError:"\uBAA9\uB85D\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",basicInfo:{editTooltip:"\uC218\uC815\uD558\uAE30"},member:{placeholder:"\uC774\uBA54\uC77C \uB610\uB294 \uC804\uD654",link:"\uC5F0\uACB0",linking:"\uC5F0\uACB0 \uC911\u2026"},device:{title:"\uCCAD\uAC01\uC7AC\uD65C\uAE30\uAE30",addTooltip:"\uC0C8\uB85C \uC0DD\uC131",addButton:"\uAE30\uAE30 \uCD94\uAC00",listTooltip:"\uBAA9\uB85D \uBCF4\uAE30",listTitle:"\uCE21 \uAE30\uAE30 \uBAA9\uB85D",historyEmpty:"\uB4F1\uB85D\uB41C \uAE30\uAE30 \uC774\uB825\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",wearing:"\uCE21 \uCC29\uC6A9\uC911",notRegistered:"\uBBF8\uB4F1\uB85D",unit:"\uAC1C",wearingNow:"\uCC29\uC6A9",wear:"\uCC29\uC6A9",unwear:"\uCC29\uC6A9 \uD574\uC81C",wornSince:"{{date}}\uBD80\uD130",release:"\uD574\uC81C",historyTitle:"\uCCAD\uAC01\uC7AC\uD65C\uAE30\uAE30 \uC774\uB825"},schedule:{title:"\uBC29\uBB38 \uC608\uC815",addTooltip:"\uC608\uC815 \uB4F1\uB85D",listTooltip:"\uC804\uCCB4 \uBCF4\uAE30",empty:"\uC608\uC815\uB41C \uBC29\uBB38\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",registerTitle:" \uACE0\uAC1D\uB2D8 \uBC29\uBB38 \uC608\uC815 \uB4F1\uB85D",memoPlaceholder:"\uBC29\uBB38 \uC608\uC815 \uAD00\uB828 \uBA54\uBAA8\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694."},visitHistory:{title:"\uBC29\uBB38 \uC774\uB825",addTooltip:"\uC2E0\uADDC \uB4F1\uB85D",empty:"\uC544\uC9C1 \uBC29\uBB38 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",popupTitle:" \uACE0\uAC1D\uB2D8 \uBC29\uBB38 \uC774\uB825",registerTitle:" \uACE0\uAC1D\uB2D8 \uC2E0\uADDC \uBC29\uBB38 \uB4F1\uB85D"},homework:{title:"\uC219\uC81C \uC9C4\uD589\uC0C1\uD669",active:"\uD65C\uC131",inactive:"\uBE44\uD65C\uC131",copy:"\uB9C1\uD06C \uBCF5\uC0AC",copied:"\uB9C1\uD06C\uAC00 \uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},moreItems:"\uB354 \uC788\uC74C",viewAll:"\uC804\uCCB4 \uBCF4\uAE30",visits:{title:"\uBC29\uBB38"},trainingRecord:{title:"\uACE0\uAC1D \uD6C8\uB828 \uAE30\uB85D"},status:{trainingSubtitle:"\uD6C8\uB828 \uD604\uD669"},detail:{session:{completedFmt:"\uC644\uB8CC {{done}}/{{total}} \xB7 {{duration}}"},visitSuffix:"\uC758 \uBC29\uBB38"},duration:{minSec:"{{m}}\uBD84 {{s}}\uCD08",min:"{{m}}\uBD84",sec:"{{s}}\uCD08"}},Oa={plan:{recommendedFor:"\uC774\uB7F0 \uBD84\uAED8 \uCD94\uCC9C\uD569\uB2C8\uB2E4.",features:"\uD575\uC2EC \uAE30\uB2A5",freePrice:"\uBB34\uB8CC",contact:"\uBB38\uC758\uD558\uAE30",tierFallback:"\uC774\uC6A9\uAD8C",openPromo:"\uC624\uD508 \uD2B9\uAC00"},products:{mgrEnterprise:{tier:{price:"\uBB38\uC758"}}}},La={title:"\uCFE0\uD3F0",subtitle:"\uCFE0\uD3F0 \uCF54\uB4DC\uB97C \uC785\uB825\uD558\uAC70\uB098 \uBCF4\uC720 \uCFE0\uD3F0\uC744 \uD655\uC778\uD558\uC138\uC694.",input:{label:"\uCFE0\uD3F0 \uCF54\uB4DC",placeholder:"\uCFE0\uD3F0 \uCF54\uB4DC \uC785\uB825"},applyButton:"\uC801\uC6A9",error:{invalid:"\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uCFE0\uD3F0 \uCF54\uB4DC\uC785\uB2C8\uB2E4.",alreadyUsed:"\uC774\uBBF8 \uC0AC\uC6A9\uB41C \uCFE0\uD3F0\uC785\uB2C8\uB2E4."},success:{applied:'"{{name}}" \uCFE0\uD3F0\uC774 \uC801\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.'},section:{owned:"\uBCF4\uC720 \uCFE0\uD3F0"},status:{used:"\uC0AC\uC6A9 \uC644\uB8CC",available:"\uC0AC\uC6A9 \uAC00\uB2A5"}},Ra={unitVisit:"\uAC74",periodAll:"\uC804\uCCB4",showN:"{{n}}\uAC1C\uC529"},Pa={subtitle:"\uC5C5\uCCB4 \uBC0F \uBC95\uC778 \uC815\uBCF4\uB97C \uAD00\uB9AC\uD558\uC138\uC694.",editButton:"\uC815\uBCF4 \uC218\uC815",basicInfo:{title:"\uAE30\uBCF8 \uC815\uBCF4"},contactInfo:{title:"\uC5F0\uB77D\uCC98 \uC815\uBCF4"}},Ma={title:"\uD6C8\uB828\uBCC4 \uB4E3\uAE30",subtitle:"\uC6D0\uD558\uB294 \uD6C8\uB828 \uC720\uD615\uC744 \uC120\uD0DD\uD558\uC138\uC694.",listenInNoise:{title:"\uC18C\uC74C \uD558 \uBB38\uC7A5 \uB4E3\uAE30",desc:"\uB2E4\uC591\uD55C \uC18C\uC74C \uD658\uACBD\uC5D0\uC11C \uBB38\uC7A5 \uCCAD\uB825\uC744 \uD6C8\uB828\uD569\uB2C8\uB2E4."},shortStory:{title:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",desc:"\uC9E7\uC740 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uB0B4\uC6A9\uC744 \uC774\uD574\uD569\uB2C8\uB2E4."},longStory:{title:"\uAE34 \uC774\uC57C\uAE30 \uB4E3\uAE30",desc:"\uAE34 \uC774\uC57C\uAE30\uB97C \uC9D1\uC911\uD574\uC11C \uB4E3\uACE0 \uB0B4\uC6A9\uC744 \uD30C\uC545\uD569\uB2C8\uB2E4."},orderingSentence:{title:"\uBB38\uC7A5 \uC21C\uC11C\uD654",desc:"\uB4E4\uC740 \uBB38\uC7A5\uB4E4\uC744 \uC62C\uBC14\uB978 \uC21C\uC11C\uB85C \uBC30\uC5F4\uD569\uB2C8\uB2E4."},SAME_SOUND_PICK:{label:"\uAC19\uC740 \uC18C\uB9AC \uACE0\uB974\uAE30",sub:"\uB4E4\uC740 \uC18C\uB9AC\uC640 \uAC19\uC740 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},SAME_OR_DIFF:{label:"\uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0 \uB9DE\uD788\uAE30",sub:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0, \uB2E4\uB978\uC9C0 \uAD6C\uBD84\uD558\uC138\uC694."},HEAR_AND_PICK_SAME:{label:"\uC77C\uCE58\uD558\uB294 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uC18C\uB9AC\uC758 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},HEAR_AND_PICK_INCLUDED:{label:"\uD55C \uC74C\uC808 \uD3EC\uD568 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uC74C\uC808\uC774 \uD3EC\uD568\uB41C \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},STARTS_WITH_SAME_SOUND:{label:"\uCCAB \uC74C\uC808\uC774 \uAC19\uC740 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",sub:"\uB4E4\uC740 \uB2E8\uC5B4\uC640 \uAC19\uC740 \uC18C\uB9AC\uB85C \uC2DC\uC791\uD558\uB294 \uB2E8\uC5B4\uB97C \uACE0\uB974\uC138\uC694."},LISTEN_AND_REMEMBER_ORDER:{label:"\uB4E3\uACE0 \uC21C\uC11C\uB300\uB85C \uAE30\uC5B5\uD558\uAE30",sub:"\uC138 \uB2E8\uC5B4\uB97C \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694."},MERGE_2_SYLLABLES:{label:"\uC74C\uC808 2\uAC1C \uD569\uCE58\uAE30",sub:"\uB450 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},MERGE_3_SYLLABLES:{label:"\uC74C\uC808 3\uAC1C \uD569\uCE58\uAE30",sub:"\uC138 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},MERGE_2_PHONEMES:{label:"\uC74C\uC18C 2\uAC1C \uD569\uCE58\uAE30",sub:"\uB450 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},MERGE_3_PHONEMES:{label:"\uC74C\uC18C 3\uAC1C \uD569\uCE58\uAE30",sub:"\uC138 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_1_FROM_2SYLL:{label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uD0C8\uB77D",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_1_FROM_3SYLL:{label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uD0C8\uB77D",sub:"3\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},DROP_PART_FROM_COMPOUND:{label:"\uD569\uC131\uC5B4\uC5D0\uC11C \uBD80\uBD84 \uD0C8\uB77D",sub:"\uD569\uC131\uC5B4\uC758 \uC77C\uBD80\uB97C \uBE7C\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"1\uC74C\uC808\uC5D0\uC11C \uBC1B\uCE68 \uD0C8\uB77D",sub:"\uBC1B\uCE68\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"1\uC74C\uC808\uC5D0\uC11C \uC790\uC74C \uD0C8\uB77D",sub:"\uC790\uC74C\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB0A8\uC744\uAE4C\uC694?"},CHANGE_1_SYLL_IN_2SYLL:{label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_SYLL_IN_3SYLL:{label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",sub:"3\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_PHONEME_IN_1SYLL:{label:"1\uC74C\uC808 \uB2E8\uC5B4 \uC911 1\uAC1C \uC74C\uC18C \uBC14\uAFB8\uAE30",sub:"1\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uC138\uC694."},CHANGE_1_PHONEME_IN_2SYLL:{label:"2\uC74C\uC808 \uB2E8\uC5B4 \uC911 1\uAC1C \uC74C\uC18C \uBC14\uAFB8\uAE30",sub:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."}},Ia={comingSoon:"\uB2E8\uC5B4\uD6C8\uB828 \uAE30\uB2A5\uC744 \uC900\uBE44 \uC911\uC785\uB2C8\uB2E4."},ka={colName:"\uB2E8\uC5B4\uD45C \uC774\uB984",open:"\uC5F4\uAE30",countSuffix:"\uAC1C\uC758 \uB2E8\uC5B4\uD45C",tab:{cards:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC",tables:"\uB2E8\uC5B4\uD45C"},cardsEmpty:"\uC544\uC9C1 \uB9CC\uB4E0 \uB2E8\uC5B4\uD45C \uCE74\uB4DC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",addCard:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC \uCD94\uAC00",menu:{publishStore:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uC62C\uB9AC\uAE30",unpublishStore:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0\uC11C \uB0B4\uB9AC\uAE30"},newBadge:"\uC0C8\uB85C \uB9CC\uB4E0 \uD45C",publishedBadge:"\uBC1C\uD589\uB428",sharedBadge:"\uACF5\uC720 \uC911"},xa={title:"\uC8FC\uC694 \uB2E8\uC5B4",empty:"\uCD94\uCD9C\uB41C \uC8FC\uC694 \uB2E8\uC5B4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},ja={defaultName:"\uB2E8\uC5B4 \uD45C",title:"\uB2E8\uC5B4 \uD45C \uB9CC\uB4E4\uAE30",subtitle:"\uCE78\uC744 \uC124\uC815\uD558\uACE0 \uB2E8\uC5B4\uB97C \uCD94\uAC00\uD558\uC5EC \uD45C\uB97C \uB9CC\uB4ED\uB2C8\uB2E4.",filterTitle:"\uD45C \uC124\uC815",filter:{composition:"\uAD6C\uC131",image:"\uC774\uBBF8\uC9C0",word:"\uB2E8\uC5B4",standardPron:"\uD45C\uC900 \uBC1C\uC74C",colloquialPron:"\uAD6C\uC5B4\uCCB4 \uBC1C\uC74C",paperOrientation:"\uC6A9\uC9C0 \uBC29\uD5A5",landscape:"\uAC00\uB85C",portrait:"\uC138\uB85C",columns:"\uCE78 \uC218",column:"{{count}}\uCE78",itemsPerPageWord:"\uD398\uC774\uC9C0\uB2F9 \uB2E8\uC5B4 \uC218",itemsPerPagePair:"\uD398\uC774\uC9C0\uB2F9 \uB300\uB9BD\uC30D \uC218",itemsPerPageOption:"{{count}}\uAC1C",pageIndicator:"{{current}} / {{total}}",pageNumber:"\uD398\uC774\uC9C0 \uBC88\uD638",pageNumberLeft:"\uC67C\uCABD",pageNumberCenter:"\uC911\uC559",pageNumberRight:"\uC624\uB978\uCABD",border:"\uC678\uACFD\uC120",topInfo:"\uC0C1\uB2E8 \uC815\uBCF4",bottomInfo:"\uD558\uB2E8 \uC815\uBCF4",cutLine:"\uC808\uCDE8\uC120",show:"\uD45C\uC2DC",hide:"\uBBF8\uD45C\uC2DC",dotted:"\uC810\uC120",corner:"\uCF54\uB108"},addWord:"\uCD94\uAC00\uD558\uAE30",wordInfo:"{{word}} \uB0B1\uB9D0 \uC815\uBCF4",emptyItems:"\uB2E8\uC5B4\uB97C 1\uAC1C \uC774\uC0C1 \uCD94\uAC00\uD574\uC8FC\uC138\uC694.",load:"\uBD88\uB7EC\uC624\uAE30",openNewWindow:"\uC0C8 \uCC3D\uC73C\uB85C \uBCF4\uAE30",saveButton:"\uC800\uC7A5\uD558\uAE30",saveAsNewButton:"\uB2E4\uB978 \uC774\uB984\uC73C\uB85C \uC800\uC7A5",print:"\uC778\uC1C4\uD558\uAE30",popupBlocked:"\uD31D\uC5C5\uC774 \uCC28\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800 \uC124\uC815\uC5D0\uC11C \uD31D\uC5C5\uC744 \uD5C8\uC6A9\uD574 \uC8FC\uC138\uC694.",printFileNameSingle:"\uB2E8\uC5B4\uD45C",printFileNamePair:"\uB300\uB9BD\uC30D\uD45C",save:{title:"\uB2E8\uC5B4\uD45C \uC800\uC7A5\uD558\uAE30",nameLabel:"\uC774\uB984",desc:"\uC800\uC7A5\uD560 \uB2E8\uC5B4 \uD45C\uC758 \uC774\uB984\uC744 \uC785\uB825\uD558\uC138\uC694.",placeholder:"\uC774 \uB2E8\uC5B4\uD45C\uC5D0 \uB300\uD55C \uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694.",descriptionLabel:"\uC124\uBA85",descriptionPlaceholder:"\uC774 \uB2E8\uC5B4\uD45C\uC5D0 \uB300\uD55C \uC124\uBA85\uC744 \uC785\uB825\uD558\uC138\uC694.",duplicateName:"\uC774\uBBF8 \uC0AC\uC6A9 \uC911\uC778 \uC774\uB984\uC785\uB2C8\uB2E4.",nameRequired:"\uD45C \uC774\uB984\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694.",autoFillHint:" (Tab \uB610\uB294 space \uC785\uB825\uC2DC \uC790\uB3D9 \uC785\uB825)",copyName:"{{name}} (\uBCF5\uC0AC)"},loadTable:{title:"\uC800\uC7A5\uB41C \uB2E8\uC5B4 \uD45C \uBD88\uB7EC\uC624\uAE30",empty:"\uC800\uC7A5\uB41C \uB2E8\uC5B4 \uD45C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",loadButton:"\uBD88\uB7EC\uC624\uAE30",itemCount:"{{count}}\uAC1C",deleteAriaLabel:"{{name}} \uC0AD\uC81C",sort:{newest:"\uCD5C\uC2E0\uC21C",oldest:"\uC624\uB798\uB41C\uC21C",name:"\uC774\uB984\uC21C",count:"\uB2E8\uC5B4 \uC218"},view:{grid:"\uD45C\uB85C \uBCF4\uAE30",list:"\uB9AC\uC2A4\uD2B8\uB85C \uBCF4\uAE30"}},groupDeleteMessage:"\uADF8\uB8F9 \uB0B4 \uB2E8\uC5B4\uD45C\uB294 '\uADF8\uB8F9 \uC5C6\uC74C'\uC73C\uB85C \uC774\uB3D9\uD569\uB2C8\uB2E4.",groupNamePlaceholder:"\uADF8\uB8F9 \uC774\uB984",store:{badge:"\uB9D0\uADC0\uC790\uB8CC\uC2E4"},card:{sub:"\uB2E8\uC5B4\uD45C \uCE74\uB4DC",empty:"\uC774 \uCE74\uB4DC\uC5D0 \uB2E8\uC5B4\uD45C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},toast:{renameError:"\uC774\uB984 \uBCC0\uACBD\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",saveError:"\uC800\uC7A5\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",deleteError:"\uC0AD\uC81C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",duplicateError:"\uBCF5\uC81C\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4",saveSuccess:"\uB2E8\uC5B4\uD45C\uAC00 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4."},scoring:{o:"{{word}} \uB9DE\uC74C",triangle:"{{word}} \uC560\uB9E4",x:"{{word}} \uD2C0\uB9BC",markName:{o:"\uB9DE\uC74C",triangle:"\uC560\uB9E4",x:"\uD2C0\uB9BC"},button:"\uCC44\uC810\uD558\uAE30",pickTitle:"\uB204\uAD6C\uB97C \uCC44\uC810\uD560\uAE4C\uC694?",pickSubtitle:"\u2018{{name}}\u2019 \uD45C\uB85C \uD6C8\uB828\uD55C \uACE0\uAC1D\uC744 \uACE0\uB974\uC138\uC694.",pickSearch:"\uC774\uB984 \uB610\uB294 \uC804\uD654\uBC88\uD638\uB85C \uCC3E\uAE30",pickEmpty:"\uB4F1\uB85D\uB41C \uACE0\uAC1D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",pickNoMatch:"\uCC3E\uB294 \uACE0\uAC1D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",pickAgain:"\uACE0\uAC1D \uB2E4\uC2DC \uACE0\uB974\uAE30",scoringFor:"{{name}} \uB2D8 \uCC44\uC810 \uC911",none:"\uCE78 \uC544\uB798 \u25CB \xB7 \u25B3 \xB7 \u2715 \uB97C \uB20C\uB7EC \uB9E4\uAE30\uC138\uC694. \uB9C8\uC6B0\uC2A4\uB85C\uB294 \uCE78\uC5D0 \uC190\uC744 \uC5B9\uC73C\uBA74 \uB098\uD0C0\uB0A9\uB2C8\uB2E4.",tally:"{{marked}}\uCE78 \uCC44\uC810 \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 \uC815\uB2F5\uB960 {{rate}}%",save:"\uCC44\uC810 \uC800\uC7A5",saved:"{{name}} \uB2D8\uC758 \uCC44\uC810 {{count}}\uCE78\uC744 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.",reviewTitle:"\uBCF5\uC2B5\uD45C\uB97C \uB9CC\uB4E4\uAE4C\uC694?",reviewMessage:"{{name}} \uB2D8\uC774 \uD2C0\uB9AC\uAC70\uB098 \uC560\uB9E4\uD588\uB358 {{count}}\uCE78\uC73C\uB85C \uC0C8 \uD45C\uB97C \uB9CC\uB4ED\uB2C8\uB2E4. \uB9DE\uD78C \uCE78\uC740 \uBE60\uC9D1\uB2C8\uB2E4.",reviewConfirm:"\uBCF5\uC2B5\uD45C \uB9CC\uB4E4\uAE30",reviewDescription:"\u2018{{name}}\u2019 \uCC44\uC810\uC5D0\uC11C \uD2C0\uB9AC\uAC70\uB098 \uC560\uB9E4\uD588\uB358 {{count}}\uCE78\uC744 \uBAA8\uC740 \uD45C\uC785\uB2C8\uB2E4.",reviewCreated:"\u2018{{name}}\u2019\uC744(\uB97C) \uB9CC\uB4E4\uC5C8\uC2B5\uB2C8\uB2E4 \u2014 {{count}}\uCE78.",discardTitle:"\uB9E4\uAE34 \uCC44\uC810\uC744 \uBC84\uB9B4\uAE4C\uC694?",discardMessage:"{{count}}\uCE78\uC744 \uB9E4\uACBC\uC9C0\uB9CC \uC544\uC9C1 \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uB098\uAC00\uBA74 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",discardConfirm:"\uBC84\uB9AC\uACE0 \uB098\uAC00\uAE30"},info:{grade:"\uB09C\uC774\uB3C4: {{n}}\uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218: {{n}}\uC74C\uC808",pos:"\uD488\uC0AC: {{v}}",wordType:"\uC720\uD615: {{v}}"},pos:{noun:"\uBA85\uC0AC",verb:"\uB3D9\uC0AC",adjective:"\uD615\uC6A9\uC0AC",adverb:"\uBD80\uC0AC",numeral:"\uC218\uC0AC",determiner:"\uAD00\uD615\uC0AC",interjection:"\uAC10\uD0C4\uC0AC",particle:"\uC870\uC0AC",affix:"\uC811\uC0AC",dependentNoun:"\uC758\uC874\uBA85\uC0AC",pronoun:"\uB300\uBA85\uC0AC",auxVerb:"\uBCF4\uC870\uB3D9\uC0AC",auxAdjective:"\uBCF4\uC870\uD615\uC6A9\uC0AC"},reorder:{moved:"{{total}}\uCE78 \uAC00\uC6B4\uB370 {{n}}\uBC88\uC9F8\uB85C \uC62E\uAE40",handle:"{{word}} \uC21C\uC11C \uBC14\uAFB8\uAE30 (Alt + \uD654\uC0B4\uD45C)",hint:"Alt + \u2190 \u2192 \uB85C \uC21C\uC11C \uBC14\uAFB8\uAE30"}},Fa={editBanner:{message:"\uC800\uC7A5\uD558\uBA74 \uC9C0\uAE08 \uC218\uC815 \uC911\uC778 \uB2E8\uC5B4\uD45C\uAC00 \uAC31\uC2E0\uB429\uB2C8\uB2E4."},filterTitle:"\uB2E8\uC5B4 \uAC80\uC0C9 \uC124\uC815",filter:{positionAny:"\uBB34\uAD00",positionHead:"\uC5B4\uB450",positionMid:"\uC5B4\uC911",positionTail:"\uC5B4\uB9D0",difficulty:"\uB4F1\uAE09",grade:"{{n}}\uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218",syllable:"{{n}}\uC74C\uC808",syllable5plus:"5\uC74C\uC808 \uC774\uC0C1",partOfSpeech:"\uD488\uC0AC",pos:{noun:"\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)",verb:"\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)",modifier:"\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)"},wordType:"\uC720\uD615",type:{native:"\uACE0\uC720\uC5B4",sino:"\uD55C\uC790\uC5B4",foreign:"\uC678\uB798\uC5B4",mixed:"\uD63C\uC885\uC5B4"},exclude:"\uC81C\uC678",excludeNoImage:"\uC774\uBBF8\uC9C0 \uC5C6\uC74C"},searchButton:"\uAC80\uC0C9\uD558\uAE30",resultUnit:"\uB2E8\uC5B4",remaining:"{{count}}\uAC1C \uB0A8\uC74C",resultDisc:"\uC6D0\uD558\uB294 {{unit}} \uC120\uD0DD\uD558\uC138\uC694. {{max}}\uAC1C\uAE4C\uC9C0 \uC120\uD0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. ({{selected}}/{{max}})",resultTitlePrefix:"\uCD1D ",resultTitleSuffix:"\uAC1C\uC758 {{unit}} \uAC80\uC0C9\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",emptyResult:"\uAC80\uC0C9 \uACB0\uACFC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",groupCount:"{{count}}\uAC1C",sort:{aria:"\uC815\uB82C",match:"\uC2DC\uC791 \uC6B0\uC120",ganada:"\uAC00\uB098\uB2E4\uC21C \u2191",ganadaDesc:"\uAC00\uB098\uB2E4\uC21C \u2193",syllable:"\uC74C\uC808 \uC218 \u2191",syllableDesc:"\uC74C\uC808 \uC218 \u2193",grade:"\uB4F1\uAE09\uC21C \u2191",gradeDesc:"\uB4F1\uAE09\uC21C \u2193",original:"\uBC1B\uC740 \uC21C\uC11C"},pageSize:"{{count}}\uAC1C\uC529 \uBCF4\uAE30",pageSizeAria:"\uD398\uC774\uC9C0 \uD06C\uAE30",popup:{title:"{{n}}\uBC88 \uCE78\uC5D0 \uB123\uC744 \uB2E8\uC5B4\uB97C \uC120\uD0DD\uD558\uC138\uC694"}},$a={clearAllSelection:"\uBAA8\uB450 \uC120\uD0DD \uD574\uC81C",divLine:"\uB300\uB9BD\uC120",removePair:"\uB300\uB9BD\uC30D \uBE7C\uAE30",removeWord:"\uB2E8\uC5B4 \uBE7C\uAE30"},Ha={title:"\uC8FC\uC81C\uBCC4 \uB4E3\uAE30",subtitle:"\uC8FC\uC81C\uB97C \uC120\uD0DD\uD558\uACE0 \uB4E3\uAE30 \uD6C8\uB828\uC744 \uC2DC\uC791\uD558\uC138\uC694.",noiseTitle:"\uC18C\uC74C \uD558 \uBB38\uC7A5\uB4E3\uAE30",shortStoryTitle:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",FOOD:"\uC74C\uC2DD",HLTH:"\uAC74\uAC15",WETH:"\uB0A0\uC528",PRSN:"\uC778\uBB3C",KRCT:"\uD55C\uAD6D\uBB38\uD654",STRY:"\uC774\uC57C\uAE30",LOCA:"\uC9C0\uC5ED",SOAR:"\uC0AC\uD68C\uC640 \uC608\uC220",NTSC:"\uC790\uC5F0\uACFC \uACFC\uD559",SPRT:"\uC2A4\uD3EC\uCE20",sub:{TRKRFD:"\uD55C\uAD6D \uC804\uD1B5\uC74C\uC2DD",MDKRFD:"\uD55C\uAD6D \uD604\uB300\uC74C\uC2DD",WRLDFD:"\uC138\uACC4\uC758 \uC74C\uC2DD",MTRFRT:"\uC2DD\uC7AC\uB8CC\uC640 \uACFC\uC77C",GEFDKL:"\uC74C\uC2DD \uC0C1\uC2DD",HTETHB:"\uAC74\uAC15\uD55C \uC2DD\uC2B5\uAD00",DISILL:"\uBCD1\uACFC \uC9C8\uD658",EXCISE:"\uC6B4\uB3D9",GEHTKL:"\uAC74\uAC15\uC0C1\uC2DD",GESSKL:"\uACC4\uC808\uC0C1\uC2DD",SNWRAN:"\uB208\uACFC \uBE44",WTHFCT:"\uC77C\uAE30\uC608\uBCF4",GEWTKL:"\uB0A0\uC528\uC0C1\uC2DD",JODYPS:"\uC870\uC120\uC2DC\uB300",MDKRPS:"\uD55C\uAD6D \uADFC\uD604\uB300",THKDPS:"\uC0BC\uAD6D\uC2DC\uB300",WRLART:"\uC138\uACC4\uC758 \uC608\uC220\uAC00",WRLPSN:"\uC138\uACC4\uC758 \uC778\uBB3C",KRLANG:"\uC6B0\uB9AC\uB9D0",TRPLCT:"\uC804\uD1B5\uB180\uC774",HERITG:"\uBB38\uD654\uC7AC",EVTFES:"\uD589\uC0AC\uC640 \uCD95\uC81C",GECTKL:"\uC0C1\uC2DD",FRYTAL:"\uB3D9\uD654",AMZING:"\uC2E0\uAE30\uD55C \uC774\uC57C\uAE30",DAYSTR:"\uC77C\uC0C1 \uC18D \uC774\uC57C\uAE30",KRLDMK:"\uD55C\uAD6D\uC758 \uBA85\uC18C",SELNMK:"\uC11C\uC6B8\uC758 \uBA85\uC18C",WRDTRB:"\uC138\uACC4\uC5EC\uD589",NAVIGT:"\uAE38 \uCC3E\uAE30",KRSOCI:"\uD55C\uAD6D",ECONEW:"\uACBD\uC81C\uC640 \uB274\uC2A4",GENART:"\uC608\uC220",GELFKL:"\uC0DD\uD65C \uC0C1\uC2DD",ANIMAL:"\uB3D9\uBB3C",PLANTS:"\uC2DD\uBB3C",ETHPLT:"\uC9C0\uAD6C",TOLELC:"\uB3C4\uAD6C\uC640 \uC804\uC790\uC81C\uD488",GESCKL:"\uACFC\uD559\uC0C1\uC2DD",INVDSP:"\uAC1C\uC778\uACBD\uAE30",MARART:"\uACA9\uD22C\uAE30",TEAMSP:"\uB2E8\uCCB4\uACBD\uAE30",FOOTBL:"\uCD95\uAD6C",GESPKL:"\uC2A4\uD3EC\uCE20 \uC0C1\uC2DD"}},Ga={maxUses:"\uCD5C\uB300 \uC0AC\uC6A9 \uD69F\uC218 (\uBE44\uC6CC\uB450\uBA74 \uBB34\uC81C\uD55C)",redirect:"\uC774\uB3D9\uD560 \uD398\uC774\uC9C0 URL (\uBE44\uC6CC\uB450\uBA74 \uC571 \uBA54\uC778)",creating:"\uC0DD\uC131 \uC911\u2026",create:"\uB9C1\uD06C \uC0DD\uC131",created:"\u2713 \uB9C1\uD06C\uAC00 \uC0DD\uC131\uB418\uC5C8\uC2B5\uB2C8\uB2E4",copied:"\uBCF5\uC0AC\uB428!",copy:"\uBCF5\uC0AC",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026",empty:"\uC0DD\uC131\uB41C \uB9C1\uD06C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",uses:"{{count}}\uD68C \uC0AC\uC6A9",expiresAt:"\uB9CC\uB8CC: {{date}}",createdAt:"\uC0DD\uC131: {{date}}",confirmDelete:"\uC0AD\uC81C\uD560\uAE4C\uC694?",deactivate:"\uBE44\uD65C\uC131\uD654",delete:"\uC0AD\uC81C",status:{active:"\uC720\uD6A8",expired:"\uB9CC\uB8CC",inactive:"\uBE44\uD65C\uC131"}},Va={passwordPlaceholder:"\uBE44\uBC00\uBC88\uD638 \uC785\uB825"},Wa={subtitle:"\uC8FC\uC81C\uB97C \uC120\uD0DD\uD558\uC5EC \uB4E3\uAE30 \uC5F0\uC2B5\uC744 \uC9C4\uD589\uD558\uC138\uC694."},Ya={direction:{left:"\uC88C",right:"\uC6B0",label:"\uBC29\uD5A5"},wornDate:"\uCC29\uC6A9\uC77C",deviceType:"\uC885\uB958",brand:"\uBE0C\uB79C\uB4DC",fitType:"\uCC29\uC6A9\uD615\uD0DC",productName:"\uC81C\uD488\uBA85",validationError:{brandAndProduct:"\uBE0C\uB79C\uB4DC\uC640 \uC81C\uD488\uBA85\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694."},addNew:"\uC0C8 \uAE30\uAE30 \uCD94\uAC00",selectFromList:"\uBAA9\uB85D\uC5D0\uC11C \uC120\uD0DD",removeDevice:"\uCC29\uC6A9 \uD574\uC81C",type:{hearingAid:"\uBCF4\uCCAD\uAE30",cochlearImplant:"\uC778\uACF5\uC640\uC6B0"}},Ka={stat:{totalCustomers:"\uCD1D \uACE0\uAC1D",monthlyVisits:"\uC774\uB2EC \uCD1D \uBC29\uBB38"},chart:{visitDetail:"\uC0C1\uC138 \uBC29\uBB38 \uD604\uD669",trainingDetail:"\uC0C1\uC138 \uD6C8\uB828 \uD604\uD669",weekly:"\uC8FC\uBCC4",daily:"\uC77C\uBCC4",periodMonth:"\uC6D4",periodWeek:"\uC8FC",weeklyPrefix:"\uC8FC\uAC04",monthlyPrefix:"\uC6D4\uAC04",visit:"\uBC29\uBB38",reservation:"\uC608\uC57D",trainingDone:"\uD6C8\uB828 \uC644\uB8CC",trainingInProgress:"\uD6C8\uB828 \uC911",weekRange:"{{start}}~{{end}}",week:"{{n}}\uC8FC"},subscriptionStatus:{active:"{{pct}}% \uD65C\uC131",expired:"{{pct}}% \uB9CC\uB8CC",unused:"{{pct}}% \uBBF8\uC0AC\uC6A9"}},Ua={editBanner:{message:"\uC800\uC7A5\uD558\uBA74 \uC9C0\uAE08 \uC218\uC815 \uC911\uC778 \uB300\uB9BD\uC30D\uD45C\uAC00 \uAC31\uC2E0\uB429\uB2C8\uB2E4."},phonemeSelect:{title:"\uC74C\uC18C \uC120\uD0DD",vs:"\uB300"},caution:"\uC720\uC758\uC0AC\uD56D",mode:{include:"\uC74C\uC18C \uD3EC\uD568",pick:"\uC74C\uC18C \uB300\uB9BD",contrast:"\uC74C\uC18C \uB300\uB9BD \uC9C0\uC815",infoTitle:"\uB300\uB9BD \uBC29\uC2DD",infoInclude:"\uC74C\uC18C \uD3EC\uD568 \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uAC00 \uBAA8\uB450 \uB4E4\uC5B4\uAC04 \uB2E8\uC5B4\uC640 \uADF8 \uB300\uB9BD\uC30D\uC744 \uCC3E\uC544\uC694.",infoPick:"\uC74C\uC18C \uB300\uB9BD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uAC00 \uB300\uB9BD\uC30D \uB450 \uB2E8\uC5B4\uC758 \uC2E4\uC81C \uCC28\uC774\uC810\uC77C \uB54C\uB9CC \uB9E4\uCE6D\uB3FC\uC694.",infoContrast:"\uC74C\uC18C \uB300\uB9BD \uC9C0\uC815 \u2014 \uAE30\uC900 \uB2E8\uC5B4\uC640 \uB300\uB9BD \uB2E8\uC5B4\uC758 \uC74C\uC18C\uB97C \uAC01\uAC01 \uC9C1\uC811 \uC120\uD0DD\uD574 \uB300\uB9BD\uC30D\uC744 \uCC3E\uC544\uC694."},count:"{{n}}\uAC1C",input:{char:"\uAE00\uC790 \uC120\uD0DD",pron:"\uBC1C\uC74C \uC120\uD0DD",infoTitle:"\uC785\uB825 \uBC29\uC2DD",infoChar:"\uAE00\uC790 \uC120\uD0DD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uB85C \uB2E8\uC5B4(\uAE00\uC790 \uAE30\uC900)\uB97C \uCC3E\uC740 \uD6C4, \uB2E8\uC5B4\uC758 \uD45C\uC900 \uBC1C\uC74C \uB300\uB9BD\uC30D\uC744 \uCC3E\uC2B5\uB2C8\uB2E4.",infoPron:"\uBC1C\uC74C \uC120\uD0DD \u2014 \uC120\uD0DD\uD55C \uC74C\uC18C\uB85C \uD45C\uC900 \uBC1C\uC74C \uB300\uB9BD\uC30D\uC744 \uCC3E\uC2B5\uB2C8\uB2E4."},phonemeN:"{{n}}\uBC88 \uC74C\uC808",phonemeSingleLabel:"\uC74C\uC808",phonemeContrastSingleLabel:"\uB300\uB9BD \uC74C\uC808",ordinals:["\uCCAB\uBC88\uC9F8","\uB450\uBC88\uC9F8","\uC138\uBC88\uC9F8","\uB124\uBC88\uC9F8"],phonemeOrdinalLabel:"{{ordinal}} \uC74C\uC808",phonemeContrastOrdinalLabel:"\uB300\uB9BD {{ordinal}} \uC74C\uC808",composition:"\uC815\uB2F5 \uB2E8\uC5B4 \uAD6C\uC131",syllableCount:"\uC74C\uC808 \uC218",syllableN:"{{n}}\uC74C\uC808",syllableNPlus:"{{n}}\uC74C\uC808 \uC774\uC0C1",onset:"\uCD08\uC131",vowel:"\uBAA8\uC74C",coda:"\uC885\uC131",filter:{searchOptionsTitle:"\uB300\uB9BD \uC124\uC815",searchModeLabel:"\uB300\uB9BD \uBC29\uC2DD",countLabel:"\uC785\uB825 \uC74C\uC808 \uAC2F\uC218",inputModeLabel:"\uC785\uB825 \uBC29\uC2DD",phonemeOrder:"\uC785\uB825 \uC74C\uC808 \uC704\uCE58",phonemeOrderInfo:["\uC77C\uCE58: \uB300\uB9BD\uC30D\uC774 \uC815\uD655\uD788 \uAC19\uC740 \uC704\uCE58(\uC74C\uC808)\uC5D0\uC11C\uB9CC \uCC28\uC774 \uB098\uC57C \uB9E4\uCE6D\uB3FC\uC694.","\uBB34\uAD00: \uCC28\uC774 \uB098\uB294 \uC704\uCE58\uB294 \uC0C1\uAD00\uC5C6\uC774 \uB9E4\uCE6D\uB3FC\uC694."],orderAny:"\uBB34\uAD00",orderMatch:"\uC77C\uCE58",difficultyInfo:"\uAD6D\uB9BD\uAD6D\uC5B4\uC6D0\uC758 \uAE30\uCD08 \uC5B4\uD718 \uB4F1\uAE09\uC774 \uACB0\uACFC\uC5D0 \uBC18\uC601\uB429\uB2C8\uB2E4.",selectLabel:"\uC120\uD0DD",onlyHasImage:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC",onlySameStructure:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"},searchLabel:{error:"\uB370\uC774\uD130 \uBD88\uB7EC\uC624\uAE30 \uC2E4\uD328",loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026"},confirmMessage:"\uC120\uD0DD\uD55C {{unit}} {{count}}\uAC1C\uB97C \uD3EC\uD568\uD55C \uB2E8\uC5B4 \uD45C \uC815\uBCF4\uAC00 \uC0AC\uB77C\uC9D1\uB2C8\uB2E4.",resetOptions:"\uAC80\uC0C9 \uC635\uC158 \uCD08\uAE30\uD654",phonemeContrast:"\uB300\uB9BD {{n}}\uBC88 \uC74C\uC808",infoNotes:["\uBBF8\uB9AC\uBCF4\uAE30 \uAE00\uC790\uB294 \uC120\uD0DD\uD55C \uC74C\uC18C\uC758 \uC870\uD569 \uC608\uC2DC\uC785\uB2C8\uB2E4. \uC2E4\uC81C \uAC80\uC0C9\uC740 \uD574\uB2F9 \uC74C\uC18C\uAC00 \uD3EC\uD568\uB41C \uBAA8\uB4E0 \uB2E8\uC5B4\uB97C \uB300\uC0C1\uC73C\uB85C \uD569\uB2C8\uB2E4.","\uCD08\uC131 '\u3147'\uC740 \uC120\uD0DD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E8\uC5B4 \uC55E\uC5D0 \uC624\uB294 \u3147\uC740 \uC2E4\uC9C8\uC801\uC73C\uB85C \uBB34\uC74C\uC774\uC5B4\uC11C \uB300\uB9BD\uC30D \uC131\uB9BD\uC5D0 \uC601\uD5A5\uC744 \uC8FC\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.","\uCD08\uC131\uACFC \uC885\uC131\uB9CC \uC120\uD0DD\uD558\uBA74 \uBAA8\uC74C\uC740 '\u314F'\uB85C \uC790\uB3D9 \uD45C\uC2DC\uB429\uB2C8\uB2E4.","\uC74C\uC18C \uAC1C\uC218\uB97C \uB298\uB9AC\uBA74 \uAC01 \uC74C\uC18C \uC0AC\uC774\uC758 \uB300\uB9BD\uC30D\uC744 \uAC80\uC0C9\uD569\uB2C8\uB2E4."]},za={sentenceTyping:{roundCount:"{{rounds}}\uBB38\uC81C \xB7 \uBB38\uC81C\uB2F9 {{timeLimit}}\uCD08"},wordDefense:{me:"\uB098"},dictation:{title:"\uBC1B\uC544\uC4F0\uAE30",desc:"\uBB38\uC7A5\uC744 \uB4E3\uACE0 \uC815\uD655\uD788 \uBC1B\uC544\uC801\uB294 \uC5F0\uC2B5\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC74C\uC131 \uC7AC\uC0DD, \uC785\uB825 \uD544\uB4DC, \uC815\uB2F5 \uBE44\uAD50"},result:{heading:"{{number}}\uB2E8\uACC4 \uD574\uB2F5",retry:"\uB2E4\uC2DC \uD480\uAE30"},common:{accuracy:"{{pct}}% \uC815\uD655\uB3C4"},soundMatch:{title:"\uC18C\uB9AC \uB9E4\uCE6D",desc:"\uAC19\uC740 \uC18C\uB9AC\uB97C \uAC00\uC9C4 \uB2E8\uC5B4 \uB610\uB294 \uBB38\uC7A5\uC744 \uBE60\uB974\uAC8C \uB9E4\uCE6D\uD558\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uD50C\uB808\uC774 \uBC84\uD2BC, \uD0C0\uC774\uBA38, \uC810\uC218 \uC9D1\uACC4"},orderSequence:{title:"\uBB38\uC7A5 \uC21C\uC11C\uD654",desc:"\uD769\uC5B4\uC9C4 \uBB38\uC7A5 \uC870\uAC01\uC744 \uC62C\uBC14\uB978 \uC21C\uC11C\uB85C \uBC30\uC5F4\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uBB38\uC7A5 \uC138\uD2B8, \uC21C\uC11C \uD655\uC778 \uC778\uD130\uD398\uC774\uC2A4"},speedListen:{title:"\uC18D\uB3C4 \uB4E3\uAE30",desc:"\uC2DC\uAC04 \uC81C\uD55C \uB0B4\uC5D0 \uBB38\uC7A5\uC758 \uB2E8\uC5B4 \uC218\uB97C \uB9DE\uCD94\uB294 \uB3C4\uC804\uD615 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC81C\uD55C\uC2DC\uAC04, \uC810\uC218\uD310"},noiseChallenge:{title:"\uC18C\uC74C \uCC4C\uB9B0\uC9C0",desc:"\uBC30\uACBD \uC18C\uC74C \uC18D\uC5D0\uC11C \uBB38\uC7A5\uC744 \uBD84\uBCC4\uD558\uB294 \uC5F0\uC2B5\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uB2E4\uC591\uD55C \uC18C\uC74C \uB808\uBCA8, \uC810\uC218 \uC9D1\uACC4"},fastListen:{title:"\uBE60\uB978 \uB4E3\uAE30",desc:"\uC9E7\uC740 \uBB38\uC7A5\uC744 \uBE60\uB974\uAC8C \uB4E4\uB824\uC8FC\uACE0 \uD575\uC2EC \uB2E8\uC5B4\uB97C \uC120\uD0DD\uD558\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uB09C\uC774\uB3C4\uBCC4 \uC18D\uB3C4, \uD0C0\uC774\uBA38"},shadowing:{title:"\uC250\uB3C4\uC789",desc:"\uBB38\uC7A5\uC744 \uB530\uB77C \uB9D0\uD558\uBA70 \uBC1C\uC74C\uACFC \uC5B5\uC591\uC744 \uC5F0\uC2B5\uD558\uB294 \uBAA8\uB4DC\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC7AC\uC0DD, \uB179\uC74C, \uBE44\uAD50 \uD53C\uB4DC\uBC31"},phonemeHunt:{title:"\uC74C\uC6B4 \uCC3E\uAE30",desc:"\uD2B9\uC815 \uC74C\uC6B4(\uBC1C\uC74C)\uC744 \uD3EC\uD568\uD55C \uB2E8\uC5B4\uB97C \uCC3E\uC544\uB0B4\uB294 \uAC8C\uC784\uC785\uB2C8\uB2E4.",comingSoon:"\uAD6C\uD604 \uC608\uC815: \uC74C\uC6B4 \uD544\uD130, \uD78C\uD2B8 \uAE30\uB2A5"}},qa={lead:`\uC544\uC774\uD574\uBE0C\uB294 \uC18C\uB9AC\uB97C \uD1B5\uD574
2
2
  \uC2E0\uB8B0\uB97C \uC313\uACE0
3
- \uD68C\uBCF5\uC744 \uB3D5\uC2B5\uB2C8\uB2E4.`,site:{title:"\uC0AC\uC774\uD2B8",malgwi:"\uB9D0\uADC0",soundDirection:"\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",vrSoundDirection:"VR\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",hearingTest:"\uCCAD\uB825\uD14C\uC2A4\uD2B8 \uD504\uB85C"},sns:{title:"SNS",naverBlog:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8",kakao:"KAKAO Talk \uC624\uD508\uCC44\uD305"},policy:{title:"\uC815\uCC45",terms:"\uC774\uC6A9\uC57D\uAD00",privacy:"\uAC1C\uC778\uC815\uBCF4 \uCC98\uB9AC\uBC29\uCE68"},ceo:"\uB300\uD45C",address:"\uC8FC\uC18C",support:"\uACE0\uAC1D\uC13C\uD130",ceoName:"\uD55C\uC9C0\uD61C",addressValue:"\uAC15\uC6D0\uB3C4 \uCD98\uCC9C\uC2DC \uC2DC\uCCAD\uAE38 32 \uD574\uCC2C\uBE4C\uB529 3\uCE35 302\uD638"},Ja={trainingPhone:{topic:"\uD143\uBC2D\uAC00\uAFB8\uAE30",prev:"\uC774\uC804",next:"\uB2E4\uC74C",speed:"\uBE60\uB974\uAE30 3",noiseType:"\uC640\uAE00\uC640\uAE00",settings:"\uC124\uC815",start:{caption:"\uC544\uB798 \uD50C\uB808\uC774(\u25B6) \uBC84\uD2BC\uC744 \uB20C\uB7EC \uBB38\uC7A5\uC744 \uC798 \uB4E4\uC5B4\uBCF4\uC138\uC694. \uC798 \uB4E4\uC73C\uC2E0 \uB4A4 \uBB38\uC7A5\uC744 \uD655\uC778\uD558\uC138\uC694."},feedback:{caption:"\uC798 \uD0A4\uC6B4 \uBAA8\uC885\uC744 \uD143\uBC2D\uC5D0 \uC2EC\uACE0 \uBE44\uB2D0\uC744 \uC798 \uB36E\uC5B4 \uC90D\uB2C8\uB2E4."},done:{heardWell:"\uC798 \uB4E4\uB9B0 \uBB38\uC7A5",listenAgain:"\uD55C \uBC88 \uB354 \uB4E3\uAE30"}}},Qa={timeHM:"{{h}}\uC2DC {{m}}\uBD84",timeH:"{{h}}\uC2DC"},Za={options:"\uD6C8\uB828 \uC635\uC158",difficulty:"\uB09C\uC774\uB3C4",exclude:"\uC81C\uC678",chosung:"\uCD08\uC131",excludeOptions:{none:"\uC5C6\uC74C",noImage:"\uC774\uBBF8\uC9C0 \uC5C6\uC74C"}},Xa={answer:"\uC815\uB2F5",distractor:"\uC624\uB2F5"},eu={phaseWordDownload:"\uB2E8\uC5B4 \uB370\uC774\uD130 \uB2E4\uC6B4\uB85C\uB4DC",phaseImageCheck:"\uC774\uBBF8\uC9C0 \uD655\uC778",phasePairAnalysis:"\uB2E8\uC5B4\uC30D \uBD84\uC11D",downloadingCount:"{{n}}\uAC1C \uB2E4\uC6B4\uB85C\uB4DC \uC911",checkingPage:"{{page}}\uD398\uC774\uC9C0 \uBAA9\uB85D \uD655\uC778 \uC911",imageCount:"{{done}} / {{total}}\uAC1C"},tu={clearAriaLabel:"\uC785\uB825\uAC12 \uC9C0\uC6B0\uAE30"},nu={ariaLabel:"\uC120\uD0DD \uD0ED"},ou={ariaLabel:"\uD0ED"},ru={dragPrompt:"\uD30C\uC77C\uC744 \uC774\uACF3\uC5D0 \uB4DC\uB798\uADF8\uD558\uC5EC \uC5C5\uB85C\uB4DC",browseButton:"\uD30C\uC77C \uC120\uD0DD",removeAriaLabel:"{{name}} \uC81C\uAC70"},au={ariaLabel:"\uC0AC\uC6A9\uC790 \uC544\uBC14\uD0C0"},uu={relativeDay:{today:"\uC624\uB298",yesterday:"\uC5B4\uC81C",daysAgo:"{{n}}\uC77C \uC804"},reason:{notLoggedIn:"\uB85C\uADF8\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},list:{title:"\uBC1B\uC740 \uC219\uC81C"},status:{expired:"\uB9CC\uB8CC\uB428",done:"\uC644\uB8CC {{count}}\uD68C \xB7 {{date}}",notDone:"\uBBF8\uC644\uB8CC"}},iu={weekly:{title:"\uC8FC\uAC04 \uD6C8\uB828 \uD604\uD669",daily:"\uC624\uB298\uC758 \uB4E3\uAE30",crossword:"\uAC00\uB85C\uC138\uB85C"},homework:{title:"\uC219\uC81C \uC9C4\uD589\uD604\uD669",totalRate:"\uC804\uCCB4 \uC644\uB8CC\uC728",count:"\uC804\uCCB4",done:"\uC644\uB8CC",remaining:"\uBBF8\uC644\uB8CC"},today:{tooltipTotal:"\uC804\uCCB4",tooltipDone:"\uC644\uB8CC"},filter:{countSuffix:" \uD6C8\uB828"},time:{countLabel:"{{n}}\uD68C \uD6C8\uB828",empty:"\uD6C8\uB828 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},daily:{title:"\uC624\uB298\uC758 \uB4E3\uAE30 \uAE30\uB85D",empty:"\uC644\uB8CC\uD55C \uD68C\uCC28\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},crossword:{title:"\uAC00\uB85C\uC138\uB85C\uD034\uC988",empty:"\uC644\uB8CC\uD55C \uB808\uBCA8\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"},visit:{title:"\uBC29\uBB38 \uC5F0\uB3D9 \uAE30\uB85D"},detail:"\uC0C1\uC138\uBCF4\uAE30",trainingType:{LISTEN_IN_NOISE:"\uC18C\uC74C \uD558 \uBB38\uC7A5",SHORT_STORY:"\uC9E7\uC740 \uC774\uC57C\uAE30",LONG_STORY:"\uAE34 \uC774\uC57C\uAE30",ORDERING_SENTENCE:"\uBB38\uC7A5 \uC21C\uC11C\uD654"}},lu={publish:{descPlaceholder:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uD45C\uC2DC\uD560 \uD55C \uC904 \uC124\uBA85 (\uC120\uD0DD)"},import:"\uB0B4 \uD6C8\uB828\uC5D0 \uAC00\uC838\uC624\uAE30",publisher:"\uAC8C\uC2DC\uC790",time:{justNow:"\uBC29\uAE08 \uC804",minutesAgo:"{{n}}\uBD84 \uC804",hoursAgo:"{{n}}\uC2DC\uAC04 \uC804",daysAgo:"{{n}}\uC77C \uC804",weeksAgo:"{{n}}\uC8FC \uC804",monthsAgo:"{{n}}\uAC1C\uC6D4 \uC804",yearsAgo:"{{n}}\uB144 \uC804"},badge:{shared:"\uB9D0\uADC0\uC790\uB8CC\uC2E4"}},su={manage:{unit:"\uAC74"}},cu={cancelLabel:"\uCDE8\uC18C"},du={steps:"\uC9C4\uD589 \uB2E8\uACC4 {{current}} / {{total}}"},Cu={panelTitle:"\uD6C8\uB828 \uC624\uB2F5",viewItems:"\uBB38\uD56D",viewTypes:"\uC720\uD615",colPending:"\uB0A8\uC740 \uAC83",colTrend:"\uBCC0\uD654",colRuns:"\uD310",unitItem:"\uAC1C",skippedOnly:"\uC61B \uAE30\uB85D {{n}}\uAC74\uC740 \uBB34\uC5C7\uC744 \uD47C \uAC83\uC778\uC9C0 \uC548 \uB0A8\uC544 \uC788\uC5B4 \uC148\uC5D0\uC11C \uBE90\uC2B5\uB2C8\uB2E4.",summaryLabel:"\uC313\uC778 \uAE30\uB85D",summaryValue:"{{items}}\uBB38\uD56D \xB7 \uC544\uC9C1 \uBABB \uC7A1\uC740 \uAC83 {{pending}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C",picked:"\u2192 {{what}}",typeClear:"\uB2E4 \uC7A1\uC558\uC5B4\uC694",typePending:"{{total}}\uAC1C \uC911 {{pending}}\uAC1C \uB0A8\uC74C",flat:"\uBCC0\uD654 \uC5C6\uC74C",runs:"{{count}}\uD310",avgDuration:"\uD3C9\uADE0 {{sec}}\uCD08"},gu={resetColumns:"\uCE78 \uB108\uBE44 \uCD08\uAE30\uD654"},fu={panelTitle:"\uB2E8\uC5B4\uD45C \uCC44\uC810",viewWords:"\uB0B1\uB9D0",viewTables:"\uD45C",colLatest:"\uB9C8\uC9C0\uB9C9",colTrend:"\uBCC0\uD654",unitTime:"\uD68C",summaryLabel:"\uC313\uC778 \uCC44\uC810",summaryValue:"{{times}}\uD68C \xB7 \uB0B1\uB9D0 {{words}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",allClear:"\uC9C0\uB09C\uBC88\uC5D0 \uBAA8\uB450 \uB9DE\uD614\uC2B5\uB2C8\uB2E4.",times:"{{count}}\uD68C",flat:"\uBCC0\uD654 \uC5C6\uC74C",recentLabel:"\uCD5C\uADFC \uCC44\uC810",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C"},mu={ariaLabel:"\uBC30\uB108",dotAriaLabel:"{{count}}\uAC1C \uC911 {{index}}\uBC88\uC9F8 \uBC30\uB108"},pu={selectYearMonth:"\uC5F0\uC6D4 \uC120\uD0DD",chooseDate:"\uB0A0\uC9DC \uC120\uD0DD"},hu={previewRegion:"\uBCF4\uACE0\uC11C \uBBF8\uB9AC\uBCF4\uAE30 \u2014 \uC88C\uC6B0\uB85C \uAD74\uB824 \uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4"},yu={description:"\uC124\uBA85",textbox:"\uBCF8\uBB38",training:"\uD6C8\uB828 \uC548\uB0B4",menu:"\uBA54\uB274"},bu={devNone:"\uBC1C\uB2EC \uC790\uB8CC \uC5C6\uC74C",place:{labial:"\uC591\uC21C\uC74C",alveolar:"\uCE58\uC870\uC74C",palatal:"\uACBD\uAD6C\uAC1C\uC74C",velar:"\uC5F0\uAD6C\uAC1C\uC74C",glottal:"\uC131\uBB38\uC74C"}},Su={clearSelection:"\uC120\uD0DD \uD574\uC81C"},wu={showResult:"{{type}} \uACB0\uACFC\uBCF4\uAE30"},Eu={selected:"\uC120\uD0DD\uB428",remove:"\uC81C\uAC70",exclude:"\uC81C\uC678",nthSelected:"{{n}}\uBC88\uC9F8 \uC120\uD0DD"},Au={loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026"},vu={state:{active:"\uC18C\uB9AC \uB098\uB294 \uC911",played:"\uB4E4\uC74C",correct:"\uC815\uB2F5",wrong:"\uC624\uB2F5"}},Bu={ariaLabel:"\uC774\uB3D9 \uACBD\uB85C"},Du={empty:"\uB4F1\uB85D\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},Tu={main:"\uBA54\uC778 \uADF8\uB77C\uB514\uC5B8\uD2B8",soft:"\uC18C\uD504\uD2B8",sub:"\uC11C\uBE0C \uCEEC\uB7EC",deep:"\uB525 \uADF8\uB77C\uB514\uC5B8\uD2B8",softSub:"\uC18C\uD504\uD2B8 \uC11C\uBE0C",warm:"\uC6DC(\uAC15\uC870)",dark:"\uB2E4\uD06C",radial:"\uBC29\uC0AC\uD615 \uADF8\uB77C\uB514\uC5B8\uD2B8",diagonal:"\uB300\uAC01\uC120 \uD328\uD134",dots:"\uB3C4\uD2B8 \uD328\uD134",outline:"\uC544\uC6C3\uB77C\uC778",success:"\uC131\uACF5/\uC644\uB8CC",naver:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8 \uC548\uB0B4",instagram:"\uC778\uC2A4\uD0C0\uADF8\uB7A8 \uC548\uB0B4"},Nu={common:ga,calendar:fa,passCard:ma,searchField:pa,rating:ha,colorPicker:ya,dropdown:ba,accordion:Sa,header:wa,nav:Ea,settings:Aa,usage:va,account:Ba,help:Da,training:Ta,trainingSettings:Na,customers:_a,payment:Oa,coupons:La,visits:Ra,company:Pa,trainingType:Ma,myWordTraining:Ia,myWordTable:ka,keyWords:xa,wordTable:ja,wordSearch:Fa,wordPrint:$a,topic:Ha,accessLinkManager:Ga,login:Va,trainingPlanRun:Wa,device:Ya,manager:Ka,wordPairs:Ua,game:za,footer:qa,landing:Ja,date:Qa,trainingSetPage:Za,wordTrainingPreview:Xa,wordData:eu,textField:tu,segmentedControl:nu,tabs:ou,fileUpload:ru,avatar:au,myHomework:uu,trainingStatus:iu,store:lu,homework:su,inquiry:cu,progress:du,trainingMiss:Cu,table:gu,wordScore:fu,topBanner:mu,datePicker:pu,report:hu,tooltip:yu,phonemeProfile:bu,bulkBar:Su,debug:wu,badge:Eu,loader:Au,soundCompass:vu,breadcrumb:Bu,board:Du,promoBannerBg:Tu},_u={statusFilter:"Filter by status",pageSizeSelect:"Items per page",selectedCount_one:"{{count}} selected",selectedCount_other:"{{count}} selected",moreFor:"More options for {{name}}",cancel:"Cancel",info:"Info",errorState:{message:"Couldn't load this.",retry:"Try again"},save:"Save",confirm:"Confirm",discardConfirm:{title:"Discard your changes?",body:"If you do not save, everything you have entered will be lost.",confirm:"Discard"},close:"Close",back:"Back",emptyTrainingName:"Training name is empty.",remove:"Remove",image:"Image",delete:"Delete",reset:"Reset",update:"Update",download:"Download",likeCount:"{{count}} likes",selectedOfMax:"{{count}} of {{max}}",downloadCount:"{{count}} downloads",search:"Search",empty:"No data.",yes:"Yes",no:"No",all:"All",none:"None",days_one:"{{count}} day",days_other:"{{count}} days",loadMore:"Load More",retry:"Try Again",prevPage:"Previous page",nextPage:"Next page",play:"Play",pause:"Pause",playPause:"Play / Pause",replay:"Replay",subscription:"Subscription",done:"Done",failed:"Failed",continue:"Continue",notification:"Notice",emptyList:"No items",noMatches:"No matching items",menu:"Menu",resetSelection:"Reset Selection",pageSizeLabel:"Show {{n}}",totalCountPrefix:"Total: ",totalCountSuffix:"",expand:"Expand",collapse:"Collapse",popup:"Popup",more:"More",codeBlock:"Code block",totalPrefix:"",copyCode:"Copy code",copied:"Copied",col:{problem:"Question"},phonetics:{place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"},vowel:{frontHigh:"Front high vowel",backHighUnrounded:"Back high unrounded vowel",backHighRounded:"Back high rounded vowel",frontMid:"Front mid vowel",backMidUnrounded:"Back mid unrounded vowel",backMidRounded:"Back mid rounded vowel",low:"Low vowel"},glide:{j:"j-glide",w:"w-glide",velar:"\u0270-glide"}},unknownError:"Unknown error",networkError:"The network connection is unstable. Check your connection and try again."},Ou={rangeSelect:"Select period",dow:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],yearMonth:"{{month}}/{{year}}",prevMonth:"Previous month",addOnDate:"Add a visit on {{date}}",nextMonth:"Next month",prevWeek:"Previous week",nextWeek:"Next week",legend:{visited:"Visited",scheduled:"Scheduled",noVisit:"No Show"},periodSelect:"Period unit",visitCount:"{{count}} visit(s)"},Lu={planSuffix:"Plan",labeledPlan:"{{label}} Plan",couponCode:"Pass Code",specialLabel:"Open Special",unitDay:"d",unitYear:"yr",remainingDay:"{{n}}d left",remainingHour:"{{n}}h left",remainingMinute:"{{n}}m left",remainingSecond:"{{n}}s left",expired:"Expired",menu:{use:"Activate",refund:"Refund",delete:"Delete"}},Ru={clearAriaLabel:"Clear search"},Pu={starLabel:"Select star {{n}}",valueLabel:"{{value}} out of {{max}}",groupLabel:"Rating"},Mu={selected:"selected"},Iu={placeholder:"Select"},ku={collapse:"Collapse",expand:"Expand"},xu={biArea:"BI area",biSymbol:"BI symbol",logoMalgwi:"Malgwi logo",logoManager:"Malgwi Manager logo",menuOpen:"Open menu",utilMenu:"Utility menu",menuClose:"Close menu"},ju={mainMenu:"Main menu",bottomNav:"Bottom navigation",goToManager:"Go to Malgwi Manager",goToMalgwi:"Go to Malgwi",modeLabelManager:"Malgwi Manager",modeLabelMalgwi:"Malgwi",training:"Training",settings:"Settings",notifications:"Notifications",account:"Account",help:"Help",feedback:"Report a bug",debug:"Debug",coupons:"Coupons",topic:"By Topic",trainingType:"By Training Type",wordPairs:"Word Pairs",wordSearch:"Word Search",wordTable:"Word Table Creator",company:"Company Info",more:"More",moreMenu:"More menu",badgeLabel:"{{label}}, {{count}}"},Fu={language:{training:{label:"Training Language",sub:"Language used for training words and speech"}},notifications:{title:"Notifications"},display:{fontSize:{small:"Small",large:"Large"}},cache:{title:"Cache Management",confirmMessage:"Delete cache ({{size}}). Do you want to continue?",delete:"Delete",deleting:"Deleting",cleared:"Cache cleared successfully.",group:{wordData:{label:"Word Data",sub:"Word list and version info"},pairIndex:{label:"Pair Index",sub:"Onset\xB7vowel\xB7coda minimal pair analysis cache"},imageCache:{label:"Image Cache",sub:"Word image existence check results"},trainingRecord:{label:"Training Record",sub:"Daily training progress and streak"}}},button:{save:"Save Settings"},popup:{clear:{confirm:"Reset"},update:{confirm:"Update"},cache:{title:"Delete {{label}}",message:"Delete {{label}} ({{size}}). Do you want to continue?"}},saved:"\u2713 Saved",account:{title:"Account",delete:{sub:"You can restore your account within 30 days of withdrawal."}}},$u={addButton:"Add Subscription",couponButton:"Enter Coupon",active:{infoTitle:"Subscription Info",refund:"Request Refund",startDate:"Start Date",endDate:"End Date",remaining:"Remaining"},pending:{title:"Pending",empty:"No pending subscriptions."},loading:"Loading\u2026",segment:{personal:"Malgwi",org:"Malgwi Manager"},org:{title:"Current Plan",disc:"Subscription plan in use by your organization.",empty:"No organization plan registered.",fallbackTitle:"Organization Plan",startDate:"Start Date",endDate:"End Date",remaining:"Remaining",duration:"Duration"}},Hu={profile:{planSuffix:"",plan:"Plan"},basicInfo:{name:{placeholder:"John Doe"}},security:{title:"Security",password:{label:"Password",currentRequired:"Enter your current password.",newRequired:"Enter a new password.",mismatch:"The new passwords do not match.",changed:"Your password has been changed."},twoFactor:{label:"Two-Factor Authentication",sub:"Strengthen your account security"}}},Gu={guide:{faq:{title:"FAQ",desc:"View all frequently asked questions"}}},Vu={settings:"Settings",start:{title:"Start Word Training",description:"Select a training type below to begin"},difficulty:{tooltip:"The easiest difficulty is 'Random', the hardest is 'Initial Consonant Difference'."},contrast:{label:"Contrast",type:"Contrast Type",count:"Contrast Count",n:"{{n}}"},filter:{random:"Random",trainOnset:"Onset",trainVowel:"Vowel",trainCoda:"Coda",phonemeGroup:"Training phonemes",noLimit:"Any",codaExclude:"Exclude",gradeLabel:"Grade",excludeImageInfo:"Only words with images: keeps only results with a registered word image.",sameStructureInfo:"Only same phoneme structure: keeps only pairs where the correct and wrong answers share the same syllable structure (length, batchim, etc.).",selectSection:"Select",excludeImage:"Only words with images",sameStructure:"Only same phoneme structure"},noQuestions:"No questions available.",countQuestions:"{{n}} questions",countSentences:"{{n}} sentences",comingSoon:"Coming Soon",nextQuestion:"Next",noiseRatioTitle:"Noise Ratio",noiseRatioValue:"{{ratio}}\xD7",noiseTypeTitle:"Noise Type",playVolumeTitle:"Volume",playSpeedTitle:"Speed",meter:{sentence:"Playback",noise:"Noise",toggle:"Show Audio Meter"},viewResult:"View Results",problemNotice:"Problem {{n}}.",trainingSettingsTitle:"Training Settings",sentencePreview:"Sentence Preview",notHeard:"Didn't hear it.",heardWell:"Heard it well.",confirmTitle:"Check the sentence and select whether you heard it.",noSoundWaveform:"Waveform is not shown for sound-comparison questions.",noise:{level:{none:"None",weak:"Weak",medium:"Medium",strong:"Strong",veryStrong:"Very Strong"},type:{none:"None",default:"Default",street:"Street",buzz:"Buzzing",restaurant:"Restaurant"}},listenTitle:"Please listen to the sentence.",listenButton:"Listen",playSound:"Play Sound",playAll:"Play All",selectInOrder:"Select the cards in the order you heard.",stop:"Stop",preview:"Preview",next:"Next",completed:"Completed",selected:"Selected",nthSelected:"Selection {{n}}",fontSizeMin:"Font size is at the minimum.",fontSizeMax:"Font size is at the maximum.",fontSizeDecrease:"Decrease font size",fontSizeIncrease:"Increase font size",toggleBackground:"Toggle background",cardInstructions:"Look at the word card, listen to the sound, and check it.",noCards:"No cards.",audioFetchError:"Failed to load the sound source.",ttsUnavailable:"Speech playback isn't available on this device.",selectConfirm:"Look at the question and select the answer.",orderListDefault:"Arrange the sentences in the order you heard.",result:{pendingDone:"Results are still being calculated, so you can't finish yet.",eyebrow:"Training Complete",title:"You've finished all the training!",scoreAria:"{{correct}} / {{total}} questions",elapsed:"Time Elapsed",summary:"You heard {{correct}} item(s) correctly.",tableAriaLabel:"Per-question judgement",colJudge:"Judgement",colAnswerSelected:"Answer \xB7 Selected",colAnswer:"Answer",colSelected:"Selected",heardWell:"Heard well",notHeard:"Didn't hear",notJudged:"Not judged",replay:"Replay",done:"Done",viewResult:"View Results",noContent:"(No content)"},up:"Move up",down:"Move down",prev:"Previous",listenLabel:"Listen",sourcePlay:"Play source {{n}}",listen:"Listen",audioStatus:{idle:"Idle",resolving:"Resolving\u2026",checking_exists:"Checking file\u2026",getting_signed_url:"Getting URL\u2026",downloading:"Downloading\u2026",measuring_duration:"Measuring length\u2026",ready:"Ready",error:"Error"}},Wu={totalCount:" training bundles",sort:{customers:"Customers"},copyLink:"Copy Link",removeLink:"Remove Link",linkRemoved:"Link removed.",linkSaveFirst:"Please save the training bundle first.",linkSaveFirstHint:"You can only create a shared link from a saved training bundle.",linkCopySelect:"Copy blocked \u2014 link selected. Press Ctrl/\u2318+C to copy.",nameRequired:"Please enter a training bundle name.",itemRequired:"Please add at least one training item.",randomAdd:"Random Add",menu:{publish:"Post to Store",duplicate:"Duplicate Training Bundle",edit:"Edit Training Bundle",move:"Move Group",rename:"Rename"},itemCount:"Number of Items",renameGroup:"Rename Group"},Yu={totalCount:" customers",loadError:"Failed to load list",basicInfo:{editTooltip:"Edit"},member:{placeholder:"Email or phone",link:"Link",linking:"Linking\u2026"},device:{title:"Hearing Devices",addTooltip:"Add New",addButton:"Add device",listTooltip:"View List",listTitle:" Device List",historyEmpty:"No device history registered",wearing:" in use",notRegistered:"Not registered",unit:"",wearingNow:"In use",wear:"Wear",unwear:"Remove",wornSince:"Since {{date}}",release:"Release",historyTitle:"Hearing device history"},schedule:{title:"Upcoming Visits",addTooltip:"Add Schedule",listTooltip:"View All",empty:"No upcoming visits",registerTitle:" Register Schedule",memoPlaceholder:"Enter a memo for this visit."},visitHistory:{title:"Visit History",addTooltip:"Add Visit",empty:"No visit history yet",popupTitle:" Visit History",registerTitle:" Register Visit"},moreItems:"more",viewAll:"View All",visits:{title:"Visits"},trainingRecord:{title:"Customer Training Records"},status:{trainingSubtitle:"Training Status"},detail:{session:{completedFmt:"Done {{done}}/{{total}} \xB7 {{duration}}"},visitSuffix:" visits"},homework:{active:"Active",copied:"Link copied.",copy:"Copy Link",inactive:"Inactive",title:"Homework Progress"},duration:{minSec:"{{m}}m {{s}}s",min:"{{m}}m",sec:"{{s}}s"}},Ku={plan:{recommendedFor:"Recommended for",features:"Key Features",freePrice:"Free",contact:"Contact Us",tierFallback:"Plan",openPromo:"Launch offer"},products:{mgrEnterprise:{tier:{price:"Contact us"}}}},Uu={title:"Coupons",subtitle:"Enter a coupon code or view your coupons",input:{label:"Coupon code",placeholder:"Enter coupon code"},applyButton:"Apply",error:{invalid:"Invalid coupon code.",alreadyUsed:"This coupon has already been used."},success:{applied:'"{{name}}" coupon applied.'},section:{owned:"My Coupons"},status:{used:"Used",available:"Available"}},zu={unitVisit:"",periodAll:"All",showN:"Show {{n}}"},qu={subtitle:"Manage company and business information",editButton:"Edit Info",basicInfo:{title:"Basic Info"},contactInfo:{title:"Contact Info"}},Ju={title:"Training by Type",subtitle:"Select the training type you want",listenInNoise:{title:"Sentence Listening in Noise",desc:"Train sentence comprehension in various noise environments."},shortStory:{title:"Short Story Listening",desc:"Listen to short stories and understand the content."},longStory:{title:"Long Story Listening",desc:"Focus on listening to long stories and grasp the content."},orderingSentence:{title:"Sentence Ordering",desc:"Arrange heard sentences in the correct order."},SAME_SOUND_PICK:{label:"Listen & Pick Same Sound",sub:"Pick the word card that matches what you heard."},SAME_OR_DIFF:{label:"Same or Different?",sub:"Decide whether the two sounds are the same or different."},HEAR_AND_PICK_SAME:{label:"Hear & Match Word",sub:"Pick the word card that matches the sound you heard."},HEAR_AND_PICK_INCLUDED:{label:"Find Word Containing Sound",sub:"Pick the word card that contains the syllable you heard."},STARTS_WITH_SAME_SOUND:{label:"Find Word Starting with Same Sound",sub:"Pick a word that starts with the same sound as what you heard."},LISTEN_AND_REMEMBER_ORDER:{label:"Listen & Recall Order",sub:"Select the cards in the order you heard the three words."},MERGE_2_SYLLABLES:{label:"Combine 2 Syllables",sub:"What word do two syllables make?"},MERGE_3_SYLLABLES:{label:"Combine 3 Syllables",sub:"What word do three syllables make?"},MERGE_2_PHONEMES:{label:"Combine 2 Phonemes",sub:"What sound do two phonemes make?"},MERGE_3_PHONEMES:{label:"Combine 3 Phonemes",sub:"What sound do three phonemes make?"},DROP_1_FROM_2SYLL:{label:"Drop 1 Syllable from 2-Syllable",sub:"What sound remains when you remove a syllable from a 2-syllable word?"},DROP_1_FROM_3SYLL:{label:"Drop 1 Syllable from 3-Syllable",sub:"What sound remains when you remove a syllable from a 3-syllable word?"},DROP_PART_FROM_COMPOUND:{label:"Drop Part of Compound Word",sub:"What word remains when you remove part of a compound word?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"Drop Final Consonant",sub:"What sound remains when you remove the final consonant?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"Drop Consonant",sub:"What sound remains when you remove the consonant?"},CHANGE_1_SYLL_IN_2SYLL:{label:"Change 1 Syllable (2-Syllable)",sub:"Change one syllable in a 2-syllable word to make a new word."},CHANGE_1_SYLL_IN_3SYLL:{label:"Change 1 Syllable (3-Syllable)",sub:"Change one syllable in a 3-syllable word to make a new word."},CHANGE_1_PHONEME_IN_1SYLL:{label:"Change 1 Phoneme (1-Syllable)",sub:"Change one phoneme in a 1-syllable word to make a new sound."},CHANGE_1_PHONEME_IN_2SYLL:{label:"Change 1 Phoneme (2-Syllable)",sub:"Change one phoneme in a 2-syllable word to make a new word."}},Qu={comingSoon:"Word training is coming soon."},Zu={colName:"Table Name",open:"Open",countSuffix:" tables",addCard:"Add Word Table Card",cardsEmpty:"No word table cards created yet.",menu:{publishStore:"Post to Training Store",unpublishStore:"Remove from Training Store"},newBadge:"Newly created",tab:{cards:"Word Table Cards",tables:"Word Tables"},publishedBadge:"Published",sharedBadge:"Shared"},Xu={title:"Key Words",empty:"No key words available."},ei={defaultName:"Word Table",title:"Word Table Builder",subtitle:"Set columns and add words to build a table.",filterTitle:"Table Settings",filter:{composition:"Composition",image:"Image",word:"Word",standardPron:"Standard Pronunciation",colloquialPron:"Colloquial Pronunciation",paperOrientation:"Paper Orientation",landscape:"Landscape",portrait:"Portrait",columns:"Columns",column:"{{count}} col",itemsPerPageWord:"Words per page",itemsPerPagePair:"Pairs per page",itemsPerPageOption:"{{count}}",pageIndicator:"{{current}} / {{total}}",pageNumber:"Page Number",pageNumberLeft:"Left",pageNumberCenter:"Center",pageNumberRight:"Right",border:"Border",topInfo:"Header",bottomInfo:"Footer",cutLine:"Cut Line",show:"Show",hide:"Hide",dotted:"Dotted",corner:"Corner"},addWord:"Add",wordInfo:"Info for {{word}}",emptyItems:"Please add at least one word.",load:"Load",openNewWindow:"Open in New Window",saveButton:"Save",saveAsNewButton:"Save as New",print:"Print",popupBlocked:"Popup was blocked. Please allow popups in your browser settings.",printFileNameSingle:"Word Table",printFileNamePair:"Contrast Pair Table",save:{title:"Save Word Table",nameLabel:"Name",desc:"Enter a name for the word table.",placeholder:"Enter a title for this word table.",descriptionLabel:"Description",descriptionPlaceholder:"Enter a description for this word table.",duplicateName:"This name is already in use.",nameRequired:"Please enter a table name.",autoFillHint:" (Press Tab or Space to autofill)",copyName:"{{name}} (copy)"},loadTable:{title:"Load Saved Word Table",empty:"No saved word tables.",loadButton:"Load",itemCount:"{{count}} words",deleteAriaLabel:"Delete {{name}}",sort:{newest:"Newest",oldest:"Oldest",name:"Name",count:"Word Count"},view:{grid:"Grid View",list:"List View"}},groupDeleteMessage:"Word tables in this group will be moved to 'No Group'.",groupNamePlaceholder:"Group name",store:{badge:"Training Store"},card:{sub:"Word Table Card",empty:"No word tables in this card."},toast:{renameError:"Failed to rename",saveError:"Failed to save",deleteError:"Failed to delete",duplicateError:"Failed to duplicate",saveSuccess:"Word table saved."},scoring:{o:"{{word}} correct",triangle:"{{word}} partial",x:"{{word}} incorrect",markName:{o:"Correct",triangle:"Partial",x:"Incorrect"},button:"Score",pickTitle:"Who are you scoring?",pickSubtitle:"Choose the customer who trained with \u201C{{name}}\u201D.",pickSearch:"Search by name or phone",pickEmpty:"No customers registered.",pickNoMatch:"No matching customer.",pickAgain:"Choose another",scoringFor:"Scoring {{name}}",none:"Tap \u25CB \xB7 \u25B3 \xB7 \u2715 under a cell to mark it. With a mouse, hover the cell to reveal them.",tally:"{{marked}} scored \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 {{rate}}%",save:"Save score",saved:"Saved {{count}} marks for {{name}}.",reviewTitle:"Create a review table?",reviewMessage:"Builds a new table from the {{count}} cells {{name}} got wrong or partial. Correct ones are left out.",reviewConfirm:"Create review table",reviewDescription:"Cells marked wrong or partial in \u201C{{name}}\u201D \u2014 {{count}} of them.",reviewCreated:"Created \u201C{{name}}\u201D \u2014 {{count}} cells.",discardTitle:"Discard this scoring?",discardMessage:"You marked {{count}} cells but have not saved. Leaving discards them.",discardConfirm:"Discard and leave"},info:{grade:"Grade: {{n}}",syllables:"Syllables: {{n}}",pos:"Part of speech: {{v}}",wordType:"Type: {{v}}"},pos:{noun:"Noun",verb:"Verb",adjective:"Adjective",adverb:"Adverb",numeral:"Numeral",determiner:"Determiner",interjection:"Interjection",particle:"Particle",affix:"Affix",dependentNoun:"Dependent noun",pronoun:"Pronoun",auxVerb:"Auxiliary verb",auxAdjective:"Auxiliary adjective"},reorder:{moved:"Moved to position {{n}} of {{total}}",handle:"Reorder {{word}} (Alt + arrow keys)",hint:"Alt + \u2190 \u2192 to reorder"}},ti={editBanner:{message:"Saving will update the word table you're editing."},filterTitle:"Word Search Settings",filter:{positionAny:"Any",positionHead:"Start",positionMid:"Middle",positionTail:"End",difficulty:"Grade",grade:"Grade {{n}}",syllables:"Syllables",syllable:"{{n}} Syll.",syllable5plus:"5+ Syllables",partOfSpeech:"Part of Speech",pos:{noun:"Noun/Numeral",verb:"Verb/Adjective",modifier:"Adverb/Determiner"},wordType:"Word Type",type:{native:"Native Korean",sino:"Sino-Korean",foreign:"Loanword",mixed:"Hybrid"},exclude:"Exclude",excludeNoImage:"No Image"},searchButton:"Search",resultUnit:"words",remaining:"{{count}} remaining",resultDisc:"Select {{unit}}. Up to {{max}} items. ({{selected}}/{{max}})",resultTitlePrefix:"",resultTitleSuffix:" {{unit}} found.",emptyResult:"No results found.",groupCount:"{{count}}",sort:{aria:"Sort",match:"Best Match",ganada:"A\u2013Z \u2191",ganadaDesc:"A\u2013Z \u2193",syllable:"Syllables \u2191",syllableDesc:"Syllables \u2193",grade:"Grade \u2191",gradeDesc:"Grade \u2193",original:"Original order"},pageSize:"Show {{count}}",pageSizeAria:"Page size",popup:{title:"Select a word for cell {{n}}"}},ni={clearAllSelection:"Clear All Selections",divLine:"Contrast Line",removePair:"Remove pair",removeWord:"Remove word"},oi={title:"By Topic",subtitle:"Select a topic to start listening training",noiseTitle:"Sentence Listening in Noise",shortStoryTitle:"Short Story Listening",FOOD:"Food",HLTH:"Health",WETH:"Weather",PRSN:"People",KRCT:"Korean Culture",STRY:"Stories",LOCA:"Locations",SOAR:"Society & Arts",NTSC:"Nature & Science",SPRT:"Sports",sub:{TRKRFD:"Traditional Korean Food",MDKRFD:"Modern Korean Food",WRLDFD:"World Cuisine",MTRFRT:"Ingredients & Fruits",GEFDKL:"Food Facts",HTETHB:"Healthy Eating",DISILL:"Diseases",EXCISE:"Exercise",GEHTKL:"Health Facts",GESSKL:"Seasons",SNWRAN:"Snow & Rain",WTHFCT:"Weather Forecast",GEWTKL:"Weather Facts",JODYPS:"Joseon Dynasty",MDKRPS:"Modern Korea",THKDPS:"Three Kingdoms",WRLART:"World Artists",WRLPSN:"World Figures",KRLANG:"Korean Language",TRPLCT:"Traditional Games",HERITG:"Heritage",EVTFES:"Events & Festivals",GECTKL:"General Knowledge",FRYTAL:"Fairy Tales",AMZING:"Amazing Stories",DAYSTR:"Everyday Stories",KRLDMK:"Korean Landmarks",SELNMK:"Seoul Landmarks",WRDTRB:"World Travel",NAVIGT:"Navigation",KRSOCI:"Korea",ECONEW:"Economy & News",GENART:"Arts",GELFKL:"Life Tips",ANIMAL:"Animals",PLANTS:"Plants",ETHPLT:"Earth",TOLELC:"Tools & Electronics",GESCKL:"Science Facts",INVDSP:"Individual Sports",MARART:"Martial Arts",TEAMSP:"Team Sports",FOOTBL:"Soccer",GESPKL:"Sports Facts"}},ri={maxUses:"Max uses (leave blank for unlimited)",redirect:"Redirect URL (leave blank for app home)",creating:"Creating\u2026",create:"Create link",created:"\u2713 Link created",copied:"Copied!",copy:"Copy",loading:"Loading\u2026",empty:"No links created yet.",uses:"Used {{count}} times",expiresAt:"Expires: {{date}}",createdAt:"Created: {{date}}",confirmDelete:"Delete this link?",deactivate:"Deactivate",delete:"Delete",status:{active:"Active",expired:"Expired",inactive:"Inactive"}},ai={passwordPlaceholder:"Enter password"},ui={direction:{left:"L",right:"R",label:"Side"},wornDate:"Date Worn",deviceType:"Device Type",brand:"Brand",fitType:"Fit Type",productName:"Product Name",validationError:{brandAndProduct:"Please enter brand and product name."},addNew:"Add New Device",selectFromList:"Select from List",removeDevice:"Remove",type:{hearingAid:"Hearing Aid",cochlearImplant:"Cochlear Implant"}},ii={stat:{totalCustomers:"Total Customers",monthlyVisits:"This Month's Visits"},chart:{visitDetail:"Visit Details",trainingDetail:"Training Details",weekly:"Weekly",daily:"Daily",periodMonth:"Month",periodWeek:"Week",weeklyPrefix:"Weekly",monthlyPrefix:"Monthly",visit:"Visits",reservation:"Reservations",trainingDone:"Completed",trainingInProgress:"In Progress",weekRange:"{{start}}\u2013{{end}}",week:"W{{n}}"},subscriptionStatus:{active:"{{pct}}% Active",expired:"{{pct}}% Expired",unused:"{{pct}}% Unused"}},li={editBanner:{message:"Saving will update the contrast pair table you're editing."},phonemeSelect:{title:"Phoneme Selection",vs:"vs"},caution:"Caution",mode:{include:"Phoneme Include",pick:"Phoneme Contrast",contrast:"Specify Contrast",infoTitle:"Contrast Mode",infoInclude:"Include \u2014 finds words containing all selected phonemes, plus their minimal pair.",infoPick:"Contrast \u2014 matches only if the selected phoneme is the actual point of difference in the pair.",infoContrast:"Specify Contrast \u2014 directly choose phonemes for the base word and the contrasting word to find pairs."},count:"{{n}}",input:{char:"Choose Letters",pron:"Choose Sound",infoTitle:"Input mode",infoChar:"Choose Letters \u2014 finds words by the selected phonemes (spelling), then finds their standard-pronunciation contrast pairs.",infoPron:"Choose Sound \u2014 finds standard-pronunciation contrast pairs directly from the selected phonemes."},phonemeN:"Syllable {{n}}",phonemeSingleLabel:"Syllable",phonemeContrastSingleLabel:"Contrast Syllable",ordinals:["First","Second","Third","Fourth"],phonemeOrdinalLabel:"{{ordinal}} Syllable",phonemeContrastOrdinalLabel:"Contrast {{ordinal}} Syllable",composition:"Answer Word Composition",syllableCount:"Syllables",syllableN:"{{n}} syll.",syllableNPlus:"{{n}}+ syll.",onset:"Onset",vowel:"Vowel",coda:"Coda",filter:{searchOptionsTitle:"Contrast Settings",searchModeLabel:"Contrast Mode",countLabel:"Input Syllable Count",inputModeLabel:"Input mode",phonemeOrder:"Input Syllable Position",phonemeOrderInfo:["Match: the pair must differ at exactly the same position (syllable).","Any: the differing position doesn't matter."],orderAny:"Any",orderMatch:"Match",difficultyInfo:"Reflects the National Institute of Korean Language's basic vocabulary grade.",selectLabel:"Select",onlyHasImage:"Only words with images",onlySameStructure:"Only same phoneme structure"},searchLabel:{error:"Failed to load data",loading:"Loading\u2026"},confirmMessage:"The word table with {{count}} selected {{unit}} will be lost.",resetOptions:"Reset Options",phonemeContrast:"Contrast Syllable {{n}}",infoNotes:["The preview character is an example of the selected phoneme combination. The actual search covers all words containing the phoneme.","Initial consonant '\u3147' cannot be selected. \u3147 at the start of a word is effectively silent.","If only onset and coda are selected, the vowel is automatically displayed as '\u314F'.","Increasing the phoneme count searches for minimal pairs between each phoneme."]},si={sentenceTyping:{roundCount:"{{rounds}} rounds \xB7 {{timeLimit}}s each"},wordDefense:{me:"Me"},dictation:{title:"Dictation",desc:"Practice writing down exactly what you hear.",comingSoon:"Coming soon: audio playback, input field, answer comparison"},result:{heading:"Level {{number}} Answer",retry:"Try Again"},common:{accuracy:"{{pct}}% accuracy"},soundMatch:{title:"Sound Match",desc:"Quickly match words or sentences that share the same sound.",comingSoon:"Coming soon: play button, timer, score tracking"},orderSequence:{title:"Sentence Ordering",desc:"Arrange scattered sentence fragments in the correct order.",comingSoon:"Coming soon: sentence sets, ordering interface"},speedListen:{title:"Speed Listen",desc:"A challenge game to count the number of words in a sentence within a time limit.",comingSoon:"Coming soon: time limit, scoreboard"},noiseChallenge:{title:"Noise Challenge",desc:"Practice distinguishing sentences amid background noise.",comingSoon:"Coming soon: various noise levels, score tracking"},fastListen:{title:"Fast Listen",desc:"Listen to short sentences at speed and select the key word.",comingSoon:"Coming soon: speed by difficulty, timer"},shadowing:{title:"Shadowing",desc:"Practice pronunciation and intonation by repeating sentences aloud.",comingSoon:"Coming soon: playback, recording, comparison feedback"},phonemeHunt:{title:"Phoneme Hunt",desc:"Find words that contain a specific phoneme (sound).",comingSoon:"Coming soon: phoneme filter, hint feature"}},ci={lead:`IHAB builds trust
3
+ \uD68C\uBCF5\uC744 \uB3D5\uC2B5\uB2C8\uB2E4.`,site:{title:"\uC0AC\uC774\uD2B8",malgwi:"\uB9D0\uADC0",soundDirection:"\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",vrSoundDirection:"VR\uC18C\uB9AC\uBC29\uD5A5\uC131\uC2DC\uC2A4\uD15C",hearingTest:"\uCCAD\uB825\uD14C\uC2A4\uD2B8 \uD504\uB85C"},sns:{title:"SNS",naverBlog:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8",kakao:"KAKAO Talk \uC624\uD508\uCC44\uD305"},policy:{title:"\uC815\uCC45",terms:"\uC774\uC6A9\uC57D\uAD00",privacy:"\uAC1C\uC778\uC815\uBCF4 \uCC98\uB9AC\uBC29\uCE68"},ceo:"\uB300\uD45C",address:"\uC8FC\uC18C",support:"\uACE0\uAC1D\uC13C\uD130",ceoName:"\uD55C\uC9C0\uD61C",addressValue:"\uAC15\uC6D0\uB3C4 \uCD98\uCC9C\uC2DC \uC2DC\uCCAD\uAE38 32 \uD574\uCC2C\uBE4C\uB529 3\uCE35 302\uD638"},Ja={trainingPhone:{topic:"\uD143\uBC2D\uAC00\uAFB8\uAE30",prev:"\uC774\uC804",next:"\uB2E4\uC74C",speed:"\uBE60\uB974\uAE30 3",noiseType:"\uC640\uAE00\uC640\uAE00",settings:"\uC124\uC815",start:{caption:"\uC544\uB798 \uD50C\uB808\uC774(\u25B6) \uBC84\uD2BC\uC744 \uB20C\uB7EC \uBB38\uC7A5\uC744 \uC798 \uB4E4\uC5B4\uBCF4\uC138\uC694. \uC798 \uB4E4\uC73C\uC2E0 \uB4A4 \uBB38\uC7A5\uC744 \uD655\uC778\uD558\uC138\uC694."},feedback:{caption:"\uC798 \uD0A4\uC6B4 \uBAA8\uC885\uC744 \uD143\uBC2D\uC5D0 \uC2EC\uACE0 \uBE44\uB2D0\uC744 \uC798 \uB36E\uC5B4 \uC90D\uB2C8\uB2E4."},done:{heardWell:"\uC798 \uB4E4\uB9B0 \uBB38\uC7A5",listenAgain:"\uD55C \uBC88 \uB354 \uB4E3\uAE30"}}},Qa={timeHM:"{{h}}\uC2DC {{m}}\uBD84",timeH:"{{h}}\uC2DC"},Za={options:"\uD6C8\uB828 \uC635\uC158",difficulty:"\uB09C\uC774\uB3C4",exclude:"\uC81C\uC678",chosung:"\uCD08\uC131",excludeOptions:{none:"\uC5C6\uC74C",noImage:"\uC774\uBBF8\uC9C0 \uC5C6\uC74C"}},Xa={answer:"\uC815\uB2F5",distractor:"\uC624\uB2F5"},eu={phaseWordDownload:"\uB2E8\uC5B4 \uB370\uC774\uD130 \uB2E4\uC6B4\uB85C\uB4DC",phaseImageCheck:"\uC774\uBBF8\uC9C0 \uD655\uC778",phasePairAnalysis:"\uB2E8\uC5B4\uC30D \uBD84\uC11D",downloadingCount:"{{n}}\uAC1C \uB2E4\uC6B4\uB85C\uB4DC \uC911",checkingPage:"{{page}}\uD398\uC774\uC9C0 \uBAA9\uB85D \uD655\uC778 \uC911",imageCount:"{{done}} / {{total}}\uAC1C"},tu={clearAriaLabel:"\uC785\uB825\uAC12 \uC9C0\uC6B0\uAE30"},nu={ariaLabel:"\uC120\uD0DD \uD0ED"},ou={ariaLabel:"\uD0ED"},ru={dragPrompt:"\uD30C\uC77C\uC744 \uC774\uACF3\uC5D0 \uB4DC\uB798\uADF8\uD558\uC5EC \uC5C5\uB85C\uB4DC",browseButton:"\uD30C\uC77C \uC120\uD0DD",removeAriaLabel:"{{name}} \uC81C\uAC70"},au={ariaLabel:"\uC0AC\uC6A9\uC790 \uC544\uBC14\uD0C0"},uu={relativeDay:{today:"\uC624\uB298",yesterday:"\uC5B4\uC81C",daysAgo:"{{n}}\uC77C \uC804"},reason:{notLoggedIn:"\uB85C\uADF8\uC778\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},list:{title:"\uBC1B\uC740 \uC219\uC81C"},status:{expired:"\uB9CC\uB8CC\uB428",done:"\uC644\uB8CC {{count}}\uD68C \xB7 {{date}}",notDone:"\uBBF8\uC644\uB8CC"}},iu={weekly:{title:"\uC8FC\uAC04 \uD6C8\uB828 \uD604\uD669",daily:"\uC624\uB298\uC758 \uB4E3\uAE30",crossword:"\uAC00\uB85C\uC138\uB85C"},homework:{title:"\uC219\uC81C \uC9C4\uD589\uD604\uD669",totalRate:"\uC804\uCCB4 \uC644\uB8CC\uC728",count:"\uC804\uCCB4",done:"\uC644\uB8CC",remaining:"\uBBF8\uC644\uB8CC"},today:{tooltipTotal:"\uC804\uCCB4",tooltipDone:"\uC644\uB8CC"},filter:{countSuffix:" \uD6C8\uB828"},time:{countLabel:"{{n}}\uD68C \uD6C8\uB828",empty:"\uD6C8\uB828 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},daily:{title:"\uC624\uB298\uC758 \uB4E3\uAE30 \uAE30\uB85D",empty:"\uC644\uB8CC\uD55C \uD68C\uCC28\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4."},crossword:{title:"\uAC00\uB85C\uC138\uB85C\uD034\uC988",empty:"\uC644\uB8CC\uD55C \uB808\uBCA8\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"},visit:{title:"\uBC29\uBB38 \uC5F0\uB3D9 \uAE30\uB85D"},detail:"\uC0C1\uC138\uBCF4\uAE30",trainingType:{LISTEN_IN_NOISE:"\uC18C\uC74C \uD558 \uBB38\uC7A5",SHORT_STORY:"\uC9E7\uC740 \uC774\uC57C\uAE30",LONG_STORY:"\uAE34 \uC774\uC57C\uAE30",ORDERING_SENTENCE:"\uBB38\uC7A5 \uC21C\uC11C\uD654"}},lu={publish:{descPlaceholder:"\uB9D0\uADC0\uC790\uB8CC\uC2E4\uC5D0 \uD45C\uC2DC\uD560 \uD55C \uC904 \uC124\uBA85 (\uC120\uD0DD)"},import:"\uB0B4 \uD6C8\uB828\uC5D0 \uAC00\uC838\uC624\uAE30",publisher:"\uAC8C\uC2DC\uC790",time:{justNow:"\uBC29\uAE08 \uC804",minutesAgo:"{{n}}\uBD84 \uC804",hoursAgo:"{{n}}\uC2DC\uAC04 \uC804",daysAgo:"{{n}}\uC77C \uC804",weeksAgo:"{{n}}\uC8FC \uC804",monthsAgo:"{{n}}\uAC1C\uC6D4 \uC804",yearsAgo:"{{n}}\uB144 \uC804"},badge:{shared:"\uB9D0\uADC0\uC790\uB8CC\uC2E4"}},su={manage:{unit:"\uAC74"}},cu={cancelLabel:"\uCDE8\uC18C"},du={steps:"\uC9C4\uD589 \uB2E8\uACC4 {{current}} / {{total}}"},Cu={panelTitle:"\uD6C8\uB828 \uC624\uB2F5",viewItems:"\uBB38\uD56D",viewTypes:"\uC720\uD615",colPending:"\uB0A8\uC740 \uAC83",colTrend:"\uBCC0\uD654",colRuns:"\uD310",unitItem:"\uAC1C",skippedOnly:"\uC61B \uAE30\uB85D {{n}}\uAC74\uC740 \uBB34\uC5C7\uC744 \uD47C \uAC83\uC778\uC9C0 \uC548 \uB0A8\uC544 \uC788\uC5B4 \uC148\uC5D0\uC11C \uBE90\uC2B5\uB2C8\uB2E4.",summaryLabel:"\uC313\uC778 \uAE30\uB85D",summaryValue:"{{items}}\uBB38\uD56D \xB7 \uC544\uC9C1 \uBABB \uC7A1\uC740 \uAC83 {{pending}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C",picked:"\u2192 {{what}}",typeClear:"\uB2E4 \uC7A1\uC558\uC5B4\uC694",typePending:"{{total}}\uAC1C \uC911 {{pending}}\uAC1C \uB0A8\uC74C",flat:"\uBCC0\uD654 \uC5C6\uC74C",runs:"{{count}}\uD310",avgDuration:"\uD3C9\uADE0 {{sec}}\uCD08"},gu={resetColumns:"\uCE78 \uB108\uBE44 \uCD08\uAE30\uD654",scrollRegion:"\uAC00\uB85C\uB85C \uAD74\uB9B4 \uC218 \uC788\uB294 \uD45C"},fu={panelTitle:"\uB2E8\uC5B4\uD45C \uCC44\uC810",viewWords:"\uB0B1\uB9D0",viewTables:"\uD45C",colLatest:"\uB9C8\uC9C0\uB9C9",colTrend:"\uBCC0\uD654",unitTime:"\uD68C",summaryLabel:"\uC313\uC778 \uCC44\uC810",summaryValue:"{{times}}\uD68C \xB7 \uB0B1\uB9D0 {{words}}\uAC1C",nextLabel:"\uB2E4\uC74C\uC5D0 \uBCFC \uAC83",nextCount:"{{count}}\uAC1C",allClear:"\uC9C0\uB09C\uBC88\uC5D0 \uBAA8\uB450 \uB9DE\uD614\uC2B5\uB2C8\uB2E4.",times:"{{count}}\uD68C",flat:"\uBCC0\uD654 \uC5C6\uC74C",recentLabel:"\uCD5C\uADFC \uCC44\uC810",nextCountCapped:"{{total}}\uAC1C \uC911 {{shown}}\uAC1C"},mu={ariaLabel:"\uBC30\uB108",dotAriaLabel:"{{count}}\uAC1C \uC911 {{index}}\uBC88\uC9F8 \uBC30\uB108"},pu={selectYearMonth:"\uC5F0\uC6D4 \uC120\uD0DD",chooseDate:"\uB0A0\uC9DC \uC120\uD0DD"},hu={previewRegion:"\uBCF4\uACE0\uC11C \uBBF8\uB9AC\uBCF4\uAE30 \u2014 \uC88C\uC6B0\uB85C \uAD74\uB824 \uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4"},yu={description:"\uC124\uBA85",textbox:"\uBCF8\uBB38",training:"\uD6C8\uB828 \uC548\uB0B4",menu:"\uBA54\uB274"},bu={devNone:"\uBC1C\uB2EC \uC790\uB8CC \uC5C6\uC74C",place:{labial:"\uC591\uC21C\uC74C",alveolar:"\uCE58\uC870\uC74C",palatal:"\uACBD\uAD6C\uAC1C\uC74C",velar:"\uC5F0\uAD6C\uAC1C\uC74C",glottal:"\uC131\uBB38\uC74C"}},Su={clearSelection:"\uC120\uD0DD \uD574\uC81C"},wu={showResult:"{{type}} \uACB0\uACFC\uBCF4\uAE30"},Eu={selected:"\uC120\uD0DD\uB428",remove:"\uC81C\uAC70",exclude:"\uC81C\uC678",nthSelected:"{{n}}\uBC88\uC9F8 \uC120\uD0DD"},Au={loading:"\uBD88\uB7EC\uC624\uB294 \uC911\u2026"},vu={state:{active:"\uC18C\uB9AC \uB098\uB294 \uC911",played:"\uB4E4\uC74C",correct:"\uC815\uB2F5",wrong:"\uC624\uB2F5"}},Bu={ariaLabel:"\uC774\uB3D9 \uACBD\uB85C"},Du={empty:"\uB4F1\uB85D\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."},Tu={main:"\uBA54\uC778 \uADF8\uB77C\uB514\uC5B8\uD2B8",soft:"\uC18C\uD504\uD2B8",sub:"\uC11C\uBE0C \uCEEC\uB7EC",deep:"\uB525 \uADF8\uB77C\uB514\uC5B8\uD2B8",softSub:"\uC18C\uD504\uD2B8 \uC11C\uBE0C",warm:"\uC6DC(\uAC15\uC870)",dark:"\uB2E4\uD06C",radial:"\uBC29\uC0AC\uD615 \uADF8\uB77C\uB514\uC5B8\uD2B8",diagonal:"\uB300\uAC01\uC120 \uD328\uD134",dots:"\uB3C4\uD2B8 \uD328\uD134",outline:"\uC544\uC6C3\uB77C\uC778",success:"\uC131\uACF5/\uC644\uB8CC",naver:"\uB124\uC774\uBC84 \uBE14\uB85C\uADF8 \uC548\uB0B4",instagram:"\uC778\uC2A4\uD0C0\uADF8\uB7A8 \uC548\uB0B4"},Nu={common:ga,calendar:fa,passCard:ma,searchField:pa,rating:ha,colorPicker:ya,dropdown:ba,accordion:Sa,header:wa,nav:Ea,settings:Aa,usage:va,account:Ba,help:Da,training:Ta,trainingSettings:Na,customers:_a,payment:Oa,coupons:La,visits:Ra,company:Pa,trainingType:Ma,myWordTraining:Ia,myWordTable:ka,keyWords:xa,wordTable:ja,wordSearch:Fa,wordPrint:$a,topic:Ha,accessLinkManager:Ga,login:Va,trainingPlanRun:Wa,device:Ya,manager:Ka,wordPairs:Ua,game:za,footer:qa,landing:Ja,date:Qa,trainingSetPage:Za,wordTrainingPreview:Xa,wordData:eu,textField:tu,segmentedControl:nu,tabs:ou,fileUpload:ru,avatar:au,myHomework:uu,trainingStatus:iu,store:lu,homework:su,inquiry:cu,progress:du,trainingMiss:Cu,table:gu,wordScore:fu,topBanner:mu,datePicker:pu,report:hu,tooltip:yu,phonemeProfile:bu,bulkBar:Su,debug:wu,badge:Eu,loader:Au,soundCompass:vu,breadcrumb:Bu,board:Du,promoBannerBg:Tu},_u={statusFilter:"Filter by status",pageSizeSelect:"Items per page",selectedCount_one:"{{count}} selected",selectedCount_other:"{{count}} selected",moreFor:"More options for {{name}}",cancel:"Cancel",info:"Info",errorState:{message:"Couldn't load this.",retry:"Try again"},save:"Save",confirm:"Confirm",discardConfirm:{title:"Discard your changes?",body:"If you do not save, everything you have entered will be lost.",confirm:"Discard"},close:"Close",back:"Back",emptyTrainingName:"Training name is empty.",remove:"Remove",image:"Image",delete:"Delete",reset:"Reset",update:"Update",download:"Download",likeCount:"{{count}} likes",selectedOfMax:"{{count}} of {{max}}",downloadCount:"{{count}} downloads",search:"Search",empty:"No data.",yes:"Yes",no:"No",all:"All",none:"None",days_one:"{{count}} day",days_other:"{{count}} days",loadMore:"Load More",retry:"Try Again",prevPage:"Previous page",nextPage:"Next page",play:"Play",pause:"Pause",playPause:"Play / Pause",replay:"Replay",subscription:"Subscription",done:"Done",failed:"Failed",continue:"Continue",notification:"Notice",emptyList:"No items",noMatches:"No matching items",menu:"Menu",resetSelection:"Reset Selection",pageSizeLabel:"Show {{n}}",totalCountPrefix:"Total: ",totalCountSuffix:"",expand:"Expand",collapse:"Collapse",popup:"Popup",more:"More",codeBlock:"Code block",totalPrefix:"",copyCode:"Copy code",copied:"Copied",col:{problem:"Question"},phonetics:{place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"},vowel:{frontHigh:"Front high vowel",backHighUnrounded:"Back high unrounded vowel",backHighRounded:"Back high rounded vowel",frontMid:"Front mid vowel",backMidUnrounded:"Back mid unrounded vowel",backMidRounded:"Back mid rounded vowel",low:"Low vowel"},glide:{j:"j-glide",w:"w-glide",velar:"\u0270-glide"}},unknownError:"Unknown error",networkError:"The network connection is unstable. Check your connection and try again."},Ou={rangeSelect:"Select period",dow:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],yearMonth:"{{month}}/{{year}}",prevMonth:"Previous month",addOnDate:"Add a visit on {{date}}",nextMonth:"Next month",prevWeek:"Previous week",nextWeek:"Next week",legend:{visited:"Visited",scheduled:"Scheduled",noVisit:"No Show"},periodSelect:"Period unit",visitCount:"{{count}} visit(s)"},Lu={planSuffix:"Plan",labeledPlan:"{{label}} Plan",couponCode:"Pass Code",specialLabel:"Open Special",unitDay:"d",unitYear:"yr",remainingDay:"{{n}}d left",remainingHour:"{{n}}h left",remainingMinute:"{{n}}m left",remainingSecond:"{{n}}s left",expired:"Expired",menu:{use:"Activate",refund:"Refund",delete:"Delete"}},Ru={clearAriaLabel:"Clear search"},Pu={starLabel:"Select star {{n}}",valueLabel:"{{value}} out of {{max}}",groupLabel:"Rating"},Mu={selected:"selected"},Iu={placeholder:"Select"},ku={collapse:"Collapse",expand:"Expand"},xu={biArea:"BI area",biSymbol:"BI symbol",logoMalgwi:"Malgwi logo",logoManager:"Malgwi Manager logo",menuOpen:"Open menu",utilMenu:"Utility menu",menuClose:"Close menu"},ju={mainMenu:"Main menu",bottomNav:"Bottom navigation",goToManager:"Go to Malgwi Manager",goToMalgwi:"Go to Malgwi",modeLabelManager:"Malgwi Manager",modeLabelMalgwi:"Malgwi",training:"Training",settings:"Settings",notifications:"Notifications",account:"Account",help:"Help",feedback:"Report a bug",debug:"Debug",coupons:"Coupons",topic:"By Topic",trainingType:"By Training Type",wordPairs:"Word Pairs",wordSearch:"Word Search",wordTable:"Word Table Creator",company:"Company Info",more:"More",moreMenu:"More menu",badgeLabel:"{{label}}, {{count}}"},Fu={language:{training:{label:"Training Language",sub:"Language used for training words and speech"}},notifications:{title:"Notifications"},display:{fontSize:{small:"Small",large:"Large"}},cache:{title:"Cache Management",confirmMessage:"Delete cache ({{size}}). Do you want to continue?",delete:"Delete",deleting:"Deleting",cleared:"Cache cleared successfully.",group:{wordData:{label:"Word Data",sub:"Word list and version info"},pairIndex:{label:"Pair Index",sub:"Onset\xB7vowel\xB7coda minimal pair analysis cache"},imageCache:{label:"Image Cache",sub:"Word image existence check results"},trainingRecord:{label:"Training Record",sub:"Daily training progress and streak"}}},button:{save:"Save Settings"},popup:{clear:{confirm:"Reset"},update:{confirm:"Update"},cache:{title:"Delete {{label}}",message:"Delete {{label}} ({{size}}). Do you want to continue?"}},saved:"\u2713 Saved",account:{title:"Account",delete:{sub:"You can restore your account within 30 days of withdrawal."}}},$u={addButton:"Add Subscription",couponButton:"Enter Coupon",active:{infoTitle:"Subscription Info",refund:"Request Refund",startDate:"Start Date",endDate:"End Date",remaining:"Remaining"},pending:{title:"Pending",empty:"No pending subscriptions."},loading:"Loading\u2026",segment:{personal:"Malgwi",org:"Malgwi Manager"},org:{title:"Current Plan",disc:"Subscription plan in use by your organization.",empty:"No organization plan registered.",fallbackTitle:"Organization Plan",startDate:"Start Date",endDate:"End Date",remaining:"Remaining",duration:"Duration"}},Hu={profile:{planSuffix:"",plan:"Plan"},basicInfo:{name:{placeholder:"John Doe"}},security:{title:"Security",password:{label:"Password",currentRequired:"Enter your current password.",newRequired:"Enter a new password.",mismatch:"The new passwords do not match.",changed:"Your password has been changed."},twoFactor:{label:"Two-Factor Authentication",sub:"Strengthen your account security"}}},Gu={guide:{faq:{title:"FAQ",desc:"View all frequently asked questions"}}},Vu={settings:"Settings",start:{title:"Start Word Training",description:"Select a training type below to begin"},difficulty:{tooltip:"The easiest difficulty is 'Random', the hardest is 'Initial Consonant Difference'."},contrast:{label:"Contrast",type:"Contrast Type",count:"Contrast Count",n:"{{n}}"},filter:{random:"Random",trainOnset:"Onset",trainVowel:"Vowel",trainCoda:"Coda",phonemeGroup:"Training phonemes",noLimit:"Any",codaExclude:"Exclude",gradeLabel:"Grade",excludeImageInfo:"Only words with images: keeps only results with a registered word image.",sameStructureInfo:"Only same phoneme structure: keeps only pairs where the correct and wrong answers share the same syllable structure (length, batchim, etc.).",selectSection:"Select",excludeImage:"Only words with images",sameStructure:"Only same phoneme structure"},noQuestions:"No questions available.",countQuestions:"{{n}} questions",countSentences:"{{n}} sentences",comingSoon:"Coming Soon",nextQuestion:"Next",noiseRatioTitle:"Noise Ratio",noiseRatioValue:"{{ratio}}\xD7",noiseTypeTitle:"Noise Type",playVolumeTitle:"Volume",playSpeedTitle:"Speed",meter:{sentence:"Playback",noise:"Noise",toggle:"Show Audio Meter"},viewResult:"View Results",problemNotice:"Problem {{n}}.",trainingSettingsTitle:"Training Settings",sentencePreview:"Sentence Preview",notHeard:"Didn't hear it.",heardWell:"Heard it well.",confirmTitle:"Check the sentence and select whether you heard it.",noSoundWaveform:"Waveform is not shown for sound-comparison questions.",noise:{level:{none:"None",weak:"Weak",medium:"Medium",strong:"Strong",veryStrong:"Very Strong"},type:{none:"None",default:"Default",street:"Street",buzz:"Buzzing",restaurant:"Restaurant"}},listenTitle:"Please listen to the sentence.",listenButton:"Listen",playSound:"Play Sound",playAll:"Play All",selectInOrder:"Select the cards in the order you heard.",stop:"Stop",preview:"Preview",next:"Next",completed:"Completed",selected:"Selected",nthSelected:"Selection {{n}}",fontSizeMin:"Font size is at the minimum.",fontSizeMax:"Font size is at the maximum.",fontSizeDecrease:"Decrease font size",fontSizeIncrease:"Increase font size",toggleBackground:"Toggle background",cardInstructions:"Look at the word card, listen to the sound, and check it.",noCards:"No cards.",audioFetchError:"Failed to load the sound source.",ttsUnavailable:"Speech playback isn't available on this device.",selectConfirm:"Look at the question and select the answer.",orderListDefault:"Arrange the sentences in the order you heard.",result:{pendingDone:"Results are still being calculated, so you can't finish yet.",eyebrow:"Training Complete",title:"You've finished all the training!",scoreAria:"{{correct}} / {{total}} questions",elapsed:"Time Elapsed",summary:"You heard {{correct}} item(s) correctly.",tableAriaLabel:"Per-question judgement",colJudge:"Judgement",colAnswerSelected:"Answer \xB7 Selected",colAnswer:"Answer",colSelected:"Selected",heardWell:"Heard well",notHeard:"Didn't hear",notJudged:"Not judged",replay:"Replay",done:"Done",viewResult:"View Results",noContent:"(No content)"},up:"Move up",down:"Move down",prev:"Previous",listenLabel:"Listen",sourcePlay:"Play source {{n}}",listen:"Listen",audioStatus:{idle:"Idle",resolving:"Resolving\u2026",checking_exists:"Checking file\u2026",getting_signed_url:"Getting URL\u2026",downloading:"Downloading\u2026",measuring_duration:"Measuring length\u2026",ready:"Ready",error:"Error"}},Wu={totalCount:" training bundles",sort:{customers:"Customers"},copyLink:"Copy Link",removeLink:"Remove Link",linkRemoved:"Link removed.",linkSaveFirst:"Please save the training bundle first.",linkSaveFirstHint:"You can only create a shared link from a saved training bundle.",linkCopySelect:"Copy blocked \u2014 link selected. Press Ctrl/\u2318+C to copy.",nameRequired:"Please enter a training bundle name.",itemRequired:"Please add at least one training item.",randomAdd:"Random Add",menu:{publish:"Post to Store",duplicate:"Duplicate Training Bundle",edit:"Edit Training Bundle",move:"Move Group",rename:"Rename"},itemCount:"Number of Items",renameGroup:"Rename Group"},Yu={totalCount:" customers",loadError:"Failed to load list",basicInfo:{editTooltip:"Edit"},member:{placeholder:"Email or phone",link:"Link",linking:"Linking\u2026"},device:{title:"Hearing Devices",addTooltip:"Add New",addButton:"Add device",listTooltip:"View List",listTitle:" Device List",historyEmpty:"No device history registered",wearing:" in use",notRegistered:"Not registered",unit:"",wearingNow:"In use",wear:"Wear",unwear:"Remove",wornSince:"Since {{date}}",release:"Release",historyTitle:"Hearing device history"},schedule:{title:"Upcoming Visits",addTooltip:"Add Schedule",listTooltip:"View All",empty:"No upcoming visits",registerTitle:" Register Schedule",memoPlaceholder:"Enter a memo for this visit."},visitHistory:{title:"Visit History",addTooltip:"Add Visit",empty:"No visit history yet",popupTitle:" Visit History",registerTitle:" Register Visit"},moreItems:"more",viewAll:"View All",visits:{title:"Visits"},trainingRecord:{title:"Customer Training Records"},status:{trainingSubtitle:"Training Status"},detail:{session:{completedFmt:"Done {{done}}/{{total}} \xB7 {{duration}}"},visitSuffix:" visits"},homework:{active:"Active",copied:"Link copied.",copy:"Copy Link",inactive:"Inactive",title:"Homework Progress"},duration:{minSec:"{{m}}m {{s}}s",min:"{{m}}m",sec:"{{s}}s"}},Ku={plan:{recommendedFor:"Recommended for",features:"Key Features",freePrice:"Free",contact:"Contact Us",tierFallback:"Plan",openPromo:"Launch offer"},products:{mgrEnterprise:{tier:{price:"Contact us"}}}},Uu={title:"Coupons",subtitle:"Enter a coupon code or view your coupons",input:{label:"Coupon code",placeholder:"Enter coupon code"},applyButton:"Apply",error:{invalid:"Invalid coupon code.",alreadyUsed:"This coupon has already been used."},success:{applied:'"{{name}}" coupon applied.'},section:{owned:"My Coupons"},status:{used:"Used",available:"Available"}},zu={unitVisit:"",periodAll:"All",showN:"Show {{n}}"},qu={subtitle:"Manage company and business information",editButton:"Edit Info",basicInfo:{title:"Basic Info"},contactInfo:{title:"Contact Info"}},Ju={title:"Training by Type",subtitle:"Select the training type you want",listenInNoise:{title:"Sentence Listening in Noise",desc:"Train sentence comprehension in various noise environments."},shortStory:{title:"Short Story Listening",desc:"Listen to short stories and understand the content."},longStory:{title:"Long Story Listening",desc:"Focus on listening to long stories and grasp the content."},orderingSentence:{title:"Sentence Ordering",desc:"Arrange heard sentences in the correct order."},SAME_SOUND_PICK:{label:"Listen & Pick Same Sound",sub:"Pick the word card that matches what you heard."},SAME_OR_DIFF:{label:"Same or Different?",sub:"Decide whether the two sounds are the same or different."},HEAR_AND_PICK_SAME:{label:"Hear & Match Word",sub:"Pick the word card that matches the sound you heard."},HEAR_AND_PICK_INCLUDED:{label:"Find Word Containing Sound",sub:"Pick the word card that contains the syllable you heard."},STARTS_WITH_SAME_SOUND:{label:"Find Word Starting with Same Sound",sub:"Pick a word that starts with the same sound as what you heard."},LISTEN_AND_REMEMBER_ORDER:{label:"Listen & Recall Order",sub:"Select the cards in the order you heard the three words."},MERGE_2_SYLLABLES:{label:"Combine 2 Syllables",sub:"What word do two syllables make?"},MERGE_3_SYLLABLES:{label:"Combine 3 Syllables",sub:"What word do three syllables make?"},MERGE_2_PHONEMES:{label:"Combine 2 Phonemes",sub:"What sound do two phonemes make?"},MERGE_3_PHONEMES:{label:"Combine 3 Phonemes",sub:"What sound do three phonemes make?"},DROP_1_FROM_2SYLL:{label:"Drop 1 Syllable from 2-Syllable",sub:"What sound remains when you remove a syllable from a 2-syllable word?"},DROP_1_FROM_3SYLL:{label:"Drop 1 Syllable from 3-Syllable",sub:"What sound remains when you remove a syllable from a 3-syllable word?"},DROP_PART_FROM_COMPOUND:{label:"Drop Part of Compound Word",sub:"What word remains when you remove part of a compound word?"},DROP_FINAL_CONSONANT_FROM_1SYLL:{label:"Drop Final Consonant",sub:"What sound remains when you remove the final consonant?"},REMOVE_CONSONANT_AND_IDENTIFY_PHONEME:{label:"Drop Consonant",sub:"What sound remains when you remove the consonant?"},CHANGE_1_SYLL_IN_2SYLL:{label:"Change 1 Syllable (2-Syllable)",sub:"Change one syllable in a 2-syllable word to make a new word."},CHANGE_1_SYLL_IN_3SYLL:{label:"Change 1 Syllable (3-Syllable)",sub:"Change one syllable in a 3-syllable word to make a new word."},CHANGE_1_PHONEME_IN_1SYLL:{label:"Change 1 Phoneme (1-Syllable)",sub:"Change one phoneme in a 1-syllable word to make a new sound."},CHANGE_1_PHONEME_IN_2SYLL:{label:"Change 1 Phoneme (2-Syllable)",sub:"Change one phoneme in a 2-syllable word to make a new word."}},Qu={comingSoon:"Word training is coming soon."},Zu={colName:"Table Name",open:"Open",countSuffix:" tables",addCard:"Add Word Table Card",cardsEmpty:"No word table cards created yet.",menu:{publishStore:"Post to Training Store",unpublishStore:"Remove from Training Store"},newBadge:"Newly created",tab:{cards:"Word Table Cards",tables:"Word Tables"},publishedBadge:"Published",sharedBadge:"Shared"},Xu={title:"Key Words",empty:"No key words available."},ei={defaultName:"Word Table",title:"Word Table Builder",subtitle:"Set columns and add words to build a table.",filterTitle:"Table Settings",filter:{composition:"Composition",image:"Image",word:"Word",standardPron:"Standard Pronunciation",colloquialPron:"Colloquial Pronunciation",paperOrientation:"Paper Orientation",landscape:"Landscape",portrait:"Portrait",columns:"Columns",column:"{{count}} col",itemsPerPageWord:"Words per page",itemsPerPagePair:"Pairs per page",itemsPerPageOption:"{{count}}",pageIndicator:"{{current}} / {{total}}",pageNumber:"Page Number",pageNumberLeft:"Left",pageNumberCenter:"Center",pageNumberRight:"Right",border:"Border",topInfo:"Header",bottomInfo:"Footer",cutLine:"Cut Line",show:"Show",hide:"Hide",dotted:"Dotted",corner:"Corner"},addWord:"Add",wordInfo:"Info for {{word}}",emptyItems:"Please add at least one word.",load:"Load",openNewWindow:"Open in New Window",saveButton:"Save",saveAsNewButton:"Save as New",print:"Print",popupBlocked:"Popup was blocked. Please allow popups in your browser settings.",printFileNameSingle:"Word Table",printFileNamePair:"Contrast Pair Table",save:{title:"Save Word Table",nameLabel:"Name",desc:"Enter a name for the word table.",placeholder:"Enter a title for this word table.",descriptionLabel:"Description",descriptionPlaceholder:"Enter a description for this word table.",duplicateName:"This name is already in use.",nameRequired:"Please enter a table name.",autoFillHint:" (Press Tab or Space to autofill)",copyName:"{{name}} (copy)"},loadTable:{title:"Load Saved Word Table",empty:"No saved word tables.",loadButton:"Load",itemCount:"{{count}} words",deleteAriaLabel:"Delete {{name}}",sort:{newest:"Newest",oldest:"Oldest",name:"Name",count:"Word Count"},view:{grid:"Grid View",list:"List View"}},groupDeleteMessage:"Word tables in this group will be moved to 'No Group'.",groupNamePlaceholder:"Group name",store:{badge:"Training Store"},card:{sub:"Word Table Card",empty:"No word tables in this card."},toast:{renameError:"Failed to rename",saveError:"Failed to save",deleteError:"Failed to delete",duplicateError:"Failed to duplicate",saveSuccess:"Word table saved."},scoring:{o:"{{word}} correct",triangle:"{{word}} partial",x:"{{word}} incorrect",markName:{o:"Correct",triangle:"Partial",x:"Incorrect"},button:"Score",pickTitle:"Who are you scoring?",pickSubtitle:"Choose the customer who trained with \u201C{{name}}\u201D.",pickSearch:"Search by name or phone",pickEmpty:"No customers registered.",pickNoMatch:"No matching customer.",pickAgain:"Choose another",scoringFor:"Scoring {{name}}",none:"Tap \u25CB \xB7 \u25B3 \xB7 \u2715 under a cell to mark it. With a mouse, hover the cell to reveal them.",tally:"{{marked}} scored \xB7 \u25CB {{o}} \xB7 \u25B3 {{triangle}} \xB7 \u2715 {{x}} \xB7 {{rate}}%",save:"Save score",saved:"Saved {{count}} marks for {{name}}.",reviewTitle:"Create a review table?",reviewMessage:"Builds a new table from the {{count}} cells {{name}} got wrong or partial. Correct ones are left out.",reviewConfirm:"Create review table",reviewDescription:"Cells marked wrong or partial in \u201C{{name}}\u201D \u2014 {{count}} of them.",reviewCreated:"Created \u201C{{name}}\u201D \u2014 {{count}} cells.",discardTitle:"Discard this scoring?",discardMessage:"You marked {{count}} cells but have not saved. Leaving discards them.",discardConfirm:"Discard and leave"},info:{grade:"Grade: {{n}}",syllables:"Syllables: {{n}}",pos:"Part of speech: {{v}}",wordType:"Type: {{v}}"},pos:{noun:"Noun",verb:"Verb",adjective:"Adjective",adverb:"Adverb",numeral:"Numeral",determiner:"Determiner",interjection:"Interjection",particle:"Particle",affix:"Affix",dependentNoun:"Dependent noun",pronoun:"Pronoun",auxVerb:"Auxiliary verb",auxAdjective:"Auxiliary adjective"},reorder:{moved:"Moved to position {{n}} of {{total}}",handle:"Reorder {{word}} (Alt + arrow keys)",hint:"Alt + \u2190 \u2192 to reorder"}},ti={editBanner:{message:"Saving will update the word table you're editing."},filterTitle:"Word Search Settings",filter:{positionAny:"Any",positionHead:"Start",positionMid:"Middle",positionTail:"End",difficulty:"Grade",grade:"Grade {{n}}",syllables:"Syllables",syllable:"{{n}} Syll.",syllable5plus:"5+ Syllables",partOfSpeech:"Part of Speech",pos:{noun:"Noun/Numeral",verb:"Verb/Adjective",modifier:"Adverb/Determiner"},wordType:"Word Type",type:{native:"Native Korean",sino:"Sino-Korean",foreign:"Loanword",mixed:"Hybrid"},exclude:"Exclude",excludeNoImage:"No Image"},searchButton:"Search",resultUnit:"words",remaining:"{{count}} remaining",resultDisc:"Select {{unit}}. Up to {{max}} items. ({{selected}}/{{max}})",resultTitlePrefix:"",resultTitleSuffix:" {{unit}} found.",emptyResult:"No results found.",groupCount:"{{count}}",sort:{aria:"Sort",match:"Best Match",ganada:"A\u2013Z \u2191",ganadaDesc:"A\u2013Z \u2193",syllable:"Syllables \u2191",syllableDesc:"Syllables \u2193",grade:"Grade \u2191",gradeDesc:"Grade \u2193",original:"Original order"},pageSize:"Show {{count}}",pageSizeAria:"Page size",popup:{title:"Select a word for cell {{n}}"}},ni={clearAllSelection:"Clear All Selections",divLine:"Contrast Line",removePair:"Remove pair",removeWord:"Remove word"},oi={title:"By Topic",subtitle:"Select a topic to start listening training",noiseTitle:"Sentence Listening in Noise",shortStoryTitle:"Short Story Listening",FOOD:"Food",HLTH:"Health",WETH:"Weather",PRSN:"People",KRCT:"Korean Culture",STRY:"Stories",LOCA:"Locations",SOAR:"Society & Arts",NTSC:"Nature & Science",SPRT:"Sports",sub:{TRKRFD:"Traditional Korean Food",MDKRFD:"Modern Korean Food",WRLDFD:"World Cuisine",MTRFRT:"Ingredients & Fruits",GEFDKL:"Food Facts",HTETHB:"Healthy Eating",DISILL:"Diseases",EXCISE:"Exercise",GEHTKL:"Health Facts",GESSKL:"Seasons",SNWRAN:"Snow & Rain",WTHFCT:"Weather Forecast",GEWTKL:"Weather Facts",JODYPS:"Joseon Dynasty",MDKRPS:"Modern Korea",THKDPS:"Three Kingdoms",WRLART:"World Artists",WRLPSN:"World Figures",KRLANG:"Korean Language",TRPLCT:"Traditional Games",HERITG:"Heritage",EVTFES:"Events & Festivals",GECTKL:"General Knowledge",FRYTAL:"Fairy Tales",AMZING:"Amazing Stories",DAYSTR:"Everyday Stories",KRLDMK:"Korean Landmarks",SELNMK:"Seoul Landmarks",WRDTRB:"World Travel",NAVIGT:"Navigation",KRSOCI:"Korea",ECONEW:"Economy & News",GENART:"Arts",GELFKL:"Life Tips",ANIMAL:"Animals",PLANTS:"Plants",ETHPLT:"Earth",TOLELC:"Tools & Electronics",GESCKL:"Science Facts",INVDSP:"Individual Sports",MARART:"Martial Arts",TEAMSP:"Team Sports",FOOTBL:"Soccer",GESPKL:"Sports Facts"}},ri={maxUses:"Max uses (leave blank for unlimited)",redirect:"Redirect URL (leave blank for app home)",creating:"Creating\u2026",create:"Create link",created:"\u2713 Link created",copied:"Copied!",copy:"Copy",loading:"Loading\u2026",empty:"No links created yet.",uses:"Used {{count}} times",expiresAt:"Expires: {{date}}",createdAt:"Created: {{date}}",confirmDelete:"Delete this link?",deactivate:"Deactivate",delete:"Delete",status:{active:"Active",expired:"Expired",inactive:"Inactive"}},ai={passwordPlaceholder:"Enter password"},ui={direction:{left:"L",right:"R",label:"Side"},wornDate:"Date Worn",deviceType:"Device Type",brand:"Brand",fitType:"Fit Type",productName:"Product Name",validationError:{brandAndProduct:"Please enter brand and product name."},addNew:"Add New Device",selectFromList:"Select from List",removeDevice:"Remove",type:{hearingAid:"Hearing Aid",cochlearImplant:"Cochlear Implant"}},ii={stat:{totalCustomers:"Total Customers",monthlyVisits:"This Month's Visits"},chart:{visitDetail:"Visit Details",trainingDetail:"Training Details",weekly:"Weekly",daily:"Daily",periodMonth:"Month",periodWeek:"Week",weeklyPrefix:"Weekly",monthlyPrefix:"Monthly",visit:"Visits",reservation:"Reservations",trainingDone:"Completed",trainingInProgress:"In Progress",weekRange:"{{start}}\u2013{{end}}",week:"W{{n}}"},subscriptionStatus:{active:"{{pct}}% Active",expired:"{{pct}}% Expired",unused:"{{pct}}% Unused"}},li={editBanner:{message:"Saving will update the contrast pair table you're editing."},phonemeSelect:{title:"Phoneme Selection",vs:"vs"},caution:"Caution",mode:{include:"Phoneme Include",pick:"Phoneme Contrast",contrast:"Specify Contrast",infoTitle:"Contrast Mode",infoInclude:"Include \u2014 finds words containing all selected phonemes, plus their minimal pair.",infoPick:"Contrast \u2014 matches only if the selected phoneme is the actual point of difference in the pair.",infoContrast:"Specify Contrast \u2014 directly choose phonemes for the base word and the contrasting word to find pairs."},count:"{{n}}",input:{char:"Choose Letters",pron:"Choose Sound",infoTitle:"Input mode",infoChar:"Choose Letters \u2014 finds words by the selected phonemes (spelling), then finds their standard-pronunciation contrast pairs.",infoPron:"Choose Sound \u2014 finds standard-pronunciation contrast pairs directly from the selected phonemes."},phonemeN:"Syllable {{n}}",phonemeSingleLabel:"Syllable",phonemeContrastSingleLabel:"Contrast Syllable",ordinals:["First","Second","Third","Fourth"],phonemeOrdinalLabel:"{{ordinal}} Syllable",phonemeContrastOrdinalLabel:"Contrast {{ordinal}} Syllable",composition:"Answer Word Composition",syllableCount:"Syllables",syllableN:"{{n}} syll.",syllableNPlus:"{{n}}+ syll.",onset:"Onset",vowel:"Vowel",coda:"Coda",filter:{searchOptionsTitle:"Contrast Settings",searchModeLabel:"Contrast Mode",countLabel:"Input Syllable Count",inputModeLabel:"Input mode",phonemeOrder:"Input Syllable Position",phonemeOrderInfo:["Match: the pair must differ at exactly the same position (syllable).","Any: the differing position doesn't matter."],orderAny:"Any",orderMatch:"Match",difficultyInfo:"Reflects the National Institute of Korean Language's basic vocabulary grade.",selectLabel:"Select",onlyHasImage:"Only words with images",onlySameStructure:"Only same phoneme structure"},searchLabel:{error:"Failed to load data",loading:"Loading\u2026"},confirmMessage:"The word table with {{count}} selected {{unit}} will be lost.",resetOptions:"Reset Options",phonemeContrast:"Contrast Syllable {{n}}",infoNotes:["The preview character is an example of the selected phoneme combination. The actual search covers all words containing the phoneme.","Initial consonant '\u3147' cannot be selected. \u3147 at the start of a word is effectively silent.","If only onset and coda are selected, the vowel is automatically displayed as '\u314F'.","Increasing the phoneme count searches for minimal pairs between each phoneme."]},si={sentenceTyping:{roundCount:"{{rounds}} rounds \xB7 {{timeLimit}}s each"},wordDefense:{me:"Me"},dictation:{title:"Dictation",desc:"Practice writing down exactly what you hear.",comingSoon:"Coming soon: audio playback, input field, answer comparison"},result:{heading:"Level {{number}} Answer",retry:"Try Again"},common:{accuracy:"{{pct}}% accuracy"},soundMatch:{title:"Sound Match",desc:"Quickly match words or sentences that share the same sound.",comingSoon:"Coming soon: play button, timer, score tracking"},orderSequence:{title:"Sentence Ordering",desc:"Arrange scattered sentence fragments in the correct order.",comingSoon:"Coming soon: sentence sets, ordering interface"},speedListen:{title:"Speed Listen",desc:"A challenge game to count the number of words in a sentence within a time limit.",comingSoon:"Coming soon: time limit, scoreboard"},noiseChallenge:{title:"Noise Challenge",desc:"Practice distinguishing sentences amid background noise.",comingSoon:"Coming soon: various noise levels, score tracking"},fastListen:{title:"Fast Listen",desc:"Listen to short sentences at speed and select the key word.",comingSoon:"Coming soon: speed by difficulty, timer"},shadowing:{title:"Shadowing",desc:"Practice pronunciation and intonation by repeating sentences aloud.",comingSoon:"Coming soon: playback, recording, comparison feedback"},phonemeHunt:{title:"Phoneme Hunt",desc:"Find words that contain a specific phoneme (sound).",comingSoon:"Coming soon: phoneme filter, hint feature"}},ci={lead:`IHAB builds trust
4
4
  through sound
5
- and aids recovery.`,site:{title:"Site",malgwi:"Malgwi",soundDirection:"Sound Direction System",vrSoundDirection:"VR Sound Direction System",hearingTest:"Hearing Test Pro"},sns:{title:"SNS",naverBlog:"Naver Blog",kakao:"KAKAO Talk Open Chat"},policy:{title:"Policy",terms:"Terms of Service",privacy:"Privacy Policy"},ceo:"CEO",address:"Address",support:"Support",ceoName:"Ji-hye Han",addressValue:"302, 3F, Haechan Bldg, 32 Siocheong-gil, Chuncheon, Gangwon, Korea"},di={trainingPhone:{topic:"Gardening",prev:"Prev",next:"Next",speed:"Speed 3",noiseType:"Crowd noise",settings:"Settings",start:{caption:"Press the play (\u25B6) button below and listen carefully. After listening, check the sentence."},feedback:{caption:"Plant the well-grown seedlings in the garden bed and cover them carefully with plastic film."},done:{heardWell:"Heard clearly",listenAgain:"Listen again"}}},Ci={timeHM:"{{hh}}:{{mm}}",timeH:"{{hh}}:{{mm}}"},gi={options:"Training Options",difficulty:"Difficulty",exclude:"Exclude",chosung:"Initial Consonant",excludeOptions:{none:"None",noImage:"No Image"}},fi={answer:"Answer",distractor:"Distractor"},mi={phaseWordDownload:"Download Word Data",phaseImageCheck:"Check Images",phasePairAnalysis:"Analyze Word Pairs",downloadingCount:"Downloading {{n}} words",checkingPage:"Checking page {{page}} list",imageCount:"{{done}} / {{total}} items"},pi={clearAriaLabel:"Clear input"},hi={ariaLabel:"Select tab"},yi={ariaLabel:"Tabs"},bi={dragPrompt:"Drag and drop files here",browseButton:"Choose Files",removeAriaLabel:"Remove {{name}}"},Si={ariaLabel:"User avatar"},wi={relativeDay:{today:"Today",yesterday:"Yesterday",daysAgo:"{{n}}d ago"},reason:{notLoggedIn:"Login required."},list:{title:"Received Homework"},status:{expired:"Expired",done:"Done {{count}}\xD7 \xB7 {{date}}",notDone:"Not done"}},Ei={weekly:{title:"Weekly Training",daily:"Daily Listening",crossword:"Crossword"},homework:{title:"Homework Progress",totalRate:"Overall rate",count:"Total",done:"Done",remaining:"Remaining"},today:{tooltipTotal:"Total",tooltipDone:"Done"},filter:{countSuffix:" sessions"},time:{countLabel:"{{n}} sessions",empty:"No training records"},daily:{title:"Today's Listening Record",empty:"No completed sessions"},crossword:{title:"Crossword Quiz",empty:"No completed levels"},visit:{title:"Linked Visit Records"},detail:"Details",trainingType:{LISTEN_IN_NOISE:"Sentence in Noise",SHORT_STORY:"Short Story",LONG_STORY:"Long Story",ORDERING_SENTENCE:"Sentence Ordering"}},Ai={import:"Add to my trainings",publisher:"Publisher",time:{justNow:"just now",minutesAgo:"{{n}}m ago",hoursAgo:"{{n}}h ago",daysAgo:"{{n}}d ago",weeksAgo:"{{n}}w ago",monthsAgo:"{{n}}mo ago",yearsAgo:"{{n}}y ago"},badge:{shared:"Store"},publish:{descPlaceholder:"One-line description for the Training Store (optional)"}},vi={manage:{unit:"item(s)"}},Bi={cancelLabel:"Cancel"},Di={subtitle:"Select a topic to start listening practice."},Ti={steps:"Step {{current}} of {{total}}"},Ni={panelTitle:"Training misses",viewItems:"Items",viewTypes:"Types",colPending:"Left",colTrend:"Change",colRuns:"Runs",unitItem:" items",skippedOnly:"{{n}} older record(s) were excluded \u2014 they do not say what was answered.",summaryLabel:"Recorded",summaryValue:"{{items}} items \xB7 {{pending}} still missed",nextLabel:"Next to work on",nextCount:"{{count}}",nextCountCapped:"{{shown}} of {{total}}",picked:"\u2192 {{what}}",typeClear:"All caught up",typePending:"{{pending}} of {{total}} left",flat:"no change",runs:"{{count}} run(s)",avgDuration:"{{sec}}s avg"},_i={resetColumns:"Reset column widths"},Oi={panelTitle:"Word table scores",viewWords:"Words",viewTables:"Tables",colLatest:"When",colTrend:"Change",unitTime:" times",summaryLabel:"Scored",summaryValue:"{{times}} times \xB7 {{words}} words",nextLabel:"Focus next",nextCount:"{{count}}",allClear:"All correct last time.",times:"{{count}}x",flat:"no change",recentLabel:"Recent scorings",nextCountCapped:"{{shown}} of {{total}}"},Li={ariaLabel:"Banner",dotAriaLabel:"Banner {{index}} of {{count}}"},Ri={selectYearMonth:"Select year and month",chooseDate:"Choose a date"},Pi={previewRegion:"Report preview \u2014 scrollable sideways"},Mi={description:"Description",textbox:"Text",training:"Training guide",menu:"Menu"},Ii={devNone:"No acquisition data",place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"}},ki={clearSelection:"Clear selection"},xi={showResult:"Show {{type}} result"},ji={selected:"Selected",remove:"Remove",exclude:"Excluded",nthSelected:"Selection {{n}}"},Fi={loading:"Loading"},$i={state:{active:"playing",played:"heard",correct:"correct",wrong:"wrong"}},Hi={ariaLabel:"Breadcrumb"},Gi={empty:"No items yet."},Vi={main:"Main gradient",soft:"Soft",sub:"Sub color",deep:"Deep gradient",softSub:"Soft sub",warm:"Warm (accent)",dark:"Dark",radial:"Radial gradient",diagonal:"Diagonal pattern",dots:"Dot pattern",outline:"Outline",success:"Success / done",naver:"Naver blog notice",instagram:"Instagram notice"},Wi={common:_u,calendar:Ou,passCard:Lu,searchField:Ru,rating:Pu,colorPicker:Mu,dropdown:Iu,accordion:ku,header:xu,nav:ju,settings:Fu,usage:$u,account:Hu,help:Gu,training:Vu,trainingSettings:Wu,customers:Yu,payment:Ku,coupons:Uu,visits:zu,company:qu,trainingType:Ju,myWordTraining:Qu,myWordTable:Zu,keyWords:Xu,wordTable:ei,wordSearch:ti,wordPrint:ni,topic:oi,accessLinkManager:ri,login:ai,device:ui,manager:ii,wordPairs:li,game:si,footer:ci,landing:di,date:Ci,trainingSetPage:gi,wordTrainingPreview:fi,wordData:mi,textField:pi,segmentedControl:hi,tabs:yi,fileUpload:bi,avatar:Si,myHomework:wi,trainingStatus:Ei,store:Ai,homework:vi,inquiry:Bi,trainingPlanRun:Di,progress:Ti,trainingMiss:Ni,table:_i,wordScore:Oi,topBanner:Li,datePicker:Ri,report:Pi,tooltip:Mi,phonemeProfile:Ii,bulkBar:ki,debug:xi,badge:ji,loader:Fi,soundCompass:$i,breadcrumb:Hi,board:Gi,promoBannerBg:Vi};const Yi="0.235.0",Ki=[{code:"ko",label:"\uD55C\uAD6D\uC5B4"},{code:"en",label:"English"}],Ft="ko",Ui="ihab_display_language";function Jn(){if(typeof window>"u")return Ft;try{const e=localStorage.getItem(Ui);if(e&&Ki.some(t=>t.code===e))return e}catch{}return Ft}function Qn(e){try{document.documentElement.lang=e}catch{}}ae.on("languageChanged",Qn),Qn(Jn()),ae.use(se.initReactI18next).init({resources:{ko:{translation:Nu},en:{translation:Wi}},lng:Jn(),fallbackLng:Ft,interpolation:{escapeValue:!1},react:{useSuspense:!1}});const We=["grade","syllables","pos","wordType"],Zn=["1","2","3","4"],zi=["1","2","3","4","5+"],qi=["noun","verb","modifier"],Ji=["native","sino","foreign","mixed"],Qi={grade:Zn,syllables:zi,pos:qi,wordType:Ji},Zi={noun:["\uBA85","\uC218"],verb:["\uB3D9","\uD615"],modifier:["\uBD80","\uAD00"]},Xi={native:"\uACE0\uC720",sino:"\uD55C\uC790",foreign:"\uC678\uB798",mixed:"\uD63C\uC885"},el={grade:["\uB09C\uC774\uB3C4 \uB4F1\uAE09"]},tl={pos:{noun:["\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)"],verb:["\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)"],modifier:["\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)"]}},$t=new Map;try{ae.store?.on?.("added",()=>$t.clear())}catch{}function ft(e){const t=$t.get(e);if(t)return t;const n=ae.getFixedT(e),o={\uC139\uC158:{grade:n("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:n("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),pos:n("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:n("wordSearch.filter.wordType","\uC720\uD615")},\uAC12:{grade:Object.fromEntries(Zn.map(r=>[r,n("wordSearch.filter.grade",{n:Number(r),defaultValue:`${r}\uB4F1\uAE09`})])),syllables:{...Object.fromEntries(["1","2","3","4"].map(r=>[r,n("wordSearch.filter.syllable",{n:Number(r),defaultValue:`${r}\uC74C\uC808`})])),"5+":n("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1")},pos:{noun:n("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)"),verb:n("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)"),modifier:n("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")},wordType:{native:n("wordSearch.filter.type.native","\uACE0\uC720\uC5B4"),sino:n("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4"),foreign:n("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4"),mixed:n("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")}}};return $t.set(e,o),o}const Ht=()=>Array.from(new Set([ae.language,"ko","en"].filter(e=>!!e)));function Ye(e){if(We.includes(e))return e;for(const t of Ht()){const n=ft(t);for(const o of We)if(n.\uC139\uC158[o]===e)return o}for(const t of We)if(el[t]?.includes(e))return t;return null}function Ne(e,t){if(Qi[e].includes(t))return t;for(const n of Ht()){const o=ft(n).\uAC12[e];for(const[r,a]of Object.entries(o))if(a===t)return r}for(const[n,o]of Object.entries(tl[e]??{}))if(o.includes(t))return n;if(e==="grade"||e==="syllables"){const n=parseInt(t.replace(/\D/g,""),10);if(Number.isFinite(n)&&n>=1)return e==="grade"?n<=4?String(n):null:n>=5?"5+":String(n)}return null}const nl=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"&&e?[e]:[];function Gt(e){const t={};for(const[n,o]of Object.entries(e??{})){const r=Ye(n);if(r)for(const a of nl(o)){const u=Ne(r,a);if(!u)continue;const i=t[r]??(t[r]=[]);i.includes(u)||i.push(u)}}return t}function Vt(e,t=ae.language){const n=ft(t||"ko"),o={};for(const r of We){const a=(e?.[r]??[]).map(u=>n.\uAC12[r][u]).filter(u=>!!u);a.length&&(o[n.\uC139\uC158[r]]=a)}return o}function ol(e,t=ae.language){const n={};for(const[o,r]of Object.entries(e??{}))Ye(o)||(n[o]=r);return{...n,...Vt(Gt(e),t)}}function rl(e){for(const t of Ht()){const n=ft(t);if(We.some(o=>n.\uC139\uC158[o]===e))return t}return ae.language||"ko"}function Xn(){const{t:e}=se.useTranslation();return s.useMemo(()=>({difficulty:e("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:e("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),syllable5plus:e("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1"),partOfSpeech:e("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:e("wordSearch.filter.wordType","\uC720\uD615"),posMap:{[e("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)")]:["\uBA85","\uC218"],[e("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)")]:["\uB3D9","\uD615"],[e("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")]:["\uBD80","\uAD00"]},typeMap:{[e("wordSearch.filter.type.native","\uACE0\uC720\uC5B4")]:"\uACE0\uC720",[e("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4")]:"\uD55C\uC790",[e("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4")]:"\uC678\uB798",[e("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")]:"\uD63C\uC885"}}),[e])}function eo(e,t,n){return{label:t.difficulty,items:[1,2,3,4].map(o=>e("wordSearch.filter.grade",{n:o})),multiple:!0,allOption:!0,allLabel:n?.allLabel,labelAction:n?.labelAction,labelInfo:n?.labelInfo}}function to(e){return{label:e.partOfSpeech,items:Object.keys(e.posMap),multiple:!0,allOption:!0}}function no(e){return{label:e.wordType,items:Object.keys(e.typeMap),multiple:!0,allOption:!0}}function al(e,t){return{label:t.syllables,items:[e("wordSearch.filter.syllable",{n:1}),e("wordSearch.filter.syllable",{n:2}),e("wordSearch.filter.syllable",{n:3}),e("wordSearch.filter.syllable",{n:4}),t.syllable5plus],multiple:!0,allOption:!0}}function ul(e,t){const n=[e("wordPairs.filter.onlyHasImage","\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC")];return t?.includeStructure&&n.push(e("wordPairs.filter.onlySameStructure","\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC")),{label:e("wordPairs.filter.selectLabel","\uC120\uD0DD"),items:n,multiple:!0,labelAction:t?.labelAction,labelInfo:t?.labelInfo}}function il(e,t){const{label:n,headValue:o,midValue:r,tailValue:a,includeMid:u=!0,headDisabled:i,midDisabled:l,tailDisabled:c,allOptionDisabled:g,groupLabel:d,labelAction:C}=t;return{label:n,...d?{groupLabel:d}:{},...C?{labelAction:C}:{},allOption:!0,allLabel:e("wordSearch.filter.positionAny",{defaultValue:"\uBB34\uAD00"}),...g?{allOptionDisabled:g}:{},items:[{value:o,displayLabel:e("wordSearch.filter.positionHead",{defaultValue:"\uC5B4\uB450"}),disabled:i},...u?[{value:r,displayLabel:e("wordSearch.filter.positionMid",{defaultValue:"\uC5B4\uC911"}),disabled:l}]:[],{value:a,displayLabel:e("wordSearch.filter.positionTail",{defaultValue:"\uC5B4\uB9D0"}),disabled:c}]}}function ll(e,t,n){const o=Ye(n),r=o&&t!==ue?Ne(o,t):null;if(o&&(t===ue||r)){const i={},l={};for(const[f,m]of Object.entries(e))(Ye(f)===o?l:i)[f]=m;if(t===ue)return i;const c=Gt(l)[o]??[],g=c.includes(r)?c.filter(f=>f!==r):[...c,r];if(g.length===0)return i;const d=Vt({[o]:g},rl(n)),C=Object.values(d)[0]??[];return{...i,[n]:C}}if(t===ue){const{[n]:i,...l}=e;return l}const a=e[n]??[],u=a.includes(t)?a.filter(i=>i!==t):[...a,t];if(u.length===0){const{[n]:i,...l}=e;return l}return{...e,[n]:u}}Object.fromEntries(Object.entries(Nt).map(([e,{nucleus:t}])=>[e,t]));const sl={\uACE0\uC720\uC5B4:"\uACE0\uC720",\uD55C\uC790\uC5B4:"\uD55C\uC790",\uC678\uB798\uC5B4:"\uC678\uB798",\uD63C\uC885\uC5B4:"\uD63C\uC885"},cl={"\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)":["\uBA85","\uC218"],"\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)":["\uB3D9","\uD615"],"\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)":["\uBD80","\uAD00"]},dl={difficulty:"\uB09C\uC774\uB3C4 \uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218",syllable5plus:"5\uC74C\uC808 \uC774\uC0C1",partOfSpeech:"\uD488\uC0AC",wordType:"\uC720\uD615",posMap:cl,typeMap:sl},oo=new WeakMap;function Cl(e,t){const n=oo.get(e);if(n&&n.keys===t)return n.\uAC12;const o={grades:[],syls:[],poses:[],types:[]},r={grade:o.grades,syllables:o.syls,pos:o.poses,wordType:o.types};for(const[a,u]of Object.entries(e??{})){const i=a===t.difficulty?"grade":a===t.syllables?"syllables":a===t.partOfSpeech?"pos":a===t.wordType?"wordType":Ye(a);if(i)for(const l of Array.isArray(u)?u:typeof u=="string"?[u]:[])r[i].includes(l)||r[i].push(l)}return oo.set(e,{keys:t,\uAC12:o}),o}function gl(e,t,n=dl){const{grades:o,syls:r,poses:a,types:u}=Cl(t,n);if(o.length&&!o.some(i=>e.grade===(Ne("grade",i)??i.replace(/\D/g,""))))return!1;if(r.length){const i=e.syllables??0;if(!r.some(l=>{const c=l===n.syllable5plus?"5+":Ne("syllables",l);return c==="5+"?i>=5:i===parseInt(c??l)}))return!1}return!(a.length&&!a.flatMap(i=>n.posMap[i]??Zi[Ne("pos",i)??""]??[i]).some(i=>(e.pos??"").includes(i))||u.length&&!u.some(i=>e.wordType===(n.typeMap[i]??Xi[Ne("wordType",i)??""])))}const fl={labial:e=>e("common.phonetics.place.labial",{defaultValue:"\uC591\uC21C\uC74C"}),alveolar:e=>e("common.phonetics.place.alveolar",{defaultValue:"\uCE58\uC870\uC74C"}),palatal:e=>e("common.phonetics.place.palatal",{defaultValue:"\uACBD\uAD6C\uAC1C\uC74C"}),velar:e=>e("common.phonetics.place.velar",{defaultValue:"\uC5F0\uAD6C\uAC1C\uC74C"}),glottal:e=>e("common.phonetics.place.glottal",{defaultValue:"\uC131\uBB38\uC74C"})},ml={frontHigh:e=>e("common.phonetics.vowel.frontHigh",{defaultValue:"\uC804\uC124 \uACE0\uBAA8\uC74C"}),backHighUnrounded:e=>e("common.phonetics.vowel.backHighUnrounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uD3C9\uC21C"}),backHighRounded:e=>e("common.phonetics.vowel.backHighRounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uC6D0\uC21C"}),frontMid:e=>e("common.phonetics.vowel.frontMid",{defaultValue:"\uC804\uC124 \uC911\uBAA8\uC74C"}),backMidUnrounded:e=>e("common.phonetics.vowel.backMidUnrounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uD3C9\uC21C"}),backMidRounded:e=>e("common.phonetics.vowel.backMidRounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uC6D0\uC21C"}),low:e=>e("common.phonetics.vowel.low",{defaultValue:"\uC800\uBAA8\uC74C"})},pl={j:e=>e("common.phonetics.glide.j",{defaultValue:"j\uD65C\uC74C"}),w:e=>e("common.phonetics.glide.w",{defaultValue:"w\uD65C\uC74C"}),velar:e=>e("common.phonetics.glide.velar",{defaultValue:"\u0270\uD65C\uC74C"})};function ro(e,t){if("place"in t)return fl[t.place](e);const n=ml[t.vowel](e);return t.glide?`${n} \xB7 ${pl[t.glide](e)}`:n}const hl=(e,{defaultValue:t})=>t,ao=(e,t)=>({jamos:e,phonetic:t,tooltip:ro(hl,t)}),Ce=(e,t)=>t.map(n=>ao([n],{place:e})),J=(e,t,n)=>ao([...e],n?{vowel:t,glide:n}:{vowel:t}),Wt={cho:[Ce("labial",["\u3142","\u3143","\u314D","\u3141"]),Ce("alveolar",["\u3137","\u3138","\u314C","\u3134","\u3139"]),Ce("alveolar",["\u3145","\u3146"]),Ce("palatal",["\u3148","\u3149","\u314A"]),Ce("velar",["\u3131","\u3132","\u314B"]),Ce("glottal",["\u314E"])],jung:[[J("\u3163","frontHigh"),J("\u315F","frontHigh","w"),J("\u3162","frontHigh","velar")],[J("\u3161","backHighUnrounded")],[J("\u315C","backHighRounded"),J("\u3160","backHighRounded","j")],[J("\u3154\u3150","frontMid"),J("\u3156\u3152","frontMid","j"),J("\u3159\u315A\u315E","frontMid","w")],[J("\u3153","backMidUnrounded"),J("\u3155","backMidUnrounded","j"),J("\u315D","backMidUnrounded","w")],[J("\u3157","backMidRounded"),J("\u315B","backMidRounded","j")],[J("\u314F","low"),J("\u3151","low","j"),J("\u3158","low","w")]],jong:[Ce("labial",["\u3142","\u3141"]),Ce("alveolar",["\u3137","\u3134","\u3139"]),Ce("velar",["\u3131","\u3147"])]},yl=[...Q],bl=[...te],Sl=oe.filter(e=>e!==""),ge=e=>e===ie?[]:Array.from(e),ie="__NO_CODA__",uo=[1,2,3,4],le=5,wl=12,io="SYL_",Yt=e=>`${io}${e}`,El=e=>Number(e.slice(io.length));function Kt(e){return e>=le?Array.from({length:wl-le+1},(t,n)=>le+n):[e]}const lo={cho:yl,jung:bl,jong:Sl},Ut=e=>e.map(t=>t.map(({jamos:n,phonetic:o,tooltip:r})=>({v:n.join(""),phonetic:o,tooltip:r}))),zt={cho:Ut(Wt.cho),jung:Ut(Wt.jung),jong:Ut(Wt.jong)},so={};zt.jung.flat().forEach(({v:e})=>{for(const t of ge(e))so[t]=e});const Al=new Set(zt.cho.flat().map(e=>e.v));function co(e,t){return e==="cho"?Al.has(t)?t:null:e==="jung"?so[t]??t:Pe(t)}function Co(e,t,n){if(e==="jung"){const o=ge(t);return n&&o.includes(n)?n:o[0]??t}return e==="jong"&&n&&Pe(n)===t?n:t}function go(e,t,n,o){const r=(a,u)=>u?a==="jong"&&u===ie?ie:t==="pron"?co(a,u):Co(a,u,a==="jung"?n:a==="jong"?o:null):null;return{...e,cho:r("cho",e.cho),jung:r("jung",e.jung),jong:r("jong",e.jong)}}const qt={cho:null,jung:null,jong:null,syllable:null},vl="wt_filter",fo=e=>`wt_filter_${e}`,Jt=["noun","verb","modifier"],Qt=["native","sino","foreign","mixed"];function mo(e,t,n,o,r){if(!Array.isArray(e))return[];const a=[];for(const u of e){if(typeof u!="string")continue;const i=t.includes(u)?u:t.find(l=>r.some(c=>o(c,n(l))===u));i&&!a.includes(i)&&a.push(i)}return a}function po(e){try{const t=localStorage.getItem(fo(e))??localStorage.getItem(vl);if(t)return JSON.parse(t)}catch{}return null}function ho(e){const t=e?.phonemeView;return t==="pron"?"pron":t==="direct"?"direct":"char"}function Bl(e){const t=e;return t?.composition?{cho:t.composition.cho??null,jung:t.composition.jung??null,jong:t.composition.jong??null,syllable:t.composition.syllable??null}:t?.choseong?{...qt,cho:t.choseong}:qt}function Dl(e,t,n){const{t:o,i18n:r}=se.useTranslation(),[a]=s.useState(()=>n?.resetOnMount?null:po(e)),[u,i]=s.useState(ho(a)),[l,c]=s.useState(()=>Bl(a)),g=s.useCallback(()=>t.requireSyllable?{cho:"\u3131",jung:"\u314F",jong:ie,syllable:t.fixedSyllable??null}:{cho:null,jung:null,jong:t.fixedNoCoda?ie:null,syllable:t.fixedSyllable??null},[t.requireSyllable,t.fixedSyllable,t.fixedNoCoda]);s.useEffect(()=>{!t.requireSyllable&&t.fixedSyllable==null&&!t.fixedNoCoda||c(b=>b.cho||b.jung||b.syllable!=null||b.jong?b:g())},[]);const d=s.useMemo(()=>z(l.cho)||z(l.jung)||z(l.jong)?"count":"random",[l.cho,l.jung,l.jong]),C=s.useRef(u==="char"?l.jung:null),f=s.useRef(u==="char"?l.jong:null);s.useEffect(()=>{u==="char"&&(C.current=l.jung,f.current=l.jong)},[u,l.jung,l.jong]);const[m,w]=s.useState(n?.resetOnMount?!!n?.defaultImageOnly:a?.excludeNoImage??!0),[h,p]=s.useState(n?.resetOnMount?!1:a?.sameStructureOnly??!0),[y,S]=s.useState(Array.isArray(a?.gradeFilter)?a.gradeFilter:[]),E=Array.from(new Set([r.language,"ko","en"].filter(Boolean))),L=(b,_)=>r.getFixedT(b)(_),v=b=>mo(b,Jt,_=>`wordSearch.filter.pos.${_}`,L,E),T=b=>mo(b,Qt,_=>`wordSearch.filter.type.${_}`,L,E),[D,I]=s.useState(()=>v(a?.posFilter)),[B,$]=s.useState(()=>T(a?.wordTypeFilter)),F=s.useRef(n?.resetKey);s.useEffect(()=>{F.current!==n?.resetKey&&(F.current=n?.resetKey,c(g()),w(!!n?.defaultImageOnly),p(!1),S([]),I([]),$([]))},[n?.resetKey]);const M=Xn(),O=s.useMemo(()=>Object.keys(M.posMap),[M]),k=s.useMemo(()=>Object.keys(M.typeMap),[M]),W=s.useMemo(()=>D.map(b=>O[Jt.indexOf(b)]).filter(Boolean),[D,O]),X=s.useMemo(()=>B.map(b=>k[Qt.indexOf(b)]).filter(Boolean),[B,k]),[U,he]=s.useState({cho:new Set,jung:new Set,jong:new Set,syllable:new Set}),[A,N]=s.useState(!1),[P,G]=s.useState(null),Y=1,ee=Math.max(1,[l.cho,l.jung,l.jong].filter(Boolean).length),[ye,Oe]=s.useState(e);s.useEffect(()=>{if(ye!==e){if(!n?.resetOnMount){const b=po(e);c(b?.composition??g()),w(b?.excludeNoImage??!0),p(b?.sameStructureOnly??!0),i(ho(b)),S(Array.isArray(b?.gradeFilter)?b.gradeFilter:[]),I(v(b?.posFilter)),$(T(b?.wordTypeFilter))}Oe(e)}},[e,ye,n?.resetOnMount]),s.useEffect(()=>{if(!n?.resetOnMount&&ye===e)try{localStorage.setItem(fo(e),JSON.stringify({contrastCount:ee,composition:l,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:D,wordTypeFilter:B}))}catch{}},[n?.resetOnMount,e,ye,ee,l,m,h,u,y,D,B]);const[Ee,rn]=s.useState(0);mn("wordpool:update",()=>rn(b=>b+1));const an=s.useRef(r.language);s.useEffect(()=>{an.current!==r.language&&(an.current=r.language,rn(b=>b+1))},[r.language]),s.useEffect(()=>{if(!t.choseong)return;let b=!1;return Ca({difficulty:d,excludeNoImage:m}).then(_=>{b||(he(_),_.cho.size+_.jung.size+_.jong.size>0&&N(!0))}).catch(()=>{b||he({cho:new Set,jung:new Set,jong:new Set,syllable:new Set})}),()=>{b=!0}},[t.choseong,d,m,Ee]),s.useEffect(()=>{let b=!1;const _=l,R=_.cho?ge(_.cho):null,x=_.jung?ge(_.jung):null,K=_.jong===ie,Ae=K?null:_.jong?ge(_.jong):null,ve=_.syllable!=null?Kt(_.syllable):null,tt=!!(R||x||Ae||K||ve);return da({difficulty:t.difficulty?d:null,contrastCount:t.difficulty?ee:1,composition:t.choseong&&tt?{cho:R,jung:x,jong:Ae,jongNone:K,syllable:ve}:null,excludeNoImage:m,sameStructureOnly:h,phonemeView:u==="pron"?"pron":"char",grade:y.length>0?y:null}).then(nt=>{b||G(nt)}).catch(()=>{b||G(null)}),()=>{b=!0}},[t.choseong,t.difficulty,d,ee,l,u,m,h,Ee,y]),s.useEffect(()=>{A&&c(b=>{const _={...b};let R=!1;return["cho","jung","jong"].forEach(x=>{const K=b[x];!K||K===ie||ge(K).some(Ae=>U[x].has(Ae))||(_[x]=null,R=!0)}),b.syllable!=null&&t.fixedSyllable==null&&(b.syllable>=le?[...U.syllable].some(x=>x>=le)||(_.syllable=null,R=!0):(!U.syllable.has(b.syllable)||b.syllable<Y)&&(_.syllable=null,R=!0)),R?_:b})},[U,A,Y,t.fixedSyllable]);const un=s.useMemo(()=>{const b=_=>{const R=new Set;for(const x of lo[_])U[_].has(x)&&R.add(x);return R};return{cho:b("cho"),jung:b("jung"),jong:b("jong")}},[U]),Et=s.useMemo(()=>({exact:new Set(uo.filter(b=>U.syllable.has(b))),min:[...U.syllable].some(b=>b>=le)}),[U]),j=s.useMemo(()=>({composition:o("wordPairs.composition","\uC815\uB2F5 \uB2E8\uC5B4 \uAD6C\uC131"),syllableCount:o("wordPairs.syllableCount","\uC74C\uC808 \uC218"),onset:o("wordPairs.onset","\uCD08\uC131"),vowel:o("wordPairs.vowel","\uBAA8\uC74C"),coda:o("wordPairs.coda","\uC885\uC131"),phonemeGroup:o("training.filter.phonemeGroup",{defaultValue:"\uD6C8\uB828 \uC74C\uC808"}),trainOnset:o("training.filter.trainOnset",{defaultValue:"\uCD08\uC131"}),trainVowel:o("training.filter.trainVowel",{defaultValue:"\uBAA8\uC74C"}),trainCoda:o("training.filter.trainCoda",{defaultValue:"\uC885\uC131"}),random:o("training.filter.random","\uBB34\uC791\uC704"),exclude:o("wordSearch.filter.exclude","\uC81C\uC678"),selectLabel:o("training.filter.selectSection",{defaultValue:"\uC120\uD0DD"}),none:o("common.none","\uC5C6\uC74C"),noImage:o("wordSearch.filter.excludeNoImage","\uC774\uBBF8\uC9C0 \uC5C6\uC74C"),excludeImage:o("training.filter.excludeImage",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC"}),sameStructure:o("training.filter.sameStructure",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"}),noLimit:o("training.filter.noLimit",{defaultValue:"\uBB34\uAD00"}),codaExclude:o("training.filter.codaExclude",{defaultValue:"\uC81C\uC678"}),gradeLabel:o("training.filter.gradeLabel",{defaultValue:"\uB09C\uC774\uB3C4 \uB4F1\uAE09"})}),[o]),ln=s.useMemo(()=>({[j.trainOnset]:"cho",[j.trainVowel]:"jung",[j.trainCoda]:"jong"}),[j]),et=s.useCallback((b,_)=>({title:_,items:b}),[]),At=s.useMemo(()=>[o("training.filter.excludeImageInfo",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC: \uB2E8\uC5B4 \uC911\uC5D0 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uB2E8\uC5B4\uB9CC \uACB0\uACFC\uC5D0 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4."}),o("training.filter.sameStructureInfo",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC: \uC815\uB2F5\uACFC \uC624\uB2F5\uC758 \uC74C\uC808 \uAD6C\uC870(\uAE00\uC790 \uC218\xB7\uBC1B\uCE68 \uC720\uBB34 \uB4F1)\uAC00 \uAC19\uC740 \uACB0\uACFC\uB9CC \uB0A8\uACA8\uC694."})],[o]),Bo=s.useMemo(()=>{const b=[];if(t.choseong){const _={value:ie,displayLabel:j.codaExclude},R=t.fixedNoCoda===!0,x=(K,Ae)=>{const ve=R&&K==="jong",tt={label:Ae,groupLabel:j.phonemeGroup,allOption:!t.requireSyllable,allLabel:j.noLimit,allOptionDisabled:ve};if(u==="pron"){const Be=zt[K].map(Ro=>Ro.map(({v:vt,phonetic:Po})=>{const Bt=ge(vt),sn=ro(o,Po),cn=ve||!Bt.some(Mo=>U[K].has(Mo));return Bt.length>1?{value:vt,labels:Bt,tooltip:sn,disabled:cn}:{value:vt,tooltip:sn,disabled:cn}}));return K==="jong"&&!t.requireCoda&&Be.unshift([_]),{...tt,groups:Be}}const nt=lo[K].map(Be=>!ve&&un[K].has(Be)?Be:{value:Be,disabled:!0});return{...tt,items:K==="jong"&&!t.requireCoda?[_,...nt]:nt}};b.push(x("cho",j.trainOnset)),b.push(x("jung",j.trainVowel)),b.push(x("jong",j.trainCoda))}if(b.push({...eo(o,M,{labelInfo:et([o("wordPairs.filter.difficultyInfo",{defaultValue:"\uAD6D\uB9BD\uAD6D\uC5B4\uC6D0\uC758 \uAE30\uCD08 \uC5B4\uD718 \uB4F1\uAE09\uC774 \uACB0\uACFC\uC5D0 \uBC18\uC601\uB429\uB2C8\uB2E4."})])}),label:j.gradeLabel}),t.partOfSpeech&&b.push(to(M)),t.wordType&&b.push(no(M)),t.choseong||t.fixedSyllable!=null){const _=t.fixedSyllable;b.push({label:j.syllableCount,items:[...uo.map(R=>({value:Yt(R),displayLabel:o("wordPairs.syllableN",{n:R,defaultValue:"{{n}}\uC74C\uC808"}),disabled:_!=null?R!==_:!Et.exact.has(R)||R<Y})),{value:Yt(le),displayLabel:o("wordPairs.syllableNPlus",{n:le,defaultValue:"{{n}}\uC74C\uC808 \uC774\uC0C1"}),disabled:_!=null?le!==_:!Et.min}],allOption:!0,allOptionDisabled:_!=null})}return t.choseong?b.push({label:j.exclude,displayLabel:j.selectLabel,multiple:!0,items:[j.excludeImage,j.sameStructure],labelInfo:et(At)}):b.push({label:j.exclude,displayLabel:j.selectLabel,multiple:!0,items:[j.excludeImage],labelInfo:et([At[0]])}),b},[t.choseong,t.partOfSpeech,t.wordType,t.requireSyllable,t.fixedSyllable,t.fixedNoCoda,t.requireCoda,Y,un,U,u,Et,j,o,et,At,M]),Do={...(t.choseong||t.fixedSyllable!=null)&&l.syllable!=null?{[j.syllableCount]:Yt(l.syllable)}:{},...t.choseong&&l.cho?{[j.trainOnset]:l.cho}:{},...t.choseong&&l.jung?{[j.trainVowel]:l.jung}:{},...t.choseong&&l.jong?{[j.trainCoda]:l.jong}:{},[j.exclude]:[...m?[j.excludeImage]:[],...h?[j.sameStructure]:[]],[j.gradeLabel]:y.map(b=>o("wordSearch.filter.grade",{n:Number(b),defaultValue:"{{n}}\uB4F1\uAE09"})),...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},To=s.useCallback((b,_)=>{if(_===j.exclude)b===j.excludeImage?w(R=>!R):b===j.sameStructure&&p(R=>!R);else if(_===j.syllableCount)c(R=>{if(!b||b===ue)return{...R,syllable:null};const x=El(b);return{...R,syllable:R.syllable===x?null:x}});else if(_===j.gradeLabel){if(!b||b===ue){S([]);return}const R=b.replace(/\D/g,"");S(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(_===M.partOfSpeech){if(!b||b===ue){I([]);return}const R=Jt[O.indexOf(b)]??v([b])[0];if(!R)return;I(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(_===M.wordType){if(!b||b===ue){$([]);return}const R=Qt[k.indexOf(b)]??T([b])[0];if(!R)return;$(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else{const R=ln[_];if(!R)return;c(x=>t.requireSyllable?b&&b!==ue?{...x,[R]:b}:x:!b||b===ue||x[R]===b?{...x,[R]:null}:{...x,[R]:b})}},[j,ln,M,O,k,t.requireSyllable]),No=s.useCallback(b=>!t.partOfSpeech&&!t.wordType?!0:gl(b,{...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},M),[t.partOfSpeech,t.wordType,W,X,M]),_o=s.useCallback(b=>{b!==u&&(b!=="direct"&&u!=="direct"&&c(_=>go(_,b,C.current,f.current)),i(b))},[u]),Oo=s.useCallback(()=>({composition:l,contrastCount:ee,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:D,wordTypeFilter:B}),[l,ee,m,h,u,y,D,B]),Lo=s.useCallback(b=>{c(b.composition),w(b.excludeNoImage),p(b.sameStructureOnly??!0),i(b.phonemeView),S(Array.isArray(b.gradeFilter)?b.gradeFilter:[]),Array.isArray(b.posFilter)&&I(v(b.posFilter)),Array.isArray(b.wordTypeFilter)&&$(T(b.wordTypeFilter))},[]);return{difficulty:d,contrastCount:ee,composition:l,choseong:l.cho,excludeNoImage:m,sameStructureOnly:h,gradeFilter:y,posFilter:W,wordTypeFilter:X,matchesWordAttributes:No,poolVersion:Ee,filterSections:Bo,filterSelected:Do,handleFilterSelect:To,phonemeView:u,setPhonemeView:_o,phonemeGroupLabel:j.phonemeGroup,wordCount:P,getFilterSnapshot:Oo,restoreFilterSnapshot:Lo}}function Tl(e){const t=i=>i?ge(i):null,n=t(e.cho),o=t(e.jung),r=e.jong===ie,a=r?null:t(e.jong),u=e.syllable!=null?Kt(e.syllable):null;return!n&&!o&&!a&&!r&&!u?null:{cho:n,jung:o,jong:a,jongNone:r,syllable:u}}function Nl(e,t,n,o,r,a,u=!0,i="char",l=[]){const[c,g]=s.useState({}),[d,C]=s.useState(!1),{cho:f=null,jung:m=null,jong:w=null,syllable:h=null}=o??{},p=l.length>0?l.slice().sort().join(","):"",y=e.map(E=>E.key).join("|");s.useEffect(()=>{a>0&&ca(r).catch(()=>{})},[a,r]),s.useEffect(()=>{let E=!1;return C(!0),(async()=>{const L=Tl({cho:f,jung:m,jong:w,syllable:h}),v=`${f??""}_${m??""}_${w??""}_${h??""}_${p}`,T={};await Promise.all(e.map(async D=>{const I=_t[D.key];try{const B=await qn(D.key,{difficulty:I.difficulty?t:null,contrastCount:I.difficulty?n:1,composition:I.choseong?L:null,count:5,excludeNoImage:r,sameStructureOnly:u,phonemeView:i,grade:l.length>0?l:null});B&&B.length>0?T[D.key]={id:`wt-${D.key}-${t}-${v}-${Date.now()}`,name:D.label,training_type:D.key,category_main_code:"WORD",iconColor:D.color,subTitle:D.subTitle,items:B,itemCount:B.length}:T[D.key]={id:`wt-${D.key}-empty`,name:D.label,training_type:D.key,category_main_code:"WORD",iconColor:D.color,subTitle:D.subTitle,items:[],itemCount:0,__empty:!0}}catch{T[D.key]=null}})),E||(g(T),C(!1))})(),()=>{E=!0}},[t,n,f,m,w,h,r,u,i,a,p,y]);const S=JSON.stringify(e.map(E=>[E.key,E.label,E.color,E.subTitle]));return{perTypeData:s.useMemo(()=>{const E={};for(const[L,v]of Object.entries(c)){const T=e.find(D=>D.key===L);E[L]=v&&T?{...v,name:T.label,iconColor:T.color,subTitle:T.subTitle}:v}return E},[c,S]),generating:d}}const Ke=[],Ue=[],ze=[],qe=[],mt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},pt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},_l={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};let Zt=null,yo=null,pe=null;function Ol({counts:e,forceRefresh:t}={}){const n=Object.assign({},_l,e||{}),o=Le(),r=Re(new Date(`${o}T00:00:00+09:00`).getTime()-864e5),a=JSON.stringify(n);if(!t&&yo===o&&Zt===a&&pe)return Object.assign(mt,pe.today),Object.assign(pt,pe.yesterday?.selection||{LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),{today:mt,yesterday:pt};const u={LISTEN_IN_NOISE:ce(Ke,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(Ue,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(ze,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(qe,Math.max(0,Number(n.ORDERING_SENTENCE)||0))};let i=null;return pe&&Zt===a&&pe.yesterday&&pe.yesterday.date===r&&(i=pe.yesterday.selection),i||(i={LISTEN_IN_NOISE:ce(Ke,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(Ue,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(ze,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(qe,Math.max(0,Number(n.ORDERING_SENTENCE)||0))}),Object.assign(mt,u),Object.assign(pt,i),yo=o,Zt=a,pe={today:u,yesterday:{date:r,countsKey:a,selection:i}},{today:mt,yesterday:pt}}let Xt=!1,Je=null;async function Ll(){try{const e={url:typeof document>"u"?require("url").pathToFileURL(__filename).href:Dt&&Dt.tagName.toUpperCase()==="SCRIPT"&&Dt.src||new URL("hooks.cjs.js",document.baseURI).href}&&void 0||"/",t=await fetch(`${e}data/allTrainingData.json`);return t.ok?await t.json():null}catch{return null}}async function Rl(){if(!Xt)return Je||(Je=(async()=>{const e=await Ll();if(!e){Je=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}const t={noise:[],short:[],long:[],order:[]};try{for(const n of Object.keys(e||{})){const o=e[n]||[];for(const r of o){if(!r||typeof r!="object")continue;const a=r,u=String(a.training_type||n),i=String(a.category_main_code||a.category_main||a.category_0||""),l=String(a.category_sub_code||a.category_sub||a.category_1||""),c=Object.assign({},a,{training_type:u,category_0:i,category_1:l});u==="LISTEN_IN_NOISE"?t.noise.push(c):u==="SHORT_STORY"?t.short.push(c):u==="LONG_STORY"?t.long.push(c):u==="ORDERING_SENTENCE"&&t.order.push(c)}}}catch{Je=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}Ke.push(...t.noise),Ue.push(...t.short),ze.push(...t.long),qe.push(...t.order),Xt=!0;try{Ol()}catch{}try{window.dispatchEvent(new Event("speechear.data.updated"))}catch{}})(),Je)}async function Pl(e=3e3){const t=Rl();let n;try{await Promise.race([t,new Promise(o=>{n=setTimeout(o,e)})])}finally{n!==void 0&&clearTimeout(n)}return Xt}function bo(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function Ml(e){let t=e>>>0;return()=>{t|=0,t=t+1831565813|0;let n=Math.imul(t^t>>>15,1|t);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}const Il=ce,kl=e=>{const[t,n,o]=e.split("-").map(Number);return Math.round(Date.UTC(t,(n||1)-1,o||1)/864e5)},xl=(e,t)=>{const n=e??{};return String(n.id??n.name??t)};function ht(e,t,n,o,r){if(!e.length||t<=0)return[];const a=Ml(bo(`${n}|${o}|${r}`)),u=kl(o)&1,i=e.filter((c,g)=>(bo(`${n}|${r}|${xl(c,g)}`)>>>7&1)===u),l=i.length>=t&&e.length-i.length>=t;return Il(l?i:e,t,a)}function en(e,t,n){const o=r=>Math.max(0,e[r]||0);return{LISTEN_IN_NOISE:ht(Ke,o("LISTEN_IN_NOISE"),t,n,"LISTEN_IN_NOISE"),SHORT_STORY:ht(Ue,o("SHORT_STORY"),t,n,"SHORT_STORY"),LONG_STORY:ht(ze,o("LONG_STORY"),t,n,"LONG_STORY"),ORDERING_SENTENCE:ht(qe,o("ORDERING_SENTENCE"),t,n,"ORDERING_SENTENCE")}}function tn(e){return e?!!(e.LISTEN_IN_NOISE?.length||e.SHORT_STORY?.length||e.LONG_STORY?.length||e.ORDERING_SENTENCE?.length):!1}const jl={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};function nn(e=!1,t=jl,n){const o=Re(Date.now()),r=Re(Date.now()-864e5),a=n??"";return Ke.length>0||Ue.length>0||ze.length>0||qe.length>0?{today:en(t,a,o),yesterday:en(t,a,r)}:{today:en(t,a,o),yesterday:null}}function Fl(e){const t=s.useRef({LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),n=s.useRef(null),[o,r]=s.useState(!1),[a,u]=s.useState(!1),[i,l]=s.useState(0),[c,g]=s.useState(!1),[d,C]=s.useState(()=>Le());s.useEffect(()=>{const m=()=>{const h=Date.now(),p=new Date(h+9*36e5),y=Date.UTC(p.getUTCFullYear(),p.getUTCMonth(),p.getUTCDate()+1)-9*36e5;return Math.max(1e3,y-h+1e3)};let w=setTimeout(function h(){C(Le()),w=setTimeout(h,m())},m());return()=>clearTimeout(w)},[]),s.useEffect(()=>{let m=!1,w=!1,h=!1,p,y=0,S=null,E=0;const L=40,v=()=>{p!==void 0&&(clearInterval(p),p=void 0)};let T=!1;try{const F=new URLSearchParams(window.location.search),M=F.get("forceRefresh")||F.get("force");T=M==="1"||M==="true"}catch{}const D=F=>{w||(h=!0,t.current=F.today,n.current=F.yesterday,r(!0),g(!0),l(M=>M+1),m=!0,v())},I=async()=>{if(m)return;if(!T){const M=nn(!1,void 0,e);if(tn(M.today)){D(M);return}}if(S){++y>=L&&B();return}if(y>=E){E=y+8,S=Pl(3e3).catch(()=>!1);try{await S}finally{S=null}if(m)return}const F=nn(T,void 0,e);if(tn(F.today)){D(F);return}++y>=L&&B()};function B(){r(!0),g(!1),m=!0,v()}const $=()=>{if(w||h)return;const F=nn(T,void 0,e);tn(F.today)&&D(F)};try{window.addEventListener("speechear.data.updated",$)}catch{}return I(),p=setInterval(I,250),()=>{m=!0,w=!0,v();try{window.removeEventListener("speechear.data.updated",$)}catch{}}},[e,d]);const f=s.useCallback(m=>{const w=a?n.current:t.current,h=a?t.current:n.current;return w?.[m]?.length?w[m]:h?.[m]?.length?h[m]:void 0},[a,i]);return{loaded:o,hasData:c,showYesterday:a,setShowYesterday:u,getTrainingPerType:f}}const _e=[];let yt=!1;function So(e){if(e.key!=="Escape"||e.defaultPrevented||e.isComposing||e.keyCode===229)return;const t=_e[_e.length-1];t&&(e.stopPropagation(),t())}function wo(e){return _e.push(e),!yt&&typeof document<"u"&&(document.addEventListener("keydown",So),yt=!0),()=>{const t=_e.lastIndexOf(e);t>=0&&_e.splice(t,1),_e.length===0&&yt&&typeof document<"u"&&(document.removeEventListener("keydown",So),yt=!1)}}function $l(e,t=!0){const n=fn(e);s.useEffect(()=>{if(t)return wo(()=>{n.current?.()})},[t,n])}const on=(e,t)=>`${e}:${t??1}`,bt=new Map,Eo=new Set,Ao=new Map,Hl=6e4;function Gl(e,t){const[n,o]=s.useState(0),r=Array.from(new Set(e.map(a=>on(a.word,a.homonum)))).sort().join("|");return s.useEffect(()=>{const a=r?r.split("|"):[],u=Date.now(),i=a.filter(g=>!bt.has(g)&&!Eo.has(g)&&!(u-(Ao.get(g)??-1/0)<Hl));if(i.length===0)return;let l=!1;const c=Array.from(new Set(i.map(g=>g.slice(0,g.lastIndexOf(":")))));return t(c).then(g=>{for(const d of g)d.Meaning&&bt.set(on(d.Word,d.Homonum??void 0),d.Meaning);if(g.length>0)for(const d of i)bt.has(d)||Eo.add(d);else{const d=Date.now();for(const C of i)Ao.set(C,d)}l||g.length===0||o(d=>d+1)}).catch(()=>{}),()=>{l=!0}},[r,t]),s.useMemo(()=>{const a=r?r.split("|"):[],u=new Map;for(const i of a){const l=bt.get(i);l!=null&&u.set(i,l)}return u},[r,n])}function Vl(){const[e,t]=s.useState(null),n=s.useCallback(a=>t(a.getBoundingClientRect()),[]),o=s.useCallback(()=>t(null),[]),r=s.useCallback(a=>{const u=a.getBoundingClientRect();t(i=>i?null:u)},[]);return{anchorRect:e,isOpen:e!=null,openAt:n,close:o,toggleAt:r}}function Wl(e){const[t,n]=s.useState(null),[o,r]=s.useState(null),a=s.useRef(null);s.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]);const u=s.useCallback((l,c)=>{a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{n(l),r(c)},e)},[e]),i=s.useCallback(()=>{a.current&&clearTimeout(a.current),n(null),r(null)},[]);return{payload:t,anchorRect:o,openAfterDelay:u,close:i}}function Yl(e,t,n){const o=Number.isFinite(t)&&t>=1?Math.floor(t):1,r=Math.max(1,Math.ceil(e.length/o)),a=Number.isFinite(n)?Math.min(Math.max(1,Math.floor(n)),r):1;return{pageItems:s.useMemo(()=>e.slice((a-1)*o,a*o),[e,a,o]),totalPages:r,curPage:a}}function vo(e,t){const[n,o]=s.useState(e);n!==e&&(o(e),t(1))}function Kl(e={}){const{defaultPageSize:t="25",resetOn:n}=e,[o,r]=s.useState(""),[a,u]=s.useState(t),[i,l]=s.useState(1),c=Number(t)||25,g=Number(a)||c;return vo([o,a,...n??[]].map(String).join("|"),l),{query:o,setQuery:r,pageSize:a,setPageSize:u,perPage:g,page:i,setPage:l}}function Ul(e="warning"){const[t,n]=s.useState(""),[o,r]=s.useState(e),[a,u]=s.useState(0),i=s.useCallback((d,C)=>{r(C),n(d),u(f=>f+1)},[]),l=s.useCallback(d=>i(d,"warning"),[i]),c=s.useCallback(d=>i(d,"normal"),[i]),g=s.useCallback(()=>n(""),[]);return{toastMessage:t,toastType:o,toastKey:a,showToast:i,showWarning:l,showNormal:c,clearToast:g}}const zl=[{key:"LISTEN_IN_NOISE",label:"\uC18C\uC74C \uD558 \uBB38\uC7A5 \uB4E3\uAE30",icon:"party-popper",desc:"\uB2E4\uC591\uD55C \uC18C\uC74C \uD658\uACBD\uC5D0\uC11C \uBB38\uC7A5 \uCCAD\uB825\uC744 \uD6C8\uB828\uD569\uB2C8\uB2E4."},{key:"SHORT_STORY",label:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square",desc:"\uC9E7\uC740 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"LONG_STORY",label:"\uAE34 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square-text",desc:"\uAE34 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uB2E4\uC218\uC758 \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"ORDERING_SENTENCE",label:"\uBB38\uC7A5 \uC21C\uC11C\uD654 \uD558\uAE30",icon:"align-start-vertical",desc:"\uC5EC\uB7EC\uAC1C\uC758 \uC9E7\uC740 \uBB38\uC7A5\uC744 \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uADF8 \uC21C\uC11C\uC5D0 \uB9DE\uAC8C \uBC30\uC5F4\uD569\uB2C8\uB2E4."}],ql={LISTEN_IN_NOISE:"listenInNoise",SHORT_STORY:"shortStory",LONG_STORY:"longStory",ORDERING_SENTENCE:"orderingSentence"};function Jl(e){return zl.map(t=>{const n=ql[t.key];return n?{...t,label:e(`trainingType.${n}.title`),desc:e(`trainingType.${n}.desc`)}:t})}const Qe={blue:"#60A5FA",green:"#4ADE80",amber:"#FBBF24",purple:"#A78BFA",pink:"#F472B6"},Ze=Qe.blue,St=Qe.green,Xe=Qe.amber,wt=Qe.purple,Ql=Qe.pink,Zl=[{key:"discrimination",label:"\uBCC0\uBCC4\uD6C8\uB828",disc:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0, \uB610\uB294 \uD2B9\uC815 \uC18C\uB9AC\uB97C \uAD6C\uBCC4\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"ear",types:[{key:"SAME_SOUND_PICK",label:"\uAC19\uC740 \uC18C\uB9AC \uACE0\uB974\uAE30",icon:"volume-2",color:Ze,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC640 \uAC19\uC740 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"SAME_OR_DIFF",label:"\uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0 \uB9DE\uD788\uAE30",icon:"diff",color:Ze,subTitle:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0, \uB2E4\uB978\uC9C0 \uAD6C\uBD84\uD558\uC138\uC694."},{key:"HEAR_AND_PICK_SAME",label:"\uC77C\uCE58\uD558\uB294 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"headphones",color:Ze,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC758 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"HEAR_AND_PICK_INCLUDED",label:"\uD55C \uC74C\uC808 \uD3EC\uD568 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"scan-search",color:Ze,subTitle:"\uB4E4\uC740 \uC74C\uC808\uC774 \uD3EC\uD568\uB41C \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"STARTS_WITH_SAME_SOUND",label:"\uCCAB \uC74C\uC808\uC774 \uAC19\uC740 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"play-circle",color:Ze,subTitle:"\uB4E4\uC740 \uB2E8\uC5B4\uC640 \uAC19\uC740 \uC18C\uB9AC\uB85C \uC2DC\uC791\uD558\uB294 \uB2E8\uC5B4\uB97C \uACE0\uB974\uC138\uC694."}]},{key:"synthesis",label:"\uD569\uC131\uD6C8\uB828",disc:"\uB450 \uAC1C \uC774\uC0C1\uC758 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uD569\uCCD0 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"git-merge",types:[{key:"MERGE_2_SYLLABLES",label:"\uC74C\uC808 2\uAC1C \uD569\uCE58\uAE30",icon:"link-2",color:St,subTitle:"\uB450 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_SYLLABLES",label:"\uC74C\uC808 3\uAC1C \uD569\uCE58\uAE30",icon:"git-merge",color:St,subTitle:"\uC138 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_2_PHONEMES",label:"\uC74C\uC18C 2\uAC1C \uD569\uCE58\uAE30",icon:"combine",color:St,subTitle:"\uB450 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_PHONEMES",label:"\uC74C\uC18C 3\uAC1C \uD569\uCE58\uAE30",icon:"braces",color:St,subTitle:"\uC138 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"}]},{key:"deletion",label:"\uD0C8\uB77D\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC5D0\uC11C \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uC81C\uAC70\uD588\uC744 \uB54C \uB0A8\uB294 \uC18C\uB9AC\uB97C \uC778\uC2DD\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"scissors",types:[{key:"DROP_1_FROM_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"scissors",color:Xe,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_1_FROM_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"minus-circle",color:Xe,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_PART_FROM_COMPOUND",label:"\uD569\uC131\uC5B4\uC5D0\uC11C \uBD80\uBD84\uD0C8\uB77D",icon:"unlink",color:Xe,subTitle:"\uD569\uC131\uC5B4\uC758 \uC77C\uBD80\uB97C \uBE7C\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_FINAL_CONSONANT_FROM_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uBC1B\uCE68 \uD0C8\uB77D",icon:"eraser",color:Xe,subTitle:"\uBC1B\uCE68\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"REMOVE_CONSONANT_AND_IDENTIFY_PHONEME",label:"1\uC74C\uC808\uC5D0\uC11C \uC790\uC74C \uD0C8\uB77D",icon:"audio-lines",color:Xe,subTitle:"\uC790\uC74C\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB0A8\uC744\uAE4C\uC694?"}]},{key:"substitution",label:"\uB300\uCE58\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC758 \uC77C\uBD80 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uBC14\uAFB8\uC5B4 \uC0C8\uB85C\uC6B4 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"replace",types:[{key:"CHANGE_1_SYLL_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"replace",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_SYLL_IN_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"shuffle",color:wt,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"arrow-right-left",color:wt,subTitle:"1\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"flip-horizontal",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."}]},{key:"attention",label:"\uCCAD\uAC01\uC801\uC8FC\uC758\uB825\uD6C8\uB828",disc:"\uC5EC\uB7EC \uC18C\uB9AC\uB97C \uB4E3\uACE0 \uC21C\uC11C\uB97C \uAE30\uC5B5\uD558\uB294 \uC8FC\uC758\uB825\uACFC \uB2E8\uAE30 \uAE30\uC5B5 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"list-ordered",types:[{key:"LISTEN_AND_REMEMBER_ORDER",label:"\uB4E3\uACE0 \uC21C\uC11C\uB300\uB85C \uAE30\uC5B5\uD558\uAE30",icon:"list-ordered",color:Ql,subTitle:"\uC138 \uB2E8\uC5B4\uB97C \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694."}]}];function Xl(){const{t:e}=se.useTranslation();return s.useMemo(()=>{const t=Object.fromEntries(Jl(e).map(o=>[o.key,o.label])),n={...t};return Zl.flatMap(o=>o.types).forEach(o=>{n[o.key]=e(`trainingType.${o.key}.label`,{defaultValue:o.label})}),{sentence:t,all:n}},[e])}function es({computeStyle:e,onScroll:t="close",onResize:n="close",ignoreOutsideClickSelector:o}){const[r,a]=s.useState(!1),[u,i]=s.useState({}),l=s.useRef(null),c=s.useRef(null),g=s.useCallback(()=>{l.current&&i(e(l.current.getBoundingClientRect(),l.current))},[e]);s.useEffect(()=>{if(!r)return;g();let f=c.current?.offsetHeight??0;f>0&&g();let m=0,w=null;typeof ResizeObserver<"u"&&c.current&&(w=new ResizeObserver(()=>{const L=c.current?.offsetHeight??0;if(L!==f){if(f=L,++m>4){w?.disconnect(),w=null;return}g()}}),w.observe(c.current));const h=L=>{const v=L.target;o&&v.closest?.(o)||l.current?.contains(v)||c.current?.contains(v)||a(!1)};document.addEventListener("mousedown",h),document.addEventListener("pointerdown",h);const p=L=>{c.current?.contains(L.target)||(t==="reposition"?g():t==="close"&&a(!1))};t!=="ignore"&&window.addEventListener("scroll",p,!0);const y=()=>{n==="reposition"?g():n==="close"&&a(!1)};let S=null;const E=()=>{y(),S&&clearTimeout(S),S=setTimeout(()=>{S=null,n==="reposition"&&g()},250)};return n!=="ignore"&&(window.addEventListener("resize",y),window.addEventListener("orientationchange",E)),()=>{w?.disconnect(),document.removeEventListener("mousedown",h),document.removeEventListener("pointerdown",h),t!=="ignore"&&window.removeEventListener("scroll",p,!0),n!=="ignore"&&(window.removeEventListener("resize",y),window.removeEventListener("orientationchange",E)),S&&clearTimeout(S)}},[r,g,t,n,o]),s.useEffect(()=>{if(r)return wo(()=>a(!1))},[r]);const d=s.useCallback(()=>a(f=>!f),[]),C=s.useCallback(()=>a(!1),[]);return{open:r,setOpen:a,toggle:d,close:C,style:u,triggerRef:l,menuRef:c}}function ts(e,{mode:t="playback",autoStart:n=!1,onPlaySpeaker:o,onComplete:r,playMs:a=1100,feedbackMs:u=1500}={}){const[i,l]=s.useState([]),[c,g]=s.useState(0),[d,C]=s.useState("idle"),[f,m]=s.useState(null),[w,h]=s.useState([]),[p,y]=s.useState(null),[S,E]=s.useState(0),L=s.useRef(0),v=s.useCallback(P=>{L.current=typeof P=="function"?P(L.current):P,E(L.current)},[]),T=s.useRef(o),D=s.useRef(r);s.useEffect(()=>{T.current=o,D.current=r},[o,r]);const I=s.useRef([]),B=()=>{I.current.forEach(clearTimeout),I.current=[]},$=(P,G)=>{I.current.push(setTimeout(G,P))};s.useEffect(()=>()=>B(),[]);const F=i[c]?.id??null,M=s.useRef(null),O=s.useCallback(()=>{B(),C("playing"),h([]),y(null),v(0);let P=0;e.forEach((G,Y)=>{$(P,()=>{g(Y),m(G.id),T.current?.(G)}),$(P+1e3,()=>{m(null),h(ee=>[...ee,G.id])}),P+=1300}),$(P,()=>{C("done"),D.current?.({score:0,total:e.length})})},[e,v]),k=s.useCallback((P,G)=>{if(G>=P.length){C("done"),D.current?.({score:L.current,total:P.length});return}M.current=null,g(G),y(null),C("playing"),m(P[G].id),T.current?.(P[G]),$(a,()=>{m(null),C("waiting")})},[a]),W=s.useCallback(()=>{B();const P=H(e);l(P),v(0),h([]),k(P,0)},[e,k,v]),X=s.useCallback(()=>{t==="playback"?(l(e),O()):W()},[t,e,O,W]),U=s.useCallback(()=>{B(),C("idle"),m(null),h([]),y(null),g(0),v(0),l([])},[v]),he=e.map(P=>P.id).join("|");s.useEffect(()=>(n?X():U(),()=>B()),[t,he,n]);const A=s.useCallback(P=>{d!=="waiting"||t==="playback"||M.current===c||(M.current=c,y(P),P===i[c]?.id&&v(G=>G+1),t==="exam"?(C("playing"),$(400,()=>k(i,c+1))):(C("feedback"),$(u,()=>k(i,c+1))))},[d,t,i,c,k,u,v]),N=t==="playback"?e.length:i.length;return{bind:{activeSpeakerId:f,playedIds:w,selectedId:p,answerId:F,showFeedback:d==="feedback",clickable:d==="waiting",onSelectSpeaker:A},index:c,total:N,score:S,phase:d,done:d==="done",start:X,reset:U}}exports.CACHE_GROUPS=Nn,exports.CORE_VERSION=Yi,exports.DocumentTitleSuppressContext=hn,exports.EMPTY_COMPOSITION=qt,exports.MediaQueryOverrideContext=Cn,exports.NO_CODA=ie,exports.SYLLABLE_MIN=le,exports.VAP_PAGE_SIZE_OPTIONS=rt,exports.buildGradeSection=eo,exports.buildPartOfSpeechSection=to,exports.buildPositionSection=il,exports.buildSelectSection=ul,exports.buildSyllableSection=al,exports.buildWordTypeSection=no,exports.charToPronValue=co,exports.convertComposition=go,exports.fmtBytes=dr,exports.lsBytes=_n,exports.meaningKey=on,exports.normalizeWordAttributeFilter=ol,exports.pronToCharValue=Co,exports.syllableToFilter=Kt,exports.toWordAttributeFilterCodes=Gt,exports.today=Fe,exports.toggleAttributeFilter=ll,exports.useAnchoredMenu=es,exports.useCacheManagement=Cr,exports.useDailyTrainingSelection=Fl,exports.useDelayedHoverAnchor=Wl,exports.useDeviceManagement=Dr,exports.useDocumentTitle=Go,exports.useEscToClose=$l,exports.useFontScale=ko,exports.useHoverAnchor=Vl,exports.useListControls=Kl,exports.useMediaQuery=Ho,exports.usePageResetOnChange=vo,exports.usePagedList=Yl,exports.usePasswordChange=qo,exports.useRelativeDay=Ko,exports.useSoundCompassExam=ts,exports.useTablePaging=vr,exports.useTableSort=Br,exports.useToastState=Ul,exports.useTrainingTypeLabels=Xl,exports.useVisitAllPanel=yr,exports.useVisitHistory=mr,exports.useVisitSchedule=hr,exports.useWindowEvent=mn,exports.useWordAttributeFilterKeys=Xn,exports.useWordDataStats=gr,exports.useWordMeanings=Gl,exports.useWordTrainingDataGeneration=Nl,exports.useWordTrainingFilter=Dl,exports.valueToJamos=ge,exports.wordAttributeFilterFromCodes=Vt;
5
+ and aids recovery.`,site:{title:"Site",malgwi:"Malgwi",soundDirection:"Sound Direction System",vrSoundDirection:"VR Sound Direction System",hearingTest:"Hearing Test Pro"},sns:{title:"SNS",naverBlog:"Naver Blog",kakao:"KAKAO Talk Open Chat"},policy:{title:"Policy",terms:"Terms of Service",privacy:"Privacy Policy"},ceo:"CEO",address:"Address",support:"Support",ceoName:"Ji-hye Han",addressValue:"302, 3F, Haechan Bldg, 32 Siocheong-gil, Chuncheon, Gangwon, Korea"},di={trainingPhone:{topic:"Gardening",prev:"Prev",next:"Next",speed:"Speed 3",noiseType:"Crowd noise",settings:"Settings",start:{caption:"Press the play (\u25B6) button below and listen carefully. After listening, check the sentence."},feedback:{caption:"Plant the well-grown seedlings in the garden bed and cover them carefully with plastic film."},done:{heardWell:"Heard clearly",listenAgain:"Listen again"}}},Ci={timeHM:"{{hh}}:{{mm}}",timeH:"{{hh}}:{{mm}}"},gi={options:"Training Options",difficulty:"Difficulty",exclude:"Exclude",chosung:"Initial Consonant",excludeOptions:{none:"None",noImage:"No Image"}},fi={answer:"Answer",distractor:"Distractor"},mi={phaseWordDownload:"Download Word Data",phaseImageCheck:"Check Images",phasePairAnalysis:"Analyze Word Pairs",downloadingCount:"Downloading {{n}} words",checkingPage:"Checking page {{page}} list",imageCount:"{{done}} / {{total}} items"},pi={clearAriaLabel:"Clear input"},hi={ariaLabel:"Select tab"},yi={ariaLabel:"Tabs"},bi={dragPrompt:"Drag and drop files here",browseButton:"Choose Files",removeAriaLabel:"Remove {{name}}"},Si={ariaLabel:"User avatar"},wi={relativeDay:{today:"Today",yesterday:"Yesterday",daysAgo:"{{n}}d ago"},reason:{notLoggedIn:"Login required."},list:{title:"Received Homework"},status:{expired:"Expired",done:"Done {{count}}\xD7 \xB7 {{date}}",notDone:"Not done"}},Ei={weekly:{title:"Weekly Training",daily:"Daily Listening",crossword:"Crossword"},homework:{title:"Homework Progress",totalRate:"Overall rate",count:"Total",done:"Done",remaining:"Remaining"},today:{tooltipTotal:"Total",tooltipDone:"Done"},filter:{countSuffix:" sessions"},time:{countLabel:"{{n}} sessions",empty:"No training records"},daily:{title:"Today's Listening Record",empty:"No completed sessions"},crossword:{title:"Crossword Quiz",empty:"No completed levels"},visit:{title:"Linked Visit Records"},detail:"Details",trainingType:{LISTEN_IN_NOISE:"Sentence in Noise",SHORT_STORY:"Short Story",LONG_STORY:"Long Story",ORDERING_SENTENCE:"Sentence Ordering"}},Ai={import:"Add to my trainings",publisher:"Publisher",time:{justNow:"just now",minutesAgo:"{{n}}m ago",hoursAgo:"{{n}}h ago",daysAgo:"{{n}}d ago",weeksAgo:"{{n}}w ago",monthsAgo:"{{n}}mo ago",yearsAgo:"{{n}}y ago"},badge:{shared:"Store"},publish:{descPlaceholder:"One-line description for the Training Store (optional)"}},vi={manage:{unit:"item(s)"}},Bi={cancelLabel:"Cancel"},Di={subtitle:"Select a topic to start listening practice."},Ti={steps:"Step {{current}} of {{total}}"},Ni={panelTitle:"Training misses",viewItems:"Items",viewTypes:"Types",colPending:"Left",colTrend:"Change",colRuns:"Runs",unitItem:" items",skippedOnly:"{{n}} older record(s) were excluded \u2014 they do not say what was answered.",summaryLabel:"Recorded",summaryValue:"{{items}} items \xB7 {{pending}} still missed",nextLabel:"Next to work on",nextCount:"{{count}}",nextCountCapped:"{{shown}} of {{total}}",picked:"\u2192 {{what}}",typeClear:"All caught up",typePending:"{{pending}} of {{total}} left",flat:"no change",runs:"{{count}} run(s)",avgDuration:"{{sec}}s avg"},_i={resetColumns:"Reset column widths",scrollRegion:"Horizontally scrollable table"},Oi={panelTitle:"Word table scores",viewWords:"Words",viewTables:"Tables",colLatest:"When",colTrend:"Change",unitTime:" times",summaryLabel:"Scored",summaryValue:"{{times}} times \xB7 {{words}} words",nextLabel:"Focus next",nextCount:"{{count}}",allClear:"All correct last time.",times:"{{count}}x",flat:"no change",recentLabel:"Recent scorings",nextCountCapped:"{{shown}} of {{total}}"},Li={ariaLabel:"Banner",dotAriaLabel:"Banner {{index}} of {{count}}"},Ri={selectYearMonth:"Select year and month",chooseDate:"Choose a date"},Pi={previewRegion:"Report preview \u2014 scrollable sideways"},Mi={description:"Description",textbox:"Text",training:"Training guide",menu:"Menu"},Ii={devNone:"No acquisition data",place:{labial:"Bilabial",alveolar:"Alveolar",palatal:"Palatal",velar:"Velar",glottal:"Glottal"}},ki={clearSelection:"Clear selection"},xi={showResult:"Show {{type}} result"},ji={selected:"Selected",remove:"Remove",exclude:"Excluded",nthSelected:"Selection {{n}}"},Fi={loading:"Loading"},$i={state:{active:"playing",played:"heard",correct:"correct",wrong:"wrong"}},Hi={ariaLabel:"Breadcrumb"},Gi={empty:"No items yet."},Vi={main:"Main gradient",soft:"Soft",sub:"Sub color",deep:"Deep gradient",softSub:"Soft sub",warm:"Warm (accent)",dark:"Dark",radial:"Radial gradient",diagonal:"Diagonal pattern",dots:"Dot pattern",outline:"Outline",success:"Success / done",naver:"Naver blog notice",instagram:"Instagram notice"},Wi={common:_u,calendar:Ou,passCard:Lu,searchField:Ru,rating:Pu,colorPicker:Mu,dropdown:Iu,accordion:ku,header:xu,nav:ju,settings:Fu,usage:$u,account:Hu,help:Gu,training:Vu,trainingSettings:Wu,customers:Yu,payment:Ku,coupons:Uu,visits:zu,company:qu,trainingType:Ju,myWordTraining:Qu,myWordTable:Zu,keyWords:Xu,wordTable:ei,wordSearch:ti,wordPrint:ni,topic:oi,accessLinkManager:ri,login:ai,device:ui,manager:ii,wordPairs:li,game:si,footer:ci,landing:di,date:Ci,trainingSetPage:gi,wordTrainingPreview:fi,wordData:mi,textField:pi,segmentedControl:hi,tabs:yi,fileUpload:bi,avatar:Si,myHomework:wi,trainingStatus:Ei,store:Ai,homework:vi,inquiry:Bi,trainingPlanRun:Di,progress:Ti,trainingMiss:Ni,table:_i,wordScore:Oi,topBanner:Li,datePicker:Ri,report:Pi,tooltip:Mi,phonemeProfile:Ii,bulkBar:ki,debug:xi,badge:ji,loader:Fi,soundCompass:$i,breadcrumb:Hi,board:Gi,promoBannerBg:Vi};const Yi="0.237.0",Ki=[{code:"ko",label:"\uD55C\uAD6D\uC5B4"},{code:"en",label:"English"}],Ft="ko",Ui="ihab_display_language";function Jn(){if(typeof window>"u")return Ft;try{const e=localStorage.getItem(Ui);if(e&&Ki.some(t=>t.code===e))return e}catch{}return Ft}function Qn(e){try{document.documentElement.lang=e}catch{}}ae.on("languageChanged",Qn),Qn(Jn()),ae.use(se.initReactI18next).init({resources:{ko:{translation:Nu},en:{translation:Wi}},lng:Jn(),fallbackLng:Ft,interpolation:{escapeValue:!1},react:{useSuspense:!1}});const We=["grade","syllables","pos","wordType"],Zn=["1","2","3","4"],zi=["1","2","3","4","5+"],qi=["noun","verb","modifier"],Ji=["native","sino","foreign","mixed"],Qi={grade:Zn,syllables:zi,pos:qi,wordType:Ji},Zi={noun:["\uBA85","\uC218"],verb:["\uB3D9","\uD615"],modifier:["\uBD80","\uAD00"]},Xi={native:"\uACE0\uC720",sino:"\uD55C\uC790",foreign:"\uC678\uB798",mixed:"\uD63C\uC885"},el={grade:["\uB09C\uC774\uB3C4 \uB4F1\uAE09"]},tl={pos:{noun:["\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)"],verb:["\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)"],modifier:["\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)"]}},$t=new Map;try{ae.store?.on?.("added",()=>$t.clear())}catch{}function ft(e){const t=$t.get(e);if(t)return t;const n=ae.getFixedT(e),o={\uC139\uC158:{grade:n("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:n("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),pos:n("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:n("wordSearch.filter.wordType","\uC720\uD615")},\uAC12:{grade:Object.fromEntries(Zn.map(r=>[r,n("wordSearch.filter.grade",{n:Number(r),defaultValue:`${r}\uB4F1\uAE09`})])),syllables:{...Object.fromEntries(["1","2","3","4"].map(r=>[r,n("wordSearch.filter.syllable",{n:Number(r),defaultValue:`${r}\uC74C\uC808`})])),"5+":n("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1")},pos:{noun:n("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)"),verb:n("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)"),modifier:n("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")},wordType:{native:n("wordSearch.filter.type.native","\uACE0\uC720\uC5B4"),sino:n("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4"),foreign:n("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4"),mixed:n("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")}}};return $t.set(e,o),o}const Ht=()=>Array.from(new Set([ae.language,"ko","en"].filter(e=>!!e)));function Ye(e){if(We.includes(e))return e;for(const t of Ht()){const n=ft(t);for(const o of We)if(n.\uC139\uC158[o]===e)return o}for(const t of We)if(el[t]?.includes(e))return t;return null}function Ne(e,t){if(Qi[e].includes(t))return t;for(const n of Ht()){const o=ft(n).\uAC12[e];for(const[r,a]of Object.entries(o))if(a===t)return r}for(const[n,o]of Object.entries(tl[e]??{}))if(o.includes(t))return n;if(e==="grade"||e==="syllables"){const n=parseInt(t.replace(/\D/g,""),10);if(Number.isFinite(n)&&n>=1)return e==="grade"?n<=4?String(n):null:n>=5?"5+":String(n)}return null}const nl=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"&&e?[e]:[];function Gt(e){const t={};for(const[n,o]of Object.entries(e??{})){const r=Ye(n);if(r)for(const a of nl(o)){const u=Ne(r,a);if(!u)continue;const i=t[r]??(t[r]=[]);i.includes(u)||i.push(u)}}return t}function Vt(e,t=ae.language){const n=ft(t||"ko"),o={};for(const r of We){const a=(e?.[r]??[]).map(u=>n.\uAC12[r][u]).filter(u=>!!u);a.length&&(o[n.\uC139\uC158[r]]=a)}return o}function ol(e,t=ae.language){const n={};for(const[o,r]of Object.entries(e??{}))Ye(o)||(n[o]=r);return{...n,...Vt(Gt(e),t)}}function rl(e){for(const t of Ht()){const n=ft(t);if(We.some(o=>n.\uC139\uC158[o]===e))return t}return ae.language||"ko"}function Xn(){const{t:e}=se.useTranslation();return s.useMemo(()=>({difficulty:e("wordSearch.filter.difficulty","\uB4F1\uAE09"),syllables:e("wordSearch.filter.syllables","\uC74C\uC808 \uC218"),syllable5plus:e("wordSearch.filter.syllable5plus","5\uC74C\uC808 \uC774\uC0C1"),partOfSpeech:e("wordSearch.filter.partOfSpeech","\uD488\uC0AC"),wordType:e("wordSearch.filter.wordType","\uC720\uD615"),posMap:{[e("wordSearch.filter.pos.noun","\uCCB4\uC5B8(\uBA85\uC0AC, \uC218\uC0AC)")]:["\uBA85","\uC218"],[e("wordSearch.filter.pos.verb","\uC6A9\uC5B8(\uB3D9\uC0AC, \uD615\uC6A9\uC0AC)")]:["\uB3D9","\uD615"],[e("wordSearch.filter.pos.modifier","\uC218\uC2DD\uC5B8(\uBD80\uC0AC, \uAD00\uD615\uC0AC)")]:["\uBD80","\uAD00"]},typeMap:{[e("wordSearch.filter.type.native","\uACE0\uC720\uC5B4")]:"\uACE0\uC720",[e("wordSearch.filter.type.sino","\uD55C\uC790\uC5B4")]:"\uD55C\uC790",[e("wordSearch.filter.type.foreign","\uC678\uB798\uC5B4")]:"\uC678\uB798",[e("wordSearch.filter.type.mixed","\uD63C\uC885\uC5B4")]:"\uD63C\uC885"}}),[e])}function eo(e,t,n){return{label:t.difficulty,items:[1,2,3,4].map(o=>e("wordSearch.filter.grade",{n:o})),multiple:!0,allOption:!0,allLabel:n?.allLabel,labelAction:n?.labelAction,labelInfo:n?.labelInfo}}function to(e){return{label:e.partOfSpeech,items:Object.keys(e.posMap),multiple:!0,allOption:!0}}function no(e){return{label:e.wordType,items:Object.keys(e.typeMap),multiple:!0,allOption:!0}}function al(e,t){return{label:t.syllables,items:[e("wordSearch.filter.syllable",{n:1}),e("wordSearch.filter.syllable",{n:2}),e("wordSearch.filter.syllable",{n:3}),e("wordSearch.filter.syllable",{n:4}),t.syllable5plus],multiple:!0,allOption:!0}}function ul(e,t){const n=[e("wordPairs.filter.onlyHasImage","\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC")];return t?.includeStructure&&n.push(e("wordPairs.filter.onlySameStructure","\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC")),{label:e("wordPairs.filter.selectLabel","\uC120\uD0DD"),items:n,multiple:!0,labelAction:t?.labelAction,labelInfo:t?.labelInfo}}function il(e,t){const{label:n,headValue:o,midValue:r,tailValue:a,includeMid:u=!0,headDisabled:i,midDisabled:l,tailDisabled:c,allOptionDisabled:g,groupLabel:d,labelAction:C}=t;return{label:n,...d?{groupLabel:d}:{},...C?{labelAction:C}:{},allOption:!0,allLabel:e("wordSearch.filter.positionAny",{defaultValue:"\uBB34\uAD00"}),...g?{allOptionDisabled:g}:{},items:[{value:o,displayLabel:e("wordSearch.filter.positionHead",{defaultValue:"\uC5B4\uB450"}),disabled:i},...u?[{value:r,displayLabel:e("wordSearch.filter.positionMid",{defaultValue:"\uC5B4\uC911"}),disabled:l}]:[],{value:a,displayLabel:e("wordSearch.filter.positionTail",{defaultValue:"\uC5B4\uB9D0"}),disabled:c}]}}function ll(e,t,n){const o=Ye(n),r=o&&t!==ue?Ne(o,t):null;if(o&&(t===ue||r)){const i={},l={};for(const[f,m]of Object.entries(e))(Ye(f)===o?l:i)[f]=m;if(t===ue)return i;const c=Gt(l)[o]??[],g=c.includes(r)?c.filter(f=>f!==r):[...c,r];if(g.length===0)return i;const d=Vt({[o]:g},rl(n)),C=Object.values(d)[0]??[];return{...i,[n]:C}}if(t===ue){const{[n]:i,...l}=e;return l}const a=e[n]??[],u=a.includes(t)?a.filter(i=>i!==t):[...a,t];if(u.length===0){const{[n]:i,...l}=e;return l}return{...e,[n]:u}}Object.fromEntries(Object.entries(Nt).map(([e,{nucleus:t}])=>[e,t]));const sl={\uACE0\uC720\uC5B4:"\uACE0\uC720",\uD55C\uC790\uC5B4:"\uD55C\uC790",\uC678\uB798\uC5B4:"\uC678\uB798",\uD63C\uC885\uC5B4:"\uD63C\uC885"},cl={"\uCCB4\uC5B8(\uBA85\uC0AC,\uC218\uC0AC)":["\uBA85","\uC218"],"\uC6A9\uC5B8(\uB3D9\uC0AC,\uD615\uC6A9\uC0AC)":["\uB3D9","\uD615"],"\uC218\uC2DD\uC5B8(\uBD80\uC0AC,\uAD00\uD615\uC0AC)":["\uBD80","\uAD00"]},dl={difficulty:"\uB09C\uC774\uB3C4 \uB4F1\uAE09",syllables:"\uC74C\uC808 \uC218",syllable5plus:"5\uC74C\uC808 \uC774\uC0C1",partOfSpeech:"\uD488\uC0AC",wordType:"\uC720\uD615",posMap:cl,typeMap:sl},oo=new WeakMap;function Cl(e,t){const n=oo.get(e);if(n&&n.keys===t)return n.\uAC12;const o={grades:[],syls:[],poses:[],types:[]},r={grade:o.grades,syllables:o.syls,pos:o.poses,wordType:o.types};for(const[a,u]of Object.entries(e??{})){const i=a===t.difficulty?"grade":a===t.syllables?"syllables":a===t.partOfSpeech?"pos":a===t.wordType?"wordType":Ye(a);if(i)for(const l of Array.isArray(u)?u:typeof u=="string"?[u]:[])r[i].includes(l)||r[i].push(l)}return oo.set(e,{keys:t,\uAC12:o}),o}function gl(e,t,n=dl){const{grades:o,syls:r,poses:a,types:u}=Cl(t,n);if(o.length&&!o.some(i=>e.grade===(Ne("grade",i)??i.replace(/\D/g,""))))return!1;if(r.length){const i=e.syllables??0;if(!r.some(l=>{const c=l===n.syllable5plus?"5+":Ne("syllables",l);return c==="5+"?i>=5:i===parseInt(c??l)}))return!1}return!(a.length&&!a.flatMap(i=>n.posMap[i]??Zi[Ne("pos",i)??""]??[i]).some(i=>(e.pos??"").includes(i))||u.length&&!u.some(i=>e.wordType===(n.typeMap[i]??Xi[Ne("wordType",i)??""])))}const fl={labial:e=>e("common.phonetics.place.labial",{defaultValue:"\uC591\uC21C\uC74C"}),alveolar:e=>e("common.phonetics.place.alveolar",{defaultValue:"\uCE58\uC870\uC74C"}),palatal:e=>e("common.phonetics.place.palatal",{defaultValue:"\uACBD\uAD6C\uAC1C\uC74C"}),velar:e=>e("common.phonetics.place.velar",{defaultValue:"\uC5F0\uAD6C\uAC1C\uC74C"}),glottal:e=>e("common.phonetics.place.glottal",{defaultValue:"\uC131\uBB38\uC74C"})},ml={frontHigh:e=>e("common.phonetics.vowel.frontHigh",{defaultValue:"\uC804\uC124 \uACE0\uBAA8\uC74C"}),backHighUnrounded:e=>e("common.phonetics.vowel.backHighUnrounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uD3C9\uC21C"}),backHighRounded:e=>e("common.phonetics.vowel.backHighRounded",{defaultValue:"\uD6C4\uC124 \uACE0\uBAA8\uC74C \uC6D0\uC21C"}),frontMid:e=>e("common.phonetics.vowel.frontMid",{defaultValue:"\uC804\uC124 \uC911\uBAA8\uC74C"}),backMidUnrounded:e=>e("common.phonetics.vowel.backMidUnrounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uD3C9\uC21C"}),backMidRounded:e=>e("common.phonetics.vowel.backMidRounded",{defaultValue:"\uD6C4\uC124 \uC911\uBAA8\uC74C \uC6D0\uC21C"}),low:e=>e("common.phonetics.vowel.low",{defaultValue:"\uC800\uBAA8\uC74C"})},pl={j:e=>e("common.phonetics.glide.j",{defaultValue:"j\uD65C\uC74C"}),w:e=>e("common.phonetics.glide.w",{defaultValue:"w\uD65C\uC74C"}),velar:e=>e("common.phonetics.glide.velar",{defaultValue:"\u0270\uD65C\uC74C"})};function ro(e,t){if("place"in t)return fl[t.place](e);const n=ml[t.vowel](e);return t.glide?`${n} \xB7 ${pl[t.glide](e)}`:n}const hl=(e,{defaultValue:t})=>t,ao=(e,t)=>({jamos:e,phonetic:t,tooltip:ro(hl,t)}),Ce=(e,t)=>t.map(n=>ao([n],{place:e})),J=(e,t,n)=>ao([...e],n?{vowel:t,glide:n}:{vowel:t}),Wt={cho:[Ce("labial",["\u3142","\u3143","\u314D","\u3141"]),Ce("alveolar",["\u3137","\u3138","\u314C","\u3134","\u3139"]),Ce("alveolar",["\u3145","\u3146"]),Ce("palatal",["\u3148","\u3149","\u314A"]),Ce("velar",["\u3131","\u3132","\u314B"]),Ce("glottal",["\u314E"])],jung:[[J("\u3163","frontHigh"),J("\u315F","frontHigh","w"),J("\u3162","frontHigh","velar")],[J("\u3161","backHighUnrounded")],[J("\u315C","backHighRounded"),J("\u3160","backHighRounded","j")],[J("\u3154\u3150","frontMid"),J("\u3156\u3152","frontMid","j"),J("\u3159\u315A\u315E","frontMid","w")],[J("\u3153","backMidUnrounded"),J("\u3155","backMidUnrounded","j"),J("\u315D","backMidUnrounded","w")],[J("\u3157","backMidRounded"),J("\u315B","backMidRounded","j")],[J("\u314F","low"),J("\u3151","low","j"),J("\u3158","low","w")]],jong:[Ce("labial",["\u3142","\u3141"]),Ce("alveolar",["\u3137","\u3134","\u3139"]),Ce("velar",["\u3131","\u3147"])]},yl=[...Q],bl=[...te],Sl=oe.filter(e=>e!==""),ge=e=>e===ie?[]:Array.from(e),ie="__NO_CODA__",uo=[1,2,3,4],le=5,wl=12,io="SYL_",Yt=e=>`${io}${e}`,El=e=>Number(e.slice(io.length));function Kt(e){return e>=le?Array.from({length:wl-le+1},(t,n)=>le+n):[e]}const lo={cho:yl,jung:bl,jong:Sl},Ut=e=>e.map(t=>t.map(({jamos:n,phonetic:o,tooltip:r})=>({v:n.join(""),phonetic:o,tooltip:r}))),zt={cho:Ut(Wt.cho),jung:Ut(Wt.jung),jong:Ut(Wt.jong)},so={};zt.jung.flat().forEach(({v:e})=>{for(const t of ge(e))so[t]=e});const Al=new Set(zt.cho.flat().map(e=>e.v));function co(e,t){return e==="cho"?Al.has(t)?t:null:e==="jung"?so[t]??t:Pe(t)}function Co(e,t,n){if(e==="jung"){const o=ge(t);return n&&o.includes(n)?n:o[0]??t}return e==="jong"&&n&&Pe(n)===t?n:t}function go(e,t,n,o){const r=(a,u)=>u?a==="jong"&&u===ie?ie:t==="pron"?co(a,u):Co(a,u,a==="jung"?n:a==="jong"?o:null):null;return{...e,cho:r("cho",e.cho),jung:r("jung",e.jung),jong:r("jong",e.jong)}}const qt={cho:null,jung:null,jong:null,syllable:null},vl="wt_filter",fo=e=>`wt_filter_${e}`,Jt=["noun","verb","modifier"],Qt=["native","sino","foreign","mixed"];function mo(e,t,n,o,r){if(!Array.isArray(e))return[];const a=[];for(const u of e){if(typeof u!="string")continue;const i=t.includes(u)?u:t.find(l=>r.some(c=>o(c,n(l))===u));i&&!a.includes(i)&&a.push(i)}return a}function po(e){try{const t=localStorage.getItem(fo(e))??localStorage.getItem(vl);if(t)return JSON.parse(t)}catch{}return null}function ho(e){const t=e?.phonemeView;return t==="pron"?"pron":t==="direct"?"direct":"char"}function Bl(e){const t=e;return t?.composition?{cho:t.composition.cho??null,jung:t.composition.jung??null,jong:t.composition.jong??null,syllable:t.composition.syllable??null}:t?.choseong?{...qt,cho:t.choseong}:qt}function Dl(e,t,n){const{t:o,i18n:r}=se.useTranslation(),[a]=s.useState(()=>n?.resetOnMount?null:po(e)),[u,i]=s.useState(ho(a)),[l,c]=s.useState(()=>Bl(a)),g=s.useCallback(()=>t.requireSyllable?{cho:"\u3131",jung:"\u314F",jong:ie,syllable:t.fixedSyllable??null}:{cho:null,jung:null,jong:t.fixedNoCoda?ie:null,syllable:t.fixedSyllable??null},[t.requireSyllable,t.fixedSyllable,t.fixedNoCoda]);s.useEffect(()=>{!t.requireSyllable&&t.fixedSyllable==null&&!t.fixedNoCoda||c(b=>b.cho||b.jung||b.syllable!=null||b.jong?b:g())},[]);const d=s.useMemo(()=>z(l.cho)||z(l.jung)||z(l.jong)?"count":"random",[l.cho,l.jung,l.jong]),C=s.useRef(u==="char"?l.jung:null),f=s.useRef(u==="char"?l.jong:null);s.useEffect(()=>{u==="char"&&(C.current=l.jung,f.current=l.jong)},[u,l.jung,l.jong]);const[m,w]=s.useState(n?.resetOnMount?!!n?.defaultImageOnly:a?.excludeNoImage??!0),[h,p]=s.useState(n?.resetOnMount?!1:a?.sameStructureOnly??!0),[y,S]=s.useState(Array.isArray(a?.gradeFilter)?a.gradeFilter:[]),E=Array.from(new Set([r.language,"ko","en"].filter(Boolean))),L=(b,_)=>r.getFixedT(b)(_),v=b=>mo(b,Jt,_=>`wordSearch.filter.pos.${_}`,L,E),T=b=>mo(b,Qt,_=>`wordSearch.filter.type.${_}`,L,E),[D,I]=s.useState(()=>v(a?.posFilter)),[B,$]=s.useState(()=>T(a?.wordTypeFilter)),F=s.useRef(n?.resetKey);s.useEffect(()=>{F.current!==n?.resetKey&&(F.current=n?.resetKey,c(g()),w(!!n?.defaultImageOnly),p(!1),S([]),I([]),$([]))},[n?.resetKey]);const M=Xn(),O=s.useMemo(()=>Object.keys(M.posMap),[M]),k=s.useMemo(()=>Object.keys(M.typeMap),[M]),W=s.useMemo(()=>D.map(b=>O[Jt.indexOf(b)]).filter(Boolean),[D,O]),X=s.useMemo(()=>B.map(b=>k[Qt.indexOf(b)]).filter(Boolean),[B,k]),[U,he]=s.useState({cho:new Set,jung:new Set,jong:new Set,syllable:new Set}),[A,N]=s.useState(!1),[P,G]=s.useState(null),Y=1,ee=Math.max(1,[l.cho,l.jung,l.jong].filter(Boolean).length),[ye,Oe]=s.useState(e);s.useEffect(()=>{if(ye!==e){if(!n?.resetOnMount){const b=po(e);c(b?.composition??g()),w(b?.excludeNoImage??!0),p(b?.sameStructureOnly??!0),i(ho(b)),S(Array.isArray(b?.gradeFilter)?b.gradeFilter:[]),I(v(b?.posFilter)),$(T(b?.wordTypeFilter))}Oe(e)}},[e,ye,n?.resetOnMount]),s.useEffect(()=>{if(!n?.resetOnMount&&ye===e)try{localStorage.setItem(fo(e),JSON.stringify({contrastCount:ee,composition:l,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:D,wordTypeFilter:B}))}catch{}},[n?.resetOnMount,e,ye,ee,l,m,h,u,y,D,B]);const[Ee,rn]=s.useState(0);mn("wordpool:update",()=>rn(b=>b+1));const an=s.useRef(r.language);s.useEffect(()=>{an.current!==r.language&&(an.current=r.language,rn(b=>b+1))},[r.language]),s.useEffect(()=>{if(!t.choseong)return;let b=!1;return Ca({difficulty:d,excludeNoImage:m}).then(_=>{b||(he(_),_.cho.size+_.jung.size+_.jong.size>0&&N(!0))}).catch(()=>{b||he({cho:new Set,jung:new Set,jong:new Set,syllable:new Set})}),()=>{b=!0}},[t.choseong,d,m,Ee]),s.useEffect(()=>{let b=!1;const _=l,R=_.cho?ge(_.cho):null,x=_.jung?ge(_.jung):null,K=_.jong===ie,Ae=K?null:_.jong?ge(_.jong):null,ve=_.syllable!=null?Kt(_.syllable):null,tt=!!(R||x||Ae||K||ve);return da({difficulty:t.difficulty?d:null,contrastCount:t.difficulty?ee:1,composition:t.choseong&&tt?{cho:R,jung:x,jong:Ae,jongNone:K,syllable:ve}:null,excludeNoImage:m,sameStructureOnly:h,phonemeView:u==="pron"?"pron":"char",grade:y.length>0?y:null}).then(nt=>{b||G(nt)}).catch(()=>{b||G(null)}),()=>{b=!0}},[t.choseong,t.difficulty,d,ee,l,u,m,h,Ee,y]),s.useEffect(()=>{A&&c(b=>{const _={...b};let R=!1;return["cho","jung","jong"].forEach(x=>{const K=b[x];!K||K===ie||ge(K).some(Ae=>U[x].has(Ae))||(_[x]=null,R=!0)}),b.syllable!=null&&t.fixedSyllable==null&&(b.syllable>=le?[...U.syllable].some(x=>x>=le)||(_.syllable=null,R=!0):(!U.syllable.has(b.syllable)||b.syllable<Y)&&(_.syllable=null,R=!0)),R?_:b})},[U,A,Y,t.fixedSyllable]);const un=s.useMemo(()=>{const b=_=>{const R=new Set;for(const x of lo[_])U[_].has(x)&&R.add(x);return R};return{cho:b("cho"),jung:b("jung"),jong:b("jong")}},[U]),Et=s.useMemo(()=>({exact:new Set(uo.filter(b=>U.syllable.has(b))),min:[...U.syllable].some(b=>b>=le)}),[U]),j=s.useMemo(()=>({composition:o("wordPairs.composition","\uC815\uB2F5 \uB2E8\uC5B4 \uAD6C\uC131"),syllableCount:o("wordPairs.syllableCount","\uC74C\uC808 \uC218"),onset:o("wordPairs.onset","\uCD08\uC131"),vowel:o("wordPairs.vowel","\uBAA8\uC74C"),coda:o("wordPairs.coda","\uC885\uC131"),phonemeGroup:o("training.filter.phonemeGroup",{defaultValue:"\uD6C8\uB828 \uC74C\uC808"}),trainOnset:o("training.filter.trainOnset",{defaultValue:"\uCD08\uC131"}),trainVowel:o("training.filter.trainVowel",{defaultValue:"\uBAA8\uC74C"}),trainCoda:o("training.filter.trainCoda",{defaultValue:"\uC885\uC131"}),random:o("training.filter.random","\uBB34\uC791\uC704"),exclude:o("wordSearch.filter.exclude","\uC81C\uC678"),selectLabel:o("training.filter.selectSection",{defaultValue:"\uC120\uD0DD"}),none:o("common.none","\uC5C6\uC74C"),noImage:o("wordSearch.filter.excludeNoImage","\uC774\uBBF8\uC9C0 \uC5C6\uC74C"),excludeImage:o("training.filter.excludeImage",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC"}),sameStructure:o("training.filter.sameStructure",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC"}),noLimit:o("training.filter.noLimit",{defaultValue:"\uBB34\uAD00"}),codaExclude:o("training.filter.codaExclude",{defaultValue:"\uC81C\uC678"}),gradeLabel:o("training.filter.gradeLabel",{defaultValue:"\uB09C\uC774\uB3C4 \uB4F1\uAE09"})}),[o]),ln=s.useMemo(()=>({[j.trainOnset]:"cho",[j.trainVowel]:"jung",[j.trainCoda]:"jong"}),[j]),et=s.useCallback((b,_)=>({title:_,items:b}),[]),At=s.useMemo(()=>[o("training.filter.excludeImageInfo",{defaultValue:"\uC774\uBBF8\uC9C0 \uC788\uB294 \uB2E8\uC5B4\uB9CC: \uB2E8\uC5B4 \uC911\uC5D0 \uC774\uBBF8\uC9C0\uAC00 \uC788\uB294 \uB2E8\uC5B4\uB9CC \uACB0\uACFC\uC5D0 \uBCF4\uC5EC\uC90D\uB2C8\uB2E4."}),o("training.filter.sameStructureInfo",{defaultValue:"\uC74C\uC18C \uAD6C\uC870 \uAC19\uC740 \uB2E8\uC5B4\uB9CC: \uC815\uB2F5\uACFC \uC624\uB2F5\uC758 \uC74C\uC808 \uAD6C\uC870(\uAE00\uC790 \uC218\xB7\uBC1B\uCE68 \uC720\uBB34 \uB4F1)\uAC00 \uAC19\uC740 \uACB0\uACFC\uB9CC \uB0A8\uACA8\uC694."})],[o]),Bo=s.useMemo(()=>{const b=[];if(t.choseong){const _={value:ie,displayLabel:j.codaExclude},R=t.fixedNoCoda===!0,x=(K,Ae)=>{const ve=R&&K==="jong",tt={label:Ae,groupLabel:j.phonemeGroup,allOption:!t.requireSyllable,allLabel:j.noLimit,allOptionDisabled:ve};if(u==="pron"){const Be=zt[K].map(Ro=>Ro.map(({v:vt,phonetic:Po})=>{const Bt=ge(vt),sn=ro(o,Po),cn=ve||!Bt.some(Mo=>U[K].has(Mo));return Bt.length>1?{value:vt,labels:Bt,tooltip:sn,disabled:cn}:{value:vt,tooltip:sn,disabled:cn}}));return K==="jong"&&!t.requireCoda&&Be.unshift([_]),{...tt,groups:Be}}const nt=lo[K].map(Be=>!ve&&un[K].has(Be)?Be:{value:Be,disabled:!0});return{...tt,items:K==="jong"&&!t.requireCoda?[_,...nt]:nt}};b.push(x("cho",j.trainOnset)),b.push(x("jung",j.trainVowel)),b.push(x("jong",j.trainCoda))}if(b.push({...eo(o,M,{labelInfo:et([o("wordPairs.filter.difficultyInfo",{defaultValue:"\uAD6D\uB9BD\uAD6D\uC5B4\uC6D0\uC758 \uAE30\uCD08 \uC5B4\uD718 \uB4F1\uAE09\uC774 \uACB0\uACFC\uC5D0 \uBC18\uC601\uB429\uB2C8\uB2E4."})])}),label:j.gradeLabel}),t.partOfSpeech&&b.push(to(M)),t.wordType&&b.push(no(M)),t.choseong||t.fixedSyllable!=null){const _=t.fixedSyllable;b.push({label:j.syllableCount,items:[...uo.map(R=>({value:Yt(R),displayLabel:o("wordPairs.syllableN",{n:R,defaultValue:"{{n}}\uC74C\uC808"}),disabled:_!=null?R!==_:!Et.exact.has(R)||R<Y})),{value:Yt(le),displayLabel:o("wordPairs.syllableNPlus",{n:le,defaultValue:"{{n}}\uC74C\uC808 \uC774\uC0C1"}),disabled:_!=null?le!==_:!Et.min}],allOption:!0,allOptionDisabled:_!=null})}return t.choseong?b.push({label:j.exclude,displayLabel:j.selectLabel,multiple:!0,items:[j.excludeImage,j.sameStructure],labelInfo:et(At)}):b.push({label:j.exclude,displayLabel:j.selectLabel,multiple:!0,items:[j.excludeImage],labelInfo:et([At[0]])}),b},[t.choseong,t.partOfSpeech,t.wordType,t.requireSyllable,t.fixedSyllable,t.fixedNoCoda,t.requireCoda,Y,un,U,u,Et,j,o,et,At,M]),Do={...(t.choseong||t.fixedSyllable!=null)&&l.syllable!=null?{[j.syllableCount]:Yt(l.syllable)}:{},...t.choseong&&l.cho?{[j.trainOnset]:l.cho}:{},...t.choseong&&l.jung?{[j.trainVowel]:l.jung}:{},...t.choseong&&l.jong?{[j.trainCoda]:l.jong}:{},[j.exclude]:[...m?[j.excludeImage]:[],...h?[j.sameStructure]:[]],[j.gradeLabel]:y.map(b=>o("wordSearch.filter.grade",{n:Number(b),defaultValue:"{{n}}\uB4F1\uAE09"})),...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},To=s.useCallback((b,_)=>{if(_===j.exclude)b===j.excludeImage?w(R=>!R):b===j.sameStructure&&p(R=>!R);else if(_===j.syllableCount)c(R=>{if(!b||b===ue)return{...R,syllable:null};const x=El(b);return{...R,syllable:R.syllable===x?null:x}});else if(_===j.gradeLabel){if(!b||b===ue){S([]);return}const R=b.replace(/\D/g,"");S(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(_===M.partOfSpeech){if(!b||b===ue){I([]);return}const R=Jt[O.indexOf(b)]??v([b])[0];if(!R)return;I(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else if(_===M.wordType){if(!b||b===ue){$([]);return}const R=Qt[k.indexOf(b)]??T([b])[0];if(!R)return;$(x=>x.includes(R)?x.filter(K=>K!==R):[...x,R])}else{const R=ln[_];if(!R)return;c(x=>t.requireSyllable?b&&b!==ue?{...x,[R]:b}:x:!b||b===ue||x[R]===b?{...x,[R]:null}:{...x,[R]:b})}},[j,ln,M,O,k,t.requireSyllable]),No=s.useCallback(b=>!t.partOfSpeech&&!t.wordType?!0:gl(b,{...t.partOfSpeech?{[M.partOfSpeech]:W}:{},...t.wordType?{[M.wordType]:X}:{}},M),[t.partOfSpeech,t.wordType,W,X,M]),_o=s.useCallback(b=>{b!==u&&(b!=="direct"&&u!=="direct"&&c(_=>go(_,b,C.current,f.current)),i(b))},[u]),Oo=s.useCallback(()=>({composition:l,contrastCount:ee,excludeNoImage:m,sameStructureOnly:h,phonemeView:u,gradeFilter:y,posFilter:D,wordTypeFilter:B}),[l,ee,m,h,u,y,D,B]),Lo=s.useCallback(b=>{c(b.composition),w(b.excludeNoImage),p(b.sameStructureOnly??!0),i(b.phonemeView),S(Array.isArray(b.gradeFilter)?b.gradeFilter:[]),Array.isArray(b.posFilter)&&I(v(b.posFilter)),Array.isArray(b.wordTypeFilter)&&$(T(b.wordTypeFilter))},[]);return{difficulty:d,contrastCount:ee,composition:l,choseong:l.cho,excludeNoImage:m,sameStructureOnly:h,gradeFilter:y,posFilter:W,wordTypeFilter:X,matchesWordAttributes:No,poolVersion:Ee,filterSections:Bo,filterSelected:Do,handleFilterSelect:To,phonemeView:u,setPhonemeView:_o,phonemeGroupLabel:j.phonemeGroup,wordCount:P,getFilterSnapshot:Oo,restoreFilterSnapshot:Lo}}function Tl(e){const t=i=>i?ge(i):null,n=t(e.cho),o=t(e.jung),r=e.jong===ie,a=r?null:t(e.jong),u=e.syllable!=null?Kt(e.syllable):null;return!n&&!o&&!a&&!r&&!u?null:{cho:n,jung:o,jong:a,jongNone:r,syllable:u}}function Nl(e,t,n,o,r,a,u=!0,i="char",l=[]){const[c,g]=s.useState({}),[d,C]=s.useState(!1),{cho:f=null,jung:m=null,jong:w=null,syllable:h=null}=o??{},p=l.length>0?l.slice().sort().join(","):"",y=e.map(E=>E.key).join("|");s.useEffect(()=>{a>0&&ca(r).catch(()=>{})},[a,r]),s.useEffect(()=>{let E=!1;return C(!0),(async()=>{const L=Tl({cho:f,jung:m,jong:w,syllable:h}),v=`${f??""}_${m??""}_${w??""}_${h??""}_${p}`,T={};await Promise.all(e.map(async D=>{const I=_t[D.key];try{const B=await qn(D.key,{difficulty:I.difficulty?t:null,contrastCount:I.difficulty?n:1,composition:I.choseong?L:null,count:5,excludeNoImage:r,sameStructureOnly:u,phonemeView:i,grade:l.length>0?l:null});B&&B.length>0?T[D.key]={id:`wt-${D.key}-${t}-${v}-${Date.now()}`,name:D.label,training_type:D.key,category_main_code:"WORD",iconColor:D.color,subTitle:D.subTitle,items:B,itemCount:B.length}:T[D.key]={id:`wt-${D.key}-empty`,name:D.label,training_type:D.key,category_main_code:"WORD",iconColor:D.color,subTitle:D.subTitle,items:[],itemCount:0,__empty:!0}}catch{T[D.key]=null}})),E||(g(T),C(!1))})(),()=>{E=!0}},[t,n,f,m,w,h,r,u,i,a,p,y]);const S=JSON.stringify(e.map(E=>[E.key,E.label,E.color,E.subTitle]));return{perTypeData:s.useMemo(()=>{const E={};for(const[L,v]of Object.entries(c)){const T=e.find(D=>D.key===L);E[L]=v&&T?{...v,name:T.label,iconColor:T.color,subTitle:T.subTitle}:v}return E},[c,S]),generating:d}}const Ke=[],Ue=[],ze=[],qe=[],mt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},pt={LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]},_l={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};let Zt=null,yo=null,pe=null;function Ol({counts:e,forceRefresh:t}={}){const n=Object.assign({},_l,e||{}),o=Le(),r=Re(new Date(`${o}T00:00:00+09:00`).getTime()-864e5),a=JSON.stringify(n);if(!t&&yo===o&&Zt===a&&pe)return Object.assign(mt,pe.today),Object.assign(pt,pe.yesterday?.selection||{LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),{today:mt,yesterday:pt};const u={LISTEN_IN_NOISE:ce(Ke,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(Ue,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(ze,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(qe,Math.max(0,Number(n.ORDERING_SENTENCE)||0))};let i=null;return pe&&Zt===a&&pe.yesterday&&pe.yesterday.date===r&&(i=pe.yesterday.selection),i||(i={LISTEN_IN_NOISE:ce(Ke,Math.max(0,Number(n.LISTEN_IN_NOISE)||0)),SHORT_STORY:ce(Ue,Math.max(0,Number(n.SHORT_STORY)||0)),LONG_STORY:ce(ze,Math.max(0,Number(n.LONG_STORY)||0)),ORDERING_SENTENCE:ce(qe,Math.max(0,Number(n.ORDERING_SENTENCE)||0))}),Object.assign(mt,u),Object.assign(pt,i),yo=o,Zt=a,pe={today:u,yesterday:{date:r,countsKey:a,selection:i}},{today:mt,yesterday:pt}}let Xt=!1,Je=null;async function Ll(){try{const e={url:typeof document>"u"?require("url").pathToFileURL(__filename).href:Dt&&Dt.tagName.toUpperCase()==="SCRIPT"&&Dt.src||new URL("hooks.cjs.js",document.baseURI).href}&&void 0||"/",t=await fetch(`${e}data/allTrainingData.json`);return t.ok?await t.json():null}catch{return null}}async function Rl(){if(!Xt)return Je||(Je=(async()=>{const e=await Ll();if(!e){Je=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}const t={noise:[],short:[],long:[],order:[]};try{for(const n of Object.keys(e||{})){const o=e[n]||[];for(const r of o){if(!r||typeof r!="object")continue;const a=r,u=String(a.training_type||n),i=String(a.category_main_code||a.category_main||a.category_0||""),l=String(a.category_sub_code||a.category_sub||a.category_1||""),c=Object.assign({},a,{training_type:u,category_0:i,category_1:l});u==="LISTEN_IN_NOISE"?t.noise.push(c):u==="SHORT_STORY"?t.short.push(c):u==="LONG_STORY"?t.long.push(c):u==="ORDERING_SENTENCE"&&t.order.push(c)}}}catch{Je=null;try{window.dispatchEvent(new Event("speechear.data.error"))}catch{}return}Ke.push(...t.noise),Ue.push(...t.short),ze.push(...t.long),qe.push(...t.order),Xt=!0;try{Ol()}catch{}try{window.dispatchEvent(new Event("speechear.data.updated"))}catch{}})(),Je)}async function Pl(e=3e3){const t=Rl();let n;try{await Promise.race([t,new Promise(o=>{n=setTimeout(o,e)})])}finally{n!==void 0&&clearTimeout(n)}return Xt}function bo(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function Ml(e){let t=e>>>0;return()=>{t|=0,t=t+1831565813|0;let n=Math.imul(t^t>>>15,1|t);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}const Il=ce,kl=e=>{const[t,n,o]=e.split("-").map(Number);return Math.round(Date.UTC(t,(n||1)-1,o||1)/864e5)},xl=(e,t)=>{const n=e??{};return String(n.id??n.name??t)};function ht(e,t,n,o,r){if(!e.length||t<=0)return[];const a=Ml(bo(`${n}|${o}|${r}`)),u=kl(o)&1,i=e.filter((c,g)=>(bo(`${n}|${r}|${xl(c,g)}`)>>>7&1)===u),l=i.length>=t&&e.length-i.length>=t;return Il(l?i:e,t,a)}function en(e,t,n){const o=r=>Math.max(0,e[r]||0);return{LISTEN_IN_NOISE:ht(Ke,o("LISTEN_IN_NOISE"),t,n,"LISTEN_IN_NOISE"),SHORT_STORY:ht(Ue,o("SHORT_STORY"),t,n,"SHORT_STORY"),LONG_STORY:ht(ze,o("LONG_STORY"),t,n,"LONG_STORY"),ORDERING_SENTENCE:ht(qe,o("ORDERING_SENTENCE"),t,n,"ORDERING_SENTENCE")}}function tn(e){return e?!!(e.LISTEN_IN_NOISE?.length||e.SHORT_STORY?.length||e.LONG_STORY?.length||e.ORDERING_SENTENCE?.length):!1}const jl={LISTEN_IN_NOISE:3,SHORT_STORY:2,LONG_STORY:1,ORDERING_SENTENCE:2};function nn(e=!1,t=jl,n){const o=Re(Date.now()),r=Re(Date.now()-864e5),a=n??"";return Ke.length>0||Ue.length>0||ze.length>0||qe.length>0?{today:en(t,a,o),yesterday:en(t,a,r)}:{today:en(t,a,o),yesterday:null}}function Fl(e){const t=s.useRef({LISTEN_IN_NOISE:[],SHORT_STORY:[],LONG_STORY:[],ORDERING_SENTENCE:[]}),n=s.useRef(null),[o,r]=s.useState(!1),[a,u]=s.useState(!1),[i,l]=s.useState(0),[c,g]=s.useState(!1),[d,C]=s.useState(()=>Le());s.useEffect(()=>{const m=()=>{const h=Date.now(),p=new Date(h+9*36e5),y=Date.UTC(p.getUTCFullYear(),p.getUTCMonth(),p.getUTCDate()+1)-9*36e5;return Math.max(1e3,y-h+1e3)};let w=setTimeout(function h(){C(Le()),w=setTimeout(h,m())},m());return()=>clearTimeout(w)},[]),s.useEffect(()=>{let m=!1,w=!1,h=!1,p,y=0,S=null,E=0;const L=40,v=()=>{p!==void 0&&(clearInterval(p),p=void 0)};let T=!1;try{const F=new URLSearchParams(window.location.search),M=F.get("forceRefresh")||F.get("force");T=M==="1"||M==="true"}catch{}const D=F=>{w||(h=!0,t.current=F.today,n.current=F.yesterday,r(!0),g(!0),l(M=>M+1),m=!0,v())},I=async()=>{if(m)return;if(!T){const M=nn(!1,void 0,e);if(tn(M.today)){D(M);return}}if(S){++y>=L&&B();return}if(y>=E){E=y+8,S=Pl(3e3).catch(()=>!1);try{await S}finally{S=null}if(m)return}const F=nn(T,void 0,e);if(tn(F.today)){D(F);return}++y>=L&&B()};function B(){r(!0),g(!1),m=!0,v()}const $=()=>{if(w||h)return;const F=nn(T,void 0,e);tn(F.today)&&D(F)};try{window.addEventListener("speechear.data.updated",$)}catch{}return I(),p=setInterval(I,250),()=>{m=!0,w=!0,v();try{window.removeEventListener("speechear.data.updated",$)}catch{}}},[e,d]);const f=s.useCallback(m=>{const w=a?n.current:t.current,h=a?t.current:n.current;return w?.[m]?.length?w[m]:h?.[m]?.length?h[m]:void 0},[a,i]);return{loaded:o,hasData:c,showYesterday:a,setShowYesterday:u,getTrainingPerType:f}}const _e=[];let yt=!1;function So(e){if(e.key!=="Escape"||e.defaultPrevented||e.isComposing||e.keyCode===229)return;const t=_e[_e.length-1];t&&(e.stopPropagation(),t())}function wo(e){return _e.push(e),!yt&&typeof document<"u"&&(document.addEventListener("keydown",So),yt=!0),()=>{const t=_e.lastIndexOf(e);t>=0&&_e.splice(t,1),_e.length===0&&yt&&typeof document<"u"&&(document.removeEventListener("keydown",So),yt=!1)}}function $l(e,t=!0){const n=fn(e);s.useEffect(()=>{if(t)return wo(()=>{n.current?.()})},[t,n])}const on=(e,t)=>`${e}:${t??1}`,bt=new Map,Eo=new Set,Ao=new Map,Hl=6e4;function Gl(e,t){const[n,o]=s.useState(0),r=Array.from(new Set(e.map(a=>on(a.word,a.homonum)))).sort().join("|");return s.useEffect(()=>{const a=r?r.split("|"):[],u=Date.now(),i=a.filter(g=>!bt.has(g)&&!Eo.has(g)&&!(u-(Ao.get(g)??-1/0)<Hl));if(i.length===0)return;let l=!1;const c=Array.from(new Set(i.map(g=>g.slice(0,g.lastIndexOf(":")))));return t(c).then(g=>{for(const d of g)d.Meaning&&bt.set(on(d.Word,d.Homonum??void 0),d.Meaning);if(g.length>0)for(const d of i)bt.has(d)||Eo.add(d);else{const d=Date.now();for(const C of i)Ao.set(C,d)}l||g.length===0||o(d=>d+1)}).catch(()=>{}),()=>{l=!0}},[r,t]),s.useMemo(()=>{const a=r?r.split("|"):[],u=new Map;for(const i of a){const l=bt.get(i);l!=null&&u.set(i,l)}return u},[r,n])}function Vl(){const[e,t]=s.useState(null),n=s.useCallback(a=>t(a.getBoundingClientRect()),[]),o=s.useCallback(()=>t(null),[]),r=s.useCallback(a=>{const u=a.getBoundingClientRect();t(i=>i?null:u)},[]);return{anchorRect:e,isOpen:e!=null,openAt:n,close:o,toggleAt:r}}function Wl(e){const[t,n]=s.useState(null),[o,r]=s.useState(null),a=s.useRef(null);s.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]);const u=s.useCallback((l,c)=>{a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{n(l),r(c)},e)},[e]),i=s.useCallback(()=>{a.current&&clearTimeout(a.current),n(null),r(null)},[]);return{payload:t,anchorRect:o,openAfterDelay:u,close:i}}function Yl(e,t,n){const o=Number.isFinite(t)&&t>=1?Math.floor(t):1,r=Math.max(1,Math.ceil(e.length/o)),a=Number.isFinite(n)?Math.min(Math.max(1,Math.floor(n)),r):1;return{pageItems:s.useMemo(()=>e.slice((a-1)*o,a*o),[e,a,o]),totalPages:r,curPage:a}}function vo(e,t){const[n,o]=s.useState(e);n!==e&&(o(e),t(1))}function Kl(e={}){const{defaultPageSize:t="25",resetOn:n}=e,[o,r]=s.useState(""),[a,u]=s.useState(t),[i,l]=s.useState(1),c=Number(t)||25,g=Number(a)||c;return vo([o,a,...n??[]].map(String).join("|"),l),{query:o,setQuery:r,pageSize:a,setPageSize:u,perPage:g,page:i,setPage:l}}function Ul(e="warning"){const[t,n]=s.useState(""),[o,r]=s.useState(e),[a,u]=s.useState(0),i=s.useCallback((d,C)=>{r(C),n(d),u(f=>f+1)},[]),l=s.useCallback(d=>i(d,"warning"),[i]),c=s.useCallback(d=>i(d,"normal"),[i]),g=s.useCallback(()=>n(""),[]);return{toastMessage:t,toastType:o,toastKey:a,showToast:i,showWarning:l,showNormal:c,clearToast:g}}const zl=[{key:"LISTEN_IN_NOISE",label:"\uC18C\uC74C \uD558 \uBB38\uC7A5 \uB4E3\uAE30",icon:"party-popper",desc:"\uB2E4\uC591\uD55C \uC18C\uC74C \uD658\uACBD\uC5D0\uC11C \uBB38\uC7A5 \uCCAD\uB825\uC744 \uD6C8\uB828\uD569\uB2C8\uB2E4."},{key:"SHORT_STORY",label:"\uC9E7\uC740 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square",desc:"\uC9E7\uC740 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"LONG_STORY",label:"\uAE34 \uC774\uC57C\uAE30 \uB4E3\uAE30",icon:"message-square-text",desc:"\uAE34 \uC774\uC57C\uAE30\uB97C \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uB2E4\uC218\uC758 \uBB38\uC81C\uB97C \uD480\uC5B4\uBD05\uB2C8\uB2E4."},{key:"ORDERING_SENTENCE",label:"\uBB38\uC7A5 \uC21C\uC11C\uD654 \uD558\uAE30",icon:"align-start-vertical",desc:"\uC5EC\uB7EC\uAC1C\uC758 \uC9E7\uC740 \uBB38\uC7A5\uC744 \uB4E3\uACE0 \uAE30\uC5B5\uD558\uC5EC \uADF8 \uC21C\uC11C\uC5D0 \uB9DE\uAC8C \uBC30\uC5F4\uD569\uB2C8\uB2E4."}],ql={LISTEN_IN_NOISE:"listenInNoise",SHORT_STORY:"shortStory",LONG_STORY:"longStory",ORDERING_SENTENCE:"orderingSentence"};function Jl(e){return zl.map(t=>{const n=ql[t.key];return n?{...t,label:e(`trainingType.${n}.title`),desc:e(`trainingType.${n}.desc`)}:t})}const Qe={blue:"#60A5FA",green:"#4ADE80",amber:"#FBBF24",purple:"#A78BFA",pink:"#F472B6"},Ze=Qe.blue,St=Qe.green,Xe=Qe.amber,wt=Qe.purple,Ql=Qe.pink,Zl=[{key:"discrimination",label:"\uBCC0\uBCC4\uD6C8\uB828",disc:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0, \uB610\uB294 \uD2B9\uC815 \uC18C\uB9AC\uB97C \uAD6C\uBCC4\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"ear",types:[{key:"SAME_SOUND_PICK",label:"\uAC19\uC740 \uC18C\uB9AC \uACE0\uB974\uAE30",icon:"volume-2",color:Ze,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC640 \uAC19\uC740 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"SAME_OR_DIFF",label:"\uAC19\uC740\uC9C0 \uB2E4\uB978\uC9C0 \uB9DE\uD788\uAE30",icon:"diff",color:Ze,subTitle:"\uB450 \uC18C\uB9AC\uAC00 \uAC19\uC740\uC9C0, \uB2E4\uB978\uC9C0 \uAD6C\uBD84\uD558\uC138\uC694."},{key:"HEAR_AND_PICK_SAME",label:"\uC77C\uCE58\uD558\uB294 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"headphones",color:Ze,subTitle:"\uB4E4\uC740 \uC18C\uB9AC\uC758 \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"HEAR_AND_PICK_INCLUDED",label:"\uD55C \uC74C\uC808 \uD3EC\uD568 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"scan-search",color:Ze,subTitle:"\uB4E4\uC740 \uC74C\uC808\uC774 \uD3EC\uD568\uB41C \uB2E8\uC5B4 \uCE74\uB4DC\uB97C \uACE0\uB974\uC138\uC694."},{key:"STARTS_WITH_SAME_SOUND",label:"\uCCAB \uC74C\uC808\uC774 \uAC19\uC740 \uB2E8\uC5B4 \uB9DE\uD788\uAE30",icon:"play-circle",color:Ze,subTitle:"\uB4E4\uC740 \uB2E8\uC5B4\uC640 \uAC19\uC740 \uC18C\uB9AC\uB85C \uC2DC\uC791\uD558\uB294 \uB2E8\uC5B4\uB97C \uACE0\uB974\uC138\uC694."}]},{key:"synthesis",label:"\uD569\uC131\uD6C8\uB828",disc:"\uB450 \uAC1C \uC774\uC0C1\uC758 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uD569\uCCD0 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"git-merge",types:[{key:"MERGE_2_SYLLABLES",label:"\uC74C\uC808 2\uAC1C \uD569\uCE58\uAE30",icon:"link-2",color:St,subTitle:"\uB450 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_SYLLABLES",label:"\uC74C\uC808 3\uAC1C \uD569\uCE58\uAE30",icon:"git-merge",color:St,subTitle:"\uC138 \uC74C\uC808\uC744 \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_2_PHONEMES",label:"\uC74C\uC18C 2\uAC1C \uD569\uCE58\uAE30",icon:"combine",color:St,subTitle:"\uB450 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"MERGE_3_PHONEMES",label:"\uC74C\uC18C 3\uAC1C \uD569\uCE58\uAE30",icon:"braces",color:St,subTitle:"\uC138 \uC74C\uC18C\uB97C \uD569\uCE58\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"}]},{key:"deletion",label:"\uD0C8\uB77D\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC5D0\uC11C \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uC81C\uAC70\uD588\uC744 \uB54C \uB0A8\uB294 \uC18C\uB9AC\uB97C \uC778\uC2DD\uD558\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"scissors",types:[{key:"DROP_1_FROM_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"scissors",color:Xe,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_1_FROM_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C 1\uC74C\uC808 \uD0C8\uB77D",icon:"minus-circle",color:Xe,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC5D0\uC11C \uD55C \uC74C\uC808\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_PART_FROM_COMPOUND",label:"\uD569\uC131\uC5B4\uC5D0\uC11C \uBD80\uBD84\uD0C8\uB77D",icon:"unlink",color:Xe,subTitle:"\uD569\uC131\uC5B4\uC758 \uC77C\uBD80\uB97C \uBE7C\uBA74 \uC5B4\uB5A4 \uB2E8\uC5B4\uAC00 \uB420\uAE4C\uC694?"},{key:"DROP_FINAL_CONSONANT_FROM_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uBC1B\uCE68 \uD0C8\uB77D",icon:"eraser",color:Xe,subTitle:"\uBC1B\uCE68\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB420\uAE4C\uC694?"},{key:"REMOVE_CONSONANT_AND_IDENTIFY_PHONEME",label:"1\uC74C\uC808\uC5D0\uC11C \uC790\uC74C \uD0C8\uB77D",icon:"audio-lines",color:Xe,subTitle:"\uC790\uC74C\uC744 \uBE7C\uBA74 \uC5B4\uB5A4 \uC18C\uB9AC\uAC00 \uB0A8\uC744\uAE4C\uC694?"}]},{key:"substitution",label:"\uB300\uCE58\uD6C8\uB828",disc:"\uB2E8\uC5B4\uC758 \uC77C\uBD80 \uC74C\uC808\uC774\uB098 \uC74C\uC18C\uB97C \uBC14\uAFB8\uC5B4 \uC0C8\uB85C\uC6B4 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uB294 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"replace",types:[{key:"CHANGE_1_SYLL_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"replace",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_SYLL_IN_3SYLL",label:"3\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC808 \uBC14\uAFB8\uAE30",icon:"shuffle",color:wt,subTitle:"3\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC808\uC744 \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_1SYLL",label:"1\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"arrow-right-left",color:wt,subTitle:"1\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uC18C\uB9AC\uB97C \uB9CC\uB4DC\uC138\uC694."},{key:"CHANGE_1_PHONEME_IN_2SYLL",label:"2\uC74C\uC808\uC5D0\uC11C \uD55C \uC74C\uC18C \uBC14\uAFB8\uAE30",icon:"flip-horizontal",color:wt,subTitle:"2\uC74C\uC808 \uB2E8\uC5B4\uC758 \uD55C \uC74C\uC18C\uB97C \uBC14\uAFD4 \uC0C8 \uB2E8\uC5B4\uB97C \uB9CC\uB4DC\uC138\uC694."}]},{key:"attention",label:"\uCCAD\uAC01\uC801\uC8FC\uC758\uB825\uD6C8\uB828",disc:"\uC5EC\uB7EC \uC18C\uB9AC\uB97C \uB4E3\uACE0 \uC21C\uC11C\uB97C \uAE30\uC5B5\uD558\uB294 \uC8FC\uC758\uB825\uACFC \uB2E8\uAE30 \uAE30\uC5B5 \uD6C8\uB828\uC785\uB2C8\uB2E4.",icon:"list-ordered",types:[{key:"LISTEN_AND_REMEMBER_ORDER",label:"\uB4E3\uACE0 \uC21C\uC11C\uB300\uB85C \uAE30\uC5B5\uD558\uAE30",icon:"list-ordered",color:Ql,subTitle:"\uC138 \uB2E8\uC5B4\uB97C \uB4E4\uC740 \uC21C\uC11C\uB300\uB85C \uCE74\uB4DC\uB97C \uC120\uD0DD\uD558\uC138\uC694."}]}];function Xl(){const{t:e}=se.useTranslation();return s.useMemo(()=>{const t=Object.fromEntries(Jl(e).map(o=>[o.key,o.label])),n={...t};return Zl.flatMap(o=>o.types).forEach(o=>{n[o.key]=e(`trainingType.${o.key}.label`,{defaultValue:o.label})}),{sentence:t,all:n}},[e])}function es({computeStyle:e,onScroll:t="close",onResize:n="close",ignoreOutsideClickSelector:o}){const[r,a]=s.useState(!1),[u,i]=s.useState({}),l=s.useRef(null),c=s.useRef(null),g=s.useCallback(()=>{l.current&&i(e(l.current.getBoundingClientRect(),l.current))},[e]);s.useEffect(()=>{if(!r)return;g();let f=c.current?.offsetHeight??0;f>0&&g();let m=0,w=null;typeof ResizeObserver<"u"&&c.current&&(w=new ResizeObserver(()=>{const L=c.current?.offsetHeight??0;if(L!==f){if(f=L,++m>4){w?.disconnect(),w=null;return}g()}}),w.observe(c.current));const h=L=>{const v=L.target;o&&v.closest?.(o)||l.current?.contains(v)||c.current?.contains(v)||a(!1)};document.addEventListener("mousedown",h),document.addEventListener("pointerdown",h);const p=L=>{c.current?.contains(L.target)||(t==="reposition"?g():t==="close"&&a(!1))};t!=="ignore"&&window.addEventListener("scroll",p,!0);const y=()=>{n==="reposition"?g():n==="close"&&a(!1)};let S=null;const E=()=>{y(),S&&clearTimeout(S),S=setTimeout(()=>{S=null,n==="reposition"&&g()},250)};return n!=="ignore"&&(window.addEventListener("resize",y),window.addEventListener("orientationchange",E)),()=>{w?.disconnect(),document.removeEventListener("mousedown",h),document.removeEventListener("pointerdown",h),t!=="ignore"&&window.removeEventListener("scroll",p,!0),n!=="ignore"&&(window.removeEventListener("resize",y),window.removeEventListener("orientationchange",E)),S&&clearTimeout(S)}},[r,g,t,n,o]),s.useEffect(()=>{if(r)return wo(()=>a(!1))},[r]);const d=s.useCallback(()=>a(f=>!f),[]),C=s.useCallback(()=>a(!1),[]);return{open:r,setOpen:a,toggle:d,close:C,style:u,triggerRef:l,menuRef:c}}function ts(e,{mode:t="playback",autoStart:n=!1,onPlaySpeaker:o,onComplete:r,playMs:a=1100,feedbackMs:u=1500}={}){const[i,l]=s.useState([]),[c,g]=s.useState(0),[d,C]=s.useState("idle"),[f,m]=s.useState(null),[w,h]=s.useState([]),[p,y]=s.useState(null),[S,E]=s.useState(0),L=s.useRef(0),v=s.useCallback(P=>{L.current=typeof P=="function"?P(L.current):P,E(L.current)},[]),T=s.useRef(o),D=s.useRef(r);s.useEffect(()=>{T.current=o,D.current=r},[o,r]);const I=s.useRef([]),B=()=>{I.current.forEach(clearTimeout),I.current=[]},$=(P,G)=>{I.current.push(setTimeout(G,P))};s.useEffect(()=>()=>B(),[]);const F=i[c]?.id??null,M=s.useRef(null),O=s.useCallback(()=>{B(),C("playing"),h([]),y(null),v(0);let P=0;e.forEach((G,Y)=>{$(P,()=>{g(Y),m(G.id),T.current?.(G)}),$(P+1e3,()=>{m(null),h(ee=>[...ee,G.id])}),P+=1300}),$(P,()=>{C("done"),D.current?.({score:0,total:e.length})})},[e,v]),k=s.useCallback((P,G)=>{if(G>=P.length){C("done"),D.current?.({score:L.current,total:P.length});return}M.current=null,g(G),y(null),C("playing"),m(P[G].id),T.current?.(P[G]),$(a,()=>{m(null),C("waiting")})},[a]),W=s.useCallback(()=>{B();const P=H(e);l(P),v(0),h([]),k(P,0)},[e,k,v]),X=s.useCallback(()=>{t==="playback"?(l(e),O()):W()},[t,e,O,W]),U=s.useCallback(()=>{B(),C("idle"),m(null),h([]),y(null),g(0),v(0),l([])},[v]),he=e.map(P=>P.id).join("|");s.useEffect(()=>(n?X():U(),()=>B()),[t,he,n]);const A=s.useCallback(P=>{d!=="waiting"||t==="playback"||M.current===c||(M.current=c,y(P),P===i[c]?.id&&v(G=>G+1),t==="exam"?(C("playing"),$(400,()=>k(i,c+1))):(C("feedback"),$(u,()=>k(i,c+1))))},[d,t,i,c,k,u,v]),N=t==="playback"?e.length:i.length;return{bind:{activeSpeakerId:f,playedIds:w,selectedId:p,answerId:F,showFeedback:d==="feedback",clickable:d==="waiting",onSelectSpeaker:A},index:c,total:N,score:S,phase:d,done:d==="done",start:X,reset:U}}exports.CACHE_GROUPS=Nn,exports.CORE_VERSION=Yi,exports.DocumentTitleSuppressContext=hn,exports.EMPTY_COMPOSITION=qt,exports.MediaQueryOverrideContext=Cn,exports.NO_CODA=ie,exports.SYLLABLE_MIN=le,exports.VAP_PAGE_SIZE_OPTIONS=rt,exports.buildGradeSection=eo,exports.buildPartOfSpeechSection=to,exports.buildPositionSection=il,exports.buildSelectSection=ul,exports.buildSyllableSection=al,exports.buildWordTypeSection=no,exports.charToPronValue=co,exports.convertComposition=go,exports.fmtBytes=dr,exports.lsBytes=_n,exports.meaningKey=on,exports.normalizeWordAttributeFilter=ol,exports.pronToCharValue=Co,exports.syllableToFilter=Kt,exports.toWordAttributeFilterCodes=Gt,exports.today=Fe,exports.toggleAttributeFilter=ll,exports.useAnchoredMenu=es,exports.useCacheManagement=Cr,exports.useDailyTrainingSelection=Fl,exports.useDelayedHoverAnchor=Wl,exports.useDeviceManagement=Dr,exports.useDocumentTitle=Go,exports.useEscToClose=$l,exports.useFontScale=ko,exports.useHoverAnchor=Vl,exports.useListControls=Kl,exports.useMediaQuery=Ho,exports.usePageResetOnChange=vo,exports.usePagedList=Yl,exports.usePasswordChange=qo,exports.useRelativeDay=Ko,exports.useSoundCompassExam=ts,exports.useTablePaging=vr,exports.useTableSort=Br,exports.useToastState=Ul,exports.useTrainingTypeLabels=Xl,exports.useVisitAllPanel=yr,exports.useVisitHistory=mr,exports.useVisitSchedule=hr,exports.useWindowEvent=mn,exports.useWordAttributeFilterKeys=Xn,exports.useWordDataStats=gr,exports.useWordMeanings=Gl,exports.useWordTrainingDataGeneration=Nl,exports.useWordTrainingFilter=Dl,exports.valueToJamos=ge,exports.wordAttributeFilterFromCodes=Vt;