1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6405],{4259:(e,a,r)=>{r.d(a,{H:()=>t});var s=r(30926);let t=(0,s.createServerReference)("00844c8fafdba26d567b6c98a837c8d3e65633b605",s.callServer,void 0,s.findSourceMapURL,"getSession")},5903:(e,a,r)=>{r.d(a,{A$:()=>p,Hz:()=>l,af:()=>u,encryptData:()=>c,getOrDeriveKey:()=>n});let s=new TextEncoder().encode("vclasses-offline-video-salt-2026"),t=new Map,i=new Set,o=new Map,d=new Map;async function l(e,a){let r=a||String(e),o="".concat(e,"__").concat(r);if(t.has(o))return t.get(o);let d=new TextEncoder,l=await crypto.subtle.importKey("raw",d.encode(r),"PBKDF2",!1,["deriveKey"]),n=await crypto.subtle.deriveKey({name:"PBKDF2",salt:s,iterations:1e5,hash:"SHA-256"},l,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return t.set(o,n),a&&i.add(String(e)),n}async function n(e){let a=String(e);if(d.has(a))return d.get(a);if(i.has(a)){for(let[e,r]of t.entries())if(e.startsWith("".concat(a,"__"))&&!e.endsWith("__".concat(a)))return d.set(a,r),r}if(o.has(a))return o.get(a);let r=(async()=>{let r=await l(e);return d.set(a,r),r})();return o.set(a,r),r.finally(()=>{o.delete(a)}),r}async function c(e,a){let r=crypto.getRandomValues(new Uint8Array(12));return{encrypted:await crypto.subtle.encrypt({name:"AES-GCM",iv:r},a,e),iv:r}}async function u(e,a,r){return crypto.subtle.decrypt({name:"AES-GCM",iv:a},r,e)}async function p(e,a,r){let s=await n(r);try{return await u(e,a,s)}catch(i){console.warn("[video-crypto] Primary key failed; trying legacy userId key.");let t=await l(r);if(t===s)throw Error("Decryption failed");return u(e,a,t)}}},26405:(e,a,r)=>{r.d(a,{x:()=>c});var s=r(53455),t=r(6439),i=r(46171),o=r(51581),d=r(56845),l=r(4259),n=r(12115);function c(){let e=(0,t.j)(),{user:a,setting_sidebar:r,isAuthenticated:c,isInitialized:u,is_approved:p}=(0,t.G)(e=>e.auth),{data:_,isPending:v,error:y,refetch:g,isSuccess:f}=(0,s.I)({queryKey:["profile"],queryFn:async()=>{try{let a=await (0,i.E)();if(!a.success){if("CHANGE_PASSWORD"===a.errorCode||"UNAPPROVED_USER_EXCEPTION"===a.errorCode)throw Error(a.errorCode);throw(401===a.status||"No auth token found"===a.error)&&(e((0,o.ri)()),localStorage.removeItem("vclasses_user_cache"),(0,d._)().catch(e=>console.error("Failed to clear stale cookies:",e))),Error(a.error||"Failed to fetch profile")}return localStorage.setItem("vclasses_user_cache",JSON.stringify(a.data)),a.data}catch(s){let a="undefined"!=typeof navigator&&!navigator.onLine,r=null;try{r=await (0,l.H)()}catch(e){console.warn("[useProfile] Failed to get session, assuming network error:",e)}if(r||a||"Failed to fetch"===s.message||"Network Error"===s.message){let e=localStorage.getItem("vclasses_user_cache");if(e)return JSON.parse(e)}else localStorage.removeItem("vclasses_user_cache"),e((0,o.ri)());throw s}},staleTime:3e5,retry:1,enabled:c&&!1!==p,networkMode:"offlineFirst"});(0,n.useEffect)(()=>{if(f&&_&&_.user){e((0,o.Ne)({data:_.user.id,user:_.user,setting_sidebar:_.setting_sidebar,cart_items:_.user.cart_items,is_paid:_.user.is_paid,is_approved:_.user.is_approved}));{let e="https:"===window.location.protocol?"; Secure":"";_.user.role&&(document.cookie="user_role=".concat(_.user.role,"; path=/; max-age=2592000; SameSite=Lax").concat(e)),void 0!==_.user.is_approved&&(document.cookie="is_approved=".concat(_.user.is_approved?"1":"0","; path=/; max-age=2592000; SameSite=Lax").concat(e)),void 0!==_.user.is_paid&&(document.cookie="is_paid=".concat(_.user.is_paid?"1":"0","; path=/; max-age=2592000; SameSite=Lax").concat(e))}}},[_,f,e]);let h=a||(null==_?void 0:_.user),m=r||(null==_?void 0:_.setting_sidebar),w=!u||c&&v&&!h;return{user:h,setting_sidebar:m,isLoading:w,isSuccess:f,isError:!!y,error:y,refetch:g}}},46171:(e,a,r)=>{r.d(a,{g:()=>n,E:()=>l});var s=r(21858),t=r(37547),i=r(30926);let o=(0,i.createServerReference)("604859c24fe78e2821f2899309831c259e063034a8",i.callServer,void 0,i.findSourceMapURL,"decryptSecretKeyAction");var d=r(5903);async function l(){var e,a,r,i,l,n,c;try{let r=await s.A.get("/profile/get"),i=(0,t.Mw)(r.data);if((null==i||null==(e=i.user)?void 0:e.secret_key_for_web)&&(null==i||null==(a=i.user)?void 0:a.id)){let e=await o(i.user.secret_key_for_web,i.user.id);e&&await (0,d.Hz)(i.user.id,e),delete i.user.secret_key_for_web}return{success:!0,data:i}}catch(e){return{success:!1,error:(null==(i=e.response)||null==(r=i.data)?void 0:r.message)||e.message,status:null==(l=e.response)?void 0:l.status,errorCode:null==(c=e.response)||null==(n=c.data)?void 0:n.error}}}async function n(){var e,a,r,i;try{let a=await s.A.get("/profile/is-approved"),r=(0,t.Mw)(a.data)||a.data,i=(null==r?void 0:r.is_a
1pproved)!==void 0?r.is_approved:(null==r||null==(e=r.user)?void 0:e.is_approved)!==void 0?r.user.is_approved:r;return{success:!0,is_approved:!0===i||1===i||"1"===i||"true"===i}}catch(e){return{success:!1,is_approved:!1,error:(null==(r=e.response)||null==(a=r.data)?void 0:a.message)||e.message,status:null==(i=e.response)?void 0:i.status}}}},51581:(e,a,r)=>{r.d(a,{AU:()=>l,Ay:()=>g,Bj:()=>i,Hg:()=>t,Ix:()=>u,Ne:()=>n,ie:()=>c,oX:()=>o,ri:()=>p,zv:()=>d});let s=(0,r(59267).Z0)({name:"auth",initialState:{isAuthenticated:!1,isLoading:!1,isInitialized:!1,error:null,successMessage:null,cartItems:0,changePassword:!1,missedData:!1,is_paid:void 0,is_approved:void 0,user:null,setting_sidebar:null,auth_id:null},reducers:{setInitialized:e=>{e.isInitialized=!0,e.isLoading=!1},signupStart:e=>{e.isLoading=!0,e.error=null,e.successMessage=null},signupSuccess:(e,a)=>{var r,s;e.isLoading=!1,e.isAuthenticated=!0,e.cartItems=a.payload.cart_items,e.changePassword=a.payload.change_password,e.missedData=a.payload.missed_data,e.auth_id=a.payload.auth_id;let t=void 0!==a.payload.is_paid?a.payload.is_paid:null==(r=a.payload.user)?void 0:r.is_paid;e.is_paid=t;let i=void 0!==a.payload.is_approved?a.payload.is_approved:null==(s=a.payload.user)?void 0:s.is_approved;e.is_approved=i,e.user=a.payload.user?{...a.payload.user,is_paid:void 0!==t?t:a.payload.user.is_paid,is_approved:void 0!==i?i:a.payload.user.is_approved}:a.payload.user,e.setting_sidebar=a.payload.setting_sidebar,e.error=null,e.successMessage="Signup successful!"},signupFailure:(e,a)=>{e.isLoading=!1,e.error=a.payload,e.isAuthenticated=!1},loginStart:e=>{e.isLoading=!0,e.error=null,e.successMessage=null},loginSuccess:(e,a)=>{var r,s;e.isLoading=!1,e.isAuthenticated=!0,e.isInitialized=!0,e.cartItems=a.payload.cart_items,e.changePassword=a.payload.change_password,e.missedData=a.payload.missed_data,e.auth_id=a.payload.auth_id;let t=void 0!==a.payload.is_paid?a.payload.is_paid:null==(r=a.payload.user)?void 0:r.is_paid;e.is_paid=t;let i=void 0!==a.payload.is_approved?a.payload.is_approved:null==(s=a.payload.user)?void 0:s.is_approved;e.is_approved=i,e.user=a.payload.user?{...a.payload.user,is_paid:void 0!==t?t:a.payload.user.is_paid,is_approved:void 0!==i?i:a.payload.user.is_approved}:a.payload.user,e.setting_sidebar=a.payload.setting_sidebar,e.error=null,e.successMessage="Login successful!"},loginFailure:(e,a)=>{e.isLoading=!1,e.error=a.payload,e.isAuthenticated=!1,e.isInitialized=!0},setApproved:(e,a)=>{e.is_approved=a.payload,e.user&&(e.user.is_approved=a.payload)},logout:e=>{e.isAuthenticated=!1,e.isLoading=!1,e.error=null,e.successMessage=null,e.cartItems=0,e.changePassword=!1,e.missedData=!1,e.is_paid=void 0,e.is_approved=void 0,e.user=null,e.setting_sidebar=null,e.auth_id=null},clearError:e=>{e.error=null},clearSuccessMessage:e=>{e.successMessage=null},updateCartItems:(e,a)=>{e.cartItems=a.payload}}}),{setInitialized:t,signupStart:i,signupSuccess:o,signupFailure:d,loginStart:l,loginSuccess:n,loginFailure:c,setApproved:u,logout:p,clearError:_,clearSuccessMessage:v,updateCartItems:y}=s.actions,g=s.reducer},56845:(e,a,r)=>{r.d(a,{_:()=>t});var s=r(30926);let t=(0,s.createServerReference)("00401e192095c758016b2926bd270661cf4f8c3543",s.callServer,void 0,s.findSourceMapURL,"clearStaleCookies")}}]);
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.