1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[58944],{90268:function(t,i,e){e.r(i);var a=e(27573),o=e(56106),n=e(77178);i.default=t=>{let{isVisible:i,onClose:e,onSwitchToSignup:s,onLoginSuccess:c}=t;return i?(0,a.jsx)(o.Z,{onSwitchToSignup:s,onClose:e,isModal:!0,onSuccess:()=>{c&&c(),setTimeout(()=>{e();let t=(0,n.ko)();if(t&&!(0,n.pn)(t,window.location.pathname)){window.location.assign(t.path);return}if("/"===window.location.pathname){try{window.history.scrollRestoration="manual"}catch(t){}window.scrollTo(0,0)}window.location.reload()},2e3)},formId:"login-modal"}):null}},87355:function(t,i,e){var a=e(27573);i.Z=()=>(0,a.jsxs)("p",{className:"mt-4 text-center text-[11px] leading-4 text-[#8C8C8C]",children:["This site is protected by reCAPTCHA and the Google"," ",(0,a.jsx)("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-[#027BFF]",children:"Privacy Policy"})," ","and"," ",(0,a.jsx)("a",{href:"https://policies.google.com/terms",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-[#027BFF]",children:"Terms of Service"})," ","apply."]})},7544:function(t,i,e){e.d(i,{g:function(){return s}});var a=e(89825),o=e(18265);class n{generateSessionId(){return"session_".concat(Date.now(),"_").concat(Math.random().toString(36).substr(2,9))}getUserId(){return(0,o.$)("userId")||(0,o.$)("user_id")||void 0}getBaseMetadata(){return{pageUrl:window.location.href,referrer:"undefined"!=typeof document?document.referrer:void 0}}async logActivity(t,i,e){let a={userId:this.getUserId(),sessionId:this.sessionId,activityType:t,activityCategory:i,metadata:{...this.getBaseMetadata(),...e}};this.addToBatch(a)}addToBatch(t){this.pendingActivities.push(t),this.pendingActivities.length>=this.BATCH_SIZE?this.sendBatch():this.batchTimeout||(this.batchTimeout=setTimeout(()=>{this.sendBatch()},this.BATCH_DELAY))}async sendBatch(){if(0===this.pendingActivities.length)return;let t=[...this.pendingActivities];this.pendingActivities=[],this.batchTimeout&&(clearTimeout(this.batchTimeout),this.batchTimeout=null);try{1===t.length?await a.ZP.post("/activity/log",t[0]):await a.ZP.post("/activity/bulk",{activities:t})}catch(t){console.error("Failed to send activity batch:",t)}}async flush(){await this.sendBatch()}flushSync(){if(0===this.pendingActivities.length)return;let t=[...this.pendingActivities];this.pendingActivities=[],this.batchTimeout&&(clearTimeout(this.batchTimeout),this.batchTimeout=null);let i="https://apiprod.upcar.ai/v1";if(!i||"undefined"==typeof navigator||!navigator.sendBeacon)return;let[e,a]=1===t.length?["".concat(i,"/activity/log"),t[0]]:["".concat(i,"/activity/bulk"),{activities:t}];navigator.sendBeacon(e,new Blob([JSON.stringify(a)],{type:"application/json"}))}async logPageView(t){await this.logActivity("page_view","navigation",t)}async logCarViewed(t,i){await this.logActivity("viewed_car","navigation",{carId:t,...i})}async logCarDetailsViewed(t,i){await this.logActivity("viewed_car_details","navigation",{carId:t,...i})}async logSearchPerformed(t,i){await this.logActivity("searched_cars","navigation",{searchQuery:t,...i})}async logFilterApplied(t,i,e){await this.logActivity("filtered_cars","navigation",{filterType:t,filterValue:i,...e})}async logCheckoutPageVisit(t,i,e){await this.logActivity("checkout_page_visit","navigation",{carId:t,tripId:i,...e})}async logProfilePageVisit(t){await this.logActivity("profile_page_visit","navigation",t)}async logDashboardVisit(t){await this.logActivity("dashboard_visit","navigation",t)}async logButtonClick(t,i){await this.logActivity("clicked_button","interaction",{buttonClicked:t,...i})}async logLinkClick(t,i,e){await this.logActivity("clicked_link","interaction",{linkUrl:t,linkText:i,...e})}async logFormSubmitted(t,i){await this.logActivity("form_submitted","interaction",{formName:t,...i})}async logFieldFocused(t,i,e){await this.logActivity("form_field_focused","interaction",{fieldName:t,formName:i,...e})}async logImageClicked(t,i){await this.logActivity("image_clicked","interaction",{imageUrl:t,...i})}async logVideoPlayed(t,i){await this.logActivity("video_played","interaction",{videoUrl:t,...i})}async logDownloadStarted(t,i,e){await this.logActivity("download_started","interaction",{fileName:t,fileUrl:i,...e})}async logPaymentAdded(t,i){await this.logActivity("payment_added","transaction",{paymentMethodId:t,...i})}async logPaymentUpdated(t,i){await this.logActivity("payment_updated","transaction",{paymentMethodId:t,...i})}async logPaymentDeleted(t,i){await this.logActivity("payment_deleted","transaction",{paymentMethodId:t,...i})}async logBookingStarted(t,i,e){await this.logActivity("booking_started","transaction",{carId:t,tripId:i,...e})}async logBookingCompleted(t,i,e,a){await this.logActivity("booking_completed","transaction",{bookingId:t,carId:i,amount:e,currency:"USD",...a})}async logBookingCancelled(t,i,e){await this.logActivity("booking_c
1ancelled","transaction",{bookingId:t,cancellationReason:i,...e})}async logTripStarted(t,i,e){await this.logActivity("trip_started","transaction",{tripId:t,carId:i,...e})}async logTripCompleted(t,i,e){await this.logActivity("trip_completed","transaction",{tripId:t,carId:i,...e})}async logTripCancelled(t,i,e){await this.logActivity("trip_cancelled","transaction",{tripId:t,cancellationReason:i,...e})}async logReviewSubmitted(t,i,e,a){await this.logActivity("review_submitted","engagement",{carId:t,rating:i,tripId:e,...a})}async logMessageSent(t,i,e,a){await this.logActivity("message_sent","engagement",{messageId:t,recipientId:i,messageType:e,...a})}async logNotificationClicked(t,i,e){await this.logActivity("notification_clicked","engagement",{notificationId:t,notificationType:i,...e})}async logEmailOpened(t,i,e){await this.logActivity("email_opened","engagement",{emailId:t,campaignId:i,...e})}async logEmailClicked(t,i,e){await this.logActivity("email_clicked","engagement",{emailId:t,linkUrl:i,...e})}async logShareAction(t,i,e,a){await this.logActivity("share_action","engagement",{contentType:t,contentId:i,platform:e,...a})}async logFavoriteAdded(t,i){await this.logActivity("favorite_added","engagement",{carId:t,...i})}async logFavoriteRemoved(t,i){await this.logActivity("favorite_removed","engagement",{carId:t,...i})}async logLogin(t){await this.logActivity("login","system",t)}async logLogout(t){await this.logActivity("logout","system",t)}async logRegistration(t){await this.logActivity("registration","system",t)}async logPasswordReset(t){await this.logActivity("password_reset","system",t)}async logProfileUpdated(t,i){await this.logActivity("profile_updated","system",{fieldsUpdated:t,...i})}async logSettingsChanged(t,i,e,a){await this.logActivity("settings_changed","system",{settingName:t,oldValue:i,newValue:e,...a})}async logError(t,i,e,a){await this.logActivity("error_occurred","system",{errorCode:t,errorMessage:i,stackTrace:e,...a})}async logSessionTimeout(t){await this.logActivity("session_timeout","system",t)}async getActivities(t){try{return(await a.ZP.get("/activity",{params:t})).data}catch(t){throw console.error("Failed to fetch activities:",t),t}}async getAnalytics(t,i){try{let e={};return t&&(e.startDate=t),i&&(e.endDate=i),(await a.ZP.get("/activity/analytics",{params:e})).data}catch(t){throw console.error("Failed to fetch analytics:",t),t}}async getUserJourney(t){try{return(await a.ZP.get("/activity/journey?userId=".concat(t))).data}catch(t){throw console.error("Failed to fetch user journey:",t),t}}async getActivityTypes(){try{return(await a.ZP.get("/activity/types")).data}catch(t){throw console.error("Failed to fetch activity types:",t),t}}constructor(){this.pendingActivities=[],this.batchTimeout=null,this.BATCH_SIZE=50,this.BATCH_DELAY=2e3,this.sessionId=this.generateSessionId()}}let s=new n;window.addEventListener("beforeunload",()=>{s.flushSync()})}}]);
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.