diff --git a/public/build/assets/About-2c92bb64.js b/public/build/assets/About-21528213.js similarity index 97% rename from public/build/assets/About-2c92bb64.js rename to public/build/assets/About-21528213.js index ec6edb1e..11d263dd 100644 --- a/public/build/assets/About-2c92bb64.js +++ b/public/build/assets/About-21528213.js @@ -1 +1 @@ -import{Q as b,u as k,e as i,f as g,k as C,p as r,h as s,t,m as o,n as c,j as e,i as h,U as u}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const B={class:"title has-text-grey-dark"},F={class:"block"},A=s("span",{class:"is-size-5"},"2FAuth",-1),w=s("br",null,null,-1),y=s("img",{class:"about-logo",src:"logo.svg",alt:"2FAuth logo"},null,-1),v=s("p",{class:"block"},[e(" ©Bubka "),s("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/blob/master/LICENSE"},"AGPL-3.0 license")],-1),I={class:"title is-5 has-text-grey-light"},L={class:"buttons"},$={class:"icon is-small"},S=s("span",null,"Github",-1),T={class:"icon is-small"},V=s("span",null,"Docs",-1),z={class:"icon is-small"},N=s("span",null,"Demo",-1),D={class:"icon is-small"},E=s("span",null,"API",-1),W={class:"title is-5 has-text-grey-light"},j={class:"block"},M=s("a",{href:"https://docs.2fauth.app/credits/"},"Laravel, Bulma CSS, Vue.js and more",-1),R=s("a",{href:"https://fontawesome.com/"},"Font Awesome",-1),x=s("a",{class:"is-size-7",href:"https://fontawesome.com/license/free"},"(CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)",-1),G=s("a",{href:"https://2fa.directory/"},"2FA Directory",-1),P=s("a",{class:"is-size-7",href:"https://github.com/2factorauth/twofactorauth/blob/master/LICENSE.md"},"(MIT License)",-1),q={__name:"About",setup(U){const _=b("2fauth"),d=k().options.history.state.back;return(a,Q)=>{const l=i("FontAwesomeIcon"),p=i("ButtonBackCloseCancel"),m=i("VueFooter"),f=i("ResponsiveWidthWrapper");return g(),C(f,null,{default:r(()=>[s("h1",B,t(a.$t("commons.about")),1),s("p",F,[o(h(u),null,{default:r(({mode:n})=>[s("span",{class:c(n=="dark"?"has-text-white":"has-text-black")},[A,e(" v"+t(h(_).version),1)],2)]),_:1}),w,e(" "+t(a.$t("commons.2fauth_teaser")),1)]),y,v,s("h2",I,t(a.$t("commons.resources")),1),s("div",L,[o(h(u),null,{default:r(({mode:n})=>[s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://github.com/Bubka/2FAuth",target:"_blank"},[s("span",$,[o(l,{icon:["fab","github-alt"]})]),S],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/",target:"_blank"},[s("span",T,[o(l,{icon:["fas","book"]})]),V],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://demo.2fauth.app/",target:"_blank"},[s("span",z,[o(l,{icon:["fas","flask"]})]),N],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/resources/rapidoc.html",target:"_blank"},[s("span",D,[o(l,{icon:["fas","code"]})]),E],2)]),_:1})]),s("h2",W,t(a.$t("commons.credits")),1),s("p",j,[s("ul",null,[s("li",null,[e(t(a.$t("commons.made_with"))+" ",1),M]),s("li",null,[e(t(a.$t("commons.ui_icons_by"))+" ",1),R,e(" "),x]),s("li",null,[e(t(a.$t("commons.logos_by"))+" ",1),G,e(" "),P])])]),o(m,{showButtons:!0},{default:r(()=>[o(p,{returnTo:{path:h(d)},action:"back"},null,8,["returnTo"])]),_:1})]),_:1})}}};export{q as default}; +import{Q as b,u as k,e as i,f as g,k as C,p as r,h as s,t,m as o,n as c,j as e,i as h,U as u}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const B={class:"title has-text-grey-dark"},F={class:"block"},A=s("span",{class:"is-size-5"},"2FAuth",-1),w=s("br",null,null,-1),y=s("img",{class:"about-logo",src:"logo.svg",alt:"2FAuth logo"},null,-1),v=s("p",{class:"block"},[e(" ©Bubka "),s("a",{class:"is-size-7",href:"https://github.com/Bubka/2FAuth/blob/master/LICENSE"},"AGPL-3.0 license")],-1),I={class:"title is-5 has-text-grey-light"},L={class:"buttons"},$={class:"icon is-small"},S=s("span",null,"Github",-1),T={class:"icon is-small"},V=s("span",null,"Docs",-1),z={class:"icon is-small"},N=s("span",null,"Demo",-1),D={class:"icon is-small"},E=s("span",null,"API",-1),W={class:"title is-5 has-text-grey-light"},j={class:"block"},M=s("a",{href:"https://docs.2fauth.app/credits/"},"Laravel, Bulma CSS, Vue.js and more",-1),R=s("a",{href:"https://fontawesome.com/"},"Font Awesome",-1),x=s("a",{class:"is-size-7",href:"https://fontawesome.com/license/free"},"(CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)",-1),G=s("a",{href:"https://2fa.directory/"},"2FA Directory",-1),P=s("a",{class:"is-size-7",href:"https://github.com/2factorauth/twofactorauth/blob/master/LICENSE.md"},"(MIT License)",-1),q={__name:"About",setup(U){const _=b("2fauth"),d=k().options.history.state.back;return(a,Q)=>{const l=i("FontAwesomeIcon"),p=i("ButtonBackCloseCancel"),m=i("VueFooter"),f=i("ResponsiveWidthWrapper");return g(),C(f,null,{default:r(()=>[s("h1",B,t(a.$t("commons.about")),1),s("p",F,[o(h(u),null,{default:r(({mode:n})=>[s("span",{class:c(n=="dark"?"has-text-white":"has-text-black")},[A,e(" v"+t(h(_).version),1)],2)]),_:1}),w,e(" "+t(a.$t("commons.2fauth_teaser")),1)]),y,v,s("h2",I,t(a.$t("commons.resources")),1),s("div",L,[o(h(u),null,{default:r(({mode:n})=>[s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://github.com/Bubka/2FAuth",target:"_blank"},[s("span",$,[o(l,{icon:["fab","github-alt"]})]),S],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/",target:"_blank"},[s("span",T,[o(l,{icon:["fas","book"]})]),V],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://demo.2fauth.app/",target:"_blank"},[s("span",z,[o(l,{icon:["fas","flask"]})]),N],2),s("a",{class:c(["button",{"is-dark":n=="dark"}]),href:"https://docs.2fauth.app/resources/rapidoc.html",target:"_blank"},[s("span",D,[o(l,{icon:["fas","code"]})]),E],2)]),_:1})]),s("h2",W,t(a.$t("commons.credits")),1),s("p",j,[s("ul",null,[s("li",null,[e(t(a.$t("commons.made_with"))+" ",1),M]),s("li",null,[e(t(a.$t("commons.ui_icons_by"))+" ",1),R,e(" "),x]),s("li",null,[e(t(a.$t("commons.logos_by"))+" ",1),G,e(" "),P])])]),o(m,{showButtons:!0},{default:r(()=>[o(p,{returnTo:{path:h(d)},action:"back"},null,8,["returnTo"])]),_:1})]),_:1})}}};export{q as default}; diff --git a/public/build/assets/Account-b029928c.js b/public/build/assets/Account-a7d249ba.js similarity index 97% rename from public/build/assets/Account-b029928c.js rename to public/build/assets/Account-a7d249ba.js index 22315ece..07210344 100644 --- a/public/build/assets/Account-b029928c.js +++ b/public/build/assets/Account-a7d249ba.js @@ -1 +1 @@ -import{Q as A,a as U,b as C,u as D,a2 as K,d as y,a0 as L,e as p,f as _,g as w,m as a,h as n,p as E,i as s,t as u,l as g,D as b,I as V}from"./app-94c6def1.js";import{F as v}from"./Form-88ba26a4.js";import{_ as R}from"./SettingTabs-beebcb43.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const M={class:"options-tabs"},W={key:0,class:"notification is-warning"},H={key:1,class:"notification is-info"},I=["onSubmit"],j=["innerHTML"],z={class:"title is-4 has-text-grey-light"},Q=["disabled"],q=["onSubmit"],G={class:"title is-4 pt-6 has-text-grey-light"},J=["disabled"],O=["onSubmit"],X={class:"title is-4 pt-6 has-text-danger"},Y={class:"field is-size-7-mobile"},Z={class:"block"},ee=["disabled"],ae={__name:"Account",setup(se){const c=A("2fauth"),d=U(),i=C(),F=D(),x=K(c.prefix+"returnTo","accounts"),l=y(new v({name:d.name,email:d.email,password:""})),t=y(new v({currentPassword:"",password:"",password_confirmation:""})),m=y(new v({password:""}));function T(r){l.put("/user",{returnError:!0}).then(e=>{d.$patch({name:e.data.name,email:e.data.email,isAdmin:e.data.is_admin}),i.success({text:V("auth.forms.profile_saved")})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function P(r){t.patch("/user/password",{returnError:!0}).then(e=>{t.password="",t.formPassword="",t.password_confirmation="",i.success({text:e.data.message})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function $(r){confirm(V("auth.confirm.delete_account"))&&m.delete("/user",{returnError:!0}).then(e=>{i.success({text:V("auth.forms.user_account_successfully_deleted")}),F.push({name:"register"})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}return L(r=>{!r.name.startsWith("settings.")&&r.name==="login"&&i.clear()}),(r,e)=>{const f=p("FormField"),h=p("FormButtons"),B=p("FormPasswordField"),N=p("FormWrapper"),S=p("ButtonBackCloseCancel"),k=p("VueFooter");return _(),w("div",null,[a(R,{activeTab:"settings.account"},null,8,["activeTab"]),n("div",M,[a(N,null,{default:E(()=>[s(d).isAdmin?(_(),w("div",W,u(r.$t("settings.you_are_administrator")),1)):g("",!0),s(d).oauth_provider?(_(),w("div",H,u(r.$t("settings.account_linked_to_sso_x_provider",{provider:s(d).oauth_provider})),1)):g("",!0),n("form",{onSubmit:b(T,["prevent"]),onKeydown:e[3]||(e[3]=o=>s(l).onKeydown(o))},[s(c).config.proxyAuth?(_(),w("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:r.$t("auth.user_account_controlled_by_proxy")},null,8,j)):g("",!0),n("h4",z,u(r.$t("settings.profile")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(f,{modelValue:s(l).name,"onUpdate:modelValue":e[0]||(e[0]=o=>s(l).name=o),fieldName:"name",fieldError:s(l).errors.get("name"),label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).email,"onUpdate:modelValue":e[1]||(e[1]=o=>s(l).email=o),fieldName:"email",fieldError:s(l).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).password,"onUpdate:modelValue":e[2]||(e[2]=o=>s(l).password=o),fieldName:"password",fieldError:s(l).errors.get("password"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(l).isBusy,caption:"commons.update"},null,8,["isBusy"])],8,Q)],40,I),n("form",{onSubmit:b(P,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",G,u(r.$t("settings.change_password")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(B,{modelValue:s(t).password,"onUpdate:modelValue":e[4]||(e[4]=o=>s(t).password=o),fieldName:"password",fieldError:s(t).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),a(B,{modelValue:s(t).password_confirmation,"onUpdate:modelValue":e[5]||(e[5]=o=>s(t).password_confirmation=o),showRules:!1,fieldName:"password_confirmation",fieldError:s(t).errors.get("password_confirmation"),inputType:"password",autocomplete:"new-password",label:"auth.forms.confirm_new_password"},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(t).currentPassword,"onUpdate:modelValue":e[6]||(e[6]=o=>s(t).currentPassword=o),fieldName:"currentPassword",fieldError:s(t).errors.get("currentPassword"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(t).isBusy,caption:"auth.forms.change_password"},null,8,["isBusy"])],8,J)],40,q),n("form",{id:"frmDeleteAccount",onSubmit:b($,["prevent"]),onKeydown:e[9]||(e[9]=o=>s(m).onKeydown(o))},[n("h4",X,u(r.$t("auth.forms.delete_account")),1),n("div",Y,[n("p",Z,u(r.$t("auth.forms.delete_your_account_and_reset_all_data")),1),n("p",null,u(r.$t("auth.forms.reset_your_password_to_delete_your_account")),1),n("p",null,u(r.$t("auth.forms.deleting_2fauth_account_does_not_impact_provider")),1)]),n("fieldset",{disabled:s(c).config.proxyAuth},[a(f,{modelValue:s(m).password,"onUpdate:modelValue":e[8]||(e[8]=o=>s(m).password=o),fieldName:"password",fieldError:s(m).errors.get("password"),inputType:"password",autocomplete:"new-password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(m).isBusy,caption:"auth.forms.delete_your_account",submitId:"btnDeleteAccount",color:"is-danger"},null,8,["isBusy"])],8,ee)],40,O)]),_:1})]),a(k,{showButtons:!0},{default:E(()=>[a(S,{returnTo:{name:s(x)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{ae as default}; +import{Q as A,a as U,b as C,u as D,a2 as K,d as y,a0 as L,e as p,f as _,g as w,m as a,h as n,p as E,i as s,t as u,l as g,D as b,I as V}from"./app-60af1d1a.js";import{F as v}from"./Form-0a788c90.js";import{_ as R}from"./SettingTabs-0b59e581.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const M={class:"options-tabs"},W={key:0,class:"notification is-warning"},H={key:1,class:"notification is-info"},I=["onSubmit"],j=["innerHTML"],z={class:"title is-4 has-text-grey-light"},Q=["disabled"],q=["onSubmit"],G={class:"title is-4 pt-6 has-text-grey-light"},J=["disabled"],O=["onSubmit"],X={class:"title is-4 pt-6 has-text-danger"},Y={class:"field is-size-7-mobile"},Z={class:"block"},ee=["disabled"],ae={__name:"Account",setup(se){const c=A("2fauth"),d=U(),i=C(),F=D(),x=K(c.prefix+"returnTo","accounts"),l=y(new v({name:d.name,email:d.email,password:""})),t=y(new v({currentPassword:"",password:"",password_confirmation:""})),m=y(new v({password:""}));function T(r){l.put("/user",{returnError:!0}).then(e=>{d.$patch({name:e.data.name,email:e.data.email,isAdmin:e.data.is_admin}),i.success({text:V("auth.forms.profile_saved")})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function P(r){t.patch("/user/password",{returnError:!0}).then(e=>{t.password="",t.formPassword="",t.password_confirmation="",i.success({text:e.data.message})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}function $(r){confirm(V("auth.confirm.delete_account"))&&m.delete("/user",{returnError:!0}).then(e=>{i.success({text:V("auth.forms.user_account_successfully_deleted")}),F.push({name:"register"})}).catch(e=>{e.response.status===400?i.alert({text:e.response.data.message}):e.response.status!==422&&i.error(e.response)})}return L(r=>{!r.name.startsWith("settings.")&&r.name==="login"&&i.clear()}),(r,e)=>{const f=p("FormField"),h=p("FormButtons"),B=p("FormPasswordField"),N=p("FormWrapper"),S=p("ButtonBackCloseCancel"),k=p("VueFooter");return _(),w("div",null,[a(R,{activeTab:"settings.account"},null,8,["activeTab"]),n("div",M,[a(N,null,{default:E(()=>[s(d).isAdmin?(_(),w("div",W,u(r.$t("settings.you_are_administrator")),1)):g("",!0),s(d).oauth_provider?(_(),w("div",H,u(r.$t("settings.account_linked_to_sso_x_provider",{provider:s(d).oauth_provider})),1)):g("",!0),n("form",{onSubmit:b(T,["prevent"]),onKeydown:e[3]||(e[3]=o=>s(l).onKeydown(o))},[s(c).config.proxyAuth?(_(),w("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:r.$t("auth.user_account_controlled_by_proxy")},null,8,j)):g("",!0),n("h4",z,u(r.$t("settings.profile")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(f,{modelValue:s(l).name,"onUpdate:modelValue":e[0]||(e[0]=o=>s(l).name=o),fieldName:"name",fieldError:s(l).errors.get("name"),label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).email,"onUpdate:modelValue":e[1]||(e[1]=o=>s(l).email=o),fieldName:"email",fieldError:s(l).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(l).password,"onUpdate:modelValue":e[2]||(e[2]=o=>s(l).password=o),fieldName:"password",fieldError:s(l).errors.get("password"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(l).isBusy,caption:"commons.update"},null,8,["isBusy"])],8,Q)],40,I),n("form",{onSubmit:b(P,["prevent"]),onKeydown:e[7]||(e[7]=o=>s(t).onKeydown(o))},[n("h4",G,u(r.$t("settings.change_password")),1),n("fieldset",{disabled:s(c).config.proxyAuth||s(d).oauth_provider},[a(B,{modelValue:s(t).password,"onUpdate:modelValue":e[4]||(e[4]=o=>s(t).password=o),fieldName:"password",fieldError:s(t).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),a(B,{modelValue:s(t).password_confirmation,"onUpdate:modelValue":e[5]||(e[5]=o=>s(t).password_confirmation=o),showRules:!1,fieldName:"password_confirmation",fieldError:s(t).errors.get("password_confirmation"),inputType:"password",autocomplete:"new-password",label:"auth.forms.confirm_new_password"},null,8,["modelValue","fieldError"]),a(f,{modelValue:s(t).currentPassword,"onUpdate:modelValue":e[6]||(e[6]=o=>s(t).currentPassword=o),fieldName:"currentPassword",fieldError:s(t).errors.get("currentPassword"),inputType:"password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(t).isBusy,caption:"auth.forms.change_password"},null,8,["isBusy"])],8,J)],40,q),n("form",{id:"frmDeleteAccount",onSubmit:b($,["prevent"]),onKeydown:e[9]||(e[9]=o=>s(m).onKeydown(o))},[n("h4",X,u(r.$t("auth.forms.delete_account")),1),n("div",Y,[n("p",Z,u(r.$t("auth.forms.delete_your_account_and_reset_all_data")),1),n("p",null,u(r.$t("auth.forms.reset_your_password_to_delete_your_account")),1),n("p",null,u(r.$t("auth.forms.deleting_2fauth_account_does_not_impact_provider")),1)]),n("fieldset",{disabled:s(c).config.proxyAuth},[a(f,{modelValue:s(m).password,"onUpdate:modelValue":e[8]||(e[8]=o=>s(m).password=o),fieldName:"password",fieldError:s(m).errors.get("password"),inputType:"password",autocomplete:"new-password",label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),a(h,{isBusy:s(m).isBusy,caption:"auth.forms.delete_your_account",submitId:"btnDeleteAccount",color:"is-danger"},null,8,["isBusy"])],8,ee)],40,O)]),_:1})]),a(k,{showButtons:!0},{default:E(()=>[a(S,{returnTo:{name:s(x)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{ae as default}; diff --git a/public/build/assets/Accounts-bba10aec.js b/public/build/assets/Accounts-7bc9693f.js similarity index 99% rename from public/build/assets/Accounts-bba10aec.js rename to public/build/assets/Accounts-7bc9693f.js index bcb9e5fb..04ed48d9 100644 --- a/public/build/assets/Accounts-bba10aec.js +++ b/public/build/assets/Accounts-7bc9693f.js @@ -1,4 +1,4 @@ -import{a as Ft,e as te,f as S,g as C,h as y,F as ut,G as dt,m as O,p as B,n as U,t as x,i as p,U as $e,j as ze,J as hn,r as oe,K as nt,L as mn,z as gn,u as Qt,k as Se,l as Y,M as vn,N as bn,O as _n,o as Zt,P as We,E as ot,Q as yn,b as wn,R as Sn,S as En,c as Dn,T as kn,x as bt,v as Cn,I as _t,D as Oe,V as Tn,A as yt,W as On,w as wt,X as Re,B as Xt,Y as In}from"./app-94c6def1.js";import{_ as An,a as Mn,b as $n}from"./OtpDisplay-4c8a5daa.js";import{_ as xn}from"./SearchBox-23302ff7.js";import{u as Pn}from"./bus-d94d2521.js";import"./Spinner-f03b508f.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Nn={id:"groupSwitch",class:"container groups"},Fn={class:"columns is-centered"},Bn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Gn={class:"columns is-multiline"},Rn=["onClick"],Ln={class:"columns is-centered"},Xn={class:"column has-text-centered"},Yn={__name:"GroupSwitch",props:{showGroupSwitch:Boolean,groups:Array},emits:["update:showGroupSwitch"],setup(t,{emit:e}){const n=Ft();function o(i){n.preferences.activeGroup=i,n.preferences.rememberActiveGroup&&hn.updatePreference("activeGroup",i),e("update:showGroupSwitch",!1)}return(i,r)=>{const s=te("RouterLink"),l=te("ButtonBackCloseCancel"),u=te("VueFooter");return S(),C("div",Nn,[y("div",Fn,[y("div",Bn,[y("div",Gn,[(S(!0),C(ut,null,dt(t.groups,a=>(S(),C("div",{class:"column is-full",key:a.id},[O(p($e),null,{default:B(({mode:c})=>[y("button",{class:U(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:f=>o(a.id)},x(a.name),11,Rn)]),_:2},1024)]))),128))]),y("div",Ln,[y("div",Xn,[O(s,{to:{name:"groups"}},{default:B(()=>[ze(x(i.$t("groups.manage_groups")),1)]),_:1})])])])]),O(u,{showButtons:!0},{default:B(()=>[O(l,{action:"close",useLinkTag:!1,onClosed:r[0]||(r[0]=a=>i.$emit("update:showGroupSwitch",!1))})]),_:1})])}}},zn={class:"container group-selector"},Wn={class:"columns is-centered is-multiline"},qn={class:"column is-full has-text-centered"},Hn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Un={class:"columns is-multiline"},jn=["onClick"],Vn={key:0,class:"is-italic"},Kn={key:1},Qn={class:"columns is-centered"},Zn={class:"column has-text-centered"},Jn={class:"control"},eo={__name:"DestinationGroupSelector",props:{showDestinationGroupSelector:Boolean,selectedAccountsIds:Array,groups:Array},emits:["update:showDestinationGroupSelector","accounts-moved"],setup(t,{emit:e}){const n=t,o=oe(null);async function i(){o.value===0?await nt.withdraw(n.selectedAccountsIds):await mn.assign(n.selectedAccountsIds,o.value),e("accounts-moved")}return(r,s)=>{const l=te("RouterLink"),u=te("ButtonBackCloseCancel"),a=te("VueFooter");return S(),C("div",zn,[y("div",Wn,[y("div",qn,x(r.$t("groups.move_selected_to")),1),y("div",Hn,[y("div",Un,[(S(!0),C(ut,null,dt(t.groups,c=>(S(),C("div",{class:"column is-full",key:c.id},[O(p($e),null,{default:B(({mode:f})=>[y("button",{class:U(["button is-fullwidth",{"is-link":p(o)===c.id,"is-dark has-text-light is-outlined":f=="dark"}]),onClick:_=>o.value=c.id},[c.id===0?(S(),C("span",Vn,x(r.$t("groups.no_group")),1)):(S(),C("span",Kn,x(c.name),1))],10,jn)]),_:2},1024)]))),128))]),y("div",Qn,[y("div",Zn,[O(l,{to:{name:"groups"}},{default:B(()=>[ze(x(r.$t("groups.manage_groups")),1)]),_:1})])])])]),O(a,{showButtons:!0},{default:B(()=>[y("p",Jn,[y("button",{class:"button is-link is-rounded",onClick:i},x(r.$t("commons.move")),1)]),O(u,{action:"cancel",useLinkTag:!1,onCanceled:s[0]||(s[0]=c=>r.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},to={class:"toolbar has-text-centered"},no={class:"columns"},oo={class:"column has-nowrap px-0"},io={class:"has-text-grey mr-1"},ro=["title"],so=["title"],ao=["title"],lo=["title"],uo={__name:"Toolbar",props:{selectedCount:Number},setup(t){return(e,n)=>{const o=te("FontAwesomeIcon");return S(),C("div",to,[y("div",no,[y("div",oo,[y("span",io,x(e.$t("commons.x_selected",{count:t.selectedCount})),1),y("button",{id:"btnUnselectAll",onClick:n[0]||(n[0]=i=>e.$emit("clear-selected")),class:"clear-selection delete mr-4",style:gn({visibility:t.selectedCount>0?"visible":"hidden"}),title:e.$t("commons.clear_selection")},null,12,ro),y("button",{id:"btnSelectAll",onClick:n[1]||(n[1]=i=>e.$emit("select-all")),class:"button mr-5 has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.select_all")},[y("span",null,x(e.$t("commons.check_all")),1),O(o,{class:"ml-1",icon:["fas","check-square"]})],8,so),y("button",{id:"btnSortAscending",onClick:n[2]||(n[2]=i=>e.$emit("sort-asc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_ascending")},[O(o,{icon:["fas","sort-alpha-down"]})],8,ao),y("button",{id:"btnSortDescending",onClick:n[3]||(n[3]=i=>e.$emit("sort-desc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_descending")},[O(o,{icon:["fas","sort-alpha-up"]})],8,lo)])])])}}},co={key:0,class:"control"},fo={class:"icon is-small"},po={key:1,class:"control"},ho={key:2,class:"control"},mo=["disabled","title"],go={key:3,class:"control"},vo=["disabled"],bo={key:4,class:"control"},_o=["disabled","title"],yo={__name:"ActionButtons",props:{inManagementMode:Boolean,areDisabled:Boolean},emits:["update:inManagementMode","move-button-clicked","delete-button-clicked","export-button-clicked"],setup(t,{emit:e}){const n=Qt(),o=Ft();function i(){o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="advancedForm"?n.push({name:"createAccount"}):o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="livescan"?n.push({name:"capture"}):n.push({name:"start"})}return(r,s)=>{const l=te("FontAwesomeIcon");return S(),Se(p($e),null,{default:B(({mode:u})=>[t.inManagementMode?Y("",!0):(S(),C("p",co,[y("button",{class:"button is-link is-rounded is-focus",onClick:i},[y("span",null,x(r.$t("commons.new")),1),y("span",fo,[O(l,{icon:["fas","qrcode"]})])])])),t.inManagementMode?Y("",!0):(S(),C("p",po,[y("button",{id:"btnManage",class:U(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},x(r.$t("commons.manage")),3)])),t.inManagementMode?(S(),C("p",ho,[y("button",{id:"btnMove",disabled:t.areDisabled,class:U(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[1]||(s[1]=a=>r.$emit("move-button-clicked")),title:r.$t("groups.move_selected_to_group")},x(r.$t("commons.move")),11,mo)])):Y("",!0),t.inManagementMode?(S(),C("p",go,[y("button",{id:"btnDelete",disabled:t.areDisabled,class:U(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[2]||(s[2]=a=>r.$emit("delete-button-clicked"))},x(r.$t("commons.delete")),11,vo)])):Y("",!0),t.inManagementMode?(S(),C("p",bo,[y("button",{id:"btnExport",disabled:t.areDisabled,class:U(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[3]||(s[3]=a=>r.$emit("export-button-clicked")),title:r.$t("twofaccounts.export_selected_to_json")},x(r.$t("commons.export")),11,_o)])):Y("",!0)]),_:1})}}};function wo(t){return vn()?(bn(t),!0):!1}function Mt(t){return typeof t=="function"?t():p(t)}const So=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function Eo(t,e=!0){_n()?Zt(t):e?t():We(t)}function Do(t){var e;const n=Mt(t);return(e=n==null?void 0:n.$el)!=null?e:n}const ko=So?window.document:void 0;/**! +import{a as Ft,e as te,f as S,g as C,h as y,F as ut,G as dt,m as O,p as B,n as U,t as x,i as p,U as $e,j as ze,J as hn,r as oe,K as nt,L as mn,z as gn,u as Qt,k as Se,l as Y,M as vn,N as bn,O as _n,o as Zt,P as We,E as ot,Q as yn,b as wn,R as Sn,S as En,c as Dn,T as kn,x as bt,v as Cn,I as _t,D as Oe,V as Tn,A as yt,W as On,w as wt,X as Re,B as Xt,Y as In}from"./app-60af1d1a.js";import{_ as An,a as Mn,b as $n}from"./OtpDisplay-f582bb88.js";import{_ as xn}from"./SearchBox-62743462.js";import{u as Pn}from"./bus-ab2b6d74.js";import"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Nn={id:"groupSwitch",class:"container groups"},Fn={class:"columns is-centered"},Bn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Gn={class:"columns is-multiline"},Rn=["onClick"],Ln={class:"columns is-centered"},Xn={class:"column has-text-centered"},Yn={__name:"GroupSwitch",props:{showGroupSwitch:Boolean,groups:Array},emits:["update:showGroupSwitch"],setup(t,{emit:e}){const n=Ft();function o(i){n.preferences.activeGroup=i,n.preferences.rememberActiveGroup&&hn.updatePreference("activeGroup",i),e("update:showGroupSwitch",!1)}return(i,r)=>{const s=te("RouterLink"),l=te("ButtonBackCloseCancel"),u=te("VueFooter");return S(),C("div",Nn,[y("div",Fn,[y("div",Bn,[y("div",Gn,[(S(!0),C(ut,null,dt(t.groups,a=>(S(),C("div",{class:"column is-full",key:a.id},[O(p($e),null,{default:B(({mode:c})=>[y("button",{class:U(["button is-fullwidth",{"is-dark has-text-light is-outlined":c=="dark"}]),onClick:f=>o(a.id)},x(a.name),11,Rn)]),_:2},1024)]))),128))]),y("div",Ln,[y("div",Xn,[O(s,{to:{name:"groups"}},{default:B(()=>[ze(x(i.$t("groups.manage_groups")),1)]),_:1})])])])]),O(u,{showButtons:!0},{default:B(()=>[O(l,{action:"close",useLinkTag:!1,onClosed:r[0]||(r[0]=a=>i.$emit("update:showGroupSwitch",!1))})]),_:1})])}}},zn={class:"container group-selector"},Wn={class:"columns is-centered is-multiline"},qn={class:"column is-full has-text-centered"},Hn={class:"column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd"},Un={class:"columns is-multiline"},jn=["onClick"],Vn={key:0,class:"is-italic"},Kn={key:1},Qn={class:"columns is-centered"},Zn={class:"column has-text-centered"},Jn={class:"control"},eo={__name:"DestinationGroupSelector",props:{showDestinationGroupSelector:Boolean,selectedAccountsIds:Array,groups:Array},emits:["update:showDestinationGroupSelector","accounts-moved"],setup(t,{emit:e}){const n=t,o=oe(null);async function i(){o.value===0?await nt.withdraw(n.selectedAccountsIds):await mn.assign(n.selectedAccountsIds,o.value),e("accounts-moved")}return(r,s)=>{const l=te("RouterLink"),u=te("ButtonBackCloseCancel"),a=te("VueFooter");return S(),C("div",zn,[y("div",Wn,[y("div",qn,x(r.$t("groups.move_selected_to")),1),y("div",Hn,[y("div",Un,[(S(!0),C(ut,null,dt(t.groups,c=>(S(),C("div",{class:"column is-full",key:c.id},[O(p($e),null,{default:B(({mode:f})=>[y("button",{class:U(["button is-fullwidth",{"is-link":p(o)===c.id,"is-dark has-text-light is-outlined":f=="dark"}]),onClick:_=>o.value=c.id},[c.id===0?(S(),C("span",Vn,x(r.$t("groups.no_group")),1)):(S(),C("span",Kn,x(c.name),1))],10,jn)]),_:2},1024)]))),128))]),y("div",Qn,[y("div",Zn,[O(l,{to:{name:"groups"}},{default:B(()=>[ze(x(r.$t("groups.manage_groups")),1)]),_:1})])])])]),O(a,{showButtons:!0},{default:B(()=>[y("p",Jn,[y("button",{class:"button is-link is-rounded",onClick:i},x(r.$t("commons.move")),1)]),O(u,{action:"cancel",useLinkTag:!1,onCanceled:s[0]||(s[0]=c=>r.$emit("update:showDestinationGroupSelector",!1))})]),_:1})])}}},to={class:"toolbar has-text-centered"},no={class:"columns"},oo={class:"column has-nowrap px-0"},io={class:"has-text-grey mr-1"},ro=["title"],so=["title"],ao=["title"],lo=["title"],uo={__name:"Toolbar",props:{selectedCount:Number},setup(t){return(e,n)=>{const o=te("FontAwesomeIcon");return S(),C("div",to,[y("div",no,[y("div",oo,[y("span",io,x(e.$t("commons.x_selected",{count:t.selectedCount})),1),y("button",{id:"btnUnselectAll",onClick:n[0]||(n[0]=i=>e.$emit("clear-selected")),class:"clear-selection delete mr-4",style:gn({visibility:t.selectedCount>0?"visible":"hidden"}),title:e.$t("commons.clear_selection")},null,12,ro),y("button",{id:"btnSelectAll",onClick:n[1]||(n[1]=i=>e.$emit("select-all")),class:"button mr-5 has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.select_all")},[y("span",null,x(e.$t("commons.check_all")),1),O(o,{class:"ml-1",icon:["fas","check-square"]})],8,so),y("button",{id:"btnSortAscending",onClick:n[2]||(n[2]=i=>e.$emit("sort-asc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_ascending")},[O(o,{icon:["fas","sort-alpha-down"]})],8,ao),y("button",{id:"btnSortDescending",onClick:n[3]||(n[3]=i=>e.$emit("sort-desc")),class:"button has-line-height p-1 is-ghost has-text-grey",title:e.$t("commons.sort_descending")},[O(o,{icon:["fas","sort-alpha-up"]})],8,lo)])])])}}},co={key:0,class:"control"},fo={class:"icon is-small"},po={key:1,class:"control"},ho={key:2,class:"control"},mo=["disabled","title"],go={key:3,class:"control"},vo=["disabled"],bo={key:4,class:"control"},_o=["disabled","title"],yo={__name:"ActionButtons",props:{inManagementMode:Boolean,areDisabled:Boolean},emits:["update:inManagementMode","move-button-clicked","delete-button-clicked","export-button-clicked"],setup(t,{emit:e}){const n=Qt(),o=Ft();function i(){o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="advancedForm"?n.push({name:"createAccount"}):o.preferences.useDirectCapture&&o.preferences.defaultCaptureMode==="livescan"?n.push({name:"capture"}):n.push({name:"start"})}return(r,s)=>{const l=te("FontAwesomeIcon");return S(),Se(p($e),null,{default:B(({mode:u})=>[t.inManagementMode?Y("",!0):(S(),C("p",co,[y("button",{class:"button is-link is-rounded is-focus",onClick:i},[y("span",null,x(r.$t("commons.new")),1),y("span",fo,[O(l,{icon:["fas","qrcode"]})])])])),t.inManagementMode?Y("",!0):(S(),C("p",po,[y("button",{id:"btnManage",class:U(["button is-rounded",{"is-dark":u=="dark"}]),onClick:s[0]||(s[0]=a=>r.$emit("update:inManagementMode",!0))},x(r.$t("commons.manage")),3)])),t.inManagementMode?(S(),C("p",ho,[y("button",{id:"btnMove",disabled:t.areDisabled,class:U(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[1]||(s[1]=a=>r.$emit("move-button-clicked")),title:r.$t("groups.move_selected_to_group")},x(r.$t("commons.move")),11,mo)])):Y("",!0),t.inManagementMode?(S(),C("p",go,[y("button",{id:"btnDelete",disabled:t.areDisabled,class:U(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[2]||(s[2]=a=>r.$emit("delete-button-clicked"))},x(r.$t("commons.delete")),11,vo)])):Y("",!0),t.inManagementMode?(S(),C("p",bo,[y("button",{id:"btnExport",disabled:t.areDisabled,class:U(["button is-rounded",[{"is-outlined":u=="dark"||t.areDisabled},t.areDisabled?"is-dark":"is-link"]]),onClick:s[3]||(s[3]=a=>r.$emit("export-button-clicked")),title:r.$t("twofaccounts.export_selected_to_json")},x(r.$t("commons.export")),11,_o)])):Y("",!0)]),_:1})}}};function wo(t){return vn()?(bn(t),!0):!1}function Mt(t){return typeof t=="function"?t():p(t)}const So=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function Eo(t,e=!0){_n()?Zt(t):e?t():We(t)}function Do(t){var e;const n=Mt(t);return(e=n==null?void 0:n.$el)!=null?e:n}const ko=So?window.document:void 0;/**! * Sortable 1.15.0 * @author RubaXa * @author owenm diff --git a/public/build/assets/AdminTabs-169daa20.js b/public/build/assets/AdminTabs-94ad3971.js similarity index 92% rename from public/build/assets/AdminTabs-169daa20.js rename to public/build/assets/AdminTabs-94ad3971.js index c7094b15..42353280 100644 --- a/public/build/assets/AdminTabs-169daa20.js +++ b/public/build/assets/AdminTabs-94ad3971.js @@ -1 +1 @@ -import{r as u,e as t,f as s,g as a,m as n,p as i,h as o,F as _,G as v,i as f,n as h,j as k,t as w}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const T={class:"options-header"},g={class:"tabs is-centered is-fullwidth"},b={__name:"AdminTabs",props:{activeTab:{type:String,default:""}},setup(r){const p=r,d=u([{name:"admin.app_setup",view:"admin.appSetup",id:"lnkTabApp"},{name:"admin.users",view:"admin.users",id:"lnkTabUsers"}]);return(c,R)=>{const l=t("RouterLink"),m=t("ResponsiveWidthWrapper");return s(),a("div",T,[n(m,null,{default:i(()=>[o("div",g,[o("ul",null,[(s(!0),a(_,null,v(f(d),e=>(s(),a("li",{key:e.view,class:h({"is-active":e.view===p.activeTab})},[n(l,{id:e.id,to:{name:e.view}},{default:i(()=>[k(w(c.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{b as _}; +import{r as u,e as t,f as s,g as a,m as n,p as i,h as o,F as _,G as v,i as f,n as h,j as k,t as w}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const T={class:"options-header"},g={class:"tabs is-centered is-fullwidth"},b={__name:"AdminTabs",props:{activeTab:{type:String,default:""}},setup(r){const p=r,d=u([{name:"admin.app_setup",view:"admin.appSetup",id:"lnkTabApp"},{name:"admin.users",view:"admin.users",id:"lnkTabUsers"}]);return(c,R)=>{const l=t("RouterLink"),m=t("ResponsiveWidthWrapper");return s(),a("div",T,[n(m,null,{default:i(()=>[o("div",g,[o("ul",null,[(s(!0),a(_,null,v(f(d),e=>(s(),a("li",{key:e.view,class:h({"is-active":e.view===p.activeTab})},[n(l,{id:e.id,to:{name:e.view}},{default:i(()=>[k(w(c.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{b as _}; diff --git a/public/build/assets/AppSetup-989082f4.js b/public/build/assets/AppSetup-45bab529.js similarity index 97% rename from public/build/assets/AppSetup-989082f4.js rename to public/build/assets/AppSetup-45bab529.js index 2b05cd35..f27c78bb 100644 --- a/public/build/assets/AppSetup-989082f4.js +++ b/public/build/assets/AppSetup-45bab529.js @@ -1 +1 @@ -import{_ as q}from"./AdminTabs-169daa20.js";import{a4 as B,R as A,r as b,e as h,f as _,g as f,h as n,n as F,i as s,t as u,m as i,p as M,j as C,l as N,U as J,Q as K,a as P,b as E,a2 as X,a0 as Y,o as Z,I as $,F as ee,G as se}from"./app-94c6def1.js";import{_ as te}from"./CopyButton-f30d9b07.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const U=B("api"),I={get(r={}){return U.get("/settings",{...r})},update(r,p){return U.put("/settings/"+r,{value:p})},delete(r,p={}){return U.delete("/settings/"+r,{...p})}},S=B("web"),L={getSystemInfos(r={}){return S.get("system/infos",{...r})},getLastRelease(r={}){return S.get("system/latestRelease",{...r})},sendTestEmail(r={}){return S.post("system/test-email",{...r})},clearCache(r={}){return S.get("system/clear-cache",{...r})},optimize(r={}){return S.get("system/optimize",{...r})}},le={class:"columns is-mobile is-vcentered"},ne={class:"column is-narrow"},ae={class:"column"},oe=n("span",{class:"release-flag"},null,-1),ie={class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},re={key:1,class:"has-text-grey"},de={key:2,class:"has-text-grey"},ue={__name:"VersionChecker",setup(r){const p=A(),k=b(!1),m=b();async function a(){k.value=!0,m.value=void 0,await L.getLastRelease({returnError:!0}).then(c=>{p.latestRelease=c.data.newRelease,m.value=c.data.newRelease===null?null:c.data.newRelease===!1}).catch(()=>{m.value=null}),k.value=!1}return(c,g)=>{const R=h("FontAwesomeIcon");return _(),f("div",le,[n("div",ne,[n("button",{type:"button",class:F([s(k)?"is-loading":"","button is-link is-rounded is-small"]),onClick:a},u(c.$t("admin.check_now")),3)]),n("div",ae,[i(s(J),null,{default:M(({mode:V})=>[s(p).latestRelease?(_(),f("span",{key:0,class:F(["mt-2",V=="dark"?"has-text-warning":"has-text-warning-dark"])},[oe,C(u(c.$t("admin.x_is_available",{version:s(p).latestRelease}))+" ",1),n("a",ie,u(c.$t("admin.view_on_github")),1)],2)):N("",!0),s(m)?(_(),f("span",re,[i(R,{icon:["fas","check"],class:"mr-1 has-text-success"}),C(" "+u(c.$t("commons.you_are_up_to_date")),1)])):s(m)===null?(_(),f("span",de,[i(R,{icon:["fas","times"],class:"mr-1 has-text-danger"}),C(u(c.$t("errors.check_failed_try_later")),1)])):N("",!0)]),_:1})])])}}},ce={class:"options-tabs"},me={class:"title is-4 pt-4 has-text-grey-light"},pe={class:"field"},_e=["innerHTML"],fe=["innerHTML"],be=["innerHTML"],he={class:"columns is-mobile is-vcentered"},ge={class:"column is-narrow"},ye={class:"icon is-small"},ve={class:"title is-4 pt-4 has-text-grey-light"},ke={class:"title is-4 pt-4 has-text-grey-light"},Re={class:"title is-4 pt-5 has-text-grey-light"},Ve={class:"field"},Se=["innerHTML"],Ee=["innerHTML"],$e={class:"field mb-5 is-grouped"},Ce={class:"control"},Le={class:"field"},Fe=["innerHTML"],Te={key:0,class:"about-debug box is-family-monospace is-size-7"},we=["value"],Ue={class:"has-text-grey"},Ie={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},xe={__name:"AppSetup",setup(r){const p=K("2fauth"),k=P(),m=E(),a=A(),c=X(p.prefix+"returnTo","accounts"),g=b(),R=b(null),V=b(!1),T=b(!1),y=b({restrictList:null,restrictRule:null}),o=b({checkForUpdate:a.checkForUpdate,useEncryption:a.useEncryption,restrictRegistration:a.restrictRegistration,restrictList:a.restrictList,restrictRule:a.restrictRule,disableRegistration:a.disableRegistration,keepSsoRegistrationEnabled:a.keepSsoRegistrationEnabled,enableSso:a.enableSso});function v(l,e){y.value[l]=null,I.update(l,e).then(d=>{a[l]=e,E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status===422?y.value[l]=d.response.data.message:m.error(d)})}function w(l,e){e==""?(y.value[l]=null,I.delete(l,{returnError:!0}).then(d=>{a[l]="",E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status!==404&&m.error(d)})):v(l,e)}function z(){V.value=!0,L.sendTestEmail().finally(()=>{V.value=!1})}function W(){T.value=!0,L.clearCache().then(l=>{E().success({type:"is-success",text:$("admin.cache_cleared")})}).finally(()=>{T.value=!1})}return Y(l=>{l.name.startsWith("admin.")||m.clear()}),Z(async()=>{I.get({returnError:!0}).then(l=>{o.value.restrictList="",o.value.restrictRule="",l.data.forEach(e=>{a[e.key]=e.value,o.value[e.key]=e.value})}).catch(l=>{m.alert({text:$("errors.data_cannot_be_refreshed_from_server")})}),L.getSystemInfos({returnError:!0}).then(l=>{g.value=l.data.common}).catch(()=>{g.value=null})}),(l,e)=>{const d=h("FormCheckbox"),j=h("FontAwesomeIcon"),H=h("FormField"),G=h("FormWrapper"),O=h("ButtonBackCloseCancel"),Q=h("VueFooter");return _(),f("div",null,[i(q,{activeTab:"admin.appSetup"}),n("div",ce,[i(G,null,{default:M(()=>{var x;return[n("form",null,[n("h4",me,u(l.$t("settings.general")),1),i(d,{modelValue:s(o).checkForUpdate,"onUpdate:modelValue":[e[0]||(e[0]=t=>s(o).checkForUpdate=t),e[1]||(e[1]=t=>v("checkForUpdate",t))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),i(ue),n("div",pe,[n("label",{class:"label",innerHTML:l.$t("admin.forms.test_email.label")},null,8,_e),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.help")},null,8,fe),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.email_will_be_send_to_x",{email:s(k).email})},null,8,be)]),n("div",he,[n("div",ge,[n("button",{type:"button",class:F([s(V)?"is-loading":"","button is-link is-rounded is-small"]),onClick:z},[n("span",ye,[i(j,{icon:["far","paper-plane"]})]),n("span",null,u(l.$t("commons.send")),1)],2)])]),n("h4",ve,u(l.$t("settings.security")),1),i(d,{modelValue:s(o).useEncryption,"onUpdate:modelValue":[e[2]||(e[2]=t=>s(o).useEncryption=t),e[3]||(e[3]=t=>v("useEncryption",t))],fieldName:"useEncryption",label:"admin.forms.use_encryption.label",help:"admin.forms.use_encryption.help"},null,8,["modelValue"]),n("h4",ke,u(l.$t("admin.registrations")),1),i(d,{modelValue:s(o).enableSso,"onUpdate:modelValue":[e[4]||(e[4]=t=>s(o).enableSso=t),e[5]||(e[5]=t=>v("enableSso",t))],fieldName:"enableSso",label:"admin.forms.enable_sso.label",help:"admin.forms.enable_sso.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).restrictRegistration,"onUpdate:modelValue":[e[6]||(e[6]=t=>s(o).restrictRegistration=t),e[7]||(e[7]=t=>v("restrictRegistration",t))],fieldName:"restrictRegistration",isDisabled:s(a).disableRegistration,label:"admin.forms.restrict_registration.label",help:"admin.forms.restrict_registration.help"},null,8,["modelValue","isDisabled"]),i(H,{modelValue:s(o).restrictList,"onUpdate:modelValue":e[8]||(e[8]=t=>s(o).restrictList=t),"onChange:modelValue":e[9]||(e[9]=t=>w("restrictList",t)),fieldError:s(y).restrictList,fieldName:"restrictList",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_list.label",help:"admin.forms.restrict_list.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"]),i(H,{modelValue:s(o).restrictRule,"onUpdate:modelValue":e[10]||(e[10]=t=>s(o).restrictRule=t),"onChange:modelValue":e[11]||(e[11]=t=>w("restrictRule",t)),fieldError:s(y).restrictRule,fieldName:"restrictRule",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_rule.label",help:"admin.forms.restrict_rule.help",isIndented:!0,leftIcon:"slash",rightIcon:"slash"},null,8,["modelValue","fieldError","isDisabled"]),i(d,{modelValue:s(o).disableRegistration,"onUpdate:modelValue":[e[12]||(e[12]=t=>s(o).disableRegistration=t),e[13]||(e[13]=t=>v("disableRegistration",t))],fieldName:"disableRegistration",label:"admin.forms.disable_registration.label",help:"admin.forms.disable_registration.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).keepSsoRegistrationEnabled,"onUpdate:modelValue":e[14]||(e[14]=t=>s(o).keepSsoRegistrationEnabled=t),"onChange:modelValue":e[15]||(e[15]=t=>w("keepSsoRegistrationEnabled",t)),fieldError:s(y).keepSsoRegistrationEnabled,fieldName:"keepSsoRegistrationEnabled",isDisabled:!s(a).enableSso||!s(a).disableRegistration,label:"admin.forms.keep_sso_registration_enabled.label",help:"admin.forms.keep_sso_registration_enabled.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"])]),n("h4",Re,u(l.$t("commons.environment")),1),n("div",Ve,[n("label",{class:"label",innerHTML:l.$t("admin.forms.cache_management.label")},null,8,Se),n("p",{class:"help",innerHTML:l.$t("admin.forms.cache_management.help")},null,8,Ee)]),n("div",$e,[n("p",Ce,[n("button",{type:"button",class:F([s(T)?"is-loading":"","button is-link is-rounded is-small"]),onClick:W},u(l.$t("commons.clear")),3)])]),n("div",Le,[n("label",{class:"label",innerHTML:l.$t("admin.variables")},null,8,Fe)]),s(g)?(_(),f("div",Te,[i(te,{id:"btnCopyEnvVars",token:(x=s(R))==null?void 0:x.innerText},null,8,["token"]),n("ul",{ref_key:"listInfos",ref:R,id:"listInfos"},[(_(!0),f(ee,null,se(s(g),(t,D)=>(_(),f("li",{value:t,key:D},[n("b",null,u(D),1),C(": "),n("span",Ue,u(t),1)],8,we))),128))],512)])):s(g)===null?(_(),f("div",Ie,u(l.$t("errors.error_during_data_fetching")),1)):N("",!0)]}),_:1})]),i(Q,{showButtons:!0},{default:M(()=>[i(O,{returnTo:{name:s(c)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{xe as default}; +import{_ as q}from"./AdminTabs-94ad3971.js";import{a4 as B,R as A,r as b,e as h,f as _,g as f,h as n,n as F,i as s,t as u,m as i,p as M,j as C,l as N,U as J,Q as K,a as P,b as E,a2 as X,a0 as Y,o as Z,I as $,F as ee,G as se}from"./app-60af1d1a.js";import{_ as te}from"./CopyButton-643e0686.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const U=B("api"),I={get(r={}){return U.get("/settings",{...r})},update(r,p){return U.put("/settings/"+r,{value:p})},delete(r,p={}){return U.delete("/settings/"+r,{...p})}},S=B("web"),L={getSystemInfos(r={}){return S.get("system/infos",{...r})},getLastRelease(r={}){return S.get("system/latestRelease",{...r})},sendTestEmail(r={}){return S.post("system/test-email",{...r})},clearCache(r={}){return S.get("system/clear-cache",{...r})},optimize(r={}){return S.get("system/optimize",{...r})}},le={class:"columns is-mobile is-vcentered"},ne={class:"column is-narrow"},ae={class:"column"},oe=n("span",{class:"release-flag"},null,-1),ie={class:"is-size-7",href:"https://github.com/Bubka/2FAuth/releases"},re={key:1,class:"has-text-grey"},de={key:2,class:"has-text-grey"},ue={__name:"VersionChecker",setup(r){const p=A(),k=b(!1),m=b();async function a(){k.value=!0,m.value=void 0,await L.getLastRelease({returnError:!0}).then(c=>{p.latestRelease=c.data.newRelease,m.value=c.data.newRelease===null?null:c.data.newRelease===!1}).catch(()=>{m.value=null}),k.value=!1}return(c,g)=>{const R=h("FontAwesomeIcon");return _(),f("div",le,[n("div",ne,[n("button",{type:"button",class:F([s(k)?"is-loading":"","button is-link is-rounded is-small"]),onClick:a},u(c.$t("admin.check_now")),3)]),n("div",ae,[i(s(J),null,{default:M(({mode:V})=>[s(p).latestRelease?(_(),f("span",{key:0,class:F(["mt-2",V=="dark"?"has-text-warning":"has-text-warning-dark"])},[oe,C(u(c.$t("admin.x_is_available",{version:s(p).latestRelease}))+" ",1),n("a",ie,u(c.$t("admin.view_on_github")),1)],2)):N("",!0),s(m)?(_(),f("span",re,[i(R,{icon:["fas","check"],class:"mr-1 has-text-success"}),C(" "+u(c.$t("commons.you_are_up_to_date")),1)])):s(m)===null?(_(),f("span",de,[i(R,{icon:["fas","times"],class:"mr-1 has-text-danger"}),C(u(c.$t("errors.check_failed_try_later")),1)])):N("",!0)]),_:1})])])}}},ce={class:"options-tabs"},me={class:"title is-4 pt-4 has-text-grey-light"},pe={class:"field"},_e=["innerHTML"],fe=["innerHTML"],be=["innerHTML"],he={class:"columns is-mobile is-vcentered"},ge={class:"column is-narrow"},ye={class:"icon is-small"},ve={class:"title is-4 pt-4 has-text-grey-light"},ke={class:"title is-4 pt-4 has-text-grey-light"},Re={class:"title is-4 pt-5 has-text-grey-light"},Ve={class:"field"},Se=["innerHTML"],Ee=["innerHTML"],$e={class:"field mb-5 is-grouped"},Ce={class:"control"},Le={class:"field"},Fe=["innerHTML"],Te={key:0,class:"about-debug box is-family-monospace is-size-7"},we=["value"],Ue={class:"has-text-grey"},Ie={key:1,class:"about-debug box is-family-monospace is-size-7 has-text-warning-dark"},xe={__name:"AppSetup",setup(r){const p=K("2fauth"),k=P(),m=E(),a=A(),c=X(p.prefix+"returnTo","accounts"),g=b(),R=b(null),V=b(!1),T=b(!1),y=b({restrictList:null,restrictRule:null}),o=b({checkForUpdate:a.checkForUpdate,useEncryption:a.useEncryption,restrictRegistration:a.restrictRegistration,restrictList:a.restrictList,restrictRule:a.restrictRule,disableRegistration:a.disableRegistration,keepSsoRegistrationEnabled:a.keepSsoRegistrationEnabled,enableSso:a.enableSso});function v(l,e){y.value[l]=null,I.update(l,e).then(d=>{a[l]=e,E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status===422?y.value[l]=d.response.data.message:m.error(d)})}function w(l,e){e==""?(y.value[l]=null,I.delete(l,{returnError:!0}).then(d=>{a[l]="",E().success({type:"is-success",text:$("settings.forms.setting_saved")})}).catch(d=>{d.response.status!==404&&m.error(d)})):v(l,e)}function z(){V.value=!0,L.sendTestEmail().finally(()=>{V.value=!1})}function W(){T.value=!0,L.clearCache().then(l=>{E().success({type:"is-success",text:$("admin.cache_cleared")})}).finally(()=>{T.value=!1})}return Y(l=>{l.name.startsWith("admin.")||m.clear()}),Z(async()=>{I.get({returnError:!0}).then(l=>{o.value.restrictList="",o.value.restrictRule="",l.data.forEach(e=>{a[e.key]=e.value,o.value[e.key]=e.value})}).catch(l=>{m.alert({text:$("errors.data_cannot_be_refreshed_from_server")})}),L.getSystemInfos({returnError:!0}).then(l=>{g.value=l.data.common}).catch(()=>{g.value=null})}),(l,e)=>{const d=h("FormCheckbox"),j=h("FontAwesomeIcon"),H=h("FormField"),G=h("FormWrapper"),O=h("ButtonBackCloseCancel"),Q=h("VueFooter");return _(),f("div",null,[i(q,{activeTab:"admin.appSetup"}),n("div",ce,[i(G,null,{default:M(()=>{var x;return[n("form",null,[n("h4",me,u(l.$t("settings.general")),1),i(d,{modelValue:s(o).checkForUpdate,"onUpdate:modelValue":[e[0]||(e[0]=t=>s(o).checkForUpdate=t),e[1]||(e[1]=t=>v("checkForUpdate",t))],fieldName:"checkForUpdate",label:"commons.check_for_update",help:"commons.check_for_update_help"},null,8,["modelValue"]),i(ue),n("div",pe,[n("label",{class:"label",innerHTML:l.$t("admin.forms.test_email.label")},null,8,_e),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.help")},null,8,fe),n("p",{class:"help",innerHTML:l.$t("admin.forms.test_email.email_will_be_send_to_x",{email:s(k).email})},null,8,be)]),n("div",he,[n("div",ge,[n("button",{type:"button",class:F([s(V)?"is-loading":"","button is-link is-rounded is-small"]),onClick:z},[n("span",ye,[i(j,{icon:["far","paper-plane"]})]),n("span",null,u(l.$t("commons.send")),1)],2)])]),n("h4",ve,u(l.$t("settings.security")),1),i(d,{modelValue:s(o).useEncryption,"onUpdate:modelValue":[e[2]||(e[2]=t=>s(o).useEncryption=t),e[3]||(e[3]=t=>v("useEncryption",t))],fieldName:"useEncryption",label:"admin.forms.use_encryption.label",help:"admin.forms.use_encryption.help"},null,8,["modelValue"]),n("h4",ke,u(l.$t("admin.registrations")),1),i(d,{modelValue:s(o).enableSso,"onUpdate:modelValue":[e[4]||(e[4]=t=>s(o).enableSso=t),e[5]||(e[5]=t=>v("enableSso",t))],fieldName:"enableSso",label:"admin.forms.enable_sso.label",help:"admin.forms.enable_sso.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).restrictRegistration,"onUpdate:modelValue":[e[6]||(e[6]=t=>s(o).restrictRegistration=t),e[7]||(e[7]=t=>v("restrictRegistration",t))],fieldName:"restrictRegistration",isDisabled:s(a).disableRegistration,label:"admin.forms.restrict_registration.label",help:"admin.forms.restrict_registration.help"},null,8,["modelValue","isDisabled"]),i(H,{modelValue:s(o).restrictList,"onUpdate:modelValue":e[8]||(e[8]=t=>s(o).restrictList=t),"onChange:modelValue":e[9]||(e[9]=t=>w("restrictList",t)),fieldError:s(y).restrictList,fieldName:"restrictList",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_list.label",help:"admin.forms.restrict_list.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"]),i(H,{modelValue:s(o).restrictRule,"onUpdate:modelValue":e[10]||(e[10]=t=>s(o).restrictRule=t),"onChange:modelValue":e[11]||(e[11]=t=>w("restrictRule",t)),fieldError:s(y).restrictRule,fieldName:"restrictRule",isDisabled:!s(a).restrictRegistration||s(a).disableRegistration,label:"admin.forms.restrict_rule.label",help:"admin.forms.restrict_rule.help",isIndented:!0,leftIcon:"slash",rightIcon:"slash"},null,8,["modelValue","fieldError","isDisabled"]),i(d,{modelValue:s(o).disableRegistration,"onUpdate:modelValue":[e[12]||(e[12]=t=>s(o).disableRegistration=t),e[13]||(e[13]=t=>v("disableRegistration",t))],fieldName:"disableRegistration",label:"admin.forms.disable_registration.label",help:"admin.forms.disable_registration.help"},null,8,["modelValue"]),i(d,{modelValue:s(o).keepSsoRegistrationEnabled,"onUpdate:modelValue":e[14]||(e[14]=t=>s(o).keepSsoRegistrationEnabled=t),"onChange:modelValue":e[15]||(e[15]=t=>w("keepSsoRegistrationEnabled",t)),fieldError:s(y).keepSsoRegistrationEnabled,fieldName:"keepSsoRegistrationEnabled",isDisabled:!s(a).enableSso||!s(a).disableRegistration,label:"admin.forms.keep_sso_registration_enabled.label",help:"admin.forms.keep_sso_registration_enabled.help",isIndented:!0},null,8,["modelValue","fieldError","isDisabled"])]),n("h4",Re,u(l.$t("commons.environment")),1),n("div",Ve,[n("label",{class:"label",innerHTML:l.$t("admin.forms.cache_management.label")},null,8,Se),n("p",{class:"help",innerHTML:l.$t("admin.forms.cache_management.help")},null,8,Ee)]),n("div",$e,[n("p",Ce,[n("button",{type:"button",class:F([s(T)?"is-loading":"","button is-link is-rounded is-small"]),onClick:W},u(l.$t("commons.clear")),3)])]),n("div",Le,[n("label",{class:"label",innerHTML:l.$t("admin.variables")},null,8,Fe)]),s(g)?(_(),f("div",Te,[i(te,{id:"btnCopyEnvVars",token:(x=s(R))==null?void 0:x.innerText},null,8,["token"]),n("ul",{ref_key:"listInfos",ref:R,id:"listInfos"},[(_(!0),f(ee,null,se(s(g),(t,D)=>(_(),f("li",{value:t,key:D},[n("b",null,u(D),1),C(": "),n("span",Ue,u(t),1)],8,we))),128))],512)])):s(g)===null?(_(),f("div",Ie,u(l.$t("errors.error_during_data_fetching")),1)):N("",!0)]}),_:1})]),i(Q,{showButtons:!0},{default:M(()=>[i(O,{returnTo:{name:s(c)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{xe as default}; diff --git a/public/build/assets/Capture-01720b57.js b/public/build/assets/Capture-1f19a38b.js similarity index 99% rename from public/build/assets/Capture-01720b57.js rename to public/build/assets/Capture-1f19a38b.js index 40ed1479..f07b1ee0 100644 --- a/public/build/assets/Capture-01720b57.js +++ b/public/build/assets/Capture-1f19a38b.js @@ -1,4 +1,4 @@ -import{q as go,r as Ee,o as za,s as wo,v as va,x as ya,y as bo,f as Se,g as Ye,h as Z,z as $o,A as $a,B as Na,C as _o,u as Co,b as To,d as Po,e as ga,i as fe,t as gt,m as Ve,p as wa,D as So,k as Sa,l as Ea,E as Aa,F as Oa,G as Eo,H as Ao,n as ka,U as Da,I as ja}from"./app-94c6def1.js";import{F as Oo}from"./Form-88ba26a4.js";import{S as ko}from"./Spinner-f03b508f.js";import{_ as Do}from"./QrContentDisplay-1899c813.js";import{u as jo}from"./bus-d94d2521.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */var Ba=(i,c,o)=>{if(!c.has(i))throw TypeError("Cannot "+o)},xa=(i,c,o)=>(Ba(i,c,"read from private field"),o?o.call(i):c.get(i)),xo=(i,c,o)=>{if(c.has(i))throw TypeError("Cannot add the same private member more than once");c instanceof WeakSet?c.add(i):c.set(i,o)},Mo=(i,c,o,h)=>(Ba(i,c,"write to private field"),h?h.call(i,o):c.set(i,o),o);const Ma=["aztec","code_128","code_39","code_93","codabar","data_matrix","ean_13","ean_8","itf","pdf417","qr_code","upc_a","upc_e","unknown"];function Ro(i){if(Ya(i))return{width:i.naturalWidth,height:i.naturalHeight};if(Ga(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(qa(i))return{width:i.videoWidth,height:i.videoHeight};if(Xa(i))return{width:i.width,height:i.height};if(Qa(i))return{width:i.displayWidth,height:i.displayHeight};if(Ja(i))return{width:i.width,height:i.height};if(Za(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ya(i){try{return i instanceof HTMLImageElement}catch{return!1}}function Ga(i){try{return i instanceof SVGImageElement}catch{return!1}}function qa(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function Ja(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function Xa(i){try{return i instanceof ImageBitmap}catch{return!1}}function Za(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function Qa(i){try{return i instanceof VideoFrame}catch{return!1}}function Ka(i){try{return i instanceof Blob}catch{return!1}}function Fo(i){try{return i instanceof ImageData}catch{return!1}}function Wo(i,c){try{const o=new OffscreenCanvas(i,c);if(o.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return o;throw void 0}catch{const h=document.createElement("canvas");return h.width=i,h.height=c,h}}async function eo(i){if(Ya(i)&&!await Vo(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Ga(i)&&!await Lo(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Qa(i)&&zo(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(qa(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Xa(i)&&Bo(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:c,height:o}=Ro(i);if(c===0||o===0)return null;const h=Wo(c,o).getContext("2d");h.drawImage(i,0,0);try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Io(i){let c;try{if(createImageBitmap)c=await createImageBitmap(i);else if(Image){c=new Image;let o="";try{o=URL.createObjectURL(i),c.src=o,await c.decode()}finally{URL.revokeObjectURL(o)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await eo(c)}function Uo(i){const{width:c,height:o}=i;if(c===0||o===0)return null;const h=i.getContext("2d");try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Ho(i){if(Ka(i))return await Io(i);if(Fo(i)){if(No(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return Ja(i)||Za(i)?Uo(i):await eo(i)}async function Vo(i){try{return await i.decode(),!0}catch{return!1}}async function Lo(i){var c;try{return await((c=i.decode)==null?void 0:c.call(i)),!0}catch{return!1}}function zo(i){return i.format===null}function No(i){return i.data.buffer.byteLength===0}function Bo(i){return i.width===0&&i.height===0}function Ra(i,c){return i instanceof DOMException?new DOMException(`${c}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${c}: ${i.message}`):new Error(`${c}: ${i}`)}const Fa=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","UPC-A","UPC-E"];function Yo(i){return i.join("|")}function Go(i){const c=Wa(i);let o=0,h=Fa.length-1;for(;o<=h;){const v=Math.floor((o+h)/2),b=Fa[v],$=Wa(b);if($===c)return b;${const o=i.match(/_(.+?)\.wasm$/);return o?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.0.0-rc.3/dist/${o[1]}/${i}`:c+i}};let Ia=new WeakMap;function Ta(i,c){var o;const h=Ia.get(i);if(h!=null&&h.modulePromise&&(c===void 0||Object.is(c,h.moduleOverrides)))return h.modulePromise;const v=(o=c??(h==null?void 0:h.moduleOverrides))!=null?o:ei,b=i({...v});return Ia.set(i,{moduleOverrides:v,modulePromise:b}),b}async function ti(i,c,o=lr){const h={...lr,...o},v=await Ta(i),{size:b}=c,$=new Uint8Array(await c.arrayBuffer()),E=v._malloc(b);v.HEAPU8.set($,E);const y=v.readBarcodesFromImage(E,b,to(v,h));v._free(E);const _=[];for(let O=0;O{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(c={}){var o=c,h,v;o.ready=new Promise((n,e)=>{h=n,v=e});var b=Object.assign({},o),$="./this.program",E=typeof window=="object",y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var _="";function O(n){return o.locateFile?o.locateFile(n,_):_+n}var P;(E||y)&&(y?_=self.location.href:typeof document<"u"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_.indexOf("blob:")!==0?_=_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):_="",y&&(P=n=>{var e=new XMLHttpRequest;return e.open("GET",n,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),o.print||console.log.bind(console);var B=o.printErr||console.error.bind(console);Object.assign(o,b),b=null,o.arguments&&o.arguments,o.thisProgram&&($=o.thisProgram),o.quit&&o.quit;var q;o.wasmBinary&&(q=o.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var Y,X=!1;function oe(n,e){n||pe(e)}var x,k,z,J,R,A,we,Oe;function ze(){var n=Y.buffer;o.HEAP8=x=new Int8Array(n),o.HEAP16=z=new Int16Array(n),o.HEAPU8=k=new Uint8Array(n),o.HEAPU16=J=new Uint16Array(n),o.HEAP32=R=new Int32Array(n),o.HEAPU32=A=new Uint32Array(n),o.HEAPF32=we=new Float32Array(n),o.HEAPF64=Oe=new Float64Array(n)}var Ne=[],Be=[],Xe=[];function Ct(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Ze(o.preRun.shift());et(Ne)}function Tt(){et(Be)}function Pt(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)St(o.postRun.shift());et(Xe)}function Ze(n){Ne.unshift(n)}function wt(n){Be.unshift(n)}function St(n){Xe.unshift(n)}var se=0,ie=null;function ye(n){se++,o.monitorRunDependencies&&o.monitorRunDependencies(se)}function Et(n){if(se--,o.monitorRunDependencies&&o.monitorRunDependencies(se),se==0&&ie){var e=ie;ie=null,e()}}function pe(n){o.onAbort&&o.onAbort(n),n="Aborted("+n+")",B(n),X=!0,n+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(n);throw v(e),e}var At="data:application/octet-stream;base64,",Qe=n=>n.startsWith(At),ce;ce="zxing_reader.wasm",Qe(ce)||(ce=O(ce));function Ke(n){if(n==ce&&q)return new Uint8Array(q);if(P)return P(n);throw"both async and sync fetching of the wasm failed"}function fr(n){return!q&&(E||y)&&typeof fetch=="function"?fetch(n,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+n+"'";return e.arrayBuffer()}).catch(()=>Ke(n)):Promise.resolve().then(()=>Ke(n))}function Ot(n,e,t){return fr(n).then(r=>WebAssembly.instantiate(r,e)).then(r=>r).then(t,r=>{B(`failed to asynchronously prepare wasm: ${r}`),pe(r)})}function hr(n,e,t,r){return!n&&typeof WebAssembly.instantiateStreaming=="function"&&!Qe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var s=WebAssembly.instantiateStreaming(a,t);return s.then(r,function(u){return B(`wasm streaming compile failed: ${u}`),B("falling back to ArrayBuffer instantiation"),Ot(e,t,r)})}):Ot(e,t,r)}function pr(){var n={a:Jn};function e(r,a){return F=r.exports,Y=F.fa,ze(),Vt=F.ja,wt(F.ga),Et(),F}ye();function t(r){e(r.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(n,e)}catch(r){B(`Module.instantiateWasm callback failed with error: ${r}`),v(r)}return hr(q,ce,n,t).catch(v),{}}var et=n=>{for(;n.length>0;)n.shift()(o)};o.noExitRuntime;var ke=[],De=0,mr=n=>{var e=new tt(n);return e.get_caught()||(e.set_caught(!0),De--),e.set_rethrown(!1),ke.push(e),nr(e.excPtr),e.get_exception_ptr()},ne=0,vr=()=>{M(0,0);var n=ke.pop();rr(n.excPtr),ne=0};function tt(n){this.excPtr=n,this.ptr=n-24,this.set_type=function(e){A[this.ptr+4>>2]=e},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(e){A[this.ptr+8>>2]=e},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,x[this.ptr+12>>0]=e},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,x[this.ptr+13>>0]=e},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){A[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=or(this.get_type());if(e)return A[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var yr=n=>{throw ne||(ne=n),ne},rt=n=>{var e=ne;if(!e)return Pe(0),0;var t=new tt(e);t.set_adjusted_ptr(e);var r=t.get_type();if(!r)return Pe(0),e;for(var a in n){var s=n[a];if(s===0||s===r)break;var u=t.ptr+16;if(ar(s,r,u))return Pe(s),e}return Pe(r),e},gr=()=>rt([]),wr=n=>rt([n]),br=(n,e)=>rt([n,e]),$r=()=>{var n=ke.pop();n||pe("no exception to throw");var e=n.excPtr;throw n.get_rethrown()||(ke.push(n),n.set_rethrown(!0),n.set_caught(!1),De++),ne=e,ne},_r=(n,e,t)=>{var r=new tt(n);throw r.init(e,t),ne=n,De++,ne},Cr=()=>De,je={},kt=n=>{for(;n.length;){var e=n.pop(),t=n.pop();t(e)}};function nt(n){return this.fromWireType(R[n>>2])}var me={},le={},xe={},Dt,Me=n=>{throw new Dt(n)},de=(n,e,t)=>{n.forEach(function(l){xe[l]=e});function r(l){var d=t(l);d.length!==n.length&&Me("Mismatched type converter count");for(var f=0;f{le.hasOwnProperty(l)?a[d]=le[l]:(s.push(l),me.hasOwnProperty(l)||(me[l]=[]),me[l].push(()=>{a[d]=le[l],++u,u===s.length&&r(a)}))}),s.length===0&&r(a)},Tr=n=>{var e=je[n];delete je[n];var t=e.rawConstructor,r=e.rawDestructor,a=e.fields,s=a.map(u=>u.getterReturnType).concat(a.map(u=>u.setterArgumentType));de([n],s,u=>{var l={};return a.forEach((d,f)=>{var m=d.fieldName,w=u[f],C=d.getter,S=d.getterContext,j=u[f+a.length],H=d.setter,V=d.setterContext;l[m]={read:L=>w.fromWireType(C(S,L)),write:(L,g)=>{var p=[];H(V,L,j.toWireType(p,g)),kt(p)}}}),[{name:e.name,fromWireType:d=>{var f={};for(var m in l)f[m]=l[m].read(d);return r(d),f},toWireType:(d,f)=>{for(var m in l)if(!(m in f))throw new TypeError(`Missing field: "${m}"`);var w=t();for(m in l)l[m].write(w,f[m]);return d!==null&&d.push(r,w),w},argPackAdvance:re,readValueFromPointer:nt,destructorFunction:r}]})},Pr=(n,e,t,r,a)=>{},Sr=()=>{for(var n=new Array(256),e=0;e<256;++e)n[e]=String.fromCharCode(e);jt=n},jt,G=n=>{for(var e="",t=n;k[t];)e+=jt[k[t++]];return e},ve,D=n=>{throw new ve(n)};function Er(n,e,t={}){var r=e.name;if(n||D(`type "${r}" must have a positive integer typeid pointer`),le.hasOwnProperty(n)){if(t.ignoreDuplicateRegistrations)return;D(`Cannot register type '${r}' twice`)}if(le[n]=e,delete xe[n],me.hasOwnProperty(n)){var a=me[n];delete me[n],a.forEach(s=>s())}}function te(n,e,t={}){if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Er(n,e,t)}var re=8,Ar=(n,e,t,r)=>{e=G(e),te(n,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,s){return s?t:r},argPackAdvance:re,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},Or=n=>({count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}),at=n=>{function e(t){return t.$$.ptrType.registeredClass.name}D(e(n)+" instance already deleted")},ot=!1,xt=n=>{},kr=n=>{n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)},Mt=n=>{n.count.value-=1;var e=n.count.value===0;e&&kr(n)},Rt=(n,e,t)=>{if(e===t)return n;if(t.baseClass===void 0)return null;var r=Rt(n,e,t.baseClass);return r===null?null:t.downcast(r)},Ft={},Dr=()=>Object.keys(_e).length,jr=()=>{var n=[];for(var e in _e)_e.hasOwnProperty(e)&&n.push(_e[e]);return n},be=[],it=()=>{for(;be.length;){var n=be.pop();n.$$.deleteScheduled=!1,n.delete()}},$e,xr=n=>{$e=n,be.length&&$e&&$e(it)},Mr=()=>{o.getInheritedInstanceCount=Dr,o.getLiveInheritedInstances=jr,o.flushPendingDeletes=it,o.setDelayFunction=xr},_e={},Rr=(n,e)=>{for(e===void 0&&D("ptr should not be undefined");n.baseClass;)e=n.upcast(e),n=n.baseClass;return e},Fr=(n,e)=>(e=Rr(n,e),_e[e]),Re=(n,e)=>{(!e.ptrType||!e.ptr)&&Me("makeClassHandle requires ptr and ptrType");var t=!!e.smartPtrType,r=!!e.smartPtr;return t!==r&&Me("Both smartPtrType and smartPtr must be specified"),e.count={value:1},Ce(Object.create(n,{$$:{value:e}}))};function Wr(n){var e=this.getPointee(n);if(!e)return this.destructor(n),null;var t=Fr(this.registeredClass,e);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=e,t.$$.smartPtr=n,t.clone();var r=t.clone();return this.destructor(n),r}function a(){return this.isSmartPointer?Re(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:n}):Re(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var s=this.registeredClass.getActualType(e),u=Ft[s];if(!u)return a.call(this);var l;this.isConst?l=u.constPointerType:l=u.pointerType;var d=Rt(e,this.registeredClass,l.registeredClass);return d===null?a.call(this):this.isSmartPointer?Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d,smartPtrType:this,smartPtr:n}):Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d})}var Ce=n=>typeof FinalizationRegistry>"u"?(Ce=e=>e,n):(ot=new FinalizationRegistry(e=>{Mt(e.$$)}),Ce=e=>{var t=e.$$,r=!!t.smartPtr;if(r){var a={$$:t};ot.register(e,a,e)}return e},xt=e=>ot.unregister(e),Ce(n)),Ir=()=>{Object.assign(Fe.prototype,{isAliasOf(n){if(!(this instanceof Fe)||!(n instanceof Fe))return!1;var e=this.$$.ptrType.registeredClass,t=this.$$.ptr;n.$$=n.$$;for(var r=n.$$.ptrType.registeredClass,a=n.$$.ptr;e.baseClass;)t=e.upcast(t),e=e.baseClass;for(;r.baseClass;)a=r.upcast(a),r=r.baseClass;return e===r&&t===a},clone(){if(this.$$.ptr||at(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var n=Ce(Object.create(Object.getPrototypeOf(this),{$$:{value:Or(this.$$)}}));return n.$$.count.value+=1,n.$$.deleteScheduled=!1,n},delete(){this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),xt(this),Mt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),be.push(this),be.length===1&&$e&&$e(it),this.$$.deleteScheduled=!0,this}})};function Fe(){}var Ur=48,Hr=57,Wt=n=>{if(n===void 0)return"_unknown";n=n.replace(/[^a-zA-Z0-9_]/g,"$");var e=n.charCodeAt(0);return e>=Ur&&e<=Hr?`_${n}`:n};function st(n,e){return n=Wt(n),{[n]:function(){return e.apply(this,arguments)}}[n]}var It=(n,e,t)=>{if(n[e].overloadTable===void 0){var r=n[e];n[e]=function(){return n[e].overloadTable.hasOwnProperty(arguments.length)||D(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${n[e].overloadTable})!`),n[e].overloadTable[arguments.length].apply(this,arguments)},n[e].overloadTable=[],n[e].overloadTable[r.argCount]=r}},ut=(n,e,t)=>{o.hasOwnProperty(n)?((t===void 0||o[n].overloadTable!==void 0&&o[n].overloadTable[t]!==void 0)&&D(`Cannot register public name '${n}' twice`),It(o,n,n),o.hasOwnProperty(t)&&D(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),o[n].overloadTable[t]=e):(o[n]=e,t!==void 0&&(o[n].numArguments=t))};function Vr(n,e,t,r,a,s,u,l){this.name=n,this.constructor=e,this.instancePrototype=t,this.rawDestructor=r,this.baseClass=a,this.getActualType=s,this.upcast=u,this.downcast=l,this.pureVirtualFunctions=[]}var ct=(n,e,t)=>{for(;e!==t;)e.upcast||D(`Expected null or instance of ${t.name}, got an instance of ${e.name}`),n=e.upcast(n),e=e.baseClass;return n};function Lr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function zr(n,e){var t;if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,t),t):0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass;if(t=ct(e.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&D("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?t=e.$$.smartPtr:D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)t=e.$$.smartPtr;else{var a=e.clone();t=this.rawShare(t,ue.toHandle(()=>a.delete())),n!==null&&n.push(this.rawDestructor,t)}break;default:D("Unsupporting sharing policy")}return t}function Nr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function Ut(n){return this.fromWireType(A[n>>2])}var Br=()=>{Object.assign(We.prototype,{getPointee(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n},destructor(n){this.rawDestructor&&this.rawDestructor(n)},argPackAdvance:re,readValueFromPointer:Ut,deleteObject(n){n!==null&&n.delete()},fromWireType:Wr})};function We(n,e,t,r,a,s,u,l,d,f,m){this.name=n,this.registeredClass=e,this.isReference=t,this.isConst=r,this.isSmartPointer=a,this.pointeeType=s,this.sharingPolicy=u,this.rawGetPointee=l,this.rawConstructor=d,this.rawShare=f,this.rawDestructor=m,!a&&e.baseClass===void 0?r?(this.toWireType=Lr,this.destructorFunction=null):(this.toWireType=Nr,this.destructorFunction=null):this.toWireType=zr}var Ht=(n,e,t)=>{o.hasOwnProperty(n)||Me("Replacing nonexistant public symbol"),o[n].overloadTable!==void 0&&t!==void 0?o[n].overloadTable[t]=e:(o[n]=e,o[n].argCount=t)},Yr=(n,e,t)=>{var r=o["dynCall_"+n];return t&&t.length?r.apply(null,[e].concat(t)):r.call(null,e)},Ie=[],Vt,W=n=>{var e=Ie[n];return e||(n>=Ie.length&&(Ie.length=n+1),Ie[n]=e=Vt.get(n)),e},Gr=(n,e,t)=>{if(n.includes("j"))return Yr(n,e,t);var r=W(e).apply(null,t);return r},qr=(n,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Gr(n,e,t)}},ee=(n,e)=>{n=G(n);function t(){return n.includes("j")?qr(n,e):W(e)}var r=t();return typeof r!="function"&&D(`unknown function pointer with signature ${n}: ${e}`),r},Jr=(n,e)=>{var t=st(e,function(r){this.name=e,this.message=r;var a=new Error(r).stack;a!==void 0&&(this.stack=this.toString()+` +import{q as go,r as Ee,o as za,s as wo,v as va,x as ya,y as bo,f as Se,g as Ye,h as Z,z as $o,A as $a,B as Na,C as _o,u as Co,b as To,d as Po,e as ga,i as fe,t as gt,m as Ve,p as wa,D as So,k as Sa,l as Ea,E as Aa,F as Oa,G as Eo,H as Ao,n as ka,U as Da,I as ja}from"./app-60af1d1a.js";import{F as Oo}from"./Form-0a788c90.js";import{S as ko}from"./Spinner-bfa27d3a.js";import{_ as Do}from"./QrContentDisplay-ea3c63ab.js";import{u as jo}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */var Ba=(i,c,o)=>{if(!c.has(i))throw TypeError("Cannot "+o)},xa=(i,c,o)=>(Ba(i,c,"read from private field"),o?o.call(i):c.get(i)),xo=(i,c,o)=>{if(c.has(i))throw TypeError("Cannot add the same private member more than once");c instanceof WeakSet?c.add(i):c.set(i,o)},Mo=(i,c,o,h)=>(Ba(i,c,"write to private field"),h?h.call(i,o):c.set(i,o),o);const Ma=["aztec","code_128","code_39","code_93","codabar","data_matrix","ean_13","ean_8","itf","pdf417","qr_code","upc_a","upc_e","unknown"];function Ro(i){if(Ya(i))return{width:i.naturalWidth,height:i.naturalHeight};if(Ga(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(qa(i))return{width:i.videoWidth,height:i.videoHeight};if(Xa(i))return{width:i.width,height:i.height};if(Qa(i))return{width:i.displayWidth,height:i.displayHeight};if(Ja(i))return{width:i.width,height:i.height};if(Za(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ya(i){try{return i instanceof HTMLImageElement}catch{return!1}}function Ga(i){try{return i instanceof SVGImageElement}catch{return!1}}function qa(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function Ja(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function Xa(i){try{return i instanceof ImageBitmap}catch{return!1}}function Za(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function Qa(i){try{return i instanceof VideoFrame}catch{return!1}}function Ka(i){try{return i instanceof Blob}catch{return!1}}function Fo(i){try{return i instanceof ImageData}catch{return!1}}function Wo(i,c){try{const o=new OffscreenCanvas(i,c);if(o.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return o;throw void 0}catch{const h=document.createElement("canvas");return h.width=i,h.height=c,h}}async function eo(i){if(Ya(i)&&!await Vo(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Ga(i)&&!await Lo(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Qa(i)&&zo(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(qa(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Xa(i)&&Bo(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:c,height:o}=Ro(i);if(c===0||o===0)return null;const h=Wo(c,o).getContext("2d");h.drawImage(i,0,0);try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Io(i){let c;try{if(createImageBitmap)c=await createImageBitmap(i);else if(Image){c=new Image;let o="";try{o=URL.createObjectURL(i),c.src=o,await c.decode()}finally{URL.revokeObjectURL(o)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await eo(c)}function Uo(i){const{width:c,height:o}=i;if(c===0||o===0)return null;const h=i.getContext("2d");try{return h.getImageData(0,0,c,o)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Ho(i){if(Ka(i))return await Io(i);if(Fo(i)){if(No(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return Ja(i)||Za(i)?Uo(i):await eo(i)}async function Vo(i){try{return await i.decode(),!0}catch{return!1}}async function Lo(i){var c;try{return await((c=i.decode)==null?void 0:c.call(i)),!0}catch{return!1}}function zo(i){return i.format===null}function No(i){return i.data.buffer.byteLength===0}function Bo(i){return i.width===0&&i.height===0}function Ra(i,c){return i instanceof DOMException?new DOMException(`${c}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${c}: ${i.message}`):new Error(`${c}: ${i}`)}const Fa=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","UPC-A","UPC-E"];function Yo(i){return i.join("|")}function Go(i){const c=Wa(i);let o=0,h=Fa.length-1;for(;o<=h;){const v=Math.floor((o+h)/2),b=Fa[v],$=Wa(b);if($===c)return b;${const o=i.match(/_(.+?)\.wasm$/);return o?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.0.0-rc.3/dist/${o[1]}/${i}`:c+i}};let Ia=new WeakMap;function Ta(i,c){var o;const h=Ia.get(i);if(h!=null&&h.modulePromise&&(c===void 0||Object.is(c,h.moduleOverrides)))return h.modulePromise;const v=(o=c??(h==null?void 0:h.moduleOverrides))!=null?o:ei,b=i({...v});return Ia.set(i,{moduleOverrides:v,modulePromise:b}),b}async function ti(i,c,o=lr){const h={...lr,...o},v=await Ta(i),{size:b}=c,$=new Uint8Array(await c.arrayBuffer()),E=v._malloc(b);v.HEAPU8.set($,E);const y=v.readBarcodesFromImage(E,b,to(v,h));v._free(E);const _=[];for(let O=0;O{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(c={}){var o=c,h,v;o.ready=new Promise((n,e)=>{h=n,v=e});var b=Object.assign({},o),$="./this.program",E=typeof window=="object",y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var _="";function O(n){return o.locateFile?o.locateFile(n,_):_+n}var P;(E||y)&&(y?_=self.location.href:typeof document<"u"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_.indexOf("blob:")!==0?_=_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):_="",y&&(P=n=>{var e=new XMLHttpRequest;return e.open("GET",n,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),o.print||console.log.bind(console);var B=o.printErr||console.error.bind(console);Object.assign(o,b),b=null,o.arguments&&o.arguments,o.thisProgram&&($=o.thisProgram),o.quit&&o.quit;var q;o.wasmBinary&&(q=o.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var Y,X=!1;function oe(n,e){n||pe(e)}var x,k,z,J,R,A,we,Oe;function ze(){var n=Y.buffer;o.HEAP8=x=new Int8Array(n),o.HEAP16=z=new Int16Array(n),o.HEAPU8=k=new Uint8Array(n),o.HEAPU16=J=new Uint16Array(n),o.HEAP32=R=new Int32Array(n),o.HEAPU32=A=new Uint32Array(n),o.HEAPF32=we=new Float32Array(n),o.HEAPF64=Oe=new Float64Array(n)}var Ne=[],Be=[],Xe=[];function Ct(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Ze(o.preRun.shift());et(Ne)}function Tt(){et(Be)}function Pt(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)St(o.postRun.shift());et(Xe)}function Ze(n){Ne.unshift(n)}function wt(n){Be.unshift(n)}function St(n){Xe.unshift(n)}var se=0,ie=null;function ye(n){se++,o.monitorRunDependencies&&o.monitorRunDependencies(se)}function Et(n){if(se--,o.monitorRunDependencies&&o.monitorRunDependencies(se),se==0&&ie){var e=ie;ie=null,e()}}function pe(n){o.onAbort&&o.onAbort(n),n="Aborted("+n+")",B(n),X=!0,n+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(n);throw v(e),e}var At="data:application/octet-stream;base64,",Qe=n=>n.startsWith(At),ce;ce="zxing_reader.wasm",Qe(ce)||(ce=O(ce));function Ke(n){if(n==ce&&q)return new Uint8Array(q);if(P)return P(n);throw"both async and sync fetching of the wasm failed"}function fr(n){return!q&&(E||y)&&typeof fetch=="function"?fetch(n,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+n+"'";return e.arrayBuffer()}).catch(()=>Ke(n)):Promise.resolve().then(()=>Ke(n))}function Ot(n,e,t){return fr(n).then(r=>WebAssembly.instantiate(r,e)).then(r=>r).then(t,r=>{B(`failed to asynchronously prepare wasm: ${r}`),pe(r)})}function hr(n,e,t,r){return!n&&typeof WebAssembly.instantiateStreaming=="function"&&!Qe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var s=WebAssembly.instantiateStreaming(a,t);return s.then(r,function(u){return B(`wasm streaming compile failed: ${u}`),B("falling back to ArrayBuffer instantiation"),Ot(e,t,r)})}):Ot(e,t,r)}function pr(){var n={a:Jn};function e(r,a){return F=r.exports,Y=F.fa,ze(),Vt=F.ja,wt(F.ga),Et(),F}ye();function t(r){e(r.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(n,e)}catch(r){B(`Module.instantiateWasm callback failed with error: ${r}`),v(r)}return hr(q,ce,n,t).catch(v),{}}var et=n=>{for(;n.length>0;)n.shift()(o)};o.noExitRuntime;var ke=[],De=0,mr=n=>{var e=new tt(n);return e.get_caught()||(e.set_caught(!0),De--),e.set_rethrown(!1),ke.push(e),nr(e.excPtr),e.get_exception_ptr()},ne=0,vr=()=>{M(0,0);var n=ke.pop();rr(n.excPtr),ne=0};function tt(n){this.excPtr=n,this.ptr=n-24,this.set_type=function(e){A[this.ptr+4>>2]=e},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(e){A[this.ptr+8>>2]=e},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,x[this.ptr+12>>0]=e},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,x[this.ptr+13>>0]=e},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){A[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=or(this.get_type());if(e)return A[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var yr=n=>{throw ne||(ne=n),ne},rt=n=>{var e=ne;if(!e)return Pe(0),0;var t=new tt(e);t.set_adjusted_ptr(e);var r=t.get_type();if(!r)return Pe(0),e;for(var a in n){var s=n[a];if(s===0||s===r)break;var u=t.ptr+16;if(ar(s,r,u))return Pe(s),e}return Pe(r),e},gr=()=>rt([]),wr=n=>rt([n]),br=(n,e)=>rt([n,e]),$r=()=>{var n=ke.pop();n||pe("no exception to throw");var e=n.excPtr;throw n.get_rethrown()||(ke.push(n),n.set_rethrown(!0),n.set_caught(!1),De++),ne=e,ne},_r=(n,e,t)=>{var r=new tt(n);throw r.init(e,t),ne=n,De++,ne},Cr=()=>De,je={},kt=n=>{for(;n.length;){var e=n.pop(),t=n.pop();t(e)}};function nt(n){return this.fromWireType(R[n>>2])}var me={},le={},xe={},Dt,Me=n=>{throw new Dt(n)},de=(n,e,t)=>{n.forEach(function(l){xe[l]=e});function r(l){var d=t(l);d.length!==n.length&&Me("Mismatched type converter count");for(var f=0;f{le.hasOwnProperty(l)?a[d]=le[l]:(s.push(l),me.hasOwnProperty(l)||(me[l]=[]),me[l].push(()=>{a[d]=le[l],++u,u===s.length&&r(a)}))}),s.length===0&&r(a)},Tr=n=>{var e=je[n];delete je[n];var t=e.rawConstructor,r=e.rawDestructor,a=e.fields,s=a.map(u=>u.getterReturnType).concat(a.map(u=>u.setterArgumentType));de([n],s,u=>{var l={};return a.forEach((d,f)=>{var m=d.fieldName,w=u[f],C=d.getter,S=d.getterContext,j=u[f+a.length],H=d.setter,V=d.setterContext;l[m]={read:L=>w.fromWireType(C(S,L)),write:(L,g)=>{var p=[];H(V,L,j.toWireType(p,g)),kt(p)}}}),[{name:e.name,fromWireType:d=>{var f={};for(var m in l)f[m]=l[m].read(d);return r(d),f},toWireType:(d,f)=>{for(var m in l)if(!(m in f))throw new TypeError(`Missing field: "${m}"`);var w=t();for(m in l)l[m].write(w,f[m]);return d!==null&&d.push(r,w),w},argPackAdvance:re,readValueFromPointer:nt,destructorFunction:r}]})},Pr=(n,e,t,r,a)=>{},Sr=()=>{for(var n=new Array(256),e=0;e<256;++e)n[e]=String.fromCharCode(e);jt=n},jt,G=n=>{for(var e="",t=n;k[t];)e+=jt[k[t++]];return e},ve,D=n=>{throw new ve(n)};function Er(n,e,t={}){var r=e.name;if(n||D(`type "${r}" must have a positive integer typeid pointer`),le.hasOwnProperty(n)){if(t.ignoreDuplicateRegistrations)return;D(`Cannot register type '${r}' twice`)}if(le[n]=e,delete xe[n],me.hasOwnProperty(n)){var a=me[n];delete me[n],a.forEach(s=>s())}}function te(n,e,t={}){if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Er(n,e,t)}var re=8,Ar=(n,e,t,r)=>{e=G(e),te(n,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,s){return s?t:r},argPackAdvance:re,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},Or=n=>({count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}),at=n=>{function e(t){return t.$$.ptrType.registeredClass.name}D(e(n)+" instance already deleted")},ot=!1,xt=n=>{},kr=n=>{n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)},Mt=n=>{n.count.value-=1;var e=n.count.value===0;e&&kr(n)},Rt=(n,e,t)=>{if(e===t)return n;if(t.baseClass===void 0)return null;var r=Rt(n,e,t.baseClass);return r===null?null:t.downcast(r)},Ft={},Dr=()=>Object.keys(_e).length,jr=()=>{var n=[];for(var e in _e)_e.hasOwnProperty(e)&&n.push(_e[e]);return n},be=[],it=()=>{for(;be.length;){var n=be.pop();n.$$.deleteScheduled=!1,n.delete()}},$e,xr=n=>{$e=n,be.length&&$e&&$e(it)},Mr=()=>{o.getInheritedInstanceCount=Dr,o.getLiveInheritedInstances=jr,o.flushPendingDeletes=it,o.setDelayFunction=xr},_e={},Rr=(n,e)=>{for(e===void 0&&D("ptr should not be undefined");n.baseClass;)e=n.upcast(e),n=n.baseClass;return e},Fr=(n,e)=>(e=Rr(n,e),_e[e]),Re=(n,e)=>{(!e.ptrType||!e.ptr)&&Me("makeClassHandle requires ptr and ptrType");var t=!!e.smartPtrType,r=!!e.smartPtr;return t!==r&&Me("Both smartPtrType and smartPtr must be specified"),e.count={value:1},Ce(Object.create(n,{$$:{value:e}}))};function Wr(n){var e=this.getPointee(n);if(!e)return this.destructor(n),null;var t=Fr(this.registeredClass,e);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=e,t.$$.smartPtr=n,t.clone();var r=t.clone();return this.destructor(n),r}function a(){return this.isSmartPointer?Re(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:n}):Re(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var s=this.registeredClass.getActualType(e),u=Ft[s];if(!u)return a.call(this);var l;this.isConst?l=u.constPointerType:l=u.pointerType;var d=Rt(e,this.registeredClass,l.registeredClass);return d===null?a.call(this):this.isSmartPointer?Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d,smartPtrType:this,smartPtr:n}):Re(l.registeredClass.instancePrototype,{ptrType:l,ptr:d})}var Ce=n=>typeof FinalizationRegistry>"u"?(Ce=e=>e,n):(ot=new FinalizationRegistry(e=>{Mt(e.$$)}),Ce=e=>{var t=e.$$,r=!!t.smartPtr;if(r){var a={$$:t};ot.register(e,a,e)}return e},xt=e=>ot.unregister(e),Ce(n)),Ir=()=>{Object.assign(Fe.prototype,{isAliasOf(n){if(!(this instanceof Fe)||!(n instanceof Fe))return!1;var e=this.$$.ptrType.registeredClass,t=this.$$.ptr;n.$$=n.$$;for(var r=n.$$.ptrType.registeredClass,a=n.$$.ptr;e.baseClass;)t=e.upcast(t),e=e.baseClass;for(;r.baseClass;)a=r.upcast(a),r=r.baseClass;return e===r&&t===a},clone(){if(this.$$.ptr||at(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var n=Ce(Object.create(Object.getPrototypeOf(this),{$$:{value:Or(this.$$)}}));return n.$$.count.value+=1,n.$$.deleteScheduled=!1,n},delete(){this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),xt(this),Mt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),be.push(this),be.length===1&&$e&&$e(it),this.$$.deleteScheduled=!0,this}})};function Fe(){}var Ur=48,Hr=57,Wt=n=>{if(n===void 0)return"_unknown";n=n.replace(/[^a-zA-Z0-9_]/g,"$");var e=n.charCodeAt(0);return e>=Ur&&e<=Hr?`_${n}`:n};function st(n,e){return n=Wt(n),{[n]:function(){return e.apply(this,arguments)}}[n]}var It=(n,e,t)=>{if(n[e].overloadTable===void 0){var r=n[e];n[e]=function(){return n[e].overloadTable.hasOwnProperty(arguments.length)||D(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${n[e].overloadTable})!`),n[e].overloadTable[arguments.length].apply(this,arguments)},n[e].overloadTable=[],n[e].overloadTable[r.argCount]=r}},ut=(n,e,t)=>{o.hasOwnProperty(n)?((t===void 0||o[n].overloadTable!==void 0&&o[n].overloadTable[t]!==void 0)&&D(`Cannot register public name '${n}' twice`),It(o,n,n),o.hasOwnProperty(t)&&D(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),o[n].overloadTable[t]=e):(o[n]=e,t!==void 0&&(o[n].numArguments=t))};function Vr(n,e,t,r,a,s,u,l){this.name=n,this.constructor=e,this.instancePrototype=t,this.rawDestructor=r,this.baseClass=a,this.getActualType=s,this.upcast=u,this.downcast=l,this.pureVirtualFunctions=[]}var ct=(n,e,t)=>{for(;e!==t;)e.upcast||D(`Expected null or instance of ${t.name}, got an instance of ${e.name}`),n=e.upcast(n),e=e.baseClass;return n};function Lr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function zr(n,e){var t;if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,t),t):0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass;if(t=ct(e.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&D("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?t=e.$$.smartPtr:D(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)t=e.$$.smartPtr;else{var a=e.clone();t=this.rawShare(t,ue.toHandle(()=>a.delete())),n!==null&&n.push(this.rawDestructor,t)}break;default:D("Unsupporting sharing policy")}return t}function Nr(n,e){if(e===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;e.$$||D(`Cannot pass "${ht(e)}" as a ${this.name}`),e.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&D(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var t=e.$$.ptrType.registeredClass,r=ct(e.$$.ptr,t,this.registeredClass);return r}function Ut(n){return this.fromWireType(A[n>>2])}var Br=()=>{Object.assign(We.prototype,{getPointee(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n},destructor(n){this.rawDestructor&&this.rawDestructor(n)},argPackAdvance:re,readValueFromPointer:Ut,deleteObject(n){n!==null&&n.delete()},fromWireType:Wr})};function We(n,e,t,r,a,s,u,l,d,f,m){this.name=n,this.registeredClass=e,this.isReference=t,this.isConst=r,this.isSmartPointer=a,this.pointeeType=s,this.sharingPolicy=u,this.rawGetPointee=l,this.rawConstructor=d,this.rawShare=f,this.rawDestructor=m,!a&&e.baseClass===void 0?r?(this.toWireType=Lr,this.destructorFunction=null):(this.toWireType=Nr,this.destructorFunction=null):this.toWireType=zr}var Ht=(n,e,t)=>{o.hasOwnProperty(n)||Me("Replacing nonexistant public symbol"),o[n].overloadTable!==void 0&&t!==void 0?o[n].overloadTable[t]=e:(o[n]=e,o[n].argCount=t)},Yr=(n,e,t)=>{var r=o["dynCall_"+n];return t&&t.length?r.apply(null,[e].concat(t)):r.call(null,e)},Ie=[],Vt,W=n=>{var e=Ie[n];return e||(n>=Ie.length&&(Ie.length=n+1),Ie[n]=e=Vt.get(n)),e},Gr=(n,e,t)=>{if(n.includes("j"))return Yr(n,e,t);var r=W(e).apply(null,t);return r},qr=(n,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Gr(n,e,t)}},ee=(n,e)=>{n=G(n);function t(){return n.includes("j")?qr(n,e):W(e)}var r=t();return typeof r!="function"&&D(`unknown function pointer with signature ${n}: ${e}`),r},Jr=(n,e)=>{var t=st(e,function(r){this.name=e,this.message=r;var a=new Error(r).stack;a!==void 0&&(this.stack=this.toString()+` `+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Lt,zt=n=>{var e=tr(n),t=G(e);return ae(e),t},Ue=(n,e)=>{var t=[],r={};function a(s){if(!r[s]&&!le[s]){if(xe[s]){xe[s].forEach(a);return}t.push(s),r[s]=!0}}throw e.forEach(a),new Lt(`${n}: `+t.map(zt).join([", "]))},Xr=(n,e,t,r,a,s,u,l,d,f,m,w,C)=>{m=G(m),s=ee(a,s),l&&(l=ee(u,l)),f&&(f=ee(d,f)),C=ee(w,C);var S=Wt(m);ut(S,function(){Ue(`Cannot construct ${m} due to unbound types`,[r])}),de([n,e,t],r?[r]:[],function(j){j=j[0];var H,V;r?(H=j.registeredClass,V=H.instancePrototype):V=Fe.prototype;var L=st(S,function(){if(Object.getPrototypeOf(this)!==g)throw new ve("Use 'new' to construct "+m);if(p.constructor_body===void 0)throw new ve(m+" has no accessible constructor");var ge=p.constructor_body[arguments.length];if(ge===void 0)throw new ve(`Tried to invoke ctor of ${m} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(p.constructor_body).toString()}) parameters instead!`);return ge.apply(this,arguments)}),g=Object.create(V,{constructor:{value:L}});L.prototype=g;var p=new Vr(m,L,g,C,H,s,l,f);p.baseClass&&(p.baseClass.__derivedClasses===void 0&&(p.baseClass.__derivedClasses=[]),p.baseClass.__derivedClasses.push(p));var T=new We(m,p,!0,!1,!1),N=new We(m+"*",p,!1,!1,!1),Q=new We(m+" const*",p,!1,!0,!1);return Ft[n]={pointerType:N,constPointerType:Q},Ht(S,L),[T,N,Q]})},lt=(n,e)=>{for(var t=[],r=0;r>2]);return t};function dt(n,e,t,r,a,s){var u=e.length;u<2&&D("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var l=e[1]!==null&&t!==null,d=!1,f=1;f{var u=lt(e,t);a=ee(r,a),de([],[n],function(l){l=l[0];var d=`constructor ${l.name}`;if(l.registeredClass.constructor_body===void 0&&(l.registeredClass.constructor_body=[]),l.registeredClass.constructor_body[e-1]!==void 0)throw new ve(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${l.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return l.registeredClass.constructor_body[e-1]=()=>{Ue(`Cannot construct ${l.name} due to unbound types`,u)},de([],u,f=>(f.splice(1,0,null),l.registeredClass.constructor_body[e-1]=dt(d,f,null,a,s),[])),[]})},Nt=n=>{n=n.trim();const e=n.indexOf("(");return e!==-1?(oe(n[n.length-1]==")","Parentheses for argument names should match."),n.substr(0,e)):n},Qr=(n,e,t,r,a,s,u,l,d)=>{var f=lt(t,r);e=G(e),e=Nt(e),s=ee(a,s),de([],[n],function(m){m=m[0];var w=`${m.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),l&&m.registeredClass.pureVirtualFunctions.push(e);function C(){Ue(`Cannot call ${w} due to unbound types`,f)}var S=m.registeredClass.instancePrototype,j=S[e];return j===void 0||j.overloadTable===void 0&&j.className!==m.name&&j.argCount===t-2?(C.argCount=t-2,C.className=m.name,S[e]=C):(It(S,e,w),S[e].overloadTable[t-2]=C),de([],f,function(H){var V=dt(w,H,m,s,u);return S[e].overloadTable===void 0?(V.argCount=t-2,S[e]=V):S[e].overloadTable[t-2]=V,[]}),[]})};function Kr(){Object.assign(Bt.prototype,{get(n){return this.allocated[n]},has(n){return this.allocated[n]!==void 0},allocate(n){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=n,e},free(n){this.allocated[n]=void 0,this.freelist.push(n)}})}function Bt(){this.allocated=[void 0],this.freelist=[]}var K=new Bt,Yt=n=>{n>=K.reserved&&--K.get(n).refcount===0&&K.free(n)},en=()=>{for(var n=0,e=K.reserved;e{K.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),K.reserved=K.allocated.length,o.count_emval_handles=en},ue={toValue:n=>(n||D("Cannot use deleted val. handle = "+n),K.get(n).value),toHandle:n=>{switch(n){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return K.allocate({refcount:1,value:n})}}},rn=(n,e)=>{e=G(e),te(n,{name:e,fromWireType:t=>{var r=ue.toValue(t);return Yt(t),r},toWireType:(t,r)=>ue.toHandle(r),argPackAdvance:re,readValueFromPointer:nt,destructorFunction:null})},nn=(n,e,t)=>{switch(e){case 1:return t?function(r){return this.fromWireType(x[r>>0])}:function(r){return this.fromWireType(k[r>>0])};case 2:return t?function(r){return this.fromWireType(z[r>>1])}:function(r){return this.fromWireType(J[r>>1])};case 4:return t?function(r){return this.fromWireType(R[r>>2])}:function(r){return this.fromWireType(A[r>>2])};default:throw new TypeError(`invalid integer width (${e}): ${n}`)}},an=(n,e,t,r)=>{e=G(e);function a(){}a.values={},te(n,{name:e,constructor:a,fromWireType:function(s){return this.constructor.values[s]},toWireType:(s,u)=>u.value,argPackAdvance:re,readValueFromPointer:nn(e,t,r),destructorFunction:null}),ut(e,a)},ft=(n,e)=>{var t=le[n];return t===void 0&&D(e+" has unknown type "+zt(n)),t},on=(n,e,t)=>{var r=ft(n,"enum");e=G(e);var a=r.constructor,s=Object.create(r.constructor.prototype,{value:{value:t},constructor:{value:st(`${r.name}_${e}`,function(){})}});a.values[t]=s,a[e]=s},ht=n=>{if(n===null)return"null";var e=typeof n;return e==="object"||e==="array"||e==="function"?n.toString():""+n},sn=(n,e)=>{switch(e){case 4:return function(t){return this.fromWireType(we[t>>2])};case 8:return function(t){return this.fromWireType(Oe[t>>3])};default:throw new TypeError(`invalid float width (${e}): ${n}`)}},un=(n,e,t)=>{e=G(e),te(n,{name:e,fromWireType:r=>r,toWireType:(r,a)=>a,argPackAdvance:re,readValueFromPointer:sn(e,t),destructorFunction:null})},cn=(n,e,t,r,a,s,u)=>{var l=lt(e,t);n=G(n),n=Nt(n),a=ee(r,a),ut(n,function(){Ue(`Cannot call ${n} due to unbound types`,l)},e-1),de([],l,function(d){var f=[d[0],null].concat(d.slice(1));return Ht(n,dt(n,f,null,a,s),e-1),[]})},ln=(n,e,t)=>{switch(e){case 1:return t?r=>x[r>>0]:r=>k[r>>0];case 2:return t?r=>z[r>>1]:r=>J[r>>1];case 4:return t?r=>R[r>>2]:r=>A[r>>2];default:throw new TypeError(`invalid integer width (${e}): ${n}`)}},dn=(n,e,t,r,a)=>{e=G(e);var s=m=>m;if(r===0){var u=32-8*t;s=m=>m<>>u}var l=e.includes("unsigned"),d=(m,w)=>{},f;l?f=function(m,w){return d(w,this.name),w>>>0}:f=function(m,w){return d(w,this.name),w},te(n,{name:e,fromWireType:s,toWireType:f,argPackAdvance:re,readValueFromPointer:ln(e,t,r!==0),destructorFunction:null})},fn=(n,e,t)=>{var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=r[e];function s(u){var l=A[u>>2],d=A[u+4>>2];return new a(x.buffer,d,l)}t=G(t),te(n,{name:t,fromWireType:s,argPackAdvance:re,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},Gt=(n,e,t,r)=>{if(!(r>0))return 0;for(var a=t,s=t+r-1,u=0;u=55296&&l<=57343){var d=n.charCodeAt(++u);l=65536+((l&1023)<<10)|d&1023}if(l<=127){if(t>=s)break;e[t++]=l}else if(l<=2047){if(t+1>=s)break;e[t++]=192|l>>6,e[t++]=128|l&63}else if(l<=65535){if(t+2>=s)break;e[t++]=224|l>>12,e[t++]=128|l>>6&63,e[t++]=128|l&63}else{if(t+3>=s)break;e[t++]=240|l>>18,e[t++]=128|l>>12&63,e[t++]=128|l>>6&63,e[t++]=128|l&63}}return e[t]=0,t-a},hn=(n,e,t)=>Gt(n,k,e,t),qt=n=>{for(var e=0,t=0;t=55296&&r<=57343?(e+=4,++t):e+=3}return e},Jt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,pn=(n,e,t)=>{for(var r=e+t,a=e;n[a]&&!(a>=r);)++a;if(a-e>16&&n.buffer&&Jt)return Jt.decode(n.subarray(e,a));for(var s="";e>10,56320|f&1023)}}return s},pt=(n,e)=>n?pn(k,n,e):"",mn=(n,e)=>{e=G(e);var t=e==="std::string";te(n,{name:e,fromWireType(r){var a=A[r>>2],s=r+4,u;if(t)for(var l=s,d=0;d<=a;++d){var f=s+d;if(d==a||k[f]==0){var m=f-l,w=pt(l,m);u===void 0?u=w:(u+=String.fromCharCode(0),u+=w),l=f+1}}else{for(var C=new Array(a),d=0;d>2]=s,t&&u)hn(a,d,s+1);else if(u)for(var f=0;f255&&(ae(d),D("String has UTF-16 code units that do not fit in 8 bits")),k[d+f]=m}else for(var f=0;f{for(var t=n,r=t>>1,a=r+e/2;!(r>=a)&&J[r];)++r;if(t=r<<1,t-n>32&&Xt)return Xt.decode(k.subarray(n,t));for(var s="",u=0;!(u>=e/2);++u){var l=z[n+u*2>>1];if(l==0)break;s+=String.fromCharCode(l)}return s},yn=(n,e,t)=>{if(t===void 0&&(t=2147483647),t<2)return 0;t-=2;for(var r=e,a=t>1]=u,e+=2}return z[e>>1]=0,e-r},gn=n=>n.length*2,wn=(n,e)=>{for(var t=0,r="";!(t>=e/4);){var a=R[n+t*4>>2];if(a==0)break;if(++t,a>=65536){var s=a-65536;r+=String.fromCharCode(55296|s>>10,56320|s&1023)}else r+=String.fromCharCode(a)}return r},bn=(n,e,t)=>{if(t===void 0&&(t=2147483647),t<4)return 0;for(var r=e,a=r+t-4,s=0;s=55296&&u<=57343){var l=n.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(R[e>>2]=u,e+=4,e+4>a)break}return R[e>>2]=0,e-r},$n=n=>{for(var e=0,t=0;t=55296&&r<=57343&&++t,e+=4}return e},_n=(n,e,t)=>{t=G(t);var r,a,s,u,l;e===2?(r=vn,a=yn,u=gn,s=()=>J,l=1):e===4&&(r=wn,a=bn,u=$n,s=()=>A,l=2),te(n,{name:t,fromWireType:d=>{for(var f=A[d>>2],m=s(),w,C=d+4,S=0;S<=f;++S){var j=d+4+S*e;if(S==f||m[j>>l]==0){var H=j-C,V=r(C,H);w===void 0?w=V:(w+=String.fromCharCode(0),w+=V),C=j+e}}return ae(d),w},toWireType:(d,f)=>{typeof f!="string"&&D(`Cannot pass non-string to C++ string type ${t}`);var m=u(f),w=vt(4+m+e);return A[w>>2]=m>>l,a(f,w+4,m+e),d!==null&&d.push(ae,w),w},argPackAdvance:re,readValueFromPointer:nt,destructorFunction(d){ae(d)}})},Cn=(n,e,t,r,a,s)=>{je[n]={name:G(e),rawConstructor:ee(t,r),rawDestructor:ee(a,s),fields:[]}},Tn=(n,e,t,r,a,s,u,l,d,f)=>{je[n].fields.push({fieldName:G(e),getterReturnType:t,getter:ee(r,a),getterContext:s,setterArgumentType:u,setter:ee(l,d),setterContext:f})},Pn=(n,e)=>{e=G(e),te(n,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,r)=>{}})},Sn={},En=n=>{var e=Sn[n];return e===void 0?G(n):e},Zt=()=>{if(typeof globalThis=="object")return globalThis;function n(e){e.$$$embind_global$$$=e;var t=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return t||delete e.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&n(global)?$$$embind_global$$$=global:typeof self=="object"&&n(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},An=n=>n===0?ue.toHandle(Zt()):(n=En(n),ue.toHandle(Zt()[n])),On=n=>{n>4&&(K.get(n).refcount+=1)},kn=n=>{var e=new Array(n+1);return function(t,r,a){e[0]=t;for(var s=0;s>2],"parameter "+s);e[s+1]=u.readValueFromPointer(a),a+=u.argPackAdvance}var l=new(t.bind.apply(t,e));return ue.toHandle(l)}},Qt={},Dn=(n,e,t,r)=>{n=ue.toValue(n);var a=Qt[e];return a||(a=kn(e),Qt[e]=a),a(n,t,r)},jn=(n,e)=>{n=ft(n,"_emval_take_value");var t=n.readValueFromPointer(e);return ue.toHandle(t)},xn=()=>{pe("")},Mn=(n,e,t)=>k.copyWithin(n,e,e+t),Rn=()=>2147483648,Fn=n=>{var e=Y.buffer,t=(n-e.byteLength+65535)/65536;try{return Y.grow(t),ze(),1}catch{}},Wn=n=>{var e=k.length;n>>>=0;var t=Rn();if(n>t)return!1;for(var r=(d,f)=>d+(f-d%f)%f,a=1;a<=4;a*=2){var s=e*(1+.2/a);s=Math.min(s,n+100663296);var u=Math.min(t,r(Math.max(n,s),65536)),l=Fn(u);if(l)return!0}return!1},mt={},In=()=>$||"./this.program",Te=()=>{if(!Te.strings){var n=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:n,_:In()};for(var t in mt)mt[t]===void 0?delete e[t]:e[t]=mt[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Te.strings=r}return Te.strings},Un=(n,e)=>{for(var t=0;t>0]=n.charCodeAt(t);x[e>>0]=0},Hn=(n,e)=>{var t=0;return Te().forEach((r,a)=>{var s=e+t;A[n+a*4>>2]=s,Un(r,s),t+=r.length+1}),0},Vn=(n,e)=>{var t=Te();A[n>>2]=t.length;var r=0;return t.forEach(a=>r+=a.length+1),A[e>>2]=r,0},Ln=n=>n,He=n=>n%4===0&&(n%100!==0||n%400===0),zn=(n,e)=>{for(var t=0,r=0;r<=e;t+=n[r++]);return t},Kt=[31,29,31,30,31,30,31,31,30,31,30,31],er=[31,28,31,30,31,30,31,31,30,31,30,31],Nn=(n,e)=>{for(var t=new Date(n.getTime());e>0;){var r=He(t.getFullYear()),a=t.getMonth(),s=(r?Kt:er)[a];if(e>s-t.getDate())e-=s-t.getDate()+1,t.setDate(1),a<11?t.setMonth(a+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+e),t}return t};function Bn(n,e,t){var r=t>0?t:qt(n)+1,a=new Array(r),s=Gt(n,a,0,a.length);return e&&(a.length=s),a}var Yn=(n,e)=>{x.set(n,e)},Gn=(n,e,t,r)=>{var a=A[r+40>>2],s={tm_sec:R[r>>2],tm_min:R[r+4>>2],tm_hour:R[r+8>>2],tm_mday:R[r+12>>2],tm_mon:R[r+16>>2],tm_year:R[r+20>>2],tm_wday:R[r+24>>2],tm_yday:R[r+28>>2],tm_isdst:R[r+32>>2],tm_gmtoff:R[r+36>>2],tm_zone:a?pt(a):""},u=pt(t),l={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var d in l)u=u.replace(new RegExp(d,"g"),l[d]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],m=["January","February","March","April","May","June","July","August","September","October","November","December"];function w(g,p,T){for(var N=typeof g=="number"?g.toString():g||"";N.length0?1:0}var N;return(N=T(g.getFullYear()-p.getFullYear()))===0&&(N=T(g.getMonth()-p.getMonth()))===0&&(N=T(g.getDate()-p.getDate())),N}function j(g){switch(g.getDay()){case 0:return new Date(g.getFullYear()-1,11,29);case 1:return g;case 2:return new Date(g.getFullYear(),0,3);case 3:return new Date(g.getFullYear(),0,2);case 4:return new Date(g.getFullYear(),0,1);case 5:return new Date(g.getFullYear()-1,11,31);case 6:return new Date(g.getFullYear()-1,11,30)}}function H(g){var p=Nn(new Date(g.tm_year+1900,0,1),g.tm_yday),T=new Date(p.getFullYear(),0,4),N=new Date(p.getFullYear()+1,0,4),Q=j(T),ge=j(N);return S(Q,p)<=0?S(ge,p)<=0?p.getFullYear()+1:p.getFullYear():p.getFullYear()-1}var V={"%a":g=>f[g.tm_wday].substring(0,3),"%A":g=>f[g.tm_wday],"%b":g=>m[g.tm_mon].substring(0,3),"%B":g=>m[g.tm_mon],"%C":g=>{var p=g.tm_year+1900;return C(p/100|0,2)},"%d":g=>C(g.tm_mday,2),"%e":g=>w(g.tm_mday,2," "),"%g":g=>H(g).toString().substring(2),"%G":g=>H(g),"%H":g=>C(g.tm_hour,2),"%I":g=>{var p=g.tm_hour;return p==0?p=12:p>12&&(p-=12),C(p,2)},"%j":g=>C(g.tm_mday+zn(He(g.tm_year+1900)?Kt:er,g.tm_mon-1),3),"%m":g=>C(g.tm_mon+1,2),"%M":g=>C(g.tm_min,2),"%n":()=>` `,"%p":g=>g.tm_hour>=0&&g.tm_hour<12?"AM":"PM","%S":g=>C(g.tm_sec,2),"%t":()=>" ","%u":g=>g.tm_wday||7,"%U":g=>{var p=g.tm_yday+7-g.tm_wday;return C(Math.floor(p/7),2)},"%V":g=>{var p=Math.floor((g.tm_yday+7-(g.tm_wday+6)%7)/7);if((g.tm_wday+371-g.tm_yday-2)%7<=2&&p++,p){if(p==53){var T=(g.tm_wday+371-g.tm_yday)%7;T!=4&&(T!=3||!He(g.tm_year))&&(p=1)}}else{p=52;var N=(g.tm_wday+7-g.tm_yday-1)%7;(N==4||N==5&&He(g.tm_year%400-1))&&p++}return C(p,2)},"%w":g=>g.tm_wday,"%W":g=>{var p=g.tm_yday+7-(g.tm_wday+6)%7;return C(Math.floor(p/7),2)},"%y":g=>(g.tm_year+1900).toString().substring(2),"%Y":g=>g.tm_year+1900,"%z":g=>{var p=g.tm_gmtoff,T=p>=0;return p=Math.abs(p)/60,p=p/60*100+p%60,(T?"+":"-")+("0000"+p).slice(-4)},"%Z":g=>g.tm_zone,"%%":()=>"%"};u=u.replace(/%%/g,"\0\0");for(var d in V)u.includes(d)&&(u=u.replace(new RegExp(d,"g"),V[d](s)));u=u.replace(/\0\0/g,"%");var L=Bn(u,!1);return L.length>e?0:(Yn(L,n),L.length-1)},qn=(n,e,t,r,a)=>Gn(n,e,t,r);Dt=o.InternalError=class extends Error{constructor(n){super(n),this.name="InternalError"}},Sr(),ve=o.BindingError=class extends Error{constructor(n){super(n),this.name="BindingError"}},Ir(),Mr(),Br(),Lt=o.UnboundTypeError=Jr(Error,"UnboundTypeError"),Kr(),tn();var Jn={s:mr,v:vr,b:gr,g:wr,q:br,I:$r,f:_r,T:Cr,d:yr,ba:Tr,P:Pr,Y:Ar,aa:Xr,$:Zr,w:Qr,X:rn,x:an,h:on,K:un,L:cn,t:dn,n:fn,J:mn,C:_n,A:Cn,ca:Tn,Z:Pn,ea:Yt,da:An,M:On,V:Dn,_:jn,B:xn,W:Mn,U:Wn,R:Hn,S:Vn,D:la,E:ca,m:da,a:Xn,e:ea,o:na,k:Kn,G:sa,u:oa,F:ua,z:ha,O:ma,l:ta,j:ra,c:Qn,p:Zn,H:ia,r:fa,i:aa,y:pa,N:Ln,Q:qn},F=pr(),ae=o._free=n=>(ae=o._free=F.ha)(n),vt=o._malloc=n=>(vt=o._malloc=F.ia)(n),tr=n=>(tr=F.ka)(n);o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=F.la)();var M=(n,e)=>(M=F.ma)(n,e),Pe=n=>(Pe=F.na)(n),I=()=>(I=F.oa)(),U=n=>(U=F.pa)(n),rr=n=>(rr=F.qa)(n),nr=n=>(nr=F.ra)(n),ar=(n,e,t)=>(ar=F.sa)(n,e,t),or=n=>(or=F.ta)(n);o.dynCall_viijii=(n,e,t,r,a,s,u)=>(o.dynCall_viijii=F.ua)(n,e,t,r,a,s,u);var ir=o.dynCall_jiiii=(n,e,t,r,a)=>(ir=o.dynCall_jiiii=F.va)(n,e,t,r,a);o.dynCall_iiiiij=(n,e,t,r,a,s,u)=>(o.dynCall_iiiiij=F.wa)(n,e,t,r,a,s,u),o.dynCall_iiiiijj=(n,e,t,r,a,s,u,l,d)=>(o.dynCall_iiiiijj=F.xa)(n,e,t,r,a,s,u,l,d),o.dynCall_iiiiiijj=(n,e,t,r,a,s,u,l,d,f)=>(o.dynCall_iiiiiijj=F.ya)(n,e,t,r,a,s,u,l,d,f);function Xn(n,e){var t=I();try{return W(n)(e)}catch(r){if(U(t),r!==r+0)throw r;M(1,0)}}function Zn(n,e,t,r){var a=I();try{W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function Qn(n,e,t){var r=I();try{W(n)(e,t)}catch(a){if(U(r),a!==a+0)throw a;M(1,0)}}function Kn(n,e,t,r,a){var s=I();try{return W(n)(e,t,r,a)}catch(u){if(U(s),u!==u+0)throw u;M(1,0)}}function ea(n,e,t){var r=I();try{return W(n)(e,t)}catch(a){if(U(r),a!==a+0)throw a;M(1,0)}}function ta(n){var e=I();try{W(n)()}catch(t){if(U(e),t!==t+0)throw t;M(1,0)}}function ra(n,e){var t=I();try{W(n)(e)}catch(r){if(U(t),r!==r+0)throw r;M(1,0)}}function na(n,e,t,r){var a=I();try{return W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function aa(n,e,t,r,a,s,u,l,d,f,m){var w=I();try{W(n)(e,t,r,a,s,u,l,d,f,m)}catch(C){if(U(w),C!==C+0)throw C;M(1,0)}}function oa(n,e,t,r,a,s,u){var l=I();try{return W(n)(e,t,r,a,s,u)}catch(d){if(U(l),d!==d+0)throw d;M(1,0)}}function ia(n,e,t,r,a){var s=I();try{W(n)(e,t,r,a)}catch(u){if(U(s),u!==u+0)throw u;M(1,0)}}function sa(n,e,t,r,a,s){var u=I();try{return W(n)(e,t,r,a,s)}catch(l){if(U(u),l!==l+0)throw l;M(1,0)}}function ua(n,e,t,r,a,s,u,l){var d=I();try{return W(n)(e,t,r,a,s,u,l)}catch(f){if(U(d),f!==f+0)throw f;M(1,0)}}function ca(n,e,t,r){var a=I();try{return W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function la(n,e,t,r){var a=I();try{return W(n)(e,t,r)}catch(s){if(U(a),s!==s+0)throw s;M(1,0)}}function da(n){var e=I();try{return W(n)()}catch(t){if(U(e),t!==t+0)throw t;M(1,0)}}function fa(n,e,t,r,a,s,u,l){var d=I();try{W(n)(e,t,r,a,s,u,l)}catch(f){if(U(d),f!==f+0)throw f;M(1,0)}}function ha(n,e,t,r,a,s,u,l,d,f,m,w){var C=I();try{return W(n)(e,t,r,a,s,u,l,d,f,m,w)}catch(S){if(U(C),S!==S+0)throw S;M(1,0)}}function pa(n,e,t,r,a,s,u,l,d,f,m,w,C,S,j,H){var V=I();try{W(n)(e,t,r,a,s,u,l,d,f,m,w,C,S,j,H)}catch(L){if(U(V),L!==L+0)throw L;M(1,0)}}function ma(n,e,t,r,a){var s=I();try{return ir(n,e,t,r,a)}catch(u){if(U(s),u!==u+0)throw u;M(1,0)}}var bt;ie=function n(){bt||yt(),bt||(ie=n)};function yt(){if(se>0||(Ct(),se>0))return;function n(){bt||(bt=!0,o.calledRun=!0,!X&&(Tt(),h(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),Pt()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),n()},1)):n()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return yt(),c.ready}})();function ni(i){return Ta(Pa,i)}async function ai(i,c){return ti(Pa,i,c)}async function oi(i,c){return ri(Pa,i,c)}(()=>{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(c={}){var o=c,h,v;o.ready=new Promise((e,t)=>{h=e,v=t});var b=Object.assign({},o),$="./this.program",E=typeof window=="object",y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var _="";function O(e){return o.locateFile?o.locateFile(e,_):_+e}var P;(E||y)&&(y?_=self.location.href:typeof document<"u"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_.indexOf("blob:")!==0?_=_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):_="",y&&(P=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)})),o.print||console.log.bind(console);var B=o.printErr||console.error.bind(console);Object.assign(o,b),b=null,o.arguments&&o.arguments,o.thisProgram&&($=o.thisProgram),o.quit&&o.quit;var q;o.wasmBinary&&(q=o.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var Y,X=!1;function oe(e,t){e||pe(t)}var x,k,z,J,R,A,we,Oe;function ze(){var e=Y.buffer;o.HEAP8=x=new Int8Array(e),o.HEAP16=z=new Int16Array(e),o.HEAPU8=k=new Uint8Array(e),o.HEAPU16=J=new Uint16Array(e),o.HEAP32=R=new Int32Array(e),o.HEAPU32=A=new Uint32Array(e),o.HEAPF32=we=new Float32Array(e),o.HEAPF64=Oe=new Float64Array(e)}var Ne=[],Be=[],Xe=[];function Ct(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Ze(o.preRun.shift());et(Ne)}function Tt(){et(Be)}function Pt(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)St(o.postRun.shift());et(Xe)}function Ze(e){Ne.unshift(e)}function wt(e){Be.unshift(e)}function St(e){Xe.unshift(e)}var se=0,ie=null;function ye(e){se++,o.monitorRunDependencies&&o.monitorRunDependencies(se)}function Et(e){if(se--,o.monitorRunDependencies&&o.monitorRunDependencies(se),se==0&&ie){var t=ie;ie=null,t()}}function pe(e){o.onAbort&&o.onAbort(e),e="Aborted("+e+")",B(e),X=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw v(t),t}var At="data:application/octet-stream;base64,",Qe=e=>e.startsWith(At),ce;ce="zxing_full.wasm",Qe(ce)||(ce=O(ce));function Ke(e){if(e==ce&&q)return new Uint8Array(q);if(P)return P(e);throw"both async and sync fetching of the wasm failed"}function fr(e){return!q&&(E||y)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()}).catch(()=>Ke(e)):Promise.resolve().then(()=>Ke(e))}function Ot(e,t,r){return fr(e).then(a=>WebAssembly.instantiate(a,t)).then(a=>a).then(r,a=>{B(`failed to asynchronously prepare wasm: ${a}`),pe(a)})}function hr(e,t,r,a){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Qe(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(s=>{var u=WebAssembly.instantiateStreaming(s,r);return u.then(a,function(l){return B(`wasm streaming compile failed: ${l}`),B("falling back to ArrayBuffer instantiation"),Ot(t,r,a)})}):Ot(t,r,a)}function pr(){var e={a:Jn};function t(a,s){return F=a.exports,Y=F.ga,ze(),Vt=F.ka,wt(F.ha),Et(),F}ye();function r(a){t(a.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(e,t)}catch(a){B(`Module.instantiateWasm callback failed with error: ${a}`),v(a)}return hr(q,ce,e,r).catch(v),{}}var et=e=>{for(;e.length>0;)e.shift()(o)};o.noExitRuntime;var ke=[],De=0,mr=e=>{var t=new tt(e);return t.get_caught()||(t.set_caught(!0),De--),t.set_rethrown(!1),ke.push(t),nr(t.excPtr),t.get_exception_ptr()},ne=0,vr=()=>{M(0,0);var e=ke.pop();rr(e.excPtr),ne=0};function tt(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){A[this.ptr+4>>2]=t},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(t){A[this.ptr+8>>2]=t},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,x[this.ptr+12>>0]=t},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,x[this.ptr+13>>0]=t},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(t,r){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(r)},this.set_adjusted_ptr=function(t){A[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=or(this.get_type());if(t)return A[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var yr=e=>{throw ne||(ne=e),ne},rt=e=>{var t=ne;if(!t)return Pe(0),0;var r=new tt(t);r.set_adjusted_ptr(t);var a=r.get_type();if(!a)return Pe(0),t;for(var s in e){var u=e[s];if(u===0||u===a)break;var l=r.ptr+16;if(ar(u,a,l))return Pe(u),t}return Pe(a),t},gr=()=>rt([]),wr=e=>rt([e]),br=(e,t)=>rt([e,t]),$r=()=>{var e=ke.pop();e||pe("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(ke.push(e),e.set_rethrown(!0),e.set_caught(!1),De++),ne=t,ne},_r=(e,t,r)=>{var a=new tt(e);throw a.init(t,r),ne=e,De++,ne},Cr=()=>De,je={},kt=e=>{for(;e.length;){var t=e.pop(),r=e.pop();r(t)}};function nt(e){return this.fromWireType(R[e>>2])}var me={},le={},xe={},Dt,Me=e=>{throw new Dt(e)},de=(e,t,r)=>{e.forEach(function(d){xe[d]=t});function a(d){var f=r(d);f.length!==e.length&&Me("Mismatched type converter count");for(var m=0;m{le.hasOwnProperty(d)?s[f]=le[d]:(u.push(d),me.hasOwnProperty(d)||(me[d]=[]),me[d].push(()=>{s[f]=le[d],++l,l===u.length&&a(s)}))}),u.length===0&&a(s)},Tr=e=>{var t=je[e];delete je[e];var r=t.rawConstructor,a=t.rawDestructor,s=t.fields,u=s.map(l=>l.getterReturnType).concat(s.map(l=>l.setterArgumentType));de([e],u,l=>{var d={};return s.forEach((f,m)=>{var w=f.fieldName,C=l[m],S=f.getter,j=f.getterContext,H=l[m+s.length],V=f.setter,L=f.setterContext;d[w]={read:g=>C.fromWireType(S(j,g)),write:(g,p)=>{var T=[];V(L,g,H.toWireType(T,p)),kt(T)}}}),[{name:t.name,fromWireType:f=>{var m={};for(var w in d)m[w]=d[w].read(f);return a(f),m},toWireType:(f,m)=>{for(var w in d)if(!(w in m))throw new TypeError(`Missing field: "${w}"`);var C=r();for(w in d)d[w].write(C,m[w]);return f!==null&&f.push(a,C),C},argPackAdvance:re,readValueFromPointer:nt,destructorFunction:a}]})},Pr=(e,t,r,a,s)=>{},Sr=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);jt=e},jt,G=e=>{for(var t="",r=e;k[r];)t+=jt[k[r++]];return t},ve,D=e=>{throw new ve(e)};function Er(e,t,r={}){var a=t.name;if(e||D(`type "${a}" must have a positive integer typeid pointer`),le.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;D(`Cannot register type '${a}' twice`)}if(le[e]=t,delete xe[e],me.hasOwnProperty(e)){var s=me[e];delete me[e],s.forEach(u=>u())}}function te(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Er(e,t,r)}var re=8,Ar=(e,t,r,a)=>{t=G(t),te(e,{name:t,fromWireType:function(s){return!!s},toWireType:function(s,u){return u?r:a},argPackAdvance:re,readValueFromPointer:function(s){return this.fromWireType(k[s])},destructorFunction:null})},Or=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),at=e=>{function t(r){return r.$$.ptrType.registeredClass.name}D(t(e)+" instance already deleted")},ot=!1,xt=e=>{},kr=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Mt=e=>{e.count.value-=1;var t=e.count.value===0;t&&kr(e)},Rt=(e,t,r)=>{if(t===r)return e;if(r.baseClass===void 0)return null;var a=Rt(e,t,r.baseClass);return a===null?null:r.downcast(a)},Ft={},Dr=()=>Object.keys(_e).length,jr=()=>{var e=[];for(var t in _e)_e.hasOwnProperty(t)&&e.push(_e[t]);return e},be=[],it=()=>{for(;be.length;){var e=be.pop();e.$$.deleteScheduled=!1,e.delete()}},$e,xr=e=>{$e=e,be.length&&$e&&$e(it)},Mr=()=>{o.getInheritedInstanceCount=Dr,o.getLiveInheritedInstances=jr,o.flushPendingDeletes=it,o.setDelayFunction=xr},_e={},Rr=(e,t)=>{for(t===void 0&&D("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Fr=(e,t)=>(t=Rr(e,t),_e[t]),Re=(e,t)=>{(!t.ptrType||!t.ptr)&&Me("makeClassHandle requires ptr and ptrType");var r=!!t.smartPtrType,a=!!t.smartPtr;return r!==a&&Me("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ce(Object.create(e,{$$:{value:t}}))};function Wr(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Fr(this.registeredClass,t);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var a=r.clone();return this.destructor(e),a}function s(){return this.isSmartPointer?Re(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Re(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var u=this.registeredClass.getActualType(t),l=Ft[u];if(!l)return s.call(this);var d;this.isConst?d=l.constPointerType:d=l.pointerType;var f=Rt(t,this.registeredClass,d.registeredClass);return f===null?s.call(this):this.isSmartPointer?Re(d.registeredClass.instancePrototype,{ptrType:d,ptr:f,smartPtrType:this,smartPtr:e}):Re(d.registeredClass.instancePrototype,{ptrType:d,ptr:f})}var Ce=e=>typeof FinalizationRegistry>"u"?(Ce=t=>t,e):(ot=new FinalizationRegistry(t=>{Mt(t.$$)}),Ce=t=>{var r=t.$$,a=!!r.smartPtr;if(a){var s={$$:r};ot.register(t,s,t)}return t},xt=t=>ot.unregister(t),Ce(e)),Ir=()=>{Object.assign(Fe.prototype,{isAliasOf(e){if(!(this instanceof Fe)||!(e instanceof Fe))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var a=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;a.baseClass;)s=a.upcast(s),a=a.baseClass;return t===a&&r===s},clone(){if(this.$$.ptr||at(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Ce(Object.create(Object.getPrototypeOf(this),{$$:{value:Or(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),xt(this),Mt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||at(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&D("Object already scheduled for deletion"),be.push(this),be.length===1&&$e&&$e(it),this.$$.deleteScheduled=!0,this}})};function Fe(){}var Ur=48,Hr=57,Wt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=Ur&&t<=Hr?`_${e}`:e};function st(e,t){return e=Wt(e),{[e]:function(){return t.apply(this,arguments)}}[e]}var It=(e,t,r)=>{if(e[t].overloadTable===void 0){var a=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||D(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[a.argCount]=a}},ut=(e,t,r)=>{o.hasOwnProperty(e)?((r===void 0||o[e].overloadTable!==void 0&&o[e].overloadTable[r]!==void 0)&&D(`Cannot register public name '${e}' twice`),It(o,e,e),o.hasOwnProperty(r)&&D(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),o[e].overloadTable[r]=t):(o[e]=t,r!==void 0&&(o[e].numArguments=r))};function Vr(e,t,r,a,s,u,l,d){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=a,this.baseClass=s,this.getActualType=u,this.upcast=l,this.downcast=d,this.pureVirtualFunctions=[]}var ct=(e,t,r)=>{for(;t!==r;)t.upcast||D(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Lr(e,t){if(t===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;t.$$||D(`Cannot pass "${ht(t)}" as a ${this.name}`),t.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass,a=ct(t.$$.ptr,r,this.registeredClass);return a}function zr(e,t){var r;if(t===null)return this.isReference&&D(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,r),r):0;t.$$||D(`Cannot pass "${ht(t)}" as a ${this.name}`),t.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&D(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var a=t.$$.ptrType.registeredClass;if(r=ct(t.$$.ptr,a,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&D("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:D(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var s=t.clone();r=this.rawShare(r,ue.toHandle(()=>s.delete())),e!==null&&e.push(this.rawDestructor,r)}break;default:D("Unsupporting sharing policy")}return r}function Nr(e,t){if(t===null)return this.isReference&&D(`null is not a valid ${this.name}`),0;t.$$||D(`Cannot pass "${ht(t)}" as a ${this.name}`),t.$$.ptr||D(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&D(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass,a=ct(t.$$.ptr,r,this.registeredClass);return a}function Ut(e){return this.fromWireType(A[e>>2])}var Br=()=>{Object.assign(We.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:re,readValueFromPointer:Ut,deleteObject(e){e!==null&&e.delete()},fromWireType:Wr})};function We(e,t,r,a,s,u,l,d,f,m,w){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=a,this.isSmartPointer=s,this.pointeeType=u,this.sharingPolicy=l,this.rawGetPointee=d,this.rawConstructor=f,this.rawShare=m,this.rawDestructor=w,!s&&t.baseClass===void 0?a?(this.toWireType=Lr,this.destructorFunction=null):(this.toWireType=Nr,this.destructorFunction=null):this.toWireType=zr}var Ht=(e,t,r)=>{o.hasOwnProperty(e)||Me("Replacing nonexistant public symbol"),o[e].overloadTable!==void 0&&r!==void 0?o[e].overloadTable[r]=t:(o[e]=t,o[e].argCount=r)},Yr=(e,t,r)=>{var a=o["dynCall_"+e];return r&&r.length?a.apply(null,[t].concat(r)):a.call(null,t)},Ie=[],Vt,W=e=>{var t=Ie[e];return t||(e>=Ie.length&&(Ie.length=e+1),Ie[e]=t=Vt.get(e)),t},Gr=(e,t,r)=>{if(e.includes("j"))return Yr(e,t,r);var a=W(t).apply(null,r);return a},qr=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Gr(e,t,r)}},ee=(e,t)=>{e=G(e);function r(){return e.includes("j")?qr(e,t):W(t)}var a=r();return typeof a!="function"&&D(`unknown function pointer with signature ${e}: ${t}`),a},Jr=(e,t)=>{var r=st(t,function(a){this.name=t,this.message=a;var s=new Error(a).stack;s!==void 0&&(this.stack=this.toString()+` `+s.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Lt,zt=e=>{var t=tr(e),r=G(t);return ae(t),r},Ue=(e,t)=>{var r=[],a={};function s(u){if(!a[u]&&!le[u]){if(xe[u]){xe[u].forEach(s);return}r.push(u),a[u]=!0}}throw t.forEach(s),new Lt(`${e}: `+r.map(zt).join([", "]))},Xr=(e,t,r,a,s,u,l,d,f,m,w,C,S)=>{w=G(w),u=ee(s,u),d&&(d=ee(l,d)),m&&(m=ee(f,m)),S=ee(C,S);var j=Wt(w);ut(j,function(){Ue(`Cannot construct ${w} due to unbound types`,[a])}),de([e,t,r],a?[a]:[],function(H){H=H[0];var V,L;a?(V=H.registeredClass,L=V.instancePrototype):L=Fe.prototype;var g=st(j,function(){if(Object.getPrototypeOf(this)!==p)throw new ve("Use 'new' to construct "+w);if(T.constructor_body===void 0)throw new ve(w+" has no accessible constructor");var ur=T.constructor_body[arguments.length];if(ur===void 0)throw new ve(`Tried to invoke ctor of ${w} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(T.constructor_body).toString()}) parameters instead!`);return ur.apply(this,arguments)}),p=Object.create(L,{constructor:{value:g}});g.prototype=p;var T=new Vr(w,g,p,S,V,u,d,m);T.baseClass&&(T.baseClass.__derivedClasses===void 0&&(T.baseClass.__derivedClasses=[]),T.baseClass.__derivedClasses.push(T));var N=new We(w,T,!0,!1,!1),Q=new We(w+"*",T,!1,!1,!1),ge=new We(w+" const*",T,!1,!0,!1);return Ft[e]={pointerType:Q,constPointerType:ge},Ht(j,g),[N,Q,ge]})},lt=(e,t)=>{for(var r=[],a=0;a>2]);return r};function dt(e,t,r,a,s,u){var l=t.length;l<2&&D("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var d=t[1]!==null&&r!==null,f=!1,m=1;m{var l=lt(t,r);s=ee(a,s),de([],[e],function(d){d=d[0];var f=`constructor ${d.name}`;if(d.registeredClass.constructor_body===void 0&&(d.registeredClass.constructor_body=[]),d.registeredClass.constructor_body[t-1]!==void 0)throw new ve(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${d.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return d.registeredClass.constructor_body[t-1]=()=>{Ue(`Cannot construct ${d.name} due to unbound types`,l)},de([],l,m=>(m.splice(1,0,null),d.registeredClass.constructor_body[t-1]=dt(f,m,null,s,u),[])),[]})},Nt=e=>{e=e.trim();const t=e.indexOf("(");return t!==-1?(oe(e[e.length-1]==")","Parentheses for argument names should match."),e.substr(0,t)):e},Qr=(e,t,r,a,s,u,l,d,f)=>{var m=lt(r,a);t=G(t),t=Nt(t),u=ee(s,u),de([],[e],function(w){w=w[0];var C=`${w.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),d&&w.registeredClass.pureVirtualFunctions.push(t);function S(){Ue(`Cannot call ${C} due to unbound types`,m)}var j=w.registeredClass.instancePrototype,H=j[t];return H===void 0||H.overloadTable===void 0&&H.className!==w.name&&H.argCount===r-2?(S.argCount=r-2,S.className=w.name,j[t]=S):(It(j,t,C),j[t].overloadTable[r-2]=S),de([],m,function(V){var L=dt(C,V,w,u,l);return j[t].overloadTable===void 0?(L.argCount=r-2,j[t]=L):j[t].overloadTable[r-2]=L,[]}),[]})};function Kr(){Object.assign(Bt.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Bt(){this.allocated=[void 0],this.freelist=[]}var K=new Bt,Yt=e=>{e>=K.reserved&&--K.get(e).refcount===0&&K.free(e)},en=()=>{for(var e=0,t=K.reserved;t{K.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),K.reserved=K.allocated.length,o.count_emval_handles=en},ue={toValue:e=>(e||D("Cannot use deleted val. handle = "+e),K.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return K.allocate({refcount:1,value:e})}}},rn=(e,t)=>{t=G(t),te(e,{name:t,fromWireType:r=>{var a=ue.toValue(r);return Yt(r),a},toWireType:(r,a)=>ue.toHandle(a),argPackAdvance:re,readValueFromPointer:nt,destructorFunction:null})},nn=(e,t,r)=>{switch(t){case 1:return r?function(a){return this.fromWireType(x[a>>0])}:function(a){return this.fromWireType(k[a>>0])};case 2:return r?function(a){return this.fromWireType(z[a>>1])}:function(a){return this.fromWireType(J[a>>1])};case 4:return r?function(a){return this.fromWireType(R[a>>2])}:function(a){return this.fromWireType(A[a>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},an=(e,t,r,a)=>{t=G(t);function s(){}s.values={},te(e,{name:t,constructor:s,fromWireType:function(u){return this.constructor.values[u]},toWireType:(u,l)=>l.value,argPackAdvance:re,readValueFromPointer:nn(t,r,a),destructorFunction:null}),ut(t,s)},ft=(e,t)=>{var r=le[e];return r===void 0&&D(t+" has unknown type "+zt(e)),r},on=(e,t,r)=>{var a=ft(e,"enum");t=G(t);var s=a.constructor,u=Object.create(a.constructor.prototype,{value:{value:r},constructor:{value:st(`${a.name}_${t}`,function(){})}});s.values[r]=u,s[t]=u},ht=e=>{if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},sn=(e,t)=>{switch(t){case 4:return function(r){return this.fromWireType(we[r>>2])};case 8:return function(r){return this.fromWireType(Oe[r>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},un=(e,t,r)=>{t=G(t),te(e,{name:t,fromWireType:a=>a,toWireType:(a,s)=>s,argPackAdvance:re,readValueFromPointer:sn(t,r),destructorFunction:null})},cn=(e,t,r,a,s,u,l)=>{var d=lt(t,r);e=G(e),e=Nt(e),s=ee(a,s),ut(e,function(){Ue(`Cannot call ${e} due to unbound types`,d)},t-1),de([],d,function(f){var m=[f[0],null].concat(f.slice(1));return Ht(e,dt(e,m,null,s,u),t-1),[]})},ln=(e,t,r)=>{switch(t){case 1:return r?a=>x[a>>0]:a=>k[a>>0];case 2:return r?a=>z[a>>1]:a=>J[a>>1];case 4:return r?a=>R[a>>2]:a=>A[a>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},dn=(e,t,r,a,s)=>{t=G(t);var u=w=>w;if(a===0){var l=32-8*r;u=w=>w<>>l}var d=t.includes("unsigned"),f=(w,C)=>{},m;d?m=function(w,C){return f(C,this.name),C>>>0}:m=function(w,C){return f(C,this.name),C},te(e,{name:t,fromWireType:u,toWireType:m,argPackAdvance:re,readValueFromPointer:ln(t,r,a!==0),destructorFunction:null})},fn=(e,t,r)=>{var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=a[t];function u(l){var d=A[l>>2],f=A[l+4>>2];return new s(x.buffer,f,d)}r=G(r),te(e,{name:r,fromWireType:u,argPackAdvance:re,readValueFromPointer:u},{ignoreDuplicateRegistrations:!0})},Gt=(e,t,r,a)=>{if(!(a>0))return 0;for(var s=r,u=r+a-1,l=0;l=55296&&d<=57343){var f=e.charCodeAt(++l);d=65536+((d&1023)<<10)|f&1023}if(d<=127){if(r>=u)break;t[r++]=d}else if(d<=2047){if(r+1>=u)break;t[r++]=192|d>>6,t[r++]=128|d&63}else if(d<=65535){if(r+2>=u)break;t[r++]=224|d>>12,t[r++]=128|d>>6&63,t[r++]=128|d&63}else{if(r+3>=u)break;t[r++]=240|d>>18,t[r++]=128|d>>12&63,t[r++]=128|d>>6&63,t[r++]=128|d&63}}return t[r]=0,r-s},hn=(e,t,r)=>Gt(e,k,t,r),qt=e=>{for(var t=0,r=0;r=55296&&a<=57343?(t+=4,++r):t+=3}return t},Jt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,pn=(e,t,r)=>{for(var a=t+r,s=t;e[s]&&!(s>=a);)++s;if(s-t>16&&e.buffer&&Jt)return Jt.decode(e.subarray(t,s));for(var u="";t>10,56320|m&1023)}}return u},pt=(e,t)=>e?pn(k,e,t):"",mn=(e,t)=>{t=G(t);var r=t==="std::string";te(e,{name:t,fromWireType(a){var s=A[a>>2],u=a+4,l;if(r)for(var d=u,f=0;f<=s;++f){var m=u+f;if(f==s||k[m]==0){var w=m-d,C=pt(d,w);l===void 0?l=C:(l+=String.fromCharCode(0),l+=C),d=m+1}}else{for(var S=new Array(s),f=0;f>2]=u,r&&l)hn(s,f,u+1);else if(l)for(var m=0;m255&&(ae(f),D("String has UTF-16 code units that do not fit in 8 bits")),k[f+m]=w}else for(var m=0;m{for(var r=e,a=r>>1,s=a+t/2;!(a>=s)&&J[a];)++a;if(r=a<<1,r-e>32&&Xt)return Xt.decode(k.subarray(e,r));for(var u="",l=0;!(l>=t/2);++l){var d=z[e+l*2>>1];if(d==0)break;u+=String.fromCharCode(d)}return u},yn=(e,t,r)=>{if(r===void 0&&(r=2147483647),r<2)return 0;r-=2;for(var a=t,s=r>1]=l,t+=2}return z[t>>1]=0,t-a},gn=e=>e.length*2,wn=(e,t)=>{for(var r=0,a="";!(r>=t/4);){var s=R[e+r*4>>2];if(s==0)break;if(++r,s>=65536){var u=s-65536;a+=String.fromCharCode(55296|u>>10,56320|u&1023)}else a+=String.fromCharCode(s)}return a},bn=(e,t,r)=>{if(r===void 0&&(r=2147483647),r<4)return 0;for(var a=t,s=a+r-4,u=0;u=55296&&l<=57343){var d=e.charCodeAt(++u);l=65536+((l&1023)<<10)|d&1023}if(R[t>>2]=l,t+=4,t+4>s)break}return R[t>>2]=0,t-a},$n=e=>{for(var t=0,r=0;r=55296&&a<=57343&&++r,t+=4}return t},_n=(e,t,r)=>{r=G(r);var a,s,u,l,d;t===2?(a=vn,s=yn,l=gn,u=()=>J,d=1):t===4&&(a=wn,s=bn,l=$n,u=()=>A,d=2),te(e,{name:r,fromWireType:f=>{for(var m=A[f>>2],w=u(),C,S=f+4,j=0;j<=m;++j){var H=f+4+j*t;if(j==m||w[H>>d]==0){var V=H-S,L=a(S,V);C===void 0?C=L:(C+=String.fromCharCode(0),C+=L),S=H+t}}return ae(f),C},toWireType:(f,m)=>{typeof m!="string"&&D(`Cannot pass non-string to C++ string type ${r}`);var w=l(m),C=vt(4+w+t);return A[C>>2]=w>>d,s(m,C+4,w+t),f!==null&&f.push(ae,C),C},argPackAdvance:re,readValueFromPointer:nt,destructorFunction(f){ae(f)}})},Cn=(e,t,r,a,s,u)=>{je[e]={name:G(t),rawConstructor:ee(r,a),rawDestructor:ee(s,u),fields:[]}},Tn=(e,t,r,a,s,u,l,d,f,m)=>{je[e].fields.push({fieldName:G(t),getterReturnType:r,getter:ee(a,s),getterContext:u,setterArgumentType:l,setter:ee(d,f),setterContext:m})},Pn=(e,t)=>{t=G(t),te(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,a)=>{}})},Sn={},En=e=>{var t=Sn[e];return t===void 0?G(e):t},Zt=()=>{if(typeof globalThis=="object")return globalThis;function e(t){t.$$$embind_global$$$=t;var r=typeof $$$embind_global$$$=="object"&&t.$$$embind_global$$$==t;return r||delete t.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},An=e=>e===0?ue.toHandle(Zt()):(e=En(e),ue.toHandle(Zt()[e])),On=e=>{e>4&&(K.get(e).refcount+=1)},kn=e=>{var t=new Array(e+1);return function(r,a,s){t[0]=r;for(var u=0;u>2],"parameter "+u);t[u+1]=l.readValueFromPointer(s),s+=l.argPackAdvance}var d=new(r.bind.apply(r,t));return ue.toHandle(d)}},Qt={},Dn=(e,t,r,a)=>{e=ue.toValue(e);var s=Qt[t];return s||(s=kn(t),Qt[t]=s),s(e,r,a)},jn=(e,t)=>{e=ft(e,"_emval_take_value");var r=e.readValueFromPointer(t);return ue.toHandle(r)},xn=()=>{pe("")},Mn=(e,t,r)=>k.copyWithin(e,t,t+r),Rn=()=>2147483648,Fn=e=>{var t=Y.buffer,r=(e-t.byteLength+65535)/65536;try{return Y.grow(r),ze(),1}catch{}},Wn=e=>{var t=k.length;e>>>=0;var r=Rn();if(e>r)return!1;for(var a=(f,m)=>f+(m-f%m)%m,s=1;s<=4;s*=2){var u=t*(1+.2/s);u=Math.min(u,e+100663296);var l=Math.min(r,a(Math.max(e,u),65536)),d=Fn(l);if(d)return!0}return!1},mt={},In=()=>$||"./this.program",Te=()=>{if(!Te.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:In()};for(var r in mt)mt[r]===void 0?delete t[r]:t[r]=mt[r];var a=[];for(var r in t)a.push(`${r}=${t[r]}`);Te.strings=a}return Te.strings},Un=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);x[t>>0]=0},Hn=(e,t)=>{var r=0;return Te().forEach((a,s)=>{var u=t+r;A[e+s*4>>2]=u,Un(a,u),r+=a.length+1}),0},Vn=(e,t)=>{var r=Te();A[e>>2]=r.length;var a=0;return r.forEach(s=>a+=s.length+1),A[t>>2]=a,0},Ln=e=>e,He=e=>e%4===0&&(e%100!==0||e%400===0),zn=(e,t)=>{for(var r=0,a=0;a<=t;r+=e[a++]);return r},Kt=[31,29,31,30,31,30,31,31,30,31,30,31],er=[31,28,31,30,31,30,31,31,30,31,30,31],Nn=(e,t)=>{for(var r=new Date(e.getTime());t>0;){var a=He(r.getFullYear()),s=r.getMonth(),u=(a?Kt:er)[s];if(t>u-r.getDate())t-=u-r.getDate()+1,r.setDate(1),s<11?r.setMonth(s+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+t),r}return r};function Bn(e,t,r){var a=r>0?r:qt(e)+1,s=new Array(a),u=Gt(e,s,0,s.length);return t&&(s.length=u),s}var Yn=(e,t)=>{x.set(e,t)},Gn=(e,t,r,a)=>{var s=A[a+40>>2],u={tm_sec:R[a>>2],tm_min:R[a+4>>2],tm_hour:R[a+8>>2],tm_mday:R[a+12>>2],tm_mon:R[a+16>>2],tm_year:R[a+20>>2],tm_wday:R[a+24>>2],tm_yday:R[a+28>>2],tm_isdst:R[a+32>>2],tm_gmtoff:R[a+36>>2],tm_zone:s?pt(s):""},l=pt(r),d={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var f in d)l=l.replace(new RegExp(f,"g"),d[f]);var m=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],w=["January","February","March","April","May","June","July","August","September","October","November","December"];function C(p,T,N){for(var Q=typeof p=="number"?p.toString():p||"";Q.length0?1:0}var Q;return(Q=N(p.getFullYear()-T.getFullYear()))===0&&(Q=N(p.getMonth()-T.getMonth()))===0&&(Q=N(p.getDate()-T.getDate())),Q}function H(p){switch(p.getDay()){case 0:return new Date(p.getFullYear()-1,11,29);case 1:return p;case 2:return new Date(p.getFullYear(),0,3);case 3:return new Date(p.getFullYear(),0,2);case 4:return new Date(p.getFullYear(),0,1);case 5:return new Date(p.getFullYear()-1,11,31);case 6:return new Date(p.getFullYear()-1,11,30)}}function V(p){var T=Nn(new Date(p.tm_year+1900,0,1),p.tm_yday),N=new Date(T.getFullYear(),0,4),Q=new Date(T.getFullYear()+1,0,4),ge=H(N),ur=H(Q);return j(ge,T)<=0?j(ur,T)<=0?T.getFullYear()+1:T.getFullYear():T.getFullYear()-1}var L={"%a":p=>m[p.tm_wday].substring(0,3),"%A":p=>m[p.tm_wday],"%b":p=>w[p.tm_mon].substring(0,3),"%B":p=>w[p.tm_mon],"%C":p=>{var T=p.tm_year+1900;return S(T/100|0,2)},"%d":p=>S(p.tm_mday,2),"%e":p=>C(p.tm_mday,2," "),"%g":p=>V(p).toString().substring(2),"%G":p=>V(p),"%H":p=>S(p.tm_hour,2),"%I":p=>{var T=p.tm_hour;return T==0?T=12:T>12&&(T-=12),S(T,2)},"%j":p=>S(p.tm_mday+zn(He(p.tm_year+1900)?Kt:er,p.tm_mon-1),3),"%m":p=>S(p.tm_mon+1,2),"%M":p=>S(p.tm_min,2),"%n":()=>` diff --git a/public/build/assets/CopyButton-f30d9b07.js b/public/build/assets/CopyButton-643e0686.js similarity index 90% rename from public/build/assets/CopyButton-f30d9b07.js rename to public/build/assets/CopyButton-643e0686.js index 9dbbd659..f2d4c12d 100644 --- a/public/build/assets/CopyButton-f30d9b07.js +++ b/public/build/assets/CopyButton-643e0686.js @@ -1 +1 @@ -import{b as r,S as p,e as l,f as m,g as _,m as u,D as b,I as d}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y=["aria-label","title"],C={__name:"CopyButton",props:{token:String},setup(e){const s=e,n=r(),{copy:c}=p({legacy:!0});function a(){c(s.token),n.success({text:d("commons.copied_to_clipboard")})}return(o,t)=>{const i=l("FontAwesomeIcon");return m(),_("button",{"aria-label":o.$t("commons.copy_to_clipboard"),title:o.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:t[0]||(t[0]=b(f=>a(),["stop"]))},[u(i,{icon:["fas","copy"]})],8,y)}}};export{C as _}; +import{b as r,S as p,e as l,f as m,g as _,m as u,D as b,I as d}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y=["aria-label","title"],C={__name:"CopyButton",props:{token:String},setup(e){const s=e,n=r(),{copy:c}=p({legacy:!0});function a(){c(s.token),n.success({text:d("commons.copied_to_clipboard")})}return(o,t)=>{const i=l("FontAwesomeIcon");return m(),_("button",{"aria-label":o.$t("commons.copy_to_clipboard"),title:o.$t("commons.copy_to_clipboard"),class:"button is-like-text is-pulled-right is-small is-text",onClick:t[0]||(t[0]=b(f=>a(),["stop"]))},[u(i,{icon:["fas","copy"]})],8,y)}}};export{C as _}; diff --git a/public/build/assets/Create-1758d7a4.js b/public/build/assets/Create-88a5e9ed.js similarity index 93% rename from public/build/assets/Create-1758d7a4.js rename to public/build/assets/Create-88a5e9ed.js index 4efdb878..b0c1c678 100644 --- a/public/build/assets/Create-1758d7a4.js +++ b/public/build/assets/Create-88a5e9ed.js @@ -1 +1 @@ -import{b as _,u as F,d as V,e as n,f as b,g,m as r,p as y,h as x,i as o,D as B,I as h}from"./app-94c6def1.js";import{F as C}from"./Form-88ba26a4.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E=["onSubmit"],k={__name:"Create",setup(N){const m=_(),l=F(),e=V(new C({name:"",email:"",password:"",password_confirmation:"",is_admin:!1}));async function i(d){e.password_confirmation=e.password,e.post("/api/v1/users").then(s=>{const t=s.data;m.success({text:h("admin.user_created")}),l.push({name:"admin.manageUser",params:{userId:t.info.id}})})}return(d,s)=>{const t=n("FormField"),u=n("FormPasswordField"),p=n("FormCheckbox"),f=n("FormButtons"),c=n("FormWrapper"),w=n("VueFooter");return b(),g("div",null,[r(c,{title:"admin.new_user"},{default:y(()=>[x("form",{onSubmit:B(i,["prevent"]),onKeydown:s[4]||(s[4]=a=>o(e).onKeydown(a))},[r(t,{modelValue:o(e).name,"onUpdate:modelValue":s[0]||(s[0]=a=>o(e).name=a),fieldName:"name",fieldError:o(e).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),r(t,{modelValue:o(e).email,"onUpdate:modelValue":s[1]||(s[1]=a=>o(e).email=a),fieldName:"email",fieldError:o(e).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),r(u,{modelValue:o(e).password,"onUpdate:modelValue":s[2]||(s[2]=a=>o(e).password=a),fieldName:"password",fieldError:o(e).errors.get("password"),showRules:!0,label:"auth.forms.password",autocomplete:"new-password"},null,8,["modelValue","fieldError"]),r(p,{modelValue:o(e).is_admin,"onUpdate:modelValue":s[3]||(s[3]=a=>o(e).is_admin=a),fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"]),r(f,{isBusy:o(e).isBusy,isDisabled:o(e).isDisabled,showCancelButton:!0,cancelLandingView:"admin.users",caption:"commons.create",submitId:"btnCreateUser"},null,8,["isBusy","isDisabled","cancelLandingView"])],40,E)]),_:1}),r(w)])}}};export{k as default}; +import{b as _,u as F,d as V,e as n,f as b,g,m as r,p as y,h as x,i as o,D as B,I as h}from"./app-60af1d1a.js";import{F as C}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E=["onSubmit"],k={__name:"Create",setup(N){const m=_(),l=F(),e=V(new C({name:"",email:"",password:"",password_confirmation:"",is_admin:!1}));async function i(d){e.password_confirmation=e.password,e.post("/api/v1/users").then(s=>{const t=s.data;m.success({text:h("admin.user_created")}),l.push({name:"admin.manageUser",params:{userId:t.info.id}})})}return(d,s)=>{const t=n("FormField"),u=n("FormPasswordField"),p=n("FormCheckbox"),f=n("FormButtons"),c=n("FormWrapper"),w=n("VueFooter");return b(),g("div",null,[r(c,{title:"admin.new_user"},{default:y(()=>[x("form",{onSubmit:B(i,["prevent"]),onKeydown:s[4]||(s[4]=a=>o(e).onKeydown(a))},[r(t,{modelValue:o(e).name,"onUpdate:modelValue":s[0]||(s[0]=a=>o(e).name=a),fieldName:"name",fieldError:o(e).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),r(t,{modelValue:o(e).email,"onUpdate:modelValue":s[1]||(s[1]=a=>o(e).email=a),fieldName:"email",fieldError:o(e).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),r(u,{modelValue:o(e).password,"onUpdate:modelValue":s[2]||(s[2]=a=>o(e).password=a),fieldName:"password",fieldError:o(e).errors.get("password"),showRules:!0,label:"auth.forms.password",autocomplete:"new-password"},null,8,["modelValue","fieldError"]),r(p,{modelValue:o(e).is_admin,"onUpdate:modelValue":s[3]||(s[3]=a=>o(e).is_admin=a),fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"]),r(f,{isBusy:o(e).isBusy,isDisabled:o(e).isDisabled,showCancelButton:!0,cancelLandingView:"admin.users",caption:"commons.create",submitId:"btnCreateUser"},null,8,["isBusy","isDisabled","cancelLandingView"])],40,E)]),_:1}),r(w)])}}};export{k as default}; diff --git a/public/build/assets/CreateUpdate-818ecca1.js b/public/build/assets/CreateUpdate-016104d4.js similarity index 98% rename from public/build/assets/CreateUpdate-818ecca1.js rename to public/build/assets/CreateUpdate-016104d4.js index 15eef7a7..6579aee9 100644 --- a/public/build/assets/CreateUpdate-818ecca1.js +++ b/public/build/assets/CreateUpdate-016104d4.js @@ -1 +1 @@ -import{Z as xe,r as m,e as _,f as a,g as u,h as s,i as e,n as k,V as te,k as b,p as h,D as B,m as r,U as Q,l as c,F as oe,Q as Le,u as Me,_ as Se,a as Be,c as qe,b as Ae,d as X,v as Ne,o as Oe,K as M,P as ve,x as Y,G as he,E as _e,t as y,j as ge,w as ye,I as S}from"./app-94c6def1.js";import{F as ee}from"./Form-88ba26a4.js";import{_ as be}from"./OtpDisplay-4c8a5daa.js";import{_ as Ue}from"./QrContentDisplay-1899c813.js";import{u as De}from"./bus-d94d2521.js";import"./Spinner-f03b508f.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const He=["for","innerHTML"],Pe=["disabled","id","type","value","placeholder","maxlength"],Ke={key:0,class:"control"},Qe=["title"],Re={class:"icon"},je={key:1,class:"control"},ze=["title"],Ge={class:"icon has-text-danger"},We=["innerHTML"],we=Object.assign({inheritAttrs:!1},{__name:"FormLockField",props:{modelValue:String,modelModifiers:{default:()=>({})},isEditMode:{type:Boolean,default:!1},label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!0},maxLength:{type:Number,default:null}},emits:["input:modelValue"],setup(p,{emit:T}){const V=p,{inputId:E}=xe(V.inputType,V.fieldName),x=m(V.isDisabled||V.isEditMode),$=m(!1),L=m(0);function q(f){let d=f.target.value;V.modelModifiers.trimAll&&(d=d.replace(/\s+/g,"")),T("update:modelValue",d)}function g(f){let d=f.target.value;$.value=d.includes(" "),T("update:modelValue",d)}function t(f){$.value=f.target.value.includes(" "),L.value+=1}return(f,d)=>{const O=_("FontAwesomeIcon"),U=_("FieldError");return a(),u(oe,null,[s("label",{for:e(E),class:"label",innerHTML:f.$t(p.label)},null,8,He),s("div",{class:k(["field has-addons mb-0",{"pt-3":p.hasOffset}])},[s("div",{class:k(["control",{"is-expanded":p.isExpanded}])},[(a(),u("input",te({key:e(L),disabled:e(x),id:e(E),type:p.inputType,class:"input",value:p.modelValue,placeholder:p.placeholder},f.$attrs,{onInput:g,onChange:q,onBlur:t,maxlength:p.maxLength}),null,16,Pe))],2),p.isEditMode?(a(),b(e(Q),{key:0},{default:h(({mode:D})=>[e(x)?(a(),u("div",Ke,[s("button",{type:"button",class:k(["button field-lock",{"is-dark":D=="dark"}]),onClick:d[0]||(d[0]=B(F=>x.value=!1,["stop"])),title:f.$t("twofaccounts.forms.unlock.title")},[s("span",Re,[r(O,{icon:["fas","lock"]})])],10,Qe)])):(a(),u("div",je,[s("button",{type:"button",class:k(["button field-unlock",{"is-dark":D=="dark"}]),onClick:d[1]||(d[1]=B(F=>x.value=!0,["stop"])),title:f.$t("twofaccounts.forms.lock.title")},[s("span",Ge,[r(O,{icon:["fas","lock-open"]})])],10,ze)]))]),_:1})):c("",!0)],2),e($)?(a(),b(U,{key:0,error:f.$t("twofaccounts.forms.spaces_are_ignored"),field:"spaces",alertType:"is-warning"},null,8,["error"])):c("",!0),p.fieldError!=null?(a(),b(U,{key:1,error:p.fieldError,field:p.fieldName},null,8,["error","field"])):c("",!0),p.help?(a(),u("p",{key:2,class:"help",innerHTML:f.$t(p.help)},null,8,We)):c("",!0)],64)}}}),Ze=["onSubmit"],Je={class:"container preview has-text-centered"},Xe={class:"columns is-mobile"},Ye={class:"column"},et={key:1,class:"add-icon-button"},tt=["onClick"],ot={class:"columns is-mobile",role:"alert"},lt={key:0,class:"column"},st={class:"columns is-mobile"},nt={class:"column quickform-footer"},at={class:"field is-grouped is-grouped-centered"},rt={class:"control"},it=["onSubmit"],ct={key:0,class:"field is-grouped"},ut={class:"control"},dt=["title"],ft={class:"file-cta"},pt={class:"file-icon"},mt={class:"file-label"},vt={class:"label"},ht={class:"field is-grouped"},_t={key:0,class:"control"},gt={class:"icon is-small"},yt={class:"control is-flex"},bt={class:"file-cta"},wt={class:"file-icon"},kt={class:"file-label"},Vt=["src","alt"],Et=["onClick","aria-label"],$t={class:"field"},Ft=["innerHTML"],It={key:2},Ct={key:0},Tt={class:"title is-4 mt-5 mb-2"},xt={class:"help mb-4"},Lt={class:"control"},Mt={key:0,class:"control"},Ut={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(p){const T=p,V=Le("2fauth"),E=Me(),x=Se(),$=Be(),L=qe(),q=De(),g=Ae(),t=X(new ee({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),f=X(new ee({qrcode:null})),d=X(new ee({icon:null})),O=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],U=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],D=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],F=m(),i=m(""),A=m(!1),N=m(!1),H=m(!1),I=m(!1),R=m(!1),j=m(null),P=m(null),z=m(null),le=m(null),se=m(null),ne=m(null),v=Ne(()=>T.twofaccountId!=null);Oe(()=>{x.name=="editAccount"?M.get(T.twofaccountId).then(o=>{t.fill(o.data),t.setOriginal(),i.value=t.icon,H.value=!0}):q.decodedUri?(F.value=q.decodedUri,q.decodedUri=null,M.preview(F.value).then(o=>{t.fill(o.data),i.value=o.data.icon?o.data.icon:"",A.value=!0,ve().then(()=>{P.value.show()})}).catch(o=>{o.response.data.errors.uri&&(N.value=!0,H.value=!0)})):H.value=!0}),Y(i,o=>{A.value&&ve().then(()=>{P.value.icon=o})}),Y(I,o=>{var l,w;o==!1&&((l=z.value)==null||l.clearOTP(),(w=P.value)==null||w.clearOTP())}),Y(()=>t.otp_type,(o,l)=>{o==="steamtotp"?(t.service="Steam",de()):l==="steamtotp"&&(t.service="",C())});function ke(){v.value?Ve():ae()}async function ae(){t.icon=i.value;const{data:o}=await t.post("/api/v1/twofaccounts");t.errors.any()===!1&&(L.items.push(o),g.success({text:S("twofaccounts.account_created")}),E.push({name:"accounts"}))}async function Ve(){if(i.value!==t.icon){let l="";l=t.icon,t.icon=i.value,i.value=l,C()}const{data:o}=await t.put("/api/v1/twofaccounts/"+T.twofaccountId);if(t.errors.any()===!1){const l=L.items.findIndex(w=>w.id===o.id);L.items.splice(l,1,o),g.success({text:S("twofaccounts.account_updated")}),E.push({name:"accounts"})}}function Ee(){t.clear(),I.value=!0,z.value.show()}function re(){t.hasChanged()||i.value!=t.icon?confirm(S("twofaccounts.confirm.cancel"))===!0&&((!v.value||i.value!=t.icon)&&C(),E.push({name:"accounts"})):E.push({name:"accounts"})}function ie(){C(),d.icon=j.value.files[0],d.upload("/api/v1/icons",{returnError:!0}).then(o=>{i.value=o.data.filename,A.value&&(t.icon=i.value)}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function C(){v.value?i.value&&(i.value!==t.icon&&M.deleteIcon(i.value),i.value=""):i.value&&(M.deleteIcon(i.value),i.value="",A.value&&(t.icon=""))}function ce(o){t.counter=o.nextHotpCounter}function ue(o){t.errors.set(t.extractErrors(o))}function $e(){f.qrcode=se.value.files[0],f.upload("/api/v1/qrcode/decode",{returnError:!0}).then(o=>{F.value=o.data.data,M.preview(F.value,{returnError:!0}).then(l=>{t.fill(l.data),i.value=l.data.icon?l.data.icon:null}).catch(l=>{l.response.status===422?l.response.data.errors.uri?N.value=!0:g.alert({text:S(l.response.data.message)}):g.error(l)})}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function de(){$.preferences.getOfficialIcons&&(R.value=!0,M.getLogo(t.service,{returnError:!0}).then(o=>{o.status===201?(C(),i.value=o.data.filename):g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).catch(()=>{g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).finally(()=>{R.value=!1}))}function fe(o){return o.replace(/(<([^> ]+)>)/ig,"")}return(o,l)=>{const w=_("FieldError"),K=_("FontAwesomeIcon"),G=_("VueButton"),pe=_("ButtonBackCloseCancel"),W=_("FormField"),Z=_("FormToggle"),Fe=_("VueFooter"),me=_("modal"),Ie=_("FormWrapper");return a(),u("div",null,[!e(v)&&e(A)?(a(),u("form",{key:0,onSubmit:B(ae,["prevent"]),onKeydown:l[1]||(l[1]=n=>e(t).onKeydown(n))},[s("div",Je,[s("div",Xe,[s("div",Ye,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",et,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),r(K,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:B(C,["prevent"])},null,8,tt)):c("",!0),r(be,te({ref_key:"OtpDisplayForQuickForm",ref:P},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[0]||(l[0]=n=>I.value=!1)}),null,16)])]),s("div",ot,[e(t).errors.any()?(a(),u("div",lt,[(a(!0),u(oe,null,he(e(t).errors.errors,(n,J)=>(a(),u("p",{key:J,class:"help is-danger"},[s("ul",null,[(a(!0),u(oe,null,he(n,(Ce,Te)=>(a(),u("li",{key:Te},y(Ce),1))),128))])]))),128))])):c("",!0)]),s("div",st,[s("div",nt,[s("div",at,[s("div",rt,[r(G,{isLoading:e(t).isBusy},{default:h(()=>[ge(y(o.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(pe,{action:"cancel",isText:!0,useLinkTag:!1,onCanceled:re})])])])])],40,Ze)):c("",!0),e(H)?(a(),b(Ie,{key:1,title:o.$t(e(v)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:h(()=>[s("form",{onSubmit:B(ke,["prevent"]),onKeydown:l[12]||(l[12]=n=>e(t).onKeydown(n))},[e(v)?c("",!0):(a(),u("div",ct,[s("div",ut,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[2]||(l[2]=ye(J=>e(le).click(),["enter"]))},[s("label",{class:"file-label",title:o.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:le},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:$e,ref_key:"qrcodeInput",ref:se},null,544),s("span",ft,[s("span",pt,[r(K,{icon:["fas","qrcode"],size:"lg"})]),s("span",mt,y(o.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,dt)],34)]),_:1})])])),e(f).errors.hasAny("qrcode")?(a(),b(w,{key:1,error:e(f).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(W,{modelValue:e(t).service,"onUpdate:modelValue":l[3]||(l[3]=n=>e(t).service=n),fieldName:"service",fieldError:e(t).errors.get("email"),isDisabled:e(t).otp_type==="steamtotp",label:"twofaccounts.service",placeholder:o.$t("twofaccounts.forms.service.placeholder"),autofocus:""},null,8,["modelValue","fieldError","isDisabled","placeholder"]),r(W,{modelValue:e(t).account,"onUpdate:modelValue":l[4]||(l[4]=n=>e(t).account=n),fieldName:"account",fieldError:e(t).errors.get("account"),label:"twofaccounts.account",placeholder:o.$t("twofaccounts.forms.account.placeholder")},null,8,["modelValue","fieldError","placeholder"]),s("label",vt,y(o.$t("twofaccounts.icon")),1),s("div",ht,[e($).preferences.getOfficialIcons?(a(),u("div",_t,[r(e(Q),null,{default:h(({mode:n})=>[r(G,{onClick:de,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(R),isDisabled:!e(t).service},{default:h(()=>[s("span",gt,[r(K,{icon:["fas","globe"]})]),s("span",null,y(o.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",yt,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[5]||(l[5]=ye(J=>e(ne).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:ne},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),s("span",bt,[s("span",wt,[r(K,{icon:["fas","upload"]})]),s("span",kt,y(o.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:k(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(V).config.subdirectory+"/storage/icons/"+e(i),alt:o.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,Vt),s("button",{class:"clear-selection delete is-small",onClick:B(C,["prevent"]),"aria-label":o.$t("twofaccounts.remove_icon")},null,8,Et)],2)):c("",!0)]),_:1})])]),s("div",$t,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e($).preferences.getOfficialIcons?(a(),u("p",{key:1,class:"help",innerHTML:o.$t("twofaccounts.forms.i_m_lucky_legend")},null,8,Ft)):c("",!0)]),r(Z,{modelValue:e(t).otp_type,"onUpdate:modelValue":l[6]||(l[6]=n=>e(t).otp_type=n),isDisabled:e(v),choices:O,fieldName:"otp_type",fieldError:e(t).errors.get("otp_type"),label:"twofaccounts.forms.otp_type.label",help:"twofaccounts.forms.otp_type.help",hasOffset:!0},null,8,["modelValue","isDisabled","fieldError"]),e(t).otp_type!=""?(a(),u("div",It,[r(we,{isEditMode:e(v),modelValue:e(t).secret,"onUpdate:modelValue":l[7]||(l[7]=n=>e(t).secret=n),modelModifiers:{trimAll:!0},fieldName:"secret",fieldError:e(t).errors.get("secret"),label:"twofaccounts.forms.secret.label",help:"twofaccounts.forms.secret.help"},null,8,["isEditMode","modelValue","fieldError"]),e(t).otp_type!=="steamtotp"?(a(),u("div",Ct,[s("h2",Tt,y(o.$t("commons.options")),1),s("p",xt,y(o.$t("twofaccounts.forms.options_help")),1),r(Z,{modelValue:e(t).digits,"onUpdate:modelValue":l[8]||(l[8]=n=>e(t).digits=n),choices:U,fieldName:"digits",fieldError:e(t).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(Z,{modelValue:e(t).algorithm,"onUpdate:modelValue":l[9]||(l[9]=n=>e(t).algorithm=n),choices:D,fieldName:"algorithm",fieldError:e(t).errors.get("algorithm"),label:"twofaccounts.forms.algorithm.label",help:"twofaccounts.forms.algorithm.help"},null,8,["modelValue","fieldError"]),e(t).otp_type==="totp"?(a(),b(W,{key:0,pattern:"[0-9]{1,4}",class:k("is-third-width-field"),modelValue:e(t).period,"onUpdate:modelValue":l[10]||(l[10]=n=>e(t).period=n),fieldName:"period",fieldError:e(t).errors.get("period"),label:"twofaccounts.forms.period.label",help:"twofaccounts.forms.period.help",placeholder:o.$t("twofaccounts.forms.period.placeholder")},null,8,["modelValue","fieldError","placeholder"])):c("",!0),e(t).otp_type==="hotp"?(a(),b(we,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(v),isExpanded:!1,modelValue:e(t).counter,"onUpdate:modelValue":l[11]||(l[11]=n=>e(t).counter=n),fieldName:"counter",fieldError:e(t).errors.get("counter"),label:"twofaccounts.forms.counter.label",placeholder:o.$t("twofaccounts.forms.counter.placeholder"),help:e(v)?"twofaccounts.forms.counter.help_lock":"twofaccounts.forms.counter.help"},null,8,["isEditMode","modelValue","fieldError","placeholder","help"])):c("",!0)])):c("",!0)])):c("",!0),r(Fe,{showButtons:!0},{default:h(()=>[s("p",Lt,[r(G,{id:e(v)?"btnUpdate":"btnCreate",isLoading:e(t).isBusy,class:"is-rounded"},{default:h(()=>[ge(y(e(v)?o.$t("commons.save"):o.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(t).otp_type&&e(t).secret?(a(),u("p",Mt,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:Ee},y(o.$t("twofaccounts.forms.test")),1)])):c("",!0),r(pe,{action:"cancel",useLinkTag:!1,onCanceled:re})]),_:1})],40,it),r(me,{modelValue:e(I),"onUpdate:modelValue":l[14]||(l[14]=n=>_e(I)?I.value=n:null)},{default:h(()=>[r(be,te({ref_key:"OtpDisplayForAdvancedForm",ref:z},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[13]||(l[13]=n=>I.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(me,{modelValue:e(N),"onUpdate:modelValue":l[15]||(l[15]=n=>_e(N)?N.value=n:null)},{default:h(()=>[r(Ue,{qrContent:e(F)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Ut as default}; +import{Z as xe,r as m,e as _,f as a,g as u,h as s,i as e,n as k,V as te,k as b,p as h,D as B,m as r,U as Q,l as c,F as oe,Q as Le,u as Me,_ as Se,a as Be,c as qe,b as Ae,d as X,v as Ne,o as Oe,K as M,P as ve,x as Y,G as he,E as _e,t as y,j as ge,w as ye,I as S}from"./app-60af1d1a.js";import{F as ee}from"./Form-0a788c90.js";import{_ as be}from"./OtpDisplay-f582bb88.js";import{_ as Ue}from"./QrContentDisplay-ea3c63ab.js";import{u as De}from"./bus-ab2b6d74.js";import"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const He=["for","innerHTML"],Pe=["disabled","id","type","value","placeholder","maxlength"],Ke={key:0,class:"control"},Qe=["title"],Re={class:"icon"},je={key:1,class:"control"},ze=["title"],Ge={class:"icon has-text-danger"},We=["innerHTML"],we=Object.assign({inheritAttrs:!1},{__name:"FormLockField",props:{modelValue:String,modelModifiers:{default:()=>({})},isEditMode:{type:Boolean,default:!1},label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!0},maxLength:{type:Number,default:null}},emits:["input:modelValue"],setup(p,{emit:T}){const V=p,{inputId:E}=xe(V.inputType,V.fieldName),x=m(V.isDisabled||V.isEditMode),$=m(!1),L=m(0);function q(f){let d=f.target.value;V.modelModifiers.trimAll&&(d=d.replace(/\s+/g,"")),T("update:modelValue",d)}function g(f){let d=f.target.value;$.value=d.includes(" "),T("update:modelValue",d)}function t(f){$.value=f.target.value.includes(" "),L.value+=1}return(f,d)=>{const O=_("FontAwesomeIcon"),U=_("FieldError");return a(),u(oe,null,[s("label",{for:e(E),class:"label",innerHTML:f.$t(p.label)},null,8,He),s("div",{class:k(["field has-addons mb-0",{"pt-3":p.hasOffset}])},[s("div",{class:k(["control",{"is-expanded":p.isExpanded}])},[(a(),u("input",te({key:e(L),disabled:e(x),id:e(E),type:p.inputType,class:"input",value:p.modelValue,placeholder:p.placeholder},f.$attrs,{onInput:g,onChange:q,onBlur:t,maxlength:p.maxLength}),null,16,Pe))],2),p.isEditMode?(a(),b(e(Q),{key:0},{default:h(({mode:D})=>[e(x)?(a(),u("div",Ke,[s("button",{type:"button",class:k(["button field-lock",{"is-dark":D=="dark"}]),onClick:d[0]||(d[0]=B(F=>x.value=!1,["stop"])),title:f.$t("twofaccounts.forms.unlock.title")},[s("span",Re,[r(O,{icon:["fas","lock"]})])],10,Qe)])):(a(),u("div",je,[s("button",{type:"button",class:k(["button field-unlock",{"is-dark":D=="dark"}]),onClick:d[1]||(d[1]=B(F=>x.value=!0,["stop"])),title:f.$t("twofaccounts.forms.lock.title")},[s("span",Ge,[r(O,{icon:["fas","lock-open"]})])],10,ze)]))]),_:1})):c("",!0)],2),e($)?(a(),b(U,{key:0,error:f.$t("twofaccounts.forms.spaces_are_ignored"),field:"spaces",alertType:"is-warning"},null,8,["error"])):c("",!0),p.fieldError!=null?(a(),b(U,{key:1,error:p.fieldError,field:p.fieldName},null,8,["error","field"])):c("",!0),p.help?(a(),u("p",{key:2,class:"help",innerHTML:f.$t(p.help)},null,8,We)):c("",!0)],64)}}}),Ze=["onSubmit"],Je={class:"container preview has-text-centered"},Xe={class:"columns is-mobile"},Ye={class:"column"},et={key:1,class:"add-icon-button"},tt=["onClick"],ot={class:"columns is-mobile",role:"alert"},lt={key:0,class:"column"},st={class:"columns is-mobile"},nt={class:"column quickform-footer"},at={class:"field is-grouped is-grouped-centered"},rt={class:"control"},it=["onSubmit"],ct={key:0,class:"field is-grouped"},ut={class:"control"},dt=["title"],ft={class:"file-cta"},pt={class:"file-icon"},mt={class:"file-label"},vt={class:"label"},ht={class:"field is-grouped"},_t={key:0,class:"control"},gt={class:"icon is-small"},yt={class:"control is-flex"},bt={class:"file-cta"},wt={class:"file-icon"},kt={class:"file-label"},Vt=["src","alt"],Et=["onClick","aria-label"],$t={class:"field"},Ft=["innerHTML"],It={key:2},Ct={key:0},Tt={class:"title is-4 mt-5 mb-2"},xt={class:"help mb-4"},Lt={class:"control"},Mt={key:0,class:"control"},Ut={__name:"CreateUpdate",props:{twofaccountId:[Number,String]},setup(p){const T=p,V=Le("2fauth"),E=Me(),x=Se(),$=Be(),L=qe(),q=De(),g=Ae(),t=X(new ee({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null,image:""})),f=X(new ee({qrcode:null})),d=X(new ee({icon:null})),O=[{text:"TOTP",value:"totp"},{text:"HOTP",value:"hotp"},{text:"STEAM",value:"steamtotp"}],U=[{text:"6",value:6},{text:"7",value:7},{text:"8",value:8},{text:"9",value:9},{text:"10",value:10}],D=[{text:"sha1",value:"sha1"},{text:"sha256",value:"sha256"},{text:"sha512",value:"sha512"},{text:"md5",value:"md5"}],F=m(),i=m(""),A=m(!1),N=m(!1),H=m(!1),I=m(!1),R=m(!1),j=m(null),P=m(null),z=m(null),le=m(null),se=m(null),ne=m(null),v=Ne(()=>T.twofaccountId!=null);Oe(()=>{x.name=="editAccount"?M.get(T.twofaccountId).then(o=>{t.fill(o.data),t.setOriginal(),i.value=t.icon,H.value=!0}):q.decodedUri?(F.value=q.decodedUri,q.decodedUri=null,M.preview(F.value).then(o=>{t.fill(o.data),i.value=o.data.icon?o.data.icon:"",A.value=!0,ve().then(()=>{P.value.show()})}).catch(o=>{o.response.data.errors.uri&&(N.value=!0,H.value=!0)})):H.value=!0}),Y(i,o=>{A.value&&ve().then(()=>{P.value.icon=o})}),Y(I,o=>{var l,w;o==!1&&((l=z.value)==null||l.clearOTP(),(w=P.value)==null||w.clearOTP())}),Y(()=>t.otp_type,(o,l)=>{o==="steamtotp"?(t.service="Steam",de()):l==="steamtotp"&&(t.service="",C())});function ke(){v.value?Ve():ae()}async function ae(){t.icon=i.value;const{data:o}=await t.post("/api/v1/twofaccounts");t.errors.any()===!1&&(L.items.push(o),g.success({text:S("twofaccounts.account_created")}),E.push({name:"accounts"}))}async function Ve(){if(i.value!==t.icon){let l="";l=t.icon,t.icon=i.value,i.value=l,C()}const{data:o}=await t.put("/api/v1/twofaccounts/"+T.twofaccountId);if(t.errors.any()===!1){const l=L.items.findIndex(w=>w.id===o.id);L.items.splice(l,1,o),g.success({text:S("twofaccounts.account_updated")}),E.push({name:"accounts"})}}function Ee(){t.clear(),I.value=!0,z.value.show()}function re(){t.hasChanged()||i.value!=t.icon?confirm(S("twofaccounts.confirm.cancel"))===!0&&((!v.value||i.value!=t.icon)&&C(),E.push({name:"accounts"})):E.push({name:"accounts"})}function ie(){C(),d.icon=j.value.files[0],d.upload("/api/v1/icons",{returnError:!0}).then(o=>{i.value=o.data.filename,A.value&&(t.icon=i.value)}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function C(){v.value?i.value&&(i.value!==t.icon&&M.deleteIcon(i.value),i.value=""):i.value&&(M.deleteIcon(i.value),i.value="",A.value&&(t.icon=""))}function ce(o){t.counter=o.nextHotpCounter}function ue(o){t.errors.set(t.extractErrors(o))}function $e(){f.qrcode=se.value.files[0],f.upload("/api/v1/qrcode/decode",{returnError:!0}).then(o=>{F.value=o.data.data,M.preview(F.value,{returnError:!0}).then(l=>{t.fill(l.data),i.value=l.data.icon?l.data.icon:null}).catch(l=>{l.response.status===422?l.response.data.errors.uri?N.value=!0:g.alert({text:S(l.response.data.message)}):g.error(l)})}).catch(o=>{o.response.status!==422&&g.alert({text:o.response.data.message})})}function de(){$.preferences.getOfficialIcons&&(R.value=!0,M.getLogo(t.service,{returnError:!0}).then(o=>{o.status===201?(C(),i.value=o.data.filename):g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).catch(()=>{g.warn({text:S("errors.no_logo_found_for_x",{service:fe(t.service)})})}).finally(()=>{R.value=!1}))}function fe(o){return o.replace(/(<([^> ]+)>)/ig,"")}return(o,l)=>{const w=_("FieldError"),K=_("FontAwesomeIcon"),G=_("VueButton"),pe=_("ButtonBackCloseCancel"),W=_("FormField"),Z=_("FormToggle"),Fe=_("VueFooter"),me=_("modal"),Ie=_("FormWrapper");return a(),u("div",null,[!e(v)&&e(A)?(a(),u("form",{key:0,onSubmit:B(ae,["prevent"]),onKeydown:l[1]||(l[1]=n=>e(t).onKeydown(n))},[s("div",Je,[s("div",Xe,[s("div",Ye,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e(i)?c("",!0):(a(),u("label",et,[s("input",{class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),r(K,{icon:["fas","image"],size:"2x"})])),e(i)?(a(),u("button",{key:2,class:"delete delete-icon-button is-medium",onClick:B(C,["prevent"])},null,8,tt)):c("",!0),r(be,te({ref_key:"OtpDisplayForQuickForm",ref:P},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[0]||(l[0]=n=>I.value=!1)}),null,16)])]),s("div",ot,[e(t).errors.any()?(a(),u("div",lt,[(a(!0),u(oe,null,he(e(t).errors.errors,(n,J)=>(a(),u("p",{key:J,class:"help is-danger"},[s("ul",null,[(a(!0),u(oe,null,he(n,(Ce,Te)=>(a(),u("li",{key:Te},y(Ce),1))),128))])]))),128))])):c("",!0)]),s("div",st,[s("div",nt,[s("div",at,[s("div",rt,[r(G,{isLoading:e(t).isBusy},{default:h(()=>[ge(y(o.$t("commons.save")),1)]),_:1},8,["isLoading"])]),r(pe,{action:"cancel",isText:!0,useLinkTag:!1,onCanceled:re})])])])])],40,Ze)):c("",!0),e(H)?(a(),b(Ie,{key:1,title:o.$t(e(v)?"twofaccounts.forms.edit_account":"twofaccounts.forms.new_account")},{default:h(()=>[s("form",{onSubmit:B(ke,["prevent"]),onKeydown:l[12]||(l[12]=n=>e(t).onKeydown(n))},[e(v)?c("",!0):(a(),u("div",ct,[s("div",ut,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file is-small",{"is-black":n=="dark"}]),onKeyup:l[2]||(l[2]=ye(J=>e(le).click(),["enter"]))},[s("label",{class:"file-label",title:o.$t("twofaccounts.forms.use_qrcode.title"),ref_key:"qrcodeInputLabel",ref:le},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:$e,ref_key:"qrcodeInput",ref:se},null,544),s("span",ft,[s("span",pt,[r(K,{icon:["fas","qrcode"],size:"lg"})]),s("span",mt,y(o.$t("twofaccounts.forms.prefill_using_qrcode")),1)])],8,dt)],34)]),_:1})])])),e(f).errors.hasAny("qrcode")?(a(),b(w,{key:1,error:e(f).errors.get("qrcode"),field:"qrcode",class:"help-for-file"},null,8,["error"])):c("",!0),r(W,{modelValue:e(t).service,"onUpdate:modelValue":l[3]||(l[3]=n=>e(t).service=n),fieldName:"service",fieldError:e(t).errors.get("email"),isDisabled:e(t).otp_type==="steamtotp",label:"twofaccounts.service",placeholder:o.$t("twofaccounts.forms.service.placeholder"),autofocus:""},null,8,["modelValue","fieldError","isDisabled","placeholder"]),r(W,{modelValue:e(t).account,"onUpdate:modelValue":l[4]||(l[4]=n=>e(t).account=n),fieldName:"account",fieldError:e(t).errors.get("account"),label:"twofaccounts.account",placeholder:o.$t("twofaccounts.forms.account.placeholder")},null,8,["modelValue","fieldError","placeholder"]),s("label",vt,y(o.$t("twofaccounts.icon")),1),s("div",ht,[e($).preferences.getOfficialIcons?(a(),u("div",_t,[r(e(Q),null,{default:h(({mode:n})=>[r(G,{onClick:de,color:n=="dark"?"is-dark":"",nativeType:"button","is-loading":e(R),isDisabled:!e(t).service},{default:h(()=>[s("span",gt,[r(K,{icon:["fas","globe"]})]),s("span",null,y(o.$t("twofaccounts.forms.i_m_lucky")),1)]),_:2},1032,["color","is-loading","isDisabled"])]),_:1})])):c("",!0),s("div",yt,[r(e(Q),null,{default:h(({mode:n})=>[s("div",{role:"button",tabindex:"0",class:k(["file mr-3",n=="dark"?"is-dark":"is-white"]),onKeyup:l[5]||(l[5]=ye(J=>e(ne).click(),["enter"]))},[s("label",{class:"file-label",ref_key:"iconInputLabel",ref:ne},[s("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:ie,ref_key:"iconInput",ref:j},null,544),s("span",bt,[s("span",wt,[r(K,{icon:["fas","upload"]})]),s("span",kt,y(o.$t("twofaccounts.forms.choose_image")),1)])],512)],34),e(i)?(a(),u("span",{key:0,class:k(["tag is-large",n=="dark"?"is-dark":"is-white"])},[s("img",{class:"icon-preview",src:e(V).config.subdirectory+"/storage/icons/"+e(i),alt:o.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,Vt),s("button",{class:"clear-selection delete is-small",onClick:B(C,["prevent"]),"aria-label":o.$t("twofaccounts.remove_icon")},null,8,Et)],2)):c("",!0)]),_:1})])]),s("div",$t,[e(d).errors.hasAny("icon")?(a(),b(w,{key:0,error:e(d).errors.get("icon"),field:"icon",class:"help-for-file"},null,8,["error"])):c("",!0),e($).preferences.getOfficialIcons?(a(),u("p",{key:1,class:"help",innerHTML:o.$t("twofaccounts.forms.i_m_lucky_legend")},null,8,Ft)):c("",!0)]),r(Z,{modelValue:e(t).otp_type,"onUpdate:modelValue":l[6]||(l[6]=n=>e(t).otp_type=n),isDisabled:e(v),choices:O,fieldName:"otp_type",fieldError:e(t).errors.get("otp_type"),label:"twofaccounts.forms.otp_type.label",help:"twofaccounts.forms.otp_type.help",hasOffset:!0},null,8,["modelValue","isDisabled","fieldError"]),e(t).otp_type!=""?(a(),u("div",It,[r(we,{isEditMode:e(v),modelValue:e(t).secret,"onUpdate:modelValue":l[7]||(l[7]=n=>e(t).secret=n),modelModifiers:{trimAll:!0},fieldName:"secret",fieldError:e(t).errors.get("secret"),label:"twofaccounts.forms.secret.label",help:"twofaccounts.forms.secret.help"},null,8,["isEditMode","modelValue","fieldError"]),e(t).otp_type!=="steamtotp"?(a(),u("div",Ct,[s("h2",Tt,y(o.$t("commons.options")),1),s("p",xt,y(o.$t("twofaccounts.forms.options_help")),1),r(Z,{modelValue:e(t).digits,"onUpdate:modelValue":l[8]||(l[8]=n=>e(t).digits=n),choices:U,fieldName:"digits",fieldError:e(t).errors.get("digits"),label:"twofaccounts.forms.digits.label",help:"twofaccounts.forms.digits.help"},null,8,["modelValue","fieldError"]),r(Z,{modelValue:e(t).algorithm,"onUpdate:modelValue":l[9]||(l[9]=n=>e(t).algorithm=n),choices:D,fieldName:"algorithm",fieldError:e(t).errors.get("algorithm"),label:"twofaccounts.forms.algorithm.label",help:"twofaccounts.forms.algorithm.help"},null,8,["modelValue","fieldError"]),e(t).otp_type==="totp"?(a(),b(W,{key:0,pattern:"[0-9]{1,4}",class:k("is-third-width-field"),modelValue:e(t).period,"onUpdate:modelValue":l[10]||(l[10]=n=>e(t).period=n),fieldName:"period",fieldError:e(t).errors.get("period"),label:"twofaccounts.forms.period.label",help:"twofaccounts.forms.period.help",placeholder:o.$t("twofaccounts.forms.period.placeholder")},null,8,["modelValue","fieldError","placeholder"])):c("",!0),e(t).otp_type==="hotp"?(a(),b(we,{key:1,pattern:"[0-9]{1,4}",isEditMode:e(v),isExpanded:!1,modelValue:e(t).counter,"onUpdate:modelValue":l[11]||(l[11]=n=>e(t).counter=n),fieldName:"counter",fieldError:e(t).errors.get("counter"),label:"twofaccounts.forms.counter.label",placeholder:o.$t("twofaccounts.forms.counter.placeholder"),help:e(v)?"twofaccounts.forms.counter.help_lock":"twofaccounts.forms.counter.help"},null,8,["isEditMode","modelValue","fieldError","placeholder","help"])):c("",!0)])):c("",!0)])):c("",!0),r(Fe,{showButtons:!0},{default:h(()=>[s("p",Lt,[r(G,{id:e(v)?"btnUpdate":"btnCreate",isLoading:e(t).isBusy,class:"is-rounded"},{default:h(()=>[ge(y(e(v)?o.$t("commons.save"):o.$t("commons.create")),1)]),_:1},8,["id","isLoading"])]),e(t).otp_type&&e(t).secret?(a(),u("p",Mt,[s("button",{id:"btnPreview",type:"button",class:"button is-success is-rounded",onClick:Ee},y(o.$t("twofaccounts.forms.test")),1)])):c("",!0),r(pe,{action:"cancel",useLinkTag:!1,onCanceled:re})]),_:1})],40,it),r(me,{modelValue:e(I),"onUpdate:modelValue":l[14]||(l[14]=n=>_e(I)?I.value=n:null)},{default:h(()=>[r(be,te({ref_key:"OtpDisplayForAdvancedForm",ref:z},e(t).data(),{onIncrementHotp:ce,onValidationError:ue,onPleaseCloseMe:l[13]||(l[13]=n=>I.value=!1)}),null,16)]),_:1},8,["modelValue"])]),_:1},8,["title"])):c("",!0),r(me,{modelValue:e(N),"onUpdate:modelValue":l[15]||(l[15]=n=>_e(N)?N.value=n:null)},{default:h(()=>[r(Ue,{qrContent:e(F)},null,8,["qrContent"])]),_:1},8,["modelValue"])])}}};export{Ut as default}; diff --git a/public/build/assets/CreateUpdate-6d65a394.js b/public/build/assets/CreateUpdate-db65145e.js similarity index 87% rename from public/build/assets/CreateUpdate-6d65a394.js rename to public/build/assets/CreateUpdate-db65145e.js index c0524c14..f6f006a2 100644 --- a/public/build/assets/CreateUpdate-6d65a394.js +++ b/public/build/assets/CreateUpdate-db65145e.js @@ -1 +1 @@ -import{T as v,u as G,_ as h,v as w,d as y,$ as N,L as E,e as m,f as I,k as S,p as V,i as t,h as C,m as i,D as $}from"./app-94c6def1.js";import{F as k}from"./Form-88ba26a4.js";import{u as M}from"./bus-d94d2521.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const K=["onSubmit"],U={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const s=c,p=v(),d=G(),l=h(),a=M(),r=w(()=>s.groupId!=null),o=y(new k({name:""}));N(()=>{l.name=="editGroup"&&(a.editedGroupName?(o.name=a.editedGroupName,a.editedGroupName=void 0):E.get(s.groupId).then(e=>{o.name=e.data.name}))});function f(){r.value?B():g()}async function g(){o.post("/api/v1/groups").then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}async function B(){o.put("/api/v1/groups/"+s.groupId).then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}return(e,n)=>{const b=m("FormField"),F=m("FormButtons"),_=m("FormWrapper");return I(),S(_,{title:t(r)?e.$t("groups.forms.rename_group"):e.$t("groups.forms.new_group")},{default:V(()=>[C("form",{onSubmit:$(f,["prevent"]),onKeydown:n[1]||(n[1]=u=>t(o).onKeydown(u))},[i(b,{modelValue:t(o).name,"onUpdate:modelValue":n[0]||(n[0]=u=>t(o).name=u),fieldName:"name",fieldError:t(o).errors.get("name"),label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),i(F,{submitId:t(r)?"btnEditGroup":"btnCreateGroup",isBusy:t(o).isBusy,caption:t(r)?e.$t("commons.save"):e.$t("commons.create"),showCancelButton:!0,cancelLandingView:"groups"},null,8,["submitId","isBusy","caption"])],40,K)]),_:1},8,["title"])}}};export{U as default}; +import{T as v,u as G,_ as h,v as w,d as y,$ as N,L as E,e as m,f as I,k as S,p as V,i as t,h as C,m as i,D as $}from"./app-60af1d1a.js";import{F as k}from"./Form-0a788c90.js";import{u as M}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const K=["onSubmit"],U={__name:"CreateUpdate",props:{groupId:[Number,String]},setup(c){const s=c,p=v(),d=G(),l=h(),a=M(),r=w(()=>s.groupId!=null),o=y(new k({name:""}));N(()=>{l.name=="editGroup"&&(a.editedGroupName?(o.name=a.editedGroupName,a.editedGroupName=void 0):E.get(s.groupId).then(e=>{o.name=e.data.name}))});function f(){r.value?B():g()}async function g(){o.post("/api/v1/groups").then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}async function B(){o.put("/api/v1/groups/"+s.groupId).then(e=>{p.addOrEdit(e.data),d.push({name:"groups"})})}return(e,n)=>{const b=m("FormField"),F=m("FormButtons"),_=m("FormWrapper");return I(),S(_,{title:t(r)?e.$t("groups.forms.rename_group"):e.$t("groups.forms.new_group")},{default:V(()=>[C("form",{onSubmit:$(f,["prevent"]),onKeydown:n[1]||(n[1]=u=>t(o).onKeydown(u))},[i(b,{modelValue:t(o).name,"onUpdate:modelValue":n[0]||(n[0]=u=>t(o).name=u),fieldName:"name",fieldError:t(o).errors.get("name"),label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),i(F,{submitId:t(r)?"btnEditGroup":"btnCreateGroup",isBusy:t(o).isBusy,caption:t(r)?e.$t("commons.save"):e.$t("commons.create"),showCancelButton:!0,cancelLandingView:"groups"},null,8,["submitId","isBusy","caption"])],40,K)]),_:1},8,["title"])}}};export{U as default}; diff --git a/public/build/assets/Edit-c8ca049e.js b/public/build/assets/Edit-e1414c8a.js similarity index 89% rename from public/build/assets/Edit-c8ca049e.js rename to public/build/assets/Edit-e1414c8a.js index 39a76257..6a0fc749 100644 --- a/public/build/assets/Edit-c8ca049e.js +++ b/public/build/assets/Edit-e1414c8a.js @@ -1 +1 @@ -import{u as h,b as w,d as b,I as a,e as s,f as y,k as F,p as v,h as B,m as r,i as t,D as g}from"./app-94c6def1.js";import{F as V}from"./Form-88ba26a4.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const C=["onSubmit"],I={__name:"Edit",props:{credentialId:{type:String,default:""}},setup(i){const u=i,m=h(),d=w(),e=b(new V({name:a("auth.webauthn.my_device")}));function c(){e.patch("/webauthn/credentials/"+u.credentialId+"/name").then(()=>{d.success({text:a("auth.webauthn.device_successfully_registered")}),m.push({name:"settings.webauthn.devices"})})}return(l,n)=>{const p=s("FormField"),f=s("FormButtons"),_=s("FormWrapper");return y(),F(_,{title:"auth.webauthn.rename_device"},{default:v(()=>[B("form",{onSubmit:g(c,["prevent"]),onKeydown:n[1]||(n[1]=o=>t(e).onKeydown(o))},[r(p,{modelValue:t(e).name,"onUpdate:modelValue":n[0]||(n[0]=o=>t(e).name=o),fieldName:"name",fieldError:t(e).errors.get("name"),inputType:"text",label:"commons.new_name",autofocus:""},null,8,["modelValue","fieldError"]),r(f,{submitId:"btnEditCredential",isBusy:t(e).isBusy,caption:l.$t("commons.save"),showCancelButton:!0,cancelLandingView:"settings.webauthn.devices"},null,8,["isBusy","caption"])],40,C)]),_:1})}}};export{I as default}; +import{u as h,b as w,d as b,I as a,e as s,f as y,k as F,p as v,h as B,m as r,i as t,D as g}from"./app-60af1d1a.js";import{F as V}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const C=["onSubmit"],I={__name:"Edit",props:{credentialId:{type:String,default:""}},setup(i){const u=i,m=h(),d=w(),e=b(new V({name:a("auth.webauthn.my_device")}));function c(){e.patch("/webauthn/credentials/"+u.credentialId+"/name").then(()=>{d.success({text:a("auth.webauthn.device_successfully_registered")}),m.push({name:"settings.webauthn.devices"})})}return(l,n)=>{const p=s("FormField"),f=s("FormButtons"),_=s("FormWrapper");return y(),F(_,{title:"auth.webauthn.rename_device"},{default:v(()=>[B("form",{onSubmit:g(c,["prevent"]),onKeydown:n[1]||(n[1]=o=>t(e).onKeydown(o))},[r(p,{modelValue:t(e).name,"onUpdate:modelValue":n[0]||(n[0]=o=>t(e).name=o),fieldName:"name",fieldError:t(e).errors.get("name"),inputType:"text",label:"commons.new_name",autofocus:""},null,8,["modelValue","fieldError"]),r(f,{submitId:"btnEditCredential",isBusy:t(e).isBusy,caption:l.$t("commons.save"),showCancelButton:!0,cancelLandingView:"settings.webauthn.devices"},null,8,["isBusy","caption"])],40,C)]),_:1})}}};export{I as default}; diff --git a/public/build/assets/Error-38fc2eeb.js b/public/build/assets/Error-0e5b1508.js similarity index 95% rename from public/build/assets/Error-38fc2eeb.js rename to public/build/assets/Error-0e5b1508.js index 609840b4..528a434b 100644 --- a/public/build/assets/Error-38fc2eeb.js +++ b/public/build/assets/Error-0e5b1508.js @@ -1 +1 @@ -import{b as y,u as b,_ as k,r as v,v as V,x as w,o as N,I as x,e as B,f as r,g as t,m as M,p as $,i as e,E as q,h as l,t as n,l as c,j as C}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={key:0,class:"error-message"},R=l("p",{class:"error-404"},null,-1),D={key:1,class:"error-message"},F=l("p",{class:"error-generic"},null,-1),S={key:0,class:"has-text-grey-lighter"},j={key:1,class:"has-text-grey-lighter"},z={key:2,class:"is-size-7 is-family-code"},H=l("br",null,null,-1),T={__name:"Error",props:{closable:{type:Boolean,default:!0}},setup(m){const p=m,s=y(),d=b(),a=k(),u=v(!0),_=V(()=>!1);w(u,o=>{o==!1&&g()}),N(()=>{a.query.err&&(s.message=x("errors."+a.query.err))});function g(){window.history.length>1&&a.name!=="404"&&a.name!=="notFound"&&!a.query.err?d.go(-1):d.push({name:"accounts"})}return(o,i)=>{const h=B("modal");return r(),t("div",null,[M(h,{modelValue:e(u),"onUpdate:modelValue":i[0]||(i[0]=f=>q(u)?u.value=f:null),closable:p.closable},{default:$(()=>[o.$route.name=="404"||o.$route.name=="notFound"?(r(),t("div",E,[R,l("p",null,n(o.$t("errors.resource_not_found")),1)])):(r(),t("div",D,[F,l("p",null,n(o.$t("errors.error_occured")),1),e(s).message?(r(),t("p",S,n(e(s).message),1)):c("",!0),e(s).originalMessage?(r(),t("p",j,n(e(s).originalMessage),1)):c("",!0),e(_)&&e(s).debug?(r(),t("p",z,[H,C(n(e(s).debug),1)])):c("",!0)]))]),_:1},8,["modelValue","closable"])])}}};export{T as default}; +import{b as y,u as b,_ as k,r as v,v as V,x as w,o as N,I as x,e as B,f as r,g as t,m as M,p as $,i as e,E as q,h as l,t as n,l as c,j as C}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={key:0,class:"error-message"},R=l("p",{class:"error-404"},null,-1),D={key:1,class:"error-message"},F=l("p",{class:"error-generic"},null,-1),S={key:0,class:"has-text-grey-lighter"},j={key:1,class:"has-text-grey-lighter"},z={key:2,class:"is-size-7 is-family-code"},H=l("br",null,null,-1),T={__name:"Error",props:{closable:{type:Boolean,default:!0}},setup(m){const p=m,s=y(),d=b(),a=k(),u=v(!0),_=V(()=>!1);w(u,o=>{o==!1&&g()}),N(()=>{a.query.err&&(s.message=x("errors."+a.query.err))});function g(){window.history.length>1&&a.name!=="404"&&a.name!=="notFound"&&!a.query.err?d.go(-1):d.push({name:"accounts"})}return(o,i)=>{const h=B("modal");return r(),t("div",null,[M(h,{modelValue:e(u),"onUpdate:modelValue":i[0]||(i[0]=f=>q(u)?u.value=f:null),closable:p.closable},{default:$(()=>[o.$route.name=="404"||o.$route.name=="notFound"?(r(),t("div",E,[R,l("p",null,n(o.$t("errors.resource_not_found")),1)])):(r(),t("div",D,[F,l("p",null,n(o.$t("errors.error_occured")),1),e(s).message?(r(),t("p",S,n(e(s).message),1)):c("",!0),e(s).originalMessage?(r(),t("p",j,n(e(s).originalMessage),1)):c("",!0),e(_)&&e(s).debug?(r(),t("p",z,[H,C(n(e(s).debug),1)])):c("",!0)]))]),_:1},8,["modelValue","closable"])])}}};export{T as default}; diff --git a/public/build/assets/Form-88ba26a4.js b/public/build/assets/Form-0a788c90.js similarity index 98% rename from public/build/assets/Form-88ba26a4.js rename to public/build/assets/Form-0a788c90.js index 1ee1a08a..e0163b43 100644 --- a/public/build/assets/Form-88ba26a4.js +++ b/public/build/assets/Form-0a788c90.js @@ -1 +1 @@ -import{a4 as l}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class f{constructor(){this.errors={}}set(t,s){typeof t=="object"?this.errors=t:this.set({...this.errors,[t]:c(s)})}all(){return this.errors}has(t){return this.errors.hasOwnProperty(t)}hasAny(...t){return t.some(s=>this.has(s))}any(){return Object.keys(this.errors).length>0}get(t){if(this.has(t))return this.getAll(t)[0]}getAll(t){return c(this.errors[t]||[])}only(...t){const s=[];return t.forEach(r=>{const e=this.get(r);e&&s.push(e)}),s}flatten(){return Object.values(this.errors).reduce((t,s)=>t.concat(s),[])}clear(t){const s={};t&&Object.keys(this.errors).forEach(r=>{r!==t&&(s[r]=this.errors[r])}),this.set(s)}}function c(o){return Array.isArray(o)?o:[o]}class i{constructor(t={}){this.axios=l("web"),this.isBusy=!1,this.isDisabled=!1,this.errors=new f,this.originalData=this.deepCopy(t),Object.assign(this,t)}fill(t){this.keys().forEach(s=>{this[s]=t[s]})}setOriginal(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this.originalData[t]=this.deepCopy(this[t])})}hasChanged(){return this.keys().some(t=>this[t]!==this.originalData[t])}fillWithKeyValueObject(t){this.keys().forEach(s=>{const r=t.find(e=>e.key===s.toString());r!=null&&(this[s]=r.value)})}data(){return this.keys().reduce((t,s)=>({...t,[s]:this[s]}),{})}keys(){return Object.keys(this).filter(t=>!i.ignore.includes(t))}startProcessing(){this.errors.clear(),this.isBusy=!0}finishProcessing(){this.isBusy=!1}clear(){this.errors.clear()}reset(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this[t]=this.deepCopy(this.originalData[t])})}get(t,s={}){return this.submit("get",t,s)}post(t,s={}){return this.submit("post",t,s)}patch(t,s={}){return this.submit("patch",t,s)}put(t,s={}){return this.submit("put",t,s)}delete(t,s={}){return this.submit("delete",t,s)}submit(t,s,r={}){this.startProcessing();const e=t==="get"?{params:this.data()}:this.data();return new Promise((a,u)=>{this.axios.request({url:this.route(s),method:t,data:e,...r}).then(h=>{this.finishProcessing(),a(h)}).catch(h=>{var n;this.isBusy=!1,h.response&&this.errors.set(this.extractErrors(h.response)),((n=h.response)==null?void 0:n.status)!=422&&u(h)})})}upload(t,s={}){return this.startProcessing(),new Promise((r,e)=>{this.axios.post(this.route(t),this.data(),{headers:{"Content-Type":"multipart/form-data"},...s}).then(a=>{this.finishProcessing(),r(a)}).catch(a=>{this.isBusy=!1,a.response&&this.errors.set(this.extractErrors(a.response)),e(a)})})}extractErrors(t){return!t.data||typeof t.data!="object"?{error:i.errorMessage}:t.data.errors?{...t.data.errors}:t.data.message?{error:t.data.message}:{...t.data}}route(t,s={}){let r=t;return i.routes.hasOwnProperty(t)&&(r=decodeURI(i.routes[t])),typeof s!="object"&&(s={id:s}),Object.keys(s).forEach(e=>{r=r.replace(`{${e}}`,s[e])}),r}onKeydown(t){t.target.name&&this.errors.clear(t.target.name)}deepCopy(t){if(t===null||typeof t!="object")return t;const s=Array.isArray(t)?[]:{};return Object.keys(t).forEach(r=>{s[r]=this.deepCopy(t[r])}),s}}i.routes={};i.errorMessage="Something went wrong. Please try again.";i.ignore=["isBusy","isDisabled","errors","originalData","axios"];export{i as F}; +import{a4 as l}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class f{constructor(){this.errors={}}set(t,s){typeof t=="object"?this.errors=t:this.set({...this.errors,[t]:c(s)})}all(){return this.errors}has(t){return this.errors.hasOwnProperty(t)}hasAny(...t){return t.some(s=>this.has(s))}any(){return Object.keys(this.errors).length>0}get(t){if(this.has(t))return this.getAll(t)[0]}getAll(t){return c(this.errors[t]||[])}only(...t){const s=[];return t.forEach(r=>{const e=this.get(r);e&&s.push(e)}),s}flatten(){return Object.values(this.errors).reduce((t,s)=>t.concat(s),[])}clear(t){const s={};t&&Object.keys(this.errors).forEach(r=>{r!==t&&(s[r]=this.errors[r])}),this.set(s)}}function c(o){return Array.isArray(o)?o:[o]}class i{constructor(t={}){this.axios=l("web"),this.isBusy=!1,this.isDisabled=!1,this.errors=new f,this.originalData=this.deepCopy(t),Object.assign(this,t)}fill(t){this.keys().forEach(s=>{this[s]=t[s]})}setOriginal(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this.originalData[t]=this.deepCopy(this[t])})}hasChanged(){return this.keys().some(t=>this[t]!==this.originalData[t])}fillWithKeyValueObject(t){this.keys().forEach(s=>{const r=t.find(e=>e.key===s.toString());r!=null&&(this[s]=r.value)})}data(){return this.keys().reduce((t,s)=>({...t,[s]:this[s]}),{})}keys(){return Object.keys(this).filter(t=>!i.ignore.includes(t))}startProcessing(){this.errors.clear(),this.isBusy=!0}finishProcessing(){this.isBusy=!1}clear(){this.errors.clear()}reset(){Object.keys(this).filter(t=>!i.ignore.includes(t)).forEach(t=>{this[t]=this.deepCopy(this.originalData[t])})}get(t,s={}){return this.submit("get",t,s)}post(t,s={}){return this.submit("post",t,s)}patch(t,s={}){return this.submit("patch",t,s)}put(t,s={}){return this.submit("put",t,s)}delete(t,s={}){return this.submit("delete",t,s)}submit(t,s,r={}){this.startProcessing();const e=t==="get"?{params:this.data()}:this.data();return new Promise((a,u)=>{this.axios.request({url:this.route(s),method:t,data:e,...r}).then(h=>{this.finishProcessing(),a(h)}).catch(h=>{var n;this.isBusy=!1,h.response&&this.errors.set(this.extractErrors(h.response)),((n=h.response)==null?void 0:n.status)!=422&&u(h)})})}upload(t,s={}){return this.startProcessing(),new Promise((r,e)=>{this.axios.post(this.route(t),this.data(),{headers:{"Content-Type":"multipart/form-data"},...s}).then(a=>{this.finishProcessing(),r(a)}).catch(a=>{this.isBusy=!1,a.response&&this.errors.set(this.extractErrors(a.response)),e(a)})})}extractErrors(t){return!t.data||typeof t.data!="object"?{error:i.errorMessage}:t.data.errors?{...t.data.errors}:t.data.message?{error:t.data.message}:{...t.data}}route(t,s={}){let r=t;return i.routes.hasOwnProperty(t)&&(r=decodeURI(i.routes[t])),typeof s!="object"&&(s={id:s}),Object.keys(s).forEach(e=>{r=r.replace(`{${e}}`,s[e])}),r}onKeydown(t){t.target.name&&this.errors.clear(t.target.name)}deepCopy(t){if(t===null||typeof t!="object")return t;const s=Array.isArray(t)?[]:{};return Object.keys(t).forEach(r=>{s[r]=this.deepCopy(t[r])}),s}}i.routes={};i.errorMessage="Something went wrong. Please try again.";i.ignore=["isBusy","isDisabled","errors","originalData","axios"];export{i as F}; diff --git a/public/build/assets/Groups-9709021e.js b/public/build/assets/Groups-e3693e0e.js similarity index 94% rename from public/build/assets/Groups-9709021e.js rename to public/build/assets/Groups-e3693e0e.js index 12827104..38defc14 100644 --- a/public/build/assets/Groups-9709021e.js +++ b/public/build/assets/Groups-e3693e0e.js @@ -1 +1 @@ -import{u as C,T as $,r as w,o as z,a0 as G,e as c,f as l,k as b,p as u,h as o,t as a,m as s,j as _,i,g as m,F,G as R,n as V,U as N,l as h}from"./app-94c6def1.js";import{u as E}from"./bus-d94d2521.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const I={class:"title has-text-grey-dark"},L={class:"is-size-7-mobile"},T={class:"mt-3 mb-6"},W={key:0},A=["onClick","title"],x={class:"is-family-primary is-size-6 is-size-7-mobile has-text-grey"},M={class:"mt-2 is-size-7 is-pulled-right"},S={key:1,class:"has-text-centered"},U={class:"is-size-4"},J={__name:"Groups",setup(j){C();const t=$(),f=E(),p=w(!1);return z(async()=>{p.value=t.isEmpty,await t.fetch().finally(()=>{p.value=!1})}),G((e,g)=>{var n;e.name=="editGroup"&&(f.editedGroupName=(n=t.items.find(d=>d.id==e.params.groupId))==null?void 0:n.name)}),(e,g)=>{const n=c("FontAwesomeIcon"),d=c("RouterLink"),k=c("ButtonBackCloseCancel"),y=c("VueFooter"),v=c("ResponsiveWidthWrapper");return l(),b(v,null,{default:u(()=>[o("h1",I,a(e.$t("groups.groups")),1),o("div",L,a(e.$t("groups.manage_groups_legend")),1),o("div",T,[s(d,{class:"is-link mt-5",to:{name:"createGroup"}},{default:u(()=>[s(n,{icon:["fas","plus-circle"]}),_(" "+a(e.$t("groups.create_group")),1)]),_:1})]),i(t).isEmpty?h("",!0):(l(),m("div",W,[(l(!0),m(F,null,R(i(t).withoutTheAllGroup,r=>(l(),m("div",{key:r.id,class:"group-item is-size-5 is-size-6-mobile"},[_(a(r.name)+" ",1),s(i(N),null,{default:u(({mode:B})=>[o("button",{class:V(["button tag is-pulled-right",B=="dark"?"is-dark":"is-white"]),onClick:q=>i(t).delete(r.id),title:e.$t("commons.delete")},a(e.$t("commons.delete")),11,A)]),_:2},1024),s(d,{to:{name:"editGroup",params:{groupId:r.id}},class:"has-text-grey px-1",title:e.$t("commons.rename")},{default:u(()=>[s(n,{icon:["fas","pen-square"]})]),_:2},1032,["to","title"]),o("span",x,a(e.$t("groups.x_accounts",{count:r.twofaccounts_count})),1)]))),128)),o("div",M,a(e.$t("groups.deleting_group_does_not_delete_accounts")),1)])),i(p)&&i(t).isEmpty?(l(),m("div",S,[o("span",U,[s(n,{icon:["fas","spinner"],spin:""})])])):h("",!0),s(y,{showButtons:!0},{default:u(()=>[s(k,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{J as default}; +import{u as C,T as $,r as w,o as z,a0 as G,e as c,f as l,k as b,p as u,h as o,t as a,m as s,j as _,i,g as m,F,G as R,n as V,U as N,l as h}from"./app-60af1d1a.js";import{u as E}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const I={class:"title has-text-grey-dark"},L={class:"is-size-7-mobile"},T={class:"mt-3 mb-6"},W={key:0},A=["onClick","title"],x={class:"is-family-primary is-size-6 is-size-7-mobile has-text-grey"},M={class:"mt-2 is-size-7 is-pulled-right"},S={key:1,class:"has-text-centered"},U={class:"is-size-4"},J={__name:"Groups",setup(j){C();const t=$(),f=E(),p=w(!1);return z(async()=>{p.value=t.isEmpty,await t.fetch().finally(()=>{p.value=!1})}),G((e,g)=>{var n;e.name=="editGroup"&&(f.editedGroupName=(n=t.items.find(d=>d.id==e.params.groupId))==null?void 0:n.name)}),(e,g)=>{const n=c("FontAwesomeIcon"),d=c("RouterLink"),k=c("ButtonBackCloseCancel"),y=c("VueFooter"),v=c("ResponsiveWidthWrapper");return l(),b(v,null,{default:u(()=>[o("h1",I,a(e.$t("groups.groups")),1),o("div",L,a(e.$t("groups.manage_groups_legend")),1),o("div",T,[s(d,{class:"is-link mt-5",to:{name:"createGroup"}},{default:u(()=>[s(n,{icon:["fas","plus-circle"]}),_(" "+a(e.$t("groups.create_group")),1)]),_:1})]),i(t).isEmpty?h("",!0):(l(),m("div",W,[(l(!0),m(F,null,R(i(t).withoutTheAllGroup,r=>(l(),m("div",{key:r.id,class:"group-item is-size-5 is-size-6-mobile"},[_(a(r.name)+" ",1),s(i(N),null,{default:u(({mode:B})=>[o("button",{class:V(["button tag is-pulled-right",B=="dark"?"is-dark":"is-white"]),onClick:q=>i(t).delete(r.id),title:e.$t("commons.delete")},a(e.$t("commons.delete")),11,A)]),_:2},1024),s(d,{to:{name:"editGroup",params:{groupId:r.id}},class:"has-text-grey px-1",title:e.$t("commons.rename")},{default:u(()=>[s(n,{icon:["fas","pen-square"]})]),_:2},1032,["to","title"]),o("span",x,a(e.$t("groups.x_accounts",{count:r.twofaccounts_count})),1)]))),128)),o("div",M,a(e.$t("groups.deleting_group_does_not_delete_accounts")),1)])),i(p)&&i(t).isEmpty?(l(),m("div",S,[o("span",U,[s(n,{icon:["fas","spinner"],spin:""})])])):h("",!0),s(y,{showButtons:!0},{default:u(()=>[s(k,{returnTo:{name:"accounts"},action:"close"})]),_:1})]),_:1})}}};export{J as default}; diff --git a/public/build/assets/Import-372ba8b3.js b/public/build/assets/Import-058e3143.js similarity index 98% rename from public/build/assets/Import-372ba8b3.js rename to public/build/assets/Import-058e3143.js index 0004a2a5..0224153e 100644 --- a/public/build/assets/Import-372ba8b3.js +++ b/public/build/assets/Import-058e3143.js @@ -1 +1 @@ -import{Z as ft,e as v,f as n,g as r,z as mt,m as a,l as f,h as t,i as l,n as C,V as Z,k as P,Q as pt,b as ht,a as _t,c as vt,r as k,d as O,I as p,v as D,x as gt,o as yt,K as kt,p as w,E as J,t as i,U as q,j as _,w as K,D as wt,F as W,G as Q,P as bt}from"./app-94c6def1.js";import{F as H}from"./Form-88ba26a4.js";import{_ as $t}from"./OtpDisplay-4c8a5daa.js";import{S as Ct}from"./Spinner-f03b508f.js";import{u as xt}from"./bus-d94d2521.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const At=["for","innerHTML"],Ft=["disabled","id","value","placeholder","maxlength"],St=["innerHTML"],zt=Object.assign({inheritAttrs:!1},{__name:"FormTextarea",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],placeholder:{type:String,default:""},help:{type:String,default:""},size:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null},isIndented:Boolean},setup(d){const E=d,{inputId:m}=ft(E.inputType,E.fieldName);return(h,g)=>{const N=v("FontAwesomeIcon"),b=v("FieldError");return n(),r("div",{class:C(["mb-3",{"pt-3":d.hasOffset,"is-flex":d.isIndented}])},[d.isIndented?(n(),r("div",{key:0,class:"mx-2 pr-1",style:mt({opacity:d.isDisabled?"0.5":"1"})},[a(N,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):f("",!0),t("div",{class:C(["field",{"is-flex-grow-5":d.isIndented}])},[t("label",{for:l(m),class:"label",innerHTML:h.$t(d.label)},null,8,At),t("div",{class:C(["control",{"has-icons-left":h.leftIcon,"has-icons-right":h.rightIcon}])},[t("textarea",Z({disabled:d.isDisabled,id:l(m),class:["textarea",d.size],value:d.modelValue,placeholder:d.placeholder},h.$attrs,{onInput:g[0]||(g[0]=$=>h.$emit("update:modelValue",$.target.value)),onChange:g[1]||(g[1]=$=>h.$emit("change:modelValue",$.target.value)),maxlength:d.maxLength}),null,16,Ft)],2),d.fieldError!=null?(n(),P(b,{key:0,error:d.fieldError,field:d.fieldName},null,8,["error","field"])):f("",!0),d.help?(n(),r("p",{key:1,class:"help",innerHTML:h.$t(d.help)},null,8,St)):f("",!0)],2)],2)}}}),It={class:"title has-text-grey-dark"},Vt={key:0},Et={class:"block is-size-7-mobile"},Tt={class:"mb-2"},qt={class:"columns"},Nt={class:"column"},Bt={class:"block"},Lt={class:"card"},Mt={class:"card-content"},Ot={class:"media"},Dt={class:"media-left"},Ht={class:"image is-32x32"},Pt={class:"media-content"},Ut=["innerHTML"],Rt={class:"subtitle is-6 is-size-7-mobile"},jt={class:"card-footer"},Gt={class:"block"},Jt={class:"card"},Kt={class:"card-content"},Wt={class:"media"},Qt={class:"media-left"},Zt={class:"image is-32x32"},Xt={class:"media-content"},Yt={class:"title is-5 has-text-grey"},te={class:"subtitle is-6 is-size-7-mobile"},ee={class:"card-footer"},se={class:"block"},oe={class:"card"},ie={class:"card-content"},le={class:"media"},ne={class:"media-left"},ae={class:"image is-32x32"},re={class:"media-content"},ce=["innerHTML"],de={class:"subtitle is-6 is-size-7-mobile"},ue={class:"content"},fe={class:"card-footer"},me=["onClick"],pe={class:"title is-5 has-text-grey-dark"},he={class:"block is-size-7-mobile"},_e={class:"table is-size-7-mobile is-fullwidth"},ve=t("thead",null,[t("tr",null,[t("th"),t("th",null,"Plain text"),t("th",null,"QR code"),t("th",null,"JSON")])],-1),ge=t("th",null,"Google Authenticator",-1),ye=t("td",null,null,-1),ke=t("td",null,null,-1),we=t("th",null,"Aegis Auth",-1),be=t("td",null,null,-1),$e=t("th",null,"2FAS auth",-1),Ce=t("td",null,null,-1),xe=t("td",null,null,-1),Ae=t("th",null,"FreeOTP+",-1),Fe=t("td",null,null,-1),Se=t("td",null,null,-1),ze=t("th",null,"2FAuth",-1),Ie=t("td",null,null,-1),Ve=t("td",null,null,-1),Ee={key:1},Te={key:2},qe={class:"block is-size-7-mobile"},Ne={class:"mb-2"},Be={class:"is-flex is-justify-content-space-between"},Le=["onClick","title"],Me=["src","alt"],Oe={key:1,class:"is-flex-grow-1 has-ellipsis"},De={key:2,class:"tags is-flex-wrap-nowrap"},He=["onClick","title"],Pe=["onClick","title"],Ue={key:3,class:"has-nowrap"},Re={key:0,class:"has-text-success"},je={key:1,class:"has-text-danger"},Ge={class:"is-size-6 is-size-7-mobile"},Je={class:"is-family-primary has-text-grey"},Ke={key:0,class:"has-text-danger"},We={key:1,class:"has-text-warning"},Qe={key:2},Ze={key:0,class:"mt-2 is-size-7 is-pulled-right"},Xe={key:1,class:"mt-2 is-size-7 is-pulled-right"},Ye={key:0,class:"control"},ns={__name:"Import",setup(d){const E=pt("2fauth"),m=ht(),h=_t(),g=xt(),N=vt(),b=k(null),$=k(null),B=k(null),x=k(null),T=k(null),S=O(new H({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null})),z=O(new H({file:null,withSecret:!0})),I=O(new H({qrcode:null,withSecret:!0})),A=k(!1);p("twofaccounts.import.qr_code"),p("twofaccounts.import.plain_text");const c=k([]),y=k(!1),V=D(()=>c.value.filter(e=>e.imported==-1&&e.id>-2).length),U=D(()=>c.value.filter(e=>e.id===-1&&e.imported===-1).length),X=D(()=>c.value.filter(e=>e.imported===1).length);gt(A,e=>{var s;e==!1&&((s=b.value)==null||s.clearOTP())}),yt(()=>{g.migrationUri&&(L(g.migrationUri),g.migrationUri=null)});async function L(e){y.value=!0,await kt.migrate(e,{returnError:!0}).then(s=>{s.data.forEach(u=>{u.imported=-1,c.value.push(u)}),j(),x.value=T.value=null}).catch(s=>{m.alert({text:p(s.response.data.message)})}),y.value=!1}function Y(){var e;confirm(p("twofaccounts.confirm.discard_duplicates"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=c.value.filter(s=>s.id!==-1))}function tt(){var e;confirm(p("twofaccounts.confirm.discard_all"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=[])}function et(e){confirm(p("twofaccounts.confirm.discard"))&&c.value.splice(e,1)}async function st(){for(let e=0;e{c.value[e].imported=1,c.value[e].id=s.data.id,delete s.data.secret,N.items.push(s.data)}).catch(s=>{c.value[e].imported=0,c.value[e].id=0,c.value[e].errors=S.errors.flatten()})}function ot(e){S.fill(c.value[e]),A.value=!0,bt().then(()=>{b.value.show()})}function it(){z.clear(),y.value=!0,z.file=$.value.files[0],z.upload("/api/v1/twofaccounts/migration",{returnError:!0}).then(e=>{e.data.forEach(s=>{s.imported=-1,c.value.push(s)}),j()}).catch(e=>{e.response.status===422?e.response.data.errors.file==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function lt(){I.clear(),y.value=!0,I.qrcode=B.value.files[0],I.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{L(e.data.data)}).catch(e=>{e.response.status===422?e.response.data.errors.qrcode==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function j(){m.success({text:p("twofaccounts.import.x_valid_accounts_found",{count:V.value})})}function nt(){T.value=null,x.value?L(x.value):T.value=p("validation.required",{attribute:"Direct input"})}return(e,s)=>{const u=v("FontAwesomeIcon"),G=v("FieldError"),at=v("RouterLink"),rt=v("ButtonBackCloseCancel"),ct=v("VueFooter"),dt=v("ResponsiveWidthWrapper"),ut=v("modal");return n(),r("div",null,[a(dt,null,{default:w(()=>[t("h1",It,i(e.$t("twofaccounts.import.import")),1),!l(y)&&l(c).length==0?(n(),r("div",Vt,[t("div",Et,[t("p",Tt,i(e.$t("twofaccounts.import.import_legend")),1),t("p",null,i(e.$t("twofaccounts.import.import_legend_afterpart")),1)]),t("div",qt,[t("div",Nt,[t("div",Bt,[t("div",Lt,[t("div",Mt,[t("div",Ot,[t("div",Dt,[t("figure",Ht,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","qrcode"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Pt,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.qr_code")},null,8,Ut),t("p",Rt,i(e.$t("twofaccounts.import.supported_formats_for_qrcode_upload")),1)])]),l(I).errors.hasAny("qrcode")?(n(),P(G,{key:0,error:l(I).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):f("",!0)]),t("footer",jt,[a(at,{id:"btnCapture",to:{name:"capture"},class:"card-footer-item"},{default:w(()=>[_(i(e.$t("twofaccounts.import.scan")),1)]),_:1}),t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[0]||(s[0]=K(o=>l(B).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:lt,ref_key:"qrcodeInput",ref:B},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",Gt,[t("div",Jt,[t("div",Kt,[t("div",Wt,[t("div",Qt,[t("figure",Zt,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","file-lines"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Xt,[t("p",Yt,i(e.$t("twofaccounts.import.text_file")),1),t("p",te,i(e.$t("twofaccounts.import.supported_formats_for_file_upload")),1)])]),l(z).errors.hasAny("file")?(n(),P(G,{key:0,error:l(z).errors.get("file"),field:"file"},null,8,["error"])):f("",!0)]),t("footer",ee,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[1]||(s[1]=K(o=>l($).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"text/plain,application/json,text/csv,.2fas",onChange:it,ref_key:"fileInput",ref:$},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",se,[t("div",oe,[t("div",ie,[t("div",le,[t("div",ne,[t("figure",ae,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","align-left"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",re,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.direct_input")},null,8,ce),t("p",de,i(e.$t("twofaccounts.import.expected_format_for_direct_input")),1)])]),t("div",ue,[a(zt,{modelValue:l(x),"onUpdate:modelValue":s[2]||(s[2]=o=>J(x)?x.value=o:null),fieldError:l(T),fieldName:"payload",rows:"5",size:"is-small"},null,8,["modelValue","fieldError"])])]),t("footer",fe,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onClick:wt(nt,["stop"])},i(e.$t("commons.submit")),9,me)])])])])]),t("h2",pe,i(e.$t("twofaccounts.import.supported_migration_formats")),1),t("div",he,[a(u,{icon:["fas","fa-triangle-exclamation"],class:"has-text-warning-dark"}),_(" "+i(e.$t("twofaccounts.import.do_not_set_password_or_encryption")),1)]),t("table",_e,[ve,t("tbody",null,[t("tr",null,[ge,ye,t("td",null,[a(u,{icon:["fas","circle-check"]})]),ke]),t("tr",null,[we,t("td",null,[a(u,{icon:["fas","circle-check"]})]),be,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[$e,Ce,xe,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[Ae,t("td",null,[a(u,{icon:["fas","circle-check"]})]),Fe,Se]),t("tr",null,[ze,Ie,Ve,t("td",null,[a(u,{icon:["fas","circle-check"]})])])])])])):l(y)&&l(c).length===0?(n(),r("div",Ee,[a(Ct,{type:"fullscreen-overlay",isVisible:!0,message:"twofaccounts.import.parsing_data"},null,8,["message"])])):(n(),r("div",Te,[t("div",qe,[t("p",Ne,i(e.$t("twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import")),1),t("p",null,i(e.$t("twofaccounts.import.use_buttons_to_save_or_discard")),1)]),(n(!0),r(W,null,Q(l(c),(o,M)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[t("div",Be,[o.id>-2&&o.imported!==0?(n(),r("div",{key:0,class:"is-flex-grow-1 has-ellipsis is-clickable",onClick:F=>ot(M),title:e.$t("twofaccounts.import.generate_a_test_password")},[o.icon&&l(h).preferences.showAccountsIcons?(n(),r("img",{key:0,class:"import-icon",src:l(E).config.subdirectory+"/storage/icons/"+o.icon,alt:e.$t("twofaccounts.icon_for_account_x_at_service_y",{account:o.account,service:o.service})},null,8,Me)):f("",!0),_(" "+i(o.account),1)],8,Le)):(n(),r("div",Oe,i(o.account),1)),o.imported===-1?(n(),r("div",De,[a(l(q),null,{default:w(({mode:F})=>[t("button",{class:C(["button tag",{"is-dark has-text-grey-light":F=="dark"}]),onClick:ts=>et(M),title:e.$t("twofaccounts.import.discard_this_account")},[a(u,{icon:["fas","trash"]})],10,He)]),_:2},1024),o.id>-2?(n(),r("button",{key:0,class:"button tag is-link",onClick:F=>R(M),title:e.$t("twofaccounts.import.import_this_account")},i(e.$t("twofaccounts.import.to_import")),9,Pe)):f("",!0)])):(n(),r("div",Ue,[o.imported===1?(n(),r("span",Re,[_(i(e.$t("twofaccounts.import.imported"))+" ",1),a(u,{icon:["fas","check"]})])):(n(),r("span",je,[_(i(e.$t("twofaccounts.import.failure"))+" ",1),a(u,{icon:["fas","times"]})]))]))]),t("div",Ge,[t("div",Je,i(e.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",Ke,[a(u,{class:"mr-1",icon:["fas","times-circle"]}),_(i(o.secret),1)])):f("",!0),o.id===-1&&o.imported!==1&&!o.errors?(n(),r("div",We,[a(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),_(i(e.$t("twofaccounts.import.possible_duplicate")),1)])):f("",!0),o.errors?(n(),r("ul",Qe,[(n(!0),r(W,null,Q(o.errors,F=>(n(),r("li",{key:F,class:"has-text-danger"},i(F),1))),128))])):f("",!0)])]))),128)),l(V)>0?(n(),r("div",Ze,[l(U)?(n(),r("button",{key:0,onClick:s[3]||(s[3]=o=>Y()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_duplicates"))+" ("+i(l(U))+")",1)):f("",!0),t("button",{onClick:s[4]||(s[4]=o=>tt()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_all")),1)])):f("",!0),l(X)==l(c).length?(n(),r("div",Xe,[t("button",{onClick:s[5]||(s[5]=o=>c.value=[]),class:"has-text-grey button is-small is-ghost"},i(e.$t("commons.clear")),1)])):f("",!0)])),a(ct,{showButtons:!0},{default:w(()=>[l(V)>0?(n(),r("p",Ye,[t("button",{class:"button is-link is-rounded is-focus",onClick:st},[t("span",null,i(e.$t("twofaccounts.import.import_all"))+" ("+i(l(V))+")",1)])])):f("",!0),a(rt,{returnTo:{name:"accounts"},action:l(V)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),a(ut,{modelValue:l(A),"onUpdate:modelValue":s[9]||(s[9]=o=>J(A)?A.value=o:null)},{default:w(()=>[a($t,Z({ref_key:"otpDisplay",ref:b},l(S).data(),{onIncrementHotp:s[6]||(s[6]=()=>{}),onValidationError:s[7]||(s[7]=()=>{}),onPleaseCloseMe:s[8]||(s[8]=o=>A.value=!1)}),null,16)]),_:1},8,["modelValue"])])}}};export{ns as default}; +import{Z as ft,e as v,f as n,g as r,z as mt,m as a,l as f,h as t,i as l,n as C,V as Z,k as P,Q as pt,b as ht,a as _t,c as vt,r as k,d as O,I as p,v as D,x as gt,o as yt,K as kt,p as w,E as J,t as i,U as q,j as _,w as K,D as wt,F as W,G as Q,P as bt}from"./app-60af1d1a.js";import{F as H}from"./Form-0a788c90.js";import{_ as $t}from"./OtpDisplay-f582bb88.js";import{S as Ct}from"./Spinner-bfa27d3a.js";import{u as xt}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const At=["for","innerHTML"],Ft=["disabled","id","value","placeholder","maxlength"],St=["innerHTML"],zt=Object.assign({inheritAttrs:!1},{__name:"FormTextarea",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],placeholder:{type:String,default:""},help:{type:String,default:""},size:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null},isIndented:Boolean},setup(d){const E=d,{inputId:m}=ft(E.inputType,E.fieldName);return(h,g)=>{const N=v("FontAwesomeIcon"),b=v("FieldError");return n(),r("div",{class:C(["mb-3",{"pt-3":d.hasOffset,"is-flex":d.isIndented}])},[d.isIndented?(n(),r("div",{key:0,class:"mx-2 pr-1",style:mt({opacity:d.isDisabled?"0.5":"1"})},[a(N,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):f("",!0),t("div",{class:C(["field",{"is-flex-grow-5":d.isIndented}])},[t("label",{for:l(m),class:"label",innerHTML:h.$t(d.label)},null,8,At),t("div",{class:C(["control",{"has-icons-left":h.leftIcon,"has-icons-right":h.rightIcon}])},[t("textarea",Z({disabled:d.isDisabled,id:l(m),class:["textarea",d.size],value:d.modelValue,placeholder:d.placeholder},h.$attrs,{onInput:g[0]||(g[0]=$=>h.$emit("update:modelValue",$.target.value)),onChange:g[1]||(g[1]=$=>h.$emit("change:modelValue",$.target.value)),maxlength:d.maxLength}),null,16,Ft)],2),d.fieldError!=null?(n(),P(b,{key:0,error:d.fieldError,field:d.fieldName},null,8,["error","field"])):f("",!0),d.help?(n(),r("p",{key:1,class:"help",innerHTML:h.$t(d.help)},null,8,St)):f("",!0)],2)],2)}}}),It={class:"title has-text-grey-dark"},Vt={key:0},Et={class:"block is-size-7-mobile"},Tt={class:"mb-2"},qt={class:"columns"},Nt={class:"column"},Bt={class:"block"},Lt={class:"card"},Mt={class:"card-content"},Ot={class:"media"},Dt={class:"media-left"},Ht={class:"image is-32x32"},Pt={class:"media-content"},Ut=["innerHTML"],Rt={class:"subtitle is-6 is-size-7-mobile"},jt={class:"card-footer"},Gt={class:"block"},Jt={class:"card"},Kt={class:"card-content"},Wt={class:"media"},Qt={class:"media-left"},Zt={class:"image is-32x32"},Xt={class:"media-content"},Yt={class:"title is-5 has-text-grey"},te={class:"subtitle is-6 is-size-7-mobile"},ee={class:"card-footer"},se={class:"block"},oe={class:"card"},ie={class:"card-content"},le={class:"media"},ne={class:"media-left"},ae={class:"image is-32x32"},re={class:"media-content"},ce=["innerHTML"],de={class:"subtitle is-6 is-size-7-mobile"},ue={class:"content"},fe={class:"card-footer"},me=["onClick"],pe={class:"title is-5 has-text-grey-dark"},he={class:"block is-size-7-mobile"},_e={class:"table is-size-7-mobile is-fullwidth"},ve=t("thead",null,[t("tr",null,[t("th"),t("th",null,"Plain text"),t("th",null,"QR code"),t("th",null,"JSON")])],-1),ge=t("th",null,"Google Authenticator",-1),ye=t("td",null,null,-1),ke=t("td",null,null,-1),we=t("th",null,"Aegis Auth",-1),be=t("td",null,null,-1),$e=t("th",null,"2FAS auth",-1),Ce=t("td",null,null,-1),xe=t("td",null,null,-1),Ae=t("th",null,"FreeOTP+",-1),Fe=t("td",null,null,-1),Se=t("td",null,null,-1),ze=t("th",null,"2FAuth",-1),Ie=t("td",null,null,-1),Ve=t("td",null,null,-1),Ee={key:1},Te={key:2},qe={class:"block is-size-7-mobile"},Ne={class:"mb-2"},Be={class:"is-flex is-justify-content-space-between"},Le=["onClick","title"],Me=["src","alt"],Oe={key:1,class:"is-flex-grow-1 has-ellipsis"},De={key:2,class:"tags is-flex-wrap-nowrap"},He=["onClick","title"],Pe=["onClick","title"],Ue={key:3,class:"has-nowrap"},Re={key:0,class:"has-text-success"},je={key:1,class:"has-text-danger"},Ge={class:"is-size-6 is-size-7-mobile"},Je={class:"is-family-primary has-text-grey"},Ke={key:0,class:"has-text-danger"},We={key:1,class:"has-text-warning"},Qe={key:2},Ze={key:0,class:"mt-2 is-size-7 is-pulled-right"},Xe={key:1,class:"mt-2 is-size-7 is-pulled-right"},Ye={key:0,class:"control"},ns={__name:"Import",setup(d){const E=pt("2fauth"),m=ht(),h=_t(),g=xt(),N=vt(),b=k(null),$=k(null),B=k(null),x=k(null),T=k(null),S=O(new H({service:"",account:"",otp_type:"",icon:"",secret:"",algorithm:"",digits:null,counter:null,period:null})),z=O(new H({file:null,withSecret:!0})),I=O(new H({qrcode:null,withSecret:!0})),A=k(!1);p("twofaccounts.import.qr_code"),p("twofaccounts.import.plain_text");const c=k([]),y=k(!1),V=D(()=>c.value.filter(e=>e.imported==-1&&e.id>-2).length),U=D(()=>c.value.filter(e=>e.id===-1&&e.imported===-1).length),X=D(()=>c.value.filter(e=>e.imported===1).length);gt(A,e=>{var s;e==!1&&((s=b.value)==null||s.clearOTP())}),yt(()=>{g.migrationUri&&(L(g.migrationUri),g.migrationUri=null)});async function L(e){y.value=!0,await kt.migrate(e,{returnError:!0}).then(s=>{s.data.forEach(u=>{u.imported=-1,c.value.push(u)}),j(),x.value=T.value=null}).catch(s=>{m.alert({text:p(s.response.data.message)})}),y.value=!1}function Y(){var e;confirm(p("twofaccounts.confirm.discard_duplicates"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=c.value.filter(s=>s.id!==-1))}function tt(){var e;confirm(p("twofaccounts.confirm.discard_all"))&&(m.clear(),(e=b.value)==null||e.clearOTP(),c.value=[])}function et(e){confirm(p("twofaccounts.confirm.discard"))&&c.value.splice(e,1)}async function st(){for(let e=0;e{c.value[e].imported=1,c.value[e].id=s.data.id,delete s.data.secret,N.items.push(s.data)}).catch(s=>{c.value[e].imported=0,c.value[e].id=0,c.value[e].errors=S.errors.flatten()})}function ot(e){S.fill(c.value[e]),A.value=!0,bt().then(()=>{b.value.show()})}function it(){z.clear(),y.value=!0,z.file=$.value.files[0],z.upload("/api/v1/twofaccounts/migration",{returnError:!0}).then(e=>{e.data.forEach(s=>{s.imported=-1,c.value.push(s)}),j()}).catch(e=>{e.response.status===422?e.response.data.errors.file==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function lt(){I.clear(),y.value=!0,I.qrcode=B.value.files[0],I.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{L(e.data.data)}).catch(e=>{e.response.status===422?e.response.data.errors.qrcode==null&&m.alert({text:p("errors.invalid_2fa_data")}):m.alert({text:e.response.data.message})}),y.value=!1}function j(){m.success({text:p("twofaccounts.import.x_valid_accounts_found",{count:V.value})})}function nt(){T.value=null,x.value?L(x.value):T.value=p("validation.required",{attribute:"Direct input"})}return(e,s)=>{const u=v("FontAwesomeIcon"),G=v("FieldError"),at=v("RouterLink"),rt=v("ButtonBackCloseCancel"),ct=v("VueFooter"),dt=v("ResponsiveWidthWrapper"),ut=v("modal");return n(),r("div",null,[a(dt,null,{default:w(()=>[t("h1",It,i(e.$t("twofaccounts.import.import")),1),!l(y)&&l(c).length==0?(n(),r("div",Vt,[t("div",Et,[t("p",Tt,i(e.$t("twofaccounts.import.import_legend")),1),t("p",null,i(e.$t("twofaccounts.import.import_legend_afterpart")),1)]),t("div",qt,[t("div",Nt,[t("div",Bt,[t("div",Lt,[t("div",Mt,[t("div",Ot,[t("div",Dt,[t("figure",Ht,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","qrcode"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Pt,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.qr_code")},null,8,Ut),t("p",Rt,i(e.$t("twofaccounts.import.supported_formats_for_qrcode_upload")),1)])]),l(I).errors.hasAny("qrcode")?(n(),P(G,{key:0,error:l(I).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):f("",!0)]),t("footer",jt,[a(at,{id:"btnCapture",to:{name:"capture"},class:"card-footer-item"},{default:w(()=>[_(i(e.$t("twofaccounts.import.scan")),1)]),_:1}),t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[0]||(s[0]=K(o=>l(B).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:lt,ref_key:"qrcodeInput",ref:B},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",Gt,[t("div",Jt,[t("div",Kt,[t("div",Wt,[t("div",Qt,[t("figure",Zt,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","file-lines"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",Xt,[t("p",Yt,i(e.$t("twofaccounts.import.text_file")),1),t("p",te,i(e.$t("twofaccounts.import.supported_formats_for_file_upload")),1)])]),l(z).errors.hasAny("file")?(n(),P(G,{key:0,error:l(z).errors.get("file"),field:"file"},null,8,["error"])):f("",!0)]),t("footer",ee,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onKeyup:s[1]||(s[1]=K(o=>l($).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"text/plain,application/json,text/csv,.2fas",onChange:it,ref_key:"fileInput",ref:$},null,544),_(" "+i(e.$t("twofaccounts.import.upload")),1)],32)])])]),t("div",se,[t("div",oe,[t("div",ie,[t("div",le,[t("div",ne,[t("figure",ae,[a(l(q),null,{default:w(({mode:o})=>[a(u,{icon:["fas","align-left"],size:"2x",class:C(o=="dark"?"has-text-grey-darker":"has-text-grey-lighter")},null,8,["class"])]),_:1})])]),t("div",re,[t("p",{class:"title is-5 has-text-grey",innerHTML:e.$t("twofaccounts.import.direct_input")},null,8,ce),t("p",de,i(e.$t("twofaccounts.import.expected_format_for_direct_input")),1)])]),t("div",ue,[a(zt,{modelValue:l(x),"onUpdate:modelValue":s[2]||(s[2]=o=>J(x)?x.value=o:null),fieldError:l(T),fieldName:"payload",rows:"5",size:"is-small"},null,8,["modelValue","fieldError"])])]),t("footer",fe,[t("a",{role:"button",tabindex:"0",class:"card-footer-item is-relative",onClick:wt(nt,["stop"])},i(e.$t("commons.submit")),9,me)])])])])]),t("h2",pe,i(e.$t("twofaccounts.import.supported_migration_formats")),1),t("div",he,[a(u,{icon:["fas","fa-triangle-exclamation"],class:"has-text-warning-dark"}),_(" "+i(e.$t("twofaccounts.import.do_not_set_password_or_encryption")),1)]),t("table",_e,[ve,t("tbody",null,[t("tr",null,[ge,ye,t("td",null,[a(u,{icon:["fas","circle-check"]})]),ke]),t("tr",null,[we,t("td",null,[a(u,{icon:["fas","circle-check"]})]),be,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[$e,Ce,xe,t("td",null,[a(u,{icon:["fas","circle-check"]})])]),t("tr",null,[Ae,t("td",null,[a(u,{icon:["fas","circle-check"]})]),Fe,Se]),t("tr",null,[ze,Ie,Ve,t("td",null,[a(u,{icon:["fas","circle-check"]})])])])])])):l(y)&&l(c).length===0?(n(),r("div",Ee,[a(Ct,{type:"fullscreen-overlay",isVisible:!0,message:"twofaccounts.import.parsing_data"},null,8,["message"])])):(n(),r("div",Te,[t("div",qe,[t("p",Ne,i(e.$t("twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import")),1),t("p",null,i(e.$t("twofaccounts.import.use_buttons_to_save_or_discard")),1)]),(n(!0),r(W,null,Q(l(c),(o,M)=>(n(),r("div",{key:o.name,class:"group-item is-size-5 is-size-6-mobile"},[t("div",Be,[o.id>-2&&o.imported!==0?(n(),r("div",{key:0,class:"is-flex-grow-1 has-ellipsis is-clickable",onClick:F=>ot(M),title:e.$t("twofaccounts.import.generate_a_test_password")},[o.icon&&l(h).preferences.showAccountsIcons?(n(),r("img",{key:0,class:"import-icon",src:l(E).config.subdirectory+"/storage/icons/"+o.icon,alt:e.$t("twofaccounts.icon_for_account_x_at_service_y",{account:o.account,service:o.service})},null,8,Me)):f("",!0),_(" "+i(o.account),1)],8,Le)):(n(),r("div",Oe,i(o.account),1)),o.imported===-1?(n(),r("div",De,[a(l(q),null,{default:w(({mode:F})=>[t("button",{class:C(["button tag",{"is-dark has-text-grey-light":F=="dark"}]),onClick:ts=>et(M),title:e.$t("twofaccounts.import.discard_this_account")},[a(u,{icon:["fas","trash"]})],10,He)]),_:2},1024),o.id>-2?(n(),r("button",{key:0,class:"button tag is-link",onClick:F=>R(M),title:e.$t("twofaccounts.import.import_this_account")},i(e.$t("twofaccounts.import.to_import")),9,Pe)):f("",!0)])):(n(),r("div",Ue,[o.imported===1?(n(),r("span",Re,[_(i(e.$t("twofaccounts.import.imported"))+" ",1),a(u,{icon:["fas","check"]})])):(n(),r("span",je,[_(i(e.$t("twofaccounts.import.failure"))+" ",1),a(u,{icon:["fas","times"]})]))]))]),t("div",Ge,[t("div",Je,i(e.$t("twofaccounts.import.issuer"))+": "+i(o.service),1),o.id===-2?(n(),r("div",Ke,[a(u,{class:"mr-1",icon:["fas","times-circle"]}),_(i(o.secret),1)])):f("",!0),o.id===-1&&o.imported!==1&&!o.errors?(n(),r("div",We,[a(u,{class:"mr-1",icon:["fas","exclamation-circle"]}),_(i(e.$t("twofaccounts.import.possible_duplicate")),1)])):f("",!0),o.errors?(n(),r("ul",Qe,[(n(!0),r(W,null,Q(o.errors,F=>(n(),r("li",{key:F,class:"has-text-danger"},i(F),1))),128))])):f("",!0)])]))),128)),l(V)>0?(n(),r("div",Ze,[l(U)?(n(),r("button",{key:0,onClick:s[3]||(s[3]=o=>Y()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_duplicates"))+" ("+i(l(U))+")",1)):f("",!0),t("button",{onClick:s[4]||(s[4]=o=>tt()),class:"has-text-grey button is-small is-ghost"},i(e.$t("twofaccounts.import.discard_all")),1)])):f("",!0),l(X)==l(c).length?(n(),r("div",Xe,[t("button",{onClick:s[5]||(s[5]=o=>c.value=[]),class:"has-text-grey button is-small is-ghost"},i(e.$t("commons.clear")),1)])):f("",!0)])),a(ct,{showButtons:!0},{default:w(()=>[l(V)>0?(n(),r("p",Ye,[t("button",{class:"button is-link is-rounded is-focus",onClick:st},[t("span",null,i(e.$t("twofaccounts.import.import_all"))+" ("+i(l(V))+")",1)])])):f("",!0),a(rt,{returnTo:{name:"accounts"},action:l(V)>0?"cancel":"close"},null,8,["action"])]),_:1})]),_:1}),a(ut,{modelValue:l(A),"onUpdate:modelValue":s[9]||(s[9]=o=>J(A)?A.value=o:null)},{default:w(()=>[a($t,Z({ref_key:"otpDisplay",ref:b},l(S).data(),{onIncrementHotp:s[6]||(s[6]=()=>{}),onValidationError:s[7]||(s[7]=()=>{}),onPleaseCloseMe:s[8]||(s[8]=o=>A.value=!1)}),null,16)]),_:1},8,["modelValue"])])}}};export{ns as default}; diff --git a/public/build/assets/Login-09d93a22.js b/public/build/assets/Login-0aa69f71.js similarity index 97% rename from public/build/assets/Login-09d93a22.js rename to public/build/assets/Login-0aa69f71.js index 8ccd1311..6a1b697d 100644 --- a/public/build/assets/Login-09d93a22.js +++ b/public/build/assets/Login-0aa69f71.js @@ -1 +1 @@ -import{Q as N,u as O,a as T,b as D,R as C,a2 as M,d as j,r as G,e as _,f as o,g as u,i as t,k as L,p as f,m as n,F as H,h as l,t as a,D as B,j as r,w as I,l as d,I as k}from"./app-94c6def1.js";import{F as U}from"./Form-88ba26a4.js";import{w as P}from"./webauthnService-d9fc6500.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const q={class:"field"},Q=["onSubmit"],z={class:"nav-links"},J={key:0},X=["onKeyup"],Y={key:1,class:"mt-4"},Z={key:2,class:"columns mt-4 is-variable is-1"},x={class:"column is-narrow py-1"},ee={class:"column py-1"},te={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/openid"},se={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/github"},ie=["innerHTML"],ae=["innerHTML"],oe=["onSubmit"],ne={class:"nav-links"},le=["onKeyup","aria-label"],re={key:0,class:"mt-4"},ue={key:1,class:"columns mt-4 is-variable is-1"},de={class:"column is-narrow py-1"},ce={class:"column py-1"},me={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/openid"},he={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/github"},be={__name:"Login",setup(_e){const c=N("2fauth"),S=O(),p=T(),h=D(),g=C(),v=p.preferences.useWebauthnOnly?!0:M(c.prefix+"showWebauthnForm",!1),i=j(new U({email:"",password:""})),F=G(!1);function b(){i.clear(),v.value=!v.value}function A(e){h.clear(),i.post("/user/login",{returnError:!0}).then(async s=>{await p.loginAs({id:s.data.id,name:s.data.name,email:s.data.email,oauth_provider:s.data.oauth_provider,preferences:s.data.preferences,isAdmin:s.data.is_admin}),S.push({name:"accounts"})}).catch(s=>{s.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):s.response.status!==422&&h.error(s)})}function R(){h.clear(),i.clear(),F.value=!0,P.authenticate(i.email).then(async e=>{await p.loginAs({id:e.data.id,name:e.data.name,email:e.data.email,oauth_provider:e.data.oauth_provider,preferences:e.data.preferences,isAdmin:e.data.is_admin}),S.push({name:"accounts"})}).catch(e=>{"webauthn"in e?e.name=="is-warning"?h.warn({text:k(e.message)}):h.alert({text:k(e.message)}):e.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):e.response.status==422?i.errors.set(i.extractErrors(e.response)):h.error(e)}).finally(()=>{F.value=!1})}return(e,s)=>{const $=_("FormField"),V=_("FormButtons"),y=_("RouterLink"),w=_("FontAwesomeIcon"),W=_("FormWrapper"),E=_("FormPasswordField"),K=_("VueFooter");return o(),u(H,null,[t(v)?(o(),L(W,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[l("div",q,a(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),l("form",{id:"frmWebauthnLogin",onSubmit:B(R,["prevent"]),onKeydown:s[1]||(s[1]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[0]||(s[0]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(F),caption:"commons.continue",submitId:"btnContinue"},null,8,["isBusy"])],40,Q),l("div",z,[l("p",null,[r(a(e.$t("auth.webauthn.lost_your_device"))+"  ",1),n(y,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),t(p).preferences.useWebauthnOnly?d("",!0):(o(),u("p",J,[r(a(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0"},a(e.$t("auth.login_and_password")),41,X)])),t(g).disableRegistration==!1?(o(),u("p",Y,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",Z,[l("div",x,a(e.$t("auth.or_continue_with")),1),l("div",ee,[t(c).config.sso.openid?(o(),u("a",te,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",se,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})):(o(),L(W,{key:1,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(c).isDemoApp?(o(),u("div",{key:0,class:"notification is-info has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_demo_app_use_those_credentials")},null,8,ie)):d("",!0),t(c).isTestingApp?(o(),u("div",{key:1,class:"notification is-warning has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_testing_app_use_those_credentials")},null,8,ae)):d("",!0),l("form",{id:"frmLegacyLogin",onSubmit:B(A,["prevent"]),onKeydown:s[4]||(s[4]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[2]||(s[2]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(E,{modelValue:t(i).password,"onUpdate:modelValue":s[3]||(s[3]=m=>t(i).password=m),fieldName:"password",fieldError:t(i).errors.get("password"),label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(i).isBusy,caption:"auth.sign_in",submitId:"btnSignIn"},null,8,["isBusy"])],40,oe),l("div",ne,[l("p",null,[r(a(e.$t("auth.forms.forgot_your_password"))+"  ",1),n(y,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":e.$t("auth.forms.reset_your_password")},{default:f(()=>[r(a(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),l("p",null,[r(a(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithWebauthn",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0","aria-label":e.$t("auth.sign_in_using_security_device")},a(e.$t("auth.webauthn.security_device")),41,le)]),t(g).disableRegistration==!1?(o(),u("p",re,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",ue,[l("div",de,a(e.$t("auth.or_continue_with")),1),l("div",ce,[t(c).config.sso.openid?(o(),u("a",me,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",he,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})),n(K)],64)}}};export{be as default}; +import{Q as N,u as O,a as T,b as D,R as C,a2 as M,d as j,r as G,e as _,f as o,g as u,i as t,k as L,p as f,m as n,F as H,h as l,t as a,D as B,j as r,w as I,l as d,I as k}from"./app-60af1d1a.js";import{F as U}from"./Form-0a788c90.js";import{w as P}from"./webauthnService-1f4ca5dc.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const q={class:"field"},Q=["onSubmit"],z={class:"nav-links"},J={key:0},X=["onKeyup"],Y={key:1,class:"mt-4"},Z={key:2,class:"columns mt-4 is-variable is-1"},x={class:"column is-narrow py-1"},ee={class:"column py-1"},te={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/openid"},se={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small ml-2",href:"/socialite/redirect/github"},ie=["innerHTML"],ae=["innerHTML"],oe=["onSubmit"],ne={class:"nav-links"},le=["onKeyup","aria-label"],re={key:0,class:"mt-4"},ue={key:1,class:"columns mt-4 is-variable is-1"},de={class:"column is-narrow py-1"},ce={class:"column py-1"},me={key:0,id:"lnkSignWithOpenID",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/openid"},he={key:1,id:"lnkSignWithGithub",class:"button is-link is-outlined is-small mr-2",href:"/socialite/redirect/github"},be={__name:"Login",setup(_e){const c=N("2fauth"),S=O(),p=T(),h=D(),g=C(),v=p.preferences.useWebauthnOnly?!0:M(c.prefix+"showWebauthnForm",!1),i=j(new U({email:"",password:""})),F=G(!1);function b(){i.clear(),v.value=!v.value}function A(e){h.clear(),i.post("/user/login",{returnError:!0}).then(async s=>{await p.loginAs({id:s.data.id,name:s.data.name,email:s.data.email,oauth_provider:s.data.oauth_provider,preferences:s.data.preferences,isAdmin:s.data.is_admin}),S.push({name:"accounts"})}).catch(s=>{s.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):s.response.status!==422&&h.error(s)})}function R(){h.clear(),i.clear(),F.value=!0,P.authenticate(i.email).then(async e=>{await p.loginAs({id:e.data.id,name:e.data.name,email:e.data.email,oauth_provider:e.data.oauth_provider,preferences:e.data.preferences,isAdmin:e.data.is_admin}),S.push({name:"accounts"})}).catch(e=>{"webauthn"in e?e.name=="is-warning"?h.warn({text:k(e.message)}):h.alert({text:k(e.message)}):e.response.status===401?h.alert({text:k("auth.forms.authentication_failed"),duration:1e4}):e.response.status==422?i.errors.set(i.extractErrors(e.response)):h.error(e)}).finally(()=>{F.value=!1})}return(e,s)=>{const $=_("FormField"),V=_("FormButtons"),y=_("RouterLink"),w=_("FontAwesomeIcon"),W=_("FormWrapper"),E=_("FormPasswordField"),K=_("VueFooter");return o(),u(H,null,[t(v)?(o(),L(W,{key:0,title:"auth.forms.webauthn_login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[l("div",q,a(e.$t("auth.webauthn.use_security_device_to_sign_in")),1),l("form",{id:"frmWebauthnLogin",onSubmit:B(R,["prevent"]),onKeydown:s[1]||(s[1]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[0]||(s[0]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(F),caption:"commons.continue",submitId:"btnContinue"},null,8,["isBusy"])],40,Q),l("div",z,[l("p",null,[r(a(e.$t("auth.webauthn.lost_your_device"))+"  ",1),n(y,{id:"lnkRecoverAccount",to:{name:"webauthn.lost"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.webauthn.recover_your_account")),1)]),_:1},8,["to"])]),t(p).preferences.useWebauthnOnly?d("",!0):(o(),u("p",J,[r(a(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithLegacy",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0"},a(e.$t("auth.login_and_password")),41,X)])),t(g).disableRegistration==!1?(o(),u("p",Y,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",Z,[l("div",x,a(e.$t("auth.or_continue_with")),1),l("div",ee,[t(c).config.sso.openid?(o(),u("a",te,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",se,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})):(o(),L(W,{key:1,title:"auth.forms.login",punchline:"auth.welcome_to_2fauth"},{default:f(()=>[t(c).isDemoApp?(o(),u("div",{key:0,class:"notification is-info has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_demo_app_use_those_credentials")},null,8,ie)):d("",!0),t(c).isTestingApp?(o(),u("div",{key:1,class:"notification is-warning has-text-centered is-radiusless",innerHTML:e.$t("auth.forms.welcome_to_testing_app_use_those_credentials")},null,8,ae)):d("",!0),l("form",{id:"frmLegacyLogin",onSubmit:B(A,["prevent"]),onKeydown:s[4]||(s[4]=m=>t(i).onKeydown(m))},[n($,{modelValue:t(i).email,"onUpdate:modelValue":s[2]||(s[2]=m=>t(i).email=m),fieldName:"email",fieldError:t(i).errors.get("email"),inputType:"email",label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),n(E,{modelValue:t(i).password,"onUpdate:modelValue":s[3]||(s[3]=m=>t(i).password=m),fieldName:"password",fieldError:t(i).errors.get("password"),label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(V,{isBusy:t(i).isBusy,caption:"auth.sign_in",submitId:"btnSignIn"},null,8,["isBusy"])],40,oe),l("div",ne,[l("p",null,[r(a(e.$t("auth.forms.forgot_your_password"))+"  ",1),n(y,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":e.$t("auth.forms.reset_your_password")},{default:f(()=>[r(a(e.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])]),l("p",null,[r(a(e.$t("auth.sign_in_using"))+"  ",1),l("a",{id:"lnkSignWithWebauthn",role:"button",class:"is-link",onKeyup:I(b,["enter"]),onClick:b,tabindex:"0","aria-label":e.$t("auth.sign_in_using_security_device")},a(e.$t("auth.webauthn.security_device")),41,le)]),t(g).disableRegistration==!1?(o(),u("p",re,[r(a(e.$t("auth.forms.dont_have_account_yet"))+"  ",1),n(y,{id:"lnkRegister",to:{name:"register"},class:"is-link"},{default:f(()=>[r(a(e.$t("auth.register")),1)]),_:1})])):d("",!0),t(g).enableSso&&Object.values(t(c).config.sso).includes(!0)?(o(),u("div",ue,[l("div",de,a(e.$t("auth.or_continue_with")),1),l("div",ce,[t(c).config.sso.openid?(o(),u("a",me,[r(" OpenID"),n(w,{class:"ml-2",icon:["fab","openid"]})])):d("",!0),t(c).config.sso.github?(o(),u("a",he,[r(" Github"),n(w,{class:"ml-2",icon:["fab","github-alt"]})])):d("",!0)])])):d("",!0)])]),_:1})),n(K)],64)}}};export{be as default}; diff --git a/public/build/assets/Manage-0bf446dd.js b/public/build/assets/Manage-002185c7.js similarity index 98% rename from public/build/assets/Manage-0bf446dd.js rename to public/build/assets/Manage-002185c7.js index a02a4341..90b14e05 100644 --- a/public/build/assets/Manage-0bf446dd.js +++ b/public/build/assets/Manage-002185c7.js @@ -1 +1 @@ -import{_ as j}from"./CopyButton-f30d9b07.js";import{b as q,u as W,_ as A,a as D,r as v,o as G,J as u,e as p,f as o,k as J,p as h,h as s,t as n,i,g as r,m as c,n as m,j as y,U as b,l as f,F as Y,G as K,I as d,P as C}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const O={class:"title has-text-grey-dark mb-6"},Q={key:0,class:"has-text-centered"},X={class:"is-size-4"},Z={key:1},ee={class:"has-text-weight-light has-text-grey-dark is-pulled-right"},se={class:"subtitle is-6 block"},te={key:0,class:"notification is-dark is-size-7-mobile has-text-centered"},ie={class:"block"},ne={class:"title is-4 has-text-grey-light"},ae={class:"block"},oe={class:"list-item is-size-6 is-size-6-mobile has-text-grey"},re={class:"mb-3 is-flex is-justify-content-space-between"},le={class:"has-text-weight-bold"},de={class:"tags ml-3 is-right"},ce=["title"],_e=["title"],ue={class:"is-size-7 is-size-7-mobile has-text-grey-dark"},he=["innerHTML"],me=["innerHTML"],fe=["innerHTML"],pe=["innerHTML"],ke={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},be={class:"has-text-weight-bold"},ge={class:"is-block is-family-primary is-size-7 is-size-7-mobile has-text-grey-dark"},ve={key:0},ye={class:"tags ml-3 is-right"},we=["title"],$e={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},ze={class:"has-text-weight-bold"},xe={class:"is-block is-size-7 is-size-7-mobile has-text-grey-dark"},Ce={key:0},Te={class:"tags ml-3 is-right"},Me=["title"],Be={class:"title is-4 has-text-grey-light"},Fe={class:"about-debug box is-family-monospace is-size-7"},Pe=["value"],Ue={class:"has-text-grey"},Ve={class:"title is-4 has-text-grey-light"},Le={class:"block"},He={class:"is-size-6 is-size-7-mobile"},Ee={class:"title is-4 has-text-danger"},Ne={class:"is-left-bordered-danger"},Ie={class:"block is-size-6 is-size-7-mobile"},Re={class:"is-block has-text-grey has-text-weight-bold"},qe={__name:"Manage",props:{userId:[Number,String]},setup(T){const M=T,l=q(),B=W();A();const w=D(),g=v(!1),t=v(null),$=v(null);G(async()=>{await F()});async function F(){g.value=!0,u.getById(M.userId,{returnError:!0}).then(e=>{t.value=e.data}).catch(e=>{l.error(e)}).finally(()=>{g.value=!1})}async function P(){if(!k())return!1;confirm(d("admin.confirm.purge_password_reset_request"))===!0&&(await u.resendPasswordEmail(t.value.info.id),t.value.password_reset=null)}async function U(){if(!k())return!1;confirm(d("admin.confirm.request_password_reset"))===!0&&u.resetPassword(t.value.info.id,{returnError:!0}).then(e=>{t.value=e.data,l.success({text:d("admin.password_successfully_reset")})}).catch(e=>{e.response.status===400?l.alert({text:e.response.data.reason}):l.error(e)})}function V(e){if(!confirm(d("admin.confirm.change_admin_role"))){C().then(()=>{t.value.info.is_admin=!e});return}if(e===!1&&t.value.info.id===w.id&&!confirm(d("admin.confirm.demote_own_account"))){C().then(()=>{t.value.info.is_admin=!0});return}u.promote(t.value.info.id,{is_admin:e}).then(_=>{t.value.info.is_admin=_.data.info.is_admin,l.success({text:d("admin.user_role_updated")})}).catch(_=>{l.error(_)})}function L(){if(!k())return!1;confirm(d("admin.confirm.delete_account"))&&u.delete(t.value.info.id,{returnError:!0}).then(e=>{l.success({text:d("auth.forms.user_account_successfully_deleted")}),B.push({name:"admin.users"})}).catch(e=>{e.response.status===403?l.alert({text:e.response.data.message}):l.error(e.response)})}function H(){if(!k())return!1;u.revokePATs(t.value.info.id).then(e=>{t.value.valid_personal_access_tokens=0,l.success({text:d("admin.pats_succesfully_revoked")})})}function k(){return!(t.value.info.id===w.id&&!confirm(d("admin.confirm.edit_own_account")))}return(e,_)=>{const E=p("FontAwesomeIcon"),N=p("FormCheckbox"),I=p("ButtonBackCloseCancel"),R=p("VueFooter"),S=p("ResponsiveWidthWrapper");return o(),J(S,null,{default:h(()=>{var z;return[s("h1",O,n(e.$t("admin.user_management")),1),i(g)||!i(t)?(o(),r("div",Q,[s("span",X,[c(E,{icon:["fas","spinner"],spin:""})])])):(o(),r("div",Z,[s("div",{class:m(["mb-6",i(t).info.is_admin?"is-left-bordered-warning":"is-left-bordered-link"])},[c(i(b),null,{default:h(({mode:a})=>[s("p",{class:m(["title is-4",{"has-text-grey-lighter":a=="dark"}])},[s("span",ee,"#"+n(i(t).info.id),1),y(n(i(t).info.name),1)],2)]),_:1}),s("p",se,n(i(t).info.email),1)],2),i(t).info.oauth_provider?(o(),r("div",te,n(e.$t("admin.account_bound_to_x_via_oauth",{provider:i(t).info.oauth_provider})),1)):f("",!0),s("div",ie,[c(N,{modelValue:i(t).info.is_admin,"onUpdate:modelValue":[_[0]||(_[0]=a=>i(t).info.is_admin=a),_[1]||(_[1]=a=>V(a===!0))],fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"])]),s("h2",ne,n(e.$t("admin.access")),1),s("div",ae,[s("div",oe,[s("div",re,[s("div",null,[s("span",le,n(e.$t("auth.forms.password")),1)]),s("div",null,[s("div",de,[c(i(b),null,{default:h(({mode:a})=>[i(t).password_reset?(o(),r("button",{key:0,class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:P,title:e.$t("admin.resend_email_title")},n(e.$t("admin.resend_email")),11,ce)):f("",!0),s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:U,title:e.$t("admin.reset_password_title")},n(e.$t("admin.reset_password")),11,_e)]),_:1})])])]),s("div",ue,[i(t).password_reset===0?(o(),r("span",{key:0,innerHTML:e.$t("admin.password_request_expired"),class:"is-block block"},null,8,he)):i(t).password_reset?(o(),r("span",{key:1,innerHTML:e.$t("admin.password_requested_on_t",{datetime:i(t).password_reset}),class:"is-block block"},null,8,me)):f("",!0),i(t).password_reset?(o(),r("span",{key:2,innerHTML:e.$t("admin.resend_email_help"),class:"is-block block"},null,8,fe)):f("",!0),s("span",{innerHTML:e.$t("admin.reset_password_help"),class:"is-block block"},null,8,pe)])]),s("div",ke,[s("div",null,[s("span",be,n(e.$t("settings.personal_access_tokens")),1),s("span",ge,n(e.$t("admin.user_has_x_active_pat",{count:i(t).valid_personal_access_tokens})),1)]),i(t).valid_personal_access_tokens>0?(o(),r("div",ve,[s("div",ye,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:H,title:e.$t("admin.revoke_all_pat_for_user")},n(e.$t("settings.revoke")),11,we)]),_:1})])])):f("",!0)]),s("div",$e,[s("div",null,[s("span",ze,n(e.$t("auth.webauthn.security_devices")),1),s("span",xe,n(e.$t("admin.user_has_x_security_devices",{count:i(t).webauthn_credentials})),1)]),i(t).webauthn_credentials>0?(o(),r("div",Ce,[s("div",Te,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),title:e.$t("admin.revoke_all_devices_for_user")},n(e.$t("settings.revoke")),11,Me)]),_:1})])])):f("",!0)])]),s("h2",Be,n(e.$t("settings.preferences")),1),s("div",Fe,[c(j,{id:"btnCopyEnvVars",token:(z=i($))==null?void 0:z.innerText},null,8,["token"]),s("ul",{ref_key:"listUserPreferences",ref:$,id:"listUserPreferences"},[(o(!0),r(Y,null,K(i(t).info.preferences,(a,x)=>(o(),r("li",{value:a,key:x},[s("b",null,n(x),1),y(": "),s("span",Ue,n(a),1)],8,Pe))),128))],512)]),s("h2",Ve,n(e.$t("admin.logs")),1),s("div",Le,[s("ul",He,[s("li",null,n(e.$t("admin.registered_on_date",{date:i(t).info.created_at})),1),s("li",null,n(e.$t("admin.last_seen_on_date",{date:i(t).info.last_seen_at})),1)])]),s("h2",Ee,n(e.$t("admin.danger_zone")),1),s("div",Ne,[s("div",Ie,[y(n(e.$t("admin.delete_this_user_legend"))+" ",1),s("span",Re,n(e.$t("admin.this_is_not_soft_delete")),1)]),s("button",{class:"button is-danger",onClick:L,title:"delete"},n(e.$t("admin.delete_this_user")),1)])])),c(R,{showButtons:!0},{default:h(()=>[c(I,{returnTo:{name:"admin.users"},action:"back"},null,8,["returnTo"])]),_:1})]}),_:1})}}};export{qe as default}; +import{_ as j}from"./CopyButton-643e0686.js";import{b as q,u as W,_ as A,a as D,r as v,o as G,J as u,e as p,f as o,k as J,p as h,h as s,t as n,i,g as r,m as c,n as m,j as y,U as b,l as f,F as Y,G as K,I as d,P as C}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const O={class:"title has-text-grey-dark mb-6"},Q={key:0,class:"has-text-centered"},X={class:"is-size-4"},Z={key:1},ee={class:"has-text-weight-light has-text-grey-dark is-pulled-right"},se={class:"subtitle is-6 block"},te={key:0,class:"notification is-dark is-size-7-mobile has-text-centered"},ie={class:"block"},ne={class:"title is-4 has-text-grey-light"},ae={class:"block"},oe={class:"list-item is-size-6 is-size-6-mobile has-text-grey"},re={class:"mb-3 is-flex is-justify-content-space-between"},le={class:"has-text-weight-bold"},de={class:"tags ml-3 is-right"},ce=["title"],_e=["title"],ue={class:"is-size-7 is-size-7-mobile has-text-grey-dark"},he=["innerHTML"],me=["innerHTML"],fe=["innerHTML"],pe=["innerHTML"],ke={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},be={class:"has-text-weight-bold"},ge={class:"is-block is-family-primary is-size-7 is-size-7-mobile has-text-grey-dark"},ve={key:0},ye={class:"tags ml-3 is-right"},we=["title"],$e={class:"list-item is-size-6 is-size-6-mobile has-text-grey is-flex is-justify-content-space-between"},ze={class:"has-text-weight-bold"},xe={class:"is-block is-size-7 is-size-7-mobile has-text-grey-dark"},Ce={key:0},Te={class:"tags ml-3 is-right"},Me=["title"],Be={class:"title is-4 has-text-grey-light"},Fe={class:"about-debug box is-family-monospace is-size-7"},Pe=["value"],Ue={class:"has-text-grey"},Ve={class:"title is-4 has-text-grey-light"},Le={class:"block"},He={class:"is-size-6 is-size-7-mobile"},Ee={class:"title is-4 has-text-danger"},Ne={class:"is-left-bordered-danger"},Ie={class:"block is-size-6 is-size-7-mobile"},Re={class:"is-block has-text-grey has-text-weight-bold"},qe={__name:"Manage",props:{userId:[Number,String]},setup(T){const M=T,l=q(),B=W();A();const w=D(),g=v(!1),t=v(null),$=v(null);G(async()=>{await F()});async function F(){g.value=!0,u.getById(M.userId,{returnError:!0}).then(e=>{t.value=e.data}).catch(e=>{l.error(e)}).finally(()=>{g.value=!1})}async function P(){if(!k())return!1;confirm(d("admin.confirm.purge_password_reset_request"))===!0&&(await u.resendPasswordEmail(t.value.info.id),t.value.password_reset=null)}async function U(){if(!k())return!1;confirm(d("admin.confirm.request_password_reset"))===!0&&u.resetPassword(t.value.info.id,{returnError:!0}).then(e=>{t.value=e.data,l.success({text:d("admin.password_successfully_reset")})}).catch(e=>{e.response.status===400?l.alert({text:e.response.data.reason}):l.error(e)})}function V(e){if(!confirm(d("admin.confirm.change_admin_role"))){C().then(()=>{t.value.info.is_admin=!e});return}if(e===!1&&t.value.info.id===w.id&&!confirm(d("admin.confirm.demote_own_account"))){C().then(()=>{t.value.info.is_admin=!0});return}u.promote(t.value.info.id,{is_admin:e}).then(_=>{t.value.info.is_admin=_.data.info.is_admin,l.success({text:d("admin.user_role_updated")})}).catch(_=>{l.error(_)})}function L(){if(!k())return!1;confirm(d("admin.confirm.delete_account"))&&u.delete(t.value.info.id,{returnError:!0}).then(e=>{l.success({text:d("auth.forms.user_account_successfully_deleted")}),B.push({name:"admin.users"})}).catch(e=>{e.response.status===403?l.alert({text:e.response.data.message}):l.error(e.response)})}function H(){if(!k())return!1;u.revokePATs(t.value.info.id).then(e=>{t.value.valid_personal_access_tokens=0,l.success({text:d("admin.pats_succesfully_revoked")})})}function k(){return!(t.value.info.id===w.id&&!confirm(d("admin.confirm.edit_own_account")))}return(e,_)=>{const E=p("FontAwesomeIcon"),N=p("FormCheckbox"),I=p("ButtonBackCloseCancel"),R=p("VueFooter"),S=p("ResponsiveWidthWrapper");return o(),J(S,null,{default:h(()=>{var z;return[s("h1",O,n(e.$t("admin.user_management")),1),i(g)||!i(t)?(o(),r("div",Q,[s("span",X,[c(E,{icon:["fas","spinner"],spin:""})])])):(o(),r("div",Z,[s("div",{class:m(["mb-6",i(t).info.is_admin?"is-left-bordered-warning":"is-left-bordered-link"])},[c(i(b),null,{default:h(({mode:a})=>[s("p",{class:m(["title is-4",{"has-text-grey-lighter":a=="dark"}])},[s("span",ee,"#"+n(i(t).info.id),1),y(n(i(t).info.name),1)],2)]),_:1}),s("p",se,n(i(t).info.email),1)],2),i(t).info.oauth_provider?(o(),r("div",te,n(e.$t("admin.account_bound_to_x_via_oauth",{provider:i(t).info.oauth_provider})),1)):f("",!0),s("div",ie,[c(N,{modelValue:i(t).info.is_admin,"onUpdate:modelValue":[_[0]||(_[0]=a=>i(t).info.is_admin=a),_[1]||(_[1]=a=>V(a===!0))],fieldName:"is_admin",label:"admin.forms.is_admin.label",help:"admin.forms.is_admin.help"},null,8,["modelValue"])]),s("h2",ne,n(e.$t("admin.access")),1),s("div",ae,[s("div",oe,[s("div",re,[s("div",null,[s("span",le,n(e.$t("auth.forms.password")),1)]),s("div",null,[s("div",de,[c(i(b),null,{default:h(({mode:a})=>[i(t).password_reset?(o(),r("button",{key:0,class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:P,title:e.$t("admin.resend_email_title")},n(e.$t("admin.resend_email")),11,ce)):f("",!0),s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:U,title:e.$t("admin.reset_password_title")},n(e.$t("admin.reset_password")),11,_e)]),_:1})])])]),s("div",ue,[i(t).password_reset===0?(o(),r("span",{key:0,innerHTML:e.$t("admin.password_request_expired"),class:"is-block block"},null,8,he)):i(t).password_reset?(o(),r("span",{key:1,innerHTML:e.$t("admin.password_requested_on_t",{datetime:i(t).password_reset}),class:"is-block block"},null,8,me)):f("",!0),i(t).password_reset?(o(),r("span",{key:2,innerHTML:e.$t("admin.resend_email_help"),class:"is-block block"},null,8,fe)):f("",!0),s("span",{innerHTML:e.$t("admin.reset_password_help"),class:"is-block block"},null,8,pe)])]),s("div",ke,[s("div",null,[s("span",be,n(e.$t("settings.personal_access_tokens")),1),s("span",ge,n(e.$t("admin.user_has_x_active_pat",{count:i(t).valid_personal_access_tokens})),1)]),i(t).valid_personal_access_tokens>0?(o(),r("div",ve,[s("div",ye,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),onClick:H,title:e.$t("admin.revoke_all_pat_for_user")},n(e.$t("settings.revoke")),11,we)]),_:1})])])):f("",!0)]),s("div",$e,[s("div",null,[s("span",ze,n(e.$t("auth.webauthn.security_devices")),1),s("span",xe,n(e.$t("admin.user_has_x_security_devices",{count:i(t).webauthn_credentials})),1)]),i(t).webauthn_credentials>0?(o(),r("div",Ce,[s("div",Te,[c(i(b),null,{default:h(({mode:a})=>[s("button",{class:m(["button tag is-pulled-right",a=="dark"?"is-dark has-background-link":"is-white"]),title:e.$t("admin.revoke_all_devices_for_user")},n(e.$t("settings.revoke")),11,Me)]),_:1})])])):f("",!0)])]),s("h2",Be,n(e.$t("settings.preferences")),1),s("div",Fe,[c(j,{id:"btnCopyEnvVars",token:(z=i($))==null?void 0:z.innerText},null,8,["token"]),s("ul",{ref_key:"listUserPreferences",ref:$,id:"listUserPreferences"},[(o(!0),r(Y,null,K(i(t).info.preferences,(a,x)=>(o(),r("li",{value:a,key:x},[s("b",null,n(x),1),y(": "),s("span",Ue,n(a),1)],8,Pe))),128))],512)]),s("h2",Ve,n(e.$t("admin.logs")),1),s("div",Le,[s("ul",He,[s("li",null,n(e.$t("admin.registered_on_date",{date:i(t).info.created_at})),1),s("li",null,n(e.$t("admin.last_seen_on_date",{date:i(t).info.last_seen_at})),1)])]),s("h2",Ee,n(e.$t("admin.danger_zone")),1),s("div",Ne,[s("div",Ie,[y(n(e.$t("admin.delete_this_user_legend"))+" ",1),s("span",Re,n(e.$t("admin.this_is_not_soft_delete")),1)]),s("button",{class:"button is-danger",onClick:L,title:"delete"},n(e.$t("admin.delete_this_user")),1)])])),c(R,{showButtons:!0},{default:h(()=>[c(I,{returnTo:{name:"admin.users"},action:"back"},null,8,["returnTo"])]),_:1})]}),_:1})}}};export{qe as default}; diff --git a/public/build/assets/OAuth-aa3383bc.js b/public/build/assets/OAuth-23b533cf.js similarity index 95% rename from public/build/assets/OAuth-aa3383bc.js rename to public/build/assets/OAuth-23b533cf.js index eda4b140..8e4541f3 100644 --- a/public/build/assets/OAuth-aa3383bc.js +++ b/public/build/assets/OAuth-23b533cf.js @@ -1 +1 @@ -import{Q as G,b as H,a2 as R,S as J,r as m,o as O,d as Q,J as z,a0 as q,e as _,f as l,g as c,m as n,h as t,p as f,i as o,l as d,t as a,w as X,j as g,F as Y,G as Z,k as ee,U as se,n as A,D as S,I as y}from"./app-94c6def1.js";import{F as te}from"./Form-88ba26a4.js";import{_ as oe}from"./SettingTabs-beebcb43.js";import{S as ne}from"./Spinner-f03b508f.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ae={class:"options-tabs"},ie=["innerHTML"],le={class:"title is-4 has-text-grey-light"},re={class:"is-size-7-mobile"},ce={class:"mt-3"},ue=["onKeyup"],de={key:1},me={class:"tags is-pulled-right"},_e=["onClick"],fe=["onClick","title"],pe={key:1,class:"is-size-7-mobile is-size-6 my-3"},ve={key:2,class:"pat is-family-monospace is-size-6 is-size-7-mobile has-text-success"},he={class:"mt-2 is-size-7 is-pulled-right"},ke={key:0,class:"is-overlay modal-otp modal-background"},ge={class:"main-section"},ye=["onSubmit"],be={class:"field is-grouped"},Te={class:"control"},Ce={class:"control"},ze={__name:"OAuth",setup(we){const x=G("2fauth"),p=H(),E=R(x.prefix+"returnTo","accounts"),{copy:L}=J({legacy:!0}),r=m([]),b=m(!1),T=m(!1),v=m(!1),h=m(null),C=m(null);O(()=>{w()});const u=Q(new te({name:""}));function w(){b.value=!0,z.getPersonalAccessTokens({returnError:!0}).then(e=>{r.value=[],e.data.forEach(i=>{i.id===C.value?(i.value=h.value,r.value.unshift(i)):r.value.push(i)})}).catch(e=>{e.response.status===405?T.value=!0:p.error(e)}).finally(()=>{b.value=!1,C.value=null,h.value=null})}function F(){P(),T.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):v.value=!0}function M(){u.post("/oauth/personal-access-tokens").then(e=>{h.value=e.data.accessToken,C.value=e.data.token.id,w(),v.value=!1,u.reset()})}function N(e){confirm(y("settings.confirm.revoke"))&&z.deletePersonalAccessToken(e).then(i=>{r.value=r.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function P(){r.value.forEach(e=>{e.value=null}),h.value=null}function K(e){L(e),p.success({text:y("commons.copied_to_clipboard")})}function I(){v.value=!1,u.reset()}return q(e=>{e.name.startsWith("settings.")||p.clear()}),(e,i)=>{const k=_("FontAwesomeIcon"),U=_("ButtonBackCloseCancel"),W=_("VueFooter"),V=_("FormWrapper"),j=_("FormField"),$=_("VueButton");return l(),c("div",null,[n(oe,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),t("div",ae,[n(V,null,{default:f(()=>[o(T)?(l(),c("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,ie)):d("",!0),t("h4",le,a(e.$t("settings.personal_access_tokens")),1),t("div",re,a(e.$t("settings.token_legend")),1),t("div",ce,[t("a",{tabindex:"0",class:"is-link",onClick:F,onKeyup:X(F,["enter"])},[n(k,{icon:["fas","plus-circle"]}),g(" "+a(e.$t("settings.generate_new_token")),1)],40,ue)]),o(r).length>0?(l(),c("div",de,[(l(!0),c(Y,null,Z(o(r),s=>(l(),c("div",{key:s.id,class:"group-item is-size-5 is-size-6-mobile"},[s.value?(l(),ee(k,{key:0,class:"has-text-success",icon:["fas","check"]})):d("",!0),g(" "+a(s.name)+" ",1),t("div",me,[n(o(se),null,{default:f(({mode:B})=>[s.value?(l(),c("button",{key:0,class:A(["button tag",{"is-link":B!="dark"}]),onClick:S(D=>K(s.value),["stop"])},a(e.$t("commons.copy")),11,_e)):d("",!0),t("button",{class:A(["button tag",B==="dark"?"is-dark":"is-white"]),onClick:D=>N(s.id),title:e.$t("settings.revoke")},a(e.$t("settings.revoke")),11,fe)]),_:2},1024)]),s.value?(l(),c("span",pe,a(e.$t("settings.make_sure_copy_token")),1)):d("",!0),s.value?(l(),c("span",ve,a(s.value),1)):d("",!0)]))),128)),t("div",he,a(e.$t("settings.revoking_a_token_is_permanent")),1)])):d("",!0),n(ne,{isVisible:o(b)&&o(r).length===0},null,8,["isVisible"]),n(W,{showButtons:!0},{default:f(()=>[n(U,{returnTo:{name:o(E)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),o(v)?(l(),c("div",ke,[t("main",ge,[n(V,{title:"settings.forms.new_token"},{default:f(()=>[t("form",{onSubmit:S(M,["prevent"]),onKeydown:i[1]||(i[1]=s=>o(u).onKeydown(s))},[n(j,{modelValue:o(u).name,"onUpdate:modelValue":i[0]||(i[0]=s=>o(u).name=s),fieldName:"name",fieldError:o(u).errors.get("name"),inputType:"text",label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),t("div",be,[t("div",Te,[n($,{id:"btnGenerateToken",isLoading:o(u).isBusy},{default:f(()=>[g(a(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),t("div",Ce,[n($,{onClick:I,nativeType:"button",id:"btnCancel",color:"is-text"},{default:f(()=>[g(a(e.$t("commons.cancel")),1)]),_:1})])])],40,ye)]),_:1})])])):d("",!0)])}}};export{ze as default}; +import{Q as G,b as H,a2 as R,S as J,r as m,o as O,d as Q,J as z,a0 as q,e as _,f as l,g as c,m as n,h as t,p as f,i as o,l as d,t as a,w as X,j as g,F as Y,G as Z,k as ee,U as se,n as A,D as S,I as y}from"./app-60af1d1a.js";import{F as te}from"./Form-0a788c90.js";import{_ as oe}from"./SettingTabs-0b59e581.js";import{S as ne}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ae={class:"options-tabs"},ie=["innerHTML"],le={class:"title is-4 has-text-grey-light"},re={class:"is-size-7-mobile"},ce={class:"mt-3"},ue=["onKeyup"],de={key:1},me={class:"tags is-pulled-right"},_e=["onClick"],fe=["onClick","title"],pe={key:1,class:"is-size-7-mobile is-size-6 my-3"},ve={key:2,class:"pat is-family-monospace is-size-6 is-size-7-mobile has-text-success"},he={class:"mt-2 is-size-7 is-pulled-right"},ke={key:0,class:"is-overlay modal-otp modal-background"},ge={class:"main-section"},ye=["onSubmit"],be={class:"field is-grouped"},Te={class:"control"},Ce={class:"control"},ze={__name:"OAuth",setup(we){const x=G("2fauth"),p=H(),E=R(x.prefix+"returnTo","accounts"),{copy:L}=J({legacy:!0}),r=m([]),b=m(!1),T=m(!1),v=m(!1),h=m(null),C=m(null);O(()=>{w()});const u=Q(new te({name:""}));function w(){b.value=!0,z.getPersonalAccessTokens({returnError:!0}).then(e=>{r.value=[],e.data.forEach(i=>{i.id===C.value?(i.value=h.value,r.value.unshift(i)):r.value.push(i)})}).catch(e=>{e.response.status===405?T.value=!0:p.error(e)}).finally(()=>{b.value=!1,C.value=null,h.value=null})}function F(){P(),T.value?p.warn({text:y("errors.unsupported_with_reverseproxy")}):v.value=!0}function M(){u.post("/oauth/personal-access-tokens").then(e=>{h.value=e.data.accessToken,C.value=e.data.token.id,w(),v.value=!1,u.reset()})}function N(e){confirm(y("settings.confirm.revoke"))&&z.deletePersonalAccessToken(e).then(i=>{r.value=r.value.filter(k=>k.id!==e),p.success({text:y("settings.token_revoked")})})}function P(){r.value.forEach(e=>{e.value=null}),h.value=null}function K(e){L(e),p.success({text:y("commons.copied_to_clipboard")})}function I(){v.value=!1,u.reset()}return q(e=>{e.name.startsWith("settings.")||p.clear()}),(e,i)=>{const k=_("FontAwesomeIcon"),U=_("ButtonBackCloseCancel"),W=_("VueFooter"),V=_("FormWrapper"),j=_("FormField"),$=_("VueButton");return l(),c("div",null,[n(oe,{activeTab:"settings.oauth.tokens"},null,8,["activeTab"]),t("div",ae,[n(V,null,{default:f(()=>[o(T)?(l(),c("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,ie)):d("",!0),t("h4",le,a(e.$t("settings.personal_access_tokens")),1),t("div",re,a(e.$t("settings.token_legend")),1),t("div",ce,[t("a",{tabindex:"0",class:"is-link",onClick:F,onKeyup:X(F,["enter"])},[n(k,{icon:["fas","plus-circle"]}),g(" "+a(e.$t("settings.generate_new_token")),1)],40,ue)]),o(r).length>0?(l(),c("div",de,[(l(!0),c(Y,null,Z(o(r),s=>(l(),c("div",{key:s.id,class:"group-item is-size-5 is-size-6-mobile"},[s.value?(l(),ee(k,{key:0,class:"has-text-success",icon:["fas","check"]})):d("",!0),g(" "+a(s.name)+" ",1),t("div",me,[n(o(se),null,{default:f(({mode:B})=>[s.value?(l(),c("button",{key:0,class:A(["button tag",{"is-link":B!="dark"}]),onClick:S(D=>K(s.value),["stop"])},a(e.$t("commons.copy")),11,_e)):d("",!0),t("button",{class:A(["button tag",B==="dark"?"is-dark":"is-white"]),onClick:D=>N(s.id),title:e.$t("settings.revoke")},a(e.$t("settings.revoke")),11,fe)]),_:2},1024)]),s.value?(l(),c("span",pe,a(e.$t("settings.make_sure_copy_token")),1)):d("",!0),s.value?(l(),c("span",ve,a(s.value),1)):d("",!0)]))),128)),t("div",he,a(e.$t("settings.revoking_a_token_is_permanent")),1)])):d("",!0),n(ne,{isVisible:o(b)&&o(r).length===0},null,8,["isVisible"]),n(W,{showButtons:!0},{default:f(()=>[n(U,{returnTo:{name:o(E)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})]),o(v)?(l(),c("div",ke,[t("main",ge,[n(V,{title:"settings.forms.new_token"},{default:f(()=>[t("form",{onSubmit:S(M,["prevent"]),onKeydown:i[1]||(i[1]=s=>o(u).onKeydown(s))},[n(j,{modelValue:o(u).name,"onUpdate:modelValue":i[0]||(i[0]=s=>o(u).name=s),fieldName:"name",fieldError:o(u).errors.get("name"),inputType:"text",label:"commons.name",autofocus:""},null,8,["modelValue","fieldError"]),t("div",be,[t("div",Te,[n($,{id:"btnGenerateToken",isLoading:o(u).isBusy},{default:f(()=>[g(a(e.$t("commons.generate")),1)]),_:1},8,["isLoading"])]),t("div",Ce,[n($,{onClick:I,nativeType:"button",id:"btnCancel",color:"is-text"},{default:f(()=>[g(a(e.$t("commons.cancel")),1)]),_:1})])])],40,ye)]),_:1})])])):d("",!0)])}}};export{ze as default}; diff --git a/public/build/assets/Options-e3b3035d.js b/public/build/assets/Options-599918f8.js similarity index 98% rename from public/build/assets/Options-e3b3035d.js rename to public/build/assets/Options-599918f8.js index 6d871930..a9b20a32 100644 --- a/public/build/assets/Options-e3b3035d.js +++ b/public/build/assets/Options-599918f8.js @@ -1 +1 @@ -import{_ as P}from"./SettingTabs-beebcb43.js";import{Q as T,a as F,T as I,b as c,a2 as G,r as M,v as q,o as R,a0 as S,e as p,f as $,g as Q,m as l,h as i,p as _,t as u,i as o,j as V,J as L,I as j,a3 as W}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={class:"options-tabs"},J={class:"block"},z={class:"title is-4 has-text-grey-light"},H={class:"field help"},K={class:"ml-2",href:"https://crowdin.com/project/2fauth"},X={class:"title is-4 pt-4 has-text-grey-light"},Y={class:"title is-4 pt-4 has-text-grey-light"},Z={class:"title is-4 pt-4 has-text-grey-light"},oe={__name:"Options",setup(ee){const f=T("2fauth"),s=F(),v=I(),b=c(),y=G(f.prefix+"returnTo","accounts"),O=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],h=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],w=[{text:"12 34 56",value:2,legend:"settings.forms.pair",title:"settings.forms.pair_legend"},{text:"123 456",value:3,legend:"settings.forms.trio",title:"settings.forms.trio_legend"},{text:"1234 5678",value:.5,legend:"settings.forms.half",title:"settings.forms.half_legend"}],x=[{text:"settings.forms.never",value:0},{text:"settings.forms.on_otp_copy",value:-1},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.5_minutes",value:5},{text:"settings.forms.10_minutes",value:10},{text:"settings.forms.15_minutes",value:15},{text:"settings.forms.30_minutes",value:30},{text:"settings.forms.1_hour",value:60},{text:"settings.forms.1_day",value:1440}],g=M([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),C=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],D=[{text:"settings.forms.otp_generation_on_request",value:!0,legend:"settings.forms.otp_generation_on_request_legend",title:"settings.forms.otp_generation_on_request_title"},{text:"settings.forms.otp_generation_on_home",value:!1,legend:"settings.forms.otp_generation_on_home_legend",title:"settings.forms.otp_generation_on_home_title"}],U=q(()=>{let n=[{text:"languages.browser_preference",value:"browser"}];for(const e of f.langs)n.push({text:"languages."+e,value:e});return n});R(()=>{v.items.forEach(n=>{n.id>0&&g.value.push({text:n.name,value:n.id})}),s.refreshPreferences()});function r(n,e){L.updatePreference(n,e).then(m=>{c().success({type:"is-success",text:j("settings.forms.setting_saved")}),n==="lang"&&W()!==e?s.applyLanguage():n==="theme"&&s.applyTheme()})}return S(n=>{n.name.startsWith("settings.")||b.clear()}),(n,e)=>{const m=p("FormSelect"),N=p("FontAwesomeIcon"),d=p("FormToggle"),a=p("FormCheckbox"),k=p("FormWrapper"),A=p("ButtonBackCloseCancel"),B=p("VueFooter");return $(),Q("div",null,[l(P,{activeTab:"settings.options"}),i("div",E,[l(k,null,{default:_(()=>[i("form",null,[i("div",J,[i("h4",z,u(n.$t("settings.general")),1),l(m,{modelValue:o(s).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=t=>o(s).preferences.lang=t),e[1]||(e[1]=t=>r("lang",t))],options:o(U),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),i("div",H,[V(u(n.$t("settings.forms.some_translation_are_missing"))+" ",1),i("a",K,[V(u(n.$t("settings.forms.help_translate_2fauth"))+" ",1),l(N,{icon:["fas","external-link-alt"]})])]),l(d,{modelValue:o(s).preferences.displayMode,"onUpdate:modelValue":[e[2]||(e[2]=t=>o(s).preferences.displayMode=t),e[3]||(e[3]=t=>r("displayMode",t))],choices:O,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.theme,"onUpdate:modelValue":[e[4]||(e[4]=t=>o(s).preferences.theme=t),e[5]||(e[5]=t=>r("theme",t))],choices:h,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.showAccountsIcons,"onUpdate:modelValue":[e[6]||(e[6]=t=>o(s).preferences.showAccountsIcons=t),e[7]||(e[7]=t=>r("showAccountsIcons",t))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.getOfficialIcons,"onUpdate:modelValue":[e[8]||(e[8]=t=>o(s).preferences.getOfficialIcons=t),e[9]||(e[9]=t=>r("getOfficialIcons",t))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.formatPassword,"onUpdate:modelValue":[e[10]||(e[10]=t=>o(s).preferences.formatPassword=t),e[11]||(e[11]=t=>r("formatPassword",t))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.formatPasswordBy,"onUpdate:modelValue":[e[12]||(e[12]=t=>o(s).preferences.formatPasswordBy=t),e[13]||(e[13]=t=>r("formatPasswordBy",t))],choices:w,fieldName:"formatPasswordBy",isDisabled:!o(s).preferences.formatPassword},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.clearSearchOnCopy,"onUpdate:modelValue":[e[14]||(e[14]=t=>o(s).preferences.clearSearchOnCopy=t),e[15]||(e[15]=t=>r("clearSearchOnCopy",t))],fieldName:"clearSearchOnCopy",label:"settings.forms.clear_search_on_copy.label",help:"settings.forms.clear_search_on_copy.help"},null,8,["modelValue"]),i("h4",X,u(n.$t("groups.groups")),1),l(m,{modelValue:o(s).preferences.defaultGroup,"onUpdate:modelValue":[e[16]||(e[16]=t=>o(s).preferences.defaultGroup=t),e[17]||(e[17]=t=>r("defaultGroup",t))],options:o(g),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),l(a,{modelValue:o(s).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[18]||(e[18]=t=>o(s).preferences.rememberActiveGroup=t),e[19]||(e[19]=t=>r("rememberActiveGroup",t))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.viewDefaultGroupOnCopy,"onUpdate:modelValue":[e[20]||(e[20]=t=>o(s).preferences.viewDefaultGroupOnCopy=t),e[21]||(e[21]=t=>r("viewDefaultGroupOnCopy",t))],fieldName:"viewDefaultGroupOnCopy",label:"settings.forms.view_default_group_on_copy.label",help:"settings.forms.view_default_group_on_copy.help"},null,8,["modelValue"]),i("h4",Y,u(n.$t("settings.security")),1),l(m,{modelValue:o(s).preferences.kickUserAfter,"onUpdate:modelValue":[e[22]||(e[22]=t=>o(s).preferences.kickUserAfter=t),e[23]||(e[23]=t=>r("kickUserAfter",t))],options:x,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[24]||(e[24]=t=>o(s).preferences.getOtpOnRequest=t),e[25]||(e[25]=t=>r("getOtpOnRequest",t))],choices:D,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[26]||(e[26]=t=>o(s).preferences.closeOtpOnCopy=t),e[27]||(e[27]=t=>r("closeOtpOnCopy",t))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[28]||(e[28]=t=>o(s).preferences.copyOtpOnDisplay=t),e[29]||(e[29]=t=>r("copyOtpOnDisplay",t))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.showOtpAsDot,"onUpdate:modelValue":[e[30]||(e[30]=t=>o(s).preferences.showOtpAsDot=t),e[31]||(e[31]=t=>r("showOtpAsDot",t))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.revealDottedOTP,"onUpdate:modelValue":[e[32]||(e[32]=t=>o(s).preferences.revealDottedOTP=t),e[33]||(e[33]=t=>r("revealDottedOTP",t))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!o(s).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),i("h4",Z,u(n.$t("settings.data_input")),1),l(a,{modelValue:o(s).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[34]||(e[34]=t=>o(s).preferences.useBasicQrcodeReader=t),e[35]||(e[35]=t=>r("useBasicQrcodeReader",t))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.useDirectCapture,"onUpdate:modelValue":[e[36]||(e[36]=t=>o(s).preferences.useDirectCapture=t),e[37]||(e[37]=t=>r("useDirectCapture",t))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),l(m,{modelValue:o(s).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[38]||(e[38]=t=>o(s).preferences.defaultCaptureMode=t),e[39]||(e[39]=t=>r("defaultCaptureMode",t))],options:C,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help"},null,8,["modelValue"])])])]),_:1})]),l(B,{showButtons:!0},{default:_(()=>[l(A,{returnTo:{name:o(y)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{oe as default}; +import{_ as P}from"./SettingTabs-0b59e581.js";import{Q as T,a as F,T as I,b as c,a2 as G,r as M,v as q,o as R,a0 as S,e as p,f as $,g as Q,m as l,h as i,p as _,t as u,i as o,j as V,J as L,I as j,a3 as W}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const E={class:"options-tabs"},J={class:"block"},z={class:"title is-4 has-text-grey-light"},H={class:"field help"},K={class:"ml-2",href:"https://crowdin.com/project/2fauth"},X={class:"title is-4 pt-4 has-text-grey-light"},Y={class:"title is-4 pt-4 has-text-grey-light"},Z={class:"title is-4 pt-4 has-text-grey-light"},oe={__name:"Options",setup(ee){const f=T("2fauth"),s=F(),v=I(),b=c(),y=G(f.prefix+"returnTo","accounts"),O=[{text:"settings.forms.grid",value:"grid",icon:"th"},{text:"settings.forms.list",value:"list",icon:"list"}],h=[{text:"settings.forms.light",value:"light",icon:"sun"},{text:"settings.forms.dark",value:"dark",icon:"moon"},{text:"settings.forms.automatic",value:"system",icon:"desktop"}],w=[{text:"12 34 56",value:2,legend:"settings.forms.pair",title:"settings.forms.pair_legend"},{text:"123 456",value:3,legend:"settings.forms.trio",title:"settings.forms.trio_legend"},{text:"1234 5678",value:.5,legend:"settings.forms.half",title:"settings.forms.half_legend"}],x=[{text:"settings.forms.never",value:0},{text:"settings.forms.on_otp_copy",value:-1},{text:"settings.forms.1_minutes",value:1},{text:"settings.forms.5_minutes",value:5},{text:"settings.forms.10_minutes",value:10},{text:"settings.forms.15_minutes",value:15},{text:"settings.forms.30_minutes",value:30},{text:"settings.forms.1_hour",value:60},{text:"settings.forms.1_day",value:1440}],g=M([{text:"groups.no_group",value:0},{text:"groups.active_group",value:-1}]),C=[{text:"settings.forms.livescan",value:"livescan"},{text:"settings.forms.upload",value:"upload"},{text:"settings.forms.advanced_form",value:"advancedForm"}],D=[{text:"settings.forms.otp_generation_on_request",value:!0,legend:"settings.forms.otp_generation_on_request_legend",title:"settings.forms.otp_generation_on_request_title"},{text:"settings.forms.otp_generation_on_home",value:!1,legend:"settings.forms.otp_generation_on_home_legend",title:"settings.forms.otp_generation_on_home_title"}],U=q(()=>{let n=[{text:"languages.browser_preference",value:"browser"}];for(const e of f.langs)n.push({text:"languages."+e,value:e});return n});R(()=>{v.items.forEach(n=>{n.id>0&&g.value.push({text:n.name,value:n.id})}),s.refreshPreferences()});function r(n,e){L.updatePreference(n,e).then(m=>{c().success({type:"is-success",text:j("settings.forms.setting_saved")}),n==="lang"&&W()!==e?s.applyLanguage():n==="theme"&&s.applyTheme()})}return S(n=>{n.name.startsWith("settings.")||b.clear()}),(n,e)=>{const m=p("FormSelect"),N=p("FontAwesomeIcon"),d=p("FormToggle"),a=p("FormCheckbox"),k=p("FormWrapper"),A=p("ButtonBackCloseCancel"),B=p("VueFooter");return $(),Q("div",null,[l(P,{activeTab:"settings.options"}),i("div",E,[l(k,null,{default:_(()=>[i("form",null,[i("div",J,[i("h4",z,u(n.$t("settings.general")),1),l(m,{modelValue:o(s).preferences.lang,"onUpdate:modelValue":[e[0]||(e[0]=t=>o(s).preferences.lang=t),e[1]||(e[1]=t=>r("lang",t))],options:o(U),fieldName:"lang",label:"settings.forms.language.label",help:"settings.forms.language.help"},null,8,["modelValue","options"]),i("div",H,[V(u(n.$t("settings.forms.some_translation_are_missing"))+" ",1),i("a",K,[V(u(n.$t("settings.forms.help_translate_2fauth"))+" ",1),l(N,{icon:["fas","external-link-alt"]})])]),l(d,{modelValue:o(s).preferences.displayMode,"onUpdate:modelValue":[e[2]||(e[2]=t=>o(s).preferences.displayMode=t),e[3]||(e[3]=t=>r("displayMode",t))],choices:O,fieldName:"displayMode",label:"settings.forms.display_mode.label",help:"settings.forms.display_mode.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.theme,"onUpdate:modelValue":[e[4]||(e[4]=t=>o(s).preferences.theme=t),e[5]||(e[5]=t=>r("theme",t))],choices:h,fieldName:"theme",label:"settings.forms.theme.label",help:"settings.forms.theme.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.showAccountsIcons,"onUpdate:modelValue":[e[6]||(e[6]=t=>o(s).preferences.showAccountsIcons=t),e[7]||(e[7]=t=>r("showAccountsIcons",t))],fieldName:"showAccountsIcons",label:"settings.forms.show_accounts_icons.label",help:"settings.forms.show_accounts_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.getOfficialIcons,"onUpdate:modelValue":[e[8]||(e[8]=t=>o(s).preferences.getOfficialIcons=t),e[9]||(e[9]=t=>r("getOfficialIcons",t))],fieldName:"getOfficialIcons",label:"settings.forms.get_official_icons.label",help:"settings.forms.get_official_icons.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.formatPassword,"onUpdate:modelValue":[e[10]||(e[10]=t=>o(s).preferences.formatPassword=t),e[11]||(e[11]=t=>r("formatPassword",t))],fieldName:"formatPassword",label:"settings.forms.password_format.label",help:"settings.forms.password_format.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.formatPasswordBy,"onUpdate:modelValue":[e[12]||(e[12]=t=>o(s).preferences.formatPasswordBy=t),e[13]||(e[13]=t=>r("formatPasswordBy",t))],choices:w,fieldName:"formatPasswordBy",isDisabled:!o(s).preferences.formatPassword},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.clearSearchOnCopy,"onUpdate:modelValue":[e[14]||(e[14]=t=>o(s).preferences.clearSearchOnCopy=t),e[15]||(e[15]=t=>r("clearSearchOnCopy",t))],fieldName:"clearSearchOnCopy",label:"settings.forms.clear_search_on_copy.label",help:"settings.forms.clear_search_on_copy.help"},null,8,["modelValue"]),i("h4",X,u(n.$t("groups.groups")),1),l(m,{modelValue:o(s).preferences.defaultGroup,"onUpdate:modelValue":[e[16]||(e[16]=t=>o(s).preferences.defaultGroup=t),e[17]||(e[17]=t=>r("defaultGroup",t))],options:o(g),fieldName:"defaultGroup",label:"settings.forms.default_group.label",help:"settings.forms.default_group.help"},null,8,["modelValue","options"]),l(a,{modelValue:o(s).preferences.rememberActiveGroup,"onUpdate:modelValue":[e[18]||(e[18]=t=>o(s).preferences.rememberActiveGroup=t),e[19]||(e[19]=t=>r("rememberActiveGroup",t))],fieldName:"rememberActiveGroup",label:"settings.forms.remember_active_group.label",help:"settings.forms.remember_active_group.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.viewDefaultGroupOnCopy,"onUpdate:modelValue":[e[20]||(e[20]=t=>o(s).preferences.viewDefaultGroupOnCopy=t),e[21]||(e[21]=t=>r("viewDefaultGroupOnCopy",t))],fieldName:"viewDefaultGroupOnCopy",label:"settings.forms.view_default_group_on_copy.label",help:"settings.forms.view_default_group_on_copy.help"},null,8,["modelValue"]),i("h4",Y,u(n.$t("settings.security")),1),l(m,{modelValue:o(s).preferences.kickUserAfter,"onUpdate:modelValue":[e[22]||(e[22]=t=>o(s).preferences.kickUserAfter=t),e[23]||(e[23]=t=>r("kickUserAfter",t))],options:x,fieldName:"kickUserAfter",label:"settings.forms.auto_lock.label",help:"settings.forms.auto_lock.help"},null,8,["modelValue"]),l(d,{modelValue:o(s).preferences.getOtpOnRequest,"onUpdate:modelValue":[e[24]||(e[24]=t=>o(s).preferences.getOtpOnRequest=t),e[25]||(e[25]=t=>r("getOtpOnRequest",t))],choices:D,fieldName:"getOtpOnRequest",label:"settings.forms.otp_generation.label",help:"settings.forms.otp_generation.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.closeOtpOnCopy,"onUpdate:modelValue":[e[26]||(e[26]=t=>o(s).preferences.closeOtpOnCopy=t),e[27]||(e[27]=t=>r("closeOtpOnCopy",t))],fieldName:"closeOtpOnCopy",label:"settings.forms.close_otp_on_copy.label",help:"settings.forms.close_otp_on_copy.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.copyOtpOnDisplay,"onUpdate:modelValue":[e[28]||(e[28]=t=>o(s).preferences.copyOtpOnDisplay=t),e[29]||(e[29]=t=>r("copyOtpOnDisplay",t))],fieldName:"copyOtpOnDisplay",label:"settings.forms.copy_otp_on_display.label",help:"settings.forms.copy_otp_on_display.help",isDisabled:!o(s).preferences.getOtpOnRequest,isIndented:!0},null,8,["modelValue","isDisabled"]),l(a,{modelValue:o(s).preferences.showOtpAsDot,"onUpdate:modelValue":[e[30]||(e[30]=t=>o(s).preferences.showOtpAsDot=t),e[31]||(e[31]=t=>r("showOtpAsDot",t))],fieldName:"showOtpAsDot",label:"settings.forms.show_otp_as_dot.label",help:"settings.forms.show_otp_as_dot.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.revealDottedOTP,"onUpdate:modelValue":[e[32]||(e[32]=t=>o(s).preferences.revealDottedOTP=t),e[33]||(e[33]=t=>r("revealDottedOTP",t))],fieldName:"revealDottedOTP",label:"settings.forms.reveal_dotted_otp.label",help:"settings.forms.reveal_dotted_otp.help",isDisabled:!o(s).preferences.showOtpAsDot,isIndented:!0},null,8,["modelValue","isDisabled"]),i("h4",Z,u(n.$t("settings.data_input")),1),l(a,{modelValue:o(s).preferences.useBasicQrcodeReader,"onUpdate:modelValue":[e[34]||(e[34]=t=>o(s).preferences.useBasicQrcodeReader=t),e[35]||(e[35]=t=>r("useBasicQrcodeReader",t))],fieldName:"useBasicQrcodeReader",label:"settings.forms.use_basic_qrcode_reader.label",help:"settings.forms.use_basic_qrcode_reader.help"},null,8,["modelValue"]),l(a,{modelValue:o(s).preferences.useDirectCapture,"onUpdate:modelValue":[e[36]||(e[36]=t=>o(s).preferences.useDirectCapture=t),e[37]||(e[37]=t=>r("useDirectCapture",t))],fieldName:"useDirectCapture",label:"settings.forms.useDirectCapture.label",help:"settings.forms.useDirectCapture.help"},null,8,["modelValue"]),l(m,{modelValue:o(s).preferences.defaultCaptureMode,"onUpdate:modelValue":[e[38]||(e[38]=t=>o(s).preferences.defaultCaptureMode=t),e[39]||(e[39]=t=>r("defaultCaptureMode",t))],options:C,fieldName:"defaultCaptureMode",label:"settings.forms.defaultCaptureMode.label",help:"settings.forms.defaultCaptureMode.help"},null,8,["modelValue"])])])]),_:1})]),l(B,{showButtons:!0},{default:_(()=>[l(A,{returnTo:{name:o(y)},action:"close"},null,8,["returnTo"])]),_:1})])}}};export{oe as default}; diff --git a/public/build/assets/OtpDisplay-4c8a5daa.js b/public/build/assets/OtpDisplay-f582bb88.js similarity index 98% rename from public/build/assets/OtpDisplay-4c8a5daa.js rename to public/build/assets/OtpDisplay-f582bb88.js index a79ab2b3..6166220e 100644 --- a/public/build/assets/OtpDisplay-4c8a5daa.js +++ b/public/build/assets/OtpDisplay-f582bb88.js @@ -1 +1 @@ -import{r,v as C,o as R,s as Z,f as u,g as d,F as ee,G as te,i as n,n as N,a as oe,b as ae,Q as ne,S as se,_ as re,x as le,e as ue,h as x,l as A,m as G,p as ie,t as b,w as ce,Y as pe,U as ve,A as j,B as q,k as M,D as fe,K as D,I as z,P as Q}from"./app-94c6def1.js";import{S as de}from"./Spinner-f03b508f.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ye={__name:"TotpLooper",props:{step_count:{type:Number,default:10},period:Number,generated_at:Number,autostart:{type:Boolean,default:!0}},emits:["loop-started","loop-ended","stepped-up"],setup(k,{expose:T,emit:l}){const o=k,s=r(null),i=r(null),S=r(null),y=r(null),c=r(null),p=C(()=>s.value%o.period),h=C(()=>o.period-p.value),w=C(()=>o.period/o.step_count),e=C(()=>{let v=p.value*o.step_count/o.period;return Math.floor(v)+0}),m=(v=null)=>{_(),s.value=v??o.generated_at,l("loop-started",e.value),c.value=e.value,i.value=setTimeout(function(){_(),l("loop-ended")},h.value*1e3);let g=Math.ceil(p.value/w.value)*w.value-p.value;S.value=setTimeout(function(){g>0&&(c.value+=1,l("stepped-up",c.value)),y.value=setInterval(function(){c.value+=1,l("stepped-up",c.value)},w.value*1e3)},g*1e3)},_=()=>{clearTimeout(i.value),clearTimeout(S.value),clearInterval(y.value),c.value=s.value=null};return R(()=>{o.autostart==!0&&m()}),Z(()=>{_()}),T({startLoop:m,clearLooper:_,props:o}),(v,g)=>(u(),d("div"))}},me=["data-is-active"],_e={__name:"Dots",props:{stepCount:{type:Number,default:10},initialIndex:{type:Number,default:null},period:{type:Number,default:null}},setup(k,{expose:T}){const l=k,o=r(0),s=C(()=>o.value==-1);function i(y){o.value=y{isNaN(l.initialIndex)||i(l.initialIndex)}),T({turnOn:i,turnOff:S,props:l}),(y,c)=>(u(),d("ul",{class:N(["dots",{off:n(s)}])},[(u(!0),d(ee,null,te(k.stepCount,p=>(u(),d("li",{key:p,"data-is-active":p==n(o)?!0:null},null,8,me))),128))],2))}},ge=["src","alt"],he=["title"],we={key:1,tabindex:"0",class:"otp is-size-1"},ke={key:0,class:"mt-3"},xe={__name:"OtpDisplay",props:{otp_type:String,account:String,service:String,icon:String,secret:String,digits:Number,algorithm:String,period:null,counter:null,image:String,qrcode:null,uri:String},emits:["please-close-me","increment-hotp","validation-error"],setup(k,{expose:T,emit:l}){const o=k,s=oe(),i=ae(),S=ne("2fauth"),{copy:y,copied:c}=se({legacy:!0}),p=re(),h=r(null),w=r(null),e=r({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),m=r(""),_=r(null),v=r(!1),g=r(!1),O=r(!1),B=r(),I=r(),E=r();le(()=>o.icon,a=>{a!=null&&(e.value.icon=a)});const Y=async a=>{if(O.value=!1,e.value.otp_type=o.otp_type,e.value.account=o.account,e.value.service=o.service,e.value.icon=o.icon,e.value.secret=o.secret,e.value.digits=o.digits,e.value.algorithm=o.algorithm,e.value.period=o.period,e.value.counter=o.counter,F(),a){h.value=a;const{data:t}=await D.get(h.value);e.value.service=t.service,e.value.account=t.account,e.value.icon=t.icon,e.value.otp_type=t.otp_type,P(t.otp_type)&&t.counter&&(e.value.counter=t.counter)}else o.uri?(w.value=o.uri,e.value.otp_type=o.uri.slice(0,15).toLowerCase()==="otpauth://totp/"?"totp":"hotp"):o.secret?!U(e.value.otp_type)&&!P(e.value.otp_type)&&i.error(new Error(z("errors.not_a_supported_otp_type"))):i.error(new Error(z("errors.cannot_create_otp_without_secret")));try{await V(),W()}catch{L()}};async function V(){F(),await J().then(a=>{let t=a.data;m.value=t.password,s.preferences.copyOtpOnDisplay&&$(t.password),U(t.otp_type)?(_.value=t.generated_at,e.value.period=t.period,v.value=!0,Q().then(()=>{I.value.startLoop()})):P(t.otp_type)&&(e.value.counter=t.counter,l("increment-hotp",{nextHotpCounter:t.counter,nextUri:t.uri}))}).catch(a=>{a.response.status===422&&l("validation-error",a.response)}).finally(()=>{g.value=!1})}function F(){g.value=!0,B.value.turnOff()}function J(){return h.value?D.getOtpById(h.value):w.value?D.getOtpByUri(w.value):D.getOtpByParams(e.value)}function L(){var a;h.value=e.value.counter=_.value=null,e.value.service=e.value.account=e.value.icon=e.value.otp_type=e.value.secret="",m.value="... ...",v.value=!1,(a=I.value)==null||a.clearLooper()}function W(){Q().then(()=>{var a;(a=E.value)==null||a.focus()})}function $(a,t){y(a.replace(/ /g,"")),c&&(s.preferences.kickUserAfter==-1&&(t||!1)===!0&&p.name!="importAccounts"?s.logout({kicked:!0}):s.preferences.closeOtpOnCopy&&(t||!1)===!0&&(l("please-close-me"),O.value=!1,L()),s.preferences.clearSearchOnCopy&&l("please-clear-search"),s.preferences.viewDefaultGroupOnCopy&&(s.preferences.activeGroup=s.preferences.defaultGroup==-1?s.preferences.activeGroup:s.preferences.defaultGroup),i.success({text:z("commons.copied_to_clipboard")}))}function U(a){return a==="totp"||a==="steamtotp"}function P(a){return a==="hotp"}function K(a){B.value.turnOn(a)}return T({show:Y,clearOTP:L}),(a,t)=>{const H=ue("font-awesome-icon");return u(),d("div",null,[x("figure",{class:N(["image is-64x64",{"no-icon":!n(e).icon}]),style:{display:"inline-block"}},[n(e).icon?(u(),d("img",{key:0,src:n(S).config.subdirectory+"/storage/icons/"+n(e).icon,alt:a.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,ge)):A("",!0)],2),G(n(ve),null,{default:ie(({mode:f})=>[x("p",{class:N(["is-size-4 has-ellipsis",f=="dark"?"has-text-grey-light":"has-text-grey"])},b(n(e).service),3),x("p",{class:N(["is-size-6 has-ellipsis",f=="dark"?"has-text-grey":"has-text-grey-light"])},b(n(e).account),3),x("p",null,[n(g)?(u(),d("span",we,[G(de,{isVisible:n(g),type:"raw"},null,8,["isVisible"])])):(u(),d("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:E,tabindex:"0",class:N(["otp is-size-1 is-clickable px-3",f=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=X=>$(n(m),!0)),onKeyup:t[1]||(t[1]=ce(X=>$(n(m),!0),["enter"])),title:a.$t("commons.copy_to_clipboard")},b(n(pe)(n(m),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP&&n(O))),43,he))])]),_:1}),j(G(_e,{ref_key:"dots",ref:B},null,512),[[q,U(n(e).otp_type)]]),j(x("p",null,b(a.$t("twofaccounts.forms.counter.label"))+": "+b(n(e).counter),513),[[q,P(n(e).otp_type)]]),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP?(u(),d("p",ke,[x("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=fe(f=>O.value=!n(O),["stop"]))},[n(O)?(u(),M(H,{key:0,icon:["fas","eye"]})):(u(),M(H,{key:1,icon:["fas","eye-slash"]}))])])):A("",!0),n(v)?(u(),M(ye,{key:1,period:n(e).period,generated_at:n(_),autostart:!1,onLoopEnded:t[3]||(t[3]=f=>V()),onLoopStarted:t[4]||(t[4]=f=>K(f)),onSteppedUp:t[5]||(t[5]=f=>K(f)),ref_key:"totpLooper",ref:I},null,8,["period","generated_at"])):A("",!0)])}}};export{xe as _,ye as a,_e as b}; +import{r,v as C,o as R,s as Z,f as u,g as d,F as ee,G as te,i as n,n as N,a as oe,b as ae,Q as ne,S as se,_ as re,x as le,e as ue,h as x,l as A,m as G,p as ie,t as b,w as ce,Y as pe,U as ve,A as j,B as q,k as M,D as fe,K as D,I as z,P as Q}from"./app-60af1d1a.js";import{S as de}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const ye={__name:"TotpLooper",props:{step_count:{type:Number,default:10},period:Number,generated_at:Number,autostart:{type:Boolean,default:!0}},emits:["loop-started","loop-ended","stepped-up"],setup(k,{expose:T,emit:l}){const o=k,s=r(null),i=r(null),S=r(null),y=r(null),c=r(null),p=C(()=>s.value%o.period),h=C(()=>o.period-p.value),w=C(()=>o.period/o.step_count),e=C(()=>{let v=p.value*o.step_count/o.period;return Math.floor(v)+0}),m=(v=null)=>{_(),s.value=v??o.generated_at,l("loop-started",e.value),c.value=e.value,i.value=setTimeout(function(){_(),l("loop-ended")},h.value*1e3);let g=Math.ceil(p.value/w.value)*w.value-p.value;S.value=setTimeout(function(){g>0&&(c.value+=1,l("stepped-up",c.value)),y.value=setInterval(function(){c.value+=1,l("stepped-up",c.value)},w.value*1e3)},g*1e3)},_=()=>{clearTimeout(i.value),clearTimeout(S.value),clearInterval(y.value),c.value=s.value=null};return R(()=>{o.autostart==!0&&m()}),Z(()=>{_()}),T({startLoop:m,clearLooper:_,props:o}),(v,g)=>(u(),d("div"))}},me=["data-is-active"],_e={__name:"Dots",props:{stepCount:{type:Number,default:10},initialIndex:{type:Number,default:null},period:{type:Number,default:null}},setup(k,{expose:T}){const l=k,o=r(0),s=C(()=>o.value==-1);function i(y){o.value=y{isNaN(l.initialIndex)||i(l.initialIndex)}),T({turnOn:i,turnOff:S,props:l}),(y,c)=>(u(),d("ul",{class:N(["dots",{off:n(s)}])},[(u(!0),d(ee,null,te(k.stepCount,p=>(u(),d("li",{key:p,"data-is-active":p==n(o)?!0:null},null,8,me))),128))],2))}},ge=["src","alt"],he=["title"],we={key:1,tabindex:"0",class:"otp is-size-1"},ke={key:0,class:"mt-3"},xe={__name:"OtpDisplay",props:{otp_type:String,account:String,service:String,icon:String,secret:String,digits:Number,algorithm:String,period:null,counter:null,image:String,qrcode:null,uri:String},emits:["please-close-me","increment-hotp","validation-error"],setup(k,{expose:T,emit:l}){const o=k,s=oe(),i=ae(),S=ne("2fauth"),{copy:y,copied:c}=se({legacy:!0}),p=re(),h=r(null),w=r(null),e=r({otp_type:"",account:"",service:"",icon:"",secret:"",digits:null,algorithm:"",period:null,counter:null,image:""}),m=r(""),_=r(null),v=r(!1),g=r(!1),O=r(!1),B=r(),I=r(),E=r();le(()=>o.icon,a=>{a!=null&&(e.value.icon=a)});const Y=async a=>{if(O.value=!1,e.value.otp_type=o.otp_type,e.value.account=o.account,e.value.service=o.service,e.value.icon=o.icon,e.value.secret=o.secret,e.value.digits=o.digits,e.value.algorithm=o.algorithm,e.value.period=o.period,e.value.counter=o.counter,F(),a){h.value=a;const{data:t}=await D.get(h.value);e.value.service=t.service,e.value.account=t.account,e.value.icon=t.icon,e.value.otp_type=t.otp_type,P(t.otp_type)&&t.counter&&(e.value.counter=t.counter)}else o.uri?(w.value=o.uri,e.value.otp_type=o.uri.slice(0,15).toLowerCase()==="otpauth://totp/"?"totp":"hotp"):o.secret?!U(e.value.otp_type)&&!P(e.value.otp_type)&&i.error(new Error(z("errors.not_a_supported_otp_type"))):i.error(new Error(z("errors.cannot_create_otp_without_secret")));try{await V(),W()}catch{L()}};async function V(){F(),await J().then(a=>{let t=a.data;m.value=t.password,s.preferences.copyOtpOnDisplay&&$(t.password),U(t.otp_type)?(_.value=t.generated_at,e.value.period=t.period,v.value=!0,Q().then(()=>{I.value.startLoop()})):P(t.otp_type)&&(e.value.counter=t.counter,l("increment-hotp",{nextHotpCounter:t.counter,nextUri:t.uri}))}).catch(a=>{a.response.status===422&&l("validation-error",a.response)}).finally(()=>{g.value=!1})}function F(){g.value=!0,B.value.turnOff()}function J(){return h.value?D.getOtpById(h.value):w.value?D.getOtpByUri(w.value):D.getOtpByParams(e.value)}function L(){var a;h.value=e.value.counter=_.value=null,e.value.service=e.value.account=e.value.icon=e.value.otp_type=e.value.secret="",m.value="... ...",v.value=!1,(a=I.value)==null||a.clearLooper()}function W(){Q().then(()=>{var a;(a=E.value)==null||a.focus()})}function $(a,t){y(a.replace(/ /g,"")),c&&(s.preferences.kickUserAfter==-1&&(t||!1)===!0&&p.name!="importAccounts"?s.logout({kicked:!0}):s.preferences.closeOtpOnCopy&&(t||!1)===!0&&(l("please-close-me"),O.value=!1,L()),s.preferences.clearSearchOnCopy&&l("please-clear-search"),s.preferences.viewDefaultGroupOnCopy&&(s.preferences.activeGroup=s.preferences.defaultGroup==-1?s.preferences.activeGroup:s.preferences.defaultGroup),i.success({text:z("commons.copied_to_clipboard")}))}function U(a){return a==="totp"||a==="steamtotp"}function P(a){return a==="hotp"}function K(a){B.value.turnOn(a)}return T({show:Y,clearOTP:L}),(a,t)=>{const H=ue("font-awesome-icon");return u(),d("div",null,[x("figure",{class:N(["image is-64x64",{"no-icon":!n(e).icon}]),style:{display:"inline-block"}},[n(e).icon?(u(),d("img",{key:0,src:n(S).config.subdirectory+"/storage/icons/"+n(e).icon,alt:a.$t("twofaccounts.icon_to_illustrate_the_account")},null,8,ge)):A("",!0)],2),G(n(ve),null,{default:ie(({mode:f})=>[x("p",{class:N(["is-size-4 has-ellipsis",f=="dark"?"has-text-grey-light":"has-text-grey"])},b(n(e).service),3),x("p",{class:N(["is-size-6 has-ellipsis",f=="dark"?"has-text-grey":"has-text-grey-light"])},b(n(e).account),3),x("p",null,[n(g)?(u(),d("span",we,[G(de,{isVisible:n(g),type:"raw"},null,8,["isVisible"])])):(u(),d("span",{key:0,id:"otp",role:"log",ref_key:"otpSpanTag",ref:E,tabindex:"0",class:N(["otp is-size-1 is-clickable px-3",f=="dark"?"has-text-white":"has-text-grey-dark"]),onClick:t[0]||(t[0]=X=>$(n(m),!0)),onKeyup:t[1]||(t[1]=ce(X=>$(n(m),!0),["enter"])),title:a.$t("commons.copy_to_clipboard")},b(n(pe)(n(m),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP&&n(O))),43,he))])]),_:1}),j(G(_e,{ref_key:"dots",ref:B},null,512),[[q,U(n(e).otp_type)]]),j(x("p",null,b(a.$t("twofaccounts.forms.counter.label"))+": "+b(n(e).counter),513),[[q,P(n(e).otp_type)]]),n(s).preferences.showOtpAsDot&&n(s).preferences.revealDottedOTP?(u(),d("p",ke,[x("button",{class:"button is-ghost has-text-grey-dark",onClick:t[2]||(t[2]=fe(f=>O.value=!n(O),["stop"]))},[n(O)?(u(),M(H,{key:0,icon:["fas","eye"]})):(u(),M(H,{key:1,icon:["fas","eye-slash"]}))])])):A("",!0),n(v)?(u(),M(ye,{key:1,period:n(e).period,generated_at:n(_),autostart:!1,onLoopEnded:t[3]||(t[3]=f=>V()),onLoopStarted:t[4]||(t[4]=f=>K(f)),onSteppedUp:t[5]||(t[5]=f=>K(f)),ref_key:"totpLooper",ref:I},null,8,["period","generated_at"])):A("",!0)])}}};export{xe as _,ye as a,_e as b}; diff --git a/public/build/assets/QRcode-40be5488.js b/public/build/assets/QRcode-62f040ad.js similarity index 87% rename from public/build/assets/QRcode-40be5488.js rename to public/build/assets/QRcode-62f040ad.js index 70c07fa4..09df2b95 100644 --- a/public/build/assets/QRcode-40be5488.js +++ b/public/build/assets/QRcode-62f040ad.js @@ -1 +1 @@ -import{u as _,_ as m,r as p,$ as f,K as h,e as c,f as n,g as r,h as a,i as t,l as B,m as s,p as g}from"./app-94c6def1.js";import{S as k}from"./Spinner-f03b508f.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const v={class:"modal modal-otp is-active"},C=a("div",{class:"modal-background"},null,-1),V={class:"modal-content"},w={class:"has-text-centered m-5"},b=["src","alt"],F={__name:"QRcode",setup(y){_();const l=m(),e=p();f(()=>{i()});async function i(){const{data:o}=await h.getQrcode(l.params.twofaccountId);e.value=o.qrcode}return(o,R)=>{const u=c("ButtonBackCloseCancel"),d=c("VueFooter");return n(),r("div",v,[C,a("div",V,[a("p",w,[t(e)?(n(),r("img",{key:0,src:t(e),class:"has-background-light",alt:o.$t("commons.image_of_qrcode_to_scan")},null,8,b)):B("",!0),s(k,{isVisible:!t(e),type:"raw",class:"is-size-1"},null,8,["isVisible"])])]),s(d,{showButtons:!0,internalFooterType:"modal"},{default:g(()=>[s(u,{returnTo:{name:"accounts"},action:"close"})]),_:1})])}}};export{F as default}; +import{u as _,_ as m,r as p,$ as f,K as h,e as c,f as n,g as r,h as a,i as t,l as B,m as s,p as g}from"./app-60af1d1a.js";import{S as k}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const v={class:"modal modal-otp is-active"},C=a("div",{class:"modal-background"},null,-1),V={class:"modal-content"},w={class:"has-text-centered m-5"},b=["src","alt"],F={__name:"QRcode",setup(y){_();const l=m(),e=p();f(()=>{i()});async function i(){const{data:o}=await h.getQrcode(l.params.twofaccountId);e.value=o.qrcode}return(o,R)=>{const u=c("ButtonBackCloseCancel"),d=c("VueFooter");return n(),r("div",v,[C,a("div",V,[a("p",w,[t(e)?(n(),r("img",{key:0,src:t(e),class:"has-background-light",alt:o.$t("commons.image_of_qrcode_to_scan")},null,8,b)):B("",!0),s(k,{isVisible:!t(e),type:"raw",class:"is-size-1"},null,8,["isVisible"])])]),s(d,{showButtons:!0,internalFooterType:"modal"},{default:g(()=>[s(u,{returnTo:{name:"accounts"},action:"close"})]),_:1})])}}};export{F as default}; diff --git a/public/build/assets/QrContentDisplay-1899c813.js b/public/build/assets/QrContentDisplay-ea3c63ab.js similarity index 96% rename from public/build/assets/QrContentDisplay-1899c813.js rename to public/build/assets/QrContentDisplay-ea3c63ab.js index 9c38c2ec..1b74bbe6 100644 --- a/public/build/assets/QrContentDisplay-1899c813.js +++ b/public/build/assets/QrContentDisplay-ea3c63ab.js @@ -1 +1 @@ -import{S as h,b as v,e as w,f as r,g as l,h as n,t as s,m as c,p as _,n as y,i as d,I as u,U as g,D as q,l as m,F as $}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=n("div",{class:"too-bad"},null,-1),E={class:"block"},I={key:0,class:"block has-text-link"},B={class:"button is-link is-outlined is-rounded"},F={class:"icon is-small"},S={__name:"QrContentDisplay",props:{qrContent:String},setup(o){const{copy:b}=h({legacy:!0}),k=v();function p(t){var e=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/,a=new RegExp(e);return a.test(t)}function C(t){const e=document.createElement("a");e.setAttribute("href",t),e.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}function f(t){b(t),k.success({text:u("commons.copied_to_clipboard")})}return(t,e)=>{const a=w("FontAwesomeIcon");return r(),l($,null,[x,n("div",E,s(t.$t("errors.data_of_qrcode_is_not_valid_URI")),1),c(d(g),null,{default:_(({mode:i})=>[n("div",{class:y(["block mb-6",i=="dark"?"has-text-light":"has-text-grey-dark"])},s(o.qrContent?o.qrContent:"["+("trans"in t?t.trans:d(u))("commons.nothing")+"]"),3)]),_:1}),o.qrContent?(r(),l("div",I,[n("button",{class:"button is-link is-outlined is-rounded",onClick:e[0]||(e[0]=q(i=>f(o.qrContent),["stop"]))},s(t.$t("commons.copy_to_clipboard")),1)])):m("",!0),p(o.qrContent)?(r(),l("div",{key:1,class:"block has-text-link",onClick:e[1]||(e[1]=i=>C(o.qrContent))},[n("button",B,[n("span",null,s(t.$t("commons.open_in_browser")),1),n("span",F,[c(a,{icon:["fas","external-link-alt"]})])])])):m("",!0)],64)}}};export{S as _}; +import{S as h,b as v,e as w,f as r,g as l,h as n,t as s,m as c,p as _,n as y,i as d,I as u,U as g,D as q,l as m,F as $}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=n("div",{class:"too-bad"},null,-1),E={class:"block"},I={key:0,class:"block has-text-link"},B={class:"button is-link is-outlined is-rounded"},F={class:"icon is-small"},S={__name:"QrContentDisplay",props:{qrContent:String},setup(o){const{copy:b}=h({legacy:!0}),k=v();function p(t){var e=/^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/,a=new RegExp(e);return a.test(t)}function C(t){const e=document.createElement("a");e.setAttribute("href",t),e.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))}function f(t){b(t),k.success({text:u("commons.copied_to_clipboard")})}return(t,e)=>{const a=w("FontAwesomeIcon");return r(),l($,null,[x,n("div",E,s(t.$t("errors.data_of_qrcode_is_not_valid_URI")),1),c(d(g),null,{default:_(({mode:i})=>[n("div",{class:y(["block mb-6",i=="dark"?"has-text-light":"has-text-grey-dark"])},s(o.qrContent?o.qrContent:"["+("trans"in t?t.trans:d(u))("commons.nothing")+"]"),3)]),_:1}),o.qrContent?(r(),l("div",I,[n("button",{class:"button is-link is-outlined is-rounded",onClick:e[0]||(e[0]=q(i=>f(o.qrContent),["stop"]))},s(t.$t("commons.copy_to_clipboard")),1)])):m("",!0),p(o.qrContent)?(r(),l("div",{key:1,class:"block has-text-link",onClick:e[1]||(e[1]=i=>C(o.qrContent))},[n("button",B,[n("span",null,s(t.$t("commons.open_in_browser")),1),n("span",F,[c(a,{icon:["fas","external-link-alt"]})])])])):m("",!0)],64)}}};export{S as _}; diff --git a/public/build/assets/Recover-358a3490.js b/public/build/assets/Recover-d16991a5.js similarity index 94% rename from public/build/assets/Recover-358a3490.js rename to public/build/assets/Recover-d16991a5.js index 964291f4..e610e7c8 100644 --- a/public/build/assets/Recover-358a3490.js +++ b/public/build/assets/Recover-d16991a5.js @@ -1 +1 @@ -import{Q as V,b as B,u as R,_ as g,a2 as $,d as N,a0 as C,e as a,f as D,k as S,p as d,h as u,D as q,i as s,m as l,j as c,t as m,I as A}from"./app-94c6def1.js";import{F as L}from"./Form-88ba26a4.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const W=["onSubmit"],x={class:"field"},I={__name:"Recover",setup(E){const p=V("2fauth"),r=B(),f=R(),i=g(),h=$(p.prefix+"showWebauthnForm",!1),o=N(new L({email:i.query.email,password:"",token:i.query.token,revokeAll:!1}));function _(t){r.clear(),o.post("/webauthn/recover",{returnError:!0}).then(e=>{h.value=!1,f.push({name:"login"})}).catch(e=>{e.response.status===401?r.alert({text:A("auth.forms.authentication_failed"),duration:-1}):e.response.status===422?r.alert({text:e.response.data.message,duration:-1}):r.error(e)})}return C(()=>{r.clear()}),(t,e)=>{const w=a("FormCheckbox"),b=a("FormPasswordField"),v=a("RouterLink"),F=a("FormButtons"),k=a("VueFooter"),y=a("FormWrapper");return D(),S(y,{title:t.$t("auth.webauthn.account_recovery"),punchline:t.$t("auth.webauthn.recover_account_instructions")},{default:d(()=>[u("div",null,[u("form",{onSubmit:q(_,["prevent"]),onKeydown:e[2]||(e[2]=n=>s(o).onKeydown(n))},[l(w,{modelValue:s(o).revokeAll,"onUpdate:modelValue":e[0]||(e[0]=n=>s(o).revokeAll=n),fieldName:"revokeAll",label:"auth.webauthn.disable_all_security_devices",help:"auth.webauthn.disable_all_security_devices_help"},null,8,["modelValue"]),l(b,{modelValue:s(o).password,"onUpdate:modelValue":e[1]||(e[1]=n=>s(o).password=n),fieldName:"password",fieldError:s(o).errors.get("password"),autocomplete:"current-password",showRules:!1,label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),u("div",x,[u("p",null,[c(m(t.$t("auth.forms.forgot_your_password"))+"  ",1),l(v,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":t.$t("auth.forms.reset_your_password")},{default:d(()=>[c(m(t.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])])]),l(F,{submitId:"btnRecover",isBusy:s(o).isBusy,isDisabled:s(o).isDisabled,caption:t.$t("commons.continue"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","isDisabled","caption"])],40,W)]),l(k)]),_:1},8,["title","punchline"])}}};export{I as default}; +import{Q as V,b as B,u as R,_ as g,a2 as $,d as N,a0 as C,e as a,f as D,k as S,p as d,h as u,D as q,i as s,m as l,j as c,t as m,I as A}from"./app-60af1d1a.js";import{F as L}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const W=["onSubmit"],x={class:"field"},I={__name:"Recover",setup(E){const p=V("2fauth"),r=B(),f=R(),i=g(),h=$(p.prefix+"showWebauthnForm",!1),o=N(new L({email:i.query.email,password:"",token:i.query.token,revokeAll:!1}));function _(t){r.clear(),o.post("/webauthn/recover",{returnError:!0}).then(e=>{h.value=!1,f.push({name:"login"})}).catch(e=>{e.response.status===401?r.alert({text:A("auth.forms.authentication_failed"),duration:-1}):e.response.status===422?r.alert({text:e.response.data.message,duration:-1}):r.error(e)})}return C(()=>{r.clear()}),(t,e)=>{const w=a("FormCheckbox"),b=a("FormPasswordField"),v=a("RouterLink"),F=a("FormButtons"),k=a("VueFooter"),y=a("FormWrapper");return D(),S(y,{title:t.$t("auth.webauthn.account_recovery"),punchline:t.$t("auth.webauthn.recover_account_instructions")},{default:d(()=>[u("div",null,[u("form",{onSubmit:q(_,["prevent"]),onKeydown:e[2]||(e[2]=n=>s(o).onKeydown(n))},[l(w,{modelValue:s(o).revokeAll,"onUpdate:modelValue":e[0]||(e[0]=n=>s(o).revokeAll=n),fieldName:"revokeAll",label:"auth.webauthn.disable_all_security_devices",help:"auth.webauthn.disable_all_security_devices_help"},null,8,["modelValue"]),l(b,{modelValue:s(o).password,"onUpdate:modelValue":e[1]||(e[1]=n=>s(o).password=n),fieldName:"password",fieldError:s(o).errors.get("password"),autocomplete:"current-password",showRules:!1,label:"auth.forms.current_password.label",help:"auth.forms.current_password.help"},null,8,["modelValue","fieldError"]),u("div",x,[u("p",null,[c(m(t.$t("auth.forms.forgot_your_password"))+"  ",1),l(v,{id:"lnkResetPwd",to:{name:"password.request"},class:"is-link","aria-label":t.$t("auth.forms.reset_your_password")},{default:d(()=>[c(m(t.$t("auth.forms.request_password_reset")),1)]),_:1},8,["to","aria-label"])])]),l(F,{submitId:"btnRecover",isBusy:s(o).isBusy,isDisabled:s(o).isDisabled,caption:t.$t("commons.continue"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","isDisabled","caption"])],40,W)]),l(k)]),_:1},8,["title","punchline"])}}};export{I as default}; diff --git a/public/build/assets/Register-5477e1ea.js b/public/build/assets/Register-9acf7d81.js similarity index 96% rename from public/build/assets/Register-5477e1ea.js rename to public/build/assets/Register-9acf7d81.js index 00c8b2bd..94df5be9 100644 --- a/public/build/assets/Register-5477e1ea.js +++ b/public/build/assets/Register-9acf7d81.js @@ -1 +1 @@ -import{a as T,b as C,u as I,r as F,d as k,a0 as K,e as l,f as u,g as _,i as t,k as V,p as c,m as n,h as i,j as p,t as d,D,I as U}from"./app-94c6def1.js";import{F as B}from"./Form-88ba26a4.js";import{w as W}from"./webauthnService-d9fc6500.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const P={key:0,class:"field"},M={id:"lblDeviceRegistrationSuccess",class:"label mb-5"},j=["onSubmit"],A={key:1,class:"field is-grouped"},J={class:"control"},O={class:"control"},Y=["onSubmit"],q={class:"nav-links"},X={__name:"Register",setup(z){const b=T(),m=C(),R=I(),w=F(!1),f=F(null),s=k(new B({name:"",email:"",password:"",password_confirmation:""})),r=k(new B({name:""}));async function S(o){s.password_confirmation=s.password,s.post("/user").then(e=>{b.$patch({name:e.data.name,email:e.data.email,preferences:e.data.preferences,isAdmin:e.data.is_admin??!1}),b.applyTheme(),w.value=!0})}function N(){W.register().then(o=>{const e=JSON.parse(o.config.data);f.value=e.id}).catch(o=>{o.response.status===422?m.alert({text:o.response.data.message}):m.error(o)})}function E(o){r.patch("/webauthn/credentials/"+f.value+"/name").then(()=>{m.success({text:U("auth.webauthn.device_successfully_registered")}),R.push({name:"accounts"})})}return K(()=>{m.clear()}),(o,e)=>{const $=l("font-awesome-icon"),h=l("FormField"),g=l("FormButtons"),y=l("RouterLink"),v=l("FormWrapper"),x=l("FormPasswordField"),L=l("VueFooter");return u(),_("div",null,[t(w)?(u(),V(v,{key:0,title:"auth.authentication",punchline:"auth.webauthn.enhance_security_using_webauthn"},{default:c(()=>[t(f)?(u(),_("div",P,[i("label",M,[p(d(o.$t("auth.webauthn.device_successfully_registered"))+" ",1),n($,{icon:["fas","check"]})]),i("form",{onSubmit:D(E,["prevent"]),onKeydown:e[1]||(e[1]=a=>t(r).onKeydown(a))},[n(h,{modelValue:t(r).name,"onUpdate:modelValue":e[0]||(e[0]=a=>t(r).name=a),fieldName:"name",fieldError:t(r).errors.get("name"),inputType:"text",placeholder:"iPhone 12, TouchID, Yubikey 5C",label:"auth.forms.name_this_device"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(r).isBusy,isDisabled:t(r).isDisabled,caption:"commons.continue"},null,8,["isBusy","isDisabled"])],40,j)])):(u(),_("div",A,[i("div",J,[i("button",{type:"button",id:"btnRegisterNewDevice",onClick:e[2]||(e[2]=a=>N()),class:"button is-link"},d(o.$t("auth.webauthn.register_a_device")),1)]),i("div",O,[n(y,{id:"btnMaybeLater",to:{name:"accounts"},class:"button is-text"},{default:c(()=>[p(d(o.$t("auth.maybe_later")),1)]),_:1})])]))]),_:1})):(u(),V(v,{key:1,title:"auth.register",punchline:"auth.forms.register_punchline"},{default:c(()=>[i("form",{onSubmit:D(S,["prevent"]),onKeydown:e[6]||(e[6]=a=>t(s).onKeydown(a))},[n(h,{modelValue:t(s).name,"onUpdate:modelValue":e[3]||(e[3]=a=>t(s).name=a),fieldName:"name",fieldError:t(s).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),n(h,{modelValue:t(s).email,"onUpdate:modelValue":e[4]||(e[4]=a=>t(s).email=a),fieldName:"email",fieldError:t(s).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),n(x,{modelValue:t(s).password,"onUpdate:modelValue":e[5]||(e[5]=a=>t(s).password=a),fieldName:"password",fieldError:t(s).errors.get("password"),showRules:!0,label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(s).isBusy,isDisabled:t(s).isDisabled,caption:"auth.register",submitId:"btnRegister"},null,8,["isBusy","isDisabled"])],40,Y),i("div",q,[i("p",null,[p(d(o.$t("auth.forms.already_register"))+" ",1),n(y,{id:"lnkSignIn",to:{name:"login"},class:"is-link"},{default:c(()=>[p(d(o.$t("auth.sign_in")),1)]),_:1})])])]),_:1})),n(L)])}}};export{X as default}; +import{a as T,b as C,u as I,r as F,d as k,a0 as K,e as l,f as u,g as _,i as t,k as V,p as c,m as n,h as i,j as p,t as d,D,I as U}from"./app-60af1d1a.js";import{F as B}from"./Form-0a788c90.js";import{w as W}from"./webauthnService-1f4ca5dc.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const P={key:0,class:"field"},M={id:"lblDeviceRegistrationSuccess",class:"label mb-5"},j=["onSubmit"],A={key:1,class:"field is-grouped"},J={class:"control"},O={class:"control"},Y=["onSubmit"],q={class:"nav-links"},X={__name:"Register",setup(z){const b=T(),m=C(),R=I(),w=F(!1),f=F(null),s=k(new B({name:"",email:"",password:"",password_confirmation:""})),r=k(new B({name:""}));async function S(o){s.password_confirmation=s.password,s.post("/user").then(e=>{b.$patch({name:e.data.name,email:e.data.email,preferences:e.data.preferences,isAdmin:e.data.is_admin??!1}),b.applyTheme(),w.value=!0})}function N(){W.register().then(o=>{const e=JSON.parse(o.config.data);f.value=e.id}).catch(o=>{o.response.status===422?m.alert({text:o.response.data.message}):m.error(o)})}function E(o){r.patch("/webauthn/credentials/"+f.value+"/name").then(()=>{m.success({text:U("auth.webauthn.device_successfully_registered")}),R.push({name:"accounts"})})}return K(()=>{m.clear()}),(o,e)=>{const $=l("font-awesome-icon"),h=l("FormField"),g=l("FormButtons"),y=l("RouterLink"),v=l("FormWrapper"),x=l("FormPasswordField"),L=l("VueFooter");return u(),_("div",null,[t(w)?(u(),V(v,{key:0,title:"auth.authentication",punchline:"auth.webauthn.enhance_security_using_webauthn"},{default:c(()=>[t(f)?(u(),_("div",P,[i("label",M,[p(d(o.$t("auth.webauthn.device_successfully_registered"))+" ",1),n($,{icon:["fas","check"]})]),i("form",{onSubmit:D(E,["prevent"]),onKeydown:e[1]||(e[1]=a=>t(r).onKeydown(a))},[n(h,{modelValue:t(r).name,"onUpdate:modelValue":e[0]||(e[0]=a=>t(r).name=a),fieldName:"name",fieldError:t(r).errors.get("name"),inputType:"text",placeholder:"iPhone 12, TouchID, Yubikey 5C",label:"auth.forms.name_this_device"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(r).isBusy,isDisabled:t(r).isDisabled,caption:"commons.continue"},null,8,["isBusy","isDisabled"])],40,j)])):(u(),_("div",A,[i("div",J,[i("button",{type:"button",id:"btnRegisterNewDevice",onClick:e[2]||(e[2]=a=>N()),class:"button is-link"},d(o.$t("auth.webauthn.register_a_device")),1)]),i("div",O,[n(y,{id:"btnMaybeLater",to:{name:"accounts"},class:"button is-text"},{default:c(()=>[p(d(o.$t("auth.maybe_later")),1)]),_:1})])]))]),_:1})):(u(),V(v,{key:1,title:"auth.register",punchline:"auth.forms.register_punchline"},{default:c(()=>[i("form",{onSubmit:D(S,["prevent"]),onKeydown:e[6]||(e[6]=a=>t(s).onKeydown(a))},[n(h,{modelValue:t(s).name,"onUpdate:modelValue":e[3]||(e[3]=a=>t(s).name=a),fieldName:"name",fieldError:t(s).errors.get("name"),inputType:"text",label:"auth.forms.name",maxLength:255,autofocus:""},null,8,["modelValue","fieldError"]),n(h,{modelValue:t(s).email,"onUpdate:modelValue":e[4]||(e[4]=a=>t(s).email=a),fieldName:"email",fieldError:t(s).errors.get("email"),inputType:"email",label:"auth.forms.email",maxLength:255},null,8,["modelValue","fieldError"]),n(x,{modelValue:t(s).password,"onUpdate:modelValue":e[5]||(e[5]=a=>t(s).password=a),fieldName:"password",fieldError:t(s).errors.get("password"),showRules:!0,label:"auth.forms.password"},null,8,["modelValue","fieldError"]),n(g,{isBusy:t(s).isBusy,isDisabled:t(s).isDisabled,caption:"auth.register",submitId:"btnRegister"},null,8,["isBusy","isDisabled"])],40,Y),i("div",q,[i("p",null,[p(d(o.$t("auth.forms.already_register"))+" ",1),n(y,{id:"lnkSignIn",to:{name:"login"},class:"is-link"},{default:c(()=>[p(d(o.$t("auth.sign_in")),1)]),_:1})])])]),_:1})),n(L)])}}};export{X as default}; diff --git a/public/build/assets/RequestReset-ae792188.js b/public/build/assets/RequestReset-9775b58f.js similarity index 91% rename from public/build/assets/RequestReset-ae792188.js rename to public/build/assets/RequestReset-9775b58f.js index e9bc6b2d..89abbea0 100644 --- a/public/build/assets/RequestReset-ae792188.js +++ b/public/build/assets/RequestReset-9775b58f.js @@ -1 +1 @@ -import{b as f,_,d as h,a0 as w,e as r,f as F,k as b,p as y,h as B,m as i,i as s,D as V}from"./app-94c6def1.js";import{F as v}from"./Form-88ba26a4.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const R=["onSubmit"],S={__name:"RequestReset",setup(k){const o=f(),n=_().name=="webauthn.lost",t=h(new v({email:""}));function l(a){o.clear(),t.post(n?"/webauthn/lost":"/user/password/lost",{returnError:!0}).then(e=>{o.success({text:e.data.message,duration:-1})}).catch(e=>{e.response.data.requestFailed?o.alert({text:e.response.data.requestFailed,duration:-1}):e.response.status!==422&&o.error(e)})}return w(()=>{o.clear()}),(a,e)=>{const m=r("FormField"),c=r("FormButtons"),d=r("VueFooter"),p=r("FormWrapper");return F(),b(p,{title:a.$t(n?"auth.webauthn.account_recovery":"auth.forms.reset_password"),punchline:a.$t(n?"auth.webauthn.recovery_punchline":"auth.forms.reset_punchline")},{default:y(()=>[B("form",{onSubmit:V(l,["prevent"]),onKeydown:e[1]||(e[1]=u=>s(t).onKeydown(u))},[i(m,{modelValue:s(t).email,"onUpdate:modelValue":e[0]||(e[0]=u=>s(t).email=u),fieldName:"email",fieldError:s(t).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),i(c,{submitId:"btnSendResetPwd",isBusy:s(t).isBusy,caption:a.$t(n?"auth.webauthn.send_recovery_link":"auth.forms.send_password_reset_link"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])],40,R),i(d)]),_:1},8,["title","punchline"])}}};export{S as default}; +import{b as f,_,d as h,a0 as w,e as r,f as F,k as b,p as y,h as B,m as i,i as s,D as V}from"./app-60af1d1a.js";import{F as v}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const R=["onSubmit"],S={__name:"RequestReset",setup(k){const o=f(),n=_().name=="webauthn.lost",t=h(new v({email:""}));function l(a){o.clear(),t.post(n?"/webauthn/lost":"/user/password/lost",{returnError:!0}).then(e=>{o.success({text:e.data.message,duration:-1})}).catch(e=>{e.response.data.requestFailed?o.alert({text:e.response.data.requestFailed,duration:-1}):e.response.status!==422&&o.error(e)})}return w(()=>{o.clear()}),(a,e)=>{const m=r("FormField"),c=r("FormButtons"),d=r("VueFooter"),p=r("FormWrapper");return F(),b(p,{title:a.$t(n?"auth.webauthn.account_recovery":"auth.forms.reset_password"),punchline:a.$t(n?"auth.webauthn.recovery_punchline":"auth.forms.reset_punchline")},{default:y(()=>[B("form",{onSubmit:V(l,["prevent"]),onKeydown:e[1]||(e[1]=u=>s(t).onKeydown(u))},[i(m,{modelValue:s(t).email,"onUpdate:modelValue":e[0]||(e[0]=u=>s(t).email=u),fieldName:"email",fieldError:s(t).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),i(c,{submitId:"btnSendResetPwd",isBusy:s(t).isBusy,caption:a.$t(n?"auth.webauthn.send_recovery_link":"auth.forms.send_password_reset_link"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])],40,R),i(d)]),_:1},8,["title","punchline"])}}};export{S as default}; diff --git a/public/build/assets/Reset-d53fbaa6.js b/public/build/assets/Reset-4749a3f6.js similarity index 96% rename from public/build/assets/Reset-d53fbaa6.js rename to public/build/assets/Reset-4749a3f6.js index 10672de7..d3ed69c0 100644 --- a/public/build/assets/Reset-d53fbaa6.js +++ b/public/build/assets/Reset-4749a3f6.js @@ -1 +1 @@ -import{b as g,u as B,_ as h,r as R,d as E,a0 as N,e as s,f as i,k as l,p as c,h as v,m as d,i as t,l as m,j as C,t as P,D as L}from"./app-94c6def1.js";import{F as S}from"./Form-88ba26a4.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=["onSubmit"],K={__name:"Reset",setup(D){const a=g();B();const p=h(),u=R(!0),e=E(new S({email:p.query.email,password:"",password_confirmation:"",token:p.query.token}));function f(n){e.password_confirmation=e.password,e.post("/user/password/reset",{returnError:!0}).then(o=>{e.password="",e.password_confirmation="",u.value=!1,a.success({text:o.data.message,duration:-1})}).catch(o=>{o.response.data.resetFailed?a.alert({text:o.response.data.resetFailed,duration:-1}):o.response.status!==422&&a.error(o)})}return N(()=>{a.clear()}),(n,o)=>{const w=s("FormField"),_=s("FormPasswordField"),F=s("FieldError"),k=s("FormButtons"),y=s("RouterLink"),V=s("VueFooter"),b=s("FormWrapper");return i(),l(b,{title:n.$t("auth.forms.new_password")},{default:c(()=>[v("form",{onSubmit:L(f,["prevent"]),onKeydown:o[2]||(o[2]=r=>t(e).onKeydown(r))},[d(w,{modelValue:t(e).email,"onUpdate:modelValue":o[0]||(o[0]=r=>t(e).email=r),isDisabled:!0,fieldName:"email",fieldError:t(e).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),d(_,{modelValue:t(e).password,"onUpdate:modelValue":o[1]||(o[1]=r=>t(e).password=r),fieldName:"password",fieldError:t(e).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),t(e).errors.get("token")!=null?(i(),l(F,{key:0,error:t(e).errors.get("token"),field:t(e).token},null,8,["error","field"])):m("",!0),t(u)?(i(),l(k,{key:1,submitId:"btnResetPwd",isBusy:t(e).isBusy,caption:n.$t("auth.forms.change_password"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])):m("",!0),t(u)?m("",!0):(i(),l(y,{key:2,id:"btnContinue",to:{name:"accounts"},class:"button is-link"},{default:c(()=>[C(P(n.$t("commons.continue")),1)]),_:1}))],40,x),d(V)]),_:1},8,["title"])}}};export{K as default}; +import{b as g,u as B,_ as h,r as R,d as E,a0 as N,e as s,f as i,k as l,p as c,h as v,m as d,i as t,l as m,j as C,t as P,D as L}from"./app-60af1d1a.js";import{F as S}from"./Form-0a788c90.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const x=["onSubmit"],K={__name:"Reset",setup(D){const a=g();B();const p=h(),u=R(!0),e=E(new S({email:p.query.email,password:"",password_confirmation:"",token:p.query.token}));function f(n){e.password_confirmation=e.password,e.post("/user/password/reset",{returnError:!0}).then(o=>{e.password="",e.password_confirmation="",u.value=!1,a.success({text:o.data.message,duration:-1})}).catch(o=>{o.response.data.resetFailed?a.alert({text:o.response.data.resetFailed,duration:-1}):o.response.status!==422&&a.error(o)})}return N(()=>{a.clear()}),(n,o)=>{const w=s("FormField"),_=s("FormPasswordField"),F=s("FieldError"),k=s("FormButtons"),y=s("RouterLink"),V=s("VueFooter"),b=s("FormWrapper");return i(),l(b,{title:n.$t("auth.forms.new_password")},{default:c(()=>[v("form",{onSubmit:L(f,["prevent"]),onKeydown:o[2]||(o[2]=r=>t(e).onKeydown(r))},[d(w,{modelValue:t(e).email,"onUpdate:modelValue":o[0]||(o[0]=r=>t(e).email=r),isDisabled:!0,fieldName:"email",fieldError:t(e).errors.get("email"),label:"auth.forms.email",autofocus:""},null,8,["modelValue","fieldError"]),d(_,{modelValue:t(e).password,"onUpdate:modelValue":o[1]||(o[1]=r=>t(e).password=r),fieldName:"password",fieldError:t(e).errors.get("password"),autocomplete:"new-password",showRules:!0,label:"auth.forms.new_password"},null,8,["modelValue","fieldError"]),t(e).errors.get("token")!=null?(i(),l(F,{key:0,error:t(e).errors.get("token"),field:t(e).token},null,8,["error","field"])):m("",!0),t(u)?(i(),l(k,{key:1,submitId:"btnResetPwd",isBusy:t(e).isBusy,caption:n.$t("auth.forms.change_password"),showCancelButton:!0,cancelLandingView:"login"},null,8,["isBusy","caption"])):m("",!0),t(u)?m("",!0):(i(),l(y,{key:2,id:"btnContinue",to:{name:"accounts"},class:"button is-link"},{default:c(()=>[C(P(n.$t("commons.continue")),1)]),_:1}))],40,x),d(V)]),_:1},8,["title"])}}};export{K as default}; diff --git a/public/build/assets/SearchBox-23302ff7.js b/public/build/assets/SearchBox-62743462.js similarity index 95% rename from public/build/assets/SearchBox-23302ff7.js rename to public/build/assets/SearchBox-62743462.js index 35889491..d9c5d419 100644 --- a/public/build/assets/SearchBox-23302ff7.js +++ b/public/build/assets/SearchBox-62743462.js @@ -1 +1 @@ -import{r as d,o as u,s as h,e as m,f as n,g as c,h as a,n as k,k as p}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y={role:"search",class:"field"},f={class:"control has-icons-right"},v=["aria-label","title","placeholder","value"],g={class:"icon is-small is-right"},w=["title"],b={__name:"SearchBox",props:{keyword:String,hasNoBackground:{type:Boolean,default:!1},placeholder:String},setup(t){const s=d(null);u(()=>{document.addEventListener("keydown",r)}),h(()=>{document.removeEventListener("keydown",r)});function r(e){var o;e.key==="f"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),(o=s.value)==null||o.focus())}return(e,o)=>{const i=m("FontAwesomeIcon");return n(),c("div",y,[a("div",f,[a("input",{ref_key:"searchInput",ref:s,id:"txtSearch",type:"search",tabindex:"1","aria-label":e.$t("commons.search"),title:e.$t("commons.search"),placeholder:t.placeholder,class:k(["input is-rounded is-search",{"has-no-background":t.hasNoBackground}]),value:t.keyword,onKeyup:o[0]||(o[0]=l=>e.$emit("update:keyword",l.target.value))},null,42,v),a("span",g,[t.keyword!=""?(n(),c("button",{key:0,id:"btnClearSearch",tabindex:"1",title:e.$t("commons.clear_search"),class:"clear-selection delete",onClick:o[1]||(o[1]=l=>e.$emit("update:keyword",""))},null,8,w)):(n(),p(i,{key:1,icon:["fas","search"]}))])])])}}};export{b as _}; +import{r as d,o as u,s as h,e as m,f as n,g as c,h as a,n as k,k as p}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const y={role:"search",class:"field"},f={class:"control has-icons-right"},v=["aria-label","title","placeholder","value"],g={class:"icon is-small is-right"},w=["title"],b={__name:"SearchBox",props:{keyword:String,hasNoBackground:{type:Boolean,default:!1},placeholder:String},setup(t){const s=d(null);u(()=>{document.addEventListener("keydown",r)}),h(()=>{document.removeEventListener("keydown",r)});function r(e){var o;e.key==="f"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),(o=s.value)==null||o.focus())}return(e,o)=>{const i=m("FontAwesomeIcon");return n(),c("div",y,[a("div",f,[a("input",{ref_key:"searchInput",ref:s,id:"txtSearch",type:"search",tabindex:"1","aria-label":e.$t("commons.search"),title:e.$t("commons.search"),placeholder:t.placeholder,class:k(["input is-rounded is-search",{"has-no-background":t.hasNoBackground}]),value:t.keyword,onKeyup:o[0]||(o[0]=l=>e.$emit("update:keyword",l.target.value))},null,42,v),a("span",g,[t.keyword!=""?(n(),c("button",{key:0,id:"btnClearSearch",tabindex:"1",title:e.$t("commons.clear_search"),class:"clear-selection delete",onClick:o[1]||(o[1]=l=>e.$emit("update:keyword",""))},null,8,w)):(n(),p(i,{key:1,icon:["fas","search"]}))])])])}}};export{b as _}; diff --git a/public/build/assets/SettingTabs-beebcb43.js b/public/build/assets/SettingTabs-0b59e581.js similarity index 93% rename from public/build/assets/SettingTabs-beebcb43.js rename to public/build/assets/SettingTabs-0b59e581.js index b2ccec25..ada4a48d 100644 --- a/public/build/assets/SettingTabs-beebcb43.js +++ b/public/build/assets/SettingTabs-0b59e581.js @@ -1 +1 @@ -import{r as m,e as n,f as t,g as s,m as a,p as i,h as o,F as v,G as _,i as h,n as g,j as w,t as k}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const f={class:"options-header"},b={class:"tabs is-centered is-fullwidth"},R={__name:"SettingTabs",props:{activeTab:{type:String,default:""}},setup(r){const c=r,l=m([{name:"settings.options",view:"settings.options",id:"lnkTabOptions"},{name:"settings.account",view:"settings.account",id:"lnkTabAccount"},{name:"settings.oauth",view:"settings.oauth.tokens",id:"lnkTabOAuth"},{name:"settings.webauthn",view:"settings.webauthn.devices",id:"lnkTabWebauthn"}]);return(u,T)=>{const d=n("RouterLink"),p=n("ResponsiveWidthWrapper");return t(),s("div",f,[a(p,null,{default:i(()=>[o("div",b,[o("ul",null,[(t(!0),s(v,null,_(h(l),e=>(t(),s("li",{key:e.view,class:g({"is-active":e.view===c.activeTab})},[a(d,{id:e.id,to:{name:e.view}},{default:i(()=>[w(k(u.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{R as _}; +import{r as m,e as n,f as t,g as s,m as a,p as i,h as o,F as v,G as _,i as h,n as g,j as w,t as k}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const f={class:"options-header"},b={class:"tabs is-centered is-fullwidth"},R={__name:"SettingTabs",props:{activeTab:{type:String,default:""}},setup(r){const c=r,l=m([{name:"settings.options",view:"settings.options",id:"lnkTabOptions"},{name:"settings.account",view:"settings.account",id:"lnkTabAccount"},{name:"settings.oauth",view:"settings.oauth.tokens",id:"lnkTabOAuth"},{name:"settings.webauthn",view:"settings.webauthn.devices",id:"lnkTabWebauthn"}]);return(u,T)=>{const d=n("RouterLink"),p=n("ResponsiveWidthWrapper");return t(),s("div",f,[a(p,null,{default:i(()=>[o("div",b,[o("ul",null,[(t(!0),s(v,null,_(h(l),e=>(t(),s("li",{key:e.view,class:g({"is-active":e.view===c.activeTab})},[a(d,{id:e.id,to:{name:e.view}},{default:i(()=>[w(k(u.$t(e.name)),1)]),_:2},1032,["id","to"])],2))),128))])])]),_:1})])}}};export{R as _}; diff --git a/public/build/assets/Spinner-f03b508f.js b/public/build/assets/Spinner-bfa27d3a.js similarity index 94% rename from public/build/assets/Spinner-f03b508f.js rename to public/build/assets/Spinner-bfa27d3a.js index 1cc4bb10..597cba80 100644 --- a/public/build/assets/Spinner-f03b508f.js +++ b/public/build/assets/Spinner-bfa27d3a.js @@ -1 +1 @@ -import{a5 as p,e as l,f as n,g as t,h as e,m as a,t as c,l as r,k as d}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const _={key:0},m={key:0,class:"spinner-container"},y={class:"spinner-wrapper"},u={id:"icnSpinnerFull",class:"is-size-1 spinner"},f={key:1,class:"spinner-overlay-container"},h={class:"spinner-wrapper"},v={id:"icnSpinnerFull",class:"is-size-1 spinner"},g={key:3,class:"has-text-centered mt-6"},S={id:"icnSpinner",class:"is-size-4"},k={__name:"Spinner",props:{isVisible:Boolean,type:{type:String,default:"inline"},message:{type:String,default:"commons.generating_otp"}},setup(s){return(o,w)=>{const i=l("FontAwesomeIcon");return s.isVisible?(n(),t("div",_,[s.type=="fullscreen"?(n(),t("div",m,[e("div",y,[e("span",u,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):r("",!0),s.type=="fullscreen-overlay"?(n(),t("div",f,[e("div",h,[e("span",v,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):s.type=="raw"?(n(),d(i,{key:2,icon:["fas","spinner"],spin:""})):(n(),t("div",g,[e("span",S,[a(i,{icon:["fas","spinner"],spin:""})])]))])):r("",!0)}}},V=p(k,[["__scopeId","data-v-247a4fa7"]]);export{V as S}; +import{a5 as p,e as l,f as n,g as t,h as e,m as a,t as c,l as r,k as d}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const _={key:0},m={key:0,class:"spinner-container"},y={class:"spinner-wrapper"},u={id:"icnSpinnerFull",class:"is-size-1 spinner"},f={key:1,class:"spinner-overlay-container"},h={class:"spinner-wrapper"},v={id:"icnSpinnerFull",class:"is-size-1 spinner"},g={key:3,class:"has-text-centered mt-6"},S={id:"icnSpinner",class:"is-size-4"},k={__name:"Spinner",props:{isVisible:Boolean,type:{type:String,default:"inline"},message:{type:String,default:"commons.generating_otp"}},setup(s){return(o,w)=>{const i=l("FontAwesomeIcon");return s.isVisible?(n(),t("div",_,[s.type=="fullscreen"?(n(),t("div",m,[e("div",y,[e("span",u,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):r("",!0),s.type=="fullscreen-overlay"?(n(),t("div",f,[e("div",h,[e("span",v,[a(i,{icon:["fas","spinner"],spin:""})]),e("span",null,c(o.$t(s.message)),1)])])):s.type=="raw"?(n(),d(i,{key:2,icon:["fas","spinner"],spin:""})):(n(),t("div",g,[e("span",S,[a(i,{icon:["fas","spinner"],spin:""})])]))])):r("",!0)}}},V=p(k,[["__scopeId","data-v-247a4fa7"]]);export{V as S}; diff --git a/public/build/assets/Start-4db59337.js b/public/build/assets/Start-616d9df7.js similarity index 96% rename from public/build/assets/Start-4db59337.js rename to public/build/assets/Start-616d9df7.js index e48c3c07..70c1b514 100644 --- a/public/build/assets/Start-4db59337.js +++ b/public/build/assets/Start-616d9df7.js @@ -1 +1 @@ -import{u as U,a as V,b as A,c as E,r as w,d as N,o as R,e as d,f as a,g as f,h as t,n as C,i as o,j as r,t as s,w as g,k as B,l as b,m as p,p as m,U as S}from"./app-94c6def1.js";import{F as K}from"./Form-88ba26a4.js";import{u as M}from"./bus-d94d2521.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"container has-text-centered"},T={class:"columns quick-uploader"},D=t("br",null,null,-1),j={class:"column is-full quick-uploader-button"},z={class:"quick-uploader-centerer"},G={class:"column is-full"},H={key:0,class:"block has-text-link"},J={class:"block has-text-link"},O={class:"block has-text-link"},Z={__name:"Start",setup(P){const k=U(),i=V(),h=M(),$=A(),v=E(),_=w(null),c=w(null),u=N(new K({qrcode:null,inputFormat:"fileUpload"}));function y(){u.clear(),u.qrcode=_.value.files[0],u.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{e.data.data.slice(0,33).toLowerCase()==="otpauth-migration://offline?data="?(h.migrationUri=e.data.data,k.push({name:"importAccounts"})):(h.decodedUri=e.data.data,k.push({name:"createAccount"}))}).catch(e=>{e.response.status!==422&&$.alert({text:e.response.data.message})})}function x(){k.push({name:"capture"})}return R(()=>{i.preferences.useDirectCapture&&i.preferences.defaultCaptureMode==="upload"&&c.value.click()}),(e,n)=>{const F=d("FieldError"),q=d("RouterLink"),I=d("ButtonBackCloseCancel"),L=d("VueFooter");return a(),f("div",Q,[t("div",T,[t("div",{class:C(["column is-full quick-uploader-header",{"is-invisible":o(v).count!==0}])},[r(s(e.$t("twofaccounts.no_account_here")),1),D,r(" "+s(e.$t("twofaccounts.add_first_account")),1)],2),t("div",j,[t("div",z,[o(i).preferences.useBasicQrcodeReader?(a(),f("label",{key:0,role:"button",tabindex:"0",class:"button is-link is-medium is-rounded is-main",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[0]||(n[0]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)):(a(),f("button",{key:1,class:"button is-link is-medium is-rounded is-main",onClick:n[1]||(n[1]=l=>x())},s(e.$t("twofaccounts.forms.scan_qrcode")),1))]),o(u).errors.hasAny("qrcode")?(a(),B(F,{key:0,error:o(u).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):b("",!0)]),t("div",G,[p(o(S),null,{default:m(({mode:l})=>[t("div",{class:C(["block",l=="dark"?"has-text-light":"has-text-grey-dark"])},s(e.$t("twofaccounts.forms.alternative_methods")),3)]),_:1}),o(i).preferences.useBasicQrcodeReader?b("",!0):(a(),f("div",H,[t("label",{role:"button",tabindex:"0",class:"button is-link is-outlined is-rounded",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[2]||(n[2]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)])),t("div",J,[p(q,{class:"button is-link is-outlined is-rounded",to:{name:"createAccount"}},{default:m(()=>[r(s(e.$t("twofaccounts.forms.use_advanced_form")),1)]),_:1})]),t("div",O,[p(q,{id:"btnImport",class:"button is-link is-outlined is-rounded",to:{name:"importAccounts"}},{default:m(()=>[r(s(e.$t("twofaccounts.import.import")),1)]),_:1})])])]),p(L,{showButtons:!0},{default:m(()=>[o(v).isEmpty?b("",!0):(a(),B(I,{key:0,returnTo:{name:"accounts"},action:"back"}))]),_:1})])}}};export{Z as default}; +import{u as U,a as V,b as A,c as E,r as w,d as N,o as R,e as d,f as a,g as f,h as t,n as C,i as o,j as r,t as s,w as g,k as B,l as b,m as p,p as m,U as S}from"./app-60af1d1a.js";import{F as K}from"./Form-0a788c90.js";import{u as M}from"./bus-ab2b6d74.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const Q={class:"container has-text-centered"},T={class:"columns quick-uploader"},D=t("br",null,null,-1),j={class:"column is-full quick-uploader-button"},z={class:"quick-uploader-centerer"},G={class:"column is-full"},H={key:0,class:"block has-text-link"},J={class:"block has-text-link"},O={class:"block has-text-link"},Z={__name:"Start",setup(P){const k=U(),i=V(),h=M(),$=A(),v=E(),_=w(null),c=w(null),u=N(new K({qrcode:null,inputFormat:"fileUpload"}));function y(){u.clear(),u.qrcode=_.value.files[0],u.upload("/api/v1/qrcode/decode",{returnError:!0}).then(e=>{e.data.data.slice(0,33).toLowerCase()==="otpauth-migration://offline?data="?(h.migrationUri=e.data.data,k.push({name:"importAccounts"})):(h.decodedUri=e.data.data,k.push({name:"createAccount"}))}).catch(e=>{e.response.status!==422&&$.alert({text:e.response.data.message})})}function x(){k.push({name:"capture"})}return R(()=>{i.preferences.useDirectCapture&&i.preferences.defaultCaptureMode==="upload"&&c.value.click()}),(e,n)=>{const F=d("FieldError"),q=d("RouterLink"),I=d("ButtonBackCloseCancel"),L=d("VueFooter");return a(),f("div",Q,[t("div",T,[t("div",{class:C(["column is-full quick-uploader-header",{"is-invisible":o(v).count!==0}])},[r(s(e.$t("twofaccounts.no_account_here")),1),D,r(" "+s(e.$t("twofaccounts.add_first_account")),1)],2),t("div",j,[t("div",z,[o(i).preferences.useBasicQrcodeReader?(a(),f("label",{key:0,role:"button",tabindex:"0",class:"button is-link is-medium is-rounded is-main",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[0]||(n[0]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)):(a(),f("button",{key:1,class:"button is-link is-medium is-rounded is-main",onClick:n[1]||(n[1]=l=>x())},s(e.$t("twofaccounts.forms.scan_qrcode")),1))]),o(u).errors.hasAny("qrcode")?(a(),B(F,{key:0,error:o(u).errors.get("qrcode"),field:"qrcode"},null,8,["error"])):b("",!0)]),t("div",G,[p(o(S),null,{default:m(({mode:l})=>[t("div",{class:C(["block",l=="dark"?"has-text-light":"has-text-grey-dark"])},s(e.$t("twofaccounts.forms.alternative_methods")),3)]),_:1}),o(i).preferences.useBasicQrcodeReader?b("",!0):(a(),f("div",H,[t("label",{role:"button",tabindex:"0",class:"button is-link is-outlined is-rounded",ref_key:"qrcodeInputLabel",ref:c,onKeyup:n[2]||(n[2]=g(l=>o(c).click(),["enter"]))},[t("input",{"aria-hidden":"true",tabindex:"-1",class:"file-input",type:"file",accept:"image/*",onChange:y,ref_key:"qrcodeInput",ref:_},null,544),r(" "+s(e.$t("twofaccounts.forms.upload_qrcode")),1)],544)])),t("div",J,[p(q,{class:"button is-link is-outlined is-rounded",to:{name:"createAccount"}},{default:m(()=>[r(s(e.$t("twofaccounts.forms.use_advanced_form")),1)]),_:1})]),t("div",O,[p(q,{id:"btnImport",class:"button is-link is-outlined is-rounded",to:{name:"importAccounts"}},{default:m(()=>[r(s(e.$t("twofaccounts.import.import")),1)]),_:1})])])]),p(L,{showButtons:!0},{default:m(()=>[o(v).isEmpty?b("",!0):(a(),B(I,{key:0,returnTo:{name:"accounts"},action:"back"}))]),_:1})])}}};export{Z as default}; diff --git a/public/build/assets/Users-dd1a2a6d.js b/public/build/assets/Users-e4ea6e38.js similarity index 95% rename from public/build/assets/Users-dd1a2a6d.js rename to public/build/assets/Users-e4ea6e38.js index f93bfbd8..17b4eff9 100644 --- a/public/build/assets/Users-dd1a2a6d.js +++ b/public/build/assets/Users-e4ea6e38.js @@ -1 +1 @@ -import{_ as j}from"./AdminTabs-169daa20.js";import{Q as N,b as S,a2 as T,r as k,v as $,o as I,J as E,a0 as R,e as p,f as u,g as m,m as n,h as t,p as h,t as i,j as B,i as r,E as O,F as W,G as M,U as F,n as y,l as A}from"./app-94c6def1.js";import{S as Z}from"./Spinner-f03b508f.js";import{_ as q}from"./SearchBox-23302ff7.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const D={class:"options-tabs"},G={class:"title is-4 has-text-grey-light"},J={class:"is-size-7-mobile"},Q={class:"mb-6 mt-3"},H={class:"columns"},K={class:"column pb-0"},P={class:"level is-mobile mb-0"},X={class:"level-item has-text-centered is-justify-content-end"},Y={class:"subtitle is-7"},ee={class:"level-item has-text-centered is-justify-content-start"},se={class:"buttons"},te={key:0},ae={class:"has-ellipsis"},oe={class:"is-block has-ellipsis is-family-primary is-size-6 is-size-7-mobile has-text-grey"},ne={class:"tags mt-2"},ie={class:"ml-3"},le={key:1,class:"mt-4 pl-3"},he={__name:"Users",setup(re){const x=N("2fauth"),w=S(),z=T(x.prefix+"returnTo","accounts"),f=k([]),a=k(""),g=k(!1),C=$(()=>f.value.filter(e=>{let s=e.name.toLowerCase().includes(d.value.keywords)||e.email.toLowerCase().includes(d.value.keywords);return d.value.admin!=null&&(s=s&&e.is_admin==d.value.admin),d.value.oauth!=null&&(s=s&&e.oauth_provider==d.value.oauth),s})),d=$(()=>{const e={admin:void 0,oauth:void 0,keywords:a.value.toLowerCase()},s=a.value.toLowerCase().split(" "),c=/admin:([01])/,_=/oauth:([a-zA-Z0-9])/;return s.forEach(l=>{l.match(c)&&(e.admin=parseInt(l.replace(c,"$1")),e.keywords=e.keywords.replace(l,"").trim()),l.match(_)&&(e.oauth=l.replace(_,"$1"),e.keywords=e.keywords.replace(l,"").trim())}),e});I(()=>{L()});function b(e){const s=/admin:([01])/,c=/oauth:([a-zA-Z0-9]*)/;a.value.match(s)&&e.match(s)?a.value=a.value.replace(s,e):d.value.oauth!=null&&e.match(c)?a.value=a.value.replace(c,e):a.value=a.value?a.value+" "+e:e}function L(){g.value=!0,E.getAll({returnError:!0}).then(e=>{f.value=e.data}).catch(e=>{w.error(e)}).finally(()=>{g.value=!1})}return R(e=>{e.name.startsWith("admin.")||w.clear()}),(e,s)=>{const c=p("FontAwesomeIcon"),_=p("RouterLink"),l=p("ButtonBackCloseCancel"),U=p("VueFooter"),V=p("FormWrapper");return u(),m("div",null,[n(j,{activeTab:"admin.users"}),t("div",D,[n(V,null,{default:h(()=>[t("h4",G,i(e.$t("admin.users")),1),t("div",J,i(e.$t("admin.users_legend")),1),t("div",Q,[n(_,{class:"is-link mt-5",to:{name:"admin.createUser"}},{default:h(()=>[n(c,{icon:["fas","plus-circle"]}),B(" "+i(e.$t("admin.create_new_user")),1)]),_:1},8,["to"])]),t("div",H,[t("div",K,[n(q,{keyword:r(a),"onUpdate:keyword":s[0]||(s[0]=o=>O(a)?a.value=o:null),hasNoBackground:!0,placeholder:e.$t("admin.search_user_placeholder")},null,8,["keyword","placeholder"])])]),t("div",P,[t("div",X,[t("p",Y,i(e.$t("admin.quick_filters_colons")),1)]),t("div",ee,[t("div",se,[t("button",{class:"button is-small is-ghost p-0",onClick:s[1]||(s[1]=o=>b("admin:1"))},"admin"),t("button",{class:"button is-small is-ghost p-0",onClick:s[2]||(s[2]=o=>b("oauth:github"))},"github"),t("button",{class:"button is-small is-ghost p-0",onClick:s[3]||(s[3]=o=>b("oauth:openid"))},"openId")])])]),r(C).length>0?(u(),m("div",te,[(u(!0),m(W,null,M(r(C),o=>(u(),m("div",{key:o.id,class:"list-item is-size-5 is-size-6-mobile is-flex is-justify-content-space-between"},[t("div",ae,[t("span",null,i(o.name),1),t("span",oe,i(o.email),1),n(r(F),null,{default:h(({mode:v})=>[t("div",ne,[o.is_admin?(u(),m("span",{key:0,class:y(["tag is-rounded has-text-warning-dark",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"admin",2)):A("",!0),o.oauth_provider?(u(),m("span",{key:1,class:y(["tag is-rounded has-text-grey",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"oauth: "+i(o.oauth_provider),3)):A("",!0)])]),_:2},1024)]),t("div",ie,[n(r(F),null,{default:h(({mode:v})=>[n(_,{to:{name:"admin.manageUser",params:{userId:o.id}},class:y(["button is-small has-normal-radius is-pulled-right",{"is-dark":v=="dark"}]),title:e.$t("commons.manage")},{default:h(()=>[B(i(e.$t("commons.manage")),1)]),_:2},1032,["to","class","title"])]),_:2},1024)])]))),128))])):(u(),m("div",le,i(e.$t("commons.no_result")),1)),n(Z,{isVisible:r(g)&&r(f).length===0},null,8,["isVisible"]),n(U,{showButtons:!0},{default:h(()=>[n(l,{returnTo:{name:r(z)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{he as default}; +import{_ as j}from"./AdminTabs-94ad3971.js";import{Q as N,b as S,a2 as T,r as k,v as $,o as I,J as E,a0 as R,e as p,f as u,g as m,m as n,h as t,p as h,t as i,j as B,i as r,E as O,F as W,G as M,U as F,n as y,l as A}from"./app-60af1d1a.js";import{S as Z}from"./Spinner-bfa27d3a.js";import{_ as q}from"./SearchBox-62743462.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const D={class:"options-tabs"},G={class:"title is-4 has-text-grey-light"},J={class:"is-size-7-mobile"},Q={class:"mb-6 mt-3"},H={class:"columns"},K={class:"column pb-0"},P={class:"level is-mobile mb-0"},X={class:"level-item has-text-centered is-justify-content-end"},Y={class:"subtitle is-7"},ee={class:"level-item has-text-centered is-justify-content-start"},se={class:"buttons"},te={key:0},ae={class:"has-ellipsis"},oe={class:"is-block has-ellipsis is-family-primary is-size-6 is-size-7-mobile has-text-grey"},ne={class:"tags mt-2"},ie={class:"ml-3"},le={key:1,class:"mt-4 pl-3"},he={__name:"Users",setup(re){const x=N("2fauth"),w=S(),z=T(x.prefix+"returnTo","accounts"),f=k([]),a=k(""),g=k(!1),C=$(()=>f.value.filter(e=>{let s=e.name.toLowerCase().includes(d.value.keywords)||e.email.toLowerCase().includes(d.value.keywords);return d.value.admin!=null&&(s=s&&e.is_admin==d.value.admin),d.value.oauth!=null&&(s=s&&e.oauth_provider==d.value.oauth),s})),d=$(()=>{const e={admin:void 0,oauth:void 0,keywords:a.value.toLowerCase()},s=a.value.toLowerCase().split(" "),c=/admin:([01])/,_=/oauth:([a-zA-Z0-9])/;return s.forEach(l=>{l.match(c)&&(e.admin=parseInt(l.replace(c,"$1")),e.keywords=e.keywords.replace(l,"").trim()),l.match(_)&&(e.oauth=l.replace(_,"$1"),e.keywords=e.keywords.replace(l,"").trim())}),e});I(()=>{L()});function b(e){const s=/admin:([01])/,c=/oauth:([a-zA-Z0-9]*)/;a.value.match(s)&&e.match(s)?a.value=a.value.replace(s,e):d.value.oauth!=null&&e.match(c)?a.value=a.value.replace(c,e):a.value=a.value?a.value+" "+e:e}function L(){g.value=!0,E.getAll({returnError:!0}).then(e=>{f.value=e.data}).catch(e=>{w.error(e)}).finally(()=>{g.value=!1})}return R(e=>{e.name.startsWith("admin.")||w.clear()}),(e,s)=>{const c=p("FontAwesomeIcon"),_=p("RouterLink"),l=p("ButtonBackCloseCancel"),U=p("VueFooter"),V=p("FormWrapper");return u(),m("div",null,[n(j,{activeTab:"admin.users"}),t("div",D,[n(V,null,{default:h(()=>[t("h4",G,i(e.$t("admin.users")),1),t("div",J,i(e.$t("admin.users_legend")),1),t("div",Q,[n(_,{class:"is-link mt-5",to:{name:"admin.createUser"}},{default:h(()=>[n(c,{icon:["fas","plus-circle"]}),B(" "+i(e.$t("admin.create_new_user")),1)]),_:1},8,["to"])]),t("div",H,[t("div",K,[n(q,{keyword:r(a),"onUpdate:keyword":s[0]||(s[0]=o=>O(a)?a.value=o:null),hasNoBackground:!0,placeholder:e.$t("admin.search_user_placeholder")},null,8,["keyword","placeholder"])])]),t("div",P,[t("div",X,[t("p",Y,i(e.$t("admin.quick_filters_colons")),1)]),t("div",ee,[t("div",se,[t("button",{class:"button is-small is-ghost p-0",onClick:s[1]||(s[1]=o=>b("admin:1"))},"admin"),t("button",{class:"button is-small is-ghost p-0",onClick:s[2]||(s[2]=o=>b("oauth:github"))},"github"),t("button",{class:"button is-small is-ghost p-0",onClick:s[3]||(s[3]=o=>b("oauth:openid"))},"openId")])])]),r(C).length>0?(u(),m("div",te,[(u(!0),m(W,null,M(r(C),o=>(u(),m("div",{key:o.id,class:"list-item is-size-5 is-size-6-mobile is-flex is-justify-content-space-between"},[t("div",ae,[t("span",null,i(o.name),1),t("span",oe,i(o.email),1),n(r(F),null,{default:h(({mode:v})=>[t("div",ne,[o.is_admin?(u(),m("span",{key:0,class:y(["tag is-rounded has-text-warning-dark",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"admin",2)):A("",!0),o.oauth_provider?(u(),m("span",{key:1,class:y(["tag is-rounded has-text-grey",v=="dark"?"has-background-black-bis":"has-background-grey-lighter"])},"oauth: "+i(o.oauth_provider),3)):A("",!0)])]),_:2},1024)]),t("div",ie,[n(r(F),null,{default:h(({mode:v})=>[n(_,{to:{name:"admin.manageUser",params:{userId:o.id}},class:y(["button is-small has-normal-radius is-pulled-right",{"is-dark":v=="dark"}]),title:e.$t("commons.manage")},{default:h(()=>[B(i(e.$t("commons.manage")),1)]),_:2},1032,["to","class","title"])]),_:2},1024)])]))),128))])):(u(),m("div",le,i(e.$t("commons.no_result")),1)),n(Z,{isVisible:r(g)&&r(f).length===0},null,8,["isVisible"]),n(U,{showButtons:!0},{default:h(()=>[n(l,{returnTo:{name:r(z)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{he as default}; diff --git a/public/build/assets/WebAuthn-214c6fd8.js b/public/build/assets/WebAuthn-3d2e0d09.js similarity index 94% rename from public/build/assets/WebAuthn-214c6fd8.js rename to public/build/assets/WebAuthn-3d2e0d09.js index 2c705368..57ea9530 100644 --- a/public/build/assets/WebAuthn-214c6fd8.js +++ b/public/build/assets/WebAuthn-3d2e0d09.js @@ -1 +1 @@ -import{Q as z,a as U,b as L,u as M,a2 as A,r as b,o as D,x as I,J as v,a0 as K,e as h,f as d,g as _,m as o,h as s,p as g,i as t,l as y,t as i,w as R,j as k,F as j,G as E,U as H,n as J,I as r}from"./app-94c6def1.js";import{_ as G}from"./SettingTabs-beebcb43.js";import{w as P}from"./webauthnService-d9fc6500.js";import{S as Q}from"./Spinner-f03b508f.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const q={class:"options-tabs"},X=["innerHTML"],Y={class:"title is-4 has-text-grey-light"},Z={class:"is-size-7-mobile"},ee={class:"mt-3"},te=["onKeyup"],se={key:1,class:"field"},ne=["onClick","title"],ae={class:"mt-2 is-size-7 is-pulled-right"},oe={class:"title is-4 pt-6 has-text-grey-light"},ie={class:"field"},_e={__name:"WebAuthn",setup(re){const C=z("2fauth"),l=U(),n=L(),W=M(),$=A(C.prefix+"returnTo","accounts"),a=b([]),f=b(!1),p=b(!1);D(()=>{V()}),I(()=>l.preferences.useWebauthnOnly,()=>{v.updatePreference("useWebauthnOnly",l.preferences.useWebauthnOnly).then(e=>{n.success({text:r("settings.forms.setting_saved")})})});function w(){if(p==!0)return n.warn({text:r("errors.unsupported_with_reverseproxy")}),!1;P.register().then(e=>{W.push({name:"settings.webauthn.editCredential",params:{credentialId:JSON.parse(e.config.data).id}})}).catch(e=>{var u;"webauthn"in e?e.name=="is-warning"?n.warn({text:r(e.message)}):n.alert({text:r(e.message)}):((u=e.response)==null?void 0:u.status)===422?n.alert({text:e.response.data.message}):n.error(e)})}function x(e){confirm(r("auth.confirm.revoke_device"))&&v.revokeWebauthnDevice(e).then(u=>{a.value=a.value.filter(m=>m.id!==e),a.value.length==0&&(l.preferences.useWebauthnOnly=!1),n.success({text:r("auth.webauthn.device_revoked")})})}function F(e){return e.alias?e.alias:r("auth.webauthn.my_device")+" (#"+e.id.substring(0,10)+")"}function V(){f.value=!0,v.getWebauthnDevices({returnError:!0}).then(e=>{a.value=e.data}).catch(e=>{e.response.status===405?p.value=!0:n.error(e)}).finally(()=>{f.value=!1})}return K(e=>{e.name.startsWith("settings.")||n.clear()}),(e,u)=>{const m=h("FontAwesomeIcon"),B=h("FormCheckbox"),S=h("ButtonBackCloseCancel"),T=h("VueFooter"),N=h("FormWrapper");return d(),_("div",null,[o(G,{activeTab:"settings.webauthn.devices"},null,8,["activeTab"]),s("div",q,[o(N,null,{default:g(()=>[t(p)?(d(),_("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,X)):y("",!0),s("h4",Y,i(e.$t("auth.webauthn.security_devices")),1),s("div",Z,i(e.$t("auth.webauthn.security_devices_legend")),1),s("div",ee,[s("a",{tabindex:"0",onClick:w,onKeyup:R(w,["enter"])},[o(m,{icon:["fas","plus-circle"]}),k(" "+i(e.$t("auth.webauthn.register_a_new_device")),1)],40,te)]),t(a).length>0?(d(),_("div",se,[(d(!0),_(j,null,E(t(a),c=>(d(),_("div",{key:c.id,class:"group-item is-size-5 is-size-6-mobile"},[k(i(F(c))+" ",1),o(t(H),null,{default:g(({mode:O})=>[s("button",{class:J(["button tag is-pulled-right",O==="dark"?"is-dark":"is-white"]),onClick:ue=>x(c.id),title:e.$t("settings.revoke")},i(e.$t("settings.revoke")),11,ne)]),_:2},1024)]))),128)),s("div",ae,i(e.$t("auth.webauthn.revoking_a_device_is_permanent")),1)])):y("",!0),o(Q,{isVisible:t(f)&&t(a).length===0},null,8,["isVisible"]),s("h4",oe,i(e.$t("auth.webauthn.options")),1),s("div",ie,i(e.$t("auth.webauthn.need_a_security_device_to_enable_options")),1),s("form",null,[o(B,{modelValue:t(l).preferences.useWebauthnOnly,"onUpdate:modelValue":u[0]||(u[0]=c=>t(l).preferences.useWebauthnOnly=c),fieldName:"useWebauthnOnly",label:"auth.webauthn.use_webauthn_only.label",help:"auth.webauthn.use_webauthn_only.help",disabled:t(p)||t(a).length===0},null,8,["modelValue","disabled"])]),o(T,{showButtons:!0},{default:g(()=>[o(S,{returnTo:{name:t($)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{_e as default}; +import{Q as z,a as U,b as L,u as M,a2 as A,r as b,o as D,x as I,J as v,a0 as K,e as h,f as d,g as _,m as o,h as s,p as g,i as t,l as y,t as i,w as R,j as k,F as j,G as E,U as H,n as J,I as r}from"./app-60af1d1a.js";import{_ as G}from"./SettingTabs-0b59e581.js";import{w as P}from"./webauthnService-1f4ca5dc.js";import{S as Q}from"./Spinner-bfa27d3a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const q={class:"options-tabs"},X=["innerHTML"],Y={class:"title is-4 has-text-grey-light"},Z={class:"is-size-7-mobile"},ee={class:"mt-3"},te=["onKeyup"],se={key:1,class:"field"},ne=["onClick","title"],ae={class:"mt-2 is-size-7 is-pulled-right"},oe={class:"title is-4 pt-6 has-text-grey-light"},ie={class:"field"},_e={__name:"WebAuthn",setup(re){const C=z("2fauth"),l=U(),n=L(),W=M(),$=A(C.prefix+"returnTo","accounts"),a=b([]),f=b(!1),p=b(!1);D(()=>{V()}),I(()=>l.preferences.useWebauthnOnly,()=>{v.updatePreference("useWebauthnOnly",l.preferences.useWebauthnOnly).then(e=>{n.success({text:r("settings.forms.setting_saved")})})});function w(){if(p==!0)return n.warn({text:r("errors.unsupported_with_reverseproxy")}),!1;P.register().then(e=>{W.push({name:"settings.webauthn.editCredential",params:{credentialId:JSON.parse(e.config.data).id}})}).catch(e=>{var u;"webauthn"in e?e.name=="is-warning"?n.warn({text:r(e.message)}):n.alert({text:r(e.message)}):((u=e.response)==null?void 0:u.status)===422?n.alert({text:e.response.data.message}):n.error(e)})}function x(e){confirm(r("auth.confirm.revoke_device"))&&v.revokeWebauthnDevice(e).then(u=>{a.value=a.value.filter(m=>m.id!==e),a.value.length==0&&(l.preferences.useWebauthnOnly=!1),n.success({text:r("auth.webauthn.device_revoked")})})}function F(e){return e.alias?e.alias:r("auth.webauthn.my_device")+" (#"+e.id.substring(0,10)+")"}function V(){f.value=!0,v.getWebauthnDevices({returnError:!0}).then(e=>{a.value=e.data}).catch(e=>{e.response.status===405?p.value=!0:n.error(e)}).finally(()=>{f.value=!1})}return K(e=>{e.name.startsWith("settings.")||n.clear()}),(e,u)=>{const m=h("FontAwesomeIcon"),B=h("FormCheckbox"),S=h("ButtonBackCloseCancel"),T=h("VueFooter"),N=h("FormWrapper");return d(),_("div",null,[o(G,{activeTab:"settings.webauthn.devices"},null,8,["activeTab"]),s("div",q,[o(N,null,{default:g(()=>[t(p)?(d(),_("div",{key:0,class:"notification is-warning has-text-centered",innerHTML:e.$t("auth.auth_handled_by_proxy")},null,8,X)):y("",!0),s("h4",Y,i(e.$t("auth.webauthn.security_devices")),1),s("div",Z,i(e.$t("auth.webauthn.security_devices_legend")),1),s("div",ee,[s("a",{tabindex:"0",onClick:w,onKeyup:R(w,["enter"])},[o(m,{icon:["fas","plus-circle"]}),k(" "+i(e.$t("auth.webauthn.register_a_new_device")),1)],40,te)]),t(a).length>0?(d(),_("div",se,[(d(!0),_(j,null,E(t(a),c=>(d(),_("div",{key:c.id,class:"group-item is-size-5 is-size-6-mobile"},[k(i(F(c))+" ",1),o(t(H),null,{default:g(({mode:O})=>[s("button",{class:J(["button tag is-pulled-right",O==="dark"?"is-dark":"is-white"]),onClick:ue=>x(c.id),title:e.$t("settings.revoke")},i(e.$t("settings.revoke")),11,ne)]),_:2},1024)]))),128)),s("div",ae,i(e.$t("auth.webauthn.revoking_a_device_is_permanent")),1)])):y("",!0),o(Q,{isVisible:t(f)&&t(a).length===0},null,8,["isVisible"]),s("h4",oe,i(e.$t("auth.webauthn.options")),1),s("div",ie,i(e.$t("auth.webauthn.need_a_security_device_to_enable_options")),1),s("form",null,[o(B,{modelValue:t(l).preferences.useWebauthnOnly,"onUpdate:modelValue":u[0]||(u[0]=c=>t(l).preferences.useWebauthnOnly=c),fieldName:"useWebauthnOnly",label:"auth.webauthn.use_webauthn_only.label",help:"auth.webauthn.use_webauthn_only.help",disabled:t(p)||t(a).length===0},null,8,["modelValue","disabled"])]),o(T,{showButtons:!0},{default:g(()=>[o(S,{returnTo:{name:t($)},action:"close"},null,8,["returnTo"])]),_:1})]),_:1})])])}}};export{_e as default}; diff --git a/public/build/assets/app-94c6def1.js b/public/build/assets/app-60af1d1a.js similarity index 98% rename from public/build/assets/app-94c6def1.js rename to public/build/assets/app-60af1d1a.js index 8d058d73..30c40705 100644 --- a/public/build/assets/app-94c6def1.js +++ b/public/build/assets/app-60af1d1a.js @@ -8,7 +8,7 @@ * @license MIT */let lf;const la=e=>lf=e,cf=Symbol();function ai(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var br;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(br||(br={}));function I1(){const e=Lc(!0),t=e.run(()=>ge({}));let n=[],r=[];const s=Gs({install(a){la(s),s._a=a,a.provide(cf,s),a.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(a){return!this._a&&!N1?r.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const uf=()=>{};function Ml(e,t,n,r=uf){e.push(t);const s=()=>{const a=e.indexOf(t);a>-1&&(e.splice(a,1),r())};return!n&&Ti()&&Pc(s),s}function On(e,...t){e.slice().forEach(n=>{n(...t)})}const $1=e=>e();function ii(e,t){e instanceof Map&&t instanceof Map&&t.forEach((n,r)=>e.set(r,n)),e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];ai(s)&&ai(r)&&e.hasOwnProperty(n)&&!Se(r)&&!Zt(r)?e[n]=ii(s,r):e[n]=r}return e}const F1=Symbol();function H1(e){return!ai(e)||!e.hasOwnProperty(F1)}const{assign:Gt}=Object;function D1(e){return!!(Se(e)&&e.effect)}function z1(e,t,n,r){const{state:s,actions:a,getters:i}=t,o=n.state.value[e];let l;function c(){o||(n.state.value[e]=s?s():{});const u=up(n.state.value[e]);return Gt(u,a,Object.keys(i||{}).reduce((f,d)=>(f[d]=Gs(ne(()=>{la(n);const m=n._s.get(e);return i[d].call(m,m)})),f),{}))}return l=ff(e,c,t,n,r,!0),l}function ff(e,t,n={},r,s,a){let i;const o=Gt({actions:{}},n),l={deep:!0};let c,u,f=[],d=[],m;const g=r.state.value[e];!a&&!g&&(r.state.value[e]={}),ge({});let v;function S(w){let O;c=u=!1,typeof w=="function"?(w(r.state.value[e]),O={type:br.patchFunction,storeId:e,events:m}):(ii(r.state.value[e],w),O={type:br.patchObject,payload:w,storeId:e,events:m});const H=v=Symbol();Zn().then(()=>{v===H&&(c=!0)}),u=!0,On(f,O,r.state.value[e])}const b=a?function(){const{state:O}=n,H=O?O():{};this.$patch(R=>{Gt(R,H)})}:uf;function _(){i.stop(),f=[],d=[],r._s.delete(e)}function P(w,O){return function(){la(r);const H=Array.from(arguments),R=[],N=[];function V(ae){R.push(ae)}function be(ae){N.push(ae)}On(d,{args:H,name:w,store:F,after:V,onError:be});let Ce;try{Ce=O.apply(this&&this.$id===e?this:F,H)}catch(ae){throw On(N,ae),ae}return Ce instanceof Promise?Ce.then(ae=>(On(R,ae),ae)).catch(ae=>(On(N,ae),Promise.reject(ae))):(On(R,Ce),Ce)}}const x={_p:r,$id:e,$onAction:Ml.bind(null,d),$patch:S,$reset:b,$subscribe(w,O={}){const H=Ml(f,w,O.detached,()=>R()),R=i.run(()=>ze(()=>r.state.value[e],N=>{(O.flush==="sync"?u:c)&&w({storeId:e,type:br.direct,events:m},N)},Gt({},l,O)));return H},$dispose:_},F=Nt(x);r._s.set(e,F);const Z=r._a&&r._a.runWithContext||$1,q=r._e.run(()=>(i=Lc(),Z(()=>i.run(t))));for(const w in q){const O=q[w];if(Se(O)&&!D1(O)||Zt(O))a||(g&&H1(O)&&(Se(O)?O.value=g[w]:ii(O,g[w])),r.state.value[e][w]=O);else if(typeof O=="function"){const H=P(w,O);q[w]=H,o.actions[w]=O}}return Gt(F,q),Gt(oe(F),q),Object.defineProperty(F,"$state",{get:()=>r.state.value[e],set:w=>{S(O=>{Gt(O,w)})}}),r._p.forEach(w=>{Gt(F,i.run(()=>w({store:F,app:r._a,pinia:r,options:o})))}),g&&a&&n.hydrate&&n.hydrate(F.$state,g),c=!0,u=!0,F}function Ur(e,t,n){let r,s;const a=typeof t=="function";typeof e=="string"?(r=e,s=a?n:t):(s=e,r=e.id);function i(o,l){const c=Yp();return o=o||(c?et(cf,null):null),o&&la(o),o=lf,o._s.has(r)||(a?ff(r,t,s,o):z1(r,s,o)),o._s.get(r)}return i.$id=r,i}function df(e,t){return function(){return e.apply(t,arguments)}}const{toString:B1}=Object.prototype,{getPrototypeOf:ao}=Object,ca=(e=>t=>{const n=B1.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ct=e=>(e=e.toLowerCase(),t=>ca(t)===e),ua=e=>t=>typeof t===e,{isArray:nr}=Array,Nr=ua("undefined");function j1(e){return e!==null&&!Nr(e)&&e.constructor!==null&&!Nr(e.constructor)&&ut(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const pf=Ct("ArrayBuffer");function V1(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&pf(e.buffer),t}const U1=ua("string"),ut=ua("function"),mf=ua("number"),fa=e=>e!==null&&typeof e=="object",K1=e=>e===!0||e===!1,ks=e=>{if(ca(e)!=="object")return!1;const t=ao(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},W1=Ct("Date"),q1=Ct("File"),Y1=Ct("Blob"),G1=Ct("FileList"),J1=e=>fa(e)&&ut(e.pipe),X1=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||ut(e.append)&&((t=ca(e))==="formdata"||t==="object"&&ut(e.toString)&&e.toString()==="[object FormData]"))},Q1=Ct("URLSearchParams"),Z1=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Kr(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),nr(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const gf=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),vf=e=>!Nr(e)&&e!==gf;function oi(){const{caseless:e}=vf(this)&&this||{},t={},n=(r,s)=>{const a=e&&hf(t,s)||s;ks(t[a])&&ks(r)?t[a]=oi(t[a],r):ks(r)?t[a]=oi({},r):nr(r)?t[a]=r.slice():t[a]=r};for(let r=0,s=arguments.length;r(Kr(t,(s,a)=>{n&&ut(s)?e[a]=df(s,n):e[a]=s},{allOwnKeys:r}),e),t2=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),n2=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},r2=(e,t,n,r)=>{let s,a,i;const o={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),a=s.length;a-- >0;)i=s[a],(!r||r(i,e,t))&&!o[i]&&(t[i]=e[i],o[i]=!0);e=n!==!1&&ao(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},s2=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},a2=e=>{if(!e)return null;if(nr(e))return e;let t=e.length;if(!mf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},i2=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&ao(Uint8Array)),o2=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const a=s.value;t.call(e,a[0],a[1])}},l2=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},c2=Ct("HTMLFormElement"),u2=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Nl=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),f2=Ct("RegExp"),yf=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Kr(n,(s,a)=>{t(s,a,e)!==!1&&(r[a]=s)}),Object.defineProperties(e,r)},d2=e=>{yf(e,(t,n)=>{if(ut(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(ut(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},p2=(e,t)=>{const n={},r=s=>{s.forEach(a=>{n[a]=!0})};return nr(e)?r(e):r(String(e).split(t)),n},m2=()=>{},h2=(e,t)=>(e=+e,Number.isFinite(e)?e:t),Ra="abcdefghijklmnopqrstuvwxyz",Il="0123456789",bf={DIGIT:Il,ALPHA:Ra,ALPHA_DIGIT:Ra+Ra.toUpperCase()+Il},g2=(e=16,t=bf.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function v2(e){return!!(e&&ut(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const y2=e=>{const t=new Array(10),n=(r,s)=>{if(fa(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const a=nr(r)?[]:{};return Kr(r,(i,o)=>{const l=n(i,s+1);!Nr(l)&&(a[o]=l)}),t[s]=void 0,a}}return r};return n(e,0)},b2=Ct("AsyncFunction"),w2=e=>e&&(fa(e)||ut(e))&&ut(e.then)&&ut(e.catch),k={isArray:nr,isArrayBuffer:pf,isBuffer:j1,isFormData:X1,isArrayBufferView:V1,isString:U1,isNumber:mf,isBoolean:K1,isObject:fa,isPlainObject:ks,isUndefined:Nr,isDate:W1,isFile:q1,isBlob:Y1,isRegExp:f2,isFunction:ut,isStream:J1,isURLSearchParams:Q1,isTypedArray:i2,isFileList:G1,forEach:Kr,merge:oi,extend:e2,trim:Z1,stripBOM:t2,inherits:n2,toFlatObject:r2,kindOf:ca,kindOfTest:Ct,endsWith:s2,toArray:a2,forEachEntry:o2,matchAll:l2,isHTMLForm:c2,hasOwnProperty:Nl,hasOwnProp:Nl,reduceDescriptors:yf,freezeMethods:d2,toObjectSet:p2,toCamelCase:u2,noop:m2,toFiniteNumber:h2,findKey:hf,global:gf,isContextDefined:vf,ALPHABET:bf,generateString:g2,isSpecCompliantForm:v2,toJSONObject:y2,isAsyncFn:b2,isThenable:w2};function ce(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s)}k.inherits(ce,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:k.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const wf=ce.prototype,_f={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{_f[e]={value:e}});Object.defineProperties(ce,_f);Object.defineProperty(wf,"isAxiosError",{value:!0});ce.from=(e,t,n,r,s,a)=>{const i=Object.create(wf);return k.toFlatObject(e,i,function(l){return l!==Error.prototype},o=>o!=="isAxiosError"),ce.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,a&&Object.assign(i,a),i};const _2=null;function li(e){return k.isPlainObject(e)||k.isArray(e)}function Ef(e){return k.endsWith(e,"[]")?e.slice(0,-2):e}function $l(e,t,n){return e?e.concat(t).map(function(s,a){return s=Ef(s),!n&&a?"["+s+"]":s}).join(n?".":""):t}function E2(e){return k.isArray(e)&&!e.some(li)}const x2=k.toFlatObject(k,{},null,function(t){return/^is[A-Z]/.test(t)});function da(e,t,n){if(!k.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=k.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(v,S){return!k.isUndefined(S[v])});const r=n.metaTokens,s=n.visitor||u,a=n.dots,i=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&k.isSpecCompliantForm(t);if(!k.isFunction(s))throw new TypeError("visitor must be a function");function c(g){if(g===null)return"";if(k.isDate(g))return g.toISOString();if(!l&&k.isBlob(g))throw new ce("Blob is not supported. Use a Buffer instead.");return k.isArrayBuffer(g)||k.isTypedArray(g)?l&&typeof Blob=="function"?new Blob([g]):Buffer.from(g):g}function u(g,v,S){let b=g;if(g&&!S&&typeof g=="object"){if(k.endsWith(v,"{}"))v=r?v:v.slice(0,-2),g=JSON.stringify(g);else if(k.isArray(g)&&E2(g)||(k.isFileList(g)||k.endsWith(v,"[]"))&&(b=k.toArray(g)))return v=Ef(v),b.forEach(function(P,x){!(k.isUndefined(P)||P===null)&&t.append(i===!0?$l([v],x,a):i===null?v:v+"[]",c(P))}),!1}return li(g)?!0:(t.append($l(S,v,a),c(g)),!1)}const f=[],d=Object.assign(x2,{defaultVisitor:u,convertValue:c,isVisitable:li});function m(g,v){if(!k.isUndefined(g)){if(f.indexOf(g)!==-1)throw Error("Circular reference detected in "+v.join("."));f.push(g),k.forEach(g,function(b,_){(!(k.isUndefined(b)||b===null)&&s.call(t,b,k.isString(_)?_.trim():_,v,d))===!0&&m(b,v?v.concat(_):[_])}),f.pop()}}if(!k.isObject(e))throw new TypeError("data must be an object");return m(e),t}function Fl(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function io(e,t){this._pairs=[],e&&da(e,this,t)}const xf=io.prototype;xf.append=function(t,n){this._pairs.push([t,n])};xf.toString=function(t){const n=t?function(r){return t.call(this,r,Fl)}:Fl;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function k2(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function kf(e,t,n){if(!t)return e;const r=n&&n.encode||k2,s=n&&n.serialize;let a;if(s?a=s(t,n):a=k.isURLSearchParams(t)?t.toString():new io(t,n).toString(r),a){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class A2{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){k.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Hl=A2,Af={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},S2=typeof URLSearchParams<"u"?URLSearchParams:io,C2=typeof FormData<"u"?FormData:null,O2=typeof Blob<"u"?Blob:null,T2=(()=>{let e;return typeof navigator<"u"&&((e=navigator.product)==="ReactNative"||e==="NativeScript"||e==="NS")?!1:typeof window<"u"&&typeof document<"u"})(),L2=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),xt={isBrowser:!0,classes:{URLSearchParams:S2,FormData:C2,Blob:O2},isStandardBrowserEnv:T2,isStandardBrowserWebWorkerEnv:L2,protocols:["http","https","file","blob","url","data"]};function P2(e,t){return da(e,new xt.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,a){return xt.isNode&&k.isBuffer(n)?(this.append(r,n.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},t))}function R2(e){return k.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function M2(e){const t={},n=Object.keys(e);let r;const s=n.length;let a;for(r=0;r=n.length;return i=!i&&k.isArray(s)?s.length:i,l?(k.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!o):((!s[i]||!k.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],a)&&k.isArray(s[i])&&(s[i]=M2(s[i])),!o)}if(k.isFormData(e)&&k.isFunction(e.entries)){const n={};return k.forEachEntry(e,(r,s)=>{t(R2(r),s,n,0)}),n}return null}const N2={"Content-Type":void 0};function I2(e,t,n){if(k.isString(e))try{return(t||JSON.parse)(e),k.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const pa={transitional:Af,adapter:["xhr","http"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,a=k.isObject(t);if(a&&k.isHTMLForm(t)&&(t=new FormData(t)),k.isFormData(t))return s&&s?JSON.stringify(Sf(t)):t;if(k.isArrayBuffer(t)||k.isBuffer(t)||k.isStream(t)||k.isFile(t)||k.isBlob(t))return t;if(k.isArrayBufferView(t))return t.buffer;if(k.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let o;if(a){if(r.indexOf("application/x-www-form-urlencoded")>-1)return P2(t,this.formSerializer).toString();if((o=k.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return da(o?{"files[]":t}:t,l&&new l,this.formSerializer)}}return a||s?(n.setContentType("application/json",!1),I2(t)):t}],transformResponse:[function(t){const n=this.transitional||pa.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(t&&k.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(o){if(i)throw o.name==="SyntaxError"?ce.from(o,ce.ERR_BAD_RESPONSE,this,null,this.response):o}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:xt.classes.FormData,Blob:xt.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};k.forEach(["delete","get","head"],function(t){pa.headers[t]={}});k.forEach(["post","put","patch"],function(t){pa.headers[t]=k.merge(N2)});const oo=pa,$2=k.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),F2=e=>{const t={};let n,r,s;return e&&e.split(` `).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&$2[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},Dl=Symbol("internals");function cr(e){return e&&String(e).trim().toLowerCase()}function As(e){return e===!1||e==null?e:k.isArray(e)?e.map(As):String(e)}function H2(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const D2=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ma(e,t,n,r,s){if(k.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!k.isString(t)){if(k.isString(r))return t.indexOf(r)!==-1;if(k.isRegExp(r))return r.test(t)}}function z2(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function B2(e,t){const n=k.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,a,i){return this[r].call(this,t,s,a,i)},configurable:!0})})}class ma{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function a(o,l,c){const u=cr(l);if(!u)throw new Error("header name must be a non-empty string");const f=k.findKey(s,u);(!f||s[f]===void 0||c===!0||c===void 0&&s[f]!==!1)&&(s[f||l]=As(o))}const i=(o,l)=>k.forEach(o,(c,u)=>a(c,u,l));return k.isPlainObject(t)||t instanceof this.constructor?i(t,n):k.isString(t)&&(t=t.trim())&&!D2(t)?i(F2(t),n):t!=null&&a(n,t,r),this}get(t,n){if(t=cr(t),t){const r=k.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return H2(s);if(k.isFunction(n))return n.call(this,s,r);if(k.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=cr(t),t){const r=k.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Ma(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function a(i){if(i=cr(i),i){const o=k.findKey(r,i);o&&(!n||Ma(r,r[o],o,n))&&(delete r[o],s=!0)}}return k.isArray(t)?t.forEach(a):a(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const a=n[r];(!t||Ma(this,this[a],a,t,!0))&&(delete this[a],s=!0)}return s}normalize(t){const n=this,r={};return k.forEach(this,(s,a)=>{const i=k.findKey(r,a);if(i){n[i]=As(s),delete n[a];return}const o=t?z2(a):String(a).trim();o!==a&&delete n[a],n[o]=As(s),r[o]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return k.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&k.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[Dl]=this[Dl]={accessors:{}}).accessors,s=this.prototype;function a(i){const o=cr(i);r[o]||(B2(s,i),r[o]=!0)}return k.isArray(t)?t.forEach(a):a(t),this}}ma.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);k.freezeMethods(ma.prototype);k.freezeMethods(ma);const It=ma;function Na(e,t){const n=this||oo,r=t||n,s=It.from(r.headers);let a=r.data;return k.forEach(e,function(o){a=o.call(n,a,s.normalize(),t?t.status:void 0)}),s.normalize(),a}function Cf(e){return!!(e&&e.__CANCEL__)}function Wr(e,t,n){ce.call(this,e??"canceled",ce.ERR_CANCELED,t,n),this.name="CanceledError"}k.inherits(Wr,ce,{__CANCEL__:!0});function j2(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new ce("Request failed with status code "+n.status,[ce.ERR_BAD_REQUEST,ce.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const V2=xt.isStandardBrowserEnv?function(){return{write:function(n,r,s,a,i,o){const l=[];l.push(n+"="+encodeURIComponent(r)),k.isNumber(s)&&l.push("expires="+new Date(s).toGMTString()),k.isString(a)&&l.push("path="+a),k.isString(i)&&l.push("domain="+i),o===!0&&l.push("secure"),document.cookie=l.join("; ")},read:function(n){const r=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return r?decodeURIComponent(r[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function U2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function K2(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function Of(e,t){return e&&!U2(t)?K2(e,t):t}const W2=xt.isStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function s(a){let i=a;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const o=k.isString(i)?s(i):i;return o.protocol===r.protocol&&o.host===r.host}}():function(){return function(){return!0}}();function q2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Y2(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,a=0,i;return t=t!==void 0?t:1e3,function(l){const c=Date.now(),u=r[a];i||(i=c),n[s]=l,r[s]=c;let f=a,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-i{const a=s.loaded,i=s.lengthComputable?s.total:void 0,o=a-n,l=r(o),c=a<=i;n=a;const u={loaded:a,total:i,progress:i?a/i:void 0,bytes:o,rate:l||void 0,estimated:l&&i&&c?(i-a)/l:void 0,event:s};u[t?"download":"upload"]=!0,e(u)}}const G2=typeof XMLHttpRequest<"u",J2=G2&&function(e){return new Promise(function(n,r){let s=e.data;const a=It.from(e.headers).normalize(),i=e.responseType;let o;function l(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener("abort",o)}k.isFormData(s)&&(xt.isStandardBrowserEnv||xt.isStandardBrowserWebWorkerEnv?a.setContentType(!1):a.setContentType("multipart/form-data;",!1));let c=new XMLHttpRequest;if(e.auth){const m=e.auth.username||"",g=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";a.set("Authorization","Basic "+btoa(m+":"+g))}const u=Of(e.baseURL,e.url);c.open(e.method.toUpperCase(),kf(u,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function f(){if(!c)return;const m=It.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders()),v={data:!i||i==="text"||i==="json"?c.responseText:c.response,status:c.status,statusText:c.statusText,headers:m,config:e,request:c};j2(function(b){n(b),l()},function(b){r(b),l()},v),c=null}if("onloadend"in c?c.onloadend=f:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(f)},c.onabort=function(){c&&(r(new ce("Request aborted",ce.ECONNABORTED,e,c)),c=null)},c.onerror=function(){r(new ce("Network Error",ce.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let g=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const v=e.transitional||Af;e.timeoutErrorMessage&&(g=e.timeoutErrorMessage),r(new ce(g,v.clarifyTimeoutError?ce.ETIMEDOUT:ce.ECONNABORTED,e,c)),c=null},xt.isStandardBrowserEnv){const m=(e.withCredentials||W2(u))&&e.xsrfCookieName&&V2.read(e.xsrfCookieName);m&&a.set(e.xsrfHeaderName,m)}s===void 0&&a.setContentType(null),"setRequestHeader"in c&&k.forEach(a.toJSON(),function(g,v){c.setRequestHeader(v,g)}),k.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),i&&i!=="json"&&(c.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&c.addEventListener("progress",zl(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",zl(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=m=>{c&&(r(!m||m.type?new Wr(null,e,c):m),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener("abort",o)));const d=q2(u);if(d&&xt.protocols.indexOf(d)===-1){r(new ce("Unsupported protocol "+d+":",ce.ERR_BAD_REQUEST,e));return}c.send(s||null)})},Ss={http:_2,xhr:J2};k.forEach(Ss,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const X2={getAdapter:e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let s=0;se instanceof It?e.toJSON():e;function Wn(e,t){t=t||{};const n={};function r(c,u,f){return k.isPlainObject(c)&&k.isPlainObject(u)?k.merge.call({caseless:f},c,u):k.isPlainObject(u)?k.merge({},u):k.isArray(u)?u.slice():u}function s(c,u,f){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c,f)}else return r(c,u,f)}function a(c,u){if(!k.isUndefined(u))return r(void 0,u)}function i(c,u){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function o(c,u,f){if(f in t)return r(c,u);if(f in e)return r(void 0,c)}const l={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:o,headers:(c,u)=>s(jl(c),jl(u),!0)};return k.forEach(Object.keys(Object.assign({},e,t)),function(u){const f=l[u]||s,d=f(e[u],t[u],u);k.isUndefined(d)&&f!==o||(n[u]=d)}),n}const Tf="1.4.0",lo={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{lo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Vl={};lo.transitional=function(t,n,r){function s(a,i){return"[Axios v"+Tf+"] Transitional option '"+a+"'"+i+(r?". "+r:"")}return(a,i,o)=>{if(t===!1)throw new ce(s(i," has been removed"+(n?" in "+n:"")),ce.ERR_DEPRECATED);return n&&!Vl[i]&&(Vl[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(a,i,o):!0}};function Q2(e,t,n){if(typeof e!="object")throw new ce("options must be an object",ce.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const a=r[s],i=t[a];if(i){const o=e[a],l=o===void 0||i(o,a,e);if(l!==!0)throw new ce("option "+a+" must be "+l,ce.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ce("Unknown option "+a,ce.ERR_BAD_OPTION)}}const ci={assertOptions:Q2,validators:lo},Wt=ci.validators;class zs{constructor(t){this.defaults=t,this.interceptors={request:new Hl,response:new Hl}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Wn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&ci.assertOptions(r,{silentJSONParsing:Wt.transitional(Wt.boolean),forcedJSONParsing:Wt.transitional(Wt.boolean),clarifyTimeoutError:Wt.transitional(Wt.boolean)},!1),s!=null&&(k.isFunction(s)?n.paramsSerializer={serialize:s}:ci.assertOptions(s,{encode:Wt.function,serialize:Wt.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i;i=a&&k.merge(a.common,a[n.method]),i&&k.forEach(["delete","get","head","post","put","patch","common"],g=>{delete a[g]}),n.headers=It.concat(i,a);const o=[];let l=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(l=l&&v.synchronous,o.unshift(v.fulfilled,v.rejected))});const c=[];this.interceptors.response.forEach(function(v){c.push(v.fulfilled,v.rejected)});let u,f=0,d;if(!l){const g=[Bl.bind(this),void 0];for(g.unshift.apply(g,o),g.push.apply(g,c),d=g.length,u=Promise.resolve(n);f{if(!r._listeners)return;let a=r._listeners.length;for(;a-- >0;)r._listeners[a](s);r._listeners=null}),this.promise.then=s=>{let a;const i=new Promise(o=>{r.subscribe(o),a=o}).then(s);return i.cancel=function(){r.unsubscribe(a)},i},t(function(a,i,o){r.reason||(r.reason=new Wr(a,i,o),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new co(function(s){t=s}),cancel:t}}}const Z2=co;function eg(e){return function(n){return e.apply(null,n)}}function tg(e){return k.isObject(e)&&e.isAxiosError===!0}const ui={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ui).forEach(([e,t])=>{ui[t]=e});const ng=ui;function Lf(e){const t=new Cs(e),n=df(Cs.prototype.request,t);return k.extend(n,Cs.prototype,t,{allOwnKeys:!0}),k.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Lf(Wn(e,s))},n}const $e=Lf(oo);$e.Axios=Cs;$e.CanceledError=Wr;$e.CancelToken=Z2;$e.isCancel=Cf;$e.VERSION=Tf;$e.toFormData=da;$e.AxiosError=ce;$e.Cancel=$e.CanceledError;$e.all=function(t){return Promise.all(t)};$e.spread=eg;$e.isAxiosError=tg;$e.mergeConfig=Wn;$e.AxiosHeaders=It;$e.formToJSON=e=>Sf(k.isHTMLForm(e)?new FormData(e):e);$e.HttpStatusCode=ng;$e.default=$e;const Ul=$e;function rg(e,t){switch(e.replace("_","-")){case"af":case"af-ZA":case"bn":case"bn-BD":case"bn-IN":case"bg":case"bg-BG":case"ca":case"ca-AD":case"ca-ES":case"ca-FR":case"ca-IT":case"da":case"da-DK":case"de":case"de-AT":case"de-BE":case"de-CH":case"de-DE":case"de-LI":case"de-LU":case"el":case"el-CY":case"el-GR":case"en":case"en-AG":case"en-AU":case"en-BW":case"en-CA":case"en-DK":case"en-GB":case"en-HK":case"en-IE":case"en-IN":case"en-NG":case"en-NZ":case"en-PH":case"en-SG":case"en-US":case"en-ZA":case"en-ZM":case"en-ZW":case"eo":case"eo-US":case"es":case"es-AR":case"es-BO":case"es-CL":case"es-CO":case"es-CR":case"es-CU":case"es-DO":case"es-EC":case"es-ES":case"es-GT":case"es-HN":case"es-MX":case"es-NI":case"es-PA":case"es-PE":case"es-PR":case"es-PY":case"es-SV":case"es-US":case"es-UY":case"es-VE":case"et":case"et-EE":case"eu":case"eu-ES":case"eu-FR":case"fa":case"fa-IR":case"fi":case"fi-FI":case"fo":case"fo-FO":case"fur":case"fur-IT":case"fy":case"fy-DE":case"fy-NL":case"gl":case"gl-ES":case"gu":case"gu-IN":case"ha":case"ha-NG":case"he":case"he-IL":case"hu":case"hu-HU":case"is":case"is-IS":case"it":case"it-CH":case"it-IT":case"ku":case"ku-TR":case"lb":case"lb-LU":case"ml":case"ml-IN":case"mn":case"mn-MN":case"mr":case"mr-IN":case"nah":case"nb":case"nb-NO":case"ne":case"ne-NP":case"nl":case"nl-AW":case"nl-BE":case"nl-NL":case"nn":case"nn-NO":case"no":case"om":case"om-ET":case"om-KE":case"or":case"or-IN":case"pa":case"pa-IN":case"pa-PK":case"pap":case"pap-AN":case"pap-AW":case"pap-CW":case"ps":case"ps-AF":case"pt":case"pt-BR":case"pt-PT":case"so":case"so-DJ":case"so-ET":case"so-KE":case"so-SO":case"sq":case"sq-AL":case"sq-MK":case"sv":case"sv-FI":case"sv-SE":case"sw":case"sw-KE":case"sw-TZ":case"ta":case"ta-IN":case"ta-LK":case"te":case"te-IN":case"tk":case"tk-TM":case"ur":case"ur-IN":case"ur-PK":case"zu":case"zu-ZA":return t===1?0:1;case"am":case"am-ET":case"bh":case"fil":case"fil-PH":case"fr":case"fr-BE":case"fr-CA":case"fr-CH":case"fr-FR":case"fr-LU":case"gun":case"hi":case"hi-IN":case"hy":case"hy-AM":case"ln":case"ln-CD":case"mg":case"mg-MG":case"nso":case"nso-ZA":case"ti":case"ti-ER":case"ti-ET":case"wa":case"wa-BE":case"xbr":return t===0||t===1?0:1;case"be":case"be-BY":case"bs":case"bs-BA":case"hr":case"hr-HR":case"ru":case"ru-RU":case"ru-UA":case"sr":case"sr-ME":case"sr-RS":case"uk":case"uk-UA":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"cs-CZ":case"sk":case"sk-SK":return t==1?0:t>=2&&t<=4?1:2;case"ga":case"ga-IE":return t==1?0:t==2?1:2;case"lt":case"lt-LT":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":case"sl-SI":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":case"mk-MK":return t%10==1?0:1;case"mt":case"mt-MT":return t==1?0:t==0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":case"lv-LV":return t==0?0:t%10==1&&t%100!=11?1:2;case"pl":case"pl-PL":return t==1?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":case"cy-GB":return t==1?0:t==2?1:t==8||t==11?2:3;case"ro":case"ro-RO":return t==1?0:t==0||t%100>0&&t%100<20?1:2;case"ar":case"ar-AE":case"ar-BH":case"ar-DZ":case"ar-EG":case"ar-IN":case"ar-IQ":case"ar-JO":case"ar-KW":case"ar-LB":case"ar-LY":case"ar-MA":case"ar-OM":case"ar-QA":case"ar-SA":case"ar-SD":case"ar-SS":case"ar-SY":case"ar-TN":case"ar-YE":return t==0?0:t==1?1:t==2?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5;default:return 0}}function sg(e,t,n){let r=e.split("|");const s=ag(r,t);if(s!==null)return s.trim();r=og(r);const a=rg(n,t);return r.length===1||!r[a]?r[0]:r[a]}function ag(e,t){for(const n of e){let r=ig(n,t);if(r!==null)return r}return null}function ig(e,t){const n=e.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s)||[];if(n.length!==3)return null;const r=n[1],s=n[2];if(r.includes(",")){let[a,i]=r.split(",");if(i==="*"&&t>=parseFloat(a))return s;if(a==="*"&&t<=parseFloat(i))return s;if(t>=parseFloat(a)&&t<=parseFloat(i))return s}return parseFloat(r)===t?s:null}function og(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const $a=(e,t,n={})=>{try{return e(t)}catch{return n}},Fa=async(e,t={})=>{try{return(await e).default||t}catch{return t}};function Kl(e){return e||lg()||cg()}function lg(){var e;return!!(typeof process<"u"&&((e=process.env)!=null&&e.LARAVEL_VUE_I18N_HAS_PHP))}function cg(){return typeof{VITE_LARAVEL_VUE_I18N_HAS_PHP:"true",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}<"u"}const Mn=typeof window>"u";let Tn=null;const Wl={lang:!Mn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},ug={shared:!0};function ql(e,t=!1){return Ze.getSharedInstance().loadLanguageAsync(e,t)}function Je(e,t={}){return Ze.getSharedInstance().trans(e,t)}function by(){return Ze.getSharedInstance().getActiveLanguage()}const fg={install(e,t={}){t={...ug,...t};const n=t.shared?Ze.getSharedInstance(t,!0):new Ze(t);e.config.globalProperties.$t=(r,s)=>n.trans(r,s),e.config.globalProperties.$tChoice=(r,s,a)=>n.transChoice(r,s,a),e.provide("i18n",n)}};class Ze{constructor(t={}){this.activeMessages=Nt({}),this.fallbackMessages=Nt({}),this.reset=()=>{Ze.loaded=[],this.options=Wl;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===Tn&&(Tn=null)},this.options={...Wl,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Mn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Mn){this.resolveLangAsync(this.options.resolve,this.options.fallbackLang).then(({default:n})=>{this.applyFallbackLanguage(this.options.fallbackLang,n),this.load()});return}const{default:t}=this.resolveLang(this.options.resolve,this.options.fallbackLang);this.applyFallbackLanguage(this.options.fallbackLang,t),this.loadLanguage(this.getActiveLanguage())}loadLanguage(t,n=!1){const r=Ze.loaded.find(a=>a.lang===t);if(r){this.setLanguage(r);return}const{default:s}=this.resolveLang(this.options.resolve,t);this.applyLanguage(t,s,n,this.loadLanguage)}loadLanguageAsync(t,n=!1,r=!1){var a;r||((a=this.abortController)==null||a.abort(),this.abortController=new AbortController);const s=Ze.loaded.find(i=>i.lang===t);return s?Promise.resolve(this.setLanguage(s)):new Promise((i,o)=>{this.abortController.signal.addEventListener("abort",()=>{i()}),this.resolveLangAsync(this.options.resolve,t).then(({default:l})=>{i(this.applyLanguage(t,l,n,this.loadLanguageAsync))})})}resolveLang(t,n,r={}){return Object.keys(r).length||(r=$a(t,n)),Kl(Mn)?{default:{...r,...$a(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=$a(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(Kl(Mn)){const s=await Fa(t(`php_${n}`)),a=await Fa(r);return new Promise(i=>i({default:{...s,...a}}))}return new Promise(async s=>s({default:await Fa(r)}))}applyLanguage(t,n,r=!1,s){if(Object.keys(n).length<1){if(/[-_]/g.test(t)&&!r)return s.call(this,t.replace(/[-_]/g,i=>i==="-"?"_":"-"),!0,!0);if(t!==this.options.fallbackLang)return s.call(this,this.options.fallbackLang,!1,!0)}const a={lang:t,messages:n};return Ze.loaded.push(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;Ze.loaded.push({lang:this.options.fallbackLang,messages:n})}setLanguage({lang:t,messages:n}){Mn||document.documentElement.setAttribute("lang",t.replace("_","-")),this.options.lang=t;for(const[r,s]of Object.entries(n))this.activeMessages[r]=s;for(const[r,s]of Object.entries(this.fallbackMessages))(!this.activeMessages[r]||this.activeMessages[r]===r)&&(this.activeMessages[r]=s);for(const[r]of Object.entries(this.activeMessages))!n[r]&&!this.fallbackMessages[r]&&(this.activeMessages[r]=null);return this.options.onLoad(t),t}getActiveLanguage(){return this.options.lang||this.options.fallbackLang}isLoaded(t){return t??(t=this.getActiveLanguage()),Ze.loaded.some(n=>n.lang.replace(/[-_]/g,"-")===t.replace(/[-_]/g,"-"))}trans(t,n={}){return this.wTrans(t,n).value}wTrans(t,n={}){return ji(()=>{this.activeMessages[t]=this.findTranslation(t)||this.findTranslation(t.replace(/\//g,"."))||t}),ne(()=>this.makeReplacements(this.activeMessages[t],n))}transChoice(t,n,r={}){return this.wTransChoice(t,n,r).value}wTransChoice(t,n,r={}){const s=this.wTrans(t,r);return r.count=n.toString(),ne(()=>this.makeReplacements(sg(s.value,n,this.options.lang),r))}findTranslation(t){if(this.activeMessages[t])return this.activeMessages[t];if(this.activeMessages[`${t}.0`]!==void 0){const r=Object.entries(this.activeMessages).filter(s=>s[0].startsWith(`${t}.`)).map(s=>s[1]);return Nt(r)}return this.activeMessages[t]}makeReplacements(t,n){const r=s=>s.charAt(0).toUpperCase()+s.slice(1);return Object.entries(n||[]).sort((s,a)=>s[0].length>=a[0].length?-1:1).forEach(([s,a])=>{a=a.toString(),t=t.replace(new RegExp(`:${s}`,"g"),a).replace(new RegExp(`:${s.toUpperCase()}`,"g"),a.toUpperCase()).replace(new RegExp(`:${r(s)}`,"g"),r(a))}),t}static getSharedInstance(t,n=!1){return(Tn==null?void 0:Tn.setOptions(t,n))||(Tn=new Ze(t))}}Ze.loaded=[];const{notify:Ln}=Fu(),At=Ur({id:"notify",state:()=>({err:null,message:null,originalMessage:null,debug:null}),getters:{},actions:{parseError(e){this.$reset,this.err=e,e.response?e.response.status===407?(this.message=Je("errors.auth_proxy_failed"),this.originalMessage=Je("errors.auth_proxy_failed_legend")):e.response.status===403?(this.message=Je("errors.unauthorized"),this.originalMessage=Je("errors.unauthorized_legend")):e.response.data&&(this.message=e.response.data.message,this.originalMessage=e.response.data.originalMessage??null,this.debug=e.response.data.debug??null):(this.message=e.message,this.debug=e.stack??null)},notFound(e){qn.push({name:"404"})},error(e){this.parseError(e),qn.push({name:"genericError"})},info(e){Ln({type:"is-info",...e})},success(e){Ln({type:"is-success",...e})},warn(e){Ln({type:"is-warning",...e})},alert(e){Ln({type:"is-danger",...e})},action(e){Ln({type:"is-dark",...e})},clear(){Ln({clean:!0})}}}),rr=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Ul.create({baseURL:t,headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/json"},withCredentials:!0});return r.interceptors.response.use(s=>s,async function(s){const a=s.config;return s.response.status===419&&!a._retried?(a._retried=!0,await Ul.get("/refresh-csrf"),r.request(a)):(s.response.status===418&&ft().logout({kicked:!0}),s.response&&[407].includes(s.response.status)?(At().error(s),new Promise(()=>{})):s.config.hasOwnProperty("returnError")&&s.config.returnError===!0||(s.response&&[401].includes(s.response.status)&&ft().tossOut(),s.response.status===422)?Promise.reject(s):s.response.status===404?(At().notFound(),new Promise(()=>{})):(At().error(s),new Promise(()=>{})))}),r},dg=rr("web"),pg=rr("api"),Pf={logout(e={}){return dg.get("/user/logout",{...e})},async getCurrentUser(e={}){return pg.get("/user",{...e})}},Lt=rr("api"),as=rr("web"),mg={getPreferences(e={}){return Lt.get("/user/preferences",{...e})},updatePreference(e,t,n={}){return Lt.put("/user/preferences/"+e,{value:t},{...n})},getWebauthnDevices(e={}){return as.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return as.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return as.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return as.delete("/oauth/personal-access-tokens/"+e,{...t})},getAll(e={}){return Lt.get("/users",{...e})},getById(e,t={}){return Lt.get("/users/"+e,{...t})},resetPassword(e,t={}){return Lt.patch("/users/"+e+"/password/reset",{},{...t})},delete(e,t={}){return Lt.delete("/users/"+e,{...t})},promote(e,t,n={}){return Lt.patch("/users/"+e+"/promote",t,{...n})},revokePATs(e,t={}){return Lt.delete("/users/"+e+"/pats",{...t})},revokeWebauthnCredentials(e,t={}){return Lt.delete("/users/"+e+"/credentials",{...t})}},Ke=rr("api"),is={getAll(e=!1,t={}){return Ke.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return Ke.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return Ke.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return Ke.post("/twofaccounts/preview",{uri:e},{...t})},getLogo(e,t={}){return Ke.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return Ke.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return Ke.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return Ke.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return Ke.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return Ke.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return Ke.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return Ke.delete("/twofaccounts?ids="+e,{...t})},export(e,t={}){return Ke.get("/twofaccounts/export?ids="+e,{...t})},getQrcode(e,t={}){return Ke.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return Ke.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return Ke.get("/twofaccounts/count",{...e})}};var ur=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Rf={exports:{}};(function(e,t){(function(n,r){r()})(ur,function(){function n(c,u){return typeof u>"u"?u={autoBom:!1}:typeof u!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),u={autoBom:!u}),u.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(c.type)?new Blob(["\uFEFF",c],{type:c.type}):c}function r(c,u,f){var d=new XMLHttpRequest;d.open("GET",c),d.responseType="blob",d.onload=function(){l(d.response,u,f)},d.onerror=function(){console.error("could not download file")},d.send()}function s(c){var u=new XMLHttpRequest;u.open("HEAD",c,!1);try{u.send()}catch{}return 200<=u.status&&299>=u.status}function a(c){try{c.dispatchEvent(new MouseEvent("click"))}catch{var u=document.createEvent("MouseEvents");u.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),c.dispatchEvent(u)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof ur=="object"&&ur.global===ur?ur:void 0,o=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=i.saveAs||(typeof window!="object"||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(c,u,f){var d=i.URL||i.webkitURL,m=document.createElement("a");u=u||c.name||"download",m.download=u,m.rel="noopener",typeof c=="string"?(m.href=c,m.origin===location.origin?a(m):s(m.href)?r(c,u,f):a(m,m.target="_blank")):(m.href=d.createObjectURL(c),setTimeout(function(){d.revokeObjectURL(m.href)},4e4),setTimeout(function(){a(m)},0))}:"msSaveOrOpenBlob"in navigator?function(c,u,f){if(u=u||c.name||"download",typeof c!="string")navigator.msSaveOrOpenBlob(n(c,f),u);else if(s(c))r(c,u,f);else{var d=document.createElement("a");d.href=c,d.target="_blank",setTimeout(function(){a(d)})}}:function(c,u,f,d){if(d=d||open("","_blank"),d&&(d.document.title=d.document.body.innerText="downloading..."),typeof c=="string")return r(c,u,f);var m=c.type==="application/octet-stream",g=/constructor/i.test(i.HTMLElement)||i.safari,v=/CriOS\/[\d]+/.test(navigator.userAgent);if((v||m&&g||o)&&typeof FileReader<"u"){var S=new FileReader;S.onloadend=function(){var P=S.result;P=v?P:P.replace(/^data:[^;]*;/,"data:attachment/file;"),d?d.location.href=P:location=P,d=null},S.readAsDataURL(c)}else{var b=i.URL||i.webkitURL,_=b.createObjectURL(c);d?d.location=_:location.href=_,d=null,setTimeout(function(){b.revokeObjectURL(_)},4e4)}});i.saveAs=l.saveAs=l,e.exports=l})})(Rf);var hg=Rf.exports;const Mf=Ur({id:"twofaccounts",state:()=>({items:[],selectedIds:[],filter:"",backendWasNewer:!1,fetchedOn:null}),getters:{filtered(e){const t=ft();return e.items.filter(n=>parseInt(t.preferences.activeGroup)>0?((n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))&&n.group_id==parseInt(t.preferences.activeGroup):(n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))},periods(e){return e.items.filter(t=>t.otp_type=="totp").map(function(t){var n;return{period:t.period,generated_at:(n=t.otp)==null?void 0:n.generated_at}}).filter((t,n,r)=>n===r.findIndex(s=>s.period===t.period)).sort()},orderedIds(e){return e.items.map(t=>t.id)},isEmpty(e){return e.items.length==0},count(e){return e.items.length},filteredCount(e){return e.filtered.length},selectedCount(e){return e.selectedIds.length},hasNoneSelected(e){return e.selectedIds.length==0}},actions:{async fetch(e=!1){Math.floor(Date.now()-this.fetchedOn)>2e3||e?(this.fetchedOn=Date.now(),await is.getAll(!ft().preferences.getOtpOnRequest).then(r=>{e&&(this.backendWasNewer=r.data.length!==this.items.length,this.items.forEach(s=>{let a=r.data.find(i=>i.id===s.id);if(a==null){this.backendWasNewer=!0;return}for(const i in s)if(i!=="otp"&&s[i]!=a[i]){this.backendWasNewer=!0;return}})),this.items=r.data})):this.backendWasNewer=!1},select(e){for(var t=0;te.id)},selectNone(){this.selectedIds=[]},async deleteSelected(){confirm(Je("twofaccounts.confirm.delete"))&&this.selectedIds.length>0&&await is.batchDelete(this.selectedIds.join()).then(e=>{let t=this.items;this.selectedIds.forEach(function(n){t=t.filter(r=>r.id!==n)}),this.items=t,this.selectNone(),At().success({text:Je("twofaccounts.accounts_deleted")})})},export(){is.export(this.selectedIds.join(),{responseType:"blob"}).then(e=>{var t=new Blob([e.data],{type:"application/json;charset=utf-8"});hg.saveAs.saveAs(t,"2fauth_export.json")})},saveOrder(){is.saveOrder(this.orderedIds)},sortAsc(){this.items.sort((e,t)=>e.service>t.service?1:-1),this.saveOrder()},sortDesc(){this.items.sort((e,t)=>e.servicet.period==e).map(t=>t.id)}}}),os=rr("api"),Yl={getAll(){return os.get("groups")},get(e,t={}){return os.get("/groups/"+e,{...t})},assign(e,t,n={}){return os.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return os.delete("/groups/"+e,{...t})}},gg=Ur({id:"groups",state:()=>({items:[],fetchedOn:null}),getters:{current(e){const t=e.items.find(n=>n.id===parseInt(ft().preferences.activeGroup));return t?t.name:Je("commons.all")},withoutTheAllGroup(e){return e.items.filter(t=>t.id>0)},theAllGroup(e){return e.items.find(t=>t.id==0)},isEmpty(){return this.withoutTheAllGroup.length==0},count(){return this.withoutTheAllGroup.length}},actions:{addOrEdit(e){const t=this.items.findIndex(n=>n.id===parseInt(e.id));t>-1?(this.items[t]=e,At().success({text:Je("groups.group_name_saved")})):(this.items.push(e),At().success({text:Je("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await Yl.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=ft();confirm(Je("groups.confirm.delete"))&&await Yl.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),At().success({text:Je("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),ft=Ur({id:"user",state:()=>({id:void 0,name:void 0,email:void 0,oauth_provider:void 0,preferences:window.defaultPreferences,isAdmin:!1}),getters:{isAuthenticated(){return this.name!=null}},actions:{async loginAs(e){this.$patch(e),await this.initDataStores(),this.applyUserPrefs()},async initDataStores(){const e=Mf(),t=gg();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=At();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else Pf.logout({returnError:!0}).then(()=>{t&&(n.clear(),n.warn({text:Je("auth.autolock_triggered_punchline"),duration:-1})),this.tossOut()}).catch(r=>{r.response.status!==401?n.error(r):this.tossOut()})},tossOut(){this.$reset(),this.initDataStores(),this.applyUserPrefs(),qn.push({name:"login"})},applyTheme(){const e=sf({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=af();ql(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()},refreshPreferences(){mg.getPreferences({returnError:!0}).then(e=>{e.data.forEach(t=>{this.preferences[t.key]=t.value})}).catch(e=>{At().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}}),vg=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:ft},Symbol.toStringTag,{value:"Module"})),Nf=Ur({id:"appSettings",state:()=>({...window.appSettings}),actions:{}});async function Me({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await Pf.getCurrentUser({returnError:!0}).then(async a=>{const i=a.data;await s.loginAs({id:i.id,name:i.name,email:i.email,oauth_provider:i.oauth_provider,preferences:i.preferences,isAdmin:i.is_admin})}).catch(a=>{}),s.isAuthenticated?n():t({name:"login"})}async function ls({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,{notify:a}=r;if(s.isAdmin)n();else{let i=new Error("unauthorized");i.response.status=403,a.error(i)}}async function yg({to:e,next:t,nextMiddleware:n,stores:r}){const{twofaccounts:s}=r;s.isEmpty?await s.fetch().then(()=>{s.isEmpty?t({name:"start"}):n()}):n()}function bg({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function wg({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.disableRegistration?t({name:"notFound"}):n()}function We({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,a=rf(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function Pn({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const qn=h1({history:Rh(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>te(()=>import("./Start-4db59337.js"),["./Start-4db59337.js","./Form-88ba26a4.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>te(()=>import("./Capture-01720b57.js"),["./Capture-01720b57.js","./Form-88ba26a4.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css","./QrContentDisplay-1899c813.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>te(()=>import("./Accounts-bba10aec.js"),["./Accounts-bba10aec.js","./OtpDisplay-4c8a5daa.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css","./SearchBox-23302ff7.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,yg,We],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>te(()=>import("./CreateUpdate-818ecca1.js"),["./CreateUpdate-818ecca1.js","./Form-88ba26a4.js","./OtpDisplay-4c8a5daa.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css","./QrContentDisplay-1899c813.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>te(()=>import("./Import-372ba8b3.js"),["./Import-372ba8b3.js","./Form-88ba26a4.js","./OtpDisplay-4c8a5daa.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>te(()=>import("./CreateUpdate-818ecca1.js"),["./CreateUpdate-818ecca1.js","./Form-88ba26a4.js","./OtpDisplay-4c8a5daa.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css","./QrContentDisplay-1899c813.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>te(()=>import("./QRcode-40be5488.js"),["./QRcode-40be5488.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>te(()=>import("./Groups-9709021e.js"),["./Groups-9709021e.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>te(()=>import("./CreateUpdate-6d65a394.js"),["./CreateUpdate-6d65a394.js","./Form-88ba26a4.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>te(()=>import("./CreateUpdate-6d65a394.js"),["./CreateUpdate-6d65a394.js","./Form-88ba26a4.js","./bus-d94d2521.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>te(()=>import("./Options-e3b3035d.js"),["./Options-e3b3035d.js","./SettingTabs-beebcb43.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>te(()=>import("./Account-b029928c.js"),["./Account-b029928c.js","./Form-88ba26a4.js","./SettingTabs-beebcb43.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>te(()=>import("./OAuth-aa3383bc.js"),["./OAuth-aa3383bc.js","./Form-88ba26a4.js","./SettingTabs-beebcb43.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>te(()=>import("./Edit-c8ca049e.js"),["./Edit-c8ca049e.js","./Form-88ba26a4.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>te(()=>import("./WebAuthn-214c6fd8.js"),["./WebAuthn-214c6fd8.js","./SettingTabs-beebcb43.js","./webauthnService-d9fc6500.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/admin/app",name:"admin.appSetup",component:()=>te(()=>import("./AppSetup-989082f4.js"),["./AppSetup-989082f4.js","./AdminTabs-169daa20.js","./CopyButton-f30d9b07.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users",name:"admin.users",component:()=>te(()=>import("./Users-dd1a2a6d.js"),["./Users-dd1a2a6d.js","./AdminTabs-169daa20.js","./Spinner-f03b508f.js","./Spinner-2c227a70.css","./SearchBox-23302ff7.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/create",name:"admin.createUser",component:()=>te(()=>import("./Create-1758d7a4.js"),["./Create-1758d7a4.js","./Form-88ba26a4.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/:userId/manage",name:"admin.manageUser",component:()=>te(()=>import("./Manage-0bf446dd.js"),["./Manage-0bf446dd.js","./CopyButton-f30d9b07.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/login",name:"login",component:()=>te(()=>import("./Login-09d93a22.js"),["./Login-09d93a22.js","./Form-88ba26a4.js","./webauthnService-d9fc6500.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/register",name:"register",component:()=>te(()=>import("./Register-5477e1ea.js"),["./Register-5477e1ea.js","./Form-88ba26a4.js","./webauthnService-d9fc6500.js"],import.meta.url),meta:{middlewares:[Pn,wg,We],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>te(()=>import("./RequestReset-ae792188.js"),["./RequestReset-ae792188.js","./Form-88ba26a4.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>te(()=>import("./Reset-d53fbaa6.js"),["./Reset-d53fbaa6.js","./Form-88ba26a4.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>te(()=>import("./RequestReset-ae792188.js"),["./RequestReset-ae792188.js","./Form-88ba26a4.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>te(()=>import("./Recover-358a3490.js"),["./Recover-358a3490.js","./Form-88ba26a4.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/about",name:"about",component:()=>te(()=>import("./About-2c92bb64.js"),[],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>te(()=>import("./Error-38fc2eeb.js"),[],import.meta.url),meta:{middlewares:[bg],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>te(()=>import("./Error-38fc2eeb.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>te(()=>import("./Error-38fc2eeb.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});qn.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=ft(),a=Mf(),i=Nf(),o=At(),u={to:e,from:t,next:n,nextMiddleware:{},stores:{user:s,twofaccounts:a,appSettings:i,notify:o}};if(!r)return n();r[0]({...u,nextMiddleware:of(u,r,1)})});qn.afterEach((e,t)=>{e.meta.title=Je("titles."+e.name),document.title=e.meta.title});function Gl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function B(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);nr.set(s)),r}static accessor(t){const r=(this[Dl]=this[Dl]={accessors:{}}).accessors,s=this.prototype;function a(i){const o=cr(i);r[o]||(B2(s,i),r[o]=!0)}return k.isArray(t)?t.forEach(a):a(t),this}}ma.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);k.freezeMethods(ma.prototype);k.freezeMethods(ma);const It=ma;function Na(e,t){const n=this||oo,r=t||n,s=It.from(r.headers);let a=r.data;return k.forEach(e,function(o){a=o.call(n,a,s.normalize(),t?t.status:void 0)}),s.normalize(),a}function Cf(e){return!!(e&&e.__CANCEL__)}function Wr(e,t,n){ce.call(this,e??"canceled",ce.ERR_CANCELED,t,n),this.name="CanceledError"}k.inherits(Wr,ce,{__CANCEL__:!0});function j2(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new ce("Request failed with status code "+n.status,[ce.ERR_BAD_REQUEST,ce.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const V2=xt.isStandardBrowserEnv?function(){return{write:function(n,r,s,a,i,o){const l=[];l.push(n+"="+encodeURIComponent(r)),k.isNumber(s)&&l.push("expires="+new Date(s).toGMTString()),k.isString(a)&&l.push("path="+a),k.isString(i)&&l.push("domain="+i),o===!0&&l.push("secure"),document.cookie=l.join("; ")},read:function(n){const r=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return r?decodeURIComponent(r[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function U2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function K2(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function Of(e,t){return e&&!U2(t)?K2(e,t):t}const W2=xt.isStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function s(a){let i=a;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const o=k.isString(i)?s(i):i;return o.protocol===r.protocol&&o.host===r.host}}():function(){return function(){return!0}}();function q2(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Y2(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,a=0,i;return t=t!==void 0?t:1e3,function(l){const c=Date.now(),u=r[a];i||(i=c),n[s]=l,r[s]=c;let f=a,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),c-i{const a=s.loaded,i=s.lengthComputable?s.total:void 0,o=a-n,l=r(o),c=a<=i;n=a;const u={loaded:a,total:i,progress:i?a/i:void 0,bytes:o,rate:l||void 0,estimated:l&&i&&c?(i-a)/l:void 0,event:s};u[t?"download":"upload"]=!0,e(u)}}const G2=typeof XMLHttpRequest<"u",J2=G2&&function(e){return new Promise(function(n,r){let s=e.data;const a=It.from(e.headers).normalize(),i=e.responseType;let o;function l(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener("abort",o)}k.isFormData(s)&&(xt.isStandardBrowserEnv||xt.isStandardBrowserWebWorkerEnv?a.setContentType(!1):a.setContentType("multipart/form-data;",!1));let c=new XMLHttpRequest;if(e.auth){const m=e.auth.username||"",g=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";a.set("Authorization","Basic "+btoa(m+":"+g))}const u=Of(e.baseURL,e.url);c.open(e.method.toUpperCase(),kf(u,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function f(){if(!c)return;const m=It.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders()),v={data:!i||i==="text"||i==="json"?c.responseText:c.response,status:c.status,statusText:c.statusText,headers:m,config:e,request:c};j2(function(b){n(b),l()},function(b){r(b),l()},v),c=null}if("onloadend"in c?c.onloadend=f:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(f)},c.onabort=function(){c&&(r(new ce("Request aborted",ce.ECONNABORTED,e,c)),c=null)},c.onerror=function(){r(new ce("Network Error",ce.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let g=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const v=e.transitional||Af;e.timeoutErrorMessage&&(g=e.timeoutErrorMessage),r(new ce(g,v.clarifyTimeoutError?ce.ETIMEDOUT:ce.ECONNABORTED,e,c)),c=null},xt.isStandardBrowserEnv){const m=(e.withCredentials||W2(u))&&e.xsrfCookieName&&V2.read(e.xsrfCookieName);m&&a.set(e.xsrfHeaderName,m)}s===void 0&&a.setContentType(null),"setRequestHeader"in c&&k.forEach(a.toJSON(),function(g,v){c.setRequestHeader(v,g)}),k.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),i&&i!=="json"&&(c.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&c.addEventListener("progress",zl(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",zl(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=m=>{c&&(r(!m||m.type?new Wr(null,e,c):m),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener("abort",o)));const d=q2(u);if(d&&xt.protocols.indexOf(d)===-1){r(new ce("Unsupported protocol "+d+":",ce.ERR_BAD_REQUEST,e));return}c.send(s||null)})},Ss={http:_2,xhr:J2};k.forEach(Ss,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const X2={getAdapter:e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let n,r;for(let s=0;se instanceof It?e.toJSON():e;function Wn(e,t){t=t||{};const n={};function r(c,u,f){return k.isPlainObject(c)&&k.isPlainObject(u)?k.merge.call({caseless:f},c,u):k.isPlainObject(u)?k.merge({},u):k.isArray(u)?u.slice():u}function s(c,u,f){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c,f)}else return r(c,u,f)}function a(c,u){if(!k.isUndefined(u))return r(void 0,u)}function i(c,u){if(k.isUndefined(u)){if(!k.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function o(c,u,f){if(f in t)return r(c,u);if(f in e)return r(void 0,c)}const l={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:o,headers:(c,u)=>s(jl(c),jl(u),!0)};return k.forEach(Object.keys(Object.assign({},e,t)),function(u){const f=l[u]||s,d=f(e[u],t[u],u);k.isUndefined(d)&&f!==o||(n[u]=d)}),n}const Tf="1.4.0",lo={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{lo[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Vl={};lo.transitional=function(t,n,r){function s(a,i){return"[Axios v"+Tf+"] Transitional option '"+a+"'"+i+(r?". "+r:"")}return(a,i,o)=>{if(t===!1)throw new ce(s(i," has been removed"+(n?" in "+n:"")),ce.ERR_DEPRECATED);return n&&!Vl[i]&&(Vl[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(a,i,o):!0}};function Q2(e,t,n){if(typeof e!="object")throw new ce("options must be an object",ce.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const a=r[s],i=t[a];if(i){const o=e[a],l=o===void 0||i(o,a,e);if(l!==!0)throw new ce("option "+a+" must be "+l,ce.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ce("Unknown option "+a,ce.ERR_BAD_OPTION)}}const ci={assertOptions:Q2,validators:lo},Wt=ci.validators;class zs{constructor(t){this.defaults=t,this.interceptors={request:new Hl,response:new Hl}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Wn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:a}=n;r!==void 0&&ci.assertOptions(r,{silentJSONParsing:Wt.transitional(Wt.boolean),forcedJSONParsing:Wt.transitional(Wt.boolean),clarifyTimeoutError:Wt.transitional(Wt.boolean)},!1),s!=null&&(k.isFunction(s)?n.paramsSerializer={serialize:s}:ci.assertOptions(s,{encode:Wt.function,serialize:Wt.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i;i=a&&k.merge(a.common,a[n.method]),i&&k.forEach(["delete","get","head","post","put","patch","common"],g=>{delete a[g]}),n.headers=It.concat(i,a);const o=[];let l=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(l=l&&v.synchronous,o.unshift(v.fulfilled,v.rejected))});const c=[];this.interceptors.response.forEach(function(v){c.push(v.fulfilled,v.rejected)});let u,f=0,d;if(!l){const g=[Bl.bind(this),void 0];for(g.unshift.apply(g,o),g.push.apply(g,c),d=g.length,u=Promise.resolve(n);f{if(!r._listeners)return;let a=r._listeners.length;for(;a-- >0;)r._listeners[a](s);r._listeners=null}),this.promise.then=s=>{let a;const i=new Promise(o=>{r.subscribe(o),a=o}).then(s);return i.cancel=function(){r.unsubscribe(a)},i},t(function(a,i,o){r.reason||(r.reason=new Wr(a,i,o),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new co(function(s){t=s}),cancel:t}}}const Z2=co;function eg(e){return function(n){return e.apply(null,n)}}function tg(e){return k.isObject(e)&&e.isAxiosError===!0}const ui={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ui).forEach(([e,t])=>{ui[t]=e});const ng=ui;function Lf(e){const t=new Cs(e),n=df(Cs.prototype.request,t);return k.extend(n,Cs.prototype,t,{allOwnKeys:!0}),k.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Lf(Wn(e,s))},n}const $e=Lf(oo);$e.Axios=Cs;$e.CanceledError=Wr;$e.CancelToken=Z2;$e.isCancel=Cf;$e.VERSION=Tf;$e.toFormData=da;$e.AxiosError=ce;$e.Cancel=$e.CanceledError;$e.all=function(t){return Promise.all(t)};$e.spread=eg;$e.isAxiosError=tg;$e.mergeConfig=Wn;$e.AxiosHeaders=It;$e.formToJSON=e=>Sf(k.isHTMLForm(e)?new FormData(e):e);$e.HttpStatusCode=ng;$e.default=$e;const Ul=$e;function rg(e,t){switch(e.replace("_","-")){case"af":case"af-ZA":case"bn":case"bn-BD":case"bn-IN":case"bg":case"bg-BG":case"ca":case"ca-AD":case"ca-ES":case"ca-FR":case"ca-IT":case"da":case"da-DK":case"de":case"de-AT":case"de-BE":case"de-CH":case"de-DE":case"de-LI":case"de-LU":case"el":case"el-CY":case"el-GR":case"en":case"en-AG":case"en-AU":case"en-BW":case"en-CA":case"en-DK":case"en-GB":case"en-HK":case"en-IE":case"en-IN":case"en-NG":case"en-NZ":case"en-PH":case"en-SG":case"en-US":case"en-ZA":case"en-ZM":case"en-ZW":case"eo":case"eo-US":case"es":case"es-AR":case"es-BO":case"es-CL":case"es-CO":case"es-CR":case"es-CU":case"es-DO":case"es-EC":case"es-ES":case"es-GT":case"es-HN":case"es-MX":case"es-NI":case"es-PA":case"es-PE":case"es-PR":case"es-PY":case"es-SV":case"es-US":case"es-UY":case"es-VE":case"et":case"et-EE":case"eu":case"eu-ES":case"eu-FR":case"fa":case"fa-IR":case"fi":case"fi-FI":case"fo":case"fo-FO":case"fur":case"fur-IT":case"fy":case"fy-DE":case"fy-NL":case"gl":case"gl-ES":case"gu":case"gu-IN":case"ha":case"ha-NG":case"he":case"he-IL":case"hu":case"hu-HU":case"is":case"is-IS":case"it":case"it-CH":case"it-IT":case"ku":case"ku-TR":case"lb":case"lb-LU":case"ml":case"ml-IN":case"mn":case"mn-MN":case"mr":case"mr-IN":case"nah":case"nb":case"nb-NO":case"ne":case"ne-NP":case"nl":case"nl-AW":case"nl-BE":case"nl-NL":case"nn":case"nn-NO":case"no":case"om":case"om-ET":case"om-KE":case"or":case"or-IN":case"pa":case"pa-IN":case"pa-PK":case"pap":case"pap-AN":case"pap-AW":case"pap-CW":case"ps":case"ps-AF":case"pt":case"pt-BR":case"pt-PT":case"so":case"so-DJ":case"so-ET":case"so-KE":case"so-SO":case"sq":case"sq-AL":case"sq-MK":case"sv":case"sv-FI":case"sv-SE":case"sw":case"sw-KE":case"sw-TZ":case"ta":case"ta-IN":case"ta-LK":case"te":case"te-IN":case"tk":case"tk-TM":case"ur":case"ur-IN":case"ur-PK":case"zu":case"zu-ZA":return t===1?0:1;case"am":case"am-ET":case"bh":case"fil":case"fil-PH":case"fr":case"fr-BE":case"fr-CA":case"fr-CH":case"fr-FR":case"fr-LU":case"gun":case"hi":case"hi-IN":case"hy":case"hy-AM":case"ln":case"ln-CD":case"mg":case"mg-MG":case"nso":case"nso-ZA":case"ti":case"ti-ER":case"ti-ET":case"wa":case"wa-BE":case"xbr":return t===0||t===1?0:1;case"be":case"be-BY":case"bs":case"bs-BA":case"hr":case"hr-HR":case"ru":case"ru-RU":case"ru-UA":case"sr":case"sr-ME":case"sr-RS":case"uk":case"uk-UA":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"cs-CZ":case"sk":case"sk-SK":return t==1?0:t>=2&&t<=4?1:2;case"ga":case"ga-IE":return t==1?0:t==2?1:2;case"lt":case"lt-LT":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":case"sl-SI":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":case"mk-MK":return t%10==1?0:1;case"mt":case"mt-MT":return t==1?0:t==0||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":case"lv-LV":return t==0?0:t%10==1&&t%100!=11?1:2;case"pl":case"pl-PL":return t==1?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":case"cy-GB":return t==1?0:t==2?1:t==8||t==11?2:3;case"ro":case"ro-RO":return t==1?0:t==0||t%100>0&&t%100<20?1:2;case"ar":case"ar-AE":case"ar-BH":case"ar-DZ":case"ar-EG":case"ar-IN":case"ar-IQ":case"ar-JO":case"ar-KW":case"ar-LB":case"ar-LY":case"ar-MA":case"ar-OM":case"ar-QA":case"ar-SA":case"ar-SD":case"ar-SS":case"ar-SY":case"ar-TN":case"ar-YE":return t==0?0:t==1?1:t==2?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5;default:return 0}}function sg(e,t,n){let r=e.split("|");const s=ag(r,t);if(s!==null)return s.trim();r=og(r);const a=rg(n,t);return r.length===1||!r[a]?r[0]:r[a]}function ag(e,t){for(const n of e){let r=ig(n,t);if(r!==null)return r}return null}function ig(e,t){const n=e.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s)||[];if(n.length!==3)return null;const r=n[1],s=n[2];if(r.includes(",")){let[a,i]=r.split(",");if(i==="*"&&t>=parseFloat(a))return s;if(a==="*"&&t<=parseFloat(i))return s;if(t>=parseFloat(a)&&t<=parseFloat(i))return s}return parseFloat(r)===t?s:null}function og(e){return e.map(t=>t.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}const $a=(e,t,n={})=>{try{return e(t)}catch{return n}},Fa=async(e,t={})=>{try{return(await e).default||t}catch{return t}};function Kl(e){return e||lg()||cg()}function lg(){var e;return!!(typeof process<"u"&&((e=process.env)!=null&&e.LARAVEL_VUE_I18N_HAS_PHP))}function cg(){return typeof{VITE_LARAVEL_VUE_I18N_HAS_PHP:"true",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}<"u"}const Mn=typeof window>"u";let Tn=null;const Wl={lang:!Mn&&document.documentElement.lang?document.documentElement.lang.replace("-","_"):null,fallbackLang:"en",fallbackMissingTranslations:!1,resolve:e=>new Promise(t=>t({default:{}})),onLoad:e=>{}},ug={shared:!0};function ql(e,t=!1){return Ze.getSharedInstance().loadLanguageAsync(e,t)}function Je(e,t={}){return Ze.getSharedInstance().trans(e,t)}function by(){return Ze.getSharedInstance().getActiveLanguage()}const fg={install(e,t={}){t={...ug,...t};const n=t.shared?Ze.getSharedInstance(t,!0):new Ze(t);e.config.globalProperties.$t=(r,s)=>n.trans(r,s),e.config.globalProperties.$tChoice=(r,s,a)=>n.transChoice(r,s,a),e.provide("i18n",n)}};class Ze{constructor(t={}){this.activeMessages=Nt({}),this.fallbackMessages=Nt({}),this.reset=()=>{Ze.loaded=[],this.options=Wl;for(const[n]of Object.entries(this.activeMessages))this.activeMessages[n]=null;this===Tn&&(Tn=null)},this.options={...Wl,...t},this.options.fallbackMissingTranslations?this.loadFallbackLanguage():this.load()}setOptions(t={},n=!1){return this.options={...this.options,...t},n&&this.load(),this}load(){this[Mn?"loadLanguage":"loadLanguageAsync"](this.getActiveLanguage())}loadFallbackLanguage(){if(!Mn){this.resolveLangAsync(this.options.resolve,this.options.fallbackLang).then(({default:n})=>{this.applyFallbackLanguage(this.options.fallbackLang,n),this.load()});return}const{default:t}=this.resolveLang(this.options.resolve,this.options.fallbackLang);this.applyFallbackLanguage(this.options.fallbackLang,t),this.loadLanguage(this.getActiveLanguage())}loadLanguage(t,n=!1){const r=Ze.loaded.find(a=>a.lang===t);if(r){this.setLanguage(r);return}const{default:s}=this.resolveLang(this.options.resolve,t);this.applyLanguage(t,s,n,this.loadLanguage)}loadLanguageAsync(t,n=!1,r=!1){var a;r||((a=this.abortController)==null||a.abort(),this.abortController=new AbortController);const s=Ze.loaded.find(i=>i.lang===t);return s?Promise.resolve(this.setLanguage(s)):new Promise((i,o)=>{this.abortController.signal.addEventListener("abort",()=>{i()}),this.resolveLangAsync(this.options.resolve,t).then(({default:l})=>{i(this.applyLanguage(t,l,n,this.loadLanguageAsync))})})}resolveLang(t,n,r={}){return Object.keys(r).length||(r=$a(t,n)),Kl(Mn)?{default:{...r,...$a(t,`php_${n}`)}}:{default:r}}async resolveLangAsync(t,n){let r=$a(t,n);if(!(r instanceof Promise))return this.resolveLang(t,n,r);if(Kl(Mn)){const s=await Fa(t(`php_${n}`)),a=await Fa(r);return new Promise(i=>i({default:{...s,...a}}))}return new Promise(async s=>s({default:await Fa(r)}))}applyLanguage(t,n,r=!1,s){if(Object.keys(n).length<1){if(/[-_]/g.test(t)&&!r)return s.call(this,t.replace(/[-_]/g,i=>i==="-"?"_":"-"),!0,!0);if(t!==this.options.fallbackLang)return s.call(this,this.options.fallbackLang,!1,!0)}const a={lang:t,messages:n};return Ze.loaded.push(a),this.setLanguage(a)}applyFallbackLanguage(t,n){for(const[r,s]of Object.entries(n))this.fallbackMessages[r]=s;Ze.loaded.push({lang:this.options.fallbackLang,messages:n})}setLanguage({lang:t,messages:n}){Mn||document.documentElement.setAttribute("lang",t.replace("_","-")),this.options.lang=t;for(const[r,s]of Object.entries(n))this.activeMessages[r]=s;for(const[r,s]of Object.entries(this.fallbackMessages))(!this.activeMessages[r]||this.activeMessages[r]===r)&&(this.activeMessages[r]=s);for(const[r]of Object.entries(this.activeMessages))!n[r]&&!this.fallbackMessages[r]&&(this.activeMessages[r]=null);return this.options.onLoad(t),t}getActiveLanguage(){return this.options.lang||this.options.fallbackLang}isLoaded(t){return t??(t=this.getActiveLanguage()),Ze.loaded.some(n=>n.lang.replace(/[-_]/g,"-")===t.replace(/[-_]/g,"-"))}trans(t,n={}){return this.wTrans(t,n).value}wTrans(t,n={}){return ji(()=>{this.activeMessages[t]=this.findTranslation(t)||this.findTranslation(t.replace(/\//g,"."))||t}),ne(()=>this.makeReplacements(this.activeMessages[t],n))}transChoice(t,n,r={}){return this.wTransChoice(t,n,r).value}wTransChoice(t,n,r={}){const s=this.wTrans(t,r);return r.count=n.toString(),ne(()=>this.makeReplacements(sg(s.value,n,this.options.lang),r))}findTranslation(t){if(this.activeMessages[t])return this.activeMessages[t];if(this.activeMessages[`${t}.0`]!==void 0){const r=Object.entries(this.activeMessages).filter(s=>s[0].startsWith(`${t}.`)).map(s=>s[1]);return Nt(r)}return this.activeMessages[t]}makeReplacements(t,n){const r=s=>s.charAt(0).toUpperCase()+s.slice(1);return Object.entries(n||[]).sort((s,a)=>s[0].length>=a[0].length?-1:1).forEach(([s,a])=>{a=a.toString(),t=t.replace(new RegExp(`:${s}`,"g"),a).replace(new RegExp(`:${s.toUpperCase()}`,"g"),a.toUpperCase()).replace(new RegExp(`:${r(s)}`,"g"),r(a))}),t}static getSharedInstance(t,n=!1){return(Tn==null?void 0:Tn.setOptions(t,n))||(Tn=new Ze(t))}}Ze.loaded=[];const{notify:Ln}=Fu(),At=Ur({id:"notify",state:()=>({err:null,message:null,originalMessage:null,debug:null}),getters:{},actions:{parseError(e){this.$reset,this.err=e,e.response?e.response.status===407?(this.message=Je("errors.auth_proxy_failed"),this.originalMessage=Je("errors.auth_proxy_failed_legend")):e.response.status===403?(this.message=Je("errors.unauthorized"),this.originalMessage=Je("errors.unauthorized_legend")):e.response.data&&(this.message=e.response.data.message,this.originalMessage=e.response.data.originalMessage??null,this.debug=e.response.data.debug??null):(this.message=e.message,this.debug=e.stack??null)},notFound(e){qn.push({name:"404"})},error(e){this.parseError(e),qn.push({name:"genericError"})},info(e){Ln({type:"is-info",...e})},success(e){Ln({type:"is-success",...e})},warn(e){Ln({type:"is-warning",...e})},alert(e){Ln({type:"is-danger",...e})},action(e){Ln({type:"is-dark",...e})},clear(){Ln({clean:!0})}}}),rr=(e="api")=>{let t;const n=window.appConfig.subdirectory;e==="web"?t=n+"/":t=n+"/api/v1";const r=Ul.create({baseURL:t,headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/json"},withCredentials:!0});return r.interceptors.response.use(s=>s,async function(s){const a=s.config;return s.response.status===419&&!a._retried?(a._retried=!0,await Ul.get("/refresh-csrf"),r.request(a)):(s.response.status===418&&ft().logout({kicked:!0}),s.response&&[407].includes(s.response.status)?(At().error(s),new Promise(()=>{})):s.config.hasOwnProperty("returnError")&&s.config.returnError===!0||(s.response&&[401].includes(s.response.status)&&ft().tossOut(),s.response.status===422)?Promise.reject(s):s.response.status===404?(At().notFound(),new Promise(()=>{})):(At().error(s),new Promise(()=>{})))}),r},dg=rr("web"),pg=rr("api"),Pf={logout(e={}){return dg.get("/user/logout",{...e})},async getCurrentUser(e={}){return pg.get("/user",{...e})}},Lt=rr("api"),as=rr("web"),mg={getPreferences(e={}){return Lt.get("/user/preferences",{...e})},updatePreference(e,t,n={}){return Lt.put("/user/preferences/"+e,{value:t},{...n})},getWebauthnDevices(e={}){return as.get("/webauthn/credentials",{...e})},revokeWebauthnDevice(e,t={}){return as.delete("/webauthn/credentials/"+e,{...t})},getPersonalAccessTokens(e={}){return as.get("/oauth/personal-access-tokens",{...e})},deletePersonalAccessToken(e,t={}){return as.delete("/oauth/personal-access-tokens/"+e,{...t})},getAll(e={}){return Lt.get("/users",{...e})},getById(e,t={}){return Lt.get("/users/"+e,{...t})},resetPassword(e,t={}){return Lt.patch("/users/"+e+"/password/reset",{},{...t})},delete(e,t={}){return Lt.delete("/users/"+e,{...t})},promote(e,t,n={}){return Lt.patch("/users/"+e+"/promote",t,{...n})},revokePATs(e,t={}){return Lt.delete("/users/"+e+"/pats",{...t})},revokeWebauthnCredentials(e,t={}){return Lt.delete("/users/"+e+"/credentials",{...t})}},Ke=rr("api"),is={getAll(e=!1,t={}){return Ke.get("/twofaccounts"+(e?"?withOtp=1":""),{...t})},getByIds(e,t=!1,n={}){return Ke.get("/twofaccounts?ids="+e+(t?"&withOtp=1":""),{...n})},get(e,t={}){return Ke.get("/twofaccounts/"+e,{...t})},preview(e,t={}){return Ke.post("/twofaccounts/preview",{uri:e},{...t})},getLogo(e,t={}){return Ke.post("/icons/default",{service:e},{...t})},deleteIcon(e,t={}){return Ke.delete("/icons/"+e,{...t})},getOtpById(e,t={}){return Ke.get("/twofaccounts/"+e+"/otp",{...t})},getOtpByUri(e,t={}){return Ke.post("/twofaccounts/otp",{uri:e},{...t})},getOtpByParams(e,t={}){return Ke.post("/twofaccounts/otp",e,{...t})},withdraw(e,t={}){return Ke.patch("/twofaccounts/withdraw?ids="+e.join(),{...t})},saveOrder(e,t={}){return Ke.post("/twofaccounts/reorder",{orderedIds:e},{...t})},batchDelete(e,t={}){return Ke.delete("/twofaccounts?ids="+e,{...t})},export(e,t={}){return Ke.get("/twofaccounts/export?ids="+e,{...t})},getQrcode(e,t={}){return Ke.get("/twofaccounts/"+e+"/qrcode",{...t})},migrate(e,t={}){return Ke.post("/twofaccounts/migration",{payload:e,withSecret:!0},{...t})},count(e={}){return Ke.get("/twofaccounts/count",{...e})}};var ur=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Rf={exports:{}};(function(e,t){(function(n,r){r()})(ur,function(){function n(c,u){return typeof u>"u"?u={autoBom:!1}:typeof u!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),u={autoBom:!u}),u.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(c.type)?new Blob(["\uFEFF",c],{type:c.type}):c}function r(c,u,f){var d=new XMLHttpRequest;d.open("GET",c),d.responseType="blob",d.onload=function(){l(d.response,u,f)},d.onerror=function(){console.error("could not download file")},d.send()}function s(c){var u=new XMLHttpRequest;u.open("HEAD",c,!1);try{u.send()}catch{}return 200<=u.status&&299>=u.status}function a(c){try{c.dispatchEvent(new MouseEvent("click"))}catch{var u=document.createEvent("MouseEvents");u.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),c.dispatchEvent(u)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof ur=="object"&&ur.global===ur?ur:void 0,o=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=i.saveAs||(typeof window!="object"||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(c,u,f){var d=i.URL||i.webkitURL,m=document.createElement("a");u=u||c.name||"download",m.download=u,m.rel="noopener",typeof c=="string"?(m.href=c,m.origin===location.origin?a(m):s(m.href)?r(c,u,f):a(m,m.target="_blank")):(m.href=d.createObjectURL(c),setTimeout(function(){d.revokeObjectURL(m.href)},4e4),setTimeout(function(){a(m)},0))}:"msSaveOrOpenBlob"in navigator?function(c,u,f){if(u=u||c.name||"download",typeof c!="string")navigator.msSaveOrOpenBlob(n(c,f),u);else if(s(c))r(c,u,f);else{var d=document.createElement("a");d.href=c,d.target="_blank",setTimeout(function(){a(d)})}}:function(c,u,f,d){if(d=d||open("","_blank"),d&&(d.document.title=d.document.body.innerText="downloading..."),typeof c=="string")return r(c,u,f);var m=c.type==="application/octet-stream",g=/constructor/i.test(i.HTMLElement)||i.safari,v=/CriOS\/[\d]+/.test(navigator.userAgent);if((v||m&&g||o)&&typeof FileReader<"u"){var S=new FileReader;S.onloadend=function(){var P=S.result;P=v?P:P.replace(/^data:[^;]*;/,"data:attachment/file;"),d?d.location.href=P:location=P,d=null},S.readAsDataURL(c)}else{var b=i.URL||i.webkitURL,_=b.createObjectURL(c);d?d.location=_:location.href=_,d=null,setTimeout(function(){b.revokeObjectURL(_)},4e4)}});i.saveAs=l.saveAs=l,e.exports=l})})(Rf);var hg=Rf.exports;const Mf=Ur({id:"twofaccounts",state:()=>({items:[],selectedIds:[],filter:"",backendWasNewer:!1,fetchedOn:null}),getters:{filtered(e){const t=ft();return e.items.filter(n=>parseInt(t.preferences.activeGroup)>0?((n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))&&n.group_id==parseInt(t.preferences.activeGroup):(n.service?n.service.toLowerCase().includes(e.filter.toLowerCase()):!1)||n.account.toLowerCase().includes(e.filter.toLowerCase()))},periods(e){return e.items.filter(t=>t.otp_type=="totp").map(function(t){var n;return{period:t.period,generated_at:(n=t.otp)==null?void 0:n.generated_at}}).filter((t,n,r)=>n===r.findIndex(s=>s.period===t.period)).sort()},orderedIds(e){return e.items.map(t=>t.id)},isEmpty(e){return e.items.length==0},count(e){return e.items.length},filteredCount(e){return e.filtered.length},selectedCount(e){return e.selectedIds.length},hasNoneSelected(e){return e.selectedIds.length==0}},actions:{async fetch(e=!1){Math.floor(Date.now()-this.fetchedOn)>2e3||e?(this.fetchedOn=Date.now(),await is.getAll(!ft().preferences.getOtpOnRequest).then(r=>{e&&(this.backendWasNewer=r.data.length!==this.items.length,this.items.forEach(s=>{let a=r.data.find(i=>i.id===s.id);if(a==null){this.backendWasNewer=!0;return}for(const i in s)if(i!=="otp"&&s[i]!=a[i]){this.backendWasNewer=!0;return}})),this.items=r.data})):this.backendWasNewer=!1},select(e){for(var t=0;te.id)},selectNone(){this.selectedIds=[]},async deleteSelected(){confirm(Je("twofaccounts.confirm.delete"))&&this.selectedIds.length>0&&await is.batchDelete(this.selectedIds.join()).then(e=>{let t=this.items;this.selectedIds.forEach(function(n){t=t.filter(r=>r.id!==n)}),this.items=t,this.selectNone(),At().success({text:Je("twofaccounts.accounts_deleted")})})},export(){is.export(this.selectedIds.join(),{responseType:"blob"}).then(e=>{var t=new Blob([e.data],{type:"application/json;charset=utf-8"});hg.saveAs.saveAs(t,"2fauth_export.json")})},saveOrder(){is.saveOrder(this.orderedIds)},sortAsc(){this.items.sort((e,t)=>e.service>t.service?1:-1),this.saveOrder()},sortDesc(){this.items.sort((e,t)=>e.servicet.period==e).map(t=>t.id)}}}),os=rr("api"),Yl={getAll(){return os.get("groups")},get(e,t={}){return os.get("/groups/"+e,{...t})},assign(e,t,n={}){return os.post("/groups/"+t+"/assign",{ids:e},{...n})},delete(e,t={}){return os.delete("/groups/"+e,{...t})}},gg=Ur({id:"groups",state:()=>({items:[],fetchedOn:null}),getters:{current(e){const t=e.items.find(n=>n.id===parseInt(ft().preferences.activeGroup));return t?t.name:Je("commons.all")},withoutTheAllGroup(e){return e.items.filter(t=>t.id>0)},theAllGroup(e){return e.items.find(t=>t.id==0)},isEmpty(){return this.withoutTheAllGroup.length==0},count(){return this.withoutTheAllGroup.length}},actions:{addOrEdit(e){const t=this.items.findIndex(n=>n.id===parseInt(e.id));t>-1?(this.items[t]=e,At().success({text:Je("groups.group_name_saved")})):(this.items.push(e),At().success({text:Je("groups.group_successfully_created")}))},async fetch(){Math.floor(Date.now()-this.fetchedOn)>2e3&&(this.fetchedOn=Date.now(),await Yl.getAll().then(n=>{this.items=n.data}))},async delete(e){const t=ft();confirm(Je("groups.confirm.delete"))&&await Yl.delete(e).then(n=>{this.items=this.items.filter(r=>r.id!==e),At().success({text:Je("groups.group_successfully_deleted")}),parseInt(t.preferences.activeGroup)===e&&(t.preferences.activeGroup=0)})}}}),ft=Ur({id:"user",state:()=>({id:void 0,name:void 0,email:void 0,oauth_provider:void 0,preferences:window.defaultPreferences,isAdmin:!1}),getters:{isAuthenticated(){return this.name!=null}},actions:{async loginAs(e){this.$patch(e),await this.initDataStores(),this.applyUserPrefs()},async initDataStores(){const e=Mf(),t=gg();this.isAuthenticated?(await e.fetch(),t.fetch()):(e.$reset(),t.$reset())},logout(e={}){const{kicked:t}=e,n=At();if(this.$2fauth.config.proxyAuth)if(this.$2fauth.config.proxyLogoutUrl)location.assign(this.$2fauth.config.proxyLogoutUrl);else return!1;else Pf.logout({returnError:!0}).then(()=>{t&&(n.clear(),n.warn({text:Je("auth.autolock_triggered_punchline"),duration:-1})),this.tossOut()}).catch(r=>{r.response.status!==401?n.error(r):this.tossOut()})},tossOut(){this.$reset(),this.initDataStores(),this.applyUserPrefs(),qn.push({name:"login"})},applyTheme(){const e=sf({attribute:"data-theme"});e.value=this.preferences.theme=="system"?"auto":this.preferences.theme},applyLanguage(){const{isSupported:e,language:t}=af();ql(e?this.preferences.lang=="browser"?t.value.slice(0,2):this.preferences.lang:"en")},applyUserPrefs(){this.applyTheme(),this.applyLanguage()},refreshPreferences(){mg.getPreferences({returnError:!0}).then(e=>{e.data.forEach(t=>{this.preferences[t.key]=t.value})}).catch(e=>{At().alert({text:Je("errors.data_cannot_be_refreshed_from_server")})})}}}),vg=Object.freeze(Object.defineProperty({__proto__:null,useUserStore:ft},Symbol.toStringTag,{value:"Module"})),Nf=Ur({id:"appSettings",state:()=>({...window.appSettings}),actions:{}});async function Me({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r;s.isAuthenticated||await Pf.getCurrentUser({returnError:!0}).then(async a=>{const i=a.data;await s.loginAs({id:i.id,name:i.name,email:i.email,oauth_provider:i.oauth_provider,preferences:i.preferences,isAdmin:i.is_admin})}).catch(a=>{}),s.isAuthenticated?n():t({name:"login"})}async function ls({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,{notify:a}=r;if(s.isAdmin)n();else{let i=new Error("unauthorized");i.response.status=403,a.error(i)}}async function yg({to:e,next:t,nextMiddleware:n,stores:r}){const{twofaccounts:s}=r;s.isEmpty?await s.fetch().then(()=>{s.isEmpty?t({name:"start"}):n()}):n()}function bg({to:e,next:t,nextMiddleware:n,stores:r}){const{notify:s}=r;s.err==null&&!e.query.err?t({name:"accounts"}):n()}async function wg({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.disableRegistration?t({name:"notFound"}):n()}function We({to:e,next:t,nextMiddleware:n,stores:r}){const{user:s}=r,a=rf(s.$2fauth.prefix+"returnTo","accounts");a.value=e.name,n()}async function Pn({to:e,next:t,nextMiddleware:n,stores:r}){const{appSettings:s}=r;s.$2fauth.config.proxyAuth?t({name:"accounts"}):n()}const qn=h1({history:Rh(window.appConfig.subdirectory?window.appConfig.subdirectory:"/"),routes:[{path:"/start",name:"start",component:()=>te(()=>import("./Start-616d9df7.js"),["./Start-616d9df7.js","./Form-0a788c90.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/capture",name:"capture",component:()=>te(()=>import("./Capture-1f19a38b.js"),["./Capture-1f19a38b.js","./Form-0a788c90.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./QrContentDisplay-ea3c63ab.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/accounts",name:"accounts",component:()=>te(()=>import("./Accounts-7bc9693f.js"),["./Accounts-7bc9693f.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./SearchBox-62743462.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,yg,We],watchedByKicker:!0},alias:"/"},{path:"/account/create",name:"createAccount",component:()=>te(()=>import("./CreateUpdate-016104d4.js"),["./CreateUpdate-016104d4.js","./Form-0a788c90.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./QrContentDisplay-ea3c63ab.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/import",name:"importAccounts",component:()=>te(()=>import("./Import-058e3143.js"),["./Import-058e3143.js","./Form-0a788c90.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/account/:twofaccountId/edit",name:"editAccount",component:()=>te(()=>import("./CreateUpdate-016104d4.js"),["./CreateUpdate-016104d4.js","./Form-0a788c90.js","./OtpDisplay-f582bb88.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./QrContentDisplay-ea3c63ab.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/account/:twofaccountId/qrcode",name:"showQRcode",component:()=>te(()=>import("./QRcode-62f040ad.js"),["./QRcode-62f040ad.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/groups",name:"groups",component:()=>te(()=>import("./Groups-e3693e0e.js"),["./Groups-e3693e0e.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/group/create",name:"createGroup",component:()=>te(()=>import("./CreateUpdate-db65145e.js"),["./CreateUpdate-db65145e.js","./Form-0a788c90.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0}},{path:"/group/:groupId/edit",name:"editGroup",component:()=>te(()=>import("./CreateUpdate-db65145e.js"),["./CreateUpdate-db65145e.js","./Form-0a788c90.js","./bus-ab2b6d74.js"],import.meta.url),meta:{middlewares:[Me,We],watchedByKicker:!0},props:!0},{path:"/settings/options",name:"settings.options",component:()=>te(()=>import("./Options-599918f8.js"),["./Options-599918f8.js","./SettingTabs-0b59e581.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/account",name:"settings.account",component:()=>te(()=>import("./Account-a7d249ba.js"),["./Account-a7d249ba.js","./Form-0a788c90.js","./SettingTabs-0b59e581.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/settings/oauth",name:"settings.oauth.tokens",component:()=>te(()=>import("./OAuth-23b533cf.js"),["./OAuth-23b533cf.js","./Form-0a788c90.js","./SettingTabs-0b59e581.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0,props:!0}},{path:"/settings/webauthn/:credentialId/edit",name:"settings.webauthn.editCredential",component:()=>te(()=>import("./Edit-e1414c8a.js"),["./Edit-e1414c8a.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/settings/webauthn",name:"settings.webauthn.devices",component:()=>te(()=>import("./WebAuthn-3d2e0d09.js"),["./WebAuthn-3d2e0d09.js","./SettingTabs-0b59e581.js","./webauthnService-1f4ca5dc.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css"],import.meta.url),meta:{middlewares:[Me],watchedByKicker:!0,showAbout:!0}},{path:"/admin/app",name:"admin.appSetup",component:()=>te(()=>import("./AppSetup-45bab529.js"),["./AppSetup-45bab529.js","./AdminTabs-94ad3971.js","./CopyButton-643e0686.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users",name:"admin.users",component:()=>te(()=>import("./Users-e4ea6e38.js"),["./Users-e4ea6e38.js","./AdminTabs-94ad3971.js","./Spinner-bfa27d3a.js","./Spinner-2c227a70.css","./SearchBox-62743462.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/create",name:"admin.createUser",component:()=>te(()=>import("./Create-88a5e9ed.js"),["./Create-88a5e9ed.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0}},{path:"/admin/users/:userId/manage",name:"admin.manageUser",component:()=>te(()=>import("./Manage-002185c7.js"),["./Manage-002185c7.js","./CopyButton-643e0686.js"],import.meta.url),meta:{middlewares:[Me,ls],watchedByKicker:!0,showAbout:!0},props:!0},{path:"/login",name:"login",component:()=>te(()=>import("./Login-0aa69f71.js"),["./Login-0aa69f71.js","./Form-0a788c90.js","./webauthnService-1f4ca5dc.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/register",name:"register",component:()=>te(()=>import("./Register-9acf7d81.js"),["./Register-9acf7d81.js","./Form-0a788c90.js","./webauthnService-1f4ca5dc.js"],import.meta.url),meta:{middlewares:[Pn,wg,We],showAbout:!0}},{path:"/password/request",name:"password.request",component:()=>te(()=>import("./RequestReset-9775b58f.js"),["./RequestReset-9775b58f.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/user/password/reset",name:"password.reset",component:()=>te(()=>import("./Reset-4749a3f6.js"),["./Reset-4749a3f6.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/lost",name:"webauthn.lost",component:()=>te(()=>import("./RequestReset-9775b58f.js"),["./RequestReset-9775b58f.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/webauthn/recover",name:"webauthn.recover",component:()=>te(()=>import("./Recover-d16991a5.js"),["./Recover-d16991a5.js","./Form-0a788c90.js"],import.meta.url),meta:{middlewares:[Pn,We],showAbout:!0}},{path:"/about",name:"about",component:()=>te(()=>import("./About-21528213.js"),[],import.meta.url),meta:{showAbout:!0,watchedByKicker:!0}},{path:"/error",name:"genericError",component:()=>te(()=>import("./Error-0e5b1508.js"),[],import.meta.url),meta:{middlewares:[bg],watchedByKicker:!0}},{path:"/404",name:"404",component:()=>te(()=>import("./Error-0e5b1508.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>te(()=>import("./Error-0e5b1508.js"),[],import.meta.url),meta:{watchedByKicker:!0},props:!0}]});qn.beforeEach((e,t,n)=>{const r=e.meta.middlewares,s=ft(),a=Mf(),i=Nf(),o=At(),u={to:e,from:t,next:n,nextMiddleware:{},stores:{user:s,twofaccounts:a,appSettings:i,notify:o}};if(!r)return n();r[0]({...u,nextMiddleware:of(u,r,1)})});qn.afterEach((e,t)=>{e.meta.title=Je("titles."+e.name),document.title=e.meta.title});function Gl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function B(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n-1;s--){var a=n[s],i=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(i)>-1&&(r=a)}return ke.head.insertBefore(t,r),e}}var Kg="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Dr(){for(var e=12,t="";e-- >0;)t+=Kg[Math.random()*62|0];return t}function sr(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function go(e){return e.classList?sr(e.classList):(e.getAttribute("class")||"").split(" ").filter(function(t){return t})}function Wf(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Wg(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,'="').concat(Wf(e[n]),'" ')},"").trim()}function ha(e){return Object.keys(e||{}).reduce(function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")},"")}function vo(e){return e.size!==kt.size||e.x!==kt.x||e.y!==kt.y||e.rotate!==kt.rotate||e.flipX||e.flipY}function qg(e){var t=e.transform,n=e.containerWidth,r=e.iconWidth,s={transform:"translate(".concat(n/2," 256)")},a="translate(".concat(t.x*32,", ").concat(t.y*32,") "),i="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),o="rotate(".concat(t.rotate," 0 0)"),l={transform:"".concat(a," ").concat(i," ").concat(o)},c={transform:"translate(".concat(r/2*-1," -256)")};return{outer:s,inner:l,path:c}}function Yg(e){var t=e.transform,n=e.width,r=n===void 0?di:n,s=e.height,a=s===void 0?di:s,i=e.startCentered,o=i===void 0?!1:i,l="";return o&&Df?l+="translate(".concat(t.x/qt-r/2,"em, ").concat(t.y/qt-a/2,"em) "):o?l+="translate(calc(-50% + ".concat(t.x/qt,"em), calc(-50% + ").concat(t.y/qt,"em)) "):l+="translate(".concat(t.x/qt,"em, ").concat(t.y/qt,"em) "),l+="scale(".concat(t.size/qt*(t.flipX?-1:1),", ").concat(t.size/qt*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) "),l}var Gg=`:root, :host { --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid"; @@ -768,4 +768,4 @@ svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { color: var(--fa-inverse, #fff); }`;function qf(){var e=zf,t=Bf,n=K.cssPrefix,r=K.replacementClass,s=Gg;if(n!==e||r!==t){var a=new RegExp("\\.".concat(e,"\\-"),"g"),i=new RegExp("\\--".concat(e,"\\-"),"g"),o=new RegExp("\\.".concat(t),"g");s=s.replace(a,".".concat(n,"-")).replace(i,"--".concat(n,"-")).replace(o,".".concat(r))}return s}var nc=!1;function Ha(){K.autoAddCss&&!nc&&(Ug(qf()),nc=!0)}var Jg={mixout:function(){return{dom:{css:qf,insertCss:Ha}}},hooks:function(){return{beforeDOMElementCreation:function(){Ha()},beforeI2svg:function(){Ha()}}}},Ht=sn||{};Ht[Ft]||(Ht[Ft]={});Ht[Ft].styles||(Ht[Ft].styles={});Ht[Ft].hooks||(Ht[Ft].hooks={});Ht[Ft].shims||(Ht[Ft].shims=[]);var gt=Ht[Ft],Yf=[],Xg=function e(){ke.removeEventListener("DOMContentLoaded",e),js=1,Yf.map(function(t){return t()})},js=!1;Bt&&(js=(ke.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(ke.readyState),js||ke.addEventListener("DOMContentLoaded",Xg));function Qg(e){Bt&&(js?setTimeout(e,0):Yf.push(e))}function Gr(e){var t=e.tag,n=e.attributes,r=n===void 0?{}:n,s=e.children,a=s===void 0?[]:s;return typeof e=="string"?Wf(e):"<".concat(t," ").concat(Wg(r),">").concat(a.map(Gr).join(""),"")}function rc(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var Zg=function(t,n){return function(r,s,a,i){return t.call(n,r,s,a,i)}},Da=function(t,n,r,s){var a=Object.keys(t),i=a.length,o=s!==void 0?Zg(n,s):n,l,c,u;for(r===void 0?(l=1,u=t[a[0]]):(l=0,u=r);l=55296&&s<=56319&&n=55296&&r<=56319&&n>t+1&&(s=e.charCodeAt(t+1),s>=56320&&s<=57343)?(r-55296)*1024+s-56320+65536:r}function sc(e){return Object.keys(e).reduce(function(t,n){var r=e[n],s=!!r.icon;return s?t[r.iconName]=r.icon:t[n]=r,t},{})}function hi(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.skipHooks,s=r===void 0?!1:r,a=sc(t);typeof gt.hooks.addPack=="function"&&!s?gt.hooks.addPack(e,sc(t)):gt.styles[e]=B(B({},gt.styles[e]||{}),a),e==="fas"&&hi("fa",t)}var hs,gs,vs,Nn=gt.styles,n0=gt.shims,r0=(hs={},Fe(hs,Ee,Object.values(Fr[Ee])),Fe(hs,Oe,Object.values(Fr[Oe])),hs),yo=null,Gf={},Jf={},Xf={},Qf={},Zf={},s0=(gs={},Fe(gs,Ee,Object.keys(Ir[Ee])),Fe(gs,Oe,Object.keys(Ir[Oe])),gs);function a0(e){return~Dg.indexOf(e)}function i0(e,t){var n=t.split("-"),r=n[0],s=n.slice(1).join("-");return r===e&&s!==""&&!a0(s)?s:null}var ed=function(){var t=function(a){return Da(Nn,function(i,o,l){return i[l]=Da(o,a,{}),i},{})};Gf=t(function(s,a,i){if(a[3]&&(s[a[3]]=i),a[2]){var o=a[2].filter(function(l){return typeof l=="number"});o.forEach(function(l){s[l.toString(16)]=i})}return s}),Jf=t(function(s,a,i){if(s[i]=i,a[2]){var o=a[2].filter(function(l){return typeof l=="string"});o.forEach(function(l){s[l]=i})}return s}),Zf=t(function(s,a,i){var o=a[2];return s[i]=i,o.forEach(function(l){s[l]=i}),s});var n="far"in Nn||K.autoFetchSvg,r=Da(n0,function(s,a){var i=a[0],o=a[1],l=a[2];return o==="far"&&!n&&(o="fas"),typeof i=="string"&&(s.names[i]={prefix:o,iconName:l}),typeof i=="number"&&(s.unicodes[i.toString(16)]={prefix:o,iconName:l}),s},{names:{},unicodes:{}});Xf=r.names,Qf=r.unicodes,yo=ga(K.styleDefault,{family:K.familyDefault})};Vg(function(e){yo=ga(e.styleDefault,{family:K.familyDefault})});ed();function bo(e,t){return(Gf[e]||{})[t]}function o0(e,t){return(Jf[e]||{})[t]}function vn(e,t){return(Zf[e]||{})[t]}function td(e){return Xf[e]||{prefix:null,iconName:null}}function l0(e){var t=Qf[e],n=bo("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function an(){return yo}var wo=function(){return{prefix:null,iconName:null,rest:[]}};function ga(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.family,r=n===void 0?Ee:n,s=Ir[r][e],a=$r[r][e]||$r[r][s],i=e in gt.styles?e:null;return a||i||null}var ac=(vs={},Fe(vs,Ee,Object.keys(Fr[Ee])),Fe(vs,Oe,Object.keys(Fr[Oe])),vs);function va(e){var t,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.skipLookups,s=r===void 0?!1:r,a=(t={},Fe(t,Ee,"".concat(K.cssPrefix,"-").concat(Ee)),Fe(t,Oe,"".concat(K.cssPrefix,"-").concat(Oe)),t),i=null,o=Ee;(e.includes(a[Ee])||e.some(function(c){return ac[Ee].includes(c)}))&&(o=Ee),(e.includes(a[Oe])||e.some(function(c){return ac[Oe].includes(c)}))&&(o=Oe);var l=e.reduce(function(c,u){var f=i0(K.cssPrefix,u);if(Nn[u]?(u=r0[o].includes(u)?Mg[o][u]:u,i=u,c.prefix=u):s0[o].indexOf(u)>-1?(i=u,c.prefix=ga(u,{family:o})):f?c.iconName=f:u!==K.replacementClass&&u!==a[Ee]&&u!==a[Oe]&&c.rest.push(u),!s&&c.prefix&&c.iconName){var d=i==="fa"?td(c.iconName):{},m=vn(c.prefix,c.iconName);d.prefix&&(i=null),c.iconName=d.iconName||m||c.iconName,c.prefix=d.prefix||c.prefix,c.prefix==="far"&&!Nn.far&&Nn.fas&&!K.autoFetchSvg&&(c.prefix="fas")}return c},wo());return(e.includes("fa-brands")||e.includes("fab"))&&(l.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(l.prefix="fad"),!l.prefix&&o===Oe&&(Nn.fass||K.autoFetchSvg)&&(l.prefix="fass",l.iconName=vn(l.prefix,l.iconName)||l.iconName),(l.prefix==="fa"||i==="fa")&&(l.prefix=an()||"fas"),l}var c0=function(){function e(){_g(this,e),this.definitions={}}return Eg(e,[{key:"add",value:function(){for(var n=this,r=arguments.length,s=new Array(r),a=0;a0&&u.forEach(function(f){typeof f=="string"&&(n[o][f]=c)}),n[o][l]=c}),n}}]),e}(),ic=[],In={},zn={},u0=Object.keys(zn);function f0(e,t){var n=t.mixoutsTo;return ic=e,In={},Object.keys(zn).forEach(function(r){u0.indexOf(r)===-1&&delete zn[r]}),ic.forEach(function(r){var s=r.mixout?r.mixout():{};if(Object.keys(s).forEach(function(i){typeof s[i]=="function"&&(n[i]=s[i]),Bs(s[i])==="object"&&Object.keys(s[i]).forEach(function(o){n[i]||(n[i]={}),n[i][o]=s[i][o]})}),r.hooks){var a=r.hooks();Object.keys(a).forEach(function(i){In[i]||(In[i]=[]),In[i].push(a[i])})}r.provides&&r.provides(zn)}),n}function gi(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),s=2;s1?t-1:0),r=1;r0&&arguments[0]!==void 0?arguments[0]:{};return Bt?(_n("beforeI2svg",t),Dt("pseudoElements2svg",t),Dt("i2svg",t)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.autoReplaceSvgRoot;K.autoReplaceSvg===!1&&(K.autoReplaceSvg=!0),K.observeMutations=!0,Qg(function(){h0({autoReplaceSvgRoot:n}),_n("watch",t)})}},m0={icon:function(t){if(t===null)return null;if(Bs(t)==="object"&&t.prefix&&t.iconName)return{prefix:t.prefix,iconName:vn(t.prefix,t.iconName)||t.iconName};if(Array.isArray(t)&&t.length===2){var n=t[1].indexOf("fa-")===0?t[1].slice(3):t[1],r=ga(t[0]);return{prefix:r,iconName:vn(r,n)||n}}if(typeof t=="string"&&(t.indexOf("".concat(K.cssPrefix,"-"))>-1||t.match(Ng))){var s=va(t.split(" "),{skipLookups:!0});return{prefix:s.prefix||an(),iconName:vn(s.prefix,s.iconName)||s.iconName}}if(typeof t=="string"){var a=an();return{prefix:a,iconName:vn(a,t)||t}}}},at={noAuto:d0,config:K,dom:p0,parse:m0,library:nd,findIconDefinition:vi,toHtml:Gr},h0=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.autoReplaceSvgRoot,r=n===void 0?ke:n;(Object.keys(gt.styles).length>0||K.autoFetchSvg)&&Bt&&K.autoReplaceSvg&&at.dom.i2svg({node:r})};function ya(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(function(r){return Gr(r)})}}),Object.defineProperty(e,"node",{get:function(){if(Bt){var r=ke.createElement("div");return r.innerHTML=e.html,r.children}}}),e}function g0(e){var t=e.children,n=e.main,r=e.mask,s=e.attributes,a=e.styles,i=e.transform;if(vo(i)&&n.found&&!r.found){var o=n.width,l=n.height,c={x:o/l/2,y:.5};s.style=ha(B(B({},a),{},{"transform-origin":"".concat(c.x+i.x/16,"em ").concat(c.y+i.y/16,"em")}))}return[{tag:"svg",attributes:s,children:t}]}function v0(e){var t=e.prefix,n=e.iconName,r=e.children,s=e.attributes,a=e.symbol,i=a===!0?"".concat(t,"-").concat(K.cssPrefix,"-").concat(n):a;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:B(B({},s),{},{id:i}),children:r}]}]}function _o(e){var t=e.icons,n=t.main,r=t.mask,s=e.prefix,a=e.iconName,i=e.transform,o=e.symbol,l=e.title,c=e.maskId,u=e.titleId,f=e.extra,d=e.watchable,m=d===void 0?!1:d,g=r.found?r:n,v=g.width,S=g.height,b=s==="fak",_=[K.replacementClass,a?"".concat(K.cssPrefix,"-").concat(a):""].filter(function(O){return f.classes.indexOf(O)===-1}).filter(function(O){return O!==""||!!O}).concat(f.classes).join(" "),P={children:[],attributes:B(B({},f.attributes),{},{"data-prefix":s,"data-icon":a,class:_,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(S)})},x=b&&!~f.classes.indexOf("fa-fw")?{width:"".concat(v/S*16*.0625,"em")}:{};m&&(P.attributes[wn]=""),l&&(P.children.push({tag:"title",attributes:{id:P.attributes["aria-labelledby"]||"title-".concat(u||Dr())},children:[l]}),delete P.attributes.title);var F=B(B({},P),{},{prefix:s,iconName:a,main:n,mask:r,maskId:c,transform:i,symbol:o,styles:B(B({},x),f.styles)}),Z=r.found&&n.found?Dt("generateAbstractMask",F)||{children:[],attributes:{}}:Dt("generateAbstractIcon",F)||{children:[],attributes:{}},q=Z.children,w=Z.attributes;return F.children=q,F.attributes=w,o?v0(F):g0(F)}function oc(e){var t=e.content,n=e.width,r=e.height,s=e.transform,a=e.title,i=e.extra,o=e.watchable,l=o===void 0?!1:o,c=B(B(B({},i.attributes),a?{title:a}:{}),{},{class:i.classes.join(" ")});l&&(c[wn]="");var u=B({},i.styles);vo(s)&&(u.transform=Yg({transform:s,startCentered:!0,width:n,height:r}),u["-webkit-transform"]=u.transform);var f=ha(u);f.length>0&&(c.style=f);var d=[];return d.push({tag:"span",attributes:c,children:[t]}),a&&d.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),d}function y0(e){var t=e.content,n=e.title,r=e.extra,s=B(B(B({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),a=ha(r.styles);a.length>0&&(s.style=a);var i=[];return i.push({tag:"span",attributes:s,children:[t]}),n&&i.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),i}var za=gt.styles;function yi(e){var t=e[0],n=e[1],r=e.slice(4),s=uo(r,1),a=s[0],i=null;return Array.isArray(a)?i={tag:"g",attributes:{class:"".concat(K.cssPrefix,"-").concat(gn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(gn.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(K.cssPrefix,"-").concat(gn.PRIMARY),fill:"currentColor",d:a[1]}}]}:i={tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:i}}var b0={found:!1,width:512,height:512};function w0(e,t){!jf&&!K.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function bi(e,t){var n=t;return t==="fa"&&K.styleDefault!==null&&(t=an()),new Promise(function(r,s){if(Dt("missingIconAbstract"),n==="fa"){var a=td(e)||{};e=a.iconName||e,t=a.prefix||t}if(e&&t&&za[t]&&za[t][e]){var i=za[t][e];return r(yi(i))}w0(e,t),r(B(B({},b0),{},{icon:K.showMissingIcons&&e?Dt("missingIconAbstract")||{}:{}}))})}var lc=function(){},wi=K.measurePerformance&&cs&&cs.mark&&cs.measure?cs:{mark:lc,measure:lc},pr='FA "6.4.2"',_0=function(t){return wi.mark("".concat(pr," ").concat(t," begins")),function(){return rd(t)}},rd=function(t){wi.mark("".concat(pr," ").concat(t," ends")),wi.measure("".concat(pr," ").concat(t),"".concat(pr," ").concat(t," begins"),"".concat(pr," ").concat(t," ends"))},Eo={begin:_0,end:rd},Os=function(){};function cc(e){var t=e.getAttribute?e.getAttribute(wn):null;return typeof t=="string"}function E0(e){var t=e.getAttribute?e.getAttribute(po):null,n=e.getAttribute?e.getAttribute(mo):null;return t&&n}function x0(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(K.replacementClass)}function k0(){if(K.autoReplaceSvg===!0)return Ts.replace;var e=Ts[K.autoReplaceSvg];return e||Ts.replace}function A0(e){return ke.createElementNS("http://www.w3.org/2000/svg",e)}function S0(e){return ke.createElement(e)}function sd(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.ceFn,r=n===void 0?e.tag==="svg"?A0:S0:n;if(typeof e=="string")return ke.createTextNode(e);var s=r(e.tag);Object.keys(e.attributes||[]).forEach(function(i){s.setAttribute(i,e.attributes[i])});var a=e.children||[];return a.forEach(function(i){s.appendChild(sd(i,{ceFn:r}))}),s}function C0(e){var t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}var Ts={replace:function(t){var n=t[0];if(n.parentNode)if(t[1].forEach(function(s){n.parentNode.insertBefore(sd(s),n)}),n.getAttribute(wn)===null&&K.keepOriginalSource){var r=ke.createComment(C0(n));n.parentNode.replaceChild(r,n)}else n.remove()},nest:function(t){var n=t[0],r=t[1];if(~go(n).indexOf(K.replacementClass))return Ts.replace(t);var s=new RegExp("".concat(K.cssPrefix,"-.*"));if(delete r[0].attributes.id,r[0].attributes.class){var a=r[0].attributes.class.split(" ").reduce(function(o,l){return l===K.replacementClass||l.match(s)?o.toSvg.push(l):o.toNode.push(l),o},{toNode:[],toSvg:[]});r[0].attributes.class=a.toSvg.join(" "),a.toNode.length===0?n.removeAttribute("class"):n.setAttribute("class",a.toNode.join(" "))}var i=r.map(function(o){return Gr(o)}).join(` `);n.setAttribute(wn,""),n.innerHTML=i}};function uc(e){e()}function ad(e,t){var n=typeof t=="function"?t:Os;if(e.length===0)n();else{var r=uc;K.mutateApproach===Pg&&(r=sn.requestAnimationFrame||uc),r(function(){var s=k0(),a=Eo.begin("mutate");e.map(s),a(),n()})}}var xo=!1;function id(){xo=!0}function _i(){xo=!1}var Vs=null;function fc(e){if(ec&&K.observeMutations){var t=e.treeCallback,n=t===void 0?Os:t,r=e.nodeCallback,s=r===void 0?Os:r,a=e.pseudoElementsCallback,i=a===void 0?Os:a,o=e.observeMutationsRoot,l=o===void 0?ke:o;Vs=new ec(function(c){if(!xo){var u=an();sr(c).forEach(function(f){if(f.type==="childList"&&f.addedNodes.length>0&&!cc(f.addedNodes[0])&&(K.searchPseudoElements&&i(f.target),n(f.target)),f.type==="attributes"&&f.target.parentNode&&K.searchPseudoElements&&i(f.target.parentNode),f.type==="attributes"&&cc(f.target)&&~Hg.indexOf(f.attributeName))if(f.attributeName==="class"&&E0(f.target)){var d=va(go(f.target)),m=d.prefix,g=d.iconName;f.target.setAttribute(po,m||u),g&&f.target.setAttribute(mo,g)}else x0(f.target)&&s(f.target)})}}),Bt&&Vs.observe(l,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function O0(){Vs&&Vs.disconnect()}function T0(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce(function(r,s){var a=s.split(":"),i=a[0],o=a.slice(1);return i&&o.length>0&&(r[i]=o.join(":").trim()),r},{})),n}function L0(e){var t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"",s=va(go(e));return s.prefix||(s.prefix=an()),t&&n&&(s.prefix=t,s.iconName=n),s.iconName&&s.prefix||(s.prefix&&r.length>0&&(s.iconName=o0(s.prefix,e.innerText)||bo(s.prefix,mi(e.innerText))),!s.iconName&&K.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(s.iconName=e.firstChild.data)),s}function P0(e){var t=sr(e.attributes).reduce(function(s,a){return s.name!=="class"&&s.name!=="style"&&(s[a.name]=a.value),s},{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return K.autoA11y&&(n?t["aria-labelledby"]="".concat(K.replacementClass,"-title-").concat(r||Dr()):(t["aria-hidden"]="true",t.focusable="false")),t}function R0(){return{iconName:null,title:null,titleId:null,prefix:null,transform:kt,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function dc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},n=L0(e),r=n.iconName,s=n.prefix,a=n.rest,i=P0(e),o=gi("parseNodeAttributes",{},e),l=t.styleParser?T0(e):[];return B({iconName:r,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:s,transform:kt,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:a,styles:l,attributes:i}},o)}var M0=gt.styles;function od(e){var t=K.autoReplaceSvg==="nest"?dc(e,{styleParser:!1}):dc(e);return~t.extra.classes.indexOf(Vf)?Dt("generateLayersText",e,t):Dt("generateSvgReplacementMutation",e,t)}var on=new Set;ho.map(function(e){on.add("fa-".concat(e))});Object.keys(Ir[Ee]).map(on.add.bind(on));Object.keys(Ir[Oe]).map(on.add.bind(on));on=qr(on);function pc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!Bt)return Promise.resolve();var n=ke.documentElement.classList,r=function(f){return n.add("".concat(tc,"-").concat(f))},s=function(f){return n.remove("".concat(tc,"-").concat(f))},a=K.autoFetchSvg?on:ho.map(function(u){return"fa-".concat(u)}).concat(Object.keys(M0));a.includes("fa")||a.push("fa");var i=[".".concat(Vf,":not([").concat(wn,"])")].concat(a.map(function(u){return".".concat(u,":not([").concat(wn,"])")})).join(", ");if(i.length===0)return Promise.resolve();var o=[];try{o=sr(e.querySelectorAll(i))}catch{}if(o.length>0)r("pending"),s("complete");else return Promise.resolve();var l=Eo.begin("onTree"),c=o.reduce(function(u,f){try{var d=od(f);d&&u.push(d)}catch(m){jf||m.name==="MissingIcon"&&console.error(m)}return u},[]);return new Promise(function(u,f){Promise.all(c).then(function(d){ad(d,function(){r("active"),r("complete"),s("pending"),typeof t=="function"&&t(),l(),u()})}).catch(function(d){l(),f(d)})})}function N0(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;od(e).then(function(n){n&&ad([n],t)})}function I0(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=(t||{}).icon?t:vi(t||{}),s=n.mask;return s&&(s=(s||{}).icon?s:vi(s||{})),e(r,B(B({},n),{},{mask:s}))}}var $0=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.transform,s=r===void 0?kt:r,a=n.symbol,i=a===void 0?!1:a,o=n.mask,l=o===void 0?null:o,c=n.maskId,u=c===void 0?null:c,f=n.title,d=f===void 0?null:f,m=n.titleId,g=m===void 0?null:m,v=n.classes,S=v===void 0?[]:v,b=n.attributes,_=b===void 0?{}:b,P=n.styles,x=P===void 0?{}:P;if(t){var F=t.prefix,Z=t.iconName,q=t.icon;return ya(B({type:"icon"},t),function(){return _n("beforeDOMElementCreation",{iconDefinition:t,params:n}),K.autoA11y&&(d?_["aria-labelledby"]="".concat(K.replacementClass,"-title-").concat(g||Dr()):(_["aria-hidden"]="true",_.focusable="false")),_o({icons:{main:yi(q),mask:l?yi(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:F,iconName:Z,transform:B(B({},kt),s),symbol:i,title:d,maskId:u,titleId:g,extra:{attributes:_,styles:x,classes:S}})})}},F0={mixout:function(){return{icon:I0($0)}},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=pc,n.nodeCallback=N0,n}}},provides:function(t){t.i2svg=function(n){var r=n.node,s=r===void 0?ke:r,a=n.callback,i=a===void 0?function(){}:a;return pc(s,i)},t.generateSvgReplacementMutation=function(n,r){var s=r.iconName,a=r.title,i=r.titleId,o=r.prefix,l=r.transform,c=r.symbol,u=r.mask,f=r.maskId,d=r.extra;return new Promise(function(m,g){Promise.all([bi(s,o),u.iconName?bi(u.iconName,u.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(function(v){var S=uo(v,2),b=S[0],_=S[1];m([n,_o({icons:{main:b,mask:_},prefix:o,iconName:s,transform:l,symbol:c,maskId:f,title:a,titleId:i,extra:d,watchable:!0})])}).catch(g)})},t.generateAbstractIcon=function(n){var r=n.children,s=n.attributes,a=n.main,i=n.transform,o=n.styles,l=ha(o);l.length>0&&(s.style=l);var c;return vo(i)&&(c=Dt("generateAbstractTransformGrouping",{main:a,transform:i,containerWidth:a.width,iconWidth:a.width})),r.push(c||a.icon),{children:r,attributes:s}}}},H0={mixout:function(){return{layer:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.classes,a=s===void 0?[]:s;return ya({type:"layer"},function(){_n("beforeDOMElementCreation",{assembler:n,params:r});var i=[];return n(function(o){Array.isArray(o)?o.map(function(l){i=i.concat(l.abstract)}):i=i.concat(o.abstract)}),[{tag:"span",attributes:{class:["".concat(K.cssPrefix,"-layers")].concat(qr(a)).join(" ")},children:i}]})}}}},D0={mixout:function(){return{counter:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.title,a=s===void 0?null:s,i=r.classes,o=i===void 0?[]:i,l=r.attributes,c=l===void 0?{}:l,u=r.styles,f=u===void 0?{}:u;return ya({type:"counter",content:n},function(){return _n("beforeDOMElementCreation",{content:n,params:r}),y0({content:n.toString(),title:a,extra:{attributes:c,styles:f,classes:["".concat(K.cssPrefix,"-layers-counter")].concat(qr(o))}})})}}}},z0={mixout:function(){return{text:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.transform,a=s===void 0?kt:s,i=r.title,o=i===void 0?null:i,l=r.classes,c=l===void 0?[]:l,u=r.attributes,f=u===void 0?{}:u,d=r.styles,m=d===void 0?{}:d;return ya({type:"text",content:n},function(){return _n("beforeDOMElementCreation",{content:n,params:r}),oc({content:n,transform:B(B({},kt),a),title:o,extra:{attributes:f,styles:m,classes:["".concat(K.cssPrefix,"-layers-text")].concat(qr(c))}})})}}},provides:function(t){t.generateLayersText=function(n,r){var s=r.title,a=r.transform,i=r.extra,o=null,l=null;if(Df){var c=parseInt(getComputedStyle(n).fontSize,10),u=n.getBoundingClientRect();o=u.width/c,l=u.height/c}return K.autoA11y&&!s&&(i.attributes["aria-hidden"]="true"),Promise.resolve([n,oc({content:n.innerHTML,width:o,height:l,transform:a,title:s,extra:i,watchable:!0})])}}},B0=new RegExp('"',"ug"),mc=[1105920,1112319];function j0(e){var t=e.replace(B0,""),n=t0(t,0),r=n>=mc[0]&&n<=mc[1],s=t.length===2?t[0]===t[1]:!1;return{value:mi(s?t[0]:t),isSecondary:r||s}}function hc(e,t){var n="".concat(Lg).concat(t.replace(":","-"));return new Promise(function(r,s){if(e.getAttribute(n)!==null)return r();var a=sr(e.children),i=a.filter(function(q){return q.getAttribute(pi)===t})[0],o=sn.getComputedStyle(e,t),l=o.getPropertyValue("font-family").match(Ig),c=o.getPropertyValue("font-weight"),u=o.getPropertyValue("content");if(i&&!l)return e.removeChild(i),r();if(l&&u!=="none"&&u!==""){var f=o.getPropertyValue("content"),d=~["Sharp"].indexOf(l[2])?Oe:Ee,m=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(l[2])?$r[d][l[2].toLowerCase()]:$g[d][c],g=j0(f),v=g.value,S=g.isSecondary,b=l[0].startsWith("FontAwesome"),_=bo(m,v),P=_;if(b){var x=l0(v);x.iconName&&x.prefix&&(_=x.iconName,m=x.prefix)}if(_&&!S&&(!i||i.getAttribute(po)!==m||i.getAttribute(mo)!==P)){e.setAttribute(n,P),i&&e.removeChild(i);var F=R0(),Z=F.extra;Z.attributes[pi]=t,bi(_,m).then(function(q){var w=_o(B(B({},F),{},{icons:{main:q,mask:wo()},prefix:m,iconName:P,extra:Z,watchable:!0})),O=ke.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(O,e.firstChild):e.appendChild(O),O.outerHTML=w.map(function(H){return Gr(H)}).join(` -`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function V0(e){return Promise.all([hc(e,"::before"),hc(e,"::after")])}function U0(e){return e.parentNode!==document.head&&!~Rg.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(pi)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function gc(e){if(Bt)return new Promise(function(t,n){var r=sr(e.querySelectorAll("*")).filter(U0).map(V0),s=Eo.begin("searchPseudoElements");id(),Promise.all(r).then(function(){s(),_i(),t()}).catch(function(){s(),_i(),n()})})}var K0={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=gc,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?ke:r;K.searchPseudoElements&&gc(s)}}},vc=!1,W0={mixout:function(){return{dom:{unwatch:function(){id(),vc=!0}}}},hooks:function(){return{bootstrap:function(){fc(gi("mutationObserverCallbacks",{}))},noAuto:function(){O0()},watch:function(n){var r=n.observeMutationsRoot;vc?_i():fc(gi("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},yc=function(t){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t.toLowerCase().split(" ").reduce(function(r,s){var a=s.toLowerCase().split("-"),i=a[0],o=a.slice(1).join("-");if(i&&o==="h")return r.flipX=!0,r;if(i&&o==="v")return r.flipY=!0,r;if(o=parseFloat(o),isNaN(o))return r;switch(i){case"grow":r.size=r.size+o;break;case"shrink":r.size=r.size-o;break;case"left":r.x=r.x-o;break;case"right":r.x=r.x+o;break;case"up":r.y=r.y-o;break;case"down":r.y=r.y+o;break;case"rotate":r.rotate=r.rotate+o;break}return r},n)},q0={mixout:function(){return{parse:{transform:function(n){return yc(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=yc(s)),n}}},provides:function(t){t.generateAbstractTransformGrouping=function(n){var r=n.main,s=n.transform,a=n.containerWidth,i=n.iconWidth,o={transform:"translate(".concat(a/2," 256)")},l="translate(".concat(s.x*32,", ").concat(s.y*32,") "),c="scale(".concat(s.size/16*(s.flipX?-1:1),", ").concat(s.size/16*(s.flipY?-1:1),") "),u="rotate(".concat(s.rotate," 0 0)"),f={transform:"".concat(l," ").concat(c," ").concat(u)},d={transform:"translate(".concat(i/2*-1," -256)")},m={outer:o,inner:f,path:d};return{tag:"g",attributes:B({},m.outer),children:[{tag:"g",attributes:B({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:B(B({},r.icon.attributes),m.path)}]}]}}}},Ba={x:0,y:0,width:"100%",height:"100%"};function bc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function Y0(e){return e.tag==="g"?e.children:[e]}var G0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?va(s.split(" ").map(function(i){return i.trim()})):wo();return a.prefix||(a.prefix=an()),n.mask=a,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(t){t.generateAbstractMask=function(n){var r=n.children,s=n.attributes,a=n.main,i=n.mask,o=n.maskId,l=n.transform,c=a.width,u=a.icon,f=i.width,d=i.icon,m=qg({transform:l,containerWidth:f,iconWidth:c}),g={tag:"rect",attributes:B(B({},Ba),{},{fill:"white"})},v=u.children?{children:u.children.map(bc)}:{},S={tag:"g",attributes:B({},m.inner),children:[bc(B({tag:u.tag,attributes:B(B({},u.attributes),m.path)},v))]},b={tag:"g",attributes:B({},m.outer),children:[S]},_="mask-".concat(o||Dr()),P="clip-".concat(o||Dr()),x={tag:"mask",attributes:B(B({},Ba),{},{id:_,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,b]},F={tag:"defs",children:[{tag:"clipPath",attributes:{id:P},children:Y0(d)},x]};return r.push(F,{tag:"rect",attributes:B({fill:"currentColor","clip-path":"url(#".concat(P,")"),mask:"url(#".concat(_,")")},Ba)}),{children:r,attributes:s}}}},J0={provides:function(t){var n=!1;sn.matchMedia&&(n=sn.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var r=[],s={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:B(B({},s),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=B(B({},a),{},{attributeName:"opacity"}),o={tag:"circle",attributes:B(B({},s),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||o.children.push({tag:"animate",attributes:B(B({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:B(B({},i),{},{values:"1;0;1;1;0;1;"})}),r.push(o),r.push({tag:"path",attributes:B(B({},s),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:B(B({},i),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:B(B({},s),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:B(B({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},X0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-symbol"),a=s===null?!1:s===""?!0:s;return n.symbol=a,n}}}},Q0=[Jg,F0,H0,D0,z0,K0,W0,q0,G0,J0,X0];f0(Q0,{mixoutsTo:at});at.noAuto;at.config;var Z0=at.library;at.dom;var Ei=at.parse;at.findIconDefinition;at.toHtml;var ev=at.icon;at.layer;at.text;at.counter;function wc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function Mt(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function nv(e,t){if(e==null)return{};var n=tv(e,t),r,s;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var rv=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ld={exports:{}};(function(e){(function(t){var n=function(b,_,P){if(!c(_)||f(_)||d(_)||m(_)||l(_))return _;var x,F=0,Z=0;if(u(_))for(x=[],Z=_.length;F1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var r=(e.children||[]).map(function(l){return cd(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,c){var u=e.attributes[c];switch(c){case"class":l.class=ov(u);break;case"style":l.style=iv(u);break;default:l.attrs[c]=u}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,i=a===void 0?{}:a,o=nv(n,av);return sa(e.tag,Mt(Mt(Mt({},t),{},{class:s.class,style:Mt(Mt({},s.style),i)},s.attrs),o),r)}var ud=!1;try{ud=!0}catch{}function lv(){if(!ud&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function ja(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?Xe({},e,t):{}}function cv(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":e.flip===!0,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both"},Xe(t,"fa-".concat(e.size),e.size!==null),Xe(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),Xe(t,"fa-pull-".concat(e.pull),e.pull!==null),Xe(t,"fa-swap-opacity",e.swapOpacity),Xe(t,"fa-bounce",e.bounce),Xe(t,"fa-shake",e.shake),Xe(t,"fa-beat",e.beat),Xe(t,"fa-fade",e.fade),Xe(t,"fa-beat-fade",e.beatFade),Xe(t,"fa-flash",e.flash),Xe(t,"fa-spin-pulse",e.spinPulse),Xe(t,"fa-spin-reverse",e.spinReverse),t);return Object.keys(n).map(function(r){return n[r]?r:null}).filter(function(r){return r})}function _c(e){if(e&&Us(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(Ei.icon)return Ei.icon(e);if(e===null)return null;if(Us(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}var uv=xn({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(t){return[!0,!1,"horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(t){return[90,180,270].indexOf(Number.parseInt(t,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(t){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(t,n){var r=n.attrs,s=ne(function(){return _c(t.icon)}),a=ne(function(){return ja("classes",cv(t))}),i=ne(function(){return ja("transform",typeof t.transform=="string"?Ei.transform(t.transform):t.transform)}),o=ne(function(){return ja("mask",_c(t.mask))}),l=ne(function(){return ev(s.value,Mt(Mt(Mt(Mt({},a.value),i.value),o.value),{},{symbol:t.symbol,title:t.title}))});ze(l,function(u){if(!u)return lv("Could not find one or more icon(s)",s.value,o.value)},{immediate:!0});var c=ne(function(){return l.value?cd(l.value.abstract[0],{},r):null});return function(){return c.value}}}),fv={prefix:"fas",iconName:"file-lines",icon:[384,512,[128441,128462,61686,"file-alt","file-text"],"f15c","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},dv={prefix:"fas",iconName:"circle-minus",icon:[512,512,["minus-circle"],"f056","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"]},pv=dv,mv={prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z"]},hv={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},gv={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"]},vv=gv,yv={prefix:"fas",iconName:"square-check",icon:[448,512,[9745,9989,61510,"check-square"],"f14a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},bv=yv,wv={prefix:"fas",iconName:"list",icon:[512,512,["list-squares"],"f03a","M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z"]},_v={prefix:"fas",iconName:"lock",icon:[448,512,[128274],"f023","M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"]},Ev={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"]},xv={prefix:"fas",iconName:"globe",icon:[512,512,[127760],"f0ac","M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z"]},kv={prefix:"fas",iconName:"slash",icon:[640,512,[],"f715","M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z"]},Av={prefix:"fas",iconName:"arrow-up-a-z",icon:[576,512,["sort-alpha-up"],"f15e","M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z"]},Sv=Av,Cv={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"]},Ov={prefix:"fas",iconName:"circle-check",icon:[512,512,[61533,"check-circle"],"f058","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},Tv={prefix:"fas",iconName:"layer-group",icon:[576,512,[],"f5fd","M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z"]},Lv={prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"]},Pv={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"]},Rv={prefix:"fas",iconName:"eye",icon:[576,512,[128065],"f06e","M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"]},Mv={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"]},Nv={prefix:"fas",iconName:"align-left",icon:[448,512,[],"f036","M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},Iv={prefix:"fas",iconName:"up-right-from-square",icon:[512,512,["external-link-alt"],"f35d","M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"]},$v=Iv,Fv={prefix:"fas",iconName:"table-cells",icon:[512,512,["th"],"f00a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z"]},Hv=Fv,Dv={prefix:"fas",iconName:"camera",icon:[512,512,[62258,"camera-alt"],"f030","M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"]},zv={prefix:"fas",iconName:"arrow-down-a-z",icon:[576,512,["sort-alpha-asc","sort-alpha-down"],"f15d","M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z"]},Bv=zv,jv={prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"]},Vv={prefix:"fas",iconName:"flask",icon:[448,512,[],"f0c3","M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z"]},Uv={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"]},Kv={prefix:"fas",iconName:"file-arrow-down",icon:[384,512,["file-download"],"f56d","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z"]},Wv=Kv,qv={prefix:"fas",iconName:"sun",icon:[512,512,[9728],"f185","M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"]},Yv={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"]},Gv=Yv,Jv={prefix:"fas",iconName:"magnifying-glass",icon:[512,512,[128269,"search"],"f002","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"]},Xv=Jv,Qv={prefix:"fas",iconName:"square-pen",icon:[448,512,["pen-square","pencil-square"],"f14b","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"]},Zv=Qv,e4={prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"]},t4={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"]},n4={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},r4=n4,s4={prefix:"fas",iconName:"chevron-right",icon:[320,512,[9002],"f054","M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},a4={prefix:"fas",iconName:"video-slash",icon:[640,512,[],"f4e2","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z"]},i4={prefix:"fas",iconName:"spinner",icon:[512,512,[],"f110","M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z"]},o4={prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z"]},l4={prefix:"fas",iconName:"moon",icon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"]},c4={prefix:"fas",iconName:"circle-plus",icon:[512,512,["plus-circle"],"f055","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},u4=c4,f4={prefix:"fas",iconName:"desktop",icon:[576,512,[128421,61704,"desktop-alt"],"f390","M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z"]},d4={prefix:"fas",iconName:"book",icon:[448,512,[128212],"f02d","M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},p4={prefix:"fas",iconName:"check",icon:[448,512,[10003,10004],"f00c","M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]},m4={prefix:"fas",iconName:"triangle-exclamation",icon:[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},h4={prefix:"fas",iconName:"circle-xmark",icon:[512,512,[61532,"times-circle","xmark-circle"],"f057","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]},g4=h4,v4={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"]},y4={prefix:"far",iconName:"paper-plane",icon:[512,512,[61913],"f1d8","M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z"]},b4={prefix:"fab",iconName:"github-alt",icon:[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"]},w4={prefix:"fab",iconName:"openid",icon:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"]};Z0.add(t4,u4,o4,Cv,Mv,p4,bv,r4,_v,Pv,Xv,Gv,hv,i4,b4,jv,Tv,pv,vv,Zv,Hv,wv,g4,Uv,xv,d4,Vv,Lv,e4,Bv,Sv,Rv,Ev,$v,Dv,Wv,qv,l4,f4,mv,Ov,m4,fv,a4,v4,s4,w4,y4,kv,Nv);const _4=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},E4={},x4={class:"columns is-centered"},k4={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function A4(e,t){return D(),G("div",x4,[Q("div",k4,[ln(e.$slots,"default")])])}const S4=_4(E4,[["render",A4]]),C4=["innerHTML"],O4=["innerHTML"],T4={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=je("ResponsiveWidthWrapper");return D(),Be(r,null,{default:Ye(()=>[e.title?(D(),G("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,C4)):fe("",!0),e.punchline?(D(),G("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,O4)):fe("",!0),ln(t.$slots,"default")]),_:3})}}},L4={class:"main"},P4={key:0,class:"columns is-gapless"},R4={class:"column has-text-centered"},M4={class:"field is-grouped"},N4={key:1,class:"content has-text-centered"},I4={key:2,class:"content has-text-centered"},$4={key:1},F4={key:3,class:"content has-text-centered"},H4={key:0,class:"is-size-6"},D4={class:"has-text-weight-bold"},z4={key:1},B4={key:0},j4={key:0,class:"release-flag"},V4={key:1},U4={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=Nf(),n=ft(),r=et("2fauth");function s(){confirm(Je("auth.confirm.logout"))&&n.logout()}return(a,i)=>{const o=je("router-link");return D(),G("footer",L4,[e.showButtons?(D(),G("div",P4,[Q("div",R4,[Q("div",M4,[ln(a.$slots,"default")])])])):fe("",!0),e.internalFooterType=="doneButton"?(D(),G("div",N4,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:i[0]||(i[0]=aa(l=>a.$emit("doneButtonClicked",!0),["stop"]))},Ae(a.$t("commons.done")),1)])):e.internalFooterType=="modal"?(D(),G("div",I4,[a.$route.name!="accounts"?(D(),Be(o,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("commons.back_to_home")),1)]),_:1})):(D(),G("span",$4," "))])):(D(),G("div",F4,[a.$route.meta.showAbout===!0?(D(),G("div",H4,[pe(o,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:Ye(()=>[He(" 2FAuth – "),Q("span",D4,"v"+Ae(se(r).version),1)]),_:1})])):(D(),G("div",z4,[pe(o,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("settings.settings")),1)]),_:1},8,["to"]),se(n).isAdmin?(D(),G("span",B4,[He(" - "),pe(o,{id:"lnkAdmin",to:{name:"admin.appSetup"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("admin.admin")),1),se(t).latestRelease&&se(t).checkForUpdate?(D(),G("span",j4)):fe("",!0)]),_:1},8,["to"])])):fe("",!0),!se(r).config.proxyAuth||se(r).config.proxyAuth&&se(r).config.proxyLogoutUrl?(D(),G("span",V4,[He(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:s},Ae(a.$t("auth.sign_out")),1)])):fe("",!0)]))]))])}}},K4=["onClick"],W4={class:"modal-content"},q4={class:"section"},Y4={class:"columns is-centered"},G4={class:"column is-three-quarters"},J4={class:"modal-slot box has-text-centered is-shadowless"},X4={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,{notify:r}=Fu(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(i){r({clean:!0}),s.value=!1}return(i,o)=>{const l=je("ButtonBackCloseCancel"),c=je("VueFooter");return D(),G("div",{class:xe(["modal modal-otp",{"is-active":se(s)}])},[Q("div",{class:"modal-background",onClick:aa(a,["stop"])},null,8,K4),Q("div",W4,[Q("section",q4,[Q("div",Y4,[Q("div",G4,[Q("div",J4,[ln(i.$slots,"default")])])])])]),n.closable?(D(),Be(c,{key:0,showButtons:!0,internalFooterType:"modal"},{default:Ye(()=>[pe(l,{action:"close",useLinkTag:!1,onClosed:a})]),_:1})):fe("",!0)],2)}}},Q4=["type","disabled"],Z4={__name:"Button",props:{color:{type:String,default:"is-link"},nativeType:{type:String,default:"submit"},isLoading:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1}},setup(e){return(t,n)=>(D(),G("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:xe({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[ln(t.$slots,"default")],10,Q4))}},e3={key:0,class:"control"},t3={key:1,class:"control"},n3={__name:"ButtonBackCloseCancel",props:{returnTo:{type:Object,default:{name:"accounts"}},action:{type:String,default:"close"},useLinkTag:{type:Boolean,default:!0},isText:{type:Boolean,default:!1},isCapture:{type:Boolean,default:!1}},setup(e){const t=e;v1(),Ju();const r="button is-rounded"+(sf().value==="dark"&&!t.isText&&!t.isCapture?" is-dark":"")+(t.isText?" is-text":"")+(t.isCapture?" is-large is-warning":"");return(s,a)=>{const i=je("RouterLink");return e.useLinkTag?(D(),G("p",e3,[e.action=="close"?(D(),Be(i,{key:0,id:"btnClose",to:e.returnTo,class:xe(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(D(),Be(i,{key:1,id:"lnkBack",to:e.returnTo,class:xe(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(D(),Be(i,{key:2,id:"btnCancel",to:e.returnTo,class:xe(r)},{default:Ye(()=>[He(Ae(s.$t("commons.cancel")),1)]),_:1},8,["to"])):fe("",!0)])):(D(),G("p",t3,[e.action=="close"?(D(),G("button",{key:0,id:"btnClose",class:xe(r),onClick:a[0]||(a[0]=o=>s.$emit("closed")),type:"button"},Ae(s.$t("commons.close")),1)):fe("",!0),e.action=="cancel"?(D(),G("button",{key:1,id:"btnCancel",class:xe(r),onClick:a[1]||(a[1]=o=>s.$emit("canceled")),type:"button"},Ae(s.$t("commons.cancel")),1)):fe("",!0)]))}}},r3={role:"alert"},s3=["id","innerHTML"],a3={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0},alertType:{type:String,default:"is-danger"}},setup(e){return(t,n)=>(D(),G("div",r3,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:xe(["help",e.alertType]),innerHTML:e.error},null,10,s3)]))}};function $n(e,t){let n;switch(t=t.toString(),e){case"text":n="txt";break;case"button":n="btn";break;case"email":n="eml";break;case"password":n="pwd";break;case"radio":n="rdo";break;case"label":n="lbl";break;default:n="txt";break}return{inputId:n+t[0].toUpperCase()+t.toLowerCase().slice(1)}}function wy(e,t=!1){const n=ft();if(n.preferences.formatPassword&&e.length>0){const r=Math.ceil(n.preferences.formatPasswordBy<1?e.length*n.preferences.formatPasswordBy:n.preferences.formatPasswordBy),s=e.match(new RegExp(`.{1,${r}}`,"g"));s&&(e=s.join(" "))}return n.preferences.showOtpAsDot&&!t?e.replace(/[0-9]/g,"●"):e}const i3=["for","innerHTML"],o3=["disabled","id","type","value","placeholder","maxlength"],l3={key:0,class:"icon is-small is-left"},c3={key:1,class:"icon is-small is-right"},u3=["innerHTML"],f3=Object.assign({inheritAttrs:!1},{__name:"FormField",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null},isIndented:Boolean,leftIcon:"",rightIcon:""},setup(e){const t=e,{inputId:n}=$n(t.inputType,t.fieldName);return(r,s)=>{const a=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["mb-3",{"pt-3":e.hasOffset,"is-flex":e.isIndented}])},[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",{class:xe(["field",{"is-flex-grow-5":e.isIndented}])},[Q("label",{for:se(n),class:"label",style:tn({opacity:e.isDisabled?"0.5":"1"}),innerHTML:r.$t(e.label)},null,12,i3),Q("div",{class:xe(["control",{"has-icons-left":e.leftIcon,"has-icons-right":e.rightIcon}])},[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:e.inputType,class:"input",value:e.modelValue,placeholder:e.placeholder},r.$attrs,{onInput:s[0]||(s[0]=o=>r.$emit("update:modelValue",o.target.value)),onChange:s[1]||(s[1]=o=>r.$emit("change:modelValue",o.target.value)),maxlength:e.maxLength}),null,16,o3),e.leftIcon?(D(),G("span",l3,[pe(a,{icon:["fas",e.leftIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0),e.rightIcon?(D(),G("span",c3,[pe(a,{icon:["fas",e.rightIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0)],2),e.fieldError!=null?(D(),Be(i,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,u3)):fe("",!0)],2)],2)}}}),d3=["for","innerHTML"],p3={class:"control has-icons-right"},m3=["disabled","id","type","value","placeholder"],h3=["title"],g3=["title"],v3=["innerHTML"],y3=["innerHTML"],b3={key:3,class:"columns is-mobile is-size-7 mt-0"},w3={class:"column is-one-third"},_3={class:"has-text-weight-semibold"},E3=Q("br",null,null,-1),x3=Q("br",null,null,-1),k3={class:"column"},A3={class:"has-text-weight-semibold"},S3=Q("br",null,null,-1),C3=Q("br",null,null,-1),O3=Q("br",null,null,-1),T3=Q("br",null,null,-1),L3=Object.assign({inheritAttrs:!0},{__name:"FormPasswordField",props:{modelValue:[String],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"password"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},showRules:{type:Boolean,default:!1}},setup(e){const t=e,{inputId:n}=$n(t.inputType,t.fieldName),r=ge(t.inputType),s=ge(!1),a=ne(()=>/[a-z]/.test(t.modelValue)),i=ne(()=>/[A-Z]/.test(t.modelValue)),o=ne(()=>/[0-9]/.test(t.modelValue)),l=ne(()=>/[^A-Za-z0-9]/.test(t.modelValue)),c=ne(()=>t.modelValue.length>=8);function u(d){s.value=!!d.getModifierState("CapsLock")}function f(d){r.value!=d&&(r.value=d)}return(d,m)=>{const g=je("font-awesome-icon"),v=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:se(n),class:"label",innerHTML:d.$t(e.label)},null,8,d3),Q("div",p3,[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:se(r),class:"input",value:e.modelValue,placeholder:e.placeholder},d.$attrs,{onInput:m[0]||(m[0]=S=>d.$emit("update:modelValue",S.target.value)),onKeyup:u}),null,16,m3),se(r)=="password"?(D(),G("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=ti(S=>f("text"),["enter"])),onClick:m[2]||(m[2]=S=>f("text")),title:d.$t("auth.forms.reveal_password")},[pe(g,{icon:["fas","eye-slash"]})],40,h3)):(D(),G("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=ti(S=>f("password"),["enter"])),onClick:m[4]||(m[4]=S=>f("password")),title:d.$t("auth.forms.hide_password")},[pe(g,{icon:["fas","eye"]})],40,g3))]),se(s)?(D(),G("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,v3)):fe("",!0),e.fieldError!=null?(D(),Be(v,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,y3)):fe("",!0),e.showRules?(D(),G("div",b3,[Q("div",w3,[Q("span",_3,Ae(d.$t("auth.forms.mandatory_rules")),1),E3,Q("span",{class:xe(["is-underscored",{"is-dot":se(c)}]),id:"valPwdIsLongEnough"},null,2),He(Ae(d.$t("auth.forms.is_long_enough")),1),x3]),Q("div",k3,[Q("span",A3,Ae(d.$t("auth.forms.optional_rules_you_should_follow")),1),S3,Q("span",{class:xe(["is-underscored",{"is-dot":se(a)}]),id:"valPwdHasLowerCase"},null,2),He(Ae(d.$t("auth.forms.has_lower_case")),1),C3,Q("span",{class:xe(["is-underscored",{"is-dot":se(i)}]),id:"valPwdHasUpperCase"},null,2),He(Ae(d.$t("auth.forms.has_upper_case")),1),O3,Q("span",{class:xe(["is-underscored",{"is-dot":se(l)}]),id:"valPwdHasSpecialChar"},null,2),He(Ae(d.$t("auth.forms.has_special_char")),1),T3,Q("span",{class:xe(["is-underscored",{"is-dot":se(o)}]),id:"valPwdHasNumber"},null,2),He(Ae(d.$t("auth.forms.has_number")),1)])])):fe("",!0)],2)}}}),P3={class:"field"},R3=["innerHTML"],M3={class:"control"},N3={class:"select"},I3=["value"],$3=["innerHTML"],F3={__name:"FormSelect",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],options:{type:Array,required:!0},help:{type:String,default:""}},setup(e){const n=ge(e.modelValue);return(r,s)=>{const a=je("FieldError");return D(),G("div",P3,[Q("label",{class:"label",innerHTML:r.$t(e.label)},null,8,R3),Q("div",M3,[Q("div",N3,[eu(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=i=>Se(n)?n.value=i:null),onChange:s[1]||(s[1]=i=>r.$emit("update:modelValue",i.target.value))},[(D(!0),G(Ne,null,Wi(e.options,i=>(D(),G("option",{value:i.value},Ae(r.$t(i.text)),9,I3))),256))],544),[[Vm,se(n)]])])]),e.fieldError!=null?(D(),Be(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,$3)):fe("",!0)])}}};function fd(e){var t;const n=st(e);return(t=n==null?void 0:n.$el)!=null?t:n}const zr=Vr?window:void 0;function xi(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=zr):[t,n,r,s]=e,!t)return no;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],i=()=>{a.forEach(u=>u()),a.length=0},o=(u,f,d,m)=>(u.addEventListener(f,d,m),()=>u.removeEventListener(f,d,m)),l=ze(()=>[fd(t),st(s)],([u,f])=>{if(i(),!u)return;const d=Xu(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return tr(c),c}const ys=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},bs="__vueuse_ssr_handlers__",H3=D3();function D3(){return bs in ys||(ys[bs]=ys[bs]||{}),ys[bs]}function dd(e,t){return H3[e]||t}function z3(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const B3={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ec="vueuse-storage";function j3(e,t,n,r={}){var s;const{flush:a="pre",deep:i=!0,listenToStorageChanges:o=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=zr,eventFilter:d,onError:m=w=>{console.error(w)}}=r,g=(u?Di:ge)(t);if(!n)try{n=dd("getDefaultStorage",()=>{var w;return(w=zr)==null?void 0:w.localStorage})()}catch(w){m(w)}if(!n)return g;const v=st(t),S=z3(v),b=(s=r.serializer)!=null?s:B3[S],{pause:_,resume:P}=Zu(g,()=>x(g.value),{flush:a,deep:i,eventFilter:d});return f&&o&&(xi(f,"storage",q),xi(f,Ec,Z)),q(),g;function x(w){try{if(w==null)n.removeItem(e);else{const O=b.write(w),H=n.getItem(e);H!==O&&(n.setItem(e,O),f&&f.dispatchEvent(new CustomEvent(Ec,{detail:{key:e,oldValue:H,newValue:O,storageArea:n}})))}}catch(O){m(O)}}function F(w){const O=w?w.newValue:n.getItem(e);if(O==null)return l&&v!==null&&n.setItem(e,b.write(v)),v;if(!w&&c){const H=b.read(O);return typeof c=="function"?c(H,v):S==="object"&&!Array.isArray(H)?{...v,...H}:H}else return typeof O!="string"?O:b.read(O)}function Z(w){q(w.detail)}function q(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){g.value=v;return}if(!(w&&w.key!==e)){_();try{(w==null?void 0:w.newValue)!==b.write(g.value)&&(g.value=F(w))}catch(O){m(O)}finally{w?Zn(P):P()}}}}}function V3(){const e=ge(!1);return er()&&kn(()=>{e.value=!0}),e}function U3(e){const t=V3();return ne(()=>(t.value,!!e()))}function K3(e,t={}){const{window:n=zr}=t,r=U3(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=ge(!1),i=c=>{a.value=c.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=ji(()=>{r.value&&(o(),s=n.matchMedia(st(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return tr(()=>{l(),o(),s=void 0}),a}function W3(e){return K3("(prefers-color-scheme: dark)",e)}function q3(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=zr,storage:a,storageKey:i="vueuse-color-scheme",listenToStorageChanges:o=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=W3({window:s}),m=ne(()=>d.value?"dark":"light"),g=l||(i==null?ro(r):j3(i,r,a,{window:s,listenToStorageChanges:o})),v=ne(()=>g.value==="auto"?m.value:g.value),S=dd("updateHTMLAttrs",(x,F,Z)=>{const q=typeof x=="string"?s==null?void 0:s.document.querySelector(x):fd(x);if(!q)return;let w;if(u){w=s.document.createElement("style");const O="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";w.appendChild(document.createTextNode(O)),s.document.head.appendChild(w)}if(F==="class"){const O=Z.split(/\s/g);Object.values(f).flatMap(H=>(H||"").split(/\s/g)).filter(Boolean).forEach(H=>{O.includes(H)?q.classList.add(H):q.classList.remove(H)})}else q.setAttribute(F,Z);u&&(s.getComputedStyle(w).opacity,document.head.removeChild(w))});function b(x){var F;S(t,n,(F=f[x])!=null?F:x)}function _(x){e.onChanged?e.onChanged(x,b):b(x)}ze(v,_,{flush:"post",immediate:!0}),ef(()=>_(v.value));const P=ne({get(){return c?g.value:v.value},set(x){g.value=x}});try{return Object.assign(P,{store:g,system:m,state:v})}catch{return P}}const Y3=xn({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=q3(e),r=Nt({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function Va(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function pd(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function J3(e,t=!1){const n=ge(t);let r=null,s;ze(ro(e),o=>{const l=Va(st(o));if(l){const c=l;s=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const a=()=>{const o=Va(st(e));!o||n.value||(Pl&&(r=xi(o,"touchmove",l=>{G3(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{const o=Va(st(e));!o||!n.value||(Pl&&(r==null||r()),o.style.overflow=s,n.value=!1)};return tr(i),ne({get(){return n.value},set(o){o?a():i()}})}function X3(){let e=!1;const t=ge(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=J3(n,r.value);ze(t,a=>s.value=a)}}X3();const Q3=["aria-labelledby"],Z3=["id","innerHTML"],ey={class:"is-toggle buttons"},ty=["id","aria-checked","disabled","onClick","title"],ny=["id","checked","value","disabled"],ry=["innerHTML"],sy=["innerHTML"],ay={__name:"FormToggle",props:{modelValue:[String,Number,Boolean],choices:{type:Array,required:!0},fieldName:{type:String,required:!0},fieldError:[String],hasOffset:Boolean,isDisabled:Boolean,label:{type:String,default:""},help:{type:String,default:""}},emits:["update:modelValue"],setup(e,{emit:t}){function n(r){t("update:modelValue",r)}return(r,s)=>{const a=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":se($n)("label",e.fieldName).inputId},[e.label?(D(),G("label",{key:0,id:se($n)("label",e.fieldName).inputId,class:"label",innerHTML:r.$t(e.label)},null,8,Z3)):fe("",!0),Q("div",ey,[pe(se(Y3),null,{default:Ye(({mode:o})=>[(D(!0),G(Ne,null,Wi(e.choices,l=>(D(),G("button",{key:l.value,id:se($n)("button",e.fieldName+l.value).inputId,role:"radio",type:"button",class:xe(["button",{"is-link":e.modelValue===l.value,"is-dark":o==="dark","is-multiline":l.legend}]),"aria-checked":e.modelValue===l.value,disabled:e.isDisabled,onClick:aa(c=>n(l.value),["stop"]),title:l.title?l.title:""},[Q("input",{id:se($n)("radio",l.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===l.value,value:l.value,disabled:e.isDisabled},null,8,ny),l.legend?(D(),G("span",{key:0,innerHTML:r.$t(l.legend),class:"is-block is-size-7"},null,8,ry)):fe("",!0),l.icon?(D(),Be(a,{key:1,icon:["fas",l.icon],class:"mr-2"},null,8,["icon"])):fe("",!0),He(" "+Ae(r.$t(l.text)),1)],10,ty))),128))]),_:1})]),e.fieldError!=null?(D(),Be(i,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:r.$t(e.help)},null,8,sy)):fe("",!0)],10,Q3)}}},iy={class:"field is-flex"},oy=["id","name","disabled"],ly=["for","innerHTML","onKeypress"],cy=["innerHTML"],uy=Object.assign({inheritAttrs:!1},{__name:"FormCheckbox",props:{modelValue:Boolean,fieldName:{type:String,default:"",required:!0},label:{type:String,default:""},labelClass:{type:String,default:""},help:{type:String,default:""},isIndented:Boolean,isDisabled:Boolean},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,r=Dp(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(){r.disabled!=!0&&(s.value=!s.value)}return(i,o)=>{const l=je("FontAwesomeIcon");return D(),G("div",iy,[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(l,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",null,[eu(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":o[0]||(o[0]=c=>Se(s)?s.value=c:null),disabled:e.isDisabled},null,8,oy),[[jm,se(s)]]),Q("label",{tabindex:"0",for:e.fieldName,class:xe(["label",e.labelClass]),innerHTML:i.$t(e.label),onKeypress:ti(aa(a,["prevent"]),["space"])},null,42,ly),e.help?(D(),G("p",{key:0,class:"help",innerHTML:i.$t(e.help)},null,8,cy)):fe("",!0)])])}}}),fy={class:"field is-grouped"},dy={class:"control"},py={key:0,class:"control"},my={__name:"FormButtons",props:{showCancelButton:{type:Boolean,default:!1},isBusy:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},caption:{type:String,default:"commons.submit"},cancelLandingView:{type:String,default:""},color:{type:String,default:"is-link"},submitId:{type:String,default:"btnSubmit"},cancelId:{type:String,default:"btnCancel"}},setup(e){return(t,n)=>{const r=je("VueButton"),s=je("RouterLink");return D(),G("div",fy,[Q("div",dy,[pe(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:Ye(()=>[He(Ae(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(D(),G("div",py,[pe(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:Ye(()=>[He(Ae(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):fe("",!0)])}}},hy={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=e,n=ft(),r=ge(["mousedown","scroll","keypress"]),s=ge(null);ze(()=>t.kickAfter,()=>{o()}),kn(()=>{r.value.forEach(function(c){window.addEventListener(c,o)},this),a()}),ea(()=>{r.value.forEach(function(c){window.removeEventListener(c,o)},this),l()});function a(){s.value=setTimeout(i,t.kickAfter*60*1e3)}function i(){clearTimeout(s.value),n.logout({kicked:!0})}function o(){l(),a()}function l(){clearTimeout(s.value)}return(c,u)=>null}},An=Gm(M1),md={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales};An.provide("2fauth",Qn(md));const hd=I1();hd.use(({store:e})=>{e.$2fauth=md});An.use(hd);An.use(qn);An.use(fg,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_bg.json":()=>te(()=>import("./php_bg-79a9a6b2.js"),[],import.meta.url),"../lang/php_de.json":()=>te(()=>import("./php_de-edabb7b3.js"),[],import.meta.url),"../lang/php_en.json":()=>te(()=>import("./php_en-65348e5a.js"),[],import.meta.url),"../lang/php_es.json":()=>te(()=>import("./php_es-8bc38a41.js"),[],import.meta.url),"../lang/php_fr.json":()=>te(()=>import("./php_fr-4e3a581d.js"),[],import.meta.url),"../lang/php_hi.json":()=>te(()=>import("./php_hi-0477d2c4.js"),[],import.meta.url),"../lang/php_id.json":()=>te(()=>import("./php_id-8aeb6da7.js"),[],import.meta.url),"../lang/php_it.json":()=>te(()=>import("./php_it-b90e26fa.js"),[],import.meta.url),"../lang/php_ja.json":()=>te(()=>import("./php_ja-bbda5fec.js"),[],import.meta.url),"../lang/php_ro.json":()=>te(()=>import("./php_ro-43bf93e4.js"),[],import.meta.url),"../lang/php_ru.json":()=>te(()=>import("./php_ru-d1282df9.js"),[],import.meta.url),"../lang/php_si.json":()=>te(()=>import("./php_si-85c4e7b8.js"),[],import.meta.url),"../lang/php_zh.json":()=>te(()=>import("./php_zh-0c409c6d.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});An.use(mh);An.component("FontAwesomeIcon",uv).component("ResponsiveWidthWrapper",S4).component("FormWrapper",T4).component("VueFooter",U4).component("Modal",X4).component("VueButton",Z4).component("ButtonBackCloseCancel",n3).component("FieldError",a3).component("FormField",f3).component("FormPasswordField",L3).component("FormSelect",F3).component("FormToggle",ay).component("FormCheckbox",uy).component("FormButtons",my).component("Kicker",hy);An.mount("#app");ft().applyUserPrefs();export{ou as $,eu as A,gy as B,ln as C,aa as D,Se as E,Ne as F,Wi as G,Vm as H,Je as I,mg as J,is as K,Yl as L,Ti as M,Pc as N,er as O,Zn as P,et as Q,Nf as R,yy as S,gg as T,Y3 as U,Ji as V,jm as W,Su as X,wy as Y,$n as Z,Ju as _,ft as a,vy as a0,Ur as a1,rf as a2,by as a3,rr as a4,_4 as a5,At as b,Mf as c,Nt as d,je as e,D as f,G as g,Q as h,se as i,He as j,Be as k,fe as l,pe as m,xe as n,kn as o,Ye as p,xn as q,ge as r,ea as s,Ae as t,v1 as u,ne as v,ti as w,ze as x,up as y,tn as z}; +`),e.removeAttribute(n),r()}).catch(s)}else r()}else r()})}function V0(e){return Promise.all([hc(e,"::before"),hc(e,"::after")])}function U0(e){return e.parentNode!==document.head&&!~Rg.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(pi)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function gc(e){if(Bt)return new Promise(function(t,n){var r=sr(e.querySelectorAll("*")).filter(U0).map(V0),s=Eo.begin("searchPseudoElements");id(),Promise.all(r).then(function(){s(),_i(),t()}).catch(function(){s(),_i(),n()})})}var K0={hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=gc,n}}},provides:function(t){t.pseudoElements2svg=function(n){var r=n.node,s=r===void 0?ke:r;K.searchPseudoElements&&gc(s)}}},vc=!1,W0={mixout:function(){return{dom:{unwatch:function(){id(),vc=!0}}}},hooks:function(){return{bootstrap:function(){fc(gi("mutationObserverCallbacks",{}))},noAuto:function(){O0()},watch:function(n){var r=n.observeMutationsRoot;vc?_i():fc(gi("mutationObserverCallbacks",{observeMutationsRoot:r}))}}}},yc=function(t){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t.toLowerCase().split(" ").reduce(function(r,s){var a=s.toLowerCase().split("-"),i=a[0],o=a.slice(1).join("-");if(i&&o==="h")return r.flipX=!0,r;if(i&&o==="v")return r.flipY=!0,r;if(o=parseFloat(o),isNaN(o))return r;switch(i){case"grow":r.size=r.size+o;break;case"shrink":r.size=r.size-o;break;case"left":r.x=r.x-o;break;case"right":r.x=r.x+o;break;case"up":r.y=r.y-o;break;case"down":r.y=r.y+o;break;case"rotate":r.rotate=r.rotate+o;break}return r},n)},q0={mixout:function(){return{parse:{transform:function(n){return yc(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-transform");return s&&(n.transform=yc(s)),n}}},provides:function(t){t.generateAbstractTransformGrouping=function(n){var r=n.main,s=n.transform,a=n.containerWidth,i=n.iconWidth,o={transform:"translate(".concat(a/2," 256)")},l="translate(".concat(s.x*32,", ").concat(s.y*32,") "),c="scale(".concat(s.size/16*(s.flipX?-1:1),", ").concat(s.size/16*(s.flipY?-1:1),") "),u="rotate(".concat(s.rotate," 0 0)"),f={transform:"".concat(l," ").concat(c," ").concat(u)},d={transform:"translate(".concat(i/2*-1," -256)")},m={outer:o,inner:f,path:d};return{tag:"g",attributes:B({},m.outer),children:[{tag:"g",attributes:B({},m.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:B(B({},r.icon.attributes),m.path)}]}]}}}},Ba={x:0,y:0,width:"100%",height:"100%"};function bc(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function Y0(e){return e.tag==="g"?e.children:[e]}var G0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-mask"),a=s?va(s.split(" ").map(function(i){return i.trim()})):wo();return a.prefix||(a.prefix=an()),n.mask=a,n.maskId=r.getAttribute("data-fa-mask-id"),n}}},provides:function(t){t.generateAbstractMask=function(n){var r=n.children,s=n.attributes,a=n.main,i=n.mask,o=n.maskId,l=n.transform,c=a.width,u=a.icon,f=i.width,d=i.icon,m=qg({transform:l,containerWidth:f,iconWidth:c}),g={tag:"rect",attributes:B(B({},Ba),{},{fill:"white"})},v=u.children?{children:u.children.map(bc)}:{},S={tag:"g",attributes:B({},m.inner),children:[bc(B({tag:u.tag,attributes:B(B({},u.attributes),m.path)},v))]},b={tag:"g",attributes:B({},m.outer),children:[S]},_="mask-".concat(o||Dr()),P="clip-".concat(o||Dr()),x={tag:"mask",attributes:B(B({},Ba),{},{id:_,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[g,b]},F={tag:"defs",children:[{tag:"clipPath",attributes:{id:P},children:Y0(d)},x]};return r.push(F,{tag:"rect",attributes:B({fill:"currentColor","clip-path":"url(#".concat(P,")"),mask:"url(#".concat(_,")")},Ba)}),{children:r,attributes:s}}}},J0={provides:function(t){var n=!1;sn.matchMedia&&(n=sn.matchMedia("(prefers-reduced-motion: reduce)").matches),t.missingIconAbstract=function(){var r=[],s={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};r.push({tag:"path",attributes:B(B({},s),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=B(B({},a),{},{attributeName:"opacity"}),o={tag:"circle",attributes:B(B({},s),{},{cx:"256",cy:"364",r:"28"}),children:[]};return n||o.children.push({tag:"animate",attributes:B(B({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:B(B({},i),{},{values:"1;0;1;1;0;1;"})}),r.push(o),r.push({tag:"path",attributes:B(B({},s),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:n?[]:[{tag:"animate",attributes:B(B({},i),{},{values:"1;0;0;0;0;1;"})}]}),n||r.push({tag:"path",attributes:B(B({},s),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:B(B({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:r}}}},X0={hooks:function(){return{parseNodeAttributes:function(n,r){var s=r.getAttribute("data-fa-symbol"),a=s===null?!1:s===""?!0:s;return n.symbol=a,n}}}},Q0=[Jg,F0,H0,D0,z0,K0,W0,q0,G0,J0,X0];f0(Q0,{mixoutsTo:at});at.noAuto;at.config;var Z0=at.library;at.dom;var Ei=at.parse;at.findIconDefinition;at.toHtml;var ev=at.icon;at.layer;at.text;at.counter;function wc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function Mt(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function nv(e,t){if(e==null)return{};var n=tv(e,t),r,s;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var rv=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ld={exports:{}};(function(e){(function(t){var n=function(b,_,P){if(!c(_)||f(_)||d(_)||m(_)||l(_))return _;var x,F=0,Z=0;if(u(_))for(x=[],Z=_.length;F1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var r=(e.children||[]).map(function(l){return cd(l)}),s=Object.keys(e.attributes||{}).reduce(function(l,c){var u=e.attributes[c];switch(c){case"class":l.class=ov(u);break;case"style":l.style=iv(u);break;default:l.attrs[c]=u}return l},{attrs:{},class:{},style:{}});n.class;var a=n.style,i=a===void 0?{}:a,o=nv(n,av);return sa(e.tag,Mt(Mt(Mt({},t),{},{class:s.class,style:Mt(Mt({},s.style),i)},s.attrs),o),r)}var ud=!1;try{ud=!0}catch{}function lv(){if(!ud&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function ja(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?Xe({},e,t):{}}function cv(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":e.flip===!0,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both"},Xe(t,"fa-".concat(e.size),e.size!==null),Xe(t,"fa-rotate-".concat(e.rotation),e.rotation!==null),Xe(t,"fa-pull-".concat(e.pull),e.pull!==null),Xe(t,"fa-swap-opacity",e.swapOpacity),Xe(t,"fa-bounce",e.bounce),Xe(t,"fa-shake",e.shake),Xe(t,"fa-beat",e.beat),Xe(t,"fa-fade",e.fade),Xe(t,"fa-beat-fade",e.beatFade),Xe(t,"fa-flash",e.flash),Xe(t,"fa-spin-pulse",e.spinPulse),Xe(t,"fa-spin-reverse",e.spinReverse),t);return Object.keys(n).map(function(r){return n[r]?r:null}).filter(function(r){return r})}function _c(e){if(e&&Us(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(Ei.icon)return Ei.icon(e);if(e===null)return null;if(Us(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}var uv=xn({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(t){return[!0,!1,"horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(t){return[90,180,270].indexOf(Number.parseInt(t,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(t){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(t,n){var r=n.attrs,s=ne(function(){return _c(t.icon)}),a=ne(function(){return ja("classes",cv(t))}),i=ne(function(){return ja("transform",typeof t.transform=="string"?Ei.transform(t.transform):t.transform)}),o=ne(function(){return ja("mask",_c(t.mask))}),l=ne(function(){return ev(s.value,Mt(Mt(Mt(Mt({},a.value),i.value),o.value),{},{symbol:t.symbol,title:t.title}))});ze(l,function(u){if(!u)return lv("Could not find one or more icon(s)",s.value,o.value)},{immediate:!0});var c=ne(function(){return l.value?cd(l.value.abstract[0],{},r):null});return function(){return c.value}}}),fv={prefix:"fas",iconName:"file-lines",icon:[384,512,[128441,128462,61686,"file-alt","file-text"],"f15c","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},dv={prefix:"fas",iconName:"circle-minus",icon:[512,512,["minus-circle"],"f056","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"]},pv=dv,mv={prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z"]},hv={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},gv={prefix:"fas",iconName:"circle-exclamation",icon:[512,512,["exclamation-circle"],"f06a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"]},vv=gv,yv={prefix:"fas",iconName:"square-check",icon:[448,512,[9745,9989,61510,"check-square"],"f14a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},bv=yv,wv={prefix:"fas",iconName:"list",icon:[512,512,["list-squares"],"f03a","M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z"]},_v={prefix:"fas",iconName:"lock",icon:[448,512,[128274],"f023","M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"]},Ev={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"]},xv={prefix:"fas",iconName:"globe",icon:[512,512,[127760],"f0ac","M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z"]},kv={prefix:"fas",iconName:"slash",icon:[640,512,[],"f715","M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z"]},Av={prefix:"fas",iconName:"arrow-up-a-z",icon:[576,512,["sort-alpha-up"],"f15e","M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z"]},Sv=Av,Cv={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"]},Ov={prefix:"fas",iconName:"circle-check",icon:[512,512,[61533,"check-circle"],"f058","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"]},Tv={prefix:"fas",iconName:"layer-group",icon:[576,512,[],"f5fd","M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z"]},Lv={prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"]},Pv={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"]},Rv={prefix:"fas",iconName:"eye",icon:[576,512,[128065],"f06e","M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"]},Mv={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"]},Nv={prefix:"fas",iconName:"align-left",icon:[448,512,[],"f036","M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},Iv={prefix:"fas",iconName:"up-right-from-square",icon:[512,512,["external-link-alt"],"f35d","M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"]},$v=Iv,Fv={prefix:"fas",iconName:"table-cells",icon:[512,512,["th"],"f00a","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z"]},Hv=Fv,Dv={prefix:"fas",iconName:"camera",icon:[512,512,[62258,"camera-alt"],"f030","M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"]},zv={prefix:"fas",iconName:"arrow-down-a-z",icon:[576,512,["sort-alpha-asc","sort-alpha-down"],"f15d","M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z"]},Bv=zv,jv={prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"]},Vv={prefix:"fas",iconName:"flask",icon:[448,512,[],"f0c3","M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z"]},Uv={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"]},Kv={prefix:"fas",iconName:"file-arrow-down",icon:[384,512,["file-download"],"f56d","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z"]},Wv=Kv,qv={prefix:"fas",iconName:"sun",icon:[512,512,[9728],"f185","M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z"]},Yv={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"]},Gv=Yv,Jv={prefix:"fas",iconName:"magnifying-glass",icon:[512,512,[128269,"search"],"f002","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"]},Xv=Jv,Qv={prefix:"fas",iconName:"square-pen",icon:[448,512,["pen-square","pencil-square"],"f14b","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"]},Zv=Qv,e4={prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"]},t4={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"]},n4={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},r4=n4,s4={prefix:"fas",iconName:"chevron-right",icon:[320,512,[9002],"f054","M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},a4={prefix:"fas",iconName:"video-slash",icon:[640,512,[],"f4e2","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z"]},i4={prefix:"fas",iconName:"spinner",icon:[512,512,[],"f110","M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z"]},o4={prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z"]},l4={prefix:"fas",iconName:"moon",icon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"]},c4={prefix:"fas",iconName:"circle-plus",icon:[512,512,["plus-circle"],"f055","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},u4=c4,f4={prefix:"fas",iconName:"desktop",icon:[576,512,[128421,61704,"desktop-alt"],"f390","M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z"]},d4={prefix:"fas",iconName:"book",icon:[448,512,[128212],"f02d","M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},p4={prefix:"fas",iconName:"check",icon:[448,512,[10003,10004],"f00c","M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]},m4={prefix:"fas",iconName:"triangle-exclamation",icon:[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},h4={prefix:"fas",iconName:"circle-xmark",icon:[512,512,[61532,"times-circle","xmark-circle"],"f057","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]},g4=h4,v4={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"]},y4={prefix:"far",iconName:"paper-plane",icon:[512,512,[61913],"f1d8","M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z"]},b4={prefix:"fab",iconName:"github-alt",icon:[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"]},w4={prefix:"fab",iconName:"openid",icon:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"]};Z0.add(t4,u4,o4,Cv,Mv,p4,bv,r4,_v,Pv,Xv,Gv,hv,i4,b4,jv,Tv,pv,vv,Zv,Hv,wv,g4,Uv,xv,d4,Vv,Lv,e4,Bv,Sv,Rv,Ev,$v,Dv,Wv,qv,l4,f4,mv,Ov,m4,fv,a4,v4,s4,w4,y4,kv,Nv);const _4=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},E4={},x4={class:"columns is-centered"},k4={class:"form-column column is-two-thirds-tablet is-half-desktop is-half-widescreen is-one-third-fullhd"};function A4(e,t){return D(),G("div",x4,[Q("div",k4,[ln(e.$slots,"default")])])}const S4=_4(E4,[["render",A4]]),C4=["innerHTML"],O4=["innerHTML"],T4={__name:"FormWrapper",props:{title:{type:String,default:""},punchline:{type:String,default:""}},setup(e){return(t,n)=>{const r=je("ResponsiveWidthWrapper");return D(),Be(r,null,{default:Ye(()=>[e.title?(D(),G("h1",{key:0,class:"title has-text-grey-dark",innerHTML:t.$t(e.title)},null,8,C4)):fe("",!0),e.punchline?(D(),G("div",{key:1,id:"punchline",class:"block",innerHTML:t.$t(e.punchline)},null,8,O4)):fe("",!0),ln(t.$slots,"default")]),_:3})}}},L4={class:"main"},P4={key:0,class:"columns is-gapless"},R4={class:"column has-text-centered"},M4={class:"field is-grouped"},N4={key:1,class:"content has-text-centered"},I4={key:2,class:"content has-text-centered"},$4={key:1},F4={key:3,class:"content has-text-centered"},H4={key:0,class:"is-size-6"},D4={class:"has-text-weight-bold"},z4={key:1},B4={key:0},j4={key:0,class:"release-flag"},V4={key:1},U4={__name:"Footer",props:{showButtons:!0,internalFooterType:{type:String,default:"navLinks"}},setup(e){const t=Nf(),n=ft(),r=et("2fauth");function s(){confirm(Je("auth.confirm.logout"))&&n.logout()}return(a,i)=>{const o=je("router-link");return D(),G("footer",L4,[e.showButtons?(D(),G("div",P4,[Q("div",R4,[Q("div",M4,[ln(a.$slots,"default")])])])):fe("",!0),e.internalFooterType=="doneButton"?(D(),G("div",N4,[Q("button",{id:"lnkExitEdit",class:"button is-ghost is-like-text",onClick:i[0]||(i[0]=aa(l=>a.$emit("doneButtonClicked",!0),["stop"]))},Ae(a.$t("commons.done")),1)])):e.internalFooterType=="modal"?(D(),G("div",I4,[a.$route.name!="accounts"?(D(),Be(o,{key:0,id:"lnkBackToHome",to:{name:"accounts"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("commons.back_to_home")),1)]),_:1})):(D(),G("span",$4," "))])):(D(),G("div",F4,[a.$route.meta.showAbout===!0?(D(),G("div",H4,[pe(o,{id:"lnkAbout",to:{name:"about"},class:"has-text-grey"},{default:Ye(()=>[He(" 2FAuth – "),Q("span",D4,"v"+Ae(se(r).version),1)]),_:1})])):(D(),G("div",z4,[pe(o,{id:"lnkSettings",to:{name:"settings.options"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("settings.settings")),1)]),_:1},8,["to"]),se(n).isAdmin?(D(),G("span",B4,[He(" - "),pe(o,{id:"lnkAdmin",to:{name:"admin.appSetup"},class:"has-text-grey"},{default:Ye(()=>[He(Ae(a.$t("admin.admin")),1),se(t).latestRelease&&se(t).checkForUpdate?(D(),G("span",j4)):fe("",!0)]),_:1},8,["to"])])):fe("",!0),!se(r).config.proxyAuth||se(r).config.proxyAuth&&se(r).config.proxyLogoutUrl?(D(),G("span",V4,[He(" - "),Q("button",{id:"lnkSignOut",class:"button is-text is-like-text has-text-grey",onClick:s},Ae(a.$t("auth.sign_out")),1)])):fe("",!0)]))]))])}}},K4=["onClick"],W4={class:"modal-content"},q4={class:"section"},Y4={class:"columns is-centered"},G4={class:"column is-three-quarters"},J4={class:"modal-slot box has-text-centered is-shadowless"},X4={__name:"Modal",props:{modelValue:Boolean,closable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,{notify:r}=Fu(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(i){r({clean:!0}),s.value=!1}return(i,o)=>{const l=je("ButtonBackCloseCancel"),c=je("VueFooter");return D(),G("div",{class:xe(["modal modal-otp",{"is-active":se(s)}])},[Q("div",{class:"modal-background",onClick:aa(a,["stop"])},null,8,K4),Q("div",W4,[Q("section",q4,[Q("div",Y4,[Q("div",G4,[Q("div",J4,[ln(i.$slots,"default")])])])])]),n.closable?(D(),Be(c,{key:0,showButtons:!0,internalFooterType:"modal"},{default:Ye(()=>[pe(l,{action:"close",useLinkTag:!1,onClosed:a})]),_:1})):fe("",!0)],2)}}},Q4=["type","disabled"],Z4={__name:"Button",props:{color:{type:String,default:"is-link"},nativeType:{type:String,default:"submit"},isLoading:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1}},setup(e){return(t,n)=>(D(),G("button",{type:e.nativeType,disabled:e.isLoading||e.isDisabled,class:xe({button:!0,[`${e.color}`]:!0,"is-loading":e.isLoading})},[ln(t.$slots,"default")],10,Q4))}},e3={key:0,class:"control"},t3={key:1,class:"control"},n3={__name:"ButtonBackCloseCancel",props:{returnTo:{type:Object,default:{name:"accounts"}},action:{type:String,default:"close"},useLinkTag:{type:Boolean,default:!0},isText:{type:Boolean,default:!1},isCapture:{type:Boolean,default:!1}},setup(e){const t=e;v1(),Ju();const r="button is-rounded"+(sf().value==="dark"&&!t.isText&&!t.isCapture?" is-dark":"")+(t.isText?" is-text":"")+(t.isCapture?" is-large is-warning":"");return(s,a)=>{const i=je("RouterLink");return e.useLinkTag?(D(),G("p",e3,[e.action=="close"?(D(),Be(i,{key:0,id:"btnClose",to:e.returnTo,class:xe(r),tabindex:"0",role:"button","aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.close")),1)]),_:1},8,["to","aria-label"])):e.action=="back"?(D(),Be(i,{key:1,id:"lnkBack",to:e.returnTo,class:xe(r),"aria-label":s.$t("commons.close_the_x_page",{pagetitle:s.$route.meta.title})},{default:Ye(()=>[He(Ae(s.$t("commons.back")),1)]),_:1},8,["to","aria-label"])):e.action=="cancel"?(D(),Be(i,{key:2,id:"btnCancel",to:e.returnTo,class:xe(r)},{default:Ye(()=>[He(Ae(s.$t("commons.cancel")),1)]),_:1},8,["to"])):fe("",!0)])):(D(),G("p",t3,[e.action=="close"?(D(),G("button",{key:0,id:"btnClose",class:xe(r),onClick:a[0]||(a[0]=o=>s.$emit("closed")),type:"button"},Ae(s.$t("commons.close")),1)):fe("",!0),e.action=="cancel"?(D(),G("button",{key:1,id:"btnCancel",class:xe(r),onClick:a[1]||(a[1]=o=>s.$emit("canceled")),type:"button"},Ae(s.$t("commons.cancel")),1)):fe("",!0)]))}}},r3={role:"alert"},s3=["id","innerHTML"],a3={__name:"FieldError",props:{error:{type:String,required:!0},field:{type:String,required:!0},alertType:{type:String,default:"is-danger"}},setup(e){return(t,n)=>(D(),G("div",r3,[Q("p",{id:"valError"+e.field[0].toUpperCase()+e.field.toLowerCase().slice(1),class:xe(["help",e.alertType]),innerHTML:e.error},null,10,s3)]))}};function $n(e,t){let n;switch(t=t.toString(),e){case"text":n="txt";break;case"button":n="btn";break;case"email":n="eml";break;case"password":n="pwd";break;case"radio":n="rdo";break;case"label":n="lbl";break;default:n="txt";break}return{inputId:n+t[0].toUpperCase()+t.toLowerCase().slice(1)}}function wy(e,t=!1){const n=ft();if(n.preferences.formatPassword&&e.length>0){const r=Math.ceil(n.preferences.formatPasswordBy<1?e.length*n.preferences.formatPasswordBy:n.preferences.formatPasswordBy),s=e.match(new RegExp(`.{1,${r}}`,"g"));s&&(e=s.join(" "))}return n.preferences.showOtpAsDot&&!t?e.replace(/[0-9]/g,"●"):e}const i3=["for","innerHTML"],o3=["disabled","id","type","value","placeholder","maxlength"],l3={key:0,class:"icon is-small is-left"},c3={key:1,class:"icon is-small is-right"},u3=["innerHTML"],f3=Object.assign({inheritAttrs:!1},{__name:"FormField",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"text"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},maxLength:{type:Number,default:null},isIndented:Boolean,leftIcon:"",rightIcon:""},setup(e){const t=e,{inputId:n}=$n(t.inputType,t.fieldName);return(r,s)=>{const a=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["mb-3",{"pt-3":e.hasOffset,"is-flex":e.isIndented}])},[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(a,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",{class:xe(["field",{"is-flex-grow-5":e.isIndented}])},[Q("label",{for:se(n),class:"label",style:tn({opacity:e.isDisabled?"0.5":"1"}),innerHTML:r.$t(e.label)},null,12,i3),Q("div",{class:xe(["control",{"has-icons-left":e.leftIcon,"has-icons-right":e.rightIcon}])},[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:e.inputType,class:"input",value:e.modelValue,placeholder:e.placeholder},r.$attrs,{onInput:s[0]||(s[0]=o=>r.$emit("update:modelValue",o.target.value)),onChange:s[1]||(s[1]=o=>r.$emit("change:modelValue",o.target.value)),maxlength:e.maxLength}),null,16,o3),e.leftIcon?(D(),G("span",l3,[pe(a,{icon:["fas",e.leftIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0),e.rightIcon?(D(),G("span",c3,[pe(a,{icon:["fas",e.rightIcon],transform:"rotate-75",size:"xs"},null,8,["icon"])])):fe("",!0)],2),e.fieldError!=null?(D(),Be(i,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,u3)):fe("",!0)],2)],2)}}}),d3=["for","innerHTML"],p3={class:"control has-icons-right"},m3=["disabled","id","type","value","placeholder"],h3=["title"],g3=["title"],v3=["innerHTML"],y3=["innerHTML"],b3={key:3,class:"columns is-mobile is-size-7 mt-0"},w3={class:"column is-one-third"},_3={class:"has-text-weight-semibold"},E3=Q("br",null,null,-1),x3=Q("br",null,null,-1),k3={class:"column"},A3={class:"has-text-weight-semibold"},S3=Q("br",null,null,-1),C3=Q("br",null,null,-1),O3=Q("br",null,null,-1),T3=Q("br",null,null,-1),L3=Object.assign({inheritAttrs:!0},{__name:"FormPasswordField",props:{modelValue:[String],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],inputType:{type:String,default:"password"},placeholder:{type:String,default:""},help:{type:String,default:""},hasOffset:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},showRules:{type:Boolean,default:!1}},setup(e){const t=e,{inputId:n}=$n(t.inputType,t.fieldName),r=ge(t.inputType),s=ge(!1),a=ne(()=>/[a-z]/.test(t.modelValue)),i=ne(()=>/[A-Z]/.test(t.modelValue)),o=ne(()=>/[0-9]/.test(t.modelValue)),l=ne(()=>/[^A-Za-z0-9]/.test(t.modelValue)),c=ne(()=>t.modelValue.length>=8);function u(d){s.value=!!d.getModifierState("CapsLock")}function f(d){r.value!=d&&(r.value=d)}return(d,m)=>{const g=je("font-awesome-icon"),v=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}])},[Q("label",{for:se(n),class:"label",innerHTML:d.$t(e.label)},null,8,d3),Q("div",p3,[Q("input",Ji({disabled:e.isDisabled,id:se(n),type:se(r),class:"input",value:e.modelValue,placeholder:e.placeholder},d.$attrs,{onInput:m[0]||(m[0]=S=>d.$emit("update:modelValue",S.target.value)),onKeyup:u}),null,16,m3),se(r)=="password"?(D(),G("span",{key:0,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[1]||(m[1]=ti(S=>f("text"),["enter"])),onClick:m[2]||(m[2]=S=>f("text")),title:d.$t("auth.forms.reveal_password")},[pe(g,{icon:["fas","eye-slash"]})],40,h3)):(D(),G("span",{key:1,role:"button",id:"btnTogglePassword",tabindex:"0",class:"icon is-small is-right is-clickable",onKeyup:m[3]||(m[3]=ti(S=>f("password"),["enter"])),onClick:m[4]||(m[4]=S=>f("password")),title:d.$t("auth.forms.hide_password")},[pe(g,{icon:["fas","eye"]})],40,g3))]),se(s)?(D(),G("p",{key:0,class:"help is-warning",innerHTML:d.$t("auth.forms.caps_lock_is_on")},null,8,v3)):fe("",!0),e.fieldError!=null?(D(),Be(v,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:d.$t(e.help)},null,8,y3)):fe("",!0),e.showRules?(D(),G("div",b3,[Q("div",w3,[Q("span",_3,Ae(d.$t("auth.forms.mandatory_rules")),1),E3,Q("span",{class:xe(["is-underscored",{"is-dot":se(c)}]),id:"valPwdIsLongEnough"},null,2),He(Ae(d.$t("auth.forms.is_long_enough")),1),x3]),Q("div",k3,[Q("span",A3,Ae(d.$t("auth.forms.optional_rules_you_should_follow")),1),S3,Q("span",{class:xe(["is-underscored",{"is-dot":se(a)}]),id:"valPwdHasLowerCase"},null,2),He(Ae(d.$t("auth.forms.has_lower_case")),1),C3,Q("span",{class:xe(["is-underscored",{"is-dot":se(i)}]),id:"valPwdHasUpperCase"},null,2),He(Ae(d.$t("auth.forms.has_upper_case")),1),O3,Q("span",{class:xe(["is-underscored",{"is-dot":se(l)}]),id:"valPwdHasSpecialChar"},null,2),He(Ae(d.$t("auth.forms.has_special_char")),1),T3,Q("span",{class:xe(["is-underscored",{"is-dot":se(o)}]),id:"valPwdHasNumber"},null,2),He(Ae(d.$t("auth.forms.has_number")),1)])])):fe("",!0)],2)}}}),P3={class:"field"},R3=["innerHTML"],M3={class:"control"},N3={class:"select"},I3=["value"],$3=["innerHTML"],F3={__name:"FormSelect",props:{modelValue:[String,Number,Boolean],label:{type:String,default:""},fieldName:{type:String,default:"",required:!0},fieldError:[String],options:{type:Array,required:!0},help:{type:String,default:""}},setup(e){const n=ge(e.modelValue);return(r,s)=>{const a=je("FieldError");return D(),G("div",P3,[Q("label",{class:"label",innerHTML:r.$t(e.label)},null,8,R3),Q("div",M3,[Q("div",N3,[eu(Q("select",{"onUpdate:modelValue":s[0]||(s[0]=i=>Se(n)?n.value=i:null),onChange:s[1]||(s[1]=i=>r.$emit("update:modelValue",i.target.value))},[(D(!0),G(Ne,null,Wi(e.options,i=>(D(),G("option",{value:i.value},Ae(r.$t(i.text)),9,I3))),256))],544),[[Vm,se(n)]])])]),e.fieldError!=null?(D(),Be(a,{key:0,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:1,class:"help",innerHTML:r.$t(e.help)},null,8,$3)):fe("",!0)])}}};function fd(e){var t;const n=st(e);return(t=n==null?void 0:n.$el)!=null?t:n}const zr=Vr?window:void 0;function xi(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=zr):[t,n,r,s]=e,!t)return no;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const a=[],i=()=>{a.forEach(u=>u()),a.length=0},o=(u,f,d,m)=>(u.addEventListener(f,d,m),()=>u.removeEventListener(f,d,m)),l=ze(()=>[fd(t),st(s)],([u,f])=>{if(i(),!u)return;const d=Xu(f)?{...f}:f;a.push(...n.flatMap(m=>r.map(g=>o(u,m,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return tr(c),c}const ys=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},bs="__vueuse_ssr_handlers__",H3=D3();function D3(){return bs in ys||(ys[bs]=ys[bs]||{}),ys[bs]}function dd(e,t){return H3[e]||t}function z3(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const B3={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ec="vueuse-storage";function j3(e,t,n,r={}){var s;const{flush:a="pre",deep:i=!0,listenToStorageChanges:o=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=zr,eventFilter:d,onError:m=w=>{console.error(w)}}=r,g=(u?Di:ge)(t);if(!n)try{n=dd("getDefaultStorage",()=>{var w;return(w=zr)==null?void 0:w.localStorage})()}catch(w){m(w)}if(!n)return g;const v=st(t),S=z3(v),b=(s=r.serializer)!=null?s:B3[S],{pause:_,resume:P}=Zu(g,()=>x(g.value),{flush:a,deep:i,eventFilter:d});return f&&o&&(xi(f,"storage",q),xi(f,Ec,Z)),q(),g;function x(w){try{if(w==null)n.removeItem(e);else{const O=b.write(w),H=n.getItem(e);H!==O&&(n.setItem(e,O),f&&f.dispatchEvent(new CustomEvent(Ec,{detail:{key:e,oldValue:H,newValue:O,storageArea:n}})))}}catch(O){m(O)}}function F(w){const O=w?w.newValue:n.getItem(e);if(O==null)return l&&v!==null&&n.setItem(e,b.write(v)),v;if(!w&&c){const H=b.read(O);return typeof c=="function"?c(H,v):S==="object"&&!Array.isArray(H)?{...v,...H}:H}else return typeof O!="string"?O:b.read(O)}function Z(w){q(w.detail)}function q(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){g.value=v;return}if(!(w&&w.key!==e)){_();try{(w==null?void 0:w.newValue)!==b.write(g.value)&&(g.value=F(w))}catch(O){m(O)}finally{w?Zn(P):P()}}}}}function V3(){const e=ge(!1);return er()&&kn(()=>{e.value=!0}),e}function U3(e){const t=V3();return ne(()=>(t.value,!!e()))}function K3(e,t={}){const{window:n=zr}=t,r=U3(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const a=ge(!1),i=c=>{a.value=c.matches},o=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=ji(()=>{r.value&&(o(),s=n.matchMedia(st(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),a.value=s.matches)});return tr(()=>{l(),o(),s=void 0}),a}function W3(e){return K3("(prefers-color-scheme: dark)",e)}function q3(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=zr,storage:a,storageKey:i="vueuse-color-scheme",listenToStorageChanges:o=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=W3({window:s}),m=ne(()=>d.value?"dark":"light"),g=l||(i==null?ro(r):j3(i,r,a,{window:s,listenToStorageChanges:o})),v=ne(()=>g.value==="auto"?m.value:g.value),S=dd("updateHTMLAttrs",(x,F,Z)=>{const q=typeof x=="string"?s==null?void 0:s.document.querySelector(x):fd(x);if(!q)return;let w;if(u){w=s.document.createElement("style");const O="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";w.appendChild(document.createTextNode(O)),s.document.head.appendChild(w)}if(F==="class"){const O=Z.split(/\s/g);Object.values(f).flatMap(H=>(H||"").split(/\s/g)).filter(Boolean).forEach(H=>{O.includes(H)?q.classList.add(H):q.classList.remove(H)})}else q.setAttribute(F,Z);u&&(s.getComputedStyle(w).opacity,document.head.removeChild(w))});function b(x){var F;S(t,n,(F=f[x])!=null?F:x)}function _(x){e.onChanged?e.onChanged(x,b):b(x)}ze(v,_,{flush:"post",immediate:!0}),ef(()=>_(v.value));const P=ne({get(){return c?g.value:v.value},set(x){g.value=x}});try{return Object.assign(P,{store:g,system:m,state:v})}catch{return P}}const Y3=xn({name:"UseColorMode",props:["selector","attribute","modes","onChanged","storageKey","storage","emitAuto"],setup(e,{slots:t}){const n=q3(e),r=Nt({mode:n,system:n.system,store:n.store});return()=>{if(t.default)return t.default(r)}}});function Va(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function pd(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function J3(e,t=!1){const n=ge(t);let r=null,s;ze(ro(e),o=>{const l=Va(st(o));if(l){const c=l;s=c.style.overflow,n.value&&(c.style.overflow="hidden")}},{immediate:!0});const a=()=>{const o=Va(st(e));!o||n.value||(Pl&&(r=xi(o,"touchmove",l=>{G3(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{const o=Va(st(e));!o||!n.value||(Pl&&(r==null||r()),o.style.overflow=s,n.value=!1)};return tr(i),ne({get(){return n.value},set(o){o?a():i()}})}function X3(){let e=!1;const t=ge(!1);return(n,r)=>{if(t.value=r.value,e)return;e=!0;const s=J3(n,r.value);ze(t,a=>s.value=a)}}X3();const Q3=["aria-labelledby"],Z3=["id","innerHTML"],ey={class:"is-toggle buttons"},ty=["id","aria-checked","disabled","onClick","title"],ny=["id","checked","value","disabled"],ry=["innerHTML"],sy=["innerHTML"],ay={__name:"FormToggle",props:{modelValue:[String,Number,Boolean],choices:{type:Array,required:!0},fieldName:{type:String,required:!0},fieldError:[String],hasOffset:Boolean,isDisabled:Boolean,label:{type:String,default:""},help:{type:String,default:""}},emits:["update:modelValue"],setup(e,{emit:t}){function n(r){t("update:modelValue",r)}return(r,s)=>{const a=je("FontAwesomeIcon"),i=je("FieldError");return D(),G("div",{class:xe(["field",{"pt-3":e.hasOffset}]),role:"radiogroup","aria-labelledby":se($n)("label",e.fieldName).inputId},[e.label?(D(),G("label",{key:0,id:se($n)("label",e.fieldName).inputId,class:"label",innerHTML:r.$t(e.label)},null,8,Z3)):fe("",!0),Q("div",ey,[pe(se(Y3),null,{default:Ye(({mode:o})=>[(D(!0),G(Ne,null,Wi(e.choices,l=>(D(),G("button",{key:l.value,id:se($n)("button",e.fieldName+l.value).inputId,role:"radio",type:"button",class:xe(["button",{"is-link":e.modelValue===l.value,"is-dark":o==="dark","is-multiline":l.legend}]),"aria-checked":e.modelValue===l.value,disabled:e.isDisabled,onClick:aa(c=>n(l.value),["stop"]),title:l.title?l.title:""},[Q("input",{id:se($n)("radio",l.value).inputId,type:"radio",class:"is-hidden",checked:e.modelValue===l.value,value:l.value,disabled:e.isDisabled},null,8,ny),l.legend?(D(),G("span",{key:0,innerHTML:r.$t(l.legend),class:"is-block is-size-7"},null,8,ry)):fe("",!0),l.icon?(D(),Be(a,{key:1,icon:["fas",l.icon],class:"mr-2"},null,8,["icon"])):fe("",!0),He(" "+Ae(r.$t(l.text)),1)],10,ty))),128))]),_:1})]),e.fieldError!=null?(D(),Be(i,{key:1,error:e.fieldError,field:e.fieldName},null,8,["error","field"])):fe("",!0),e.help?(D(),G("p",{key:2,class:"help",innerHTML:r.$t(e.help)},null,8,sy)):fe("",!0)],10,Q3)}}},iy={class:"field is-flex"},oy=["id","name","disabled"],ly=["for","innerHTML","onKeypress"],cy=["innerHTML"],uy=Object.assign({inheritAttrs:!1},{__name:"FormCheckbox",props:{modelValue:Boolean,fieldName:{type:String,default:"",required:!0},label:{type:String,default:""},labelClass:{type:String,default:""},help:{type:String,default:""},isIndented:Boolean,isDisabled:Boolean},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,r=Dp(),s=ne({get(){return n.modelValue},set(i){t("update:modelValue",i)}});function a(){r.disabled!=!0&&(s.value=!s.value)}return(i,o)=>{const l=je("FontAwesomeIcon");return D(),G("div",iy,[e.isIndented?(D(),G("div",{key:0,class:"mx-2 pr-1",style:tn({opacity:e.isDisabled?"0.5":"1"})},[pe(l,{class:"has-text-grey",icon:["fas","chevron-right"],transform:"rotate-135"})],4)):fe("",!0),Q("div",null,[eu(Q("input",{id:e.fieldName,type:"checkbox",name:e.fieldName,class:"is-checkradio is-info","onUpdate:modelValue":o[0]||(o[0]=c=>Se(s)?s.value=c:null),disabled:e.isDisabled},null,8,oy),[[jm,se(s)]]),Q("label",{tabindex:"0",for:e.fieldName,class:xe(["label",e.labelClass]),innerHTML:i.$t(e.label),onKeypress:ti(aa(a,["prevent"]),["space"])},null,42,ly),e.help?(D(),G("p",{key:0,class:"help",innerHTML:i.$t(e.help)},null,8,cy)):fe("",!0)])])}}}),fy={class:"field is-grouped"},dy={class:"control"},py={key:0,class:"control"},my={__name:"FormButtons",props:{showCancelButton:{type:Boolean,default:!1},isBusy:{type:Boolean,default:!1},isDisabled:{type:Boolean,default:!1},caption:{type:String,default:"commons.submit"},cancelLandingView:{type:String,default:""},color:{type:String,default:"is-link"},submitId:{type:String,default:"btnSubmit"},cancelId:{type:String,default:"btnCancel"}},setup(e){return(t,n)=>{const r=je("VueButton"),s=je("RouterLink");return D(),G("div",fy,[Q("div",dy,[pe(r,{id:e.submitId,color:e.color,isLoading:e.isBusy,disabled:e.isDisabled},{default:Ye(()=>[He(Ae(t.$t(e.caption)),1)]),_:1},8,["id","color","isLoading","disabled"])]),e.showCancelButton?(D(),G("div",py,[pe(s,{id:e.cancelId,to:{name:e.cancelLandingView},class:"button is-text"},{default:Ye(()=>[He(Ae(t.$t("commons.cancel")),1)]),_:1},8,["id","to"])])):fe("",!0)])}}},hy={__name:"Kicker",props:{kickAfter:{type:Number,required:!0}},setup(e){const t=e,n=ft(),r=ge(["mousedown","scroll","keypress"]),s=ge(null);ze(()=>t.kickAfter,()=>{o()}),kn(()=>{r.value.forEach(function(c){window.addEventListener(c,o)},this),a()}),ea(()=>{r.value.forEach(function(c){window.removeEventListener(c,o)},this),l()});function a(){s.value=setTimeout(i,t.kickAfter*60*1e3)}function i(){clearTimeout(s.value),n.logout({kicked:!0})}function o(){l(),a()}function l(){clearTimeout(s.value)}return(c,u)=>null}},An=Gm(M1),md={prefix:"2fauth_",config:window.appConfig,version:window.appVersion,isDemoApp:window.isDemoApp,isTestingApp:window.isTestingApp,langs:window.appLocales};An.provide("2fauth",Qn(md));const hd=I1();hd.use(({store:e})=>{e.$2fauth=md});An.use(hd);An.use(qn);An.use(fg,{lang:document.documentElement.lang.substring(0,2),resolve:async e=>{const t=Object.assign({"../lang/php_bg.json":()=>te(()=>import("./php_bg-79a9a6b2.js"),[],import.meta.url),"../lang/php_de.json":()=>te(()=>import("./php_de-edabb7b3.js"),[],import.meta.url),"../lang/php_en.json":()=>te(()=>import("./php_en-65348e5a.js"),[],import.meta.url),"../lang/php_es.json":()=>te(()=>import("./php_es-8bc38a41.js"),[],import.meta.url),"../lang/php_fr.json":()=>te(()=>import("./php_fr-4e3a581d.js"),[],import.meta.url),"../lang/php_hi.json":()=>te(()=>import("./php_hi-631b366e.js"),[],import.meta.url),"../lang/php_id.json":()=>te(()=>import("./php_id-8aeb6da7.js"),[],import.meta.url),"../lang/php_it.json":()=>te(()=>import("./php_it-b90e26fa.js"),[],import.meta.url),"../lang/php_ja.json":()=>te(()=>import("./php_ja-bbda5fec.js"),[],import.meta.url),"../lang/php_ro.json":()=>te(()=>import("./php_ro-43bf93e4.js"),[],import.meta.url),"../lang/php_ru.json":()=>te(()=>import("./php_ru-e41b0033.js"),[],import.meta.url),"../lang/php_si.json":()=>te(()=>import("./php_si-85c4e7b8.js"),[],import.meta.url),"../lang/php_zh.json":()=>te(()=>import("./php_zh-7cc6d490.js"),[],import.meta.url)});if(e.includes("php_"))return await t[`../lang/${e}.json`]()}});An.use(mh);An.component("FontAwesomeIcon",uv).component("ResponsiveWidthWrapper",S4).component("FormWrapper",T4).component("VueFooter",U4).component("Modal",X4).component("VueButton",Z4).component("ButtonBackCloseCancel",n3).component("FieldError",a3).component("FormField",f3).component("FormPasswordField",L3).component("FormSelect",F3).component("FormToggle",ay).component("FormCheckbox",uy).component("FormButtons",my).component("Kicker",hy);An.mount("#app");ft().applyUserPrefs();export{ou as $,eu as A,gy as B,ln as C,aa as D,Se as E,Ne as F,Wi as G,Vm as H,Je as I,mg as J,is as K,Yl as L,Ti as M,Pc as N,er as O,Zn as P,et as Q,Nf as R,yy as S,gg as T,Y3 as U,Ji as V,jm as W,Su as X,wy as Y,$n as Z,Ju as _,ft as a,vy as a0,Ur as a1,rf as a2,by as a3,rr as a4,_4 as a5,At as b,Mf as c,Nt as d,je as e,D as f,G as g,Q as h,se as i,He as j,Be as k,fe as l,pe as m,xe as n,kn as o,Ye as p,xn as q,ge as r,ea as s,Ae as t,v1 as u,ne as v,ti as w,ze as x,up as y,tn as z}; diff --git a/public/build/assets/bus-d94d2521.js b/public/build/assets/bus-ab2b6d74.js similarity index 75% rename from public/build/assets/bus-d94d2521.js rename to public/build/assets/bus-ab2b6d74.js index c9521629..b6b8db3e 100644 --- a/public/build/assets/bus-d94d2521.js +++ b/public/build/assets/bus-ab2b6d74.js @@ -1 +1 @@ -import{a1 as e}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const n=e({id:"bus",state:()=>({migrationUri:null,decodedUri:null,inManagementMode:!1,editedGroupName:null}),actions:{}});export{n as u}; +import{a1 as e}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const n=e({id:"bus",state:()=>({migrationUri:null,decodedUri:null,inManagementMode:!1,editedGroupName:null}),actions:{}});export{n as u}; diff --git a/public/build/assets/php_hi-0477d2c4.js b/public/build/assets/php_hi-0477d2c4.js deleted file mode 100644 index 3a3dc70e..00000000 --- a/public/build/assets/php_hi-0477d2c4.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","auth.failed":"यह परिचय हमारे रिकॉर्ड से मेल नहीं खाता","auth.password":"दिया गया पासवर्ड ग़लत है।","auth.throttle":"बहुत सारे लॉगिन के प्रयास। :seconds सेकंड में फिर से कोशिश करें।","auth.sign_out":"साइन आउट करें","auth.sign_in":"साइन इन करें","auth.sign_in_using":"साइन इन के लिए चाहिए","auth.or_continue_with":"आप ऐसे भी इसे जारी रख सकते हैं:","auth.sign_in_using_security_device":"सुरक्षा उपकरण का उपयोग करके साइन इन करें","auth.login_and_password":"लॉग इन और पासवर्ड","auth.register":"रजिस्टर","auth.welcome_to_2fauth":"2FAuth में आपका स्वागत है","auth.autolock_triggered":"ऑटो लॉक चालू हो गया है","auth.autolock_triggered_punchline":"ऑटो-लॉक ट्रिगर हो गया है और आप लॉग आउट हो गए हैं","auth.already_authenticated":"पहले से ही प्रमाणित है, कृपया पहले लॉग आउट करें","auth.authentication":"प्रमाणीकरण","auth.maybe_later":"शायद बाद में","auth.user_account_controlled_by_proxy":"उपयोगकर्ता का खाता प्रमाणीकरण प्रॉक्सी द्वारा उपलब्ध कराया गया है।
खाते को प्रॉक्सी स्तर पर प्रबंधित करें।","auth.auth_handled_by_proxy":"प्रमाणीकरण को रिवर्स प्रॉक्सी द्वारा नियंत्रित किया गया है, नीचे दी गई सेटिंग्स अक्षम हैं।
प्रॉक्सी स्तर पर प्रमाणीकरण प्रबंधित करें।","auth.confirm.logout":"क्या आप वास्तव में लॉग आउट करना चाहते हैं?","auth.confirm.revoke_device":"क्या आप वास्तव में इस डिवाइस को निरस्त करना चाहते हैं?","auth.confirm.delete_account":"क्या आप वास्तव में अपना अकाउंट डिलीट करना चाहते हैं?","auth.webauthn.security_device":"एक सुरक्षा उपकरण","auth.webauthn.security_devices":"सुरक्षा उपकरण","auth.webauthn.security_devices_legend":"प्रमाणीकरण उपकरण जिनका उपयोग आप 2FAuth में साइन इन करने के लिए कर सकते हैं, जैसे सुरक्षा कुंजी (यानी Yubikey) या बायोमेट्रिक क्षमताओं वाले स्मार्टफोन (यानी Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`आप WebAuthn प्रमाणीकरण सक्षम करके अपने 2FAuth खाते की सुरक्षा बढ़ा सकते हैं।

- WebAuthn आपको जल्दी और अधिक सुरक्षित रूप से साइन इन करने के लिए विश्वसनीय उपकरणों (जैसे Yubikeys या बायोमेट्रिक क्षमताओं वाले स्मार्टफोन) का उपयोग करने की सुविधा देता है।`,"auth.webauthn.use_security_device_to_sign_in":"अपने सुरक्षा उपकरणों में से किसी एक का उपयोग करके प्रमाणित करने के लिए तैयार हो जाइए। अपनी चाबी प्लग इन करें, फेस मास्क या दस्ताने आदि हटा दें।","auth.webauthn.lost_your_device":"क्या आपका उपकरण खो गया?","auth.webauthn.recover_your_account":"अपना खाता पुनः प्राप्त करें","auth.webauthn.account_recovery":"खाता पुनर्प्राप्ति","auth.webauthn.recovery_punchline":"2FAuth आपको इस ईमेल पते पर एक पुनर्प्राप्ति लिंक भेजेगा। प्राप्त ईमेल में लिंक पर क्लिक करें और निर्देशों का पालन करें।

सुनिश्चित करें कि आप ईमेल को उस डिवाइस पर खोलें जो आपकी अपनी है।","auth.webauthn.send_recovery_link":"रिकवरी लिंक भेजें","auth.webauthn.account_recovery_email_sent":"खाता पुनर्प्राप्ति ईमेल भेज दिया गया है!","auth.webauthn.disable_all_security_devices":"सभी सुरक्षा उपकरण अक्षम (डिसेबल) करें","auth.webauthn.disable_all_security_devices_help":"आपके सभी सुरक्षा उपकरण निरस्त कर दिये जायेंगे। यदि आपने कोई खो दिया है या उसकी सुरक्षा से छेड़छाड़ की गई है तो इस विकल्प का उपयोग करें।","auth.webauthn.register_a_new_device":"एक नई डिवाइस रजिस्टर करें","auth.webauthn.register_a_device":"एक डिवाइस रजिस्टर करें","auth.webauthn.device_successfully_registered":"डिवाइस सफलतापूर्वक पंजीकृत हो गई है!","auth.webauthn.device_revoked":"डिवाइस सफलतापूर्वक निरस्त हो गई है!","auth.webauthn.revoking_a_device_is_permanent":"किसी डिवाइस को रद्द करना स्थायी होता है","auth.webauthn.recover_account_instructions":"आपके खाते को पुनर्प्राप्त करने के लिए, 2FAuth कुछ Webauthn सेटिंग्स को रीसेट करता है ताकि आप अपने ईमेल और पासवर्ड का उपयोग करके साइन इन कर सकें।","auth.webauthn.invalid_recovery_token":"अमान्य पुनर्प्राप्ति टोकन","auth.webauthn.webauthn_login_disabled":"Webauthn लॉगिन अक्षम किया गया है","auth.webauthn.invalid_reset_token":"यह रीसेट टोकन अमान्य है","auth.webauthn.rename_device":"डिवाइस का नाम बदलें","auth.webauthn.my_device":"मेरी डिवाइस","auth.webauthn.unknown_device":"अज्ञात डिवाइस","auth.webauthn.use_webauthn_only.label":"केवल WebAuthn का उपयोग करें","auth.webauthn.use_webauthn_only.help":`WebAuthn को अपने 2FAuth खाते में लॉग इन करने का एकमात्र अधिकृत तरीका बनाएं। WebAuthn की बेहतर सुरक्षा का लाभ उठाने के लिए यह अनुशंसित सेटअप है।

- डिवाइस खो जाने की स्थिति में, आप इस विकल्प को रीसेट करके और अपने ईमेल और पासवर्ड का उपयोग करके साइन इन करके अपना खाता पुनर्प्राप्त कर पाएंगे।

- ध्यान रहे! इस विकल्प के सक्षम होने के बावजूद ईमेल और पासवर्ड फॉर्म उपलब्ध रहता है, लेकिन वह हमेशा 'प्रमाणीकरण विफल' प्रतिक्रिया देगा।`,"auth.webauthn.need_a_security_device_to_enable_options":"निम्नलिखित विकल्पों को सक्षम करने के लिए कम से कम एक डिवाइस सेट करें","auth.webauthn.options":"विकल्प","auth.forms.name":"नाम","auth.forms.login":"लॉग इन करें","auth.forms.webauthn_login":"WebAuthn लॉगिन","auth.forms.email":"ईमेल","auth.forms.password":"पासवर्ड","auth.forms.reveal_password":"पासवर्ड प्रकट करें","auth.forms.hide_password":"पासवर्ड छिपाएं","auth.forms.confirm_password":"पासवर्ड की पुष्टि करें","auth.forms.new_password":"नया पासवर्ड","auth.forms.confirm_new_password":"नए पासवर्ड की पुष्टि करें","auth.forms.dont_have_account_yet":"क्या आपके पास अभी तक अकाउंट नहीं है?","auth.forms.already_register":"पहले से ही पंजीकृत?","auth.forms.authentication_failed":"प्रमाणीकरण विफल रहा","auth.forms.forgot_your_password":"पासवर्ड भूल गए हैं?","auth.forms.request_password_reset":"रीसेट कीजिए","auth.forms.reset_your_password":"अपना पासवर्ड रीसेट करें","auth.forms.reset_password":"पासवर्ड रीसेट करें","auth.forms.disabled_in_demo":"डेमो मोड में यह सुविधा अक्षम है","auth.forms.current_password.label":"वर्तमान पासवर्ड","auth.forms.current_password.help":"यह पुष्टि करने के लिए कि यह आप ही हैं, अपना वर्तमान पासवर्ड भरें","auth.forms.change_password":"पासवर्ड बदलें","auth.forms.send_password_reset_link":"पासवर्ड रिसेट करने के लिए लिंक भेजें","auth.forms.password_successfully_reset":"Password successfully reset","auth.forms.edit_account":"खाता एडिट करें","auth.forms.profile_saved":"प्रोफ़ाइल सफलतापूर्वक अपडेट की गई!","auth.forms.welcome_to_demo_app_use_those_credentials":"2FAuth डेमो में आपका स्वागत है।

आप ईमेल पते demo@2fauth.app और पासवर्ड demo का उपयोग करके कनेक्ट कर सकते हैं।","auth.forms.welcome_to_testing_app_use_those_credentials":"2FAuth परीक्षण के उदाहरण में आपका स्वागत है।

ईमेल पता testing@2fauth.app और पासवर्ड password का उपयोग करें","auth.forms.register_punchline":"2FAuth में आपका स्वागत है।
आगे जाने के लिए आपको एक खाते की आवश्यकता है, कृपया स्वयं को पंजीकृत करें।","auth.forms.reset_punchline":"2FAuth आपको इस पते पर एक पासवर्ड रीसेट लिंक भेजेगा। नया पासवर्ड सेट करने के लिए प्राप्त ईमेल में दिए गए लिंक पर क्लिक करें।","auth.forms.name_this_device":"इस डिवाइस का नाम बताएं","auth.forms.delete_account":"अकाउंट डिलीट करें","auth.forms.delete_your_account":"अपना अकाउंट डिलीट करें","auth.forms.delete_your_account_and_reset_all_data":"आपका उपयोगकर्ता खाता और साथ ही आपका सभी 2FA डेटा हटा दिया जाएगा। वहां से वापसी का कोई विकल्प नहीं है।","auth.forms.reset_your_password_to_delete_your_account":"यदि आपने साइन इन करने, साइन आउट करने के लिए हमेशा SSO का उपयोग किया है तो पासवर्ड प्राप्त करने के लिए रीसेट पासवर्ड सुविधा का उपयोग करें ताकि आप यह फॉर्म भर सकें।","auth.forms.deleting_2fauth_account_does_not_impact_provider":"आपके 2FAuth खाते को हटाने से आपके बाहरी SSO खाते पर कोई प्रभाव नहीं पड़ेगा।","auth.forms.user_account_successfully_deleted":"उपयोगकर्ता का खाता सफलतापूर्वक हटा दिया गया है","auth.forms.has_lower_case":"लोअर केस होना चाहिए","auth.forms.has_upper_case":"अपर केस होना चाहिए","auth.forms.has_special_char":"स्पेशल कैरेक्टर होना चाहिए","auth.forms.has_number":"नंबर होना चाहिए","auth.forms.is_long_enough":"कम से कम 8 कैरेक्टर","auth.forms.mandatory_rules":"अनिवार्य","auth.forms.optional_rules_you_should_follow":"अनुशंसित (अत्यधिक)","auth.forms.caps_lock_is_on":"कैप्स लॉक ऑन है","commons.cancel":"रद्द करें","commons.update":"अपडेट करें","commons.copy":"कॉपी करें","commons.copy_to_clipboard":"क्लिपबोर्ड पर कॉपी करें","commons.copied_to_clipboard":"क्लिपबोर्ड पर कॉपी हो गया I","commons.profile":"प्रोफ़ाइल","commons.edit":"संशोधन करें","commons.delete":"डिलीट करें","commons.disable":"निष्क्रिय करें","commons.enable":"सक्रिय करें","commons.create":"बनाएँ","commons.save":"सुरक्षित करें","commons.close":"बंद करें","commons.clear":"साफ़ करें","commons.clear_search":"खोज साफ़ करें","commons.demo_do_not_post_sensitive_data":"यह एक डेमो ऐप है, कोई भी संवेदनशील डेटा पोस्ट न करें","commons.testing_do_not_post_sensitive_data":"यह ऐप परीक्षण के लिए है, कोई भी संवेदनशील डेटा पोस्ट न करें","commons.x_selected":":count चुने गए","commons.name":"नाम","commons.manage":"प्रबंधन करें","commons.done":"समाप्त हुआ","commons.new":"नया","commons.back":"पीछे","commons.move":"खिसकाएँ","commons.export":"निर्यात करें","commons.all":"सब","commons.check_all":"सब","commons.select_all":"सभी चुनें","commons.clear_selection":"चयन मिटाएं","commons.sort_descending":"घटते क्रम में जमाएं","commons.sort_ascending":"बढ़ते क्रम में जमाएं","commons.rename":"नाम बदलें","commons.new_name":"नया नाम","commons.options":"विकल्प","commons.reload":"फिर से लोड करें","commons.refresh":"रिफ्रेश करें","commons.data_refreshed_to_reflect_server_changes":"सर्वर में हुए परिवर्तनों को प्रतिबिंबित करने के लिए डेटा को रिफ्रेश किया गया है","commons.generate":"जनरेट करें","commons.generating_otp":"OTP जेनरैट करें","commons.open_in_browser":"ब्राउज़र में खोलें","commons.continue":"जारी रखें","commons.discard":"ख़ारिज करें","commons.about":"बारे में","commons.usefull_links":"उपयोगी लिंक","commons.environment":"वातावरण","commons.credits":"आभार","commons.2fauth_teaser":"आपके दो-कारक प्रमाणीकरण (2FA) खातों को प्रबंधित करने और उनके सुरक्षा कोड उत्पन्न करने के लिए एक वेब ऐप","commons.made_with":"से बना","commons.ui_icons_by":"UI प्रतीक सौजन्य से","commons.logos_by":"लोगो सौजन्य से","commons.search":"खोजें","commons.resources":"संसाधन","commons.check_for_update":"नए संस्करण के लिए जाँच करें","commons.check_for_update_help":"Github पर 2FAuth की नई रिलीज़ प्रकाशित होने पर स्वचालित रूप से जाँच करें (सप्ताह में एक बार) और चेतावनी दें","commons.you_are_up_to_date":"यह एप अप-टू-डेट है","commons.2fauth_description":"आपके दो-कारक प्रमाणीकरण (2FA) खातों को प्रबंधित करने और उनके सुरक्षा कोड उत्पन्न करने के लिए एक वेब ऐप","commons.image_of_qrcode_to_scan":"स्कैन करने के लिए QR कोड की छवि","commons.file":"फ़ाइल","commons.or":"OR","commons.close_the_x_page":":pagetitle पेज को बंद करें","commons.submit":"जमा करें","commons.default":"पूर्व निर्धारित","commons.back_to_home":"मुख पृष्ठ पर वापस जाएं","commons.nothing":"कुछ नहीं","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","errors.resource_not_found":"संसाधन नहीं मिला","errors.error_occured":"एक त्रुटि उत्पन्न हुई","errors.refresh":"रिफ्रेश करें","errors.no_valid_otp":"इस QR कोड में कोई वैध OTP संसाधन नहीं है","errors.something_wrong_with_server":"आप के सर्वर में कोई गड़बड़ है","errors.Unable_to_decrypt_uri":"URI को डिक्रिप्ट करने में असमर्थ","errors.not_a_supported_otp_type":"OTP का यह प्रारूप इस समय समर्थित नहीं है","errors.cannot_create_otp_without_secret":"बिना रहस्य के OTP नहीं बनाया जा सकता","errors.data_of_qrcode_is_not_valid_URI":"इस QR कोड का डेटा वैध OTP Auth URI नहीं है। QR कोड में शामिल हैं:","errors.wrong_current_password":"गलत वर्तमान पासवर्ड, कुछ भी बदला नहीं गया है","errors.error_during_encryption":"एन्क्रिप्शन विफल, आपका डेटाबेस अभी भी असुरक्षित है।","errors.error_during_decryption":"डिक्रिप्शन विफल, आपका डेटाबेस अभी भी सुरक्षित है। ऐसा मुख्य रूप से एक या अधिक खातों के लिए एन्क्रिप्टेड डेटा की अखंडता की समस्या के कारण होता है।","errors.qrcode_cannot_be_read":"यह QR कोड पढ़ा नहीं जा सकता","errors.too_many_ids":"क्वेरी पैरामीटर में बहुत सारी आईडी शामिल की गईं, अधिकतम 100 की अनुमति है","errors.delete_user_setting_only":"केवल उपयोगकर्ता द्वारा बनाई गई सेटिंग ही मिटाई जा सकती हैं","errors.indecipherable":"*अस्पष्ट*","errors.cannot_decipher_secret":"रहस्य को समझा नहीं जा सकता. यह मुख्य रूप से 2Fauth की .env कॉन्फ़िगरेशन फ़ाइल में गलत APP_KEY सेट या डेटाबेस में संग्रहीत दूषित डेटा के कारण होता है।","errors.https_required":"HTTPS संदर्भ आवश्यक है","errors.browser_does_not_support_webauthn":"आपका डिवाइस webauthn का समर्थन नहीं करता है. बाद में अधिक आधुनिक ब्राउज़र का उपयोग करके पुनः प्रयास करें","errors.aborted_by_user":"उपयोगकर्ता द्वारा निरस्त किया गया।","errors.security_device_already_registered":"डिवाइस पहले से ही पंजीकृत है","errors.not_allowed_operation":"इस संचालन की अनुमति नहीं है","errors.no_authenticator_support_specified_algorithms":"निर्दिष्ट एल्गोरिदम का समर्थन कोई भी प्रमाणक नहीं करता है","errors.authenticator_missing_discoverable_credential_support":"प्रमाणक के पास खोजने योग्य क्रेडेंशियल का समर्थन नहीं है","errors.authenticator_missing_user_verification_support":"प्रमाणक के पास उपयोगकर्ता के सत्यापन का समर्थन नहीं है","errors.unknown_error":"अज्ञात त्रुटि","errors.security_error_check_rpid":"सुरक्षा त्रुटि
अपने WEBAUTHN_ID env var की जाँच करें","errors.2fauth_has_not_a_valid_domain":"2FAuth का डोमेन वैध डोमेन नहीं है","errors.user_id_not_between_1_64":"उपयोगकर्ता आईडी 1 से 64 वर्णों के बीच नहीं थी","errors.no_entry_was_of_type_public_key":'कोई भी प्रविष्टि "public-key" प्रकार की नहीं थी',"errors.unsupported_with_reverseproxy":"ऑथ प्रॉक्सी का उपयोग करते समय लागू नहीं होता है","errors.user_deletion_failed":"उपयोगकर्ता के कहते को हटाना विफल रहा, कोई डेटा हटाया नहीं गया है","errors.auth_proxy_failed":"Proxy प्रमाणीकरण विफल रहा","errors.auth_proxy_failed_legend":"2Fauth को प्रमाणीकरण प्रॉक्सी के पीछे चलाने के लिए कॉन्फ़िगर किया गया है लेकिन आपकी प्रॉक्सी अपेक्षित हेडर वापस नहीं करती है। अपना कॉन्फ़िगरेशन जांचें और पुनः प्रयास करें।","errors.invalid_x_migration":"अमान्य या अपठनीय :appname डेटा","errors.invalid_2fa_data":"अमान्य 2FA डेटा","errors.unsupported_migration":"डेटा किसी भी समर्थित प्रारूप से मेल नहीं खाता","errors.unsupported_otp_type":"ओटीपी का प्रकार असमर्थित","errors.encrypted_migration":"अपठनीय, डेटा एन्क्रिप्टेड लगता है","errors.no_logo_found_for_x":":service के लिए कोई लोगो उपलब्ध नहीं है","errors.file_upload_failed":"फाइल अपलोड असफल रहा","errors.unauthorized":"अनधिकृत","errors.unauthorized_legend":"आपको इस संसाधन को देखने या यह क्रिया करने की अनुमति नहीं है","errors.cannot_delete_the_only_admin":"एकमात्र व्यवस्थापक खाता हटाया नहीं जा सकता","errors.error_during_data_fetching":"💀डेटा लाने में कुछ गलत हो गया","errors.check_failed_try_later":"खोज विफल रही, कृपया बाद में पुनर्प्रयास करें!","errors.sso_disabled":"SSO निष्क्रिय है","errors.sso_bad_provider_setup":"यह SSO प्रदाता आपकी .env फ़ाइल में पूरी तरह से सेटअप नहीं है","errors.sso_failed":"SSO के माध्यम से प्रमाणीकरण अस्वीकृत","errors.sso_no_register":"पंजीकरण निष्क्रिय हैं","errors.sso_email_already_used":"समान ईमेल पते वाला एक उपयोगकर्ता खाता पहले से मौजूद है लेकिन यह आपकी बाहरी खाता आईडी से मेल नहीं खाता है। यदि आप पहले से ही इस ईमेल के साथ 2FAuth पर पंजीकृत हैं तो SSO का उपयोग न करें।","errors.account_managed_by_external_provider":"खाता किसी बाहरी प्रदाता द्वारा प्रबंधित किया गया है","errors.data_cannot_be_refreshed_from_server":"सर्वर से डेटा रिफ्रेश नहीं किया जा सकता","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","groups.groups":"ग्रुप्स","groups.create_group":"नया ग्रुप बनाएँ","groups.show_group_selector":"ग्रुप सेलेक्टर दिखाएँ","groups.hide_group_selector":"ग्रुप सेलेक्टर छुपायें","groups.select_accounts_to_show":"दिखाने के लिए अकाउंट ग्रुप चुनें","groups.x_accounts":":count अकाउंट","groups.manage_groups":"ग्रुप्स प्रबंधित करें","groups.active_group":"एक्टिव ग्रुप","groups.manage_groups_legend":"आप अपने खातों को अपनी इच्छानुसार व्यवस्थित करने के लिए समूह बना सकते हैं। सभी खाते 'ऑल' नाम के सूडो ग्रुप में दृश्यमान रहते हैं, भले ही वे किसी भी समूह से संबंधित हों।","groups.deleting_group_does_not_delete_accounts":"किसी समूह को हटाने से खाते नहीं हटते हैं","groups.move_selected_to":"चयन को स्थानांतरित करें","groups.move_selected_to_group":"चयन को ग्रुप में स्थानांतरित करें","groups.no_group":"कोई ग्रुप नहीं","groups.change_group":"ग्रुप बदलें","groups.group_successfully_created":"ग्रुप सफलतापूर्वक बनाया गया","groups.group_name_saved":"ग्रुप का नाम सुरक्षित किया","groups.group_successfully_deleted":"ग्रुप सफलतापूर्वक डिलीट किया गया","groups.forms.new_group":"नया ग्रुप","groups.forms.new_name":"नया नाम","groups.forms.rename_group":"ग्रुप का नाम बदलें","groups.confirm.delete":"क्या आप वास्तव में इस ग्रुप को मिटाना चाहते हैं?","languages.browser_preference":"ब्राउज़र की प्राथमिकता","languages.en":"English (इंग्लिश)","languages.fr":"Français (फ्रेंच)","languages.de":"Deutsch (जर्मन)","languages.es":"Español (स्पैनिश)","languages.zh":"简体中文 (सामान्य चीनी)","languages.ru":"Русский (रशिअन)","languages.bg":"Български (बुल्गेरियन)","languages.ja":"日本語 (जापानी)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","pagination.previous":"« पिछला","pagination.next":"अगला »","passwords.reset":"आपका पासवर्ड रिसेट कर दिया गया है!","passwords.sent":"हमने आपका पासवर्ड रीसेट लिंक ईमेल कर दिया है!","passwords.throttled":"कृपया फिर से कोशिश करने से पहले प्रतीक्षा करें।","passwords.token":"इस पासवर्ड को बदलने का टोकन अमान्य है।","passwords.user":"हम इस ईमेल पते वाले उपयोगकर्ता को नहीं ढूंढ पाए।","passwords.password":"पासवर्ड कम से कम आठ अक्षर का होना चाहिए और पुष्टिकरण से मेल खाना चाहिए।","settings.settings":"सेटिंग्स","settings.preferences":"प्राथमिकताएं","settings.account":"अकाउंट","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"टोकन","settings.options":"विकल्प","settings.user_preferences":"उपयोगकर्ता की प्राथमिकताएं","settings.admin_settings":"ऐड्मिन की सेटिंग","settings.confirm.revoke":"क्या आप वास्तव में इस टोकन को निरस्त करना चाहते हैं?","settings.you_are_administrator":"आप एक व्यवस्थापक (ऐड्मिन) हैं","settings.account_linked_to_sso_x_provider":"आपने अपने :provider खाते का उपयोग करके SSO के माध्यम से साइन-इन किया है। आपकी जानकारी यहां :provider के अलावा नहीं बदली जा सकती।","settings.general":"सामान्य","settings.security":"सुरक्षा","settings.profile":"प्रोफ़ाइल","settings.change_password":"पासवर्ड बदलें","settings.personal_access_tokens":"प्रवेश के व्यक्तिगत टोकन","settings.token_legend":"व्यक्तिगत एक्सेस टोकन किसी भी ऐप को 2Fauth API को प्रमाणित करने की अनुमति देते हैं। आपको उपभोक्ता ऐप के अनुरोधों के प्राधिकरण हेडर में एक्सेस टोकन को बियरर टोकन के रूप में निर्दिष्ट करना चाहिए।","settings.generate_new_token":"एक नया टोकन बनाएं","settings.revoke":"वापस लें","settings.token_revoked":"टोकन सफलतापूर्वक निरस्त हो गया है","settings.revoking_a_token_is_permanent":"टोकन का निरस्त्रीकरण स्थायी होता है","settings.make_sure_copy_token":"अपने नए व्यक्तिगत एक्सेस टोकन को अभी कॉपी करना सुनिश्चित करें। आप इसे दोबारा नहीं देख पाएंगे!","settings.data_input":"डेटा इनपुट","settings.forms.edit_settings":"सेटिंग्स बदलें","settings.forms.setting_saved":"सेटिंग्स सेव हो गयी","settings.forms.new_token":"नया टोकन","settings.forms.some_translation_are_missing":"ब्राउज़र की पसंदीदा भाषा का उपयोग करते हुए क्या कुछ अनुवाद गायब हैं?","settings.forms.help_translate_2fauth":"2FAuth का अनुवाद करने में सहायता करें","settings.forms.language.label":"भाषा ","settings.forms.language.help":"2FAuth उपयोगकर्ता इंटरफ़ेस का अनुवाद करने के लिए उपयोग की जाने वाली भाषा। नामित भाषाएँ पूर्ण हैं, अपनी ब्राउज़र प्राथमिकता को ओवरराइड करने के लिए अपनी पसंद में से एक भाषा को चुनें।","settings.forms.show_otp_as_dot.label":'जनरेट किए गए OTP को डॉट के रूप में दिखाएं',"settings.forms.show_otp_as_dot.help":"गोपनीयता सुनिश्चित करने के लिए जनरेट किए गए पासवर्ड वर्णों को *** से बदलें। कॉपी/पेस्ट सुविधा को प्रभावित न करें","settings.forms.reveal_dotted_otp.label":'अस्पष्ट OTP को प्रकट करें',"settings.forms.reveal_dotted_otp.help":"डॉट-ऑब्स्क्योर्ड पासवर्ड को अस्थायी रूप से प्रकट करने की क्षमता दें","settings.forms.close_otp_on_copy.label":'कॉपी करने के बाद OTP बंद करें',"settings.forms.close_otp_on_copy.help":"जेनरेट किए गए पासवर्ड को कॉपी करने के लिए उस पर क्लिक करने से वह स्वचालित रूप से स्क्रीन से छिप जाता है","settings.forms.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","settings.forms.copy_otp_on_display.label":'डिस्प्ले पर OTP कॉपी करें',"settings.forms.copy_otp_on_display.help":'जनरेट किया गया पासवर्ड स्क्रीन पर दिखाई देने के तुरंत बाद स्वचालित रूप से कॉपी हो जाता है। ब्राउज़र की सीमाओं के कारण, बदलने वाले पासवर्ड नहीं, केवल पहला TOTP पासवर्ड कॉपी किया जाएगा',"settings.forms.use_basic_qrcode_reader.label":"बेसिक QR कोड रीडर का उपयोग करें","settings.forms.use_basic_qrcode_reader.help":"यदि आप QR कोड कैप्चर करते समय समस्याओं का अनुभव करते हैं तो यह विकल्प अधिक बुनियादी लेकिन अधिक विश्वसनीय QR कोड रीडर पर स्विच करने में सक्षम बनाता है","settings.forms.display_mode.label":"डिस्प्ले मोड","settings.forms.display_mode.help":"चुनें कि आप खातों को सूची के रूप में प्रदर्शित करना चाहते हैं या ग्रिड के रूप में","settings.forms.password_format.label":"पासवर्ड फ़ॉर्मेटिंग","settings.forms.password_format.help":"पठनीयता और याद रखने में आसानी के लिए अंकों को समूहीकृत करके पासवर्ड प्रदर्शित करने का तरीका बदलें","settings.forms.pair":"जोड़े से","settings.forms.pair_legend":"अंकों को दो बटा दो समूहित करें","settings.forms.trio_legend":"अंकों को तीन बटा तीन समूहित करें","settings.forms.half_legend":"अंकों को दो बराबर समूहों में विभाजित करें","settings.forms.trio":"तिकड़ी से","settings.forms.half":"आधे में","settings.forms.grid":"ग्रिड","settings.forms.list":"सूची","settings.forms.theme.label":"थीम","settings.forms.theme.help":"किसी विशिष्ट थीम को बाध्य करें या अपने सिस्टम/ब्राउज़र प्राथमिकताओं में परिभाषित थीम को लागू करें","settings.forms.light":"हल्का रंग","settings.forms.dark":"गहरा रंग","settings.forms.automatic":"ऑटो","settings.forms.show_accounts_icons.label":"आइकन दिखाएं","settings.forms.show_accounts_icons.help":"मुख्य दृश्य में आइकान के अकाउंट दिखाएँ","settings.forms.get_official_icons.label":"आधिकारिक आइकान प्राप्त करें","settings.forms.get_official_icons.help":"खाता जोड़ते समय 2FA जारीकर्ता का आधिकारिक आइकन प्राप्त करें (कोशिश करें)","settings.forms.auto_lock.label":"ऑटो-लॉक","settings.forms.auto_lock.help":"निष्क्रियता की स्थिति में उपयोगकर्ता को स्वचालित रूप से लॉग आउट करें। जब प्रमाणीकरण को प्रॉक्सी द्वारा नियंत्रित किया जाता है और कोई कस्टम लॉगआउट URL निर्दिष्ट नहीं किया जाता है तो इसका कोई प्रभाव नहीं पड़ता है।","settings.forms.default_group.label":"डिफ़ॉल्ट ग्रुप","settings.forms.default_group.help":"वह समूह जिससे नव निर्मित अकाउंट जुड़े हैं","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","settings.forms.useDirectCapture.label":"सीधे दर्ज करें","settings.forms.useDirectCapture.help":"चुनें कि क्या आप उपलब्ध इनपुट मोड में से एक इनपुट मोड चुनने की सुविधा चाहते हैं या आप सीधे डिफ़ॉल्ट इनपुट मोड का उपयोग करना चाहते हैं","settings.forms.defaultCaptureMode.label":"डिफ़ॉल्ट इनपुट मोड","settings.forms.defaultCaptureMode.help":"डायरेक्ट इनपुट विकल्प चालू होने पर डिफ़ॉल्ट इनपुट मोड का उपयोग किया जाता है","settings.forms.remember_active_group.label":"ग्रुप फ़िल्टर याद रखें","settings.forms.remember_active_group.help":"लागू किए गए अंतिम ग्रुप फ़िल्टर को सहेजें और अगली बार इसे पुनर्स्थापित करें","settings.forms.otp_generation.label":"पासवर्ड दिखाएँ","settings.forms.otp_generation.help":'सेट करें कि OTP कैसे और कब प्रदर्शित हों।
',"settings.forms.otp_generation_on_request":"क्लिक / टैप के बाद","settings.forms.otp_generation_on_request_legend":"अपने दृश्य में अकेला","settings.forms.otp_generation_on_request_title":"पासवर्ड को अलग दृश्य में प्राप्त करने के लिए किसी खाते पर क्लिक करें","settings.forms.otp_generation_on_home":"लगातार","settings.forms.otp_generation_on_home_legend":"वे सभी, होम पर","settings.forms.otp_generation_on_home_title":"बिना कुछ किए सभी पासवर्ड मुख्य दृश्य में दिखाएं","settings.forms.never":"कभी नहीं","settings.forms.on_otp_copy":"सुरक्षा कोड कॉपी होने पर","settings.forms.1_minutes":"१ मिनट बाद","settings.forms.5_minutes":"५ मिनट बाद","settings.forms.10_minutes":"10 मिनट बाद","settings.forms.15_minutes":"15 मिनट बाद","settings.forms.30_minutes":"30 मिनट बाद","settings.forms.1_hour":"1 घंटे बाद","settings.forms.1_day":"1 दिन के बाद","settings.forms.livescan":"QR कोड का लाइव स्कैन","settings.forms.upload":"QR कोड का अप-लोड","settings.forms.advanced_form":"उन्नत फॉर्म","titles.404":"आइटम नहीं मिला","titles.start":"नया अकाउंट","titles.capture":"फ्लैश QR","titles.accounts":"अकाउंट","titles.createAccount":"अकाउंट (खाता) बनाएं","titles.importAccounts":"एकाउॅटस आयात करें","titles.editAccount":"अकाउंट में परिवर्तन करें","titles.showQRcode":"QR कोड की तरह अकाउंट","titles.groups":"ग्रुप्स","titles.createGroup":"ग्रूप बनाएं","titles.editGroup":"ग्रुप में परिवर्तन करें","titles.settings.options":"विकल्प","titles.settings.account":"उपयोगकर्ता अकाउंट","titles.settings.oauth.tokens":"OAuth टोकन","titles.settings.oauth.generatePAT":"नया व्यक्तिगत टोकन","titles.settings.webauthn.editCredential":"डिवाइस में परिवर्तन","titles.settings.webauthn.devices":"WebAuthn की डिवाइस","titles.login":"लॉग इन करें","titles.register":"रजिस्टर करें","titles.autolock":"ऑटो-लॉक","titles.password.request":"पासवर्ड रीसेट करें","titles.password.reset":"नया पासवर्ड","titles.webauthn.lost":"अकाउंट पुनर्प्राप्ति","titles.webauthn.recover":"एक नई डिवाइस रजिस्टर करें","titles.flooded":"बाढ़","titles.genericError":"त्रुटि","titles.about":"बारे में","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"सर्विस","twofaccounts.account":"अकाउंट","twofaccounts.icon":"आइकॉन","twofaccounts.icon_for_account_x_at_service_y":":account खाते का आइकान :service पर","twofaccounts.icon_to_illustrate_the_account":"वह आइकान जो खाते को दर्शाता है","twofaccounts.remove_icon":"आइकन हटाएं","twofaccounts.no_account_here":"यहाँ 2FA नहीं है","twofaccounts.add_first_account":"एक विधि चुनें और अपना पहला अकाउंट जोड़ें","twofaccounts.use_full_form":"या पूरा फॉर्म उपयोग करें","twofaccounts.add_one":"एक जोड़ें","twofaccounts.show_qrcode":"QR कोड दिखाएं","twofaccounts.no_service":"- कोई सर्विस नहीं -","twofaccounts.account_created":"अकाउंट सफलतापूर्वक बना दिया गया है","twofaccounts.account_updated":"अकाउंट सफलतापूर्वक अपडेट कर दिया गया है","twofaccounts.accounts_deleted":"अकाउंट सफलतापूर्वक मिटा दिया गया है","twofaccounts.accounts_moved":"अकाउंट सफलतापूर्वक स्थानांतरित कर दिया गया है","twofaccounts.export_selected_to_json":"चयनित खातों का json निर्यात डाउनलोड करें","twofaccounts.reveal":"प्रकट करें","twofaccounts.forms.service.placeholder":"गूगल, ट्विटर, एप्पल","twofaccounts.forms.account.placeholder":"जॉन डो","twofaccounts.forms.new_account":"नया अकाउंट","twofaccounts.forms.edit_account":"खाता एडिट करें","twofaccounts.forms.otp_uri":"OTP का URI","twofaccounts.forms.scan_qrcode":"एक QR कोड स्कैन करें","twofaccounts.forms.upload_qrcode":"एक QR कोड अपलोड करें","twofaccounts.forms.use_advanced_form":"उन्नत फॉर्म का उपयोग करें","twofaccounts.forms.prefill_using_qrcode":"QR कोड का उपयोग कर के पहले से भरें","twofaccounts.forms.use_qrcode.val":"एक QR कोड का उपयोग करें","twofaccounts.forms.use_qrcode.title":"जादू से फॉर्म भरने के लिए एक QR कोड का उपयोग करें","twofaccounts.forms.unlock.val":"अनलॉक","twofaccounts.forms.unlock.title":"इसे अनलॉक करें (अपने जोखिम पर)","twofaccounts.forms.lock.val":"लॉक करें","twofaccounts.forms.lock.title":"लॉक करें","twofaccounts.forms.choose_image":"अपलोड","twofaccounts.forms.i_m_lucky":"अपनी किस्मत आज़माएं","twofaccounts.forms.i_m_lucky_legend":'"अपनी किस्मत आज़माएं" बटन द्वारा दी गई सेवा का आधिकारिक आइकन प्राप्त करने का प्रयास करें। ".xyz" एक्सटेंशन के बिना वास्तविक सेवा का नाम दर्ज करें और टाइपो से बचने का प्रयास करें। (बीटा सुविधा)',"twofaccounts.forms.test":"जाँच","twofaccounts.forms.secret.label":"रहस्य","twofaccounts.forms.secret.help":"आपके सुरक्षा कोड बनाने की कुंजी","twofaccounts.forms.plain_text":"साधारण टेक्स्ट","twofaccounts.forms.otp_type.label":'बनाने के लिए OTP का प्रकार चुनें',"twofaccounts.forms.otp_type.help":"समय-आधारित OTP या HMAC-आधारित OTP या स्टीम OTP","twofaccounts.forms.digits.label":"अंक","twofaccounts.forms.digits.help":"उत्पन्न सुरक्षा कोड के अंकों की संख्या","twofaccounts.forms.algorithm.label":"अलगोरिथ्म","twofaccounts.forms.algorithm.help":"आपके सुरक्षा कोड को सुरक्षित करने की अलगोरिथ्म","twofaccounts.forms.period.label":"अवधि","twofaccounts.forms.period.placeholder":"डिफ़ॉल्ट 30 है","twofaccounts.forms.period.help":"उत्पन्न सुरक्षा कोड की वैधता की अवधि सेकंड में","twofaccounts.forms.counter.label":"काउन्टर","twofaccounts.forms.counter.placeholder":"डिफ़ॉल्ट 0 है","twofaccounts.forms.counter.help":"काउंटर का प्रारंभिक मान","twofaccounts.forms.counter.help_lock":"काउंटर को संपादित करना जोखिम भरा है क्योंकि आप सेवा के सत्यापन करने वाले सर्वर के साथ खाते को डीसिंक्रोनाइज़ कर सकते हैं। संशोधन सक्रिय करने के लिए लॉक आइकन का उपयोग करें, लेकिन केवल तभी जब आप जानते हों कि आप क्या कर रहे हैं","twofaccounts.forms.image.label":"चित्र","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"खाता आइकन के रूप में उपयोग करने के लिए बाहरी छवि का URL","twofaccounts.forms.options_help":"यदि आप नहीं जानते कि उन्हें कैसे सेट किया जाए तो आप निम्नलिखित विकल्पों को खाली छोड़ सकते हैं। सबसे अधिक उपयोग किए जाने वाले मान लागू किए जाएंगे।","twofaccounts.forms.alternative_methods":"वैकल्पिक विधियाँ","twofaccounts.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","twofaccounts.stream.live_scan_cant_start":"लाइव स्कैन शुरू नहीं किया जा सकता :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth को आप का कैमरा उपयोग करने की अनुमति नहीं है","twofaccounts.stream.need_grant_permission.solution":"आपको अपने डिवाइस के कैमरे का उपयोग करने की अनुमति देनी होगी। यदि आपने पहले ही इनकार कर दिया है और आपका ब्राउज़र आपको दोबारा संकेत नहीं देता है, तो कृपया अनुमति देने का तरीका जानने के लिए ब्राउज़र के दस्तावेज़ देखें।","twofaccounts.stream.need_grant_permission.click_camera_icon":"यह आमतौर पर ब्राउज़र के एड्रेस बार में या उसके बगल में कटे हुए कैमरा आइकन पर क्लिक करके किया जाता है","twofaccounts.stream.not_readable.reason":"स्कैनर लोड करने में विफल","twofaccounts.stream.not_readable.solution":"क्या कैमरा पहले से ही उपयोग में है? सुनिश्चित करें कि कोई अन्य ऐप आपके कैमरे का उपयोग न करे और पुनः प्रयास करें","twofaccounts.stream.no_cam_on_device.reason":"इस डिवाइस में कैमरा नहीं है","twofaccounts.stream.no_cam_on_device.solution":"आप शायद अपना वेबकैम लगाना भूल रहे हैं","twofaccounts.stream.secured_context_required.reason":"सुरक्षित संदर्भ आवश्यक है","twofaccounts.stream.secured_context_required.solution":"लाइव स्कैन के लिए HTTPS आवश्यक है। यदि आप अपने कंप्यूटर से 2FAuth चलाते हैं, तो localhost के अलावा वर्चुअल होस्ट का उपयोग न करें","twofaccounts.stream.https_required":"कैमरा स्ट्रीमिंग के लिए HTTPS आवश्यक है","twofaccounts.stream.camera_not_suitable.reason":"स्थापित कैमरे उपयुक्त नहीं हैं","twofaccounts.stream.camera_not_suitable.solution":"कृपया दूसरी डिवाइस / कैमरा उपयोग करें","twofaccounts.stream.stream_api_not_supported.reason":"इस ब्राउज़र में स्ट्रीम API समर्थित नहीं है","twofaccounts.stream.stream_api_not_supported.solution":"आप को एक आधुनिक ब्राउजर का उपयोग करना चाहिए","twofaccounts.confirm.delete":"क्या आप वास्तव में यह अकाउंट डिलीट करना चाहते हैं?","twofaccounts.confirm.cancel":"परिवर्तन खो जायेंगे। क्या आपको यकीन है?","twofaccounts.confirm.discard":"क्या आप वास्तव में इस अकाउंट को हटाना चाहते हैं?","twofaccounts.confirm.discard_all":"क्या आप वास्तव में सभी अकाउंट को हटाना चाहते हैं?","twofaccounts.confirm.discard_duplicates":"क्या आप वास्तव में सभी डूप्लिकेट को हटाना चाहते हैं?","twofaccounts.import.import":"आयात","twofaccounts.import.to_import":"आयात","twofaccounts.import.import_legend":"2FAuth विभिन्न 2FA ऐप्स से डेटा आयात कर सकता है।","twofaccounts.import.import_legend_afterpart":"QR कोड या JSON फ़ाइल जैसे माइग्रेशन संसाधन प्राप्त करने के लिए इन ऐप्स की निर्यात करने की सुविधा का उपयोग करें और फिर उसे यहां अपलोड करें।","twofaccounts.import.upload":"अपलोड","twofaccounts.import.scan":"स्कैन करें","twofaccounts.import.supported_formats_for_qrcode_upload":"स्वीकृत: jpg, jpeg, png, bmp, gif, svg, या webp","twofaccounts.import.supported_formats_for_file_upload":"स्वीकृत: Plain text, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"समर्थित माइग्रेशन फॉर्मैट","twofaccounts.import.qr_code":"QR कोड","twofaccounts.import.text_file":"टेक्स्ट फ़ाईल","twofaccounts.import.direct_input":"Direct input","twofaccounts.import.plain_text":"साधारण टेक्स्ट","twofaccounts.import.parsing_data":"डेटा पार्स किया जा रहा है...","twofaccounts.import.issuer":"ज़ारीकर्ता","twofaccounts.import.imported":"आयात","twofaccounts.import.failure":"विफलता","twofaccounts.import.x_valid_accounts_found":":count वैध अकाउंट पाए गए","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"माइग्रेशन संसाधन में निम्नलिखित 2FA खाते पाए गए। अभी तक उनमें से किसी को भी 2FAuth में नहीं जोड़ा गया है।","twofaccounts.import.use_buttons_to_save_or_discard":"उन्हें अपने 2FA संग्रह में स्थायी रूप से सहेजने या त्यागने के लिए उपलब्ध बटनों का उपयोग करें।","twofaccounts.import.import_all":"सभी आयात करें","twofaccounts.import.import_this_account":"इस अकाउंट को आयात करें","twofaccounts.import.discard_all":"सभी को खारिज करें","twofaccounts.import.discard_duplicates":"डुप्लिकेट त्यागें","twofaccounts.import.discard_this_account":"इस अकाउंट को खारिज करें","twofaccounts.import.generate_a_test_password":"परीक्षण के लिए एक पासवर्ड बनाएं","twofaccounts.import.possible_duplicate":"बिल्कुल समान डेटा वाला एक खाता पहले से मौजूद है","twofaccounts.import.invalid_account":"- अवैध अकाउंट -","twofaccounts.import.invalid_service":"- अवैध सर्विस -","twofaccounts.import.do_not_set_password_or_encryption":"जब आप 2FA ऐप से डेटा निर्यात करते हैं तो पासवर्ड सुरक्षा या एन्क्रिप्शन सक्रिय न करें अन्यथा 2FAuth उन्हें समझने में सक्षम नहीं होगा।","validation.accepted":":attribute को स्वीकार करना होगा।","validation.accepted_if":"जब :other :value हो तो :attribute को स्वीकार करना होगा।","validation.active_url":":attribute एक वैध URL नहीं है","validation.after":":attribute :date के बाद की तारीख होनी चाहिए।","validation.after_or_equal":":attribute :date के बाद की या उस के बराबर की तारीख होनी चाहिए।","validation.alpha":":attribute में केवल अक्षर होने चाहिए","validation.alpha_dash":":attribute में केवल अक्षर, संख्याएँ, डैश और अंडरस्कोर होने चाहिए।","validation.alpha_num":":attribute में केवल अक्षर और संख्याएँ होने चाहिए।","validation.array":":attribute एक सरणी होनी चाहिए।","validation.before":":attribute :date के पहले की तारीख होनी चाहिए।","validation.before_or_equal":":attribute :date के पहले की या बराबर की तारीख होनी चाहिए।","validation.between.array":":attibute :min और :max आइटम के बीच होनी चाहिए।","validation.between.file":":attibute :min और :max किलोबाइट्स के बीच होनी चाहिए।","validation.between.numeric":":attibute :min और :max के बीच होनी चाहिए।","validation.between.string":":attibute :min और :max अक्षरों के बीच होनी चाहिए।","validation.boolean":":attribute फ़ील्ड सही या गलत होनी चाहिए।","validation.confirmed":":attribute पुष्टिकरण मेल नहीं खाता।","validation.current_password":"पासवर्ड गलत है।","validation.date":":attribute एक वैध तारीख नहीं है","validation.date_equals":":attribute :date के बराबर तारीख होनी चाहिए","validation.date_format":":attribute :format प्रारूप से मेल नहीं खाती।","validation.declined":":attribute को अस्वीकार किया जाना चाहिए।","validation.declined_if":"जब :other :value हो तो :attribute को अस्वीकार किया जाना चाहिए।","validation.different":":attribute और :other भिन्न होने चाहिए।","validation.digits":":attribute :digits अंकों का होना चाहिए।","validation.digits_between":":attibute :min और :max अंकों के बीच होना चाहिए।","validation.dimensions":":attribute के छवि आयाम मान्य नहीं हैं।","validation.distinct":":attribute फील्ड में डुप्लिकेट मान है।","validation.doesnt_end_with":":attribute निम्नलिखित में से किसी एक के साथ समाप्त नहीं हो सकता: :मान।","validation.doesnt_start_with":":attribute निम्नलिखित में से किसी एक के साथ शुरू नहीं हो सकता: :values।","validation.email":":attribute एक वैध ईमेल अड्रेस होना चाहिए।","validation.ends_with":":attribute निम्नलिखित में से किसी एक के साथ समाप्त होना चाहिए: :values।","validation.enum":"चुना गया :attribute वैध नहीं है।","validation.exists":"चुना गया :attribute वैध नहीं है।","validation.file":":attribute एक फ़ाइल होनी चाहिए।","validation.filled":":attribute के स्थान में एक मान होना चाहिए।","validation.gt.array":":attribute में :value से अधिक चीजें होनी चाहिए।","validation.gt.file":":attribute :value किलोबाइट से बड़ा होना चाहिए।","validation.gt.numeric":":attribute :value से बड़ा होना चाहिए।","validation.gt.string":":attribute :value अक्षरों से बड़ा होना चाहिए।","validation.gte.array":":attribute में :value या उससे अधिक चीजें होनी चाहिए।","validation.gte.file":":attribute :value किलोबाइट से बड़ा या बराबर होना चाहिए।","validation.gte.numeric":":attribute :value से बड़ा या बराबर होना चाहिए।","validation.gte.string":":attribute :value अक्षरों से बड़ा या बराबर होना चाहिए।","validation.image":":attribute एक छवि होनी चाहिए।","validation.in":"चुना गया :attribute वैध नहीं है।","validation.in_array":":attribute फील्ड, :other में मौजूद नहीं है।","validation.integer":":attribute एक पूर्णांक(integer) होना चाहिए।","validation.ip":":attribute एक मान्य IP पता होना चाहिए।","validation.ipv4":":attribute एक मान्य IPv4 पता होना चाहिए।","validation.ipv6":":attribute एक मान्य IPv6 पता होना चाहिए।","validation.json":":attribute एक मान्य JSON स्ट्रिंग होना चाहिए।","validation.lt.array":":attribute में :value से कम चीजें होनी चाहिए।","validation.lt.file":":attribute :value किलोबाइट से कम होना चाहिए।","validation.lt.numeric":":attribute :value से कम होना चाहिए।","validation.lt.string":":attribute :value अक्षरों से कम होना चाहिए।","validation.lte.array":":attribute में :value से अधिक चीजें नहीं होनी चाहिए।","validation.lte.file":":attribute :value किलोबाइट से कम या बराबर होना चाहिए।","validation.lte.numeric":":attribute :value से कम या बराबर होना चाहिए।","validation.lte.string":":attribute :value अक्षरों से कम या बराबर होना चाहिए।","validation.mac_address":":attribute एक मान्य MAC पता होना चाहिए।","validation.max.array":":attribute में :max से ज्यादा चीजें नहीं हो सकती हैं।","validation.max.file":":attribute :max किलोबाइट से बड़ा नहीं हो सकता है।","validation.max.numeric":":attribute :max से बड़ा नहीं होना चाहिए।","validation.max.string":":attribute :max अक्षरों से बड़ा नहीं हो सकता है।","validation.max_digits":":attribute में :max से ज्यादा अंक नहीं हो सकते हैं।","validation.mimes":":attribute :values टाइप की फाइल होनी चाहिए।","validation.mimetypes":":attribute :values टाइप की फाइल होनी चाहिए।","validation.min.array":":attribute में कम से कम :min चीजें होनी चाहिए।","validation.min.file":":attribute कम से कम :min किलोबाइट का होना चाहिए।","validation.min.numeric":":attribute कम से कम :min होना चाहिए।","validation.min.string":":attribute में कम से कम :min अक्षर होने चाहिए।","validation.min_digits":":attribute में कम से कम :min अंक होने चाहिए।","validation.multiple_of":":attribute :values का मल्टिपल होना चाहिए।","validation.not_in":"चुना गया :attribute वैध नहीं है।","validation.not_regex":":attribute फॉर्मेट अमान्य है।","validation.numeric":":attribute एक संख्या होनी चाहिए।","validation.password.letters":":attribute में कम से कम एक अक्षर होना चाहिए।","validation.password.mixed":":attribute में कम से कम एक uppercase और एक lowecase अक्षर होना चाहिए।","validation.password.numbers":":attribute में कम से कम एक अंक होना चाहिए।","validation.password.symbols":":attribute में कम से कम एक सिम्बल होना चाहिए।","validation.password.uncompromised":":attribute एक डेटा लीक में पाया गया है। कृपया एक दूसरा :attribute चुनें।","validation.present":":attribute फील्ड मौजूद होना चाहिए।","validation.prohibited":":attribute फील्ड निषिद्ध है।","validation.prohibited_if":"जब :other :value हो तो :attribute फील्ड निषिद्ध है।","validation.prohibited_unless":"यदि :other :values में न हो तो :attribute फील्ड निषिद्ध है।","validation.prohibits":":attribute फील्ड :other के प्रस्तुत होने को निषेध करता है।","validation.regex":":attribute का फॉर्मैट अवैध है।","validation.required":":attribute फील्ड की आवश्यकता है।","validation.required_array_keys":":attribute फील्ड में :values की प्रविष्टियाँ होनी चाहिए।","validation.required_if":"जब :other :value हो तो :attribute फील्ड आवश्यक है।","validation.required_if_accepted":"जब :other मान्य हो तो :attribute फील्ड आवश्यक है।","validation.required_unless":"यदि :other :values में न हो तो :attribute फील्ड आवश्यक है।","validation.required_with":"जब :values प्रस्तुत हो तो :attribute फील्ड आवश्यक है।","validation.required_with_all":"जब :values प्रस्तुत हो तो :attribute फील्ड आवश्यक है।","validation.required_without":"जब :values प्रस्तुत न हो तो :attribute फील्ड आवश्यक है।","validation.required_without_all":"जब :values में से कोई भी प्रस्तुत न हो तो :attribute फील्ड आवश्यक है।","validation.same":":attribute और :other मैच करना चाहिए।","validation.size.array":":attribute में :size आइटम होने चाहिए।","validation.size.file":":attribute :size किलोबाइट्स का होना चाहिए।","validation.size.numeric":":attribute :size का होना चाहिए।","validation.size.string":":attribute :size अक्षर का होना चाहिए।","validation.starts_with":":attribute निम्नलिखित में से किसी एक के साथ शुरू नहीं हो सकता: :values।","validation.string":":attribute एक स्ट्रिंग होनी चाहिए।","validation.timezone":":attribute एक मान्य टाइम जोन होना चाहिए।","validation.unique":":attribute को पहले ही उपयोग में लिया जा चुका है।","validation.uploaded":":attribute अपलोड होने में असफल रहा।","validation.url":":attribute एक मान्य URL होना चाहिए।","validation.uuid":":attribute एक मान्य UUID होना चाहिए।","validation.single":":attribute का उपयोग करते समय वह इस request के body में एकमात्र पैरामीटर होना चाहिए","validation.onlyCustomOtpWithUri":"URI पैरामीटर अकेले या केवल 'custom_otp' पैरामीटर के संयोजन में प्रदान किया जाना चाहिए","validation.custom.icon.image":"jpeg, png, bmp, gif, svg, या webp ही समर्थित प्रारूप हैं","validation.custom.qrcode.image":"jpeg, png, bmp, gif, svg, या webp ही समर्थित प्रारूप हैं","validation.custom.uri.regex":":attribute एक वैध OTPAuth URI नहीं है।","validation.custom.otp_type.in":":attribute समर्थित नहीं है।","validation.custom.email.exists":"इस ईमेल का कोई अकाउंट नहीं पाया गया।","validation.custom.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","validation.custom.secret.isBase32Encoded":":attribute base32 कोडिंग में बनाया हुआ स्ट्रिंग होना चाहिए।","validation.custom.account.regex":":attribute में कोलन नहीं होना चाहिए।","validation.custom.service.regex":":attribute में कोलन नहीं होना चाहिए।","validation.custom.label.required":"URI में लेबल होना चाहिए।","validation.custom.ids.regex":"IDs को कॉमा से अलग किया जाना चाहिए, बिना अंतिम कॉमा के।"};export{t as default}; diff --git a/public/build/assets/php_hi-631b366e.js b/public/build/assets/php_hi-631b366e.js new file mode 100644 index 00000000..e74cfdb4 --- /dev/null +++ b/public/build/assets/php_hi-631b366e.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"ऐडमिन","admin.app_setup":"ऐप का सेटअप","admin.registrations":"रजिस्ट्रेशन","admin.users":"उपयोगकर्ता","admin.users_legend":"अपने इंस्टेंस पर पंजीकृत उपयोगकर्ताओं को प्रबंधित करें या नए बनाएं।","admin.admin_settings":"ऐड्मिन की सेटिंग","admin.create_new_user":"उपयोगकर्ता बनाइये","admin.new_user":"नया उपयोगकर्ता","admin.search_user_placeholder":"उपयोगकर्ता का नाम, ईमेल इत्यादि...","admin.quick_filters_colons":"जल्दी काम करने के लिए फ़िल्टर:","admin.user_created":"उपयोगकर्ता सफलतापूर्वक बनाया गया","admin.confirm.delete_user":"क्या आप वास्तव में इस उपयोगकर्ता को डिलीट करना चाहते हैं? फिर वापस नहीं जा पाएंगे।","admin.confirm.request_password_reset":"क्या आप वास्तव में इस उपयोगकर्ता का पासवर्ड रिसेट करना चाहते हैं?","admin.confirm.purge_password_reset_request":"क्या आप वाकई इस अनुरोध को रद्द करना चाहते हैं?","admin.confirm.delete_account":"क्या आप वाकई इस उपयोगकर्ता को हटाना चाहते हैं?","admin.confirm.edit_own_account":"यह आपका अपना अकाउंट है। क्या आप आश्वस्त हैं?","admin.confirm.change_admin_role":"इससे इस उपयोगकर्ता की अनुमतियों पर गंभीर प्रभाव पड़ेगा। क्या आप आश्वस्त हैं?","admin.confirm.demote_own_account":"आप अब ऐडमिनिस्ट्रेटर नहीं रहेंगे। वास्तव में आश्वस्त हैं?","admin.logs":"लॉग","admin.administration_legend":"निम्नलिखित सेटिंग ग्लोबल हैं और सभी उपयोगकरताओं पर लागू होंगी।","admin.user_management":"उपयोगकर्ता प्रबंधन","admin.oauth_provider":"OAuth प्रदाता","admin.account_bound_to_x_via_oauth":"यह अकाउंट OAuth के माध्यम से :provider अकाउंट से जुड़ा हुआ है","admin.last_seen_on_date":":date तारीख को अंतिम बार देखा गया","admin.registered_on_date":"रेजिस्ट्रेशन की तारीख :date","admin.updated_on_date":"अपडेट की तारीख :date","admin.access":"पहुँच","admin.password_requested_on_t":"इस उपयोगकर्ता के लिए एक पासवर्ड रीसेट अनुरोध मौजूद है (अनुरोध :datetime पर भेजा गया) जिसका अर्थ है कि उपयोगकर्ता ने अभी तक अपना पासवर्ड नहीं बदला है लेकिन उसे प्राप्त लिंक अभी भी मान्य है। यह स्वयं उपयोगकर्ता या किसी व्यवस्थापक का अनुरोध हो सकता है।","admin.password_request_expired":"इस उपयोगकर्ता के लिए एक पासवर्ड रीसेट अनुरोध मौजूद है पर अब मान्य नहीं है, जिसका अर्थ है कि उपयोगकर्ता ने अपना पासवर्ड नहीं बदला है। यह स्वयं उपयोगकर्ता या किसी व्यवस्थापक का अनुरोध हो सकता है।","admin.resend_email":"ईमेल दुबारा भेजें","admin.resend_email_title":"पासवर्ड रिसेट की ईमेल उपयोगकर्ता को दोबारा भेजें","admin.resend_email_help":"उपयोगकर्ता को नया पासवर्ड रीसेट ईमेल भेजने के लिए ईमेल पुनः भेजें का उपयोग करें ताकि वह एक नया पासवर्ड सेट कर सके। इससे उसका वर्तमान पासवर्ड वैसे ही रहेगा और पिछला कोई भी अनुरोध निरस्त कर दिया जाएगा।","admin.reset_password":"पासवर्ड रीसेट करें","admin.reset_password_help":"उपयोगकर्ता को पासवर्ड रीसेट ईमेल भेजने से पहले पासवर्ड रीसेट करने के लिए पासवर्ड रीसेट करें का उपयोग करें (यह एक अस्थायी पासवर्ड सेट करेगा) ताकि वह एक नया पासवर्ड सेट कर सके। कोई भी पिछला अनुरोध निरस्त कर दिया जाएगा।","admin.reset_password_title":"उपयोगकर्ता का पासवर्ड रिसेट करें","admin.password_successfully_reset":"पासवर्ड सफलता पूर्वक बदला गया।","admin.user_has_x_active_pat":":count सक्रिय टोकन","admin.user_has_x_security_devices":":count सुरक्षा डिवाइस (पास की)","admin.revoke_all_pat_for_user":"सभी उपयोगकर्ता टोकन निरस्त्र करें","admin.revoke_all_devices_for_user":"सभी उपयोगकर्ता डिवाइसेस निरस्त्र करें","admin.danger_zone":"खतरे का क्षेत्र","admin.delete_this_user_legend":"उपयोगकर्ता का अकाउंट डिलीट होगा और साथ ही उस का 2FA डेटा भी।","admin.this_is_not_soft_delete":"यह कोई सॉफ्ट डिलीट नहीं है, इसमें वापस जाना संभव नहीं है।","admin.delete_this_user":"इस उपयोगकर्ता को हटा दें","admin.user_role_updated":"उपयोगकर्ता का रोल अपडेट हो गया है","admin.pats_succesfully_revoked":"उपयोगकर्ता के PAT सफलतापूर्वक निरस्त्र कर दिए गए हैं","admin.security_devices_succesfully_revoked":"उपयोगकर्ता के सुरक्षा उपकरण सफलतापूर्वक निरस्त्र कर दिए गए हैं","admin.variables":"वेरिएबल","admin.cache_cleared":"कैश साफ कर दिया गया है","admin.cache_optimized":"कैश अनुकूलित","admin.check_now":"अब जांचें","admin.view_on_github":"गिटहब पर देखें","admin.x_is_available":":version संस्करण उपलब्ध है!","admin.forms.use_encryption.label":"संवेदनशील डेटा को सुरक्षित करें","admin.forms.use_encryption.help":"संवेदनशील डेटा, 2FA रहस्य और ईमेल, डेटाबेस में एन्क्रिप्टेड रूप में संग्रहीत किए जाते हैं। अपनी .env फ़ाइल के APP_KEY value का (या संपूर्ण फ़ाइल का) बैकअप लेना सुनिश्चित करें क्योंकि यह एन्क्रिप्शन की कुंजी के रूप में कार्य करता है। इस कुंजी के बिना एन्क्रिप्टेड डेटा को समझने का कोई तरीका नहीं है।","admin.forms.restrict_registration.label":"रेजिस्ट्रेशन पर प्रतिबंध लगाएं","admin.forms.restrict_registration.help":"रेजिस्ट्रेशन केवल सीमित ईमेल पतों के लिए ही उपलब्ध कराएं। दोनों नियमों का एक साथ उपयोग किया जा सकता है। इसका SSO के माध्यम से किए गए रेजिस्ट्रेशन पर कोई प्रभाव नहीं पड़ता है।","admin.forms.restrict_list.label":"फिल्टरों की सूची","admin.forms.restrict_list.help":'इस सूची में दी गई ईमेल को रेजिस्ट्रेशन की अनुमति दी जाएगी। एक पाइप सिम्बल ("|") से पते अलग करें',"admin.forms.restrict_rule.label":"फिल्टर करने के नियम","admin.forms.restrict_rule.help":"इस रेगुलर इक्स्प्रेशन से मेल खाने वाले ईमेल को रेजिस्ट्रेशन की अनुमति दी जाएगी","admin.forms.disable_registration.label":"रेजिस्ट्रेशन निष्क्रिय करें","admin.forms.disable_registration.help":"नए उपयोगकर्ता रेजिस्ट्रेशन रोकें। जब तक इसे ओवरराइड नहीं किया जाता (नीचे देखें), यह SSO को भी प्रभावित करता है, इसलिए नए उपयोगकर्ता SSO के माध्यम से साइन इन नहीं कर पाएंगे","admin.forms.enable_sso.label":"सिंगल साइन-ऑन (SSO) सक्रिय करें","admin.forms.enable_sso.help":"आगंतुकों को सिंगल साइन-ऑन योजना के माध्यम से बाहरी ID का उपयोग करके प्रमाणित करने की अनुमति दें","admin.forms.keep_sso_registration_enabled.label":"SSO द्वारा रेजिस्ट्रेशन को सक्रिय रखें","admin.forms.keep_sso_registration_enabled.help":"नए उपयोगकर्ताओं को SSO के माध्यम से पहली बार साइन इन करने की अनुमति दें जबकि रेजिस्ट्रेशन निष्क्रिय है","admin.forms.is_admin.label":"ऐडमिनिस्ट्रेटर है","admin.forms.is_admin.help":"उपयोगकर्ता को ऐडमिनिस्ट्रेटर के अधिकार दें. ऐडमिनिस्ट्रेटर के पास पूरे ऐप, यानी सेटिंग्स और अन्य उपयोगकर्ताओं को प्रबंधित करने की अनुमति है, लेकिन वे उन 2FA के लिए पासवर्ड उत्पन्न नहीं कर सकते हैं जो उनके पास नहीं है।","admin.forms.test_email.label":"ईमेल कॉन्फ़िगरेशन परीक्षण","admin.forms.test_email.help":"अपने इंस्टेंस के ईमेल कॉन्फ़िगरेशन को नियंत्रित करने के लिए एक परीक्षण ईमेल भेजें। कार्यशील कॉन्फ़िगरेशन होना महत्वपूर्ण है, अन्यथा उपयोगकर्ता रीसेट पासवर्ड का अनुरोध नहीं कर पाएंगे।","admin.forms.test_email.email_will_be_send_to_x":"ईमेल :email पर भेजा जाएगा","admin.forms.cache_management.label":"कैश का मैनेजमेन्ट","admin.forms.cache_management.help":"कभी-कभी कैश को साफ़ करने की आवश्यकता होती है, उदाहरण के लिए एनवायरनमेंट वेरीएबल में बदलाव या अपडेट के बाद। आप इसे यहां से कर सकते हैं.","auth.failed":"यह परिचय हमारे रिकॉर्ड से मेल नहीं खाता","auth.password":"दिया गया पासवर्ड ग़लत है।","auth.throttle":"बहुत सारे लॉगिन के प्रयास। :seconds सेकंड में फिर से कोशिश करें।","auth.sign_out":"साइन आउट करें","auth.sign_in":"साइन इन करें","auth.sign_in_using":"साइन इन के लिए चाहिए","auth.or_continue_with":"आप ऐसे भी इसे जारी रख सकते हैं:","auth.sign_in_using_security_device":"सुरक्षा उपकरण का उपयोग करके साइन इन करें","auth.login_and_password":"लॉग इन और पासवर्ड","auth.register":"रजिस्टर","auth.welcome_to_2fauth":"2FAuth में आपका स्वागत है","auth.autolock_triggered":"ऑटो लॉक चालू हो गया है","auth.autolock_triggered_punchline":"ऑटो-लॉक ट्रिगर हो गया है और आप लॉग आउट हो गए हैं","auth.already_authenticated":"पहले से ही प्रमाणित है, कृपया पहले लॉग आउट करें","auth.authentication":"प्रमाणीकरण","auth.maybe_later":"शायद बाद में","auth.user_account_controlled_by_proxy":"उपयोगकर्ता का खाता प्रमाणीकरण प्रॉक्सी द्वारा उपलब्ध कराया गया है।
खाते को प्रॉक्सी स्तर पर प्रबंधित करें।","auth.auth_handled_by_proxy":"प्रमाणीकरण को रिवर्स प्रॉक्सी द्वारा नियंत्रित किया गया है, नीचे दी गई सेटिंग्स अक्षम हैं।
प्रॉक्सी स्तर पर प्रमाणीकरण प्रबंधित करें।","auth.confirm.logout":"क्या आप वास्तव में लॉग आउट करना चाहते हैं?","auth.confirm.revoke_device":"क्या आप वास्तव में इस डिवाइस को निरस्त करना चाहते हैं?","auth.confirm.delete_account":"क्या आप वास्तव में अपना अकाउंट डिलीट करना चाहते हैं?","auth.webauthn.security_device":"एक सुरक्षा उपकरण","auth.webauthn.security_devices":"सुरक्षा उपकरण","auth.webauthn.security_devices_legend":"प्रमाणीकरण उपकरण जिनका उपयोग आप 2FAuth में साइन इन करने के लिए कर सकते हैं, जैसे सुरक्षा कुंजी (यानी Yubikey) या बायोमेट्रिक क्षमताओं वाले स्मार्टफोन (यानी Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`आप WebAuthn प्रमाणीकरण सक्षम करके अपने 2FAuth खाते की सुरक्षा बढ़ा सकते हैं।

+ WebAuthn आपको जल्दी और अधिक सुरक्षित रूप से साइन इन करने के लिए विश्वसनीय उपकरणों (जैसे Yubikeys या बायोमेट्रिक क्षमताओं वाले स्मार्टफोन) का उपयोग करने की सुविधा देता है।`,"auth.webauthn.use_security_device_to_sign_in":"अपने सुरक्षा उपकरणों में से किसी एक का उपयोग करके प्रमाणित करने के लिए तैयार हो जाइए। अपनी चाबी प्लग इन करें, फेस मास्क या दस्ताने आदि हटा दें।","auth.webauthn.lost_your_device":"क्या आपका उपकरण खो गया?","auth.webauthn.recover_your_account":"अपना खाता पुनः प्राप्त करें","auth.webauthn.account_recovery":"खाता पुनर्प्राप्ति","auth.webauthn.recovery_punchline":"2FAuth आपको इस ईमेल पते पर एक पुनर्प्राप्ति लिंक भेजेगा। प्राप्त ईमेल में लिंक पर क्लिक करें और निर्देशों का पालन करें।

सुनिश्चित करें कि आप ईमेल को उस डिवाइस पर खोलें जो आपकी अपनी है।","auth.webauthn.send_recovery_link":"रिकवरी लिंक भेजें","auth.webauthn.account_recovery_email_sent":"खाता पुनर्प्राप्ति ईमेल भेज दिया गया है!","auth.webauthn.disable_all_security_devices":"सभी सुरक्षा उपकरण अक्षम (डिसेबल) करें","auth.webauthn.disable_all_security_devices_help":"आपके सभी सुरक्षा उपकरण निरस्त कर दिये जायेंगे। यदि आपने कोई खो दिया है या उसकी सुरक्षा से छेड़छाड़ की गई है तो इस विकल्प का उपयोग करें।","auth.webauthn.register_a_new_device":"एक नई डिवाइस रजिस्टर करें","auth.webauthn.register_a_device":"एक डिवाइस रजिस्टर करें","auth.webauthn.device_successfully_registered":"डिवाइस सफलतापूर्वक पंजीकृत हो गई है!","auth.webauthn.device_revoked":"डिवाइस सफलतापूर्वक निरस्त हो गई है!","auth.webauthn.revoking_a_device_is_permanent":"किसी डिवाइस को रद्द करना स्थायी होता है","auth.webauthn.recover_account_instructions":"आपके खाते को पुनर्प्राप्त करने के लिए, 2FAuth कुछ Webauthn सेटिंग्स को रीसेट करता है ताकि आप अपने ईमेल और पासवर्ड का उपयोग करके साइन इन कर सकें।","auth.webauthn.invalid_recovery_token":"अमान्य पुनर्प्राप्ति टोकन","auth.webauthn.webauthn_login_disabled":"Webauthn लॉगिन अक्षम किया गया है","auth.webauthn.invalid_reset_token":"यह रीसेट टोकन अमान्य है","auth.webauthn.rename_device":"डिवाइस का नाम बदलें","auth.webauthn.my_device":"मेरी डिवाइस","auth.webauthn.unknown_device":"अज्ञात डिवाइस","auth.webauthn.use_webauthn_only.label":"केवल WebAuthn का उपयोग करें","auth.webauthn.use_webauthn_only.help":`WebAuthn को अपने 2FAuth खाते में लॉग इन करने का एकमात्र अधिकृत तरीका बनाएं। WebAuthn की बेहतर सुरक्षा का लाभ उठाने के लिए यह अनुशंसित सेटअप है।

+ डिवाइस खो जाने की स्थिति में, आप इस विकल्प को रीसेट करके और अपने ईमेल और पासवर्ड का उपयोग करके साइन इन करके अपना खाता पुनर्प्राप्त कर पाएंगे।

+ ध्यान रहे! इस विकल्प के सक्षम होने के बावजूद ईमेल और पासवर्ड फॉर्म उपलब्ध रहता है, लेकिन वह हमेशा 'प्रमाणीकरण विफल' प्रतिक्रिया देगा।`,"auth.webauthn.need_a_security_device_to_enable_options":"निम्नलिखित विकल्पों को सक्षम करने के लिए कम से कम एक डिवाइस सेट करें","auth.webauthn.options":"विकल्प","auth.forms.name":"नाम","auth.forms.login":"लॉग इन करें","auth.forms.webauthn_login":"WebAuthn लॉगिन","auth.forms.email":"ईमेल","auth.forms.password":"पासवर्ड","auth.forms.reveal_password":"पासवर्ड प्रकट करें","auth.forms.hide_password":"पासवर्ड छिपाएं","auth.forms.confirm_password":"पासवर्ड की पुष्टि करें","auth.forms.new_password":"नया पासवर्ड","auth.forms.confirm_new_password":"नए पासवर्ड की पुष्टि करें","auth.forms.dont_have_account_yet":"क्या आपके पास अभी तक अकाउंट नहीं है?","auth.forms.already_register":"पहले से ही पंजीकृत?","auth.forms.authentication_failed":"प्रमाणीकरण विफल रहा","auth.forms.forgot_your_password":"पासवर्ड भूल गए हैं?","auth.forms.request_password_reset":"रीसेट कीजिए","auth.forms.reset_your_password":"अपना पासवर्ड रीसेट करें","auth.forms.reset_password":"पासवर्ड रीसेट करें","auth.forms.disabled_in_demo":"डेमो मोड में यह सुविधा अक्षम है","auth.forms.current_password.label":"वर्तमान पासवर्ड","auth.forms.current_password.help":"यह पुष्टि करने के लिए कि यह आप ही हैं, अपना वर्तमान पासवर्ड भरें","auth.forms.change_password":"पासवर्ड बदलें","auth.forms.send_password_reset_link":"पासवर्ड रिसेट करने के लिए लिंक भेजें","auth.forms.password_successfully_reset":"पासवर्ड सफलता पूर्वक बदला गया।","auth.forms.edit_account":"खाता एडिट करें","auth.forms.profile_saved":"प्रोफ़ाइल सफलतापूर्वक अपडेट की गई!","auth.forms.welcome_to_demo_app_use_those_credentials":"2FAuth डेमो में आपका स्वागत है।

आप ईमेल पते demo@2fauth.app और पासवर्ड demo का उपयोग करके कनेक्ट कर सकते हैं।","auth.forms.welcome_to_testing_app_use_those_credentials":"2FAuth परीक्षण के उदाहरण में आपका स्वागत है।

ईमेल पता testing@2fauth.app और पासवर्ड password का उपयोग करें","auth.forms.register_punchline":"2FAuth में आपका स्वागत है।
आगे जाने के लिए आपको एक खाते की आवश्यकता है, कृपया स्वयं को पंजीकृत करें।","auth.forms.reset_punchline":"2FAuth आपको इस पते पर एक पासवर्ड रीसेट लिंक भेजेगा। नया पासवर्ड सेट करने के लिए प्राप्त ईमेल में दिए गए लिंक पर क्लिक करें।","auth.forms.name_this_device":"इस डिवाइस का नाम बताएं","auth.forms.delete_account":"अकाउंट डिलीट करें","auth.forms.delete_your_account":"अपना अकाउंट डिलीट करें","auth.forms.delete_your_account_and_reset_all_data":"आपका उपयोगकर्ता खाता और साथ ही आपका सभी 2FA डेटा हटा दिया जाएगा। वहां से वापसी का कोई विकल्प नहीं है।","auth.forms.reset_your_password_to_delete_your_account":"यदि आपने साइन इन करने, साइन आउट करने के लिए हमेशा SSO का उपयोग किया है तो पासवर्ड प्राप्त करने के लिए रीसेट पासवर्ड सुविधा का उपयोग करें ताकि आप यह फॉर्म भर सकें।","auth.forms.deleting_2fauth_account_does_not_impact_provider":"आपके 2FAuth खाते को हटाने से आपके बाहरी SSO खाते पर कोई प्रभाव नहीं पड़ेगा।","auth.forms.user_account_successfully_deleted":"उपयोगकर्ता का खाता सफलतापूर्वक हटा दिया गया है","auth.forms.has_lower_case":"लोअर केस होना चाहिए","auth.forms.has_upper_case":"अपर केस होना चाहिए","auth.forms.has_special_char":"स्पेशल कैरेक्टर होना चाहिए","auth.forms.has_number":"नंबर होना चाहिए","auth.forms.is_long_enough":"कम से कम 8 कैरेक्टर","auth.forms.mandatory_rules":"अनिवार्य","auth.forms.optional_rules_you_should_follow":"अनुशंसित (अत्यधिक)","auth.forms.caps_lock_is_on":"कैप्स लॉक ऑन है","commons.cancel":"रद्द करें","commons.update":"अपडेट करें","commons.copy":"कॉपी करें","commons.copy_to_clipboard":"क्लिपबोर्ड पर कॉपी करें","commons.copied_to_clipboard":"क्लिपबोर्ड पर कॉपी हो गया I","commons.profile":"प्रोफ़ाइल","commons.edit":"संशोधन करें","commons.delete":"डिलीट करें","commons.disable":"निष्क्रिय करें","commons.enable":"सक्रिय करें","commons.create":"बनाएँ","commons.save":"सुरक्षित करें","commons.close":"बंद करें","commons.clear":"साफ़ करें","commons.clear_search":"खोज साफ़ करें","commons.demo_do_not_post_sensitive_data":"यह एक डेमो ऐप है, कोई भी संवेदनशील डेटा पोस्ट न करें","commons.testing_do_not_post_sensitive_data":"यह ऐप परीक्षण के लिए है, कोई भी संवेदनशील डेटा पोस्ट न करें","commons.x_selected":":count चुने गए","commons.name":"नाम","commons.manage":"प्रबंधन करें","commons.done":"समाप्त हुआ","commons.new":"नया","commons.back":"पीछे","commons.move":"खिसकाएँ","commons.export":"निर्यात करें","commons.all":"सब","commons.check_all":"सब","commons.select_all":"सभी चुनें","commons.clear_selection":"चयन मिटाएं","commons.sort_descending":"घटते क्रम में जमाएं","commons.sort_ascending":"बढ़ते क्रम में जमाएं","commons.rename":"नाम बदलें","commons.new_name":"नया नाम","commons.options":"विकल्प","commons.reload":"फिर से लोड करें","commons.refresh":"रिफ्रेश करें","commons.data_refreshed_to_reflect_server_changes":"सर्वर में हुए परिवर्तनों को प्रतिबिंबित करने के लिए डेटा को रिफ्रेश किया गया है","commons.generate":"जनरेट करें","commons.generating_otp":"OTP जेनरैट करें","commons.open_in_browser":"ब्राउज़र में खोलें","commons.continue":"जारी रखें","commons.discard":"ख़ारिज करें","commons.about":"बारे में","commons.usefull_links":"उपयोगी लिंक","commons.environment":"वातावरण","commons.credits":"आभार","commons.2fauth_teaser":"आपके दो-कारक प्रमाणीकरण (2FA) खातों को प्रबंधित करने और उनके सुरक्षा कोड उत्पन्न करने के लिए एक वेब ऐप","commons.made_with":"से बना","commons.ui_icons_by":"UI प्रतीक सौजन्य से","commons.logos_by":"लोगो सौजन्य से","commons.search":"खोजें","commons.resources":"संसाधन","commons.check_for_update":"नए संस्करण के लिए जाँच करें","commons.check_for_update_help":"Github पर 2FAuth की नई रिलीज़ प्रकाशित होने पर स्वचालित रूप से जाँच करें (सप्ताह में एक बार) और चेतावनी दें","commons.you_are_up_to_date":"यह एप अप-टू-डेट है","commons.2fauth_description":"आपके दो-कारक प्रमाणीकरण (2FA) खातों को प्रबंधित करने और उनके सुरक्षा कोड उत्पन्न करने के लिए एक वेब ऐप","commons.image_of_qrcode_to_scan":"स्कैन करने के लिए QR कोड की छवि","commons.file":"फ़ाइल","commons.or":"OR","commons.close_the_x_page":":pagetitle पेज को बंद करें","commons.submit":"जमा करें","commons.default":"पूर्व निर्धारित","commons.back_to_home":"मुख पृष्ठ पर वापस जाएं","commons.nothing":"कुछ नहीं","commons.no_result":"कोई परिणाम नहीं","commons.information":"जानकारी","commons.permissions":"अनुमतियां","commons.send":"भेजें","commons.optimize":"ऑप्‍टिमाइज़ करें","errors.resource_not_found":"संसाधन नहीं मिला","errors.error_occured":"एक त्रुटि उत्पन्न हुई","errors.refresh":"रिफ्रेश करें","errors.no_valid_otp":"इस QR कोड में कोई वैध OTP संसाधन नहीं है","errors.something_wrong_with_server":"आप के सर्वर में कोई गड़बड़ है","errors.Unable_to_decrypt_uri":"URI को डिक्रिप्ट करने में असमर्थ","errors.not_a_supported_otp_type":"OTP का यह प्रारूप इस समय समर्थित नहीं है","errors.cannot_create_otp_without_secret":"बिना रहस्य के OTP नहीं बनाया जा सकता","errors.data_of_qrcode_is_not_valid_URI":"इस QR कोड का डेटा वैध OTP Auth URI नहीं है। QR कोड में शामिल हैं:","errors.wrong_current_password":"गलत वर्तमान पासवर्ड, कुछ भी बदला नहीं गया है","errors.error_during_encryption":"एन्क्रिप्शन विफल, आपका डेटाबेस अभी भी असुरक्षित है।","errors.error_during_decryption":"डिक्रिप्शन विफल, आपका डेटाबेस अभी भी सुरक्षित है। ऐसा मुख्य रूप से एक या अधिक खातों के लिए एन्क्रिप्टेड डेटा की अखंडता की समस्या के कारण होता है।","errors.qrcode_cannot_be_read":"यह QR कोड पढ़ा नहीं जा सकता","errors.too_many_ids":"क्वेरी पैरामीटर में बहुत सारी आईडी शामिल की गईं, अधिकतम 100 की अनुमति है","errors.delete_user_setting_only":"केवल उपयोगकर्ता द्वारा बनाई गई सेटिंग ही मिटाई जा सकती हैं","errors.indecipherable":"*अस्पष्ट*","errors.cannot_decipher_secret":"रहस्य को समझा नहीं जा सकता. यह मुख्य रूप से 2Fauth की .env कॉन्फ़िगरेशन फ़ाइल में गलत APP_KEY सेट या डेटाबेस में संग्रहीत दूषित डेटा के कारण होता है।","errors.https_required":"HTTPS संदर्भ आवश्यक है","errors.browser_does_not_support_webauthn":"आपका डिवाइस webauthn का समर्थन नहीं करता है. बाद में अधिक आधुनिक ब्राउज़र का उपयोग करके पुनः प्रयास करें","errors.aborted_by_user":"उपयोगकर्ता द्वारा निरस्त किया गया।","errors.security_device_already_registered":"डिवाइस पहले से ही पंजीकृत है","errors.not_allowed_operation":"इस संचालन की अनुमति नहीं है","errors.no_authenticator_support_specified_algorithms":"निर्दिष्ट एल्गोरिदम का समर्थन कोई भी प्रमाणक नहीं करता है","errors.authenticator_missing_discoverable_credential_support":"प्रमाणक के पास खोजने योग्य क्रेडेंशियल का समर्थन नहीं है","errors.authenticator_missing_user_verification_support":"प्रमाणक के पास उपयोगकर्ता के सत्यापन का समर्थन नहीं है","errors.unknown_error":"अज्ञात त्रुटि","errors.security_error_check_rpid":"सुरक्षा त्रुटि
अपने WEBAUTHN_ID env var की जाँच करें","errors.2fauth_has_not_a_valid_domain":"2FAuth का डोमेन वैध डोमेन नहीं है","errors.user_id_not_between_1_64":"उपयोगकर्ता आईडी 1 से 64 वर्णों के बीच नहीं थी","errors.no_entry_was_of_type_public_key":'कोई भी प्रविष्टि "public-key" प्रकार की नहीं थी',"errors.unsupported_with_reverseproxy":"ऑथ प्रॉक्सी का उपयोग करते समय लागू नहीं होता है","errors.user_deletion_failed":"उपयोगकर्ता के कहते को हटाना विफल रहा, कोई डेटा हटाया नहीं गया है","errors.auth_proxy_failed":"Proxy प्रमाणीकरण विफल रहा","errors.auth_proxy_failed_legend":"2Fauth को प्रमाणीकरण प्रॉक्सी के पीछे चलाने के लिए कॉन्फ़िगर किया गया है लेकिन आपकी प्रॉक्सी अपेक्षित हेडर वापस नहीं करती है। अपना कॉन्फ़िगरेशन जांचें और पुनः प्रयास करें।","errors.invalid_x_migration":"अमान्य या अपठनीय :appname डेटा","errors.invalid_2fa_data":"अमान्य 2FA डेटा","errors.unsupported_migration":"डेटा किसी भी समर्थित प्रारूप से मेल नहीं खाता","errors.unsupported_otp_type":"ओटीपी का प्रकार असमर्थित","errors.encrypted_migration":"अपठनीय, डेटा एन्क्रिप्टेड लगता है","errors.no_logo_found_for_x":":service के लिए कोई लोगो उपलब्ध नहीं है","errors.file_upload_failed":"फाइल अपलोड असफल रहा","errors.unauthorized":"अनधिकृत","errors.unauthorized_legend":"आपको इस संसाधन को देखने या यह क्रिया करने की अनुमति नहीं है","errors.cannot_delete_the_only_admin":"एकमात्र व्यवस्थापक खाता हटाया नहीं जा सकता","errors.error_during_data_fetching":"💀डेटा लाने में कुछ गलत हो गया","errors.check_failed_try_later":"खोज विफल रही, कृपया बाद में पुनर्प्रयास करें!","errors.sso_disabled":"SSO निष्क्रिय है","errors.sso_bad_provider_setup":"यह SSO प्रदाता आपकी .env फ़ाइल में पूरी तरह से सेटअप नहीं है","errors.sso_failed":"SSO के माध्यम से प्रमाणीकरण अस्वीकृत","errors.sso_no_register":"पंजीकरण निष्क्रिय हैं","errors.sso_email_already_used":"समान ईमेल पते वाला एक उपयोगकर्ता खाता पहले से मौजूद है लेकिन यह आपकी बाहरी खाता आईडी से मेल नहीं खाता है। यदि आप पहले से ही इस ईमेल के साथ 2FAuth पर पंजीकृत हैं तो SSO का उपयोग न करें।","errors.account_managed_by_external_provider":"खाता किसी बाहरी प्रदाता द्वारा प्रबंधित किया गया है","errors.data_cannot_be_refreshed_from_server":"सर्वर से डेटा रिफ्रेश नहीं किया जा सकता","errors.no_pwd_reset_for_this_user_type":"इस ईमेल के लिए पासवर्ड रीसेट नहीं किया जा सकता है।","groups.groups":"ग्रुप्स","groups.create_group":"नया ग्रुप बनाएँ","groups.show_group_selector":"ग्रुप सेलेक्टर दिखाएँ","groups.hide_group_selector":"ग्रुप सेलेक्टर छुपायें","groups.select_accounts_to_show":"दिखाने के लिए अकाउंट ग्रुप चुनें","groups.x_accounts":":count अकाउंट","groups.manage_groups":"ग्रुप्स प्रबंधित करें","groups.active_group":"एक्टिव ग्रुप","groups.manage_groups_legend":"आप अपने खातों को अपनी इच्छानुसार व्यवस्थित करने के लिए समूह बना सकते हैं। सभी खाते 'ऑल' नाम के सूडो ग्रुप में दृश्यमान रहते हैं, भले ही वे किसी भी समूह से संबंधित हों।","groups.deleting_group_does_not_delete_accounts":"किसी समूह को हटाने से खाते नहीं हटते हैं","groups.move_selected_to":"चयन को स्थानांतरित करें","groups.move_selected_to_group":"चयन को ग्रुप में स्थानांतरित करें","groups.no_group":"कोई ग्रुप नहीं","groups.change_group":"ग्रुप बदलें","groups.group_successfully_created":"ग्रुप सफलतापूर्वक बनाया गया","groups.group_name_saved":"ग्रुप का नाम सुरक्षित किया","groups.group_successfully_deleted":"ग्रुप सफलतापूर्वक डिलीट किया गया","groups.forms.new_group":"नया ग्रुप","groups.forms.new_name":"नया नाम","groups.forms.rename_group":"ग्रुप का नाम बदलें","groups.confirm.delete":"क्या आप वास्तव में इस ग्रुप को मिटाना चाहते हैं?","languages.browser_preference":"ब्राउज़र की प्राथमिकता","languages.en":"English (इंग्लिश)","languages.fr":"Français (फ्रेंच)","languages.de":"Deutsch (जर्मन)","languages.es":"Español (स्पैनिश)","languages.zh":"简体中文 (सामान्य चीनी)","languages.ru":"Русский (रशिअन)","languages.bg":"Български (बुल्गेरियन)","languages.ja":"日本語 (जापानी)","languages.hi":"हिंदी (हिंदी)","notifications.hello":"नमस्कार","notifications.test_email_settings.subject":"2FAuth की टेस्ट ईमेल","notifications.test_email_settings.reason":"आपको यह ईमेल इसलिए प्राप्त हुआ है क्योंकि आपने अपने 2FAuth इंस्टेंस की ईमेल सेटिंग्स को मान्य करने के लिए एक परीक्षण ईमेल का अनुरोध किया था।","notifications.test_email_settings.success":"बधाई हो! यह काम करता है :)","pagination.previous":"« पिछला","pagination.next":"अगला »","passwords.reset":"आपका पासवर्ड रिसेट कर दिया गया है!","passwords.sent":"हमने आपका पासवर्ड रीसेट लिंक ईमेल कर दिया है!","passwords.throttled":"कृपया फिर से कोशिश करने से पहले प्रतीक्षा करें।","passwords.token":"इस पासवर्ड को बदलने का टोकन अमान्य है।","passwords.user":"हम इस ईमेल पते वाले उपयोगकर्ता को नहीं ढूंढ पाए।","passwords.password":"पासवर्ड कम से कम आठ अक्षर का होना चाहिए और पुष्टिकरण से मेल खाना चाहिए।","settings.settings":"सेटिंग्स","settings.preferences":"प्राथमिकताएं","settings.account":"अकाउंट","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"टोकन","settings.options":"विकल्प","settings.user_preferences":"उपयोगकर्ता की प्राथमिकताएं","settings.admin_settings":"ऐड्मिन की सेटिंग","settings.confirm.revoke":"क्या आप वास्तव में इस टोकन को निरस्त करना चाहते हैं?","settings.you_are_administrator":"आप एक व्यवस्थापक (ऐड्मिन) हैं","settings.account_linked_to_sso_x_provider":"आपने अपने :provider खाते का उपयोग करके SSO के माध्यम से साइन-इन किया है। आपकी जानकारी यहां :provider के अलावा नहीं बदली जा सकती।","settings.general":"सामान्य","settings.security":"सुरक्षा","settings.profile":"प्रोफ़ाइल","settings.change_password":"पासवर्ड बदलें","settings.personal_access_tokens":"प्रवेश के व्यक्तिगत टोकन","settings.token_legend":"व्यक्तिगत एक्सेस टोकन किसी भी ऐप को 2Fauth API को प्रमाणित करने की अनुमति देते हैं। आपको उपभोक्ता ऐप के अनुरोधों के प्राधिकरण हेडर में एक्सेस टोकन को बियरर टोकन के रूप में निर्दिष्ट करना चाहिए।","settings.generate_new_token":"एक नया टोकन बनाएं","settings.revoke":"वापस लें","settings.token_revoked":"टोकन सफलतापूर्वक निरस्त हो गया है","settings.revoking_a_token_is_permanent":"टोकन का निरस्त्रीकरण स्थायी होता है","settings.make_sure_copy_token":"अपने नए व्यक्तिगत एक्सेस टोकन को अभी कॉपी करना सुनिश्चित करें। आप इसे दोबारा नहीं देख पाएंगे!","settings.data_input":"डेटा इनपुट","settings.forms.edit_settings":"सेटिंग्स बदलें","settings.forms.setting_saved":"सेटिंग्स सेव हो गयी","settings.forms.new_token":"नया टोकन","settings.forms.some_translation_are_missing":"ब्राउज़र की पसंदीदा भाषा का उपयोग करते हुए क्या कुछ अनुवाद गायब हैं?","settings.forms.help_translate_2fauth":"2FAuth का अनुवाद करने में सहायता करें","settings.forms.language.label":"भाषा ","settings.forms.language.help":"2FAuth उपयोगकर्ता इंटरफ़ेस का अनुवाद करने के लिए उपयोग की जाने वाली भाषा। नामित भाषाएँ पूर्ण हैं, अपनी ब्राउज़र प्राथमिकता को ओवरराइड करने के लिए अपनी पसंद में से एक भाषा को चुनें।","settings.forms.show_otp_as_dot.label":'जनरेट किए गए OTP को डॉट के रूप में दिखाएं',"settings.forms.show_otp_as_dot.help":"गोपनीयता सुनिश्चित करने के लिए जनरेट किए गए पासवर्ड वर्णों को *** से बदलें। कॉपी/पेस्ट सुविधा को प्रभावित न करें","settings.forms.reveal_dotted_otp.label":'अस्पष्ट OTP को प्रकट करें',"settings.forms.reveal_dotted_otp.help":"डॉट-ऑब्स्क्योर्ड पासवर्ड को अस्थायी रूप से प्रकट करने की क्षमता दें","settings.forms.close_otp_on_copy.label":'कॉपी करने के बाद OTP बंद करें',"settings.forms.close_otp_on_copy.help":"जेनरेट किए गए पासवर्ड को कॉपी करने के लिए उस पर क्लिक करने से वह स्वचालित रूप से स्क्रीन से छिप जाता है","settings.forms.clear_search_on_copy.label":"कॉपी होने पर खोज मिटा दें","settings.forms.clear_search_on_copy.help":"क्लिपबोर्ड पर कोड कॉपी होने के ठीक बाद सर्च बॉक्स को खाली कर दें","settings.forms.copy_otp_on_display.label":'डिस्प्ले पर OTP कॉपी करें',"settings.forms.copy_otp_on_display.help":'जनरेट किया गया पासवर्ड स्क्रीन पर दिखाई देने के तुरंत बाद स्वचालित रूप से कॉपी हो जाता है। ब्राउज़र की सीमाओं के कारण, बदलने वाले पासवर्ड नहीं, केवल पहला TOTP पासवर्ड कॉपी किया जाएगा',"settings.forms.use_basic_qrcode_reader.label":"बेसिक QR कोड रीडर का उपयोग करें","settings.forms.use_basic_qrcode_reader.help":"यदि आप QR कोड कैप्चर करते समय समस्याओं का अनुभव करते हैं तो यह विकल्प अधिक बुनियादी लेकिन अधिक विश्वसनीय QR कोड रीडर पर स्विच करने में सक्षम बनाता है","settings.forms.display_mode.label":"डिस्प्ले मोड","settings.forms.display_mode.help":"चुनें कि आप खातों को सूची के रूप में प्रदर्शित करना चाहते हैं या ग्रिड के रूप में","settings.forms.password_format.label":"पासवर्ड फ़ॉर्मेटिंग","settings.forms.password_format.help":"पठनीयता और याद रखने में आसानी के लिए अंकों को समूहीकृत करके पासवर्ड प्रदर्शित करने का तरीका बदलें","settings.forms.pair":"जोड़े से","settings.forms.pair_legend":"अंकों को दो बटा दो समूहित करें","settings.forms.trio_legend":"अंकों को तीन बटा तीन समूहित करें","settings.forms.half_legend":"अंकों को दो बराबर समूहों में विभाजित करें","settings.forms.trio":"तिकड़ी से","settings.forms.half":"आधे में","settings.forms.grid":"ग्रिड","settings.forms.list":"सूची","settings.forms.theme.label":"थीम","settings.forms.theme.help":"किसी विशिष्ट थीम को बाध्य करें या अपने सिस्टम/ब्राउज़र प्राथमिकताओं में परिभाषित थीम को लागू करें","settings.forms.light":"हल्का रंग","settings.forms.dark":"गहरा रंग","settings.forms.automatic":"ऑटो","settings.forms.show_accounts_icons.label":"आइकन दिखाएं","settings.forms.show_accounts_icons.help":"मुख्य दृश्य में आइकान के अकाउंट दिखाएँ","settings.forms.get_official_icons.label":"आधिकारिक आइकान प्राप्त करें","settings.forms.get_official_icons.help":"खाता जोड़ते समय 2FA जारीकर्ता का आधिकारिक आइकन प्राप्त करें (कोशिश करें)","settings.forms.auto_lock.label":"ऑटो-लॉक","settings.forms.auto_lock.help":"निष्क्रियता की स्थिति में उपयोगकर्ता को स्वचालित रूप से लॉग आउट करें। जब प्रमाणीकरण को प्रॉक्सी द्वारा नियंत्रित किया जाता है और कोई कस्टम लॉगआउट URL निर्दिष्ट नहीं किया जाता है तो इसका कोई प्रभाव नहीं पड़ता है।","settings.forms.default_group.label":"डिफ़ॉल्ट ग्रुप","settings.forms.default_group.help":"वह समूह जिससे नव निर्मित अकाउंट जुड़े हैं","settings.forms.view_default_group_on_copy.label":"कॉपी होने पर डिफ़ॉल्ट ग्रुप देखें","settings.forms.view_default_group_on_copy.help":"जब भी OTP कॉपी हो जाए तो हमेशा डिफ़ॉल्ट ग्रुप पर वापस आ जाएं","settings.forms.useDirectCapture.label":"सीधे दर्ज करें","settings.forms.useDirectCapture.help":"चुनें कि क्या आप उपलब्ध इनपुट मोड में से एक इनपुट मोड चुनने की सुविधा चाहते हैं या आप सीधे डिफ़ॉल्ट इनपुट मोड का उपयोग करना चाहते हैं","settings.forms.defaultCaptureMode.label":"डिफ़ॉल्ट इनपुट मोड","settings.forms.defaultCaptureMode.help":"डायरेक्ट इनपुट विकल्प चालू होने पर डिफ़ॉल्ट इनपुट मोड का उपयोग किया जाता है","settings.forms.remember_active_group.label":"ग्रुप फ़िल्टर याद रखें","settings.forms.remember_active_group.help":"लागू किए गए अंतिम ग्रुप फ़िल्टर को सहेजें और अगली बार इसे पुनर्स्थापित करें","settings.forms.otp_generation.label":"पासवर्ड दिखाएँ","settings.forms.otp_generation.help":'सेट करें कि OTP कैसे और कब प्रदर्शित हों।
',"settings.forms.otp_generation_on_request":"क्लिक / टैप के बाद","settings.forms.otp_generation_on_request_legend":"अपने दृश्य में अकेला","settings.forms.otp_generation_on_request_title":"पासवर्ड को अलग दृश्य में प्राप्त करने के लिए किसी खाते पर क्लिक करें","settings.forms.otp_generation_on_home":"लगातार","settings.forms.otp_generation_on_home_legend":"वे सभी, होम पर","settings.forms.otp_generation_on_home_title":"बिना कुछ किए सभी पासवर्ड मुख्य दृश्य में दिखाएं","settings.forms.never":"कभी नहीं","settings.forms.on_otp_copy":"सुरक्षा कोड कॉपी होने पर","settings.forms.1_minutes":"१ मिनट बाद","settings.forms.5_minutes":"५ मिनट बाद","settings.forms.10_minutes":"10 मिनट बाद","settings.forms.15_minutes":"15 मिनट बाद","settings.forms.30_minutes":"30 मिनट बाद","settings.forms.1_hour":"1 घंटे बाद","settings.forms.1_day":"1 दिन के बाद","settings.forms.livescan":"QR कोड का लाइव स्कैन","settings.forms.upload":"QR कोड का अप-लोड","settings.forms.advanced_form":"उन्नत फॉर्म","titles.404":"आइटम नहीं मिला","titles.start":"नया अकाउंट","titles.capture":"फ्लैश QR","titles.accounts":"अकाउंट","titles.createAccount":"अकाउंट (खाता) बनाएं","titles.importAccounts":"एकाउॅटस आयात करें","titles.editAccount":"अकाउंट में परिवर्तन करें","titles.showQRcode":"QR कोड की तरह अकाउंट","titles.groups":"ग्रुप्स","titles.createGroup":"ग्रूप बनाएं","titles.editGroup":"ग्रुप में परिवर्तन करें","titles.settings.options":"विकल्प","titles.settings.account":"उपयोगकर्ता अकाउंट","titles.settings.oauth.tokens":"OAuth टोकन","titles.settings.oauth.generatePAT":"नया व्यक्तिगत टोकन","titles.settings.webauthn.editCredential":"डिवाइस में परिवर्तन","titles.settings.webauthn.devices":"WebAuthn की डिवाइस","titles.login":"लॉग इन करें","titles.register":"रजिस्टर करें","titles.autolock":"ऑटो-लॉक","titles.password.request":"पासवर्ड रीसेट करें","titles.password.reset":"नया पासवर्ड","titles.webauthn.lost":"अकाउंट पुनर्प्राप्ति","titles.webauthn.recover":"एक नई डिवाइस रजिस्टर करें","titles.flooded":"बाढ़","titles.genericError":"त्रुटि","titles.about":"बारे में","titles.admin.appSetup":"एप का सेटअप","titles.admin.users":"उपयोगकर्ता प्रबंधन","titles.admin.createUser":"उपयोगकर्ता बनाइये","titles.admin.manageUser":"उपयोगकर्ताओं को प्रतिबंधित करें","twofaccounts.service":"सर्विस","twofaccounts.account":"अकाउंट","twofaccounts.icon":"आइकॉन","twofaccounts.icon_for_account_x_at_service_y":":account खाते का आइकान :service पर","twofaccounts.icon_to_illustrate_the_account":"वह आइकान जो खाते को दर्शाता है","twofaccounts.remove_icon":"आइकन हटाएं","twofaccounts.no_account_here":"यहाँ 2FA नहीं है","twofaccounts.add_first_account":"एक विधि चुनें और अपना पहला अकाउंट जोड़ें","twofaccounts.use_full_form":"या पूरा फॉर्म उपयोग करें","twofaccounts.add_one":"एक जोड़ें","twofaccounts.show_qrcode":"QR कोड दिखाएं","twofaccounts.no_service":"- कोई सर्विस नहीं -","twofaccounts.account_created":"अकाउंट सफलतापूर्वक बना दिया गया है","twofaccounts.account_updated":"अकाउंट सफलतापूर्वक अपडेट कर दिया गया है","twofaccounts.accounts_deleted":"अकाउंट सफलतापूर्वक मिटा दिया गया है","twofaccounts.accounts_moved":"अकाउंट सफलतापूर्वक स्थानांतरित कर दिया गया है","twofaccounts.export_selected_to_json":"चयनित खातों का json निर्यात डाउनलोड करें","twofaccounts.reveal":"प्रकट करें","twofaccounts.forms.service.placeholder":"गूगल, ट्विटर, एप्पल","twofaccounts.forms.account.placeholder":"जॉन डो","twofaccounts.forms.new_account":"नया अकाउंट","twofaccounts.forms.edit_account":"खाता एडिट करें","twofaccounts.forms.otp_uri":"OTP का URI","twofaccounts.forms.scan_qrcode":"एक QR कोड स्कैन करें","twofaccounts.forms.upload_qrcode":"एक QR कोड अपलोड करें","twofaccounts.forms.use_advanced_form":"उन्नत फॉर्म का उपयोग करें","twofaccounts.forms.prefill_using_qrcode":"QR कोड का उपयोग कर के पहले से भरें","twofaccounts.forms.use_qrcode.val":"एक QR कोड का उपयोग करें","twofaccounts.forms.use_qrcode.title":"जादू से फॉर्म भरने के लिए एक QR कोड का उपयोग करें","twofaccounts.forms.unlock.val":"अनलॉक","twofaccounts.forms.unlock.title":"इसे अनलॉक करें (अपने जोखिम पर)","twofaccounts.forms.lock.val":"लॉक करें","twofaccounts.forms.lock.title":"लॉक करें","twofaccounts.forms.choose_image":"अपलोड","twofaccounts.forms.i_m_lucky":"अपनी किस्मत आज़माएं","twofaccounts.forms.i_m_lucky_legend":'"अपनी किस्मत आज़माएं" बटन द्वारा दी गई सेवा का आधिकारिक आइकन प्राप्त करने का प्रयास करें। ".xyz" एक्सटेंशन के बिना वास्तविक सेवा का नाम दर्ज करें और टाइपो से बचने का प्रयास करें। (बीटा सुविधा)',"twofaccounts.forms.test":"जाँच","twofaccounts.forms.secret.label":"रहस्य","twofaccounts.forms.secret.help":"आपके सुरक्षा कोड बनाने की कुंजी","twofaccounts.forms.plain_text":"साधारण टेक्स्ट","twofaccounts.forms.otp_type.label":'बनाने के लिए OTP का प्रकार चुनें',"twofaccounts.forms.otp_type.help":"समय-आधारित OTP या HMAC-आधारित OTP या स्टीम OTP","twofaccounts.forms.digits.label":"अंक","twofaccounts.forms.digits.help":"उत्पन्न सुरक्षा कोड के अंकों की संख्या","twofaccounts.forms.algorithm.label":"अलगोरिथ्म","twofaccounts.forms.algorithm.help":"आपके सुरक्षा कोड को सुरक्षित करने की अलगोरिथ्म","twofaccounts.forms.period.label":"अवधि","twofaccounts.forms.period.placeholder":"डिफ़ॉल्ट 30 है","twofaccounts.forms.period.help":"उत्पन्न सुरक्षा कोड की वैधता की अवधि सेकंड में","twofaccounts.forms.counter.label":"काउन्टर","twofaccounts.forms.counter.placeholder":"डिफ़ॉल्ट 0 है","twofaccounts.forms.counter.help":"काउंटर का प्रारंभिक मान","twofaccounts.forms.counter.help_lock":"काउंटर को संपादित करना जोखिम भरा है क्योंकि आप सेवा के सत्यापन करने वाले सर्वर के साथ खाते को डीसिंक्रोनाइज़ कर सकते हैं। संशोधन सक्रिय करने के लिए लॉक आइकन का उपयोग करें, लेकिन केवल तभी जब आप जानते हों कि आप क्या कर रहे हैं","twofaccounts.forms.image.label":"चित्र","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"खाता आइकन के रूप में उपयोग करने के लिए बाहरी छवि का URL","twofaccounts.forms.options_help":"यदि आप नहीं जानते कि उन्हें कैसे सेट किया जाए तो आप निम्नलिखित विकल्पों को खाली छोड़ सकते हैं। सबसे अधिक उपयोग किए जाने वाले मान लागू किए जाएंगे।","twofaccounts.forms.alternative_methods":"वैकल्पिक विधियाँ","twofaccounts.forms.spaces_are_ignored":"अनावश्यक खाली अक्षर अपने आप निकाल दिए जाएंगे","twofaccounts.stream.live_scan_cant_start":"लाइव स्कैन शुरू नहीं किया जा सकता :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth को आप का कैमरा उपयोग करने की अनुमति नहीं है","twofaccounts.stream.need_grant_permission.solution":"आपको अपने डिवाइस के कैमरे का उपयोग करने की अनुमति देनी होगी। यदि आपने पहले ही इनकार कर दिया है और आपका ब्राउज़र आपको दोबारा संकेत नहीं देता है, तो कृपया अनुमति देने का तरीका जानने के लिए ब्राउज़र के दस्तावेज़ देखें।","twofaccounts.stream.need_grant_permission.click_camera_icon":"यह आमतौर पर ब्राउज़र के एड्रेस बार में या उसके बगल में कटे हुए कैमरा आइकन पर क्लिक करके किया जाता है","twofaccounts.stream.not_readable.reason":"स्कैनर लोड करने में विफल","twofaccounts.stream.not_readable.solution":"क्या कैमरा पहले से ही उपयोग में है? सुनिश्चित करें कि कोई अन्य ऐप आपके कैमरे का उपयोग न करे और पुनः प्रयास करें","twofaccounts.stream.no_cam_on_device.reason":"इस डिवाइस में कैमरा नहीं है","twofaccounts.stream.no_cam_on_device.solution":"आप शायद अपना वेबकैम लगाना भूल रहे हैं","twofaccounts.stream.secured_context_required.reason":"सुरक्षित संदर्भ आवश्यक है","twofaccounts.stream.secured_context_required.solution":"लाइव स्कैन के लिए HTTPS आवश्यक है। यदि आप अपने कंप्यूटर से 2FAuth चलाते हैं, तो localhost के अलावा वर्चुअल होस्ट का उपयोग न करें","twofaccounts.stream.https_required":"कैमरा स्ट्रीमिंग के लिए HTTPS आवश्यक है","twofaccounts.stream.camera_not_suitable.reason":"स्थापित कैमरे उपयुक्त नहीं हैं","twofaccounts.stream.camera_not_suitable.solution":"कृपया दूसरी डिवाइस / कैमरा उपयोग करें","twofaccounts.stream.stream_api_not_supported.reason":"इस ब्राउज़र में स्ट्रीम API समर्थित नहीं है","twofaccounts.stream.stream_api_not_supported.solution":"आप को एक आधुनिक ब्राउजर का उपयोग करना चाहिए","twofaccounts.confirm.delete":"क्या आप वास्तव में यह अकाउंट डिलीट करना चाहते हैं?","twofaccounts.confirm.cancel":"परिवर्तन खो जायेंगे। क्या आपको यकीन है?","twofaccounts.confirm.discard":"क्या आप वास्तव में इस अकाउंट को हटाना चाहते हैं?","twofaccounts.confirm.discard_all":"क्या आप वास्तव में सभी अकाउंट को हटाना चाहते हैं?","twofaccounts.confirm.discard_duplicates":"क्या आप वास्तव में सभी डूप्लिकेट को हटाना चाहते हैं?","twofaccounts.import.import":"आयात","twofaccounts.import.to_import":"आयात","twofaccounts.import.import_legend":"2FAuth विभिन्न 2FA ऐप्स से डेटा आयात कर सकता है।","twofaccounts.import.import_legend_afterpart":"QR कोड या JSON फ़ाइल जैसे माइग्रेशन संसाधन प्राप्त करने के लिए इन ऐप्स की निर्यात करने की सुविधा का उपयोग करें और फिर उसे यहां अपलोड करें।","twofaccounts.import.upload":"अपलोड","twofaccounts.import.scan":"स्कैन करें","twofaccounts.import.supported_formats_for_qrcode_upload":"स्वीकृत: jpg, jpeg, png, bmp, gif, svg, या webp","twofaccounts.import.supported_formats_for_file_upload":"स्वीकृत: Plain text, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"अपेक्षित: otpauth URI की सूची, एक लाइन पर एक","twofaccounts.import.supported_migration_formats":"समर्थित माइग्रेशन फॉर्मैट","twofaccounts.import.qr_code":"QR कोड","twofaccounts.import.text_file":"टेक्स्ट फ़ाईल","twofaccounts.import.direct_input":"सीधे दर्ज करें","twofaccounts.import.plain_text":"साधारण टेक्स्ट","twofaccounts.import.parsing_data":"डेटा पार्स किया जा रहा है...","twofaccounts.import.issuer":"ज़ारीकर्ता","twofaccounts.import.imported":"आयात","twofaccounts.import.failure":"विफलता","twofaccounts.import.x_valid_accounts_found":":count वैध अकाउंट पाए गए","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"माइग्रेशन संसाधन में निम्नलिखित 2FA खाते पाए गए। अभी तक उनमें से किसी को भी 2FAuth में नहीं जोड़ा गया है।","twofaccounts.import.use_buttons_to_save_or_discard":"उन्हें अपने 2FA संग्रह में स्थायी रूप से सहेजने या त्यागने के लिए उपलब्ध बटनों का उपयोग करें।","twofaccounts.import.import_all":"सभी आयात करें","twofaccounts.import.import_this_account":"इस अकाउंट को आयात करें","twofaccounts.import.discard_all":"सभी को खारिज करें","twofaccounts.import.discard_duplicates":"डुप्लिकेट त्यागें","twofaccounts.import.discard_this_account":"इस अकाउंट को खारिज करें","twofaccounts.import.generate_a_test_password":"परीक्षण के लिए एक पासवर्ड बनाएं","twofaccounts.import.possible_duplicate":"बिल्कुल समान डेटा वाला एक खाता पहले से मौजूद है","twofaccounts.import.invalid_account":"- अवैध अकाउंट -","twofaccounts.import.invalid_service":"- अवैध सर्विस -","twofaccounts.import.do_not_set_password_or_encryption":"जब आप 2FA ऐप से डेटा निर्यात करते हैं तो पासवर्ड सुरक्षा या एन्क्रिप्शन सक्रिय न करें अन्यथा 2FAuth उन्हें समझने में सक्षम नहीं होगा।","validation.accepted":":attribute को स्वीकार करना होगा।","validation.accepted_if":"जब :other :value हो तो :attribute को स्वीकार करना होगा।","validation.active_url":":attribute एक वैध URL नहीं है","validation.after":":attribute :date के बाद की तारीख होनी चाहिए।","validation.after_or_equal":":attribute :date के बाद की या उस के बराबर की तारीख होनी चाहिए।","validation.alpha":":attribute में केवल अक्षर होने चाहिए","validation.alpha_dash":":attribute में केवल अक्षर, संख्याएँ, डैश और अंडरस्कोर होने चाहिए।","validation.alpha_num":":attribute में केवल अक्षर और संख्याएँ होने चाहिए।","validation.array":":attribute एक सरणी होनी चाहिए।","validation.before":":attribute :date के पहले की तारीख होनी चाहिए।","validation.before_or_equal":":attribute :date के पहले की या बराबर की तारीख होनी चाहिए।","validation.between.array":":attibute :min और :max आइटम के बीच होनी चाहिए।","validation.between.file":":attibute :min और :max किलोबाइट्स के बीच होनी चाहिए।","validation.between.numeric":":attibute :min और :max के बीच होनी चाहिए।","validation.between.string":":attibute :min और :max अक्षरों के बीच होनी चाहिए।","validation.boolean":":attribute फ़ील्ड सही या गलत होनी चाहिए।","validation.confirmed":":attribute पुष्टिकरण मेल नहीं खाता।","validation.current_password":"पासवर्ड गलत है।","validation.date":":attribute एक वैध तारीख नहीं है","validation.date_equals":":attribute :date के बराबर तारीख होनी चाहिए","validation.date_format":":attribute :format प्रारूप से मेल नहीं खाती।","validation.declined":":attribute को अस्वीकार किया जाना चाहिए।","validation.declined_if":"जब :other :value हो तो :attribute को अस्वीकार किया जाना चाहिए।","validation.different":":attribute और :other भिन्न होने चाहिए।","validation.digits":":attribute :digits अंकों का होना चाहिए।","validation.digits_between":":attibute :min और :max अंकों के बीच होना चाहिए।","validation.dimensions":":attribute के छवि आयाम मान्य नहीं हैं।","validation.distinct":":attribute फील्ड में डुप्लिकेट मान है।","validation.doesnt_end_with":":attribute निम्नलिखित में से किसी एक के साथ समाप्त नहीं हो सकता: :मान।","validation.doesnt_start_with":":attribute निम्नलिखित में से किसी एक के साथ शुरू नहीं हो सकता: :values।","validation.email":":attribute एक वैध ईमेल अड्रेस होना चाहिए।","validation.ends_with":":attribute निम्नलिखित में से किसी एक के साथ समाप्त होना चाहिए: :values।","validation.enum":"चुना गया :attribute वैध नहीं है।","validation.exists":"चुना गया :attribute वैध नहीं है।","validation.file":":attribute एक फ़ाइल होनी चाहिए।","validation.filled":":attribute के स्थान में एक मान होना चाहिए।","validation.gt.array":":attribute में :value से अधिक चीजें होनी चाहिए।","validation.gt.file":":attribute :value किलोबाइट से बड़ा होना चाहिए।","validation.gt.numeric":":attribute :value से बड़ा होना चाहिए।","validation.gt.string":":attribute :value अक्षरों से बड़ा होना चाहिए।","validation.gte.array":":attribute में :value या उससे अधिक चीजें होनी चाहिए।","validation.gte.file":":attribute :value किलोबाइट से बड़ा या बराबर होना चाहिए।","validation.gte.numeric":":attribute :value से बड़ा या बराबर होना चाहिए।","validation.gte.string":":attribute :value अक्षरों से बड़ा या बराबर होना चाहिए।","validation.image":":attribute एक छवि होनी चाहिए।","validation.in":"चुना गया :attribute वैध नहीं है।","validation.in_array":":attribute फील्ड, :other में मौजूद नहीं है।","validation.integer":":attribute एक पूर्णांक(integer) होना चाहिए।","validation.ip":":attribute एक मान्य IP पता होना चाहिए।","validation.ipv4":":attribute एक मान्य IPv4 पता होना चाहिए।","validation.ipv6":":attribute एक मान्य IPv6 पता होना चाहिए।","validation.json":":attribute एक मान्य JSON स्ट्रिंग होना चाहिए।","validation.lt.array":":attribute में :value से कम चीजें होनी चाहिए।","validation.lt.file":":attribute :value किलोबाइट से कम होना चाहिए।","validation.lt.numeric":":attribute :value से कम होना चाहिए।","validation.lt.string":":attribute :value अक्षरों से कम होना चाहिए।","validation.lte.array":":attribute में :value से अधिक चीजें नहीं होनी चाहिए।","validation.lte.file":":attribute :value किलोबाइट से कम या बराबर होना चाहिए।","validation.lte.numeric":":attribute :value से कम या बराबर होना चाहिए।","validation.lte.string":":attribute :value अक्षरों से कम या बराबर होना चाहिए।","validation.mac_address":":attribute एक मान्य MAC पता होना चाहिए।","validation.max.array":":attribute में :max से ज्यादा चीजें नहीं हो सकती हैं।","validation.max.file":":attribute :max किलोबाइट से बड़ा नहीं हो सकता है।","validation.max.numeric":":attribute :max से बड़ा नहीं होना चाहिए।","validation.max.string":":attribute :max अक्षरों से बड़ा नहीं हो सकता है।","validation.max_digits":":attribute में :max से ज्यादा अंक नहीं हो सकते हैं।","validation.mimes":":attribute :values टाइप की फाइल होनी चाहिए।","validation.mimetypes":":attribute :values टाइप की फाइल होनी चाहिए।","validation.min.array":":attribute में कम से कम :min चीजें होनी चाहिए।","validation.min.file":":attribute कम से कम :min किलोबाइट का होना चाहिए।","validation.min.numeric":":attribute कम से कम :min होना चाहिए।","validation.min.string":":attribute में कम से कम :min अक्षर होने चाहिए।","validation.min_digits":":attribute में कम से कम :min अंक होने चाहिए।","validation.multiple_of":":attribute :values का मल्टिपल होना चाहिए।","validation.not_in":"चुना गया :attribute वैध नहीं है।","validation.not_regex":":attribute फॉर्मेट अमान्य है।","validation.numeric":":attribute एक संख्या होनी चाहिए।","validation.password.letters":":attribute में कम से कम एक अक्षर होना चाहिए।","validation.password.mixed":":attribute में कम से कम एक uppercase और एक lowecase अक्षर होना चाहिए।","validation.password.numbers":":attribute में कम से कम एक अंक होना चाहिए।","validation.password.symbols":":attribute में कम से कम एक सिम्बल होना चाहिए।","validation.password.uncompromised":":attribute एक डेटा लीक में पाया गया है। कृपया एक दूसरा :attribute चुनें।","validation.present":":attribute फील्ड मौजूद होना चाहिए।","validation.prohibited":":attribute फील्ड निषिद्ध है।","validation.prohibited_if":"जब :other :value हो तो :attribute फील्ड निषिद्ध है।","validation.prohibited_unless":"यदि :other :values में न हो तो :attribute फील्ड निषिद्ध है।","validation.prohibits":":attribute फील्ड :other के प्रस्तुत होने को निषेध करता है।","validation.regex":":attribute का फॉर्मैट अवैध है।","validation.required":":attribute फील्ड की आवश्यकता है।","validation.required_array_keys":":attribute फील्ड में :values की प्रविष्टियाँ होनी चाहिए।","validation.required_if":"जब :other :value हो तो :attribute फील्ड आवश्यक है।","validation.required_if_accepted":"जब :other मान्य हो तो :attribute फील्ड आवश्यक है।","validation.required_unless":"यदि :other :values में न हो तो :attribute फील्ड आवश्यक है।","validation.required_with":"जब :values प्रस्तुत हो तो :attribute फील्ड आवश्यक है।","validation.required_with_all":"जब :values प्रस्तुत हो तो :attribute फील्ड आवश्यक है।","validation.required_without":"जब :values प्रस्तुत न हो तो :attribute फील्ड आवश्यक है।","validation.required_without_all":"जब :values में से कोई भी प्रस्तुत न हो तो :attribute फील्ड आवश्यक है।","validation.same":":attribute और :other मैच करना चाहिए।","validation.size.array":":attribute में :size आइटम होने चाहिए।","validation.size.file":":attribute :size किलोबाइट्स का होना चाहिए।","validation.size.numeric":":attribute :size का होना चाहिए।","validation.size.string":":attribute :size अक्षर का होना चाहिए।","validation.starts_with":":attribute निम्नलिखित में से किसी एक के साथ शुरू नहीं हो सकता: :values।","validation.string":":attribute एक स्ट्रिंग होनी चाहिए।","validation.timezone":":attribute एक मान्य टाइम जोन होना चाहिए।","validation.unique":":attribute को पहले ही उपयोग में लिया जा चुका है।","validation.uploaded":":attribute अपलोड होने में असफल रहा।","validation.url":":attribute एक मान्य URL होना चाहिए।","validation.uuid":":attribute एक मान्य UUID होना चाहिए।","validation.single":":attribute का उपयोग करते समय वह इस request के body में एकमात्र पैरामीटर होना चाहिए","validation.onlyCustomOtpWithUri":"URI पैरामीटर अकेले या केवल 'custom_otp' पैरामीटर के संयोजन में प्रदान किया जाना चाहिए","validation.custom.icon.image":"jpeg, png, bmp, gif, svg, या webp ही समर्थित प्रारूप हैं","validation.custom.qrcode.image":"jpeg, png, bmp, gif, svg, या webp ही समर्थित प्रारूप हैं","validation.custom.uri.regex":":attribute एक वैध OTPAuth URI नहीं है।","validation.custom.otp_type.in":":attribute समर्थित नहीं है।","validation.custom.email.exists":"इस ईमेल का कोई अकाउंट नहीं पाया गया।","validation.custom.email.ComplyWithEmailRestrictionPolicy":"यह ईमेल पता रेजिस्ट्रेशन के नियम का पालन नहीं करता है","validation.custom.email.IsValidEmailList":"सभी ईमेल वैध होने चाहिए और पाइप सिम्बल (|) से अलग किए जाने चाहिए","validation.custom.secret.isBase32Encoded":":attribute base32 कोडिंग में बनाया हुआ स्ट्रिंग होना चाहिए।","validation.custom.account.regex":":attribute में कोलन नहीं होना चाहिए।","validation.custom.service.regex":":attribute में कोलन नहीं होना चाहिए।","validation.custom.label.required":"URI में लेबल होना चाहिए।","validation.custom.ids.regex":"IDs को कॉमा से अलग किया जाना चाहिए, बिना अंतिम कॉमा के।"};export{t as default}; diff --git a/public/build/assets/php_ru-d1282df9.js b/public/build/assets/php_ru-d1282df9.js deleted file mode 100644 index 68e11648..00000000 --- a/public/build/assets/php_ru-d1282df9.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Администратор","admin.app_setup":"Настройки приложения","admin.registrations":"Регистрации","admin.users":"Пользователи","admin.users_legend":"Управление пользователями, зарегистрированными на вашем экземпляре приложения или создание новых.","admin.admin_settings":"Административные настройки","admin.create_new_user":"Создать пользователя","admin.new_user":"Новый пользователь","admin.search_user_placeholder":"Имя пользователя, email...","admin.quick_filters_colons":"Быстрые фильтры:","admin.user_created":"пользователь успешно создан","admin.confirm.delete_user":"Вы уверены, что хотите удалить этого пользователя? Это действие невозможно отменить.","admin.confirm.request_password_reset":"Вы уверены, что хотите сбросить пароль этого пользователя?","admin.confirm.purge_password_reset_request":"Вы уверены, что хотите удалить заявку?","admin.confirm.delete_account":"Вы действительно хотите удалить этого пользователя?","admin.confirm.edit_own_account":"Это ваша собственная учётная запись. Вы уверены?","admin.confirm.change_admin_role":"Это будет иметь серьезные последствия для разрешений этого пользователя. Вы уверены?","admin.confirm.demote_own_account":"Вы больше не будете администратором. Вы уверены?","admin.logs":"Журналы","admin.administration_legend":"Следующие настройки являются глобальными и будут применены ко всем пользователям.","admin.user_management":"Управление пользователем","admin.oauth_provider":"Провайдер OAuth","admin.account_bound_to_x_via_oauth":"Эта учётная запись привязана к учётной записи :provider через OAuth","admin.last_seen_on_date":"Последнее посещение: :date","admin.registered_on_date":"Дата регистрации: :date","admin.updated_on_date":"Дата последнего обновления: :date","admin.access":"Доступ","admin.password_requested_on_t":"Запрос на сброс пароля уже существует для этого пользователя (отправлен :date), что означает, что пользователь еще не изменил свой пароль, но ссылка, которую он получил, всё ещё является действительной. Это может быть запрос как от самого пользователя, так и от администратора.","admin.password_request_expired":"Запрос на сброс пароля уже существует для этого пользователя, но срок его действия истёк, что означает, что пользователь не успел изменить свой пароль вовремя. Это мог быть запрос как от самого пользователя, так и от администратора.","admin.resend_email":"Отправить письмо еще раз","admin.resend_email_title":"Отправить письмо для сброса пароля пользователю ещё раз","admin.resend_email_help":"Используйте Отправить письмо ещё раз , чтобы отправить пользователю новое письмо для сброса пароля. Это не изменит текущий пароль, а предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password":"Сбросить пароль","admin.reset_password_help":"Используйте Сбросить пароля для принудительного сброса пароля (это установит временный пароль) перед отправкой пользователю письма для сброса пароля, чтобы он мог установить новый пароль. Предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password_title":"Сбросить пароль пользователя","admin.password_successfully_reset":"Пароль успешно сброшен","admin.user_has_x_active_pat":":count активных токен(ов)","admin.user_has_x_security_devices":":count устройств(о) безопасности (passkeys)","admin.revoke_all_pat_for_user":"Отозвать все токены пользователя","admin.revoke_all_devices_for_user":"Отменить все устройства безопасности пользователя","admin.danger_zone":"ОСТОРОЖНО!!!","admin.delete_this_user_legend":"Учётная запись пользователя будет удалена, а также все ее данные 2FA.","admin.this_is_not_soft_delete":"Это не мягкое удаление, это действие невозможно отменить.","admin.delete_this_user":"Удалить этого пользователя","admin.user_role_updated":"Роль пользователя обновлена","admin.pats_succesfully_revoked":"Персональные токены доступа пользователя успешно отозваны","admin.security_devices_succesfully_revoked":"Устройства безопасности пользователя успешно отозваны","admin.variables":"Переменные","admin.cache_cleared":"Кэш очищен","admin.cache_optimized":"Кэш оптимизирован","admin.check_now":"Проверить","admin.view_on_github":"Посмотреть на GitHub","admin.x_is_available":"Новая версия :version доступна","admin.forms.use_encryption.label":"Защитить конфиденциальные данные","admin.forms.use_encryption.help":"Конфиденциальные данные, секреты 2FA и адреса email хранятся в зашифрованном виде в базе данных. Убедитесь, что у вас есть резервная копия значения APP_KEY вашего .env файла (или весь файл) так как оно служит в качестве ключа шифрования. Не существует способа расшифровки данных без этого ключа.","admin.forms.restrict_registration.label":"Ограничить регистрацию","admin.forms.restrict_registration.help":"Сделайте регистрацию доступной только для ограниченного диапазона адресов электронной почты. Оба правила могут использоваться одновременно. Это не влияет на регистрацию через SSO.","admin.forms.restrict_list.label":"Список фильтрации","admin.forms.restrict_list.help":'Регистрация будет доступна для адресов электронной почты из этого списка. Разделяйте адреса символом вертикальной черты ("|")',"admin.forms.restrict_rule.label":"Правила фильтрации","admin.forms.restrict_rule.help":"Регистрация будет доступна для адресов электронной почты, удовлетворяющих регулярному выражению","admin.forms.disable_registration.label":"Отключить регистрацию","admin.forms.disable_registration.help":"Запретить регистрацию новых пользователей. Если не переопределено (см. ниже), это также влияет на SSO, так что новые пользователи не смогут войти через SSO","admin.forms.enable_sso.label":"Включить Single Sign-On (SSO)","admin.forms.enable_sso.help":"Разрешить посетителям аутентифицироваться с использованием внешнего ID через схему Single Sign-On","admin.forms.keep_sso_registration_enabled.label":"Сохранить SSO регистрацию включенной","admin.forms.keep_sso_registration_enabled.help":"Разрешить новым пользователям входить в систему впервые через SSO, пока регистрация отключена","admin.forms.is_admin.label":"Администратор","admin.forms.is_admin.help":"Даёт пользователю права администратора. Администраторы имеют разрешения на управление всем приложением, то есть настройками и другими пользователями, но не могут генерировать пароли для 2FA, которыми они не владеют.","admin.forms.test_email.label":"Тест конфигурации электронной почты","admin.forms.test_email.help":"Отправить тестовое письмо для проверки конфигурации электронной почты вашего экземпляра 2FAuth. Важно иметь работающую конфигурацию, иначе пользователи не смогут запросить пароль для сброса.","admin.forms.test_email.email_will_be_send_to_x":'Письмо будет отправлено на :email',"admin.forms.cache_management.label":"Управление кэшем","admin.forms.cache_management.help":"Иногда кэш должен быть очищен, например, после изменения переменных окружения или обновления приложения. Вы можете сделать это отсюда.","auth.failed":"Неверное имя пользователя или пароль.","auth.password":"Некорректный пароль.","auth.throttle":"Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.","auth.sign_out":"Выйти","auth.sign_in":"Войти","auth.sign_in_using":"Войти с помощью","auth.or_continue_with":"Вы также можете продолжить с:","auth.sign_in_using_security_device":"Войти, используя устройство безопасности","auth.login_and_password":"имени пользователя и пароля","auth.register":"Регистрация","auth.welcome_to_2fauth":"Добро пожаловать в 2FAuth","auth.autolock_triggered":"Сработала автоматическая блокировка","auth.autolock_triggered_punchline":"Произошло событие которое, отслеживалось функцией автоблокировки. Вы были автоматически отключены.","auth.already_authenticated":"Вы уже аутентифицированы","auth.authentication":"Аутентификация","auth.maybe_later":"Не сейчас","auth.user_account_controlled_by_proxy":"Учётная запись создана через прокси-аунтификацию.
Управляйте учётной записью на уровне прокси.","auth.auth_handled_by_proxy":"Аутентификация осуществляется на обратном прокси, настройки ниже не доступны.
Управление аутентификацией осуществляется на прокси.","auth.confirm.logout":"Вы уверены, что хотите выйти?","auth.confirm.revoke_device":"Вы уверены, что хотите удалить это устройство?","auth.confirm.delete_account":"Вы уверены, что хотите удалить свою учётную запись?","auth.webauthn.security_device":"устройства безопасности","auth.webauthn.security_devices":"Устройства безопасности","auth.webauthn.security_devices_legend":"Устройства аутентификации, которые можно использовать для входа в систему 2FAuth, такие как ключи безопасности (например, Yubikey) или смартфоны с биометрическими возможностями (например, Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Вы можете повысить безопасность учётной записи 2FAuth, включив аутентификацию WebAuthn.

- WebAuthn позволяет использовать доверенные устройства (например, Yubikeys или смартфоны с биометрическими возможностями) для безопасного входа.`,"auth.webauthn.use_security_device_to_sign_in":"Будьте готовы пройти аутентификацию с помощью (одного из) ваших устройств безопасности. Вставьте ключ, снимите маску или перчатки и т.д.","auth.webauthn.lost_your_device":"Потеряли устройство?","auth.webauthn.recover_your_account":"Восстановите доступ к учётной записи","auth.webauthn.account_recovery":"Восстановление доступа к учётной записи","auth.webauthn.recovery_punchline":"2FAuth отправит вам ссылку для восстановления на этот адрес электронной почты. Нажмите на ссылку в полученном письме и следуйте инструкциям.

Убедитесь, что вы откроете письмо на вашем полностью проверенном устройстве.","auth.webauthn.send_recovery_link":"Отправить ссылку для восстановления","auth.webauthn.account_recovery_email_sent":"Письмо для восстановления доступа к учётной записи отправлено!","auth.webauthn.disable_all_security_devices":"Отключить все устройства безопасности","auth.webauthn.disable_all_security_devices_help":"Все ваши устройства безопасности будут отозваны. Используйте эту опцию, если вы потеряли их или их безопасность была скомпрометирована.","auth.webauthn.register_a_new_device":"Зарегистрировать новое устройство","auth.webauthn.register_a_device":"Зарегистрировать устройство","auth.webauthn.device_successfully_registered":"Устройство успешно зарегистрировано","auth.webauthn.device_revoked":"Устройство успешно деактивировано","auth.webauthn.revoking_a_device_is_permanent":"Удаление устройства необратимо","auth.webauthn.recover_account_instructions":"Чтобы восстановить вашу учётную запись, 2FAuth сбрасывает некоторые настройки Webauthn, чтобы вы могли войти с помощью электронной почты и пароля.","auth.webauthn.invalid_recovery_token":"Неверный код восстановления","auth.webauthn.webauthn_login_disabled":"Webauthn вход отключен","auth.webauthn.invalid_reset_token":"Этот токен сброса недействителен.","auth.webauthn.rename_device":"Переименовать устройство","auth.webauthn.my_device":"Моё устройство","auth.webauthn.unknown_device":"Неизвестное устройство","auth.webauthn.use_webauthn_only.label":"Использовать только WebAuthn","auth.webauthn.use_webauthn_only.help":`Сделать WebAuthn единственным авторизованным методом входа в вашу учётную запись 2FAuth. Это рекомендуемая настройка, позволяющая воспользоваться преимуществами повышенной безопасности WebAuthn.

- В случае утери устройства вы сможете восстановить свою учётную запись, сбросив эту опцию и войдя в систему, используя свой адрес электронной почты и пароль.

- Внимание! Форма электронной почты и пароля остается доступной, несмотря на то, что эта опция включена, но она всегда будет возвращать ответ «Ошибка аутентификации».`,"auth.webauthn.need_a_security_device_to_enable_options":"Настройте хотя бы одно устройство для включения следующих параметров","auth.webauthn.options":"Параметры","auth.forms.name":"Имя","auth.forms.login":"Вход","auth.forms.webauthn_login":"WebAuthn вход","auth.forms.email":"Email","auth.forms.password":"Пароль","auth.forms.reveal_password":"Показать пароль","auth.forms.hide_password":"Скрыть пароль","auth.forms.confirm_password":"Подтверждение пароля","auth.forms.new_password":"Новый пароль","auth.forms.confirm_new_password":"Подтвердить новый пароль","auth.forms.dont_have_account_yet":"Еще нет учётной записи?","auth.forms.already_register":"Уже зарегистрированы?","auth.forms.authentication_failed":"Ошибка аутентификации","auth.forms.forgot_your_password":"Забыли пароль?","auth.forms.request_password_reset":"Восстановить","auth.forms.reset_your_password":"Восстановить пароль","auth.forms.reset_password":"Восстановить пароль","auth.forms.disabled_in_demo":"Функция отключена в демонастрационном режиме","auth.forms.current_password.label":"Текущий пароль","auth.forms.current_password.help":"Введите ваш текущий пароль для подтверждения, что это действительно вы","auth.forms.change_password":"Изменить пароль","auth.forms.send_password_reset_link":"Отправить ссылку для восстановления пароля","auth.forms.password_successfully_reset":"Пароль успешно сброшен","auth.forms.edit_account":"Редактировать учётную запись","auth.forms.profile_saved":"Профиль успешно обновлен!","auth.forms.welcome_to_demo_app_use_those_credentials":"Добро пожаловать в демонстрационный режим 2FAuth.

Вы можете подключиться используя email адрес demo@2fauth.app и пароль demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Добро пожаловать в тестовое окружение 2FAuth.

Используйте email адрес testing@2fauth.app и пароль password","auth.forms.register_punchline":"Добро пожаловать в 2FAuth.
Вам необходима учётная запись, чтобы продолжить, пожалуйста, зарегистрируйте себя.","auth.forms.reset_punchline":"2FAuth вышлет вам ссылку для сброса пароля на этот адрес. Нажмите на ссылку в полученном письме, чтобы установить новый пароль.","auth.forms.name_this_device":"Назвать это устройство","auth.forms.delete_account":"Удалить учётную запись","auth.forms.delete_your_account":"Удалить учётную запись","auth.forms.delete_your_account_and_reset_all_data":"Ваша учётная запись пользователя будет удалена вместе со всеми вашими данными 2FA.
Это действие невозможно отменить.","auth.forms.reset_your_password_to_delete_your_account":"Если вы всегда использовали SSO для входа, выйдите из системы, а затем воспользуйтесь функцией сброса пароля, чтобы получить пароль и заполнить эту форму.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Удаление вашей учётной записи 2FAuth не влияет на вашу внешнюю учётную запись SSO.","auth.forms.user_account_successfully_deleted":"Учётная запись пользователя успешно удалена","auth.forms.has_lower_case":"маленькие буквы","auth.forms.has_upper_case":"заглавные буквы","auth.forms.has_special_char":"специальный символы","auth.forms.has_number":"цифры","auth.forms.is_long_enough":"Минимум 8 символов","auth.forms.mandatory_rules":"Обязательно","auth.forms.optional_rules_you_should_follow":"Рекомендуется (настоятельно)","auth.forms.caps_lock_is_on":"Caps lock включен","commons.cancel":"Отмена","commons.update":"Обновить","commons.copy":"Скопировать","commons.copy_to_clipboard":"Скопировать в буфер обмена","commons.copied_to_clipboard":"Скопировано в буфер обмена","commons.profile":"Профиль","commons.edit":"Редактировать","commons.delete":"Удалить","commons.disable":"Выключить","commons.enable":"Включить","commons.create":"Создать","commons.save":"Сохранить","commons.close":"Закрыть","commons.clear":"Очистить","commons.clear_search":"Очистить поиск","commons.demo_do_not_post_sensitive_data":"Это демонстрационное приложение, не размещайте конфиденциальные данные","commons.testing_do_not_post_sensitive_data":"Это тестовое приложение, не оставляйте конфиденциальные данные","commons.x_selected":"Выбрано :count","commons.name":"Имя","commons.manage":"Управление","commons.done":"Готово","commons.new":"Новый","commons.back":"Назад","commons.move":"Переместить","commons.export":"Экспорт","commons.all":"Все","commons.check_all":"Выбрать всё","commons.select_all":"Выбрать все","commons.clear_selection":"Очистить выделение","commons.sort_descending":"По убыванию","commons.sort_ascending":"По возрастанию","commons.rename":"Переименовать","commons.new_name":"Новое имя","commons.options":"Настройки","commons.reload":"Обновить","commons.refresh":"Обновить","commons.data_refreshed_to_reflect_server_changes":"Данные обновлены, чтобы отразить изменения со стороны сервера","commons.generate":"Генерировать","commons.generating_otp":"Генерация OTP","commons.open_in_browser":"Открыть в браузере","commons.continue":"Продолжить","commons.discard":"Отменить","commons.about":"О программе","commons.usefull_links":"Полезные ссылки","commons.environment":"Окружение","commons.credits":"Авторы","commons.2fauth_teaser":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учётных записей и генерации кодов безопасности","commons.made_with":"Сделано с использованием","commons.ui_icons_by":"Иконки пользовательского интерфейса","commons.logos_by":"Логотипы","commons.search":"Поиск","commons.resources":"Ресурсы","commons.check_for_update":"Проверить обновления","commons.check_for_update_help":"Автоматически проверять (раз в неделю) и предупреждать о выходе новой версии 2FAuth на Github","commons.you_are_up_to_date":"Установленна последная версия","commons.2fauth_description":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учётных записей и генерации кодов безопасности","commons.image_of_qrcode_to_scan":"Изображение QR-кода для сканирования","commons.file":"Файл","commons.or":"или","commons.close_the_x_page":"Закрыть страницу :pagetitle","commons.submit":"Отправить","commons.default":"По умолчанию","commons.back_to_home":"Вернуться на главную","commons.nothing":"ничего","commons.no_result":"Нет результатов","commons.information":"Информация","commons.permissions":"Разрешения","commons.send":"Отправить","commons.optimize":"Оптимизировать","errors.resource_not_found":"Ресурс не найден","errors.error_occured":"Произошла ошибка:","errors.refresh":"Обновить","errors.no_valid_otp":"В этом QR-коде нет допустимых OTP ресурсов","errors.something_wrong_with_server":"Что-то не так с вашим сервером","errors.Unable_to_decrypt_uri":"Не удалось расшифровать uri","errors.not_a_supported_otp_type":"Этот формат OTP в настоящее время не поддерживается","errors.cannot_create_otp_without_secret":"Невозможно создать OTP без секретного ключа","errors.data_of_qrcode_is_not_valid_URI":"Данные этого QR-кода не являются допустимым OTP Auth URI. QR-код содержит:","errors.wrong_current_password":"Неверный текущий пароль, ничего не было изменено","errors.error_during_encryption":"Сбой шифрования, ваша база данных остается незащищенной.","errors.error_during_decryption":"Сбой расшифровки, ваша база данных по-прежнему защищена. В основном, это вызвано проблемой целостности шифрованных данных для одной или нескольких учётных записей.","errors.qrcode_cannot_be_read":"Этот QR-код нечитаем","errors.too_many_ids":"в параметр запроса было включено слишком много идентификаторов, разрешено максимум 100","errors.delete_user_setting_only":"Могут быть удалены только настройки, созданные пользователем","errors.indecipherable":"*неразборчиво*","errors.cannot_decipher_secret":"Секретный ключ не может быть расшифрован. В основном это может быть вызвано неправильным APP_KEY в .env файле 2Fauth или поврежденными данными, хранящимися в базе данных.","errors.https_required":"Требуется HTTPS контекст","errors.browser_does_not_support_webauthn":"Ваше устройство не поддерживает webauth. Повторите попытку позже, используя более современный браузер","errors.aborted_by_user":"Прервано пользователем","errors.security_device_already_registered":"Устройство уже зарегистрировано","errors.not_allowed_operation":"Операция не разрешена","errors.no_authenticator_support_specified_algorithms":"Ни один аутентификатор не поддерживает указанные алгоритмы","errors.authenticator_missing_discoverable_credential_support":"В аутентификаторе отсутствует обнаруживаемая поддержка учетных данных","errors.authenticator_missing_user_verification_support":"В аутентификаторе отсутствует поддержка проверки пользователя","errors.unknown_error":"Неизвестная ошибка","errors.security_error_check_rpid":"Ошибка безопасности
Проверьте ваш переменную окружения WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"Домен 2FAuth не является допустимым доменом","errors.user_id_not_between_1_64":"Идентификатор пользователя не был от 1 до 64 символов","errors.no_entry_was_of_type_public_key":'Запись типа "Публичный ключ" не найдена',"errors.unsupported_with_reverseproxy":"Не применимо при использовании прокси-аутентификации","errors.user_deletion_failed":"Не удалось удалить учетную запись пользователя, данные не были удалены","errors.auth_proxy_failed":"Прокси-аунтификация не удалась","errors.auth_proxy_failed_legend":"2Fauth настроен на работу за прокси-аутентификацией, но ваш прокси не возвращает ожидаемый заголовок. Проверьте настройки и повторите попытку.","errors.invalid_x_migration":"Неверные или нечитаемые данные :appname","errors.invalid_2fa_data":"Неверные данные 2FA","errors.unsupported_migration":"Данные не соответствуют ни одному поддерживаемому формату","errors.unsupported_otp_type":"Неподдерживаемый тип OTP","errors.encrypted_migration":"Нечитаемо, данные кажутся зашифрованными","errors.no_logo_found_for_x":"Нет логотипа для :service","errors.file_upload_failed":"Не удалось загрузить файл","errors.unauthorized":"Авторизация не выполнена","errors.unauthorized_legend":"У вас нет разрешения на просмотр этого ресурса или выполнение этого действия","errors.cannot_delete_the_only_admin":"Невозможно удалить единственную учётную запись администратора","errors.error_during_data_fetching":"💀 Что-то пошло не так во время получения данных","errors.check_failed_try_later":"Проверка не удалась, повторите попытку позже","errors.sso_disabled":"SSO отключено","errors.sso_bad_provider_setup":"Этот SSO провайдер не полностью настроен в вашем .env файле","errors.sso_failed":"Аутентификация по SSO отклонена","errors.sso_no_register":"Регистрация отключена","errors.sso_email_already_used":"Учётная запись с таким же адресом электронной почты уже существует, но не соответствует внешнему идентификатору учётной записи. Не используйте SSO, если вы уже зарегистрированы на 2FAuth с этим email.","errors.account_managed_by_external_provider":"Учетная запись управляется внешним провайдером","errors.data_cannot_be_refreshed_from_server":"Не удалось обновить данные с сервера","errors.no_pwd_reset_for_this_user_type":"Для этого пользователя сброс пароля недоступен","groups.groups":"Группы","groups.create_group":"Создать новую группу","groups.show_group_selector":"Показать выбор групп","groups.hide_group_selector":"Скрыть выбор группы","groups.select_accounts_to_show":"Выберите группу учётных записей для отображения","groups.x_accounts":"учётных записей: :count","groups.manage_groups":"Управление группами","groups.active_group":"Активные группы","groups.manage_groups_legend":"Вы можете создать группы для организации ваших учётных записей. Все учётные записи остаются видимыми в служебной группе 'Все', независимо от группы, к которой они принадлежат.","groups.deleting_group_does_not_delete_accounts":"Удаление группы не удаляет учётные записи","groups.move_selected_to":"Переместить выбранные в","groups.move_selected_to_group":"Переместить выделенное в группу","groups.no_group":"Без группы","groups.change_group":"Изменить группу","groups.group_successfully_created":"Группа успешно создана","groups.group_name_saved":"Название группы сохранено","groups.group_successfully_deleted":"Группа успешно удалена","groups.forms.new_group":"Новая группа","groups.forms.new_name":"Новое имя","groups.forms.rename_group":"Переименовать группу","groups.confirm.delete":"Вы действительно хотите удалить эту группу?","languages.browser_preference":"Настройки браузера","languages.en":"English (Английский)","languages.fr":"Français (Французский)","languages.de":"Deutsch (Немецкий)","languages.es":"Español (Испанский)","languages.zh":"简体中文 (Китайский упрощенный)","languages.ru":"Русский (Русский)","languages.bg":"Български (Болгарский)","languages.ja":"日本語 (Японский)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Привет","notifications.test_email_settings.subject":"Тестовое письмо 2FAuth","notifications.test_email_settings.reason":"Вы получили это письмо, потому что вы запросили тестовое письмо, чтобы проверить настройки электронной почты вашего экземпляра 2FAuth.","notifications.test_email_settings.success":"Хорошие новости! Всё работает! :-)","pagination.previous":"« Назад","pagination.next":"Вперёд »","passwords.reset":"Ваш пароль был сброшен!","passwords.sent":"Ссылка на сброс пароля была отправлена!","passwords.throttled":"Пожалуйста, подождите перед повторной попыткой.","passwords.token":"Ошибочный код сброса пароля.","passwords.user":"Не удалось найти пользователя с указанным электронным адресом.","passwords.password":'Пароль должен содержать не менее восьми символов и совпадать с паролем в поле "подтверждение пароля".',"settings.settings":"Настройки","settings.preferences":"Настройки","settings.account":"Учётная запись","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Токены","settings.options":"Опции","settings.user_preferences":"Настройки пользователя","settings.admin_settings":"Настройки администратора","settings.confirm.revoke":"Вы уверены, что хотите отозвать этот токен?","settings.you_are_administrator":"Вы являетесь администратором","settings.account_linked_to_sso_x_provider":"Вы вошли через SSO с помощью учётной записи :provider. Ваша информация не может быть изменена здесь, измените данные в :provider.","settings.general":"Общие","settings.security":"Безопасность","settings.profile":"Профиль","settings.change_password":"Изменить пароль","settings.personal_access_tokens":"Персональные токены доступа","settings.token_legend":"Токены личного доступа позволяют любому приложению аутентифицироваться в API 2Fauth. Вам необходимо указать токен доступа как Bearer токен в HTTP заголовке Authorization запросов от клиентского приложения.","settings.generate_new_token":"Сгенерировать новый токен","settings.revoke":"Отозвать","settings.token_revoked":"Токен успешно отозван","settings.revoking_a_token_is_permanent":"Отзыв токена необратим","settings.make_sure_copy_token":"Убедитесь, что вы скопировали ваш персональный токен доступа прямо сейчас. Вы не сможете увидеть его снова!","settings.data_input":"Ввод данных","settings.forms.edit_settings":"Изменить настройки","settings.forms.setting_saved":"Настройки сохранены","settings.forms.new_token":"Новый токен","settings.forms.some_translation_are_missing":"Некоторые переводы отсутствуют на предпочитаемом языке?","settings.forms.help_translate_2fauth":"Помогите перевести 2FAuth","settings.forms.language.label":"Язык","settings.forms.language.help":"Язык, используемый для пользовательского интерфейса 2FAuth. Именованные языки полны, выберите язык, чтобы переопределить настройки браузера по умолчанию.","settings.forms.show_otp_as_dot.label":'Показать сгенерированный код OTP как звёздочки',"settings.forms.show_otp_as_dot.help":"Заменить сгенерированный код на звёздочки (***) для обеспечения конфиденциальности. Это не повлияет на функцию копирования/вставки","settings.forms.reveal_dotted_otp.label":'Раскрытие скрытых кодов OTP',"settings.forms.reveal_dotted_otp.help":"Разрешить временно раскрывать коды, скрытые звёздочками","settings.forms.close_otp_on_copy.label":'Закрыть OTP после копирования',"settings.forms.close_otp_on_copy.help":"Нажатие на сгенерированный код, чтобы скопировать его, автоматически скроет его с экрана","settings.forms.clear_search_on_copy.label":"Очистить поиск при копировании","settings.forms.clear_search_on_copy.help":"Очистить строку поиска сразу после копирования кода в буфер обмена","settings.forms.copy_otp_on_display.label":'Копировать OTP при отображении',"settings.forms.copy_otp_on_display.help":'Автоматически копировать сгенерированный код сразу после его появления на экране. Из-за ограничений браузеров, только первый пароль TOTP будет скопирован, но не последующие',"settings.forms.use_basic_qrcode_reader.label":"Использовать базовый сканер QR-кода","settings.forms.use_basic_qrcode_reader.help":"Если вы столкнулись с проблемами при захвате QR-кодов, это позволяет переключиться на более простой, но более надежный сканер QR-кодов","settings.forms.display_mode.label":"Режим отображения","settings.forms.display_mode.help":"Выберите, хотите ли вы отображать учётные записи как список или как сетку","settings.forms.password_format.label":"Форматирование кодов","settings.forms.password_format.help":"Изменить способ отображения кодов путем группировки цифр, чтобы облегчить чтение и запоминание","settings.forms.pair":"парами","settings.forms.pair_legend":"Группами по 2 цифры","settings.forms.trio_legend":"Группами по 3 цифры","settings.forms.half_legend":"Двумя одинаковыми группами","settings.forms.trio":"тройками","settings.forms.half":"половинками","settings.forms.grid":"Сетка","settings.forms.list":"Список","settings.forms.theme.label":"Тема","settings.forms.theme.help":"Принудительно использовать тему, определенную в настройках вашей системы/браузера","settings.forms.light":"Светлая","settings.forms.dark":"Тёмная","settings.forms.automatic":"Авто","settings.forms.show_accounts_icons.label":"Показать значки","settings.forms.show_accounts_icons.help":"Показывать значки учётных записей на главной","settings.forms.get_official_icons.label":"Получить официальные значки","settings.forms.get_official_icons.help":"(Пробовать) Получать официальную иконку эмитента 2FA при добавлении учётной записи","settings.forms.auto_lock.label":"Автоблокировка","settings.forms.auto_lock.help":"Выйти из учётной записи автоматически в случае неактивности. Не имеет эффекта, когда аутентификация обрабатывается прокси и не задан пользовательский адрес выхода.","settings.forms.default_group.label":"Группа по умолчанию","settings.forms.default_group.help":"Группа, к которой будут привязаны новые учётные данные","settings.forms.view_default_group_on_copy.label":"Показывать группу по умолчанию при копировании","settings.forms.view_default_group_on_copy.help":"Всегда возвращаться в группу по умолчанию когда код OTP скопирован","settings.forms.useDirectCapture.label":"Быстрый ввод","settings.forms.useDirectCapture.help":"Автоматически использовать способ ввода по умолчанию или предлагать выбор из доступных способов ввода","settings.forms.defaultCaptureMode.label":"Способ ввода по умолчанию","settings.forms.defaultCaptureMode.help":"Способ ввода по умолчанию, который будет использоваться при включенной опции быстрого ввода","settings.forms.remember_active_group.label":"Запомнить фильтр группы","settings.forms.remember_active_group.help":"Сохранить последний примененный фильтр группы и восстановить его при следующем посещении","settings.forms.otp_generation.label":"Показывать пароль","settings.forms.otp_generation.help":'Установка того, как и когда отображаются OTP .
',"settings.forms.otp_generation_on_request":"После щелчка/касания","settings.forms.otp_generation_on_request_legend":"По одиночке, в отдельном окне","settings.forms.otp_generation_on_request_title":"Щелкните на учётную запись, чтобы получить код в отдельном окне","settings.forms.otp_generation_on_home":"Постоянно","settings.forms.otp_generation_on_home_legend":"Все на домашней странице","settings.forms.otp_generation_on_home_title":"Показать все пароли в главной странице, без дополнительных действий","settings.forms.never":"Никогда","settings.forms.on_otp_copy":"При копировании кода","settings.forms.1_minutes":"Через 1 минуту","settings.forms.5_minutes":"Через 5 минут","settings.forms.10_minutes":"Через 10 минут","settings.forms.15_minutes":"Через 15 минут","settings.forms.30_minutes":"Через 30 минут","settings.forms.1_hour":"Через 1 час","settings.forms.1_day":"Через 1 день","settings.forms.livescan":"📷 Сфотографировать QR-код","settings.forms.upload":"📤 Загрузить файл с QR-кодом","settings.forms.advanced_form":"📋 Расширенная форма","titles.404":"Элемент не найден","titles.start":"Новая учётная запись","titles.capture":"Отсканируйте QR","titles.accounts":"Учётные записи","titles.createAccount":"Создать учётную запись","titles.importAccounts":"Импорт учётных записей","titles.editAccount":"Редактирование учётной записи","titles.showQRcode":"Учётная запись как QR-код","titles.groups":"Группы","titles.createGroup":"Создать группу","titles.editGroup":"Изменение группы","titles.settings.options":"Настройки","titles.settings.account":"Учётные записи пользователя","titles.settings.oauth.tokens":"OAuth Токены","titles.settings.oauth.generatePAT":"Новый персональный токен","titles.settings.webauthn.editCredential":"Редактирование устройства","titles.settings.webauthn.devices":"Устройства WebAuthn","titles.login":"Вход","titles.register":"Регистрация","titles.autolock":"Автоблокировка","titles.password.request":"Восстановить пароль","titles.password.reset":"Новый пароль","titles.webauthn.lost":"Восстановление доступа к учётной записи","titles.webauthn.recover":"Зарегистрировать новое устройство","titles.flooded":"Слишком много запросов","titles.genericError":"Ошибка","titles.about":"О программе","titles.admin.appSetup":"Настройки приложения","titles.admin.users":"Управление пользователями","titles.admin.createUser":"Создать пользователя","titles.admin.manageUser":"Управление пользователем","twofaccounts.service":"Сервис","twofaccounts.account":"Учётная запись","twofaccounts.icon":"Значок","twofaccounts.icon_for_account_x_at_service_y":"Значок учётной запсии :account для сервиса :service","twofaccounts.icon_to_illustrate_the_account":"Значок, который иллюстрирует учётную запись","twofaccounts.remove_icon":"Удалить значок","twofaccounts.no_account_here":"Ни одной учётной записи 2FA не добавлено!","twofaccounts.add_first_account":"Выберите способ и добавьте свою первую учётную запись","twofaccounts.use_full_form":"Или воспользуйтесь полной формой","twofaccounts.add_one":"Добавить один","twofaccounts.show_qrcode":"Показать QR код","twofaccounts.no_service":"- нет сервисов -","twofaccounts.account_created":"Учётная запись успешно создана","twofaccounts.account_updated":"Учётная запись успешно обновлена.","twofaccounts.accounts_deleted":"Учётная(ые) запись(и) успешно удалена(ы)","twofaccounts.accounts_moved":"Учётная(ые) запись(и) успешно перемещена(ы)","twofaccounts.export_selected_to_json":"Скачать json экспорт выбранных учётных записей","twofaccounts.reveal":"показать","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Иван Иванов","twofaccounts.forms.new_account":"Новая учётная запись","twofaccounts.forms.edit_account":"Редактировать учётную запись","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Сканировать QR-код","twofaccounts.forms.upload_qrcode":"Загрузить QR-код","twofaccounts.forms.use_advanced_form":"Использовать расширенную форму","twofaccounts.forms.prefill_using_qrcode":"Предзаполнить используя QR-код","twofaccounts.forms.use_qrcode.val":"Использовать QR-код","twofaccounts.forms.use_qrcode.title":"Использовать QR-код для волшебного заполнения формы","twofaccounts.forms.unlock.val":"Разблокировать","twofaccounts.forms.unlock.title":"Разблокировать (под вашу ответственность)","twofaccounts.forms.lock.val":"Заблокировать","twofaccounts.forms.lock.title":"Заблокировать","twofaccounts.forms.choose_image":"Загрузить","twofaccounts.forms.i_m_lucky":"Мне повезёт!","twofaccounts.forms.i_m_lucky_legend":'Кнопка "Мне повезёт!" попытается получить официальную иконку данной службы. Введите фактическое имя службы без расширения ".xyz" и попытайтесь избежать опечаток. (бета-функция)',"twofaccounts.forms.test":"Проверка","twofaccounts.forms.secret.label":"Секрет","twofaccounts.forms.secret.help":"Ключ, используемый для генерации кодов безопасности","twofaccounts.forms.plain_text":"Обычный текст","twofaccounts.forms.otp_type.label":'Выберите тип создаваемого OTP',"twofaccounts.forms.otp_type.help":"OTP на основе времени, OTP на основе HMAC или Steam OTP","twofaccounts.forms.digits.label":"Количество цифр","twofaccounts.forms.digits.help":"Количество цифр в генерируемом коде безопасности","twofaccounts.forms.algorithm.label":"Алгоритм","twofaccounts.forms.algorithm.help":"Алгоритм, используемый для защиты ваших кодов безопасности","twofaccounts.forms.period.label":"Интервал","twofaccounts.forms.period.placeholder":"По умолчанию - 30","twofaccounts.forms.period.help":"Период действия сгенерированных кодов безопасности в секундах","twofaccounts.forms.counter.label":"Счетчик","twofaccounts.forms.counter.placeholder":"По умолчанию - 0","twofaccounts.forms.counter.help":"Начальное значение счетчика","twofaccounts.forms.counter.help_lock":"Редактирование счётчика рискованно, так как вы можете рассинхронизировать учётную запись с сервером службы верификации. Используйте значок блокировки, чтобы включить изменение, но только если вы точно знаете, что вы делаете","twofaccounts.forms.image.label":"Изображение","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"Адрес внешнего изображения для использования в качестве значка учётной записи","twofaccounts.forms.options_help":"Вы можете оставить следующие значения пустыми, если не знаете, как их установить. Наиболее распространенные значения будут применены.","twofaccounts.forms.alternative_methods":"Альтернативные методы","twofaccounts.forms.spaces_are_ignored":"Нежелательные пробелы будут автоматически удалены","twofaccounts.stream.live_scan_cant_start":"Невозможно запустить сканирование в реальном времени :(","twofaccounts.stream.need_grant_permission.reason":"У 2FAuth нет разрешения на доступ к вашей камере","twofaccounts.stream.need_grant_permission.solution":"Вам нужно предоставить разрешение для использования камеры вашего устройства. Если вы уже отказались и ваш браузер не запрашивает у вас разрешения снова, обратитесь к документации браузера для выяснения того, как предоставить разрешение.","twofaccounts.stream.need_grant_permission.click_camera_icon":"Обычно это делается нажатием на перечеркнутый значок камеры в адресной строке браузера или рядом с ней","twofaccounts.stream.not_readable.reason":"Сбой загрузки сканера","twofaccounts.stream.not_readable.solution":"Камера уже используется? Убедитесь, что другое приложение не использует вашу камеру и попробуйте снова","twofaccounts.stream.no_cam_on_device.reason":"На устройстве нет камеры","twofaccounts.stream.no_cam_on_device.solution":"Может быть, вы забыли подключить веб-камеру","twofaccounts.stream.secured_context_required.reason":"Требуется HTTPS контекст","twofaccounts.stream.secured_context_required.solution":"Для сканирования в реальном времени требуется HTTPS. Если вы запускаете 2FAuth с вашего компьютера, не используйте виртуальный хост, отличный от localhost","twofaccounts.stream.https_required":"Для потоковой передачи с камеры требуется HTTPS","twofaccounts.stream.camera_not_suitable.reason":"Установленные камеры не подходят","twofaccounts.stream.camera_not_suitable.solution":"Пожалуйста, используйте другое устройство/камеру","twofaccounts.stream.stream_api_not_supported.reason":"Steam API не поддерживается в этом браузере","twofaccounts.stream.stream_api_not_supported.solution":"Вам следует использовать современный браузер","twofaccounts.confirm.delete":"Вы уверены, что хотите удалить эту учётную запись?","twofaccounts.confirm.cancel":"Изменения будут утеряны. Вы уверены?","twofaccounts.confirm.discard":"Вы уверены, что хотите отклонить эту учётную запись?","twofaccounts.confirm.discard_all":"Вы уверены, что хотите отклонить все учётные записи?","twofaccounts.confirm.discard_duplicates":"Вы уверены, что хотите отклонить все дубликаты?","twofaccounts.import.import":"Импорт","twofaccounts.import.to_import":"Импортировать","twofaccounts.import.import_legend":"2FAuth может импортировать данные из различных 2FA приложений.","twofaccounts.import.import_legend_afterpart":"Используйте функцию экспорта данных приложений, чтобы получить ресурс миграции, такой как QR-код или JSON файл, а затем загрузите его здесь.","twofaccounts.import.upload":"Загрузить","twofaccounts.import.scan":"Сканировать","twofaccounts.import.supported_formats_for_qrcode_upload":"Принимается: jpg, jpeg, png, bmp, gif, svg или webp","twofaccounts.import.supported_formats_for_file_upload":"Принимается: Простой текст, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"Ожидается: список OTPAuth URI, по одной в строке","twofaccounts.import.supported_migration_formats":"Поддерживаемые форматы миграции","twofaccounts.import.qr_code":"QR-код","twofaccounts.import.text_file":"Текстовый файл","twofaccounts.import.direct_input":"Быстрый ввод","twofaccounts.import.plain_text":"Простой текст","twofaccounts.import.parsing_data":"Анализ данных...","twofaccounts.import.issuer":"Эмитент","twofaccounts.import.imported":"Импортировано","twofaccounts.import.failure":"Неудачно","twofaccounts.import.x_valid_accounts_found":"Найдено действительных учётных записей :count","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"В ресурсе миграции были найдены учётные записи 2FA. Пока ни одна из них не была добавлена в 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Используйте доступные кнопки, чтобы навсегда сохранить их в вашей коллекции 2FA или отклонить их.","twofaccounts.import.import_all":"Импортировать все","twofaccounts.import.import_this_account":"Импортировать эту учётную запись","twofaccounts.import.discard_all":"Отклонить все","twofaccounts.import.discard_duplicates":"Отклонить дубликаты","twofaccounts.import.discard_this_account":"Отклонить эту учётную запись","twofaccounts.import.generate_a_test_password":"Сгенерировать тестовый код","twofaccounts.import.possible_duplicate":"Учётная запись с такими же данными уже существует","twofaccounts.import.invalid_account":"- неверная учётная запись -","twofaccounts.import.invalid_service":"- неверный сервис -","twofaccounts.import.do_not_set_password_or_encryption":"НЕ ВКЛЮЧАЙТЕ защиту паролем или шифрование при экспорте данных из приложения 2FA, иначе 2FAuth не сможет расшифровать их.","validation.accepted":"Вы должны принять :attribute.","validation.accepted_if":"Вы должны принять :attribute, когда :other соответствует :value.","validation.active_url":"Поле :attribute содержит недействительный URL.","validation.after":"В поле :attribute должна быть дата больше :date.","validation.after_or_equal":"В поле :attribute должна быть дата больше или равняться :date.","validation.alpha":"Значение поля :attribute может содержать только буквы.","validation.alpha_dash":"Значение поля :attribute может содержать только буквы, цифры, дефис и нижнее подчеркивание.","validation.alpha_num":"Значение поля :attribute может содержать только буквы и цифры.","validation.array":"Поле :attribute должно быть массивом.","validation.before":"В поле :attribute должна быть дата раньше :date.","validation.before_or_equal":"В поле :attribute должна быть дата раньше или равняться :date.","validation.between.array":"Количество элементов в поле :attribute должно быть между :min и :max.","validation.between.file":"Размер файла в поле :attribute должен быть между :min и :max Килобайт(а).","validation.between.numeric":"Поле :attribute должно быть между :min и :max.","validation.between.string":"Количество символов в поле :attribute должно быть между :min и :max.","validation.boolean":"Поле :attribute должно иметь значение логического типа.","validation.confirmed":"Поле :attribute не совпадает с подтверждением.","validation.current_password":"Неверный пароль.","validation.date":"Поле :attribute не является датой.","validation.date_equals":"Поле :attribute должно быть датой равной :date.","validation.date_format":"Поле :attribute не соответствует формату :format.","validation.declined":"Поле :attribute должно быть отклонено.","validation.declined_if":"Поле :attribute должно быть отклонено, когда :other равно :value.","validation.different":"Поля :attribute и :other должны различаться.","validation.digits":"Длина цифрового поля :attribute должна быть :digits.","validation.digits_between":"Длина цифрового поля :attribute должна быть между :min и :max.","validation.dimensions":"Поле :attribute имеет недопустимые размеры изображения.","validation.distinct":"Поле :attribute содержит повторяющееся значение.","validation.doesnt_end_with":"Значение поля :attribute не может заканчиваться одним из следующих: :values.","validation.doesnt_start_with":"Значение поля :attribute не может начинаться с одного из следующих: :values.","validation.email":"Поле :attribute должно быть действительным электронным адресом.","validation.ends_with":"Поле :attribute должно заканчиваться одним из следующих значений: :values","validation.enum":"Значение поля :attribute некорректно.","validation.exists":"Выбранное значение для :attribute некорректно.","validation.file":"Поле :attribute должно быть файлом.","validation.filled":"Поле :attribute обязательно для заполнения.","validation.gt.array":"Количество элементов в поле :attribute должно быть больше :value.","validation.gt.file":"Размер файла в поле :attribute должен быть больше :value Килобайт(а).","validation.gt.numeric":"Поле :attribute должно быть больше :value.","validation.gt.string":"Количество символов в поле :attribute должно быть больше :value.","validation.gte.array":"Количество элементов в поле :attribute должно быть :value или больше.","validation.gte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или больше.","validation.gte.numeric":"Значение поля :attribute должно быть :value или больше.","validation.gte.string":"Количество символов в поле :attribute должно быть :value или больше.","validation.image":"Поле :attribute должно быть изображением.","validation.in":"Выбранное значение для :attribute ошибочно.","validation.in_array":"Поле :attribute не существует в :other.","validation.integer":"Поле :attribute должно быть целым числом.","validation.ip":"Поле :attribute должно быть действительным IP-адресом.","validation.ipv4":"Поле :attribute должно быть действительным IPv4-адресом.","validation.ipv6":"Поле :attribute должно быть действительным IPv6-адресом.","validation.json":"Поле :attribute должно быть JSON строкой.","validation.lt.array":"Количество элементов в поле :attribute должно быть меньше :value.","validation.lt.file":"Размер файла в поле :attribute должен быть меньше :value Килобайт(а).","validation.lt.numeric":"Поле :attribute должно быть меньше :value.","validation.lt.string":"Количество символов в поле :attribute должно быть меньше :value.","validation.lte.array":"Количество элементов в поле :attribute должно быть :value или меньше.","validation.lte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или меньше.","validation.lte.numeric":"Значение поля :attribute должно быть равным или меньше :value.","validation.lte.string":"Количество символов в поле :attribute должно быть :value или меньше.","validation.mac_address":"Значение поля :attribute должно быть корректным MAC-адресом.","validation.max.array":"Количество элементов в поле :attribute не может превышать :max.","validation.max.file":"Размер файла в поле :attribute не может быть больше :max Кб.","validation.max.numeric":"Значение поля :attribute не может быть больше :max.","validation.max.string":"Количество символов в значении поля :attribute не может превышать :max.","validation.max_digits":"Значение поля :attribute не должно содержать больше :max цифр.","validation.mimes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.mimetypes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.min.array":"Количество элементов в поле :attribute должно быть не меньше :min.","validation.min.file":"Размер файла в поле :attribute должен быть не меньше :min Килобайт(а).","validation.min.numeric":"Поле :attribute должно быть не меньше :min.","validation.min.string":"Количество символов в поле :attribute должно быть не меньше :min.","validation.min_digits":"Значение поля :attribute должно содержать не меньше :min цифр.","validation.multiple_of":"Значение поля :attribute должно быть кратным :value","validation.not_in":"Выбранное значение для :attribute ошибочно.","validation.not_regex":"Выбранный формат для :attribute ошибочный.","validation.numeric":"Поле :attribute должно быть числом.","validation.password.letters":"Значение поля :attribute должно содержать хотя бы одну букву.","validation.password.mixed":"Значение поля :attribute должно содержать хотя бы одну прописную и одну строчную буквы.","validation.password.numbers":"Значение поля :attribute должно содержать хотя бы одну цифру.","validation.password.symbols":"Значение поля :attribute должно содержать хотя бы один символ.","validation.password.uncompromised":"Значение поля :attribute обнаружено в утёкших данных. Пожалуйста, выберите другое значение для :attribute.","validation.present":"Поле :attribute должно присутствовать.","validation.prohibited":"Значение поля :attribute запрещено.","validation.prohibited_if":"Значение поля :attribute запрещено, когда :other равно :value.","validation.prohibited_unless":"Значение поля :attribute запрещено, если :other не состоит в :values.","validation.prohibits":"Значение поля :attribute запрещает присутствие :other.","validation.regex":"Поле :attribute имеет ошибочный формат.","validation.required":"Поле :attribute обязательно для заполнения.","validation.required_array_keys":"Массив в поле :attribute обязательно должен иметь ключи: :values","validation.required_if":"Поле :attribute обязательно для заполнения, когда :other равно :value.","validation.required_if_accepted":"Поле :attribute обязательно, когда :other принято.","validation.required_unless":"Поле :attribute обязательно для заполнения, когда :other не равно :values.","validation.required_with":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_with_all":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_without":"Поле :attribute обязательно для заполнения, когда :values не указано.","validation.required_without_all":"Поле :attribute обязательно для заполнения, когда ни одно из :values не указано.","validation.same":"Значения полей :attribute и :other должны совпадать.","validation.size.array":"Количество элементов в поле :attribute должно быть равным :size.","validation.size.file":"Размер файла в поле :attribute должен быть равен :size Килобайт(а).","validation.size.numeric":"Поле :attribute должно быть равным :size.","validation.size.string":"Количество символов в поле :attribute должно быть равным :size.","validation.starts_with":"Поле :attribute должно начинаться из одного из следующих значений: :values","validation.string":"Поле :attribute должно быть строкой.","validation.timezone":"Значением поля :attribute должен быть действительный часовой пояс.","validation.unique":"Такое значение поля :attribute уже существует.","validation.uploaded":"Загрузка поля :attribute не удалась.","validation.url":"Значением поля :attribute должен быть допустимым URL.","validation.uuid":"Поле :attribute должно быть корректным UUID.","validation.single":"При использовании :attribute - это должен быть единственный параметр в теле этого запроса","validation.onlyCustomOtpWithUri":"Параметр uri должен быть указан один или в сочетании с параметром 'custom_otp'","validation.custom.icon.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.qrcode.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.uri.regex":"Поле :attribute не является ссылкой аутентификатора.","validation.custom.otp_type.in":":attribute не поддерживается.","validation.custom.email.exists":"Учётная запись с таким электронным адресом не найдена.","validation.custom.email.ComplyWithEmailRestrictionPolicy":"Этот адрес электронной почты не соответствует условиям регистрации","validation.custom.email.IsValidEmailList":"Все адреса электронной почты должны быть действительными и разделены вертикальной чертой","validation.custom.secret.isBase32Encoded":"Поле :attribute должно быть закодированной base32 строкой.","validation.custom.account.regex":":attribute не должен содержать двоеточий.","validation.custom.service.regex":":attribute не должен содержать двоеточие.","validation.custom.label.required":"URI должен иметь метку.","validation.custom.ids.regex":"Идентификаторы должны быть разделены запятыми. Запятая в конце не ставится."};export{t as default}; diff --git a/public/build/assets/php_ru-e41b0033.js b/public/build/assets/php_ru-e41b0033.js new file mode 100644 index 00000000..9a9b57b0 --- /dev/null +++ b/public/build/assets/php_ru-e41b0033.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Администратор","admin.app_setup":"Настройки приложения","admin.registrations":"Регистрации","admin.users":"Пользователи","admin.users_legend":"Управление пользователями, зарегистрированными на вашем экземпляре приложения или создание новых.","admin.admin_settings":"Административные настройки","admin.create_new_user":"Создать пользователя","admin.new_user":"Новый пользователь","admin.search_user_placeholder":"Имя пользователя, email...","admin.quick_filters_colons":"Быстрые фильтры:","admin.user_created":"пользователь успешно создан","admin.confirm.delete_user":"Вы уверены, что хотите удалить этого пользователя? Это действие невозможно отменить.","admin.confirm.request_password_reset":"Вы уверены, что хотите сбросить пароль этого пользователя?","admin.confirm.purge_password_reset_request":"Вы уверены, что хотите удалить заявку?","admin.confirm.delete_account":"Вы действительно хотите удалить этого пользователя?","admin.confirm.edit_own_account":"Это ваша собственная учётная запись. Вы уверены?","admin.confirm.change_admin_role":"Это будет иметь серьезные последствия для разрешений этого пользователя. Вы уверены?","admin.confirm.demote_own_account":"Вы больше не будете администратором. Вы уверены?","admin.logs":"Журналы","admin.administration_legend":"Следующие настройки являются глобальными и будут применены ко всем пользователям.","admin.user_management":"Управление пользователем","admin.oauth_provider":"Провайдер OAuth","admin.account_bound_to_x_via_oauth":"Эта учётная запись привязана к учётной записи :provider через OAuth","admin.last_seen_on_date":"Последнее посещение: :date","admin.registered_on_date":"Дата регистрации: :date","admin.updated_on_date":"Дата последнего обновления: :date","admin.access":"Доступ","admin.password_requested_on_t":"Запрос на сброс пароля уже существует для этого пользователя (отправлен :date), что означает, что пользователь еще не изменил свой пароль, но ссылка, которую он получил, всё ещё является действительной. Это может быть запрос как от самого пользователя, так и от администратора.","admin.password_request_expired":"Запрос на сброс пароля уже существует для этого пользователя, но срок его действия истёк, что означает, что пользователь не успел изменить свой пароль вовремя. Это мог быть запрос как от самого пользователя, так и от администратора.","admin.resend_email":"Отправить письмо еще раз","admin.resend_email_title":"Отправить письмо для сброса пароля пользователю ещё раз","admin.resend_email_help":"Используйте Отправить письмо ещё раз , чтобы отправить пользователю новое письмо для сброса пароля. Это не изменит текущий пароль, а предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password":"Сбросить пароль","admin.reset_password_help":"Используйте Сбросить пароля для принудительного сброса пароля (это установит временный пароль) перед отправкой пользователю письма для сброса пароля, чтобы он мог установить новый пароль. Предыдущий запрос для сброса пароля будет аннулирован.","admin.reset_password_title":"Сбросить пароль пользователя","admin.password_successfully_reset":"Пароль успешно сброшен","admin.user_has_x_active_pat":":count активных токен(ов)","admin.user_has_x_security_devices":":count устройств(о) безопасности (passkeys)","admin.revoke_all_pat_for_user":"Отозвать все токены пользователя","admin.revoke_all_devices_for_user":"Отменить все устройства безопасности пользователя","admin.danger_zone":"ОСТОРОЖНО!!!","admin.delete_this_user_legend":"Учётная запись пользователя будет удалена, а также все её данные 2FA.","admin.this_is_not_soft_delete":"Это не мягкое удаление, это действие невозможно отменить.","admin.delete_this_user":"Удалить этого пользователя","admin.user_role_updated":"Роль пользователя обновлена","admin.pats_succesfully_revoked":"Персональные токены доступа пользователя успешно отозваны","admin.security_devices_succesfully_revoked":"Устройства безопасности пользователя успешно отозваны","admin.variables":"Переменные","admin.cache_cleared":"Кэш очищен","admin.cache_optimized":"Кэш оптимизирован","admin.check_now":"Проверить","admin.view_on_github":"Посмотреть на GitHub","admin.x_is_available":"Новая версия :version доступна","admin.forms.use_encryption.label":"Защитить конфиденциальные данные","admin.forms.use_encryption.help":"Конфиденциальные данные, секреты 2FA и адреса email хранятся в зашифрованном виде в базе данных. Убедитесь, что у вас есть резервная копия значения APP_KEY вашего .env файла (или весь файл) так как оно служит в качестве ключа шифрования. Не существует способа расшифровки данных без этого ключа.","admin.forms.restrict_registration.label":"Ограничить регистрацию","admin.forms.restrict_registration.help":"Сделайте регистрацию доступной только для ограниченного диапазона адресов электронной почты. Оба правила могут использоваться одновременно. Это не влияет на регистрацию через SSO.","admin.forms.restrict_list.label":"Список фильтрации","admin.forms.restrict_list.help":'Регистрация будет доступна для адресов электронной почты из этого списка. Разделяйте адреса символом вертикальной черты ("|")',"admin.forms.restrict_rule.label":"Правила фильтрации","admin.forms.restrict_rule.help":"Регистрация будет доступна для адресов электронной почты, удовлетворяющих регулярному выражению","admin.forms.disable_registration.label":"Отключить регистрацию","admin.forms.disable_registration.help":"Запретить регистрацию новых пользователей. Если не переопределено (см. ниже), это также влияет на SSO, так что новые пользователи не смогут войти через SSO","admin.forms.enable_sso.label":"Включить Single Sign-On (SSO)","admin.forms.enable_sso.help":"Разрешить посетителям аутентифицироваться с использованием внешнего ID через схему Single Sign-On","admin.forms.keep_sso_registration_enabled.label":"Сохранить SSO регистрацию включенной","admin.forms.keep_sso_registration_enabled.help":"Разрешить новым пользователям входить в систему впервые через SSO, пока регистрация отключена","admin.forms.is_admin.label":"Администратор","admin.forms.is_admin.help":"Даёт пользователю права администратора. Администраторы имеют разрешения на управление всем приложением, то есть настройками и другими пользователями, но не могут генерировать пароли для 2FA, которыми они не владеют.","admin.forms.test_email.label":"Тест конфигурации электронной почты","admin.forms.test_email.help":"Отправить тестовое письмо для проверки конфигурации электронной почты вашего экземпляра 2FAuth. Важно иметь работающую конфигурацию, иначе пользователи не смогут запросить пароль для сброса.","admin.forms.test_email.email_will_be_send_to_x":'Письмо будет отправлено на адрес :email',"admin.forms.cache_management.label":"Управление кэшем","admin.forms.cache_management.help":"Иногда кэш должен быть очищен, например, после изменения переменных окружения или обновления приложения. Вы можете сделать это отсюда.","auth.failed":"Неверное имя пользователя или пароль.","auth.password":"Некорректный пароль.","auth.throttle":"Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.","auth.sign_out":"Выйти","auth.sign_in":"Войти","auth.sign_in_using":"Войти с помощью","auth.or_continue_with":"Вы также можете продолжить с:","auth.sign_in_using_security_device":"Войти, используя устройство безопасности","auth.login_and_password":"имени пользователя и пароля","auth.register":"Регистрация","auth.welcome_to_2fauth":"Добро пожаловать в 2FAuth","auth.autolock_triggered":"Сработала автоматическая блокировка","auth.autolock_triggered_punchline":"Произошло событие которое, отслеживалось функцией автоблокировки. Вы были автоматически отключены.","auth.already_authenticated":"Вы уже аутентифицированы","auth.authentication":"Аутентификация","auth.maybe_later":"Не сейчас","auth.user_account_controlled_by_proxy":"Учётная запись создана через прокси-аунтификацию.
Управляйте учётной записью на уровне прокси.","auth.auth_handled_by_proxy":"Аутентификация осуществляется на обратном прокси, настройки ниже не доступны.
Управление аутентификацией осуществляется на прокси.","auth.confirm.logout":"Вы уверены, что хотите выйти?","auth.confirm.revoke_device":"Вы уверены, что хотите удалить это устройство?","auth.confirm.delete_account":"Вы уверены, что хотите удалить свою учётную запись?","auth.webauthn.security_device":"устройства безопасности","auth.webauthn.security_devices":"Устройства безопасности","auth.webauthn.security_devices_legend":"Устройства аутентификации, которые можно использовать для входа в систему 2FAuth, такие как ключи безопасности (например, Yubikey) или смартфоны с биометрическими возможностями (например, Apple FaceId/TouchId)","auth.webauthn.enhance_security_using_webauthn":`Вы можете повысить безопасность учётной записи 2FAuth, включив аутентификацию WebAuthn.

+ WebAuthn позволяет использовать доверенные устройства (например, Yubikeys или смартфоны с биометрическими возможностями) для безопасного входа.`,"auth.webauthn.use_security_device_to_sign_in":"Будьте готовы пройти аутентификацию с помощью (одного из) ваших устройств безопасности. Вставьте ключ, снимите маску или перчатки и т.д.","auth.webauthn.lost_your_device":"Потеряли устройство?","auth.webauthn.recover_your_account":"Восстановите доступ к учётной записи","auth.webauthn.account_recovery":"Восстановление доступа к учётной записи","auth.webauthn.recovery_punchline":"2FAuth отправит вам ссылку для восстановления на этот адрес электронной почты. Нажмите на ссылку в полученном письме и следуйте инструкциям.

Убедитесь, что вы откроете письмо на вашем полностью проверенном устройстве.","auth.webauthn.send_recovery_link":"Отправить ссылку для восстановления","auth.webauthn.account_recovery_email_sent":"Письмо для восстановления доступа к учётной записи отправлено!","auth.webauthn.disable_all_security_devices":"Отключить все устройства безопасности","auth.webauthn.disable_all_security_devices_help":"Все ваши устройства безопасности будут отозваны. Используйте эту опцию, если вы потеряли их или их безопасность была скомпрометирована.","auth.webauthn.register_a_new_device":"Зарегистрировать новое устройство","auth.webauthn.register_a_device":"Зарегистрировать устройство","auth.webauthn.device_successfully_registered":"Устройство успешно зарегистрировано","auth.webauthn.device_revoked":"Устройство успешно деактивировано","auth.webauthn.revoking_a_device_is_permanent":"Удаление устройства необратимо","auth.webauthn.recover_account_instructions":"Чтобы восстановить вашу учётную запись, 2FAuth сбрасывает некоторые настройки Webauthn, чтобы вы могли войти с помощью электронной почты и пароля.","auth.webauthn.invalid_recovery_token":"Неверный код восстановления","auth.webauthn.webauthn_login_disabled":"Webauthn вход отключен","auth.webauthn.invalid_reset_token":"Этот токен сброса недействителен.","auth.webauthn.rename_device":"Переименовать устройство","auth.webauthn.my_device":"Моё устройство","auth.webauthn.unknown_device":"Неизвестное устройство","auth.webauthn.use_webauthn_only.label":"Использовать только WebAuthn","auth.webauthn.use_webauthn_only.help":`Сделать WebAuthn единственным авторизованным методом входа в вашу учётную запись 2FAuth. Это рекомендуемая настройка, позволяющая воспользоваться преимуществами повышенной безопасности WebAuthn.

+ В случае утери устройства вы сможете восстановить свою учётную запись, сбросив эту опцию и войдя в систему, используя свой адрес электронной почты и пароль.

+ Внимание! Форма электронной почты и пароля остаётся доступной, несмотря на то, что эта опция включена, но она всегда будет возвращать ответ «Ошибка аутентификации».`,"auth.webauthn.need_a_security_device_to_enable_options":"Настройте хотя бы одно устройство для включения следующих параметров","auth.webauthn.options":"Параметры","auth.forms.name":"Имя","auth.forms.login":"Вход","auth.forms.webauthn_login":"WebAuthn вход","auth.forms.email":"Email","auth.forms.password":"Пароль","auth.forms.reveal_password":"Показать пароль","auth.forms.hide_password":"Скрыть пароль","auth.forms.confirm_password":"Подтверждение пароля","auth.forms.new_password":"Новый пароль","auth.forms.confirm_new_password":"Подтвердить новый пароль","auth.forms.dont_have_account_yet":"Еще нет учётной записи?","auth.forms.already_register":"Уже зарегистрированы?","auth.forms.authentication_failed":"Ошибка аутентификации","auth.forms.forgot_your_password":"Забыли пароль?","auth.forms.request_password_reset":"Восстановить","auth.forms.reset_your_password":"Восстановить пароль","auth.forms.reset_password":"Восстановить пароль","auth.forms.disabled_in_demo":"Функция отключена в демонастрационном режиме","auth.forms.current_password.label":"Текущий пароль","auth.forms.current_password.help":"Введите ваш текущий пароль для подтверждения, что это действительно вы","auth.forms.change_password":"Изменить пароль","auth.forms.send_password_reset_link":"Отправить ссылку для восстановления пароля","auth.forms.password_successfully_reset":"Пароль успешно сброшен","auth.forms.edit_account":"Редактировать учётную запись","auth.forms.profile_saved":"Профиль успешно обновлён!","auth.forms.welcome_to_demo_app_use_those_credentials":"Добро пожаловать в демонстрационный режим 2FAuth.

Вы можете подключиться используя email адрес demo@2fauth.app и пароль demo","auth.forms.welcome_to_testing_app_use_those_credentials":"Добро пожаловать в тестовое окружение 2FAuth.

Используйте email адрес testing@2fauth.app и пароль password","auth.forms.register_punchline":"Добро пожаловать в 2FAuth.
Вам необходима учётная запись, чтобы продолжить, пожалуйста, зарегистрируйте себя.","auth.forms.reset_punchline":"2FAuth вышлет вам ссылку для сброса пароля на этот адрес. Нажмите на ссылку в полученном письме, чтобы установить новый пароль.","auth.forms.name_this_device":"Назвать это устройство","auth.forms.delete_account":"Удалить учётную запись","auth.forms.delete_your_account":"Удалить учётную запись","auth.forms.delete_your_account_and_reset_all_data":"Ваша учётная запись пользователя будет удалена вместе со всеми вашими данными 2FA.
Это действие невозможно отменить.","auth.forms.reset_your_password_to_delete_your_account":"Если вы всегда использовали SSO для входа, выйдите из системы, а затем воспользуйтесь функцией сброса пароля, чтобы получить пароль и заполнить эту форму.","auth.forms.deleting_2fauth_account_does_not_impact_provider":"Удаление вашей учётной записи 2FAuth не влияет на вашу внешнюю учётную запись SSO.","auth.forms.user_account_successfully_deleted":"Учётная запись пользователя успешно удалена","auth.forms.has_lower_case":"маленькие буквы","auth.forms.has_upper_case":"заглавные буквы","auth.forms.has_special_char":"специальный символы","auth.forms.has_number":"цифры","auth.forms.is_long_enough":"Минимум 8 символов","auth.forms.mandatory_rules":"Обязательно","auth.forms.optional_rules_you_should_follow":"Рекомендуется (настоятельно)","auth.forms.caps_lock_is_on":"Caps lock включен","commons.cancel":"Отмена","commons.update":"Обновить","commons.copy":"Скопировать","commons.copy_to_clipboard":"Скопировать в буфер обмена","commons.copied_to_clipboard":"Скопировано в буфер обмена","commons.profile":"Профиль","commons.edit":"Редактировать","commons.delete":"Удалить","commons.disable":"Выключить","commons.enable":"Включить","commons.create":"Создать","commons.save":"Сохранить","commons.close":"Закрыть","commons.clear":"Очистить","commons.clear_search":"Очистить поиск","commons.demo_do_not_post_sensitive_data":"Это демонстрационное приложение, не размещайте конфиденциальные данные","commons.testing_do_not_post_sensitive_data":"Это тестовое приложение, не оставляйте конфиденциальные данные","commons.x_selected":"Выбрано :count","commons.name":"Имя","commons.manage":"Управление","commons.done":"Готово","commons.new":"Новый","commons.back":"Назад","commons.move":"Переместить","commons.export":"Экспорт","commons.all":"Все","commons.check_all":"Выбрать всё","commons.select_all":"Выбрать все","commons.clear_selection":"Очистить выделение","commons.sort_descending":"По убыванию","commons.sort_ascending":"По возрастанию","commons.rename":"Переименовать","commons.new_name":"Новое имя","commons.options":"Настройки","commons.reload":"Обновить","commons.refresh":"Обновить","commons.data_refreshed_to_reflect_server_changes":"Данные обновлены, чтобы отразить изменения со стороны сервера","commons.generate":"Генерировать","commons.generating_otp":"Генерация OTP","commons.open_in_browser":"Открыть в браузере","commons.continue":"Продолжить","commons.discard":"Отменить","commons.about":"О программе","commons.usefull_links":"Полезные ссылки","commons.environment":"Окружение","commons.credits":"Авторы","commons.2fauth_teaser":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учётных записей и генерации кодов безопасности","commons.made_with":"Сделано с использованием","commons.ui_icons_by":"Иконки пользовательского интерфейса","commons.logos_by":"Логотипы","commons.search":"Поиск","commons.resources":"Ресурсы","commons.check_for_update":"Проверить обновления","commons.check_for_update_help":"Автоматически проверять (раз в неделю) и предупреждать о выходе новой версии 2FAuth на Github","commons.you_are_up_to_date":"Установленна последная версия","commons.2fauth_description":"Веб-приложение для управления двухфакторной аутентификацией (2FA) учётных записей и генерации кодов безопасности","commons.image_of_qrcode_to_scan":"Изображение QR-кода для сканирования","commons.file":"Файл","commons.or":"или","commons.close_the_x_page":"Закрыть страницу :pagetitle","commons.submit":"Отправить","commons.default":"По умолчанию","commons.back_to_home":"Вернуться на главную","commons.nothing":"ничего","commons.no_result":"Нет результатов","commons.information":"Информация","commons.permissions":"Разрешения","commons.send":"Отправить","commons.optimize":"Оптимизировать","errors.resource_not_found":"Ресурс не найден","errors.error_occured":"Произошла ошибка:","errors.refresh":"Обновить","errors.no_valid_otp":"В этом QR-коде нет допустимых OTP ресурсов","errors.something_wrong_with_server":"Что-то не так с вашим сервером","errors.Unable_to_decrypt_uri":"Не удалось расшифровать uri","errors.not_a_supported_otp_type":"Этот формат OTP в настоящее время не поддерживается","errors.cannot_create_otp_without_secret":"Невозможно создать OTP без секретного ключа","errors.data_of_qrcode_is_not_valid_URI":"Данные этого QR-кода не являются допустимым OTP Auth URI. QR-код содержит:","errors.wrong_current_password":"Неверный текущий пароль, ничего не было изменено","errors.error_during_encryption":"Сбой шифрования, ваша база данных остается незащищённой.","errors.error_during_decryption":"Сбой расшифровки, ваша база данных по-прежнему защищена. В основном, это вызвано проблемой целостности шифрованных данных для одной или нескольких учётных записей.","errors.qrcode_cannot_be_read":"Этот QR-код нечитаем","errors.too_many_ids":"в параметр запроса было включено слишком много идентификаторов, разрешено максимум 100","errors.delete_user_setting_only":"Могут быть удалены только настройки, созданные пользователем","errors.indecipherable":"*неразборчиво*","errors.cannot_decipher_secret":"Секретный ключ не может быть расшифрован. В основном это может быть вызвано неправильным APP_KEY в .env файле 2Fauth или повреждёнными данными, хранящимися в базе данных.","errors.https_required":"Требуется HTTPS контекст","errors.browser_does_not_support_webauthn":"Ваше устройство не поддерживает WebAuthn. Повторите попытку позже, используя более современный браузер","errors.aborted_by_user":"Прервано пользователем","errors.security_device_already_registered":"Устройство уже зарегистрировано","errors.not_allowed_operation":"Операция не разрешена","errors.no_authenticator_support_specified_algorithms":"Ни один аутентификатор не поддерживает указанные алгоритмы","errors.authenticator_missing_discoverable_credential_support":"В аутентификаторе отсутствует обнаруживаемая поддержка учётных данных","errors.authenticator_missing_user_verification_support":"В аутентификаторе отсутствует поддержка проверки пользователя","errors.unknown_error":"Неизвестная ошибка","errors.security_error_check_rpid":"Ошибка безопасности
Проверьте ваш переменную окружения WEBAUTHN_ID","errors.2fauth_has_not_a_valid_domain":"Домен 2FAuth не является допустимым доменом","errors.user_id_not_between_1_64":"Идентификатор пользователя не был от 1 до 64 символов","errors.no_entry_was_of_type_public_key":'Запись типа "Публичный ключ" не найдена',"errors.unsupported_with_reverseproxy":"Не применимо при использовании прокси-аутентификации","errors.user_deletion_failed":"Не удалось удалить учётную запись пользователя, данные не были удалены","errors.auth_proxy_failed":"Прокси-аунтификация не удалась","errors.auth_proxy_failed_legend":"2Fauth настроен на работу за прокси-аутентификацией, но ваш прокси не возвращает ожидаемый заголовок. Проверьте настройки и повторите попытку.","errors.invalid_x_migration":"Неверные или нечитаемые данные :appname","errors.invalid_2fa_data":"Неверные данные 2FA","errors.unsupported_migration":"Данные не соответствуют ни одному поддерживаемому формату","errors.unsupported_otp_type":"Неподдерживаемый тип OTP","errors.encrypted_migration":"Нечитаемо, данные кажутся зашифрованными","errors.no_logo_found_for_x":"Нет логотипа для :service","errors.file_upload_failed":"Не удалось загрузить файл","errors.unauthorized":"Авторизация не выполнена","errors.unauthorized_legend":"У вас нет разрешения на просмотр этого ресурса или выполнение этого действия","errors.cannot_delete_the_only_admin":"Невозможно удалить единственную учётную запись администратора","errors.error_during_data_fetching":"💀 Что-то пошло не так во время получения данных","errors.check_failed_try_later":"Проверка не удалась, повторите попытку позже","errors.sso_disabled":"SSO отключено","errors.sso_bad_provider_setup":"Этот SSO провайдер не полностью настроен в вашем .env файле","errors.sso_failed":"Аутентификация по SSO отклонена","errors.sso_no_register":"Регистрация отключена","errors.sso_email_already_used":"Учётная запись с таким же адресом электронной почты уже существует, но не соответствует внешнему идентификатору учётной записи. Не используйте SSO, если вы уже зарегистрированы на 2FAuth с этим email.","errors.account_managed_by_external_provider":"Учётная запись управляется внешним провайдером","errors.data_cannot_be_refreshed_from_server":"Не удалось обновить данные с сервера","errors.no_pwd_reset_for_this_user_type":"Для этого пользователя сброс пароля недоступен","groups.groups":"Группы","groups.create_group":"Создать новую группу","groups.show_group_selector":"Показать выбор групп","groups.hide_group_selector":"Скрыть выбор группы","groups.select_accounts_to_show":"Выберите группу учётных записей для отображения","groups.x_accounts":"учётных записей: :count","groups.manage_groups":"Управление группами","groups.active_group":"Активные группы","groups.manage_groups_legend":"Вы можете создать группы для организации ваших учётных записей. Все учётные записи остаются видимыми в служебной группе 'Все', независимо от группы, к которой они принадлежат.","groups.deleting_group_does_not_delete_accounts":"Удаление группы не удаляет учётные записи","groups.move_selected_to":"Переместить выбранные в","groups.move_selected_to_group":"Переместить выделенное в группу","groups.no_group":"Без группы","groups.change_group":"Изменить группу","groups.group_successfully_created":"Группа успешно создана","groups.group_name_saved":"Название группы сохранено","groups.group_successfully_deleted":"Группа успешно удалена","groups.forms.new_group":"Новая группа","groups.forms.new_name":"Новое имя","groups.forms.rename_group":"Переименовать группу","groups.confirm.delete":"Вы действительно хотите удалить эту группу?","languages.browser_preference":"Настройки браузера","languages.en":"English (Английский)","languages.fr":"Français (Французский)","languages.de":"Deutsch (Немецкий)","languages.es":"Español (Испанский)","languages.zh":"简体中文 (Китайский упрощенный)","languages.ru":"Русский (Русский)","languages.bg":"Български (Болгарский)","languages.ja":"日本語 (Японский)","languages.hi":"हिंदी (Хинди)","notifications.hello":"Привет","notifications.test_email_settings.subject":"Тестовое письмо 2FAuth","notifications.test_email_settings.reason":"Вы получили это письмо, потому что вы запросили тестовое письмо, чтобы проверить настройки электронной почты вашего экземпляра 2FAuth.","notifications.test_email_settings.success":"Хорошие новости! Всё работает! :-)","pagination.previous":"« Назад","pagination.next":"Вперёд »","passwords.reset":"Ваш пароль был сброшен!","passwords.sent":"Ссылка на сброс пароля была отправлена!","passwords.throttled":"Пожалуйста, подождите перед повторной попыткой.","passwords.token":"Ошибочный код сброса пароля.","passwords.user":"Не удалось найти пользователя с указанным электронным адресом.","passwords.password":'Пароль должен содержать не менее восьми символов и совпадать с паролем в поле "подтверждение пароля".',"settings.settings":"Настройки","settings.preferences":"Настройки","settings.account":"Учётная запись","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"Токены","settings.options":"Опции","settings.user_preferences":"Настройки пользователя","settings.admin_settings":"Настройки администратора","settings.confirm.revoke":"Вы уверены, что хотите отозвать этот токен?","settings.you_are_administrator":"Вы являетесь администратором","settings.account_linked_to_sso_x_provider":"Вы вошли через SSO с помощью учётной записи :provider. Ваша информация не может быть изменена здесь, измените данные в :provider.","settings.general":"Общие","settings.security":"Безопасность","settings.profile":"Профиль","settings.change_password":"Изменить пароль","settings.personal_access_tokens":"Персональные токены доступа","settings.token_legend":"Токены личного доступа позволяют любому приложению аутентифицироваться в API 2Fauth. Вам необходимо указать токен доступа как Bearer токен в HTTP заголовке Authorization запросов от клиентского приложения.","settings.generate_new_token":"Сгенерировать новый токен","settings.revoke":"Отозвать","settings.token_revoked":"Токен успешно отозван","settings.revoking_a_token_is_permanent":"Отзыв токена необратим","settings.make_sure_copy_token":"Убедитесь, что вы скопировали ваш персональный токен доступа прямо сейчас. Вы не сможете увидеть его снова!","settings.data_input":"Ввод данных","settings.forms.edit_settings":"Изменить настройки","settings.forms.setting_saved":"Настройки сохранены","settings.forms.new_token":"Новый токен","settings.forms.some_translation_are_missing":"Некоторые переводы отсутствуют на предпочитаемом языке?","settings.forms.help_translate_2fauth":"Помогите перевести 2FAuth","settings.forms.language.label":"Язык","settings.forms.language.help":"Язык, используемый для пользовательского интерфейса 2FAuth. Именованные языки полны, выберите язык, чтобы переопределить настройки браузера по умолчанию.","settings.forms.show_otp_as_dot.label":'Показать сгенерированный код OTP как звёздочки',"settings.forms.show_otp_as_dot.help":"Заменить сгенерированный код на звёздочки (***) для обеспечения конфиденциальности. Это не повлияет на функцию копирования/вставки","settings.forms.reveal_dotted_otp.label":'Раскрытие скрытых кодов OTP',"settings.forms.reveal_dotted_otp.help":"Разрешить временно раскрывать коды, скрытые звёздочками","settings.forms.close_otp_on_copy.label":'Закрыть OTP после копирования',"settings.forms.close_otp_on_copy.help":"Нажатие на сгенерированный код, чтобы скопировать его, автоматически скроет его с экрана","settings.forms.clear_search_on_copy.label":"Очистить поиск при копировании","settings.forms.clear_search_on_copy.help":"Очистить строку поиска сразу после копирования кода в буфер обмена","settings.forms.copy_otp_on_display.label":'Копировать OTP при отображении',"settings.forms.copy_otp_on_display.help":'Автоматически копировать сгенерированный код сразу после его появления на экране. Из-за ограничений браузеров, только первый пароль TOTP будет скопирован, но не последующие',"settings.forms.use_basic_qrcode_reader.label":"Использовать базовый сканер QR-кода","settings.forms.use_basic_qrcode_reader.help":"Если вы столкнулись с проблемами при захвате QR-кодов, это позволяет переключиться на более простой, но более надежный сканер QR-кодов","settings.forms.display_mode.label":"Режим отображения","settings.forms.display_mode.help":"Выберите, хотите ли вы отображать учётные записи как список или как сетку","settings.forms.password_format.label":"Форматирование кодов","settings.forms.password_format.help":"Изменить способ отображения кодов путём группировки цифр, чтобы облегчить чтение и запоминание","settings.forms.pair":"парами","settings.forms.pair_legend":"Группами по 2 цифры","settings.forms.trio_legend":"Группами по 3 цифры","settings.forms.half_legend":"Двумя одинаковыми группами","settings.forms.trio":"тройками","settings.forms.half":"половинками","settings.forms.grid":"Сетка","settings.forms.list":"Список","settings.forms.theme.label":"Тема","settings.forms.theme.help":"Принудительно использовать тему, определённую в настройках вашей системы/браузера","settings.forms.light":"Светлая","settings.forms.dark":"Тёмная","settings.forms.automatic":"Авто","settings.forms.show_accounts_icons.label":"Показать значки","settings.forms.show_accounts_icons.help":"Показывать значки учётных записей на главной","settings.forms.get_official_icons.label":"Получить официальные значки","settings.forms.get_official_icons.help":"(Пробовать) Получать официальную иконку эмитента 2FA при добавлении учётной записи","settings.forms.auto_lock.label":"Автоблокировка","settings.forms.auto_lock.help":"Выйти из учётной записи автоматически в случае неактивности. Не имеет эффекта, когда аутентификация обрабатывается прокси и не задан пользовательский адрес выхода.","settings.forms.default_group.label":"Группа по умолчанию","settings.forms.default_group.help":"Группа, к которой будут привязаны новые учётные данные","settings.forms.view_default_group_on_copy.label":"Показывать группу по умолчанию при копировании","settings.forms.view_default_group_on_copy.help":"Всегда возвращаться в группу по умолчанию когда код OTP скопирован","settings.forms.useDirectCapture.label":"Быстрый ввод","settings.forms.useDirectCapture.help":"Автоматически использовать способ ввода по умолчанию или предлагать выбор из доступных способов ввода","settings.forms.defaultCaptureMode.label":"Способ ввода по умолчанию","settings.forms.defaultCaptureMode.help":"Способ ввода по умолчанию, который будет использоваться при включенной опции быстрого ввода","settings.forms.remember_active_group.label":"Запомнить фильтр группы","settings.forms.remember_active_group.help":"Сохранить последний примененный фильтр группы и восстановить его при следующем посещении","settings.forms.otp_generation.label":"Показывать пароль","settings.forms.otp_generation.help":'Установка того, как и когда отображаются OTP .
',"settings.forms.otp_generation_on_request":"После щелчка/касания","settings.forms.otp_generation_on_request_legend":"По одиночке, в отдельном окне","settings.forms.otp_generation_on_request_title":"Щёлкните на учётную запись, чтобы получить код в отдельном окне","settings.forms.otp_generation_on_home":"Постоянно","settings.forms.otp_generation_on_home_legend":"Все на домашней странице","settings.forms.otp_generation_on_home_title":"Показать все пароли в главной странице, без дополнительных действий","settings.forms.never":"Никогда","settings.forms.on_otp_copy":"При копировании кода","settings.forms.1_minutes":"Через 1 минуту","settings.forms.5_minutes":"Через 5 минут","settings.forms.10_minutes":"Через 10 минут","settings.forms.15_minutes":"Через 15 минут","settings.forms.30_minutes":"Через 30 минут","settings.forms.1_hour":"Через 1 час","settings.forms.1_day":"Через 1 день","settings.forms.livescan":"📷 Сфотографировать QR-код","settings.forms.upload":"📤 Загрузить файл с QR-кодом","settings.forms.advanced_form":"📋 Расширенная форма","titles.404":"Элемент не найден","titles.start":"Новая учётная запись","titles.capture":"Отсканируйте QR","titles.accounts":"Учётные записи","titles.createAccount":"Создать учётную запись","titles.importAccounts":"Импорт учётных записей","titles.editAccount":"Редактирование учётной записи","titles.showQRcode":"Учётная запись как QR-код","titles.groups":"Группы","titles.createGroup":"Создать группу","titles.editGroup":"Изменение группы","titles.settings.options":"Настройки","titles.settings.account":"Учётные записи пользователя","titles.settings.oauth.tokens":"OAuth Токены","titles.settings.oauth.generatePAT":"Новый персональный токен","titles.settings.webauthn.editCredential":"Редактирование устройства","titles.settings.webauthn.devices":"Устройства WebAuthn","titles.login":"Вход","titles.register":"Регистрация","titles.autolock":"Автоблокировка","titles.password.request":"Восстановить пароль","titles.password.reset":"Новый пароль","titles.webauthn.lost":"Восстановление доступа к учётной записи","titles.webauthn.recover":"Зарегистрировать новое устройство","titles.flooded":"Слишком много запросов","titles.genericError":"Ошибка","titles.about":"О программе","titles.admin.appSetup":"Настройки приложения","titles.admin.users":"Управление пользователями","titles.admin.createUser":"Создать пользователя","titles.admin.manageUser":"Управление пользователем","twofaccounts.service":"Сервис","twofaccounts.account":"Учётная запись","twofaccounts.icon":"Значок","twofaccounts.icon_for_account_x_at_service_y":"Значок учётной запсии :account для сервиса :service","twofaccounts.icon_to_illustrate_the_account":"Значок, который иллюстрирует учётную запись","twofaccounts.remove_icon":"Удалить значок","twofaccounts.no_account_here":"Ни одной учётной записи 2FA не добавлено!","twofaccounts.add_first_account":"Выберите способ и добавьте свою первую учётную запись","twofaccounts.use_full_form":"Или воспользуйтесь полной формой","twofaccounts.add_one":"Добавить один","twofaccounts.show_qrcode":"Показать QR код","twofaccounts.no_service":"- нет сервисов -","twofaccounts.account_created":"Учётная запись успешно создана","twofaccounts.account_updated":"Учётная запись успешно обновлена.","twofaccounts.accounts_deleted":"Учётная(ые) запись(и) успешно удалена(ы)","twofaccounts.accounts_moved":"Учётная(ые) запись(и) успешно перемещена(ы)","twofaccounts.export_selected_to_json":"Скачать json экспорт выбранных учётных записей","twofaccounts.reveal":"показать","twofaccounts.forms.service.placeholder":"Google, Twitter, Apple","twofaccounts.forms.account.placeholder":"Иван Иванов","twofaccounts.forms.new_account":"Новая учётная запись","twofaccounts.forms.edit_account":"Редактировать учётную запись","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"Сканировать QR-код","twofaccounts.forms.upload_qrcode":"Загрузить QR-код","twofaccounts.forms.use_advanced_form":"Использовать расширенную форму","twofaccounts.forms.prefill_using_qrcode":"Предзаполнить используя QR-код","twofaccounts.forms.use_qrcode.val":"Использовать QR-код","twofaccounts.forms.use_qrcode.title":"Использовать QR-код для волшебного заполнения формы","twofaccounts.forms.unlock.val":"Разблокировать","twofaccounts.forms.unlock.title":"Разблокировать (под вашу ответственность)","twofaccounts.forms.lock.val":"Заблокировать","twofaccounts.forms.lock.title":"Заблокировать","twofaccounts.forms.choose_image":"Загрузить","twofaccounts.forms.i_m_lucky":"Мне повезёт!","twofaccounts.forms.i_m_lucky_legend":'Кнопка "Мне повезёт!" попытается получить официальную иконку данной службы. Введите фактическое имя службы без расширения ".xyz" и попытайтесь избежать опечаток. (бета-функция)',"twofaccounts.forms.test":"Проверка","twofaccounts.forms.secret.label":"Секрет","twofaccounts.forms.secret.help":"Ключ, используемый для генерации кодов безопасности","twofaccounts.forms.plain_text":"Обычный текст","twofaccounts.forms.otp_type.label":'Выберите тип создаваемого OTP',"twofaccounts.forms.otp_type.help":"OTP на основе времени, OTP на основе HMAC или Steam OTP","twofaccounts.forms.digits.label":"Количество цифр","twofaccounts.forms.digits.help":"Количество цифр в генерируемом коде безопасности","twofaccounts.forms.algorithm.label":"Алгоритм","twofaccounts.forms.algorithm.help":"Алгоритм, используемый для защиты ваших кодов безопасности","twofaccounts.forms.period.label":"Интервал","twofaccounts.forms.period.placeholder":"По умолчанию - 30","twofaccounts.forms.period.help":"Период действия сгенерированных кодов безопасности в секундах","twofaccounts.forms.counter.label":"Счётчик","twofaccounts.forms.counter.placeholder":"По умолчанию - 0","twofaccounts.forms.counter.help":"Начальное значение счётчика","twofaccounts.forms.counter.help_lock":"Редактирование счётчика рискованно, так как вы можете рассинхронизировать учётную запись с сервером службы верификации. Используйте значок блокировки, чтобы включить изменение, но только если вы точно знаете, что вы делаете","twofaccounts.forms.image.label":"Изображение","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"Адрес внешнего изображения для использования в качестве значка учётной записи","twofaccounts.forms.options_help":"Вы можете оставить следующие значения пустыми, если не знаете, как их установить. Наиболее распространённые значения будут применены.","twofaccounts.forms.alternative_methods":"Альтернативные методы","twofaccounts.forms.spaces_are_ignored":"Нежелательные пробелы будут автоматически удалены","twofaccounts.stream.live_scan_cant_start":"Невозможно запустить сканирование в реальном времени :(","twofaccounts.stream.need_grant_permission.reason":"У 2FAuth нет разрешения на доступ к вашей камере","twofaccounts.stream.need_grant_permission.solution":"Вам нужно предоставить разрешение для использования камеры вашего устройства. Если вы уже отказались и ваш браузер не запрашивает у вас разрешения снова, обратитесь к документации браузера для выяснения того, как предоставить разрешение.","twofaccounts.stream.need_grant_permission.click_camera_icon":"Обычно это делается нажатием на перечёркнутый значок камеры в адресной строке браузера или рядом с ней","twofaccounts.stream.not_readable.reason":"Сбой загрузки сканера","twofaccounts.stream.not_readable.solution":"Камера уже используется? Убедитесь, что другое приложение не использует вашу камеру и попробуйте снова","twofaccounts.stream.no_cam_on_device.reason":"На устройстве нет камеры","twofaccounts.stream.no_cam_on_device.solution":"Может быть, вы забыли подключить веб-камеру","twofaccounts.stream.secured_context_required.reason":"Требуется HTTPS контекст","twofaccounts.stream.secured_context_required.solution":"Для сканирования в реальном времени требуется HTTPS. Если вы запускаете 2FAuth с вашего компьютера, не используйте виртуальный хост, отличный от localhost","twofaccounts.stream.https_required":"Для потоковой передачи с камеры требуется HTTPS","twofaccounts.stream.camera_not_suitable.reason":"Установленные камеры не подходят","twofaccounts.stream.camera_not_suitable.solution":"Пожалуйста, используйте другое устройство/камеру","twofaccounts.stream.stream_api_not_supported.reason":"Steam API не поддерживается в этом браузере","twofaccounts.stream.stream_api_not_supported.solution":"Вам следует использовать современный браузер","twofaccounts.confirm.delete":"Вы уверены, что хотите удалить эту учётную запись?","twofaccounts.confirm.cancel":"Изменения будут утеряны. Вы уверены?","twofaccounts.confirm.discard":"Вы уверены, что хотите отклонить эту учётную запись?","twofaccounts.confirm.discard_all":"Вы уверены, что хотите отклонить все учётные записи?","twofaccounts.confirm.discard_duplicates":"Вы уверены, что хотите отклонить все дубликаты?","twofaccounts.import.import":"Импорт","twofaccounts.import.to_import":"Импортировать","twofaccounts.import.import_legend":"2FAuth может импортировать данные из различных 2FA приложений.","twofaccounts.import.import_legend_afterpart":"Используйте функцию экспорта данных приложений, чтобы получить ресурс миграции, такой как QR-код или JSON файл, а затем загрузите его здесь.","twofaccounts.import.upload":"Загрузить","twofaccounts.import.scan":"Сканировать","twofaccounts.import.supported_formats_for_qrcode_upload":"Принимается: jpg, jpeg, png, bmp, gif, svg или webp","twofaccounts.import.supported_formats_for_file_upload":"Принимается: Простой текст, json, 2fas","twofaccounts.import.expected_format_for_direct_input":"Ожидается: список OTPAuth URI, по одной в строке","twofaccounts.import.supported_migration_formats":"Поддерживаемые форматы миграции","twofaccounts.import.qr_code":"QR-код","twofaccounts.import.text_file":"Текстовый файл","twofaccounts.import.direct_input":"Быстрый ввод","twofaccounts.import.plain_text":"Простой текст","twofaccounts.import.parsing_data":"Анализ данных...","twofaccounts.import.issuer":"Эмитент","twofaccounts.import.imported":"Импортировано","twofaccounts.import.failure":"Неудачно","twofaccounts.import.x_valid_accounts_found":"Найдено действительных учётных записей :count","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"В ресурсе миграции были найдены учётные записи 2FA. Пока ни одна из них не была добавлена в 2FAuth.","twofaccounts.import.use_buttons_to_save_or_discard":"Используйте доступные кнопки, чтобы навсегда сохранить их в вашей коллекции 2FA или отклонить их.","twofaccounts.import.import_all":"Импортировать все","twofaccounts.import.import_this_account":"Импортировать эту учётную запись","twofaccounts.import.discard_all":"Отклонить все","twofaccounts.import.discard_duplicates":"Отклонить дубликаты","twofaccounts.import.discard_this_account":"Отклонить эту учётную запись","twofaccounts.import.generate_a_test_password":"Сгенерировать тестовый код","twofaccounts.import.possible_duplicate":"Учётная запись с такими же данными уже существует","twofaccounts.import.invalid_account":"- неверная учётная запись -","twofaccounts.import.invalid_service":"- неверный сервис -","twofaccounts.import.do_not_set_password_or_encryption":"НЕ ВКЛЮЧАЙТЕ защиту паролем или шифрование при экспорте данных из приложения 2FA, иначе 2FAuth не сможет расшифровать их.","validation.accepted":"Вы должны принять :attribute.","validation.accepted_if":"Вы должны принять :attribute, когда :other соответствует :value.","validation.active_url":"Поле :attribute содержит недействительный URL.","validation.after":"В поле :attribute должна быть дата больше :date.","validation.after_or_equal":"В поле :attribute должна быть дата больше или равняться :date.","validation.alpha":"Значение поля :attribute может содержать только буквы.","validation.alpha_dash":"Значение поля :attribute может содержать только буквы, цифры, дефис и нижнее подчёркивание.","validation.alpha_num":"Значение поля :attribute может содержать только буквы и цифры.","validation.array":"Поле :attribute должно быть массивом.","validation.before":"В поле :attribute должна быть дата раньше :date.","validation.before_or_equal":"В поле :attribute должна быть дата раньше или равняться :date.","validation.between.array":"Количество элементов в поле :attribute должно быть между :min и :max.","validation.between.file":"Размер файла в поле :attribute должен быть между :min и :max Килобайт(а).","validation.between.numeric":"Поле :attribute должно быть между :min и :max.","validation.between.string":"Количество символов в поле :attribute должно быть между :min и :max.","validation.boolean":"Поле :attribute должно иметь значение логического типа.","validation.confirmed":"Поле :attribute не совпадает с подтверждением.","validation.current_password":"Неверный пароль.","validation.date":"Поле :attribute не является датой.","validation.date_equals":"Поле :attribute должно быть датой равной :date.","validation.date_format":"Поле :attribute не соответствует формату :format.","validation.declined":"Поле :attribute должно быть отклонено.","validation.declined_if":"Поле :attribute должно быть отклонено, когда :other равно :value.","validation.different":"Поля :attribute и :other должны различаться.","validation.digits":"Длина цифрового поля :attribute должна быть :digits.","validation.digits_between":"Длина цифрового поля :attribute должна быть между :min и :max.","validation.dimensions":"Поле :attribute имеет недопустимые размеры изображения.","validation.distinct":"Поле :attribute содержит повторяющееся значение.","validation.doesnt_end_with":"Значение поля :attribute не может заканчиваться одним из следующих: :values.","validation.doesnt_start_with":"Значение поля :attribute не может начинаться с одного из следующих: :values.","validation.email":"Поле :attribute должно быть действительным электронным адресом.","validation.ends_with":"Поле :attribute должно заканчиваться одним из следующих значений: :values","validation.enum":"Значение поля :attribute некорректно.","validation.exists":"Выбранное значение для :attribute некорректно.","validation.file":"Поле :attribute должно быть файлом.","validation.filled":"Поле :attribute обязательно для заполнения.","validation.gt.array":"Количество элементов в поле :attribute должно быть больше :value.","validation.gt.file":"Размер файла в поле :attribute должен быть больше :value Килобайт(а).","validation.gt.numeric":"Поле :attribute должно быть больше :value.","validation.gt.string":"Количество символов в поле :attribute должно быть больше :value.","validation.gte.array":"Количество элементов в поле :attribute должно быть :value или больше.","validation.gte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или больше.","validation.gte.numeric":"Значение поля :attribute должно быть :value или больше.","validation.gte.string":"Количество символов в поле :attribute должно быть :value или больше.","validation.image":"Поле :attribute должно быть изображением.","validation.in":"Выбранное значение для :attribute ошибочно.","validation.in_array":"Поле :attribute не существует в :other.","validation.integer":"Поле :attribute должно быть целым числом.","validation.ip":"Поле :attribute должно быть действительным IP-адресом.","validation.ipv4":"Поле :attribute должно быть действительным IPv4-адресом.","validation.ipv6":"Поле :attribute должно быть действительным IPv6-адресом.","validation.json":"Поле :attribute должно быть JSON строкой.","validation.lt.array":"Количество элементов в поле :attribute должно быть меньше :value.","validation.lt.file":"Размер файла в поле :attribute должен быть меньше :value Килобайт(а).","validation.lt.numeric":"Поле :attribute должно быть меньше :value.","validation.lt.string":"Количество символов в поле :attribute должно быть меньше :value.","validation.lte.array":"Количество элементов в поле :attribute должно быть :value или меньше.","validation.lte.file":"Размер файла, указанный в поле :attribute, должен быть :value Кб или меньше.","validation.lte.numeric":"Значение поля :attribute должно быть равным или меньше :value.","validation.lte.string":"Количество символов в поле :attribute должно быть :value или меньше.","validation.mac_address":"Значение поля :attribute должно быть корректным MAC-адресом.","validation.max.array":"Количество элементов в поле :attribute не может превышать :max.","validation.max.file":"Размер файла в поле :attribute не может быть больше :max Кб.","validation.max.numeric":"Значение поля :attribute не может быть больше :max.","validation.max.string":"Количество символов в значении поля :attribute не может превышать :max.","validation.max_digits":"Значение поля :attribute не должно содержать больше :max цифр.","validation.mimes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.mimetypes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","validation.min.array":"Количество элементов в поле :attribute должно быть не меньше :min.","validation.min.file":"Размер файла в поле :attribute должен быть не меньше :min Килобайт(а).","validation.min.numeric":"Поле :attribute должно быть не меньше :min.","validation.min.string":"Количество символов в поле :attribute должно быть не меньше :min.","validation.min_digits":"Значение поля :attribute должно содержать не меньше :min цифр.","validation.multiple_of":"Значение поля :attribute должно быть кратным :value","validation.not_in":"Выбранное значение для :attribute ошибочно.","validation.not_regex":"Выбранный формат для :attribute ошибочный.","validation.numeric":"Поле :attribute должно быть числом.","validation.password.letters":"Значение поля :attribute должно содержать хотя бы одну букву.","validation.password.mixed":"Значение поля :attribute должно содержать хотя бы одну прописную и одну строчную буквы.","validation.password.numbers":"Значение поля :attribute должно содержать хотя бы одну цифру.","validation.password.symbols":"Значение поля :attribute должно содержать хотя бы один символ.","validation.password.uncompromised":"Значение поля :attribute обнаружено в утёкших данных. Пожалуйста, выберите другое значение для :attribute.","validation.present":"Поле :attribute должно присутствовать.","validation.prohibited":"Значение поля :attribute запрещено.","validation.prohibited_if":"Значение поля :attribute запрещено, когда :other равно :value.","validation.prohibited_unless":"Значение поля :attribute запрещено, если :other не состоит в :values.","validation.prohibits":"Значение поля :attribute запрещает присутствие :other.","validation.regex":"Поле :attribute имеет ошибочный формат.","validation.required":"Поле :attribute обязательно для заполнения.","validation.required_array_keys":"Массив в поле :attribute обязательно должен иметь ключи: :values","validation.required_if":"Поле :attribute обязательно для заполнения, когда :other равно :value.","validation.required_if_accepted":"Поле :attribute обязательно, когда :other принято.","validation.required_unless":"Поле :attribute обязательно для заполнения, когда :other не равно :values.","validation.required_with":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_with_all":"Поле :attribute обязательно для заполнения, когда :values указано.","validation.required_without":"Поле :attribute обязательно для заполнения, когда :values не указано.","validation.required_without_all":"Поле :attribute обязательно для заполнения, когда ни одно из :values не указано.","validation.same":"Значения полей :attribute и :other должны совпадать.","validation.size.array":"Количество элементов в поле :attribute должно быть равным :size.","validation.size.file":"Размер файла в поле :attribute должен быть равен :size Килобайт(а).","validation.size.numeric":"Поле :attribute должно быть равным :size.","validation.size.string":"Количество символов в поле :attribute должно быть равным :size.","validation.starts_with":"Поле :attribute должно начинаться из одного из следующих значений: :values","validation.string":"Поле :attribute должно быть строкой.","validation.timezone":"Значением поля :attribute должен быть действительный часовой пояс.","validation.unique":"Такое значение поля :attribute уже существует.","validation.uploaded":"Загрузка поля :attribute не удалась.","validation.url":"Значением поля :attribute должен быть допустимым URL.","validation.uuid":"Поле :attribute должно быть корректным UUID.","validation.single":"При использовании :attribute - это должен быть единственный параметр в теле этого запроса","validation.onlyCustomOtpWithUri":"Параметр uri должен быть указан один или в сочетании с параметром 'custom_otp'","validation.custom.icon.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.qrcode.image":"Поддерживаемый формат - jpeg, png, bmp, gif, svg или webp.","validation.custom.uri.regex":"Поле :attribute не является ссылкой аутентификатора.","validation.custom.otp_type.in":":attribute не поддерживается.","validation.custom.email.exists":"Учётная запись с таким электронным адресом не найдена.","validation.custom.email.ComplyWithEmailRestrictionPolicy":"Этот адрес электронной почты не соответствует условиям регистрации","validation.custom.email.IsValidEmailList":"Все адреса электронной почты должны быть действительными и разделены вертикальной чертой","validation.custom.secret.isBase32Encoded":"Поле :attribute должно быть закодированной base32 строкой.","validation.custom.account.regex":":attribute не должен содержать двоеточий.","validation.custom.service.regex":":attribute не должен содержать двоеточие.","validation.custom.label.required":"URI должен иметь метку.","validation.custom.ids.regex":"Идентификаторы должны быть разделены запятыми. Запятая в конце не ставится."};export{t as default}; diff --git a/public/build/assets/php_zh-0c409c6d.js b/public/build/assets/php_zh-0c409c6d.js deleted file mode 100644 index 55dc243c..00000000 --- a/public/build/assets/php_zh-0c409c6d.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"Admin","admin.app_setup":"App setup","admin.registrations":"Registrations","admin.users":"Users","admin.users_legend":"Manage users registered on your instance or create new ones.","admin.admin_settings":"Admin settings","admin.create_new_user":"Create a user","admin.new_user":"New user","admin.search_user_placeholder":"User name, email...","admin.quick_filters_colons":"Quick filters:","admin.user_created":"user successfully created","admin.confirm.delete_user":"Are you sure you want to delete this user? There is no going back.","admin.confirm.request_password_reset":"Are you sure you want to reset this user's password?","admin.confirm.purge_password_reset_request":"Are you sure you want to purge the request?","admin.confirm.delete_account":"Are you sure you want to delete this user?","admin.confirm.edit_own_account":"This is your own account. Are you sure?","admin.confirm.change_admin_role":"This will have serious impacts on this user's permissions. Are you sure?","admin.confirm.demote_own_account":"You will no longer be an administrator. Really sure?","admin.logs":"Logs","admin.administration_legend":"Following settings are global and apply to all users.","admin.user_management":"User management","admin.oauth_provider":"OAuth provider","admin.account_bound_to_x_via_oauth":"This account is bound to a :provider account via OAuth","admin.last_seen_on_date":"Last seen :date","admin.registered_on_date":"Registered :date","admin.updated_on_date":"Updated :date","admin.access":"Access","admin.password_requested_on_t":"A password reset request exists for this user (request sent at :datetime) meaning the user didn't change its password yet but the link he received is still valid. This could be a request from the user himself or from an administrator.","admin.password_request_expired":"A password reset request exists for this user but has expired, meaning the user didn't change its password in time. This could be a request from the user himself or from an administrator.","admin.resend_email":"Resend email","admin.resend_email_title":"Resend a password reset email to the user","admin.resend_email_help":"Use Resend email to send a new password reset email to the user so he can set a new password. This will leave its current password as is and any previous request will be revoked.","admin.reset_password":"Reset password","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"Sometimes cache needs to be cleared, for instance after a change to environment variables or an update. You can do it from here.","auth.failed":"用户名或密码错误","auth.password":"提供的密码不正确","auth.throttle":"您尝试的登录次数过多,请 :seconds 秒后再试。","auth.sign_out":"登出","auth.sign_in":"登录","auth.sign_in_using":"登录使用","auth.or_continue_with":"您也可以:","auth.sign_in_using_security_device":"使用安全设备登录","auth.login_and_password":"用户名和密码","auth.register":"注册","auth.welcome_to_2fauth":"欢迎使用 2FAuth","auth.autolock_triggered":"已自动锁定","auth.autolock_triggered_punchline":"自动锁定已触发。您已被自动断开连接。","auth.already_authenticated":"已验证","auth.authentication":"身份认证","auth.maybe_later":"以后再说","auth.user_account_controlled_by_proxy":"用户帐户由身份验证代理提供。
请在代理中管理帐户。","auth.auth_handled_by_proxy":"身份验证由代理处理,下面的设置被禁用。
在代理管理身份验证。","auth.confirm.logout":"您确定要注销吗?","auth.confirm.revoke_device":"你确定要删除此设备?","auth.confirm.delete_account":"您确定要删除您的账户?","auth.webauthn.security_device":"硬件安全密钥","auth.webauthn.security_devices":"安全设备","auth.webauthn.security_devices_legend":"您可以用来登录2FAuth的认证设备,例如安全密钥(如Yubikey)或具有生物识别能力的智能手机(如Apple Face Id/TouchId)","auth.webauthn.enhance_security_using_webauthn":`您可以通过启用 WebAuthn 身份验证来增强您的2FAuth 账户的安全性。

-WebAuthn允许您使用受信任的设备 (如Yubikeys 或具有生物识别能力的智能手机) 快速和更安全地登录。`,"auth.webauthn.use_security_device_to_sign_in":"准备好使用您的(一个)安全设备进行身份验证。请插入您的密钥,移除口罩或手套等。","auth.webauthn.lost_your_device":"设备丢失?","auth.webauthn.recover_your_account":"恢复您的账号","auth.webauthn.account_recovery":"恢复账号","auth.webauthn.recovery_punchline":"2FAuth 将向您发送恢复链接到此电子邮件地址。点击收到电子邮件中的链接注册新的安全设备。

确保在您可以在自己的设备上打开电子邮件。","auth.webauthn.send_recovery_link":"发送恢复链接","auth.webauthn.account_recovery_email_sent":"账号恢复邮件已发送!","auth.webauthn.disable_all_security_devices":"禁用所有安全设备","auth.webauthn.disable_all_security_devices_help":"您的所有安全设备都将被撤销。如果您丢失了一个设备或其安全性已经受到损害,请使用此选项。","auth.webauthn.register_a_new_device":"注册新设备","auth.webauthn.register_a_device":"注册设备","auth.webauthn.device_successfully_registered":"成功注册设备","auth.webauthn.device_revoked":"成功注销设备","auth.webauthn.revoking_a_device_is_permanent":"注销设备是永久性的","auth.webauthn.recover_account_instructions":"若要恢复您的帐户,2FAuth 将会重置一些Webauth设置,以便您可以使用您的电子邮件和密码登录。","auth.webauthn.invalid_recovery_token":"无效的恢复密钥","auth.webauthn.webauthn_login_disabled":"Webauthn 登录已被禁用","auth.webauthn.invalid_reset_token":"此密码重置令牌无效","auth.webauthn.rename_device":"重命名设备","auth.webauthn.my_device":"我的设备","auth.webauthn.unknown_device":"未知设备","auth.webauthn.use_webauthn_only.label":"仅使用 WebAuthn","auth.webauthn.use_webauthn_only.help":`将WebAuthn设定为登录2FAuth账户的唯一授权的登录方式。推荐启用此选项,并利用WebAuth增强安全性。

- 设备丢失时, 您可以通过重置此选项并使用您的电子邮件和密码登录来恢复您的帐户。

- 请注意! 尽管启用了此选项,输入电子邮件和密码的登录界面仍然可用,但是会提示 “身份验证失败”。`,"auth.webauthn.need_a_security_device_to_enable_options":"设置至少一个WebAuth设备以启用以下选项","auth.webauthn.options":"选项","auth.forms.name":"用户名","auth.forms.login":"登录","auth.forms.webauthn_login":"使用 WebAuthn 登录","auth.forms.email":"邮箱","auth.forms.password":"密码","auth.forms.reveal_password":"显示密码","auth.forms.hide_password":"隐藏密码","auth.forms.confirm_password":"确认密码","auth.forms.new_password":"新密码","auth.forms.confirm_new_password":"确认新密码","auth.forms.dont_have_account_yet":"还没有账号?","auth.forms.already_register":"已经注册?","auth.forms.authentication_failed":"验证失败","auth.forms.forgot_your_password":"忘记密码?","auth.forms.request_password_reset":"重置密码","auth.forms.reset_your_password":"重置你的密码","auth.forms.reset_password":"重置密码","auth.forms.disabled_in_demo":"此功能将在演示模式下禁用。","auth.forms.current_password.label":"当前密码","auth.forms.current_password.help":"填写您当前设置的密码以确认是您本人","auth.forms.change_password":"修改密码","auth.forms.send_password_reset_link":"发送密码重置链接","auth.forms.password_successfully_reset":"Password successfully reset","auth.forms.edit_account":"编辑账户","auth.forms.profile_saved":"个人资料更新成功!","auth.forms.welcome_to_demo_app_use_those_credentials":"欢迎访问 2FAuth 的演示站点。

您可以使用电子邮件地址 demo@2fauth.app 和密码 demo来登录。","auth.forms.welcome_to_testing_app_use_those_credentials":"欢迎访问 2FAuth 的测试实例。

您可以使用电子邮件地址 testing@2fauth.app 和密码 password来登录。","auth.forms.register_punchline":"欢迎使用 2FAuth
您需要一个账号才能继续,请先完成注册。","auth.forms.reset_punchline":"2FAuth 将向您发送密码重置链接到此邮箱。请点击收到的电子邮件中的链接设置新密码。","auth.forms.name_this_device":"命名此设备","auth.forms.delete_account":"删除账户","auth.forms.delete_your_account":"删除您的账户","auth.forms.delete_your_account_and_reset_all_data":"这将重置您的 2FAuth。您的账号以及所有的 2FA 数据都将被删除,这是一个不可逆的操作。","auth.forms.reset_your_password_to_delete_your_account":"如果您总是使用 SSO 登录, 登出后使用重置密码功能获取密码,以便您可以填写此表格。","auth.forms.deleting_2fauth_account_does_not_impact_provider":"删除您的 2FAuth 帐户对您的外部 SSO 帐户没有影响。","auth.forms.user_account_successfully_deleted":"账号已成功删除","auth.forms.has_lower_case":"包含小写字母","auth.forms.has_upper_case":"包含大写字母","auth.forms.has_special_char":"包含特殊字符","auth.forms.has_number":"包含数字","auth.forms.is_long_enough":"至少 8 个字符","auth.forms.mandatory_rules":"必选项","auth.forms.optional_rules_you_should_follow":"建议(推荐)","auth.forms.caps_lock_is_on":"大写锁定已开启","commons.cancel":"取消","commons.update":"更新","commons.copy":"复制","commons.copy_to_clipboard":"复制到剪贴板","commons.copied_to_clipboard":"已复制到剪贴板","commons.profile":"个人资料","commons.edit":"编辑","commons.delete":"删除","commons.disable":"禁用","commons.enable":"启用","commons.create":"创建","commons.save":"保存","commons.close":"关闭","commons.clear":"清空","commons.clear_search":"清除搜索结果","commons.demo_do_not_post_sensitive_data":"这是一个演示应用,请不要上传任何敏感数据","commons.testing_do_not_post_sensitive_data":"这是一个测试应用,请不要上传任何敏感数据","commons.x_selected":"已选择:count个","commons.name":"名称","commons.manage":"管理","commons.done":"完成","commons.new":"新建","commons.back":"返回","commons.move":"移动","commons.export":"导出","commons.all":"全部","commons.check_all":"全选","commons.select_all":"全选","commons.clear_selection":"清除选择","commons.sort_descending":"降序排列","commons.sort_ascending":"升序排序","commons.rename":"重命名","commons.new_name":"新名称","commons.options":"选项","commons.reload":"刷新","commons.refresh":"刷新","commons.data_refreshed_to_reflect_server_changes":"数据已被刷新以反映服务器侧的更改","commons.generate":"生成","commons.generating_otp":"正在生成 OTP","commons.open_in_browser":"在浏览器中打开","commons.continue":"继续","commons.discard":"放弃","commons.about":"关于","commons.usefull_links":"有用的链接","commons.environment":"环境","commons.credits":"鸣谢","commons.2fauth_teaser":"用于管理您的两步验证 (2FA) 帐户并生成安全码的网页应用","commons.made_with":"基于","commons.ui_icons_by":"UI 图标来自","commons.logos_by":"Logo 来自","commons.search":"搜索​​​​","commons.resources":"资源","commons.check_for_update":"检查更新","commons.check_for_update_help":"自动检查 (每周一次) 并当 2FAuth 在 Github 上发布新版本时发出提醒","commons.you_are_up_to_date":"该实例是最新的","commons.2fauth_description":"用于管理您的两步验证 (2FA) 账户并生成安全码的网页应用","commons.image_of_qrcode_to_scan":"要扫描的二维码图像","commons.file":"文件","commons.or":"或","commons.close_the_x_page":"关闭 {pagetitle} 页","commons.submit":"提交","commons.default":"默认值","commons.back_to_home":"返回首页","commons.nothing":"无","commons.no_result":"No result","commons.information":"Information","commons.permissions":"Permissions","commons.send":"Send","commons.optimize":"Optimize","errors.resource_not_found":"资源未找到","errors.error_occured":"发生错误:","errors.refresh":"刷新","errors.no_valid_otp":"此二维码中没有有效的OTP资源","errors.something_wrong_with_server":"服务器发生内部错误","errors.Unable_to_decrypt_uri":"无法解密uri","errors.not_a_supported_otp_type":"不支持此OTP格式","errors.cannot_create_otp_without_secret":"无法在没有密码的情况下创建一个OTP","errors.data_of_qrcode_is_not_valid_URI":"此QR码的数据不是有效的OTP Auth URI。该QR码包含:","errors.wrong_current_password":"当前密码错误,没有发生任何更改","errors.error_during_encryption":"加密失败,您的数据库仍未受到保护","errors.error_during_decryption":"解密失败,您的数据库仍受保护。这通常由一个或多个帐户加密数据的完整性不足导致。","errors.qrcode_cannot_be_read":"二维码无效","errors.too_many_ids":"查询参数中包含太多ID,最多允许 100 个","errors.delete_user_setting_only":"只能删除用户创建的设置","errors.indecipherable":"*无法解析*","errors.cannot_decipher_secret":"密钥不能被解密。这主要是由 2Fauth 的 .env 文件中 APP_KEY 设置错误或存储在数据库中的数据已损坏引发的。","errors.https_required":"需要 HTTPS","errors.browser_does_not_support_webauthn":"您的设备不支持Webauthn。请使用更现代的浏览器重试。","errors.aborted_by_user":"被用户中止。","errors.security_device_already_registered":"设备已被注册过","errors.not_allowed_operation":"不允许此操作","errors.no_authenticator_support_specified_algorithms":"没有身份验证器支持指定的算法","errors.authenticator_missing_discoverable_credential_support":"身份验证器缺少可发现凭据的支持","errors.authenticator_missing_user_verification_support":"身份验证器缺少用户验证支持","errors.unknown_error":"未知错误","errors.security_error_check_rpid":"安全错误
请检查您的 WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth的域不是一个有效的域","errors.user_id_not_between_1_64":"用户ID不在 1 到 64 个字符内","errors.no_entry_was_of_type_public_key":'没有类型为"公钥"的条目',"errors.unsupported_with_reverseproxy":"使用代理进行认证时不可用","errors.user_deletion_failed":"帐户删除失败,没有数据被删除","errors.auth_proxy_failed":"代理认证失败","errors.auth_proxy_failed_legend":"2Fauth 被配置为在身份验证代理后运行,但您的代理没有返回预期的请求头。请检查您的配置并重试。","errors.invalid_x_migration":"无效或不可读的 :appname 数据","errors.invalid_2fa_data":"无效的2FA数据","errors.unsupported_migration":"数据与任何支持的格式不匹配","errors.unsupported_otp_type":"不支持的 OTP 类型","errors.encrypted_migration":"无法读取,数据似乎已加密","errors.no_logo_found_for_x":"{service} 没有可用的 Logo","errors.file_upload_failed":"文件上传失败","errors.unauthorized":"无权限","errors.unauthorized_legend":"您无权查看此资源或执行此操作","errors.cannot_delete_the_only_admin":"无法删除唯一的管理员账户","errors.error_during_data_fetching":"💀 在获取数据过程中出了问题","errors.check_failed_try_later":"检查失败,请稍后重试","errors.sso_disabled":"SSO 已禁用","errors.sso_bad_provider_setup":"此 SSO 提供商没有在您的 .env 文件中完全设置","errors.sso_failed":"通过 SSO 验证被拒绝","errors.sso_no_register":"注册已禁用","errors.sso_email_already_used":"已存在具有相同电子邮件地址的用户帐户,但它与您的外部帐户ID不匹配。 如果您已经在 2FAuth 上使用此邮箱注册,请不要使用 SSO。","errors.account_managed_by_external_provider":"由外部提供商管理的帐户","errors.data_cannot_be_refreshed_from_server":"Data cannot be refreshed from server","errors.no_pwd_reset_for_this_user_type":"Password reset unavailable for this user","groups.groups":"组","groups.create_group":"创建新组","groups.show_group_selector":"显示分组选择器","groups.hide_group_selector":"隐藏分组选择器","groups.select_accounts_to_show":"选择要显示的帐户分组","groups.x_accounts":":count个帐户","groups.manage_groups":"管理组","groups.active_group":"活跃组","groups.manage_groups_legend":"您可以创建组以按照您想要的方式组织您的账户。 所有账户在名为“全部”的伪组中仍然可见,无论它们属于哪个组。","groups.deleting_group_does_not_delete_accounts":"删除组不会删除帐户","groups.move_selected_to":"移动选择到","groups.move_selected_to_group":"将所选移入组中","groups.no_group":"没有分组","groups.change_group":"更改组","groups.group_successfully_created":"分组成功创建","groups.group_name_saved":"分组名称已保存","groups.group_successfully_deleted":"分组成功删除","groups.forms.new_group":"新建组","groups.forms.new_name":"新名称","groups.forms.rename_group":"重命名组","groups.confirm.delete":"您确定要删除此组吗?","languages.browser_preference":"使用游览器偏好","languages.en":"English (英语)","languages.fr":"Français (法语)","languages.de":"Deutsch (德语)","languages.es":"Español (西班牙语)","languages.zh":"简体中文 (简体中文)","languages.ru":"Русский (俄语)","languages.bg":"Български (保加利亚语)","languages.ja":"日本語 (日本人)","languages.hi":"हिंदी (Hindi)","notifications.hello":"Hello","notifications.test_email_settings.subject":"2FAuth test email","notifications.test_email_settings.reason":"You are receiving this email because you requested a test email to validate the email settings of your 2FAuth instance.","notifications.test_email_settings.success":"Good news, it works :)","pagination.previous":"« 上一页","pagination.next":"下一页 »","passwords.reset":"密码重置成功!","passwords.sent":"密码重置邮件已发送!","passwords.throttled":"请稍候再试。","passwords.token":"密码重置令牌无效。","passwords.user":"找不到该邮箱对应的用户。","passwords.password":"密码必须包含至少8个字符,且两次输入的内容必须相同。","settings.settings":"设置","settings.preferences":"偏好","settings.account":"账户","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"令牌","settings.options":"选项","settings.user_preferences":"用户偏好","settings.admin_settings":"管理员设置","settings.confirm.revoke":"你确定要吊销此令牌?","settings.you_are_administrator":"您是管理员","settings.account_linked_to_sso_x_provider":"您通过SSO使用您的 :provider 帐户登录。您的信息不能在这里更改,只能在 :provider 。","settings.general":"常规","settings.security":"安全","settings.profile":"配置文件","settings.change_password":"更改密码","settings.personal_access_tokens":"个人访问令牌","settings.token_legend":"个人访问令牌允许任何应用访问 2Fauth API。您应该在第三方应用授权请求头中提供访问令牌作为一个 Bearer 令牌。","settings.generate_new_token":"生成新令牌","settings.revoke":"吊销","settings.token_revoked":"已成功吊销令牌","settings.revoking_a_token_is_permanent":"吊销令牌是永久的","settings.make_sure_copy_token":"请确保您已复制个人访问令牌。令牌将不再显示。","settings.data_input":"数据输入","settings.forms.edit_settings":"编辑设置","settings.forms.setting_saved":"设置已保存","settings.forms.new_token":"新建令牌","settings.forms.some_translation_are_missing":"使用浏览器偏好时缺少一些翻译?","settings.forms.help_translate_2fauth":"帮助翻译 2FAuth","settings.forms.language.label":"语言","settings.forms.language.help":"用来翻译 2FAuth 用户界面的语言。列出的语言已完成翻译,请设置你选择的语言来覆盖你的浏览器偏好。","settings.forms.show_otp_as_dot.label":"用 *** 来显示生成的一次性密码","settings.forms.show_otp_as_dot.help":"将生成的密码替换为 *** 以确保保密。不影响复制和粘贴功能。","settings.forms.reveal_dotted_otp.label":'显示被 *** 隐藏的 OTP',"settings.forms.reveal_dotted_otp.help":"允许临时显示被 *** 隐藏的密码","settings.forms.close_otp_on_copy.label":'复制后关闭 OTP',"settings.forms.close_otp_on_copy.help":"点击生成的密码进行复制,并自动将其从屏幕上隐藏","settings.forms.clear_search_on_copy.label":"Clear Search on copy","settings.forms.clear_search_on_copy.help":"Empty the Search box right after a code has been copied to the clipboard","settings.forms.copy_otp_on_display.label":'在显示时复制 OTP',"settings.forms.copy_otp_on_display.help":'在屏幕显示后自动复制生成的密码。 由于浏览器限制,只有第一个 TOTP 密码将被复制,而不是更新后的',"settings.forms.use_basic_qrcode_reader.label":"使用基本二维码读取器","settings.forms.use_basic_qrcode_reader.help":"如果你在扫描二维码时遇到问题,这个选项可以切换到更基本但更可靠的二维码阅读器","settings.forms.display_mode.label":"显示模式","settings.forms.display_mode.help":"选择将账户以列表或网格的方式进行展示","settings.forms.password_format.label":"密码格式","settings.forms.password_format.help":"分组显示密码,提高可读性并且便于记忆","settings.forms.pair":"两位数分组","settings.forms.pair_legend":"以两位数分组拆分数字","settings.forms.trio_legend":"以三位数分组拆分数字","settings.forms.half_legend":"将数字拆分为两个相等数位的分组","settings.forms.trio":"三位数分组","settings.forms.half":"两个相等数位的分组","settings.forms.grid":"网格","settings.forms.list":"列表","settings.forms.theme.label":"主题","settings.forms.theme.help":"强制一个特定主题或应用系统/浏览器首选项中定义的主题","settings.forms.light":"亮色主题","settings.forms.dark":"暗色主题","settings.forms.automatic":"自动检测","settings.forms.show_accounts_icons.label":"显示图标","settings.forms.show_accounts_icons.help":"在主视图中显示应用图标","settings.forms.get_official_icons.label":"获取官方图标","settings.forms.get_official_icons.help":"(尝试) 在添加账户时获取两步验证发行者的官方图标","settings.forms.auto_lock.label":"自动锁定","settings.forms.auto_lock.help":"在没有活动的情况下自动登出用户。当使用认证代理或没有指定自定义注销 URL 时无效。","settings.forms.default_group.label":"默认分组","settings.forms.default_group.help":"新创建的账户所关联的分组","settings.forms.view_default_group_on_copy.label":"View default group on copy","settings.forms.view_default_group_on_copy.help":"Always return to the default group when an OTP is copied","settings.forms.useDirectCapture.label":"直接输入","settings.forms.useDirectCapture.help":"选择您是否想要在可用的输入模式中选择输入模式,或者直接使用默认输入模式","settings.forms.defaultCaptureMode.label":"默认输入模式","settings.forms.defaultCaptureMode.help":"直接输入选项开启时使用的默认输入模式","settings.forms.remember_active_group.label":"记住组筛选器","settings.forms.remember_active_group.help":"保存最后应用的组过滤器并在下次访问时还原它","settings.forms.otp_generation.label":"显示密码","settings.forms.otp_generation.help":'设置 OTPs 的显示方式和时间。
',"settings.forms.otp_generation_on_request":"点击/单击账户后","settings.forms.otp_generation_on_request_legend":"在专用视图中显示密码","settings.forms.otp_generation_on_request_title":"单击帐户在专用视图中获取密码","settings.forms.otp_generation_on_home":"始终","settings.forms.otp_generation_on_home_legend":"主视图中显示所有密码","settings.forms.otp_generation_on_home_title":"在主视图中显示所有密码,无需任何操作","settings.forms.never":"从不","settings.forms.on_otp_copy":"在复制安全代码后","settings.forms.1_minutes":"1分钟后","settings.forms.5_minutes":"5分钟后","settings.forms.10_minutes":"10 分钟后","settings.forms.15_minutes":"15分钟后","settings.forms.30_minutes":"30 分钟后","settings.forms.1_hour":"1小时后","settings.forms.1_day":"1天后","settings.forms.livescan":"扫描二维码","settings.forms.upload":"上传二维码","settings.forms.advanced_form":"高级表单","titles.404":"找不到项目","titles.start":"新账户","titles.capture":"扫描二维码","titles.accounts":"账户","titles.createAccount":"创建账户","titles.importAccounts":"导入账户","titles.editAccount":"编辑账户","titles.showQRcode":"二维码形式的账户","titles.groups":"组","titles.createGroup":"创建组","titles.editGroup":"编辑组","titles.settings.options":"选项","titles.settings.account":"用户帐户","titles.settings.oauth.tokens":"OAuth 令牌","titles.settings.oauth.generatePAT":"新建个人令牌","titles.settings.webauthn.editCredential":"编辑设备","titles.settings.webauthn.devices":"WebAuthn 设备","titles.login":"登录","titles.register":"注册","titles.autolock":"自动锁定","titles.password.request":"重置密码","titles.password.reset":"新密码","titles.webauthn.lost":"恢复账号","titles.webauthn.recover":"注册新设备","titles.flooded":"请求数过多","titles.genericError":"错误","titles.about":"关于","titles.admin.appSetup":"App setup","titles.admin.users":"Users management","titles.admin.createUser":"Create user","titles.admin.manageUser":"Manage user","twofaccounts.service":"服务","twofaccounts.account":"账户","twofaccounts.icon":"图标","twofaccounts.icon_for_account_x_at_service_y":"{account} 在 {service} 的帐户图标","twofaccounts.icon_to_illustrate_the_account":"说明账户的图标","twofaccounts.remove_icon":"移除图标","twofaccounts.no_account_here":"这里没有两步验证!","twofaccounts.add_first_account":"选择一个方法并添加您的第一个帐户","twofaccounts.use_full_form":"或者使用完整的表单","twofaccounts.add_one":"添加一个","twofaccounts.show_qrcode":"显示 QR 码","twofaccounts.no_service":"- 无服务 -","twofaccounts.account_created":"帐户成功创建","twofaccounts.account_updated":"账户成功更新","twofaccounts.accounts_deleted":"帐户成功删除","twofaccounts.accounts_moved":"帐户成功移动","twofaccounts.export_selected_to_json":"将所选账号以json导出","twofaccounts.reveal":"显示","twofaccounts.forms.service.placeholder":"谷歌, 推特, 苹果","twofaccounts.forms.account.placeholder":"李华","twofaccounts.forms.new_account":"新建账户","twofaccounts.forms.edit_account":"编辑账户","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"扫描QR码","twofaccounts.forms.upload_qrcode":"上传一个QR码","twofaccounts.forms.use_advanced_form":"使用高级表单","twofaccounts.forms.prefill_using_qrcode":"使用QR码进行预填充","twofaccounts.forms.use_qrcode.val":"使用一个QR码","twofaccounts.forms.use_qrcode.title":"使用QR码来自动填充表单","twofaccounts.forms.unlock.val":"解锁","twofaccounts.forms.unlock.title":"解锁它(风险自负)","twofaccounts.forms.lock.val":"锁定","twofaccounts.forms.lock.title":"将其锁定","twofaccounts.forms.choose_image":"上传","twofaccounts.forms.i_m_lucky":"手气不错","twofaccounts.forms.i_m_lucky_legend":'"手气不错"按钮会尝试获取指定服务的官方图标。输入实际的英文服务名(不带后缀)并避免输入错误。(测试中的功能)',"twofaccounts.forms.test":"测试","twofaccounts.forms.secret.label":"密钥","twofaccounts.forms.secret.help":"用于生成安全码的密钥","twofaccounts.forms.plain_text":"纯文本","twofaccounts.forms.otp_type.label":'选择要创建的 OTP 类型',"twofaccounts.forms.otp_type.help":"基于 时间的OTP(TOTP) 或 基于HMAC的OTP(HMAC-based OTP) 或 Steam OTP","twofaccounts.forms.digits.label":"码长","twofaccounts.forms.digits.help":"生成的安全码位数","twofaccounts.forms.algorithm.label":"算法","twofaccounts.forms.algorithm.help":"用于保护您的安全代码的算法","twofaccounts.forms.period.label":"周期","twofaccounts.forms.period.placeholder":"默认为30","twofaccounts.forms.period.help":"生成的二维码的以秒为单位的有效期限","twofaccounts.forms.counter.label":"计数器","twofaccounts.forms.counter.placeholder":"默认为0","twofaccounts.forms.counter.help":"初始计数器值","twofaccounts.forms.counter.help_lock":"编辑计数器是危险的,因为您可能使帐户与服务的验证服务器失去同步。点击锁的图标可启用更改,但只应在您知道您在做什么时使用","twofaccounts.forms.image.label":"图像","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"作为帐户图标的 URL","twofaccounts.forms.options_help":"如果您不知道如何填写,您可以将下列选项留空。将会应用最常见的设置。","twofaccounts.forms.alternative_methods":"备选方法","twofaccounts.forms.spaces_are_ignored":"Unwanted spaces will be automatically removed","twofaccounts.stream.live_scan_cant_start":"扫描无法开始 :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth 没有权限访问您的相机","twofaccounts.stream.need_grant_permission.solution":"您需要授予权限才能使用您的设备相机。 如果您已经拒绝,且您的浏览器不会再次提示您,请参考浏览器文档以了解如何授予权限。","twofaccounts.stream.need_grant_permission.click_camera_icon":"它通常是通过点击浏览器地址栏中或旁边的虚线相机图标来完成的。","twofaccounts.stream.not_readable.reason":"载入扫描仪失败","twofaccounts.stream.not_readable.solution":"摄像头是否已在使用?请确保没有其他应用使用您的摄像头并重试","twofaccounts.stream.no_cam_on_device.reason":"此设备上没有摄像头","twofaccounts.stream.no_cam_on_device.solution":"也许你忘了插上你的摄像头","twofaccounts.stream.secured_context_required.reason":"需要安全上下文","twofaccounts.stream.secured_context_required.solution":"实时扫描需要HTTPS。如果您从计算机运行2FAuth,请不要使用localhost以外的虚拟主机","twofaccounts.stream.https_required":"摄像机需要 HTTPS","twofaccounts.stream.camera_not_suitable.reason":"已安装的摄像头不合适。","twofaccounts.stream.camera_not_suitable.solution":"请使用其他摄像头或更换设备","twofaccounts.stream.stream_api_not_supported.reason":"此浏览器不支持 Stream API","twofaccounts.stream.stream_api_not_supported.solution":"您应该使用一个现代浏览器","twofaccounts.confirm.delete":"你确定要删除这个账户吗?","twofaccounts.confirm.cancel":"帐户将丢失。您确定吗?","twofaccounts.confirm.discard":"您确定要放弃此账户吗?","twofaccounts.confirm.discard_all":"您确定要放弃所有账户吗?","twofaccounts.confirm.discard_duplicates":"您确定要放弃所有重复账户吗?","twofaccounts.import.import":"导入","twofaccounts.import.to_import":"导入","twofaccounts.import.import_legend":"2FAuth 可以从各种2FA 应用程序导入数据。
使用这些应用的导出功能来获取迁移资源(QR码或文件),并在下方加载它。","twofaccounts.import.import_legend_afterpart":"使用这些应用的导出功能来获取迁移资源,例如二维码或JSON文件,然后加载它。","twofaccounts.import.upload":"上传","twofaccounts.import.scan":"扫描","twofaccounts.import.supported_formats_for_qrcode_upload":"接受:jpg、jpeg、png、bmp、gif、svg或webp","twofaccounts.import.supported_formats_for_file_upload":"接受:纯文本,json,2fas","twofaccounts.import.expected_format_for_direct_input":"Expected: A list of otpauth URI, one by line","twofaccounts.import.supported_migration_formats":"支持的迁移格式","twofaccounts.import.qr_code":"二维码","twofaccounts.import.text_file":"文本文件","twofaccounts.import.direct_input":"Direct input","twofaccounts.import.plain_text":"纯文本","twofaccounts.import.parsing_data":"正在解析数据...","twofaccounts.import.issuer":"发行商","twofaccounts.import.imported":"已导入","twofaccounts.import.failure":"失败","twofaccounts.import.x_valid_accounts_found":"找到 {count} 个有效账户","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"在迁移资源中找到了以下2FA账户。到目前为止,它们都没有被添加到2FAuth中。","twofaccounts.import.use_buttons_to_save_or_discard":"使用可用的按钮将它们永久保存到您的两步验证集合或丢弃它们。","twofaccounts.import.import_all":"全部导入","twofaccounts.import.import_this_account":"导入此账户","twofaccounts.import.discard_all":"全部丢弃","twofaccounts.import.discard_duplicates":"丢弃重复项","twofaccounts.import.discard_this_account":"丢弃此帐户","twofaccounts.import.generate_a_test_password":"生成一个测试密码","twofaccounts.import.possible_duplicate":"完全相同的帐户已经存在","twofaccounts.import.invalid_account":"- 无效账户 -","twofaccounts.import.invalid_service":"- 无效服务 -","twofaccounts.import.do_not_set_password_or_encryption":"当您想要导入到2FAuth时不要启用密码保护或加密。","validation.accepted":"您必须接受 :attribute。","validation.accepted_if":":attribute 只有在 :other 为 :value 时才有效","validation.active_url":":attribute 不是一个有效的网址。","validation.after":":attribute 必须要晚于 :date。","validation.after_or_equal":":attribute 必须要等于 :date 或更晚。","validation.alpha":":attribute 只能包含字母。","validation.alpha_dash":":attribute 只能包含字母、 数字、 破折号和下划线","validation.alpha_num":":attribute 只能包含字母和数字","validation.array":":attribute 必须是一个数组。","validation.before":":attribute 必须要早于 :date。","validation.before_or_equal":":attribute 必须要等于 :date 或更早。","validation.between.array":":attribute 必须只有 :min - :max 个单元。","validation.between.file":":attribute 必须介于 :min - :max KB 之间。","validation.between.numeric":":attribute 必须介于 :min - :max 之间。","validation.between.string":":attribute 必须介于 :min - :max 个字符之间。","validation.boolean":":attribute 必须为布尔值。","validation.confirmed":":attribute 两次输入不一致。","validation.current_password":"密码错误","validation.date":":attribute 不是一个有效的日期。","validation.date_equals":":attribute 必须要等于 :date。","validation.date_format":":attribute 的格式必须为 :format。","validation.declined":"您必须同意 :attribute.","validation.declined_if":":attribute 在 :other 是 :value 时无效.","validation.different":":attribute 和 :other 必须不同。","validation.digits":":attribute 必须是 :digits 位数字。","validation.digits_between":":attribute 必须是介于 :min 和 :max 位的数字。","validation.dimensions":":attribute 图片尺寸不正确。","validation.distinct":":attribute 已经存在。","validation.doesnt_end_with":":attribute 不能以下列的值结尾: :values。","validation.doesnt_start_with":":attribute 不能以下列的值开头: :values。","validation.email":":attribute 不是一个合法的邮箱。","validation.ends_with":":attribute 必须以 :values 为结尾。","validation.enum":"已选的属性 :attribute 无效。","validation.exists":":attribute 不存在。","validation.file":":attribute 必须是文件。","validation.filled":":attribute 不能为空。","validation.gt.array":":attribute 必须多于 :value 个元素。","validation.gt.file":":attribute 必须大于 :value KB。","validation.gt.numeric":":attribute 必须大于 :value。","validation.gt.string":":attribute 必须多于 :value 个字符。","validation.gte.array":":attribute 必须多于或等于 :value 个元素。","validation.gte.file":":attribute 必须大于或等于 :value kB。","validation.gte.numeric":":attribute 必须大于或等于 :value。","validation.gte.string":":attribute 必须大于或等于 :value 个字符。","validation.image":":attribute 必须是图片。","validation.in":"已选的属性 :attribute 无效。","validation.in_array":":attribute 必须在 :other 中。","validation.integer":":attribute 必须是整数。","validation.ip":":attribute 必须是有效的 IP 地址。","validation.ipv4":":attribute 必须是有效的 IPv4 地址。","validation.ipv6":":attribute 必须是有效的 IPv6 地址。","validation.json":":attribute 必须是正确的 JSON 格式。","validation.lt.array":":attribute 必须少于 :value 个元素。","validation.lt.file":":attribute 必须小于 :value KB。","validation.lt.numeric":":attribute 必须小于 :value。","validation.lt.string":":attribute 必须少于 :value 个字符。","validation.lte.array":":attribute 必须少于或等于 :value 个元素。","validation.lte.file":":attribute 必须小于或等于 :value kB。","validation.lte.numeric":":attribute 必须小于或等于 :value。","validation.lte.string":":attribute 必须小于或等于 :value 个字符。","validation.mac_address":":attribute 必须是一个有效的 MAC 地址。","validation.max.array":":attribute 必须少于或等于 :value 个元素。","validation.max.file":":attribute 不能大于 :value kB。","validation.max.numeric":":attribute 不能大于 :max。","validation.max.string":":attribute 不能大于 :max 个字符。","validation.max_digits":":attribute 不能超过 :max 位数。","validation.mimes":":attribute 必须是一个 :values 类型的文件。","validation.mimetypes":":attribute 必须是一个 :values 类型的文件。","validation.min.array":":attribute 至少有 :min 个单元。","validation.min.file":":attribute 大小不能小于 :min KB。","validation.min.numeric":":attribute 必须大于等于 :min。","validation.min.string":":attribute 至少为 :min 个字符。","validation.min_digits":":attribute 至少要有 :min 位数。","validation.multiple_of":":attribute 必须是 :value 的倍数","validation.not_in":"已选的属性 :attribute 非法。","validation.not_regex":":attribute 的格式错误。","validation.numeric":":attribute 必须是一个数字。","validation.password.letters":":attribute 至少要包含一个字母。","validation.password.mixed":":attribute 至少要包含一个大写字母和一个小写字母。","validation.password.numbers":":attribute 至少要包含一个数字。","validation.password.symbols":":attribute 至少要包含一个符号。","validation.password.uncompromised":"在数据泄漏中检测到已输入的 :attribute。请选择一个不同的 :attribute 。","validation.present":":attribute 必须存在。","validation.prohibited":":attribute 字段是禁止的.","validation.prohibited_if":"当 :other 为 :value 时, :attribute 字段被禁止","validation.prohibited_unless":"除非 :other 为 :values,否则 :attribute 字段是禁止的","validation.prohibits":':attribute 字段禁止出现 ":other"',"validation.regex":":attribute 格式不正确。","validation.required":":attribute 不能为空。","validation.required_array_keys":":attribute 字段必须包含: :values","validation.required_if":"当 :other 为 :value 时 :attribute 不能为空。","validation.required_if_accepted":"当 :other 存在时,:attribute 不能为空。","validation.required_unless":"当 :other 不为 :values 时 :attribute 不能为空。","validation.required_with":"当 :values 存在时 :attribute 不能为空。","validation.required_with_all":"当 :values 存在时 :attribute 不能为空。","validation.required_without":"当 :values 不存在时 :attribute 不能为空。","validation.required_without_all":"当 :values 都不存在时 :attribute 不能为空。","validation.same":":attribute 和 :other 必须相同。","validation.size.array":":attribute 必须为 :size 个单元。","validation.size.file":":attribute 大小必须为 :size KB。","validation.size.numeric":":attribute 大小必须为 :size。","validation.size.string":":attribute 必须是 :size 个字符。","validation.starts_with":":attribute 必须以 :values 为开头。","validation.string":":attribute 必须是一个字符串。","validation.timezone":":attribute 必须是一个有效的时区。","validation.unique":":attribute 已经存在。","validation.uploaded":":attribute 上传失败。","validation.url":":attribute 必须是有效的URL。","validation.uuid":":attribute 必须是有效的 UUID。","validation.single":"当使用 :attribute 时,它必须是此请求主体中的唯一参数","validation.onlyCustomOtpWithUri":'"uri"参数仅应单独提供,或与"custom_otp"参数结合提供',"validation.custom.icon.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.qrcode.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.uri.regex":":attribute 不是有效的 otpauth uri","validation.custom.otp_type.in":":attribute 不受支持","validation.custom.email.exists":"未找到使用此电子邮件的账户。","validation.custom.email.ComplyWithEmailRestrictionPolicy":"This email address does not comply with the registration policy","validation.custom.email.IsValidEmailList":"All emails must be valid and separated with a pipe","validation.custom.secret.isBase32Encoded":":attribute 必须是 base32 编码的字符串","validation.custom.account.regex":":attribute 不能包含冒号。","validation.custom.service.regex":":attribute 不能包含冒号。","validation.custom.label.required":"uri 必须有一个标签。","validation.custom.ids.regex":"ID必须以逗号分隔,无需尾随逗号。"};export{t as default}; diff --git a/public/build/assets/php_zh-7cc6d490.js b/public/build/assets/php_zh-7cc6d490.js new file mode 100644 index 00000000..3315c32a --- /dev/null +++ b/public/build/assets/php_zh-7cc6d490.js @@ -0,0 +1,4 @@ +/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */const t={"admin.admin":"管理员","admin.app_setup":"应用设置","admin.registrations":"注册","admin.users":"用户","admin.users_legend":"管理在您的实例上注册的用户或创建新的用户。","admin.admin_settings":"管理员设置","admin.create_new_user":"创建新用户","admin.new_user":"新用户","admin.search_user_placeholder":"用户名,电子邮件...","admin.quick_filters_colons":"快速筛选:","admin.user_created":"用户创建成功","admin.confirm.delete_user":"您确定要删除这个用户吗?没有回头路。","admin.confirm.request_password_reset":"您确定要重置此用户的密码吗?","admin.confirm.purge_password_reset_request":"您确定要清除请求吗?","admin.confirm.delete_account":"您确定要删除该用户吗?","admin.confirm.edit_own_account":"这是您自己的帐户。您确定吗?","admin.confirm.change_admin_role":"这将会对此用户的权限产生重大影响。您确定吗?","admin.confirm.demote_own_account":"您将不再是管理员。真的确定吗?","admin.logs":"日志","admin.administration_legend":"以下设置是全局设置,适用于所有用户。","admin.user_management":"用户管理","admin.oauth_provider":"OAuth 提供者","admin.account_bound_to_x_via_oauth":"此帐户通过 OAuth 绑定到 :provider 帐户","admin.last_seen_on_date":"最后活跃::date","admin.registered_on_date":"注册于 :date","admin.updated_on_date":"更新于 :date","admin.access":"访问","admin.password_requested_on_t":"存在此用户的密码重置请求 (在 :datetime 发出的请求) 意味着该用户尚未更改其密码,但他收到的链接仍然有效。 此请求可能来自用户本人或管理员。","admin.password_request_expired":"存在此用户的密码重置请求但已过期,意味着用户并未及时更改密码。此请求可能来自用户本人或管理员。","admin.resend_email":"重新发送电子邮件","admin.resend_email_title":"重新发送密码重置邮件给用户","admin.resend_email_help":"使用 重新发送电子邮件 向用户发送新密码重置邮件,以便他可以设置新密码。 这将保留当前密码,且之前的请求都将被撤销。","admin.reset_password":"重置密码","admin.reset_password_help":"Use Reset password to force a password reset (this will set a temporary password) before sending a password reset email to the user so he can set a new password. Any previous request will be revoked.","admin.reset_password_title":"Reset the user's password","admin.password_successfully_reset":"Password successfully reset","admin.user_has_x_active_pat":":count active token(s)","admin.user_has_x_security_devices":":count security device(s) (passkeys)","admin.revoke_all_pat_for_user":"Revoke all user's tokens","admin.revoke_all_devices_for_user":"Revoke all user's security devices","admin.danger_zone":"Danger Zone","admin.delete_this_user_legend":"The user account will be deleted as well as all its 2FA data.","admin.this_is_not_soft_delete":"This is not a soft delete, there is no going back.","admin.delete_this_user":"Delete this user","admin.user_role_updated":"User role updated","admin.pats_succesfully_revoked":"User's PATs successfully revoked","admin.security_devices_succesfully_revoked":"User's security devices successfully revoked","admin.variables":"Variables","admin.cache_cleared":"Cache cleared","admin.cache_optimized":"Cache optimized","admin.check_now":"Check now","admin.view_on_github":"View on Github","admin.x_is_available":":version is available","admin.forms.use_encryption.label":"Protect sensitive data","admin.forms.use_encryption.help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key.","admin.forms.restrict_registration.label":"Restrict registration","admin.forms.restrict_registration.help":"Make registration only available to a limited range of email addresses. Both rules can be used simultaneously. This has no effect on registration via SSO.","admin.forms.restrict_list.label":"Filtering list","admin.forms.restrict_list.help":'Emails in this list will be allowed to register. Separate addresses with a pipe ("|")',"admin.forms.restrict_rule.label":"Filtering rule","admin.forms.restrict_rule.help":"Emails matching this regular expression will be allowed to register","admin.forms.disable_registration.label":"Disable registration","admin.forms.disable_registration.help":"Prevent new user registration. Unless overridden (see below), this affects SSO as well, so new users won't be able to sign in via SSO","admin.forms.enable_sso.label":"Enable Single Sign-On (SSO)","admin.forms.enable_sso.help":"Allow visitors to authenticate using an external ID via the Single Sign-On scheme","admin.forms.keep_sso_registration_enabled.label":"Keep SSO registration enabled","admin.forms.keep_sso_registration_enabled.help":"Allow new users to sign in for the first time via SSO whereas registration is disabled","admin.forms.is_admin.label":"Is administrator","admin.forms.is_admin.help":"Give administrator rights to the user. Administrators have permissions to manage the whole app, i.e. settings and other users, but cannot generate password for a 2FA they don't own.","admin.forms.test_email.label":"Email configuration test","admin.forms.test_email.help":"Send a test email to control your instance's email configuration. It is important to have a working configuration, otherwise users will not be able to request a reset password.","admin.forms.test_email.email_will_be_send_to_x":'The email will be send to :email',"admin.forms.cache_management.label":"Cache management","admin.forms.cache_management.help":"有时缓存需要清除,例如在更改环境变量或更新后。您可以在此处这样做。","auth.failed":"用户名或密码错误","auth.password":"提供的密码不正确","auth.throttle":"您尝试的登录次数过多,请 :seconds 秒后再试。","auth.sign_out":"登出","auth.sign_in":"登录","auth.sign_in_using":"登录使用","auth.or_continue_with":"您也可以:","auth.sign_in_using_security_device":"使用安全设备登录","auth.login_and_password":"用户名和密码","auth.register":"注册","auth.welcome_to_2fauth":"欢迎使用 2FAuth","auth.autolock_triggered":"已自动锁定","auth.autolock_triggered_punchline":"自动锁定已触发。您已被自动断开连接。","auth.already_authenticated":"已验证","auth.authentication":"身份认证","auth.maybe_later":"以后再说","auth.user_account_controlled_by_proxy":"用户帐户由身份验证代理提供。
请在代理中管理帐户。","auth.auth_handled_by_proxy":"身份验证由代理处理,下面的设置被禁用。
在代理管理身份验证。","auth.confirm.logout":"您确定要注销吗?","auth.confirm.revoke_device":"你确定要删除此设备?","auth.confirm.delete_account":"您确定要删除您的账户?","auth.webauthn.security_device":"硬件安全密钥","auth.webauthn.security_devices":"安全设备","auth.webauthn.security_devices_legend":"您可以用来登录2FAuth的认证设备,例如安全密钥(如Yubikey)或具有生物识别能力的智能手机(如Apple Face Id/TouchId)","auth.webauthn.enhance_security_using_webauthn":`您可以通过启用 WebAuthn 身份验证来增强您的2FAuth 账户的安全性。

+WebAuthn允许您使用受信任的设备 (如Yubikeys 或具有生物识别能力的智能手机) 快速和更安全地登录。`,"auth.webauthn.use_security_device_to_sign_in":"准备好使用您的(一个)安全设备进行身份验证。请插入您的密钥,移除口罩或手套等。","auth.webauthn.lost_your_device":"设备丢失?","auth.webauthn.recover_your_account":"恢复您的账号","auth.webauthn.account_recovery":"恢复账号","auth.webauthn.recovery_punchline":"2FAuth 将向您发送恢复链接到此电子邮件地址。点击收到电子邮件中的链接注册新的安全设备。

确保在您可以在自己的设备上打开电子邮件。","auth.webauthn.send_recovery_link":"发送恢复链接","auth.webauthn.account_recovery_email_sent":"账号恢复邮件已发送!","auth.webauthn.disable_all_security_devices":"禁用所有安全设备","auth.webauthn.disable_all_security_devices_help":"您的所有安全设备都将被撤销。如果您丢失了一个设备或其安全性已经受到损害,请使用此选项。","auth.webauthn.register_a_new_device":"注册新设备","auth.webauthn.register_a_device":"注册设备","auth.webauthn.device_successfully_registered":"成功注册设备","auth.webauthn.device_revoked":"成功注销设备","auth.webauthn.revoking_a_device_is_permanent":"注销设备是永久性的","auth.webauthn.recover_account_instructions":"若要恢复您的帐户,2FAuth 将会重置一些Webauth设置,以便您可以使用您的电子邮件和密码登录。","auth.webauthn.invalid_recovery_token":"无效的恢复密钥","auth.webauthn.webauthn_login_disabled":"Webauthn 登录已被禁用","auth.webauthn.invalid_reset_token":"此密码重置令牌无效","auth.webauthn.rename_device":"重命名设备","auth.webauthn.my_device":"我的设备","auth.webauthn.unknown_device":"未知设备","auth.webauthn.use_webauthn_only.label":"仅使用 WebAuthn","auth.webauthn.use_webauthn_only.help":`将WebAuthn设定为登录2FAuth账户的唯一授权的登录方式。推荐启用此选项,并利用WebAuth增强安全性。

+ 设备丢失时, 您可以通过重置此选项并使用您的电子邮件和密码登录来恢复您的帐户。

+ 请注意! 尽管启用了此选项,输入电子邮件和密码的登录界面仍然可用,但是会提示 “身份验证失败”。`,"auth.webauthn.need_a_security_device_to_enable_options":"设置至少一个WebAuth设备以启用以下选项","auth.webauthn.options":"选项","auth.forms.name":"用户名","auth.forms.login":"登录","auth.forms.webauthn_login":"使用 WebAuthn 登录","auth.forms.email":"邮箱","auth.forms.password":"密码","auth.forms.reveal_password":"显示密码","auth.forms.hide_password":"隐藏密码","auth.forms.confirm_password":"确认密码","auth.forms.new_password":"新密码","auth.forms.confirm_new_password":"确认新密码","auth.forms.dont_have_account_yet":"还没有账号?","auth.forms.already_register":"已经注册?","auth.forms.authentication_failed":"验证失败","auth.forms.forgot_your_password":"忘记密码?","auth.forms.request_password_reset":"重置密码","auth.forms.reset_your_password":"重置你的密码","auth.forms.reset_password":"重置密码","auth.forms.disabled_in_demo":"此功能将在演示模式下禁用。","auth.forms.current_password.label":"当前密码","auth.forms.current_password.help":"填写您当前设置的密码以确认是您本人","auth.forms.change_password":"修改密码","auth.forms.send_password_reset_link":"发送密码重置链接","auth.forms.password_successfully_reset":"密码重置成功。","auth.forms.edit_account":"编辑账户","auth.forms.profile_saved":"个人资料更新成功!","auth.forms.welcome_to_demo_app_use_those_credentials":"欢迎访问 2FAuth 的演示站点。

您可以使用电子邮件地址 demo@2fauth.app 和密码 demo来登录。","auth.forms.welcome_to_testing_app_use_those_credentials":"欢迎访问 2FAuth 的测试实例。

您可以使用电子邮件地址 testing@2fauth.app 和密码 password来登录。","auth.forms.register_punchline":"欢迎使用 2FAuth
您需要一个账号才能继续,请先完成注册。","auth.forms.reset_punchline":"2FAuth 将向您发送密码重置链接到此邮箱。请点击收到的电子邮件中的链接设置新密码。","auth.forms.name_this_device":"命名此设备","auth.forms.delete_account":"删除账户","auth.forms.delete_your_account":"删除您的账户","auth.forms.delete_your_account_and_reset_all_data":"这将重置您的 2FAuth。您的账号以及所有的 2FA 数据都将被删除,这是一个不可逆的操作。","auth.forms.reset_your_password_to_delete_your_account":"如果您总是使用 SSO 登录, 登出后使用重置密码功能获取密码,以便您可以填写此表格。","auth.forms.deleting_2fauth_account_does_not_impact_provider":"删除您的 2FAuth 帐户对您的外部 SSO 帐户没有影响。","auth.forms.user_account_successfully_deleted":"账号已成功删除","auth.forms.has_lower_case":"包含小写字母","auth.forms.has_upper_case":"包含大写字母","auth.forms.has_special_char":"包含特殊字符","auth.forms.has_number":"包含数字","auth.forms.is_long_enough":"至少 8 个字符","auth.forms.mandatory_rules":"必选项","auth.forms.optional_rules_you_should_follow":"建议(推荐)","auth.forms.caps_lock_is_on":"大写锁定已开启","commons.cancel":"取消","commons.update":"更新","commons.copy":"复制","commons.copy_to_clipboard":"复制到剪贴板","commons.copied_to_clipboard":"已复制到剪贴板","commons.profile":"个人资料","commons.edit":"编辑","commons.delete":"删除","commons.disable":"禁用","commons.enable":"启用","commons.create":"创建","commons.save":"保存","commons.close":"关闭","commons.clear":"清空","commons.clear_search":"清除搜索结果","commons.demo_do_not_post_sensitive_data":"这是一个演示应用,请不要上传任何敏感数据","commons.testing_do_not_post_sensitive_data":"这是一个测试应用,请不要上传任何敏感数据","commons.x_selected":"已选择:count个","commons.name":"名称","commons.manage":"管理","commons.done":"完成","commons.new":"新建","commons.back":"返回","commons.move":"移动","commons.export":"导出","commons.all":"全部","commons.check_all":"全选","commons.select_all":"全选","commons.clear_selection":"清除选择","commons.sort_descending":"降序排列","commons.sort_ascending":"升序排序","commons.rename":"重命名","commons.new_name":"新名称","commons.options":"选项","commons.reload":"刷新","commons.refresh":"刷新","commons.data_refreshed_to_reflect_server_changes":"数据已被刷新以反映服务器侧的更改","commons.generate":"生成","commons.generating_otp":"正在生成 OTP","commons.open_in_browser":"在浏览器中打开","commons.continue":"继续","commons.discard":"放弃","commons.about":"关于","commons.usefull_links":"有用的链接","commons.environment":"环境","commons.credits":"鸣谢","commons.2fauth_teaser":"用于管理您的两步验证 (2FA) 帐户并生成安全码的网页应用","commons.made_with":"基于","commons.ui_icons_by":"UI 图标来自","commons.logos_by":"Logo 来自","commons.search":"搜索​​​​","commons.resources":"资源","commons.check_for_update":"检查更新","commons.check_for_update_help":"自动检查 (每周一次) 并当 2FAuth 在 Github 上发布新版本时发出提醒","commons.you_are_up_to_date":"该实例是最新的","commons.2fauth_description":"用于管理您的两步验证 (2FA) 账户并生成安全码的网页应用","commons.image_of_qrcode_to_scan":"要扫描的二维码图像","commons.file":"文件","commons.or":"或","commons.close_the_x_page":"关闭 {pagetitle} 页","commons.submit":"提交","commons.default":"默认值","commons.back_to_home":"返回首页","commons.nothing":"无","commons.no_result":"无结果","commons.information":"信息","commons.permissions":"权限","commons.send":"发送","commons.optimize":"优化","errors.resource_not_found":"资源未找到","errors.error_occured":"发生错误:","errors.refresh":"刷新","errors.no_valid_otp":"此二维码中没有有效的OTP资源","errors.something_wrong_with_server":"服务器发生内部错误","errors.Unable_to_decrypt_uri":"无法解密uri","errors.not_a_supported_otp_type":"不支持此OTP格式","errors.cannot_create_otp_without_secret":"无法在没有密码的情况下创建一个OTP","errors.data_of_qrcode_is_not_valid_URI":"此QR码的数据不是有效的OTP Auth URI。该QR码包含:","errors.wrong_current_password":"当前密码错误,没有发生任何更改","errors.error_during_encryption":"加密失败,您的数据库仍未受到保护","errors.error_during_decryption":"解密失败,您的数据库仍受保护。这通常由一个或多个帐户加密数据的完整性不足导致。","errors.qrcode_cannot_be_read":"二维码无效","errors.too_many_ids":"查询参数中包含太多ID,最多允许 100 个","errors.delete_user_setting_only":"只能删除用户创建的设置","errors.indecipherable":"*无法解析*","errors.cannot_decipher_secret":"密钥不能被解密。这主要是由 2Fauth 的 .env 文件中 APP_KEY 设置错误或存储在数据库中的数据已损坏引发的。","errors.https_required":"需要 HTTPS","errors.browser_does_not_support_webauthn":"您的设备不支持Webauthn。请使用更现代的浏览器重试。","errors.aborted_by_user":"被用户中止。","errors.security_device_already_registered":"设备已被注册过","errors.not_allowed_operation":"不允许此操作","errors.no_authenticator_support_specified_algorithms":"没有身份验证器支持指定的算法","errors.authenticator_missing_discoverable_credential_support":"身份验证器缺少可发现凭据的支持","errors.authenticator_missing_user_verification_support":"身份验证器缺少用户验证支持","errors.unknown_error":"未知错误","errors.security_error_check_rpid":"安全错误
请检查您的 WEBAUTHN_ID env var","errors.2fauth_has_not_a_valid_domain":"2FAuth的域不是一个有效的域","errors.user_id_not_between_1_64":"用户ID不在 1 到 64 个字符内","errors.no_entry_was_of_type_public_key":'没有类型为"公钥"的条目',"errors.unsupported_with_reverseproxy":"使用代理进行认证时不可用","errors.user_deletion_failed":"帐户删除失败,没有数据被删除","errors.auth_proxy_failed":"代理认证失败","errors.auth_proxy_failed_legend":"2Fauth 被配置为在身份验证代理后运行,但您的代理没有返回预期的请求头。请检查您的配置并重试。","errors.invalid_x_migration":"无效或不可读的 :appname 数据","errors.invalid_2fa_data":"无效的2FA数据","errors.unsupported_migration":"数据与任何支持的格式不匹配","errors.unsupported_otp_type":"不支持的 OTP 类型","errors.encrypted_migration":"无法读取,数据似乎已加密","errors.no_logo_found_for_x":"{service} 没有可用的 Logo","errors.file_upload_failed":"文件上传失败","errors.unauthorized":"无权限","errors.unauthorized_legend":"您无权查看此资源或执行此操作","errors.cannot_delete_the_only_admin":"无法删除唯一的管理员账户","errors.error_during_data_fetching":"💀 在获取数据过程中出了问题","errors.check_failed_try_later":"检查失败,请稍后重试","errors.sso_disabled":"SSO 已禁用","errors.sso_bad_provider_setup":"此 SSO 提供商没有在您的 .env 文件中完全设置","errors.sso_failed":"通过 SSO 验证被拒绝","errors.sso_no_register":"注册已禁用","errors.sso_email_already_used":"已存在具有相同电子邮件地址的用户帐户,但它与您的外部帐户ID不匹配。 如果您已经在 2FAuth 上使用此邮箱注册,请不要使用 SSO。","errors.account_managed_by_external_provider":"由外部提供商管理的帐户","errors.data_cannot_be_refreshed_from_server":"无法从服务器刷新数据","errors.no_pwd_reset_for_this_user_type":"此用户无法重置密码","groups.groups":"组","groups.create_group":"创建新组","groups.show_group_selector":"显示分组选择器","groups.hide_group_selector":"隐藏分组选择器","groups.select_accounts_to_show":"选择要显示的帐户分组","groups.x_accounts":":count个帐户","groups.manage_groups":"管理组","groups.active_group":"活跃组","groups.manage_groups_legend":"您可以创建组以按照您想要的方式组织您的账户。 所有账户在名为“全部”的伪组中仍然可见,无论它们属于哪个组。","groups.deleting_group_does_not_delete_accounts":"删除组不会删除帐户","groups.move_selected_to":"移动选择到","groups.move_selected_to_group":"将所选移入组中","groups.no_group":"没有分组","groups.change_group":"更改组","groups.group_successfully_created":"分组成功创建","groups.group_name_saved":"分组名称已保存","groups.group_successfully_deleted":"分组成功删除","groups.forms.new_group":"新建组","groups.forms.new_name":"新名称","groups.forms.rename_group":"重命名组","groups.confirm.delete":"您确定要删除此组吗?","languages.browser_preference":"使用游览器偏好","languages.en":"English (英语)","languages.fr":"Français (法语)","languages.de":"Deutsch (德语)","languages.es":"Español (西班牙语)","languages.zh":"简体中文 (简体中文)","languages.ru":"Русский (俄语)","languages.bg":"Български (保加利亚语)","languages.ja":"日本語 (日本人)","languages.hi":"हिंदी (印地语)","notifications.hello":"您好","notifications.test_email_settings.subject":"2FAuth 测试电子邮件","notifications.test_email_settings.reason":"您收到这封邮件是因为您请求了一封测试电子邮件来验证您的2FAuth 实例的电子邮件设置。","notifications.test_email_settings.success":"好消息是,它正常工作:)","pagination.previous":"« 上一页","pagination.next":"下一页 »","passwords.reset":"密码重置成功!","passwords.sent":"密码重置邮件已发送!","passwords.throttled":"请稍候再试。","passwords.token":"密码重置令牌无效。","passwords.user":"找不到该邮箱对应的用户。","passwords.password":"密码必须包含至少8个字符,且两次输入的内容必须相同。","settings.settings":"设置","settings.preferences":"偏好","settings.account":"账户","settings.oauth":"OAuth","settings.webauthn":"WebAuthn","settings.tokens":"令牌","settings.options":"选项","settings.user_preferences":"用户偏好","settings.admin_settings":"管理员设置","settings.confirm.revoke":"你确定要吊销此令牌?","settings.you_are_administrator":"您是管理员","settings.account_linked_to_sso_x_provider":"您通过SSO使用您的 :provider 帐户登录。您的信息不能在这里更改,只能在 :provider 。","settings.general":"常规","settings.security":"安全","settings.profile":"配置文件","settings.change_password":"更改密码","settings.personal_access_tokens":"个人访问令牌","settings.token_legend":"个人访问令牌允许任何应用访问 2Fauth API。您应该在第三方应用授权请求头中提供访问令牌作为一个 Bearer 令牌。","settings.generate_new_token":"生成新令牌","settings.revoke":"吊销","settings.token_revoked":"已成功吊销令牌","settings.revoking_a_token_is_permanent":"吊销令牌是永久的","settings.make_sure_copy_token":"请确保您已复制个人访问令牌。令牌将不再显示。","settings.data_input":"数据输入","settings.forms.edit_settings":"编辑设置","settings.forms.setting_saved":"设置已保存","settings.forms.new_token":"新建令牌","settings.forms.some_translation_are_missing":"使用浏览器偏好时缺少一些翻译?","settings.forms.help_translate_2fauth":"帮助翻译 2FAuth","settings.forms.language.label":"语言","settings.forms.language.help":"用来翻译 2FAuth 用户界面的语言。列出的语言已完成翻译,请设置你选择的语言来覆盖你的浏览器偏好。","settings.forms.show_otp_as_dot.label":"用 *** 来显示生成的一次性密码","settings.forms.show_otp_as_dot.help":"将生成的密码替换为 *** 以确保保密。不影响复制和粘贴功能。","settings.forms.reveal_dotted_otp.label":'显示被 *** 隐藏的 OTP',"settings.forms.reveal_dotted_otp.help":"允许临时显示被 *** 隐藏的密码","settings.forms.close_otp_on_copy.label":'复制后关闭 OTP',"settings.forms.close_otp_on_copy.help":"点击生成的密码进行复制,并自动将其从屏幕上隐藏","settings.forms.clear_search_on_copy.label":"复制后清空搜索框","settings.forms.clear_search_on_copy.help":"代码复制到剪贴板后立即清空搜索框","settings.forms.copy_otp_on_display.label":'在显示时复制 OTP',"settings.forms.copy_otp_on_display.help":'在屏幕显示后自动复制生成的密码。 由于浏览器限制,只有第一个 TOTP 密码将被复制,而不是更新后的',"settings.forms.use_basic_qrcode_reader.label":"使用基本二维码读取器","settings.forms.use_basic_qrcode_reader.help":"如果你在扫描二维码时遇到问题,这个选项可以切换到更基本但更可靠的二维码阅读器","settings.forms.display_mode.label":"显示模式","settings.forms.display_mode.help":"选择将账户以列表或网格的方式进行展示","settings.forms.password_format.label":"密码格式","settings.forms.password_format.help":"分组显示密码,提高可读性并且便于记忆","settings.forms.pair":"两位数分组","settings.forms.pair_legend":"以两位数分组拆分数字","settings.forms.trio_legend":"以三位数分组拆分数字","settings.forms.half_legend":"将数字拆分为两个相等数位的分组","settings.forms.trio":"三位数分组","settings.forms.half":"两个相等数位的分组","settings.forms.grid":"网格","settings.forms.list":"列表","settings.forms.theme.label":"主题","settings.forms.theme.help":"强制一个特定主题或应用系统/浏览器首选项中定义的主题","settings.forms.light":"亮色主题","settings.forms.dark":"暗色主题","settings.forms.automatic":"自动检测","settings.forms.show_accounts_icons.label":"显示图标","settings.forms.show_accounts_icons.help":"在主视图中显示应用图标","settings.forms.get_official_icons.label":"获取官方图标","settings.forms.get_official_icons.help":"(尝试) 在添加账户时获取两步验证发行者的官方图标","settings.forms.auto_lock.label":"自动锁定","settings.forms.auto_lock.help":"在没有活动的情况下自动登出用户。当使用认证代理或没有指定自定义注销 URL 时无效。","settings.forms.default_group.label":"默认分组","settings.forms.default_group.help":"新创建的账户所关联的分组","settings.forms.view_default_group_on_copy.label":"在复制后查看默认组","settings.forms.view_default_group_on_copy.help":"复制OTP后总是返回到默认组","settings.forms.useDirectCapture.label":"直接输入","settings.forms.useDirectCapture.help":"选择您是否想要在可用的输入模式中选择输入模式,或者直接使用默认输入模式","settings.forms.defaultCaptureMode.label":"默认输入模式","settings.forms.defaultCaptureMode.help":"直接输入选项开启时使用的默认输入模式","settings.forms.remember_active_group.label":"记住组筛选器","settings.forms.remember_active_group.help":"保存最后应用的组过滤器并在下次访问时还原它","settings.forms.otp_generation.label":"显示密码","settings.forms.otp_generation.help":'设置 OTPs 的显示方式和时间。
',"settings.forms.otp_generation_on_request":"点击/单击账户后","settings.forms.otp_generation_on_request_legend":"在专用视图中显示密码","settings.forms.otp_generation_on_request_title":"单击帐户在专用视图中获取密码","settings.forms.otp_generation_on_home":"始终","settings.forms.otp_generation_on_home_legend":"主视图中显示所有密码","settings.forms.otp_generation_on_home_title":"在主视图中显示所有密码,无需任何操作","settings.forms.never":"从不","settings.forms.on_otp_copy":"在复制安全代码后","settings.forms.1_minutes":"1分钟后","settings.forms.5_minutes":"5分钟后","settings.forms.10_minutes":"10 分钟后","settings.forms.15_minutes":"15分钟后","settings.forms.30_minutes":"30 分钟后","settings.forms.1_hour":"1小时后","settings.forms.1_day":"1天后","settings.forms.livescan":"扫描二维码","settings.forms.upload":"上传二维码","settings.forms.advanced_form":"高级表单","titles.404":"找不到项目","titles.start":"新账户","titles.capture":"扫描二维码","titles.accounts":"账户","titles.createAccount":"创建账户","titles.importAccounts":"导入账户","titles.editAccount":"编辑账户","titles.showQRcode":"二维码形式的账户","titles.groups":"组","titles.createGroup":"创建组","titles.editGroup":"编辑组","titles.settings.options":"选项","titles.settings.account":"用户帐户","titles.settings.oauth.tokens":"OAuth 令牌","titles.settings.oauth.generatePAT":"新建个人令牌","titles.settings.webauthn.editCredential":"编辑设备","titles.settings.webauthn.devices":"WebAuthn 设备","titles.login":"登录","titles.register":"注册","titles.autolock":"自动锁定","titles.password.request":"重置密码","titles.password.reset":"新密码","titles.webauthn.lost":"恢复账号","titles.webauthn.recover":"注册新设备","titles.flooded":"请求数过多","titles.genericError":"错误","titles.about":"关于","titles.admin.appSetup":"应用设置","titles.admin.users":"用户管理","titles.admin.createUser":"创建用户","titles.admin.manageUser":"管理用户","twofaccounts.service":"服务","twofaccounts.account":"账户","twofaccounts.icon":"图标","twofaccounts.icon_for_account_x_at_service_y":"{account} 在 {service} 的帐户图标","twofaccounts.icon_to_illustrate_the_account":"说明账户的图标","twofaccounts.remove_icon":"移除图标","twofaccounts.no_account_here":"这里没有两步验证!","twofaccounts.add_first_account":"选择一个方法并添加您的第一个帐户","twofaccounts.use_full_form":"或者使用完整的表单","twofaccounts.add_one":"添加一个","twofaccounts.show_qrcode":"显示 QR 码","twofaccounts.no_service":"- 无服务 -","twofaccounts.account_created":"帐户成功创建","twofaccounts.account_updated":"账户成功更新","twofaccounts.accounts_deleted":"帐户成功删除","twofaccounts.accounts_moved":"帐户成功移动","twofaccounts.export_selected_to_json":"将所选账号以json导出","twofaccounts.reveal":"显示","twofaccounts.forms.service.placeholder":"谷歌, 推特, 苹果","twofaccounts.forms.account.placeholder":"李华","twofaccounts.forms.new_account":"新建账户","twofaccounts.forms.edit_account":"编辑账户","twofaccounts.forms.otp_uri":"OTP Uri","twofaccounts.forms.scan_qrcode":"扫描QR码","twofaccounts.forms.upload_qrcode":"上传一个QR码","twofaccounts.forms.use_advanced_form":"使用高级表单","twofaccounts.forms.prefill_using_qrcode":"使用QR码进行预填充","twofaccounts.forms.use_qrcode.val":"使用一个QR码","twofaccounts.forms.use_qrcode.title":"使用QR码来自动填充表单","twofaccounts.forms.unlock.val":"解锁","twofaccounts.forms.unlock.title":"解锁它(风险自负)","twofaccounts.forms.lock.val":"锁定","twofaccounts.forms.lock.title":"将其锁定","twofaccounts.forms.choose_image":"上传","twofaccounts.forms.i_m_lucky":"手气不错","twofaccounts.forms.i_m_lucky_legend":'"手气不错"按钮会尝试获取指定服务的官方图标。输入实际的英文服务名(不带后缀)并避免输入错误。(测试中的功能)',"twofaccounts.forms.test":"测试","twofaccounts.forms.secret.label":"密钥","twofaccounts.forms.secret.help":"用于生成安全码的密钥","twofaccounts.forms.plain_text":"纯文本","twofaccounts.forms.otp_type.label":'选择要创建的 OTP 类型',"twofaccounts.forms.otp_type.help":"基于 时间的OTP(TOTP) 或 基于HMAC的OTP(HMAC-based OTP) 或 Steam OTP","twofaccounts.forms.digits.label":"码长","twofaccounts.forms.digits.help":"生成的安全码位数","twofaccounts.forms.algorithm.label":"算法","twofaccounts.forms.algorithm.help":"用于保护您的安全代码的算法","twofaccounts.forms.period.label":"周期","twofaccounts.forms.period.placeholder":"默认为30","twofaccounts.forms.period.help":"生成的二维码的以秒为单位的有效期限","twofaccounts.forms.counter.label":"计数器","twofaccounts.forms.counter.placeholder":"默认为0","twofaccounts.forms.counter.help":"初始计数器值","twofaccounts.forms.counter.help_lock":"编辑计数器是危险的,因为您可能使帐户与服务的验证服务器失去同步。点击锁的图标可启用更改,但只应在您知道您在做什么时使用","twofaccounts.forms.image.label":"图像","twofaccounts.forms.image.placeholder":"http://...","twofaccounts.forms.image.help":"作为帐户图标的 URL","twofaccounts.forms.options_help":"如果您不知道如何填写,您可以将下列选项留空。将会应用最常见的设置。","twofaccounts.forms.alternative_methods":"备选方法","twofaccounts.forms.spaces_are_ignored":"不需要的空格将被自动删除","twofaccounts.stream.live_scan_cant_start":"扫描无法开始 :(","twofaccounts.stream.need_grant_permission.reason":"2FAuth 没有权限访问您的相机","twofaccounts.stream.need_grant_permission.solution":"您需要授予权限才能使用您的设备相机。 如果您已经拒绝,且您的浏览器不会再次提示您,请参考浏览器文档以了解如何授予权限。","twofaccounts.stream.need_grant_permission.click_camera_icon":"它通常是通过点击浏览器地址栏中或旁边的虚线相机图标来完成的。","twofaccounts.stream.not_readable.reason":"载入扫描仪失败","twofaccounts.stream.not_readable.solution":"摄像头是否已在使用?请确保没有其他应用使用您的摄像头并重试","twofaccounts.stream.no_cam_on_device.reason":"此设备上没有摄像头","twofaccounts.stream.no_cam_on_device.solution":"也许你忘了插上你的摄像头","twofaccounts.stream.secured_context_required.reason":"需要安全上下文","twofaccounts.stream.secured_context_required.solution":"实时扫描需要HTTPS。如果您从计算机运行2FAuth,请不要使用localhost以外的虚拟主机","twofaccounts.stream.https_required":"摄像机需要 HTTPS","twofaccounts.stream.camera_not_suitable.reason":"已安装的摄像头不合适。","twofaccounts.stream.camera_not_suitable.solution":"请使用其他摄像头或更换设备","twofaccounts.stream.stream_api_not_supported.reason":"此浏览器不支持 Stream API","twofaccounts.stream.stream_api_not_supported.solution":"您应该使用一个现代浏览器","twofaccounts.confirm.delete":"你确定要删除这个账户吗?","twofaccounts.confirm.cancel":"帐户将丢失。您确定吗?","twofaccounts.confirm.discard":"您确定要放弃此账户吗?","twofaccounts.confirm.discard_all":"您确定要放弃所有账户吗?","twofaccounts.confirm.discard_duplicates":"您确定要放弃所有重复账户吗?","twofaccounts.import.import":"导入","twofaccounts.import.to_import":"导入","twofaccounts.import.import_legend":"2FAuth 可以从各种2FA 应用程序导入数据。
使用这些应用的导出功能来获取迁移资源(QR码或文件),并在下方加载它。","twofaccounts.import.import_legend_afterpart":"使用这些应用的导出功能来获取迁移资源,例如二维码或JSON文件,然后加载它。","twofaccounts.import.upload":"上传","twofaccounts.import.scan":"扫描","twofaccounts.import.supported_formats_for_qrcode_upload":"接受:jpg、jpeg、png、bmp、gif、svg或webp","twofaccounts.import.supported_formats_for_file_upload":"接受:纯文本,json,2fas","twofaccounts.import.expected_format_for_direct_input":"应为:一个 otpauth URI 的列表,一行一个","twofaccounts.import.supported_migration_formats":"支持的迁移格式","twofaccounts.import.qr_code":"二维码","twofaccounts.import.text_file":"文本文件","twofaccounts.import.direct_input":"直接输入","twofaccounts.import.plain_text":"纯文本","twofaccounts.import.parsing_data":"正在解析数据...","twofaccounts.import.issuer":"发行商","twofaccounts.import.imported":"已导入","twofaccounts.import.failure":"失败","twofaccounts.import.x_valid_accounts_found":"找到 {count} 个有效账户","twofaccounts.import.submitted_data_parsed_now_accounts_are_awaiting_import":"在迁移资源中找到了以下2FA账户。到目前为止,它们都没有被添加到2FAuth中。","twofaccounts.import.use_buttons_to_save_or_discard":"使用可用的按钮将它们永久保存到您的两步验证集合或丢弃它们。","twofaccounts.import.import_all":"全部导入","twofaccounts.import.import_this_account":"导入此账户","twofaccounts.import.discard_all":"全部丢弃","twofaccounts.import.discard_duplicates":"丢弃重复项","twofaccounts.import.discard_this_account":"丢弃此帐户","twofaccounts.import.generate_a_test_password":"生成一个测试密码","twofaccounts.import.possible_duplicate":"完全相同的帐户已经存在","twofaccounts.import.invalid_account":"- 无效账户 -","twofaccounts.import.invalid_service":"- 无效服务 -","twofaccounts.import.do_not_set_password_or_encryption":"当您想要导入到2FAuth时不要启用密码保护或加密。","validation.accepted":"您必须接受 :attribute。","validation.accepted_if":":attribute 只有在 :other 为 :value 时才有效","validation.active_url":":attribute 不是一个有效的网址。","validation.after":":attribute 必须要晚于 :date。","validation.after_or_equal":":attribute 必须要等于 :date 或更晚。","validation.alpha":":attribute 只能包含字母。","validation.alpha_dash":":attribute 只能包含字母、 数字、 破折号和下划线","validation.alpha_num":":attribute 只能包含字母和数字","validation.array":":attribute 必须是一个数组。","validation.before":":attribute 必须要早于 :date。","validation.before_or_equal":":attribute 必须要等于 :date 或更早。","validation.between.array":":attribute 必须只有 :min - :max 个单元。","validation.between.file":":attribute 必须介于 :min - :max KB 之间。","validation.between.numeric":":attribute 必须介于 :min - :max 之间。","validation.between.string":":attribute 必须介于 :min - :max 个字符之间。","validation.boolean":":attribute 必须为布尔值。","validation.confirmed":":attribute 两次输入不一致。","validation.current_password":"密码错误","validation.date":":attribute 不是一个有效的日期。","validation.date_equals":":attribute 必须要等于 :date。","validation.date_format":":attribute 的格式必须为 :format。","validation.declined":"您必须同意 :attribute.","validation.declined_if":":attribute 在 :other 是 :value 时无效.","validation.different":":attribute 和 :other 必须不同。","validation.digits":":attribute 必须是 :digits 位数字。","validation.digits_between":":attribute 必须是介于 :min 和 :max 位的数字。","validation.dimensions":":attribute 图片尺寸不正确。","validation.distinct":":attribute 已经存在。","validation.doesnt_end_with":":attribute 不能以下列的值结尾: :values。","validation.doesnt_start_with":":attribute 不能以下列的值开头: :values。","validation.email":":attribute 不是一个合法的邮箱。","validation.ends_with":":attribute 必须以 :values 为结尾。","validation.enum":"已选的属性 :attribute 无效。","validation.exists":":attribute 不存在。","validation.file":":attribute 必须是文件。","validation.filled":":attribute 不能为空。","validation.gt.array":":attribute 必须多于 :value 个元素。","validation.gt.file":":attribute 必须大于 :value KB。","validation.gt.numeric":":attribute 必须大于 :value。","validation.gt.string":":attribute 必须多于 :value 个字符。","validation.gte.array":":attribute 必须多于或等于 :value 个元素。","validation.gte.file":":attribute 必须大于或等于 :value kB。","validation.gte.numeric":":attribute 必须大于或等于 :value。","validation.gte.string":":attribute 必须大于或等于 :value 个字符。","validation.image":":attribute 必须是图片。","validation.in":"已选的属性 :attribute 无效。","validation.in_array":":attribute 必须在 :other 中。","validation.integer":":attribute 必须是整数。","validation.ip":":attribute 必须是有效的 IP 地址。","validation.ipv4":":attribute 必须是有效的 IPv4 地址。","validation.ipv6":":attribute 必须是有效的 IPv6 地址。","validation.json":":attribute 必须是正确的 JSON 格式。","validation.lt.array":":attribute 必须少于 :value 个元素。","validation.lt.file":":attribute 必须小于 :value KB。","validation.lt.numeric":":attribute 必须小于 :value。","validation.lt.string":":attribute 必须少于 :value 个字符。","validation.lte.array":":attribute 必须少于或等于 :value 个元素。","validation.lte.file":":attribute 必须小于或等于 :value kB。","validation.lte.numeric":":attribute 必须小于或等于 :value。","validation.lte.string":":attribute 必须小于或等于 :value 个字符。","validation.mac_address":":attribute 必须是一个有效的 MAC 地址。","validation.max.array":":attribute 必须少于或等于 :value 个元素。","validation.max.file":":attribute 不能大于 :value kB。","validation.max.numeric":":attribute 不能大于 :max。","validation.max.string":":attribute 不能大于 :max 个字符。","validation.max_digits":":attribute 不能超过 :max 位数。","validation.mimes":":attribute 必须是一个 :values 类型的文件。","validation.mimetypes":":attribute 必须是一个 :values 类型的文件。","validation.min.array":":attribute 至少有 :min 个单元。","validation.min.file":":attribute 大小不能小于 :min KB。","validation.min.numeric":":attribute 必须大于等于 :min。","validation.min.string":":attribute 至少为 :min 个字符。","validation.min_digits":":attribute 至少要有 :min 位数。","validation.multiple_of":":attribute 必须是 :value 的倍数","validation.not_in":"已选的属性 :attribute 非法。","validation.not_regex":":attribute 的格式错误。","validation.numeric":":attribute 必须是一个数字。","validation.password.letters":":attribute 至少要包含一个字母。","validation.password.mixed":":attribute 至少要包含一个大写字母和一个小写字母。","validation.password.numbers":":attribute 至少要包含一个数字。","validation.password.symbols":":attribute 至少要包含一个符号。","validation.password.uncompromised":"在数据泄漏中检测到已输入的 :attribute。请选择一个不同的 :attribute 。","validation.present":":attribute 必须存在。","validation.prohibited":":attribute 字段是禁止的.","validation.prohibited_if":"当 :other 为 :value 时, :attribute 字段被禁止","validation.prohibited_unless":"除非 :other 为 :values,否则 :attribute 字段是禁止的","validation.prohibits":':attribute 字段禁止出现 ":other"',"validation.regex":":attribute 格式不正确。","validation.required":":attribute 不能为空。","validation.required_array_keys":":attribute 字段必须包含: :values","validation.required_if":"当 :other 为 :value 时 :attribute 不能为空。","validation.required_if_accepted":"当 :other 存在时,:attribute 不能为空。","validation.required_unless":"当 :other 不为 :values 时 :attribute 不能为空。","validation.required_with":"当 :values 存在时 :attribute 不能为空。","validation.required_with_all":"当 :values 存在时 :attribute 不能为空。","validation.required_without":"当 :values 不存在时 :attribute 不能为空。","validation.required_without_all":"当 :values 都不存在时 :attribute 不能为空。","validation.same":":attribute 和 :other 必须相同。","validation.size.array":":attribute 必须为 :size 个单元。","validation.size.file":":attribute 大小必须为 :size KB。","validation.size.numeric":":attribute 大小必须为 :size。","validation.size.string":":attribute 必须是 :size 个字符。","validation.starts_with":":attribute 必须以 :values 为开头。","validation.string":":attribute 必须是一个字符串。","validation.timezone":":attribute 必须是一个有效的时区。","validation.unique":":attribute 已经存在。","validation.uploaded":":attribute 上传失败。","validation.url":":attribute 必须是有效的URL。","validation.uuid":":attribute 必须是有效的 UUID。","validation.single":"当使用 :attribute 时,它必须是此请求主体中的唯一参数","validation.onlyCustomOtpWithUri":'"uri"参数仅应单独提供,或与"custom_otp"参数结合提供',"validation.custom.icon.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.qrcode.image":"支持的格式是 jpeg、png、bmp、gif、svg或web。","validation.custom.uri.regex":":attribute 不是有效的 otpauth uri","validation.custom.otp_type.in":":attribute 不受支持","validation.custom.email.exists":"未找到使用此电子邮件的账户。","validation.custom.email.ComplyWithEmailRestrictionPolicy":"此电子邮件地址不符合注册策略","validation.custom.email.IsValidEmailList":"所有电子邮件必须是有效的并用管道符隔开","validation.custom.secret.isBase32Encoded":":attribute 必须是 base32 编码的字符串","validation.custom.account.regex":":attribute 不能包含冒号。","validation.custom.service.regex":":attribute 不能包含冒号。","validation.custom.label.required":"uri 必须有一个标签。","validation.custom.ids.regex":"ID必须以逗号分隔,无需尾随逗号。"};export{t as default}; diff --git a/public/build/assets/webauthnService-d9fc6500.js b/public/build/assets/webauthnService-1f4ca5dc.js similarity index 98% rename from public/build/assets/webauthnService-d9fc6500.js rename to public/build/assets/webauthnService-1f4ca5dc.js index 26bcf287..1c898d00 100644 --- a/public/build/assets/webauthnService-d9fc6500.js +++ b/public/build/assets/webauthnService-1f4ca5dc.js @@ -1 +1 @@ -var h=Object.defineProperty;var w=(t,r,e)=>r in t?h(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e;var c=(t,r,e)=>(w(t,typeof r!="symbol"?r+"":r,e),e);import{a4 as f}from"./app-94c6def1.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class y{constructor(){c(this,"controller")}createNewAbortSignal(){if(this.controller){const e=new Error("Cancelling existing WebAuthn API call for new one");e.name="AbortError",this.controller.abort(e)}const r=new AbortController;return this.controller=r,r.signal}}const d=new y;function g(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function _(t,r){var n,a;const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else if(t.name==="ConstraintError"){if(((n=e.authenticatorSelection)==null?void 0:n.requireResidentKey)===!0)return{phrase:"errors.authenticator_missing_discoverable_credential_support",type:"is-danger"};if(((a=e.authenticatorSelection)==null?void 0:a.userVerification)==="required")return{phrase:"errors.authenticator_missing_user_verification_support",type:"is-danger"}}else{if(t.name==="InvalidStateError")return{phrase:"errors.security_device_already_registered",type:"is-danger"};if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="NotSupportedError")return e.pubKeyCredParams.filter(u=>u.type==="public-key").length===0?{phrase:"errors.no_entry_was_of_type_public_key",type:"is-danger"}:{phrase:"errors.no_authenticator_support_specified_algorithms",type:"is-danger"};if(t.name==="SecurityError"){const o=window.location.hostname;if(g(o)){if(e.rp.id!==o)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="TypeError"){if(e.user.id.byteLength<1||e.user.id.byteLength>64)return{phrase:"errors.user_id_not_between_1_64",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}function m(t,r){const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else{if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="SecurityError"){const n=window.location.hostname;if(g(n)){if(e.rpId!==n)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}const p=f("web");class s{async register(){let r={webauthn:!0,type:"is-danger",message:""};if(!window.isSecureContext)return r.message="errors.https_required",Promise.reject(r);if(!s.supportsWebAuthn)return r.message="errors.browser_does_not_support_webauthn",Promise.reject(r);const e=await p.post("/webauthn/register/options").then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();let o;try{o=await navigator.credentials.create(a)}catch(i){const l=_(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})}const u=s.parseOutgoingCredentials(o);return p.post("/webauthn/register",u,{returnError:!0})}async authenticate(r){if(!window.isSecureContext)return err.message="errors.https_required",Promise.reject(err);if(!s.supportsWebAuthn)return err.message="errors.browser_does_not_support_webauthn",Promise.reject(err);const e=await p.post("/webauthn/login/options",{email:r}).then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();const o=await navigator.credentials.get(a).catch(i=>{const l=m(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})});let u=s.parseOutgoingCredentials(o);return u.email=r,p.post("/webauthn/login",u,{returnError:!0})}static parseIncomingServerOptions(r){return r.challenge=s.uint8Array(r.challenge),"user"in r&&(r.user={...r.user,id:s.uint8Array(r.user.id)}),["excludeCredentials","allowCredentials"].filter(e=>e in r).forEach(e=>{r[e]=r[e].map(n=>({...n,id:s.uint8Array(n.id)}))}),r}static parseOutgoingCredentials(r){let e={id:r.id,type:r.type,rawId:s.arrayToBase64String(r.rawId),response:{}};return["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(n=>n in r.response).forEach(n=>e.response[n]=s.arrayToBase64String(r.response[n])),e}static uint8Array(r,e=!1){return Uint8Array.from(e?atob(r):s.base64UrlDecode(r),n=>n.charCodeAt(0))}static arrayToBase64String(r){return btoa(String.fromCharCode(...new Uint8Array(r)))}static base64UrlDecode(r){r=r.replace(/-/g,"+").replace(/_/g,"/");const e=r.length%4;if(e){if(e===1)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");r+=new Array(5-e).join("=")}return atob(r)}static supportsWebAuthn(){return(window==null?void 0:window.PublicKeyCredential)!==void 0&&typeof window.PublicKeyCredential=="function"}}const C=new s;export{C as w}; +var h=Object.defineProperty;var w=(t,r,e)=>r in t?h(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e;var c=(t,r,e)=>(w(t,typeof r!="symbol"?r+"":r,e),e);import{a4 as f}from"./app-60af1d1a.js";/*! 2FAuth version 5.1.0 - Copyright (c) 2023 Bubka - https://github.com/Bubka/2FAuth */class y{constructor(){c(this,"controller")}createNewAbortSignal(){if(this.controller){const e=new Error("Cancelling existing WebAuthn API call for new one");e.name="AbortError",this.controller.abort(e)}const r=new AbortController;return this.controller=r,r.signal}}const d=new y;function g(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function _(t,r){var n,a;const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else if(t.name==="ConstraintError"){if(((n=e.authenticatorSelection)==null?void 0:n.requireResidentKey)===!0)return{phrase:"errors.authenticator_missing_discoverable_credential_support",type:"is-danger"};if(((a=e.authenticatorSelection)==null?void 0:a.userVerification)==="required")return{phrase:"errors.authenticator_missing_user_verification_support",type:"is-danger"}}else{if(t.name==="InvalidStateError")return{phrase:"errors.security_device_already_registered",type:"is-danger"};if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="NotSupportedError")return e.pubKeyCredParams.filter(u=>u.type==="public-key").length===0?{phrase:"errors.no_entry_was_of_type_public_key",type:"is-danger"}:{phrase:"errors.no_authenticator_support_specified_algorithms",type:"is-danger"};if(t.name==="SecurityError"){const o=window.location.hostname;if(g(o)){if(e.rp.id!==o)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="TypeError"){if(e.user.id.byteLength<1||e.user.id.byteLength>64)return{phrase:"errors.user_id_not_between_1_64",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}function m(t,r){const{publicKey:e}=r;if(t.name==="AbortError"){if(r.signal instanceof AbortSignal)return{phrase:"errors.aborted_by_user",type:"is-warning"}}else{if(t.name==="NotAllowedError")return{phrase:"errors.not_allowed_operation",type:"is-danger"};if(t.name==="SecurityError"){const n=window.location.hostname;if(g(n)){if(e.rpId!==n)return{phrase:"errors.security_error_check_rpid",type:"is-danger"}}else return{phrase:"errors.2fauth_has_not_a_valid_domain",type:"is-danger"}}else if(t.name==="UnknownError")return{phrase:"errors.unknown_error",type:"is-danger"}}return{phrase:"errors.unknown_error",type:"is-danger"}}const p=f("web");class s{async register(){let r={webauthn:!0,type:"is-danger",message:""};if(!window.isSecureContext)return r.message="errors.https_required",Promise.reject(r);if(!s.supportsWebAuthn)return r.message="errors.browser_does_not_support_webauthn",Promise.reject(r);const e=await p.post("/webauthn/register/options").then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();let o;try{o=await navigator.credentials.create(a)}catch(i){const l=_(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})}const u=s.parseOutgoingCredentials(o);return p.post("/webauthn/register",u,{returnError:!0})}async authenticate(r){if(!window.isSecureContext)return err.message="errors.https_required",Promise.reject(err);if(!s.supportsWebAuthn)return err.message="errors.browser_does_not_support_webauthn",Promise.reject(err);const e=await p.post("/webauthn/login/options",{email:r}).then(i=>i.data);let a={publicKey:s.parseIncomingServerOptions(e)};a.signal=d.createNewAbortSignal();const o=await navigator.credentials.get(a).catch(i=>{const l=m(i,a);return Promise.reject({webauthn:!0,type:l.type,message:l.phrase})});let u=s.parseOutgoingCredentials(o);return u.email=r,p.post("/webauthn/login",u,{returnError:!0})}static parseIncomingServerOptions(r){return r.challenge=s.uint8Array(r.challenge),"user"in r&&(r.user={...r.user,id:s.uint8Array(r.user.id)}),["excludeCredentials","allowCredentials"].filter(e=>e in r).forEach(e=>{r[e]=r[e].map(n=>({...n,id:s.uint8Array(n.id)}))}),r}static parseOutgoingCredentials(r){let e={id:r.id,type:r.type,rawId:s.arrayToBase64String(r.rawId),response:{}};return["clientDataJSON","attestationObject","authenticatorData","signature","userHandle"].filter(n=>n in r.response).forEach(n=>e.response[n]=s.arrayToBase64String(r.response[n])),e}static uint8Array(r,e=!1){return Uint8Array.from(e?atob(r):s.base64UrlDecode(r),n=>n.charCodeAt(0))}static arrayToBase64String(r){return btoa(String.fromCharCode(...new Uint8Array(r)))}static base64UrlDecode(r){r=r.replace(/-/g,"+").replace(/_/g,"/");const e=r.length%4;if(e){if(e===1)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");r+=new Array(5-e).join("=")}return atob(r)}static supportsWebAuthn(){return(window==null?void 0:window.PublicKeyCredential)!==void 0&&typeof window.PublicKeyCredential=="function"}}const C=new s;export{C as w}; diff --git a/public/build/manifest.json b/public/build/manifest.json index 27782bef..8337eff8 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -3,66 +3,66 @@ "file": "assets/Spinner-2c227a70.css", "src": "Spinner.css" }, - "_AdminTabs-169daa20.js": { - "file": "assets/AdminTabs-169daa20.js", + "_AdminTabs-94ad3971.js": { + "file": "assets/AdminTabs-94ad3971.js", "imports": [ "resources/js/app.js" ] }, - "_CopyButton-f30d9b07.js": { - "file": "assets/CopyButton-f30d9b07.js", + "_CopyButton-643e0686.js": { + "file": "assets/CopyButton-643e0686.js", "imports": [ "resources/js/app.js" ] }, - "_Form-88ba26a4.js": { - "file": "assets/Form-88ba26a4.js", + "_Form-0a788c90.js": { + "file": "assets/Form-0a788c90.js", "imports": [ "resources/js/app.js" ] }, - "_OtpDisplay-4c8a5daa.js": { - "file": "assets/OtpDisplay-4c8a5daa.js", + "_OtpDisplay-f582bb88.js": { + "file": "assets/OtpDisplay-f582bb88.js", "imports": [ "resources/js/app.js", - "_Spinner-f03b508f.js" + "_Spinner-bfa27d3a.js" ] }, - "_QrContentDisplay-1899c813.js": { - "file": "assets/QrContentDisplay-1899c813.js", + "_QrContentDisplay-ea3c63ab.js": { + "file": "assets/QrContentDisplay-ea3c63ab.js", "imports": [ "resources/js/app.js" ] }, - "_SearchBox-23302ff7.js": { - "file": "assets/SearchBox-23302ff7.js", + "_SearchBox-62743462.js": { + "file": "assets/SearchBox-62743462.js", "imports": [ "resources/js/app.js" ] }, - "_SettingTabs-beebcb43.js": { - "file": "assets/SettingTabs-beebcb43.js", + "_SettingTabs-0b59e581.js": { + "file": "assets/SettingTabs-0b59e581.js", "imports": [ "resources/js/app.js" ] }, - "_Spinner-f03b508f.js": { + "_Spinner-bfa27d3a.js": { "css": [ "assets/Spinner-2c227a70.css" ], - "file": "assets/Spinner-f03b508f.js", + "file": "assets/Spinner-bfa27d3a.js", "imports": [ "resources/js/app.js" ] }, - "_bus-d94d2521.js": { - "file": "assets/bus-d94d2521.js", + "_bus-ab2b6d74.js": { + "file": "assets/bus-ab2b6d74.js", "imports": [ "resources/js/app.js" ] }, - "_webauthnService-d9fc6500.js": { - "file": "assets/webauthnService-d9fc6500.js", + "_webauthnService-1f4ca5dc.js": { + "file": "assets/webauthnService-1f4ca5dc.js", "imports": [ "resources/js/app.js" ] @@ -119,12 +119,12 @@ "resources/lang/php_si.json", "resources/lang/php_zh.json" ], - "file": "assets/app-94c6def1.js", + "file": "assets/app-60af1d1a.js", "isEntry": true, "src": "resources/js/app.js" }, "resources/js/views/About.vue": { - "file": "assets/About-2c92bb64.js", + "file": "assets/About-21528213.js", "imports": [ "resources/js/app.js" ], @@ -132,7 +132,7 @@ "src": "resources/js/views/About.vue" }, "resources/js/views/Error.vue": { - "file": "assets/Error-38fc2eeb.js", + "file": "assets/Error-0e5b1508.js", "imports": [ "resources/js/app.js" ], @@ -140,224 +140,224 @@ "src": "resources/js/views/Error.vue" }, "resources/js/views/Start.vue": { - "file": "assets/Start-4db59337.js", + "file": "assets/Start-616d9df7.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_bus-d94d2521.js" + "_Form-0a788c90.js", + "_bus-ab2b6d74.js" ], "isDynamicEntry": true, "src": "resources/js/views/Start.vue" }, "resources/js/views/admin/AppSetup.vue": { - "file": "assets/AppSetup-989082f4.js", + "file": "assets/AppSetup-45bab529.js", "imports": [ - "_AdminTabs-169daa20.js", + "_AdminTabs-94ad3971.js", "resources/js/app.js", - "_CopyButton-f30d9b07.js" + "_CopyButton-643e0686.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/AppSetup.vue" }, "resources/js/views/admin/Users.vue": { - "file": "assets/Users-dd1a2a6d.js", + "file": "assets/Users-e4ea6e38.js", "imports": [ - "_AdminTabs-169daa20.js", + "_AdminTabs-94ad3971.js", "resources/js/app.js", - "_Spinner-f03b508f.js", - "_SearchBox-23302ff7.js" + "_Spinner-bfa27d3a.js", + "_SearchBox-62743462.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/Users.vue" }, "resources/js/views/admin/users/Create.vue": { - "file": "assets/Create-1758d7a4.js", + "file": "assets/Create-88a5e9ed.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js" + "_Form-0a788c90.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/users/Create.vue" }, "resources/js/views/admin/users/Manage.vue": { - "file": "assets/Manage-0bf446dd.js", + "file": "assets/Manage-002185c7.js", "imports": [ - "_CopyButton-f30d9b07.js", + "_CopyButton-643e0686.js", "resources/js/app.js" ], "isDynamicEntry": true, "src": "resources/js/views/admin/users/Manage.vue" }, "resources/js/views/auth/Login.vue": { - "file": "assets/Login-09d93a22.js", + "file": "assets/Login-0aa69f71.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_webauthnService-d9fc6500.js" + "_Form-0a788c90.js", + "_webauthnService-1f4ca5dc.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/Login.vue" }, "resources/js/views/auth/Register.vue": { - "file": "assets/Register-5477e1ea.js", + "file": "assets/Register-9acf7d81.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_webauthnService-d9fc6500.js" + "_Form-0a788c90.js", + "_webauthnService-1f4ca5dc.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/Register.vue" }, "resources/js/views/auth/RequestReset.vue": { - "file": "assets/RequestReset-ae792188.js", + "file": "assets/RequestReset-9775b58f.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js" + "_Form-0a788c90.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/RequestReset.vue" }, "resources/js/views/auth/password/Reset.vue": { - "file": "assets/Reset-d53fbaa6.js", + "file": "assets/Reset-4749a3f6.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js" + "_Form-0a788c90.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/password/Reset.vue" }, "resources/js/views/auth/webauthn/Recover.vue": { - "file": "assets/Recover-358a3490.js", + "file": "assets/Recover-d16991a5.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js" + "_Form-0a788c90.js" ], "isDynamicEntry": true, "src": "resources/js/views/auth/webauthn/Recover.vue" }, "resources/js/views/groups/CreateUpdate.vue": { - "file": "assets/CreateUpdate-6d65a394.js", + "file": "assets/CreateUpdate-db65145e.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_bus-d94d2521.js" + "_Form-0a788c90.js", + "_bus-ab2b6d74.js" ], "isDynamicEntry": true, "src": "resources/js/views/groups/CreateUpdate.vue" }, "resources/js/views/groups/Groups.vue": { - "file": "assets/Groups-9709021e.js", + "file": "assets/Groups-e3693e0e.js", "imports": [ "resources/js/app.js", - "_bus-d94d2521.js" + "_bus-ab2b6d74.js" ], "isDynamicEntry": true, "src": "resources/js/views/groups/Groups.vue" }, "resources/js/views/settings/Account.vue": { - "file": "assets/Account-b029928c.js", + "file": "assets/Account-a7d249ba.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_SettingTabs-beebcb43.js" + "_Form-0a788c90.js", + "_SettingTabs-0b59e581.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Account.vue" }, "resources/js/views/settings/Credentials/Edit.vue": { - "file": "assets/Edit-c8ca049e.js", + "file": "assets/Edit-e1414c8a.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js" + "_Form-0a788c90.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Credentials/Edit.vue" }, "resources/js/views/settings/OAuth.vue": { - "file": "assets/OAuth-aa3383bc.js", + "file": "assets/OAuth-23b533cf.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_SettingTabs-beebcb43.js", - "_Spinner-f03b508f.js" + "_Form-0a788c90.js", + "_SettingTabs-0b59e581.js", + "_Spinner-bfa27d3a.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/OAuth.vue" }, "resources/js/views/settings/Options.vue": { - "file": "assets/Options-e3b3035d.js", + "file": "assets/Options-599918f8.js", "imports": [ - "_SettingTabs-beebcb43.js", + "_SettingTabs-0b59e581.js", "resources/js/app.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/Options.vue" }, "resources/js/views/settings/WebAuthn.vue": { - "file": "assets/WebAuthn-214c6fd8.js", + "file": "assets/WebAuthn-3d2e0d09.js", "imports": [ "resources/js/app.js", - "_SettingTabs-beebcb43.js", - "_webauthnService-d9fc6500.js", - "_Spinner-f03b508f.js" + "_SettingTabs-0b59e581.js", + "_webauthnService-1f4ca5dc.js", + "_Spinner-bfa27d3a.js" ], "isDynamicEntry": true, "src": "resources/js/views/settings/WebAuthn.vue" }, "resources/js/views/twofaccounts/Accounts.vue": { - "file": "assets/Accounts-bba10aec.js", + "file": "assets/Accounts-7bc9693f.js", "imports": [ "resources/js/app.js", - "_OtpDisplay-4c8a5daa.js", - "_SearchBox-23302ff7.js", - "_bus-d94d2521.js", - "_Spinner-f03b508f.js" + "_OtpDisplay-f582bb88.js", + "_SearchBox-62743462.js", + "_bus-ab2b6d74.js", + "_Spinner-bfa27d3a.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Accounts.vue" }, "resources/js/views/twofaccounts/Capture.vue": { - "file": "assets/Capture-01720b57.js", + "file": "assets/Capture-1f19a38b.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_Spinner-f03b508f.js", - "_QrContentDisplay-1899c813.js", - "_bus-d94d2521.js" + "_Form-0a788c90.js", + "_Spinner-bfa27d3a.js", + "_QrContentDisplay-ea3c63ab.js", + "_bus-ab2b6d74.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Capture.vue" }, "resources/js/views/twofaccounts/CreateUpdate.vue": { - "file": "assets/CreateUpdate-818ecca1.js", + "file": "assets/CreateUpdate-016104d4.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_OtpDisplay-4c8a5daa.js", - "_QrContentDisplay-1899c813.js", - "_bus-d94d2521.js", - "_Spinner-f03b508f.js" + "_Form-0a788c90.js", + "_OtpDisplay-f582bb88.js", + "_QrContentDisplay-ea3c63ab.js", + "_bus-ab2b6d74.js", + "_Spinner-bfa27d3a.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/CreateUpdate.vue" }, "resources/js/views/twofaccounts/Import.vue": { - "file": "assets/Import-372ba8b3.js", + "file": "assets/Import-058e3143.js", "imports": [ "resources/js/app.js", - "_Form-88ba26a4.js", - "_OtpDisplay-4c8a5daa.js", - "_Spinner-f03b508f.js", - "_bus-d94d2521.js" + "_Form-0a788c90.js", + "_OtpDisplay-f582bb88.js", + "_Spinner-bfa27d3a.js", + "_bus-ab2b6d74.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/Import.vue" }, "resources/js/views/twofaccounts/QRcode.vue": { - "file": "assets/QRcode-40be5488.js", + "file": "assets/QRcode-62f040ad.js", "imports": [ "resources/js/app.js", - "_Spinner-f03b508f.js" + "_Spinner-bfa27d3a.js" ], "isDynamicEntry": true, "src": "resources/js/views/twofaccounts/QRcode.vue" @@ -388,7 +388,7 @@ "src": "resources/lang/php_fr.json" }, "resources/lang/php_hi.json": { - "file": "assets/php_hi-0477d2c4.js", + "file": "assets/php_hi-631b366e.js", "isDynamicEntry": true, "src": "resources/lang/php_hi.json" }, @@ -413,7 +413,7 @@ "src": "resources/lang/php_ro.json" }, "resources/lang/php_ru.json": { - "file": "assets/php_ru-d1282df9.js", + "file": "assets/php_ru-e41b0033.js", "isDynamicEntry": true, "src": "resources/lang/php_ru.json" }, @@ -423,7 +423,7 @@ "src": "resources/lang/php_si.json" }, "resources/lang/php_zh.json": { - "file": "assets/php_zh-0c409c6d.js", + "file": "assets/php_zh-7cc6d490.js", "isDynamicEntry": true, "src": "resources/lang/php_zh.json" }