",document.body.append(n),document.body.style.overflow="hidden";let l=0;const o=()=>{document.body.style.overflow="auto",clearInterval(l),removeEventListener("message",c),n.remove()},c=r=>{typeof r.data=="object"&&(r.data?.type==="captcha:error"&&(o(),a(r.data.data)),r.data?.type==="captcha:redirect"&&location.assign(r.data.data),r.data?.type==="captcha:success"&&(o(),t(r.data.data)))};n.addEventListener("click",()=>{o(),a(new Error("Капча не пройдена"))});const i=n.querySelector("iframe"),d=i.contentWindow?.document;d.write(s.data.html);const y=d.createElement("style");y.innerHTML=s.data.style,d.head.append(y);const g=d.createElement("script");g.innerHTML=s.data.script,d.body.append(g),l=setInterval(()=>{i.style.height=d.body.scrollHeight+"px"},100),addEventListener("message",c)}catch(e){a(e)}}),E=t=>(a,e,s)=>{const{element:n,getValue:l,setValue:o}=t(a,s);let c=null;const i=document.createElement("div");return i.classList.add("input__error"),i.style.display="none",n.append(i),{element:n,validators:e,getValue:l,setValue:o,hasError:()=>c!=null,setError:d=>{n.style.display==="none"||!d?(c=null,i.innerHTML="",n.querySelector("input")?.classList.remove("invalid"),i.style.display="none"):(c=d,i.innerHTML=d??"",n.querySelector("input")?.classList.add("invalid"),i.style.display="flex")}}},H=E((t,a)=>{const e=t;return e.addEventListener("input",()=>a(e.value)),{element:e.parentElement,getValue:()=>e.value,setValue:s=>e.value=s}}),A=E((t,a)=>{const e=t;e.addEventListener("input",()=>a(e.value));const s=document.createElementNS("http://www.w3.org/2000/svg","svg");s.innerHTML='';const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.innerHTML='',n.style.display="none";const l=document.createElement("div");return l.classList.add("input__visibility"),l.append(s),l.append(n),l.addEventListener("click",()=>{e.type==="password"?(s.style.display="none",n.style.display="flex",e.type="text"):(s.style.display="flex",n.style.display="none",e.type="password")}),e.after(l),{element:e.parentElement,getValue:()=>e.value,setValue:o=>e.value=o}}),j=E((t,a)=>{let e="";return t.querySelectorAll("input").forEach(s=>{s.addEventListener("change",()=>{e=s.value,a(s.value)}),s.checked&&(e=s.value)}),{element:t,getValue:()=>e,setValue:s=>e=s}}),F=E(t=>{const a=t,e=document.createElement("div");return e.classList.add("input__notify"),e.innerHTML="Скопировано",t.parentElement?.append(e),a.addEventListener("click",s=>{s.stopPropagation(),z(a.value),e.style.opacity="1",e.style.top="-25px",setTimeout(()=>e.removeAttribute("style"),1500)}),{element:a.parentElement,getValue:()=>a.value,setValue:s=>a.value=s}}),z=t=>{if(navigator?.clipboard?.writeText)return navigator.clipboard.writeText(t);if(navigator?.clipboard?.write&&ClipboardItem)return navigator.clipboard.write([new ClipboardItem({"text/plain":new Blob([t],{type:"text/plain"})})]);{const a=document.createElement("textarea");a.value=t,Object.assign(a.style,{position:"absolute",top:"-9999px",left:"-9999px"}),document.body.appendChild(a),a.select(),a.setSelectionRange(0,t.length),document.execCommand("copy"),document.body.removeChild(a)}},O={password:A,radio:j,text:H,textarea:F},x=(t,a,e)=>{let s=!1;const n=document.querySelector("#"+t),l=n.querySelector(".form__error"),o=n.querySelector("button[type=submit]");o.innerHTML=''+o.innerHTML;const c=Object.entries(a).reduce((r,[u,v])=>{const[S,V,T]=v,f=O[S](n.querySelector("#"+u),V.map(m=>m[0]==="required"?()=>f.getValue()?null:m[1]:m[0]==="minLength"?()=>f.getValue().lengthf.getValue()!==c[m[1]].getValue()?m[2]:null),()=>{f.setError(null),s&&g(),T?.(c)});return r[u]=f,r},{}),i=Object.values(c),d=()=>{s=!1,n.classList.remove("disabled"),o.disabled=!1,l.style.display="none",i.forEach(r=>r.setValue(""))},y=r=>{l.innerHTML=r,l.style.display="flex"},g=()=>i.map(r=>{for(const u of r.validators)if(r.setError(u()),r.hasError())return!1;return!0}).every(r=>r);return n.addEventListener("submit",async r=>{if(r.preventDefault(),s=!0,!!g()){n.classList.add("disabled"),o.disabled=!0,l.style.display="none";try{await e(c)}catch(u){if(n.classList.remove("disabled"),o.disabled=!1,u.data?.validationErrors)for(const v of u.data.validationErrors)c[v.field.replace("[","").replace("]","")].setError(v.message);else y(u.message||"Произошла ошибка при выполнении запроса")}}}),{...c,element:n,reset:d,setError:y}};M();const p=x("login",{username:["text",[["required","Введите логин"]]],password:["password",[["required","Введите пароль"]]]},async t=>b(q({username:t.username.getValue(),password:t.password.getValue(),captcha_token:await I()}))),h=x("pgp_2fa",{pgp_secret:["textarea",[]],pgp_code:["text",[["required","Введите код"]]]},t=>b(_({data:{authCode:t.pgp_code.getValue()}}))),w=x("google_2fa",{google_code:["text",[["required","Введите код"]]]},t=>b(_({data:{authCode:t.google_code.getValue()}}))),b=async t=>{try{const a=await t;C(a.token),location.assign("/")}catch(a){if(a.data?.code===401)throw new Error(a.data?.message);if(a.status===423)localStorage.setItem("username",p.username.getValue()),location.assign("/oops.html");else if(a.data?.two_factor_next_challenge==="pgp")h.pgp_secret.setValue(a.data?.meta?.secret??""),h.pgp_code.setValue(""),p.element.style.display="none",h.element.style.display="flex";else if(a.data?.two_factor_next_challenge==="google")w.google_code.setValue(""),p.element.style.display="none",w.element.style.display="flex";else if(a.data?.error==="2fa_failed"){const e=p.username.getValue();p.reset(),p.username.setValue(e),p.setError("Проверочный код указан неверно"),h.reset(),w.reset(),p.element.style.display="flex",h.element.style.display="none",w.element.style.display="none"}else throw a}};