1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[743],{11:(e,t,n)=>{n.d(t,{TelegramProvider:()=>k,j:()=>v});var r=n(95155),i=n(98500),a=n.n(i),o=n(12115),s=n(73321),l=n(69842),c=n(51276),d=n(4474),u=n(71441),p=n(75745),h=n(21548);function f({ticket:e,initData:t,onContinue:n}){let{t:i}=(0,l.c3)("accountLinking"),[a,s]=(0,o.useState)(null),[c,u]=(0,o.useState)("loading"),p=(0,o.useRef)(!1);async function m(){if(!p.current&&"preview"===c){p.current=!0,u("saving");try{await (0,h.e)(e,{init_data:t}),u("linked")}catch(e){u(e instanceof h.h5&&409===e.status?"conflict":"error")}finally{p.current=!1}}}return(0,o.useEffect)(()=>{let t=!1;return u("loading"),(0,h.DN)(e).then(e=>{if(!t){if("telegram"!==e.provider)return void u("error");s(e.account.name),u("preview")}}).catch(()=>{t||u("error")}),()=>{t=!0}},[e]),(0,r.jsx)("main",{className:"flex min-h-svh items-center justify-center bg-background px-6 py-12 text-foreground",children:(0,r.jsxs)("section",{className:"w-full max-w-sm space-y-5 text-center",children:[(0,r.jsx)("h1",{className:"text-2xl font-semibold",children:i("telegramTitle")}),"loading"===c||"saving"===c?(0,r.jsx)("p",{role:"status",children:i("loading")}):null,"preview"===c?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"break-words",children:i("telegramDescription",{name:a||i("unnamed")})}),(0,r.jsxs)("div",{className:"flex justify-center gap-3",children:[(0,r.jsx)(d.$,{variant:"outline",onClick:()=>u("cancelled"),children:i("cancel")}),(0,r.jsx)(d.$,{onClick:()=>void m(),children:i("confirm")})]})]}):null,"linked"===c?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{role:"status",children:i("done")}),(0,r.jsx)(d.$,{onClick:n,children:i("continue")})]}):null,"error"===c||"conflict"===c?(0,r.jsx)("p",{role:"alert",children:i("conflict"===c?"conflict":"invalidTicket")}):null,"cancelled"===c?(0,r.jsx)("p",{role:"status",children:i("cancelled")}):null]})})}var m=n(30370),g=n(95083),w=n(41463);let y=(0,o.createContext)({active:!1,destination:"/app/home"}),v=()=>(0,o.useContext)(y);function k({children:e}){let t=(0,s.usePathname)(),n=(0,s.useRouter)(),{t:i}=(0,l.c3)("telegram"),{setTheme:h}=(0,c.D)(),[v,b]=(0,o.useState)("checking"),[x,j]=(0,o.useState)(null),[_,S]=(0,o.useState)(0),[E,A]=(0,o.useState)("/app/telegram"),C=(0,o.useRef)(!1),[T,D]=(0,o.useState)(null),N=(0,o.useRef)(null),$="/app/telegram"===t;if((0,o.useEffect)(()=>{if(C.current)return;let e=!1,r=(0,m.b_)();return $||r||(0,g.zh)(window.location.hash)||(0,g.uv)((0,g.nB)())?(b("checking"),(async()=>{let i=await (0,g.Jh)(),a=function(e){let t=new URLSearchParams(e).getAll("start_param");if(!t.some(e=>e.startsWith("link_")))return{kind:"none"};if(1!==t.length)return{kind:"invalid"};let n=t[0].slice(5);return/^[A-Za-z0-9_-]{43}$/.test(n)?{kind:"link",ticket:n}:{kind:"invalid"}}(i.initData);if("invalid"===a.kind)throw Error("invalid_telegram_link");if("link"===a.kind&&N.current!==a.ticket){e||(i.ready(),i.expand(),D({ticket:a.ticket,initData:i.initData}));return}let o=(0,g.uv)(i);if(!o&&!r){e||b("outside");return}i.ready();let s=!o&&r?r.destination:$?(0,m.yt)(new URLSearchParams(window.location.search).get("tool")):"/app/onboarding"===window.location.pathname?"/app/telegram":window.location.pathname,l=o?await (0,p.En)(i.initData):await (0,p.qQ)();if(!o&&l.user.id!==r?.userId)throw Error("telegram_session_changed");!e&&(C.current=!0,(0,m.uL)({userId:l.user.id,destination:s}),A(s),j(i),i.expand(),l.user.onboarding&&"completed"!==l.user.onboarding.status?(b("/app/onboarding"===t?"ready":"redirecting"),n.replace("/app/onboarding")):(b("ready"),$&&"/app/telegram"!==s&&n.replace(s)))})().catch(()=>{e||b("error")}),()=>{e=!0}):void b("browser")},[$,_,t,n]),(0,o.useEffect)(()=>{"redirecting"===v&&"/app/onboarding"===t&&b("ready")},[v,t]),(0,o.useEffect)(()=>{if(!x)return;let e=()=>h(x.colorScheme);return e(),x.onEvent("themeChanged",e),()=>x.offEvent("themeChanged",e)},[x,h]),(0,o.useEffect)(()=>{if(!x)return;let e=()=>n.replace("/app/telegram");return"/app/telegram"===t||"/app/onboarding"===t?x.BackButton.hide():x.BackButton.show(),x.BackButton.onClick(e),()=>{x.BackButton.offClick(e),x.BackButton.hide()}},[x,t,n]),(0,o.useEffect)(()=>
1{if(!x)return;let e=document.documentElement,t=()=>{for(let t of["top","right","bottom","left"]){let n=Math.max(0,x.safeAreaInset?.[t]??0)+Math.max(0,x.contentSafeAreaInset?.[t]??0);e.style.setProperty(`--telegram-inset-${t}`,`${n}px`)}e.dataset.telegram="true"};return t(),x.onEvent("safeAreaChanged",t),x.onEvent("contentSafeAreaChanged",t),()=>{for(let n of(x.offEvent("safeAreaChanged",t),x.offEvent("contentSafeAreaChanged",t),delete e.dataset.telegram,["top","right","bottom","left"]))e.style.removeProperty(`--telegram-inset-${n}`)}},[x]),T)return(0,r.jsx)(f,{ticket:T.ticket,initData:T.initData,onContinue:()=>{N.current=T.ticket,D(null),S(e=>e+1)}},T.ticket);if("browser"===v||"ready"===v)return(0,r.jsx)(y.Provider,{value:{active:"ready"===v,destination:"ready"===v?E:"/app/home"},children:(0,r.jsx)("div",{className:"ready"===v?"telegram-shell":void 0,children:e})});if("checking"===v||"redirecting"===v)return(0,r.jsx)("main",{className:"flex min-h-svh items-center justify-center bg-background text-foreground",children:(0,r.jsx)(u.y,{className:"size-5 text-muted-foreground"})});let P=(0,m.Gv)(w.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME);return(0,r.jsx)("main",{className:"flex min-h-svh items-center justify-center bg-background px-6 py-12 text-foreground",children:(0,r.jsxs)("div",{className:"w-full max-w-sm space-y-5 text-center",children:[(0,r.jsx)("h1",{className:"text-2xl font-semibold",children:i("title")}),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{role:"error"===v?"alert":void 0,children:i("error"===v?"error":"outside")}),"error"===v&&(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:i("errorDescription")}),(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4",children:["error"===v&&(0,r.jsx)(d.$,{onClick:()=>S(e=>e+1),children:i("retry")}),P&&(0,r.jsx)("a",{className:"font-medium underline underline-offset-4",href:P,children:i("openBot")}),(0,r.jsx)(a(),{className:"text-sm underline underline-offset-4",href:"/app/home",onClick:e=>{e.preventDefault(),(0,m.uL)(null),window.location.assign("/app/home")},children:i("browser")})]})]})]})})}},3678:(e,t,n)=>{n.d(t,{C1:()=>o,aj:()=>u,yB:()=>d});var r=n(45322),i=n(18219),a=n(4922);let o=`${r.H$.replace(/\/$/,"")}/api`,s=[408,413,429,500,502,503,504],l={limit:2,statusCodes:[401,...s],methods:["get","post","put","patch","head","delete","options","trace"],afterStatusCodes:[413,429,503]},c={"Content-Type":"application/json"},d=(0,i.sf)({baseUrl:o,credentials:"include",cache:"no-store",retry:l,getAccessToken:a.n.getAccessToken,tokenScheme:"Bearer",headers:c}),u=(0,i.sf)({baseUrl:o,credentials:"include",cache:"no-store",retry:{limit:2,statusCodes:s,methods:["get","head","options","trace"],afterStatusCodes:[413,429,503]},headers:c})},21548:(e,t,n)=>{n.d(t,{A$:()=>s,DN:()=>u,Nn:()=>c,e:()=>p,h5:()=>a});var r=n(18219),i=n(45322);class a extends Error{constructor(e,t){super(t),this.status=e,this.code=t}}async function o(e,t){let n=await (0,r.Gh)(e,void 0===t?void 0:{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),i=await n.json().catch(()=>null);if(!n.ok)throw new a(n.status,"string"==typeof i?.error?.code?i.error.code:"request_failed");return i}async function s(){var e=await o("/api/v1/account/identities");if(!e||"object"!=typeof e||!("identities"in e)||!Array.isArray(e.identities))throw new a(502,"invalid_response");return e.identities.map(e=>{if(!e||"object"!=typeof e||!("provider"in e)||!["google","telegram"].includes(String(e.provider))||!("email"in e)||null!==e.email&&"string"!=typeof e.email||!("linked_at"in e)||"string"!=typeof e.linked_at)throw new a(502,"invalid_response");return{provider:e.provider,email:e.email,linked_at:e.linked_at}})}let l="/api/v1/account/identity-link-tickets";async function c(e){let t=await o(l,{provider:e});if(t?.provider!==e||"string"!=typeof t.ticket||!/^[A-Za-z0-9_-]{43}$/.test(t.ticket)||"string"!=typeof t.expires_at)throw new a(502,"invalid_response");return{ticket:t.ticket,provider:e,expires_at:t.expires_at}}async function d(e,t){let n=await fetch(`${i.H$.replace(/\/$/,"")}${l}/${e}`,{method:"POST",credentials:"omit",cache:"no-store",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await n.json().catch(()=>null);if(!n.ok)throw new a(n.status,"string"==typeof r?.error?.code?r.error.code:"request_failed");return r}async function u(e){let t=await d("preview",{ticket:e});if(!["google","telegram"].includes(t?.provider)||!t.account||null!==t.account.name&&"string"!=typeof t.account.name||"string"!=typeof t.nonce||"string"!=typeof t.expires_at)throw new a(502,"invali
1d_response");return{provider:t.provider,account:{name:t.account.name},nonce:t.nonce,expires_at:t.expires_at}}async function p(e,t){let n=await d("complete",{ticket:e,...t});if(n?.linked!==!0)throw new a(502,"invalid_response")}},30370:(e,t,n)=>{n.d(t,{Aw:()=>r,Gv:()=>a,b_:()=>l,uL:()=>c,yt:()=>i});let r=[{id:"aisha",path:"/app/home",title:"aisha",description:"aishaDescription"},{id:"tts",path:"/app/text-to-speech",title:"tts",description:"ttsDescription"},{id:"stt",path:"/app/speech-to-text",title:"stt",description:"sttDescription"},{id:"isolator",path:"/app/voice-isolator",title:"isolator",description:"isolatorDescription"},{id:"meeting",path:"/app/meeting-ai",title:"meeting",description:"meetingDescription"},{id:"dubbing",path:"/app/dubbing",title:"dubbing",description:"dubbingDescription"},{id:"subtitles",path:"/app/subtitles",title:"subtitles",description:"subtitlesDescription"},{id:"audiobooks",path:"/app/audiobooks",title:"audiobooks",description:"audiobooksDescription"},{id:"voices",path:"/app/voices",title:"voices",description:"voicesDescription"},{id:"agents",path:"/app/agents",title:"agents",description:"agentsDescription"}];function i(e){return r.find(t=>t.id===e)?.path??"/app/telegram"}function a(e){let t=e?.trim().replace(/^@/,"");return t&&/^[a-zA-Z][a-zA-Z0-9_]{4,31}$/.test(t)?`https://t.me/${t}`:null}let o="voicelab:telegram-session";function s(e){if(!e||"object"!=typeof e)return null;let t=["/app/telegram",...r.map(e=>e.path)];return"string"==typeof e.userId&&/^[A-Za-z0-9_-]{1,256}$/.test(e.userId)&&"string"==typeof e.destination&&t.includes(e.destination)?{userId:e.userId,destination:e.destination}:null}function l(){try{let e=JSON.parse(window.sessionStorage.getItem(o)??"null");return s(e)}catch{return null}}function c(e){try{let t=s(e);t?window.sessionStorage.setItem(o,JSON.stringify(t)):window.sessionStorage.removeItem(o)}catch{}}},51276:(e,t,n)=>{n.d(t,{ThemeProvider:()=>l,D:()=>c});var r=n(95155),i=n(12115);let a="theme",o=(0,i.createContext)(null);function s(e){return"light"===e||"dark"===e||"system"===e}function l({children:e}){let[t,n]=(0,i.useState)("system"),[c,d]=(0,i.useState)("light"),[u,p]=(0,i.useState)(!1),h="system"===t?c:t;(0,i.useEffect)(()=>{let e=window.matchMedia("(prefers-color-scheme: dark)"),t=()=>d(e.matches?"dark":"light"),r=null;try{r=window.localStorage.getItem(a)}catch{}return s(r)&&n(r),t(),p(!0),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,i.useEffect)(()=>{if(u){var e;let t,n;return e=document.documentElement,t=e.getAttribute("data-voicelab-theme"),n=e.style.colorScheme,e.setAttribute("data-voicelab-theme",h),e.style.colorScheme=h,function(){e.getAttribute("data-voicelab-theme")===h&&e.style.colorScheme===h&&
1(null===t?e.removeAttribute("data-voicelab-theme"):e.setAttribute("data-voicelab-theme",t),e.style.colorScheme=n)}}},[u,h]);let f=(0,i.useCallback)(e=>{if(s(e)){n(e);try{window.localStorage.setItem(a,e)}catch{}}},[]),m=(0,i.useMemo)(()=>({theme:t,resolvedTheme:h,setTheme:f}),[h,f,t]);return(0,r.jsx)(o.Provider,{value:m,children:(0,r.jsx)("div",{"data-app-theme":u?h:void 0,className:"min-h-svh",children:e})})}function c(){let e=(0,i.useContext)(o);if(!e)throw Error("useTheme must be used inside ThemeProvider.");return e}},64577:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(51811);let i={name:"check",size:24,node:[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]};i.node;let a=(0,r.A)(i)},75745:(e,t,n)=>{n.d(t,{hD:()=>l,qQ:()=>g,Jv:()=>w,G6:()=>y,En:()=>k,CI:()=>b});var r=n(45322);function i(e){let t=e.trim();if(t)try{window.localStorage.setItem("voicelab:auth:last-identifier:v1",t)}catch{}}var a=n(3678),o=n(18219),s=n(4922);class l extends Error{constructor(e,t,n={}){super(t),this.status=e,this.code=n.code,this.fields=n.fields,this.requestId=n.requestId}}function c(e){return"object"==typeof e&&null!==e?e:null}async function d(e){if(e.ok)return e;let t=c(await e.clone().json().catch(()=>null)),n=c(t?.error),r=c(n?.fields),i=r&&Object.values(r).every(e=>"string"==typeof e)?r:void 0;throw new l(e.status,"string"==typeof t?.message?t.message:"Something went wrong. Please try again.",{code:"string"==typeof n?.code?n.code:void 0,fields:i,requestId:"string"==typeof t?.request_id?t.request_id:void 0})}function u(e){let t=e.user;return t&&"string"==typeof t.id&&"string"==typeof t.email?{user:{id:t.id,email:t.email,name:"string"==typeof t.name?t.name:"string"==typeof t.full_name?t.full_name:null,...t.onboarding?{onboarding:t.onboarding}:{}}}:null}function p(e){let t=e.access??e.access_token;return"string"==typeof t&&t.trim()?t:null}let h=(0,o.sf)({baseUrl:a.C1,getAccessToken:s.n.getAccessToken,tokenScheme:"Bearer",retry:0,observeResponse:()=>{}});async function f(e){let t=await e.get("v2/auth/me",{throwHttpErrors:!1,retry:0,timeout:15e3});await d(t);let n=u(await t.json());if(!n)throw new l(t.status,"The session response was invalid. Please try again.");return i(n.user.email),n}async function m(e){try{return await f(e)}catch(t){if(!(t instanceof l)||401!==t.status||!await s.n.getAccessToken(!0))throw t;return f(e)}}async function g({optional:e=!1}={}){let t=e?h:a.yB;try{return await m(t)}catch(t){if(e&&t instanceof l&&401===t.status)return null;throw t}}async function w(e){let t=await a.aj.post("v2/auth/login",{json:e,throwHttpErrors:!1});await d(t);let n=await t.json();s.n.setAccessToken(p(n));let r=u(n)??await g();return i(r.user.email),r}async function y(e,t){if(!r.f)throw new l(503,"Google sign-in is not configured.");let n=await a.aj.post(r.f,{json:{idToken:e,...t?{referral_code:t}:{}},throwHttpErrors:!1});await d(n);let o=await n.json(),c=p(o);if(!c)throw new l(n.status,"Google sign-in did not return an access token.");s.n.setAccessToken(c);let h=u(o)??await g();return i(h.user.email),h}let v=null;function k(e){return v||(v=(async()=>{let t=await a.aj.post("v2/auth/telegram",{json:{init_data:e},throwHttpErrors:!1,retry:0});await d(t);let n=await t.json(),r=p(n);if(!r)throw new l(502,"Telegram sign-in did not return a session.");return s.n.setAccessToken(r),u(n)??await f(h)})().finally(()=>{v=null}))}async function b(){try{let e=await (0,a.yB)("v2/auth/logout",{method:"POST",throwHttpErrors:!1});e.ok||401===e.status||await d(e)}finally{s.n.clearAccessToken()}}},95083:(e,t,n)=>{n.d(t,{Jh:()=>c,nB:()=>o,uv:()=>s,zh:()=>l});let r=null;function i(){try{window.sessionStorage.removeItem("__telegram__initParams")}catch{}}function a(){i();let e=new URLSearchParams(window.location.hash.replace(/^#/,"")),t=[...e.keys()].filter(e=>e.startsWith("tgWebApp"));if(!t.length)return;for(let n of t)e.delete(n);let n=e.toString();window.history.replaceState(window.history.state,"",`${window.location.pathname}${window.location.search}${n?`#${n}`:""}`)}function o(){return window.Telegram?.WebApp??null}function s(e){return"string"==typeof e?.initData&&e.initData.trim().length>0}function l(e){return!!new URLSearchParams(e.replace(/^#/,"")).get("tgWebAppData")?.trim()}function c(){let e=o();
1return e?(a(),Promise.resolve(e)):"u"<typeof document?Promise.reject(Error("telegram_browser_required")):r||(r=new Promise((e,t)=>{let n=document.createElement("script");n.src="https://telegram.org/js/telegram-web-app.js",n.async=!0;let r=!1,s=s=>{if(r)return;r=!0,clearTimeout(l),n.onload=null,n.onerror=null;let c=o();!s&&c?(a(),e(c)):(i(),n.remove(),t(s??Error("telegram_sdk_unavailable")))},l=setTimeout(()=>s(Error("telegram_sdk_timeout")),1e4);n.onload=()=>s(),n.onerror=()=>s(Error("telegram_sdk_unavailable")),document.head.append(n)}).finally(()=>{r=null}))}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.