From 2bcd074b89de8062cfc0db40f968d3cc666d013a Mon Sep 17 00:00:00 2001 From: Stuart Date: Thu, 24 Sep 2026 03:05:07 +1000 Subject: [PATCH 1/4] STU-385: move generation options into the composer settings dialog The composer's gear opens a generation-settings dialog that presents the existing model selector and the supported generation option (image input). #code-generator-model remains the single element the pipeline reads, so selections reach the actual request unchanged; provider keys stay a shortcut into the canonical account connection editor; ordinary close returns focus to the composer and never reopens the walkthrough. Regenerates the tracked dist/index.html and prunes the orphaned bundle. --- app.js | 69 ++++++ dist/assets/index-oXwmwfKe.js | 318 --------------------------- dist/index.html | 69 ++++-- e2e/stu376-composer.spec.js | 18 +- e2e/stu377-pipeline-progress.spec.js | 17 +- e2e/stu385-composer-settings.spec.js | 251 +++++++++++++++++++++ index.html | 67 ++++-- 7 files changed, 458 insertions(+), 351 deletions(-) delete mode 100644 dist/assets/index-oXwmwfKe.js create mode 100644 e2e/stu385-composer-settings.spec.js diff --git a/app.js b/app.js index 24bf690..146084b 100644 --- a/app.js +++ b/app.js @@ -1129,6 +1129,73 @@ function walkthroughConnectAccount() { openApiKeysModalBody(); } +// --- Composer generation settings (STU-385) --- +// +// The composer's gear opens this dialog, which presents the existing model +// selector and supported generation options. #code-generator-model still lives +// here and remains the single element the generation pipeline reads, so +// selections made in this dialog reach the actual request unchanged — no +// key-storage or transport change. Provider-key management is a shortcut into +// the canonical account connection editor (openApiKeysModal, STU-384), never a +// second independent editor. +// +// Closing this dialog from normal use must never reopen the walkthrough: the +// featured bug the milestone tracks is an ordinary settings close resuming +// onboarding. openComposerSettings runs with the standalone flag set (NOT the +// walkthrough-originating flag), so closeComposerSettings leaves the walkthrough +// untouched; only the walkthrough's own connect step flips that flag. + +let composerSettingsChangeWired = false; + +/** + * Reflect the selected model's supported generation options into the dialog and + * keep the composer's image-attach affordance in step (vision model → attach + * allowed; non-vision model → attach hidden and any attached images dropped). + */ +function renderComposerSettingsOptions() { + const select = document.getElementById("code-generator-model"); + const capability = document.getElementById("composer-image-capability"); + const note = document.getElementById("composer-image-capability-note"); + if (!select) return; + const label = getModelLabel(select.value); + const supports = modelSupportsImages(select.value); + if (capability) { + capability.textContent = supports ? "Supported" : "Not supported"; + } + if (note) { + note.textContent = supports + ? `${label} accepts reference images you attach to the prompt.` + : `Images can't be attached with ${label}. Attached images are removed when you switch to it.`; + } + updatePromptImageAvailability(); +} + +function openComposerSettings() { + // A standalone settings visit, not onboarding: closing it must not touch the + // walkthrough (same contract as openApiKeysModal). + walkthroughSettingsActive = false; + renderComposerSettingsOptions(); + if (!composerSettingsChangeWired) { + const select = document.getElementById("code-generator-model"); + if (select) { + select.addEventListener("change", () => { + renderComposerSettingsOptions(); + updateModelInfo(select.value); + }); + } + composerSettingsChangeWired = true; + } + const trigger = document.querySelector( + '.composer [aria-label="Generation settings"]', + ); + openModal("composer-settings-modal", { trigger }); +} + +function closeComposerSettings(event) { + if (event && event.target !== event.currentTarget) return; + closeModal("composer-settings-modal"); +} + function closeApiKeysModal(event) { if (event && event.target !== event.currentTarget) return; const modal = document.getElementById("api-keys-modal"); @@ -7055,6 +7122,8 @@ window.copyCode = copyCode; window.retryWithDifferentModel = retryWithDifferentModel; window.openApiKeysModal = openApiKeysModal; window.closeApiKeysModal = closeApiKeysModal; +window.openComposerSettings = openComposerSettings; +window.closeComposerSettings = closeComposerSettings; window.walkthroughConnectAccount = walkthroughConnectAccount; window.closeWalkthroughModal = closeWalkthroughModal; window.openWalkthroughModal = openWalkthroughModal; diff --git a/dist/assets/index-oXwmwfKe.js b/dist/assets/index-oXwmwfKe.js deleted file mode 100644 index 08e6a65..0000000 --- a/dist/assets/index-oXwmwfKe.js +++ /dev/null @@ -1,318 +0,0 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();var w=typeof window<"u"?window:void 0,Le=typeof globalThis<"u"?globalThis:w,Ue=Le?.navigator,F=Le?.document,me=Le?.location,Za=Le?.fetch,zo=Le!=null&&Le.XMLHttpRequest&&"withCredentials"in new Le.XMLHttpRequest?Le.XMLHttpRequest:void 0,lc=Le?.AbortController,kp=Le?.CompressionStream,ze=Ue?.userAgent;function rd(){return!(!w||w.navigator.onLine===!1)}var mi=typeof globalThis<"u"?globalThis:w;mi&&typeof self>"u"&&(mi.self=mi),mi&&typeof File>"u"&&(mi.File=function(){});var B=w??{},ne={DEBUG:!1,LIB_VERSION:"0.5.0",LIB_NAME:"browser-common"};function cc(t,e,n,i,r,s,o){try{var a=t[s](o),l=a.value}catch(u){return void n(u)}a.done?e(l):Promise.resolve(l).then(i,r)}function se(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var s=t.apply(e,n);function o(l){cc(s,i,r,o,a,"next",l)}function a(l){cc(s,i,r,o,a,"throw",l)}o(void 0)}))}}function k(){return k=Object.assign?Object.assign.bind():function(t){for(var e=1;arguments.length>e;e++){var n=arguments[e];for(var i in n)({}).hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},k.apply(null,arguments)}function sd(t,e){if(t==null)return{};var n={};for(var i in t)if({}.hasOwnProperty.call(t,i)){if(e.indexOf(i)!==-1)continue;n[i]=t[i]}return n}var uc=t=>{if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}};function dc(t){return typeof t=="string"||t}function fc(t){return typeof t=="string"?t:void 0}var vi,Cp=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain","utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],jt=(function(t){return t.AnonymousId="anonymous_id",t.DistinctId="distinct_id",t.Props="props",t.EnablePersonProcessing="enable_person_processing",t.PersonMode="person_mode",t.FeatureFlagDetails="feature_flag_details",t.FeatureFlags="feature_flags",t.FeatureFlagPayloads="feature_flag_payloads",t.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",t.BootstrapFeatureFlags="bootstrap_feature_flags",t.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",t.OverrideFeatureFlags="override_feature_flags",t.Queue="queue",t.AiQueue="ai_queue",t.LogsQueue="logs_queue",t.OptedOut="opted_out",t.SessionId="session_id",t.SessionStartTimestamp="session_start_timestamp",t.SessionLastTimestamp="session_timestamp",t.PersonProperties="person_properties",t.GroupProperties="group_properties",t.InstalledAppBuild="installed_app_build",t.InstalledAppVersion="installed_app_version",t.SessionReplay="session_replay",t.PushRegistered="push_registered",t.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",t.SurveyLastSeenDate="survey_last_seen_date",t.SurveysSeen="surveys_seen",t.Surveys="surveys",t.RemoteConfig="remote_config",t.FlagsEndpointWasHit="flags_endpoint_was_hit",t.DeviceId="device_id",t})({}),hc=(function(t){return t.GZipJS="gzip-js",t.Base64="base64",t})({}),Ap=["$snapshot","$pageview","$pageleave","$set","survey dismissed","survey sent","survey shown","$identify","$groupidentify","$create_alias","$$client_ingestion_warning","$web_experiment_applied","$feature_enrollment_update","$feature_flag_called"],Pp=["token"],od="NativeGzipValidationError",qo=t=>t.length>=2&&t[0]===31&&t[1]===139,pc=(t,e)=>t===hc.GZipJS||e===hc.GZipJS||e==="gzip",gc=t=>!(!t||typeof t!="object")&&("name"in t?String(t.name):"")==="NotReadableError",dr=t=>{var e=new Error("Native gzip produced invalid output: "+t);throw e.name=od,e},Fp=(function(){var t=se((function*(e,n){18>e.size&&dr("too-short");var i=new Uint8Array(yield e.slice(0,10).arrayBuffer());qo(i)&&i[2]===8||dr("invalid-header");var r=new DataView(yield e.slice(e.size-8).arrayBuffer());r.getUint32(0,!0)!==(o=>{for(var a=(()=>{if(vi)return vi;vi=[];for(var c=0;256>c;c++){for(var d=c,f=0;8>f;f++)d=1&d?3988292384^d>>>1:d>>>1;vi[c]=d>>>0}return vi})(),l=4294967295,u=0;o.length>u;u++)l=a[255&(l^o[u])]^l>>>8;return(4294967295^l)>>>0})(n)&&dr("invalid-crc");var s=n.length>>>0;r.getUint32(4,!0)!==s&&dr("invalid-size")}));return function(e,n){return t.apply(this,arguments)}})();function Vo(){return Vo=se((function*(t,e,n){e===void 0&&(e=!0);try{var i=new TextEncoder().encode(t),r=new globalThis.CompressionStream("gzip"),s=r.writable.getWriter(),o=s.write(i).then((()=>s.close())).catch((function(){var u=se((function*(c){try{yield s.abort(c)}catch{}throw c}));return function(c){return u.apply(this,arguments)}})()),a=new Response(r.readable).blob(),l=(yield Promise.all([a,o]))[0];return yield Fp(l,i),l}catch(u){if(n!=null&&n.rethrow)throw u;return e&&console.error("Failed to gzip compress data",u),null}})),Vo.apply(this,arguments)}var Rp=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],mc=function(t,e){if(e===void 0&&(e=[]),!t)return!1;var n=t.toLowerCase();return Rp.concat(e).some((i=>{var r=i.toLowerCase();return n.indexOf(r)!==-1}))};function j(t,e){return t.indexOf(e)!==-1}var Ss=function(t){return t.trim()},Go=function(t){return t.replace(/^\$/,"")};function ad(t){var e,n=[];return(e=JSON.stringify(t,(function(i,r){if(typeof r=="bigint")return r.toString();if(typeof r!="function"&&typeof r!="symbol"){if(r instanceof Error)return{name:r.name,message:r.message,stack:r.stack};if(r&&typeof r=="object"){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.includes(r))return"[Circular]";n.push(r)}return r}})))!==null&&e!==void 0?e:"null"}var ld=Object.prototype,cd=ld.hasOwnProperty,xs=ld.toString,U=Array.isArray||function(t){return xs.call(t)==="[object Array]"},De=t=>typeof t=="function",he=t=>t===Object(t)&&!U(t),Vt=t=>{if(he(t)){for(var e in t)if(cd.call(t,e))return!1;return!0}return!1},C=t=>t===void 0,X=t=>xs.call(t)=="[object String]",Ko=t=>X(t)&&t.trim().length===0,Ve=t=>t===null,H=t=>C(t)||Ve(t),ke=t=>xs.call(t)=="[object Number]"&&t==t,Bt=t=>ke(t)&&t>0,gt=t=>xs.call(t)==="[object Boolean]",Tp=t=>t instanceof FormData,$p=t=>j(Ap,t),Mp=t=>j(Pp,t);function ud(t){return t===null||typeof t!="object"}function Dr(t,e){return{}.toString.call(t)==="[object "+e+"]"}function Xa(t){return typeof Event<"u"&&dd(t,Event)}function dd(t,e){try{return t instanceof e}catch{return!1}}var Lp=[!0,"true",1,"1","yes"],uo=t=>j(Lp,t),Np=[!1,"false",0,"0","no"];function Ct(t,e,n,i,r){return e>n&&(i.warn("min cannot be greater than max."),e=n),ke(t)?t>n?(i.warn(" cannot be greater than max: "+n+". Using max value instead."),n):e>t?(i.warn(" cannot be less than min: "+e+". Using min value instead."),e):t:(i.warn(" must be a number. using max or fallback. max: "+n+", fallback: "+r),Ct(r||n,e,n,i))}class Op{constructor(e){this.tt={},this.et=e.et,this.it=Ct(e.bucketSize,0,100,e.rt),this.nt=Ct(e.refillRate,0,this.it,e.rt),this.st=Ct(e.refillInterval,0,864e5,e.rt)}ot(e,n){var i=Math.floor((n-e.lastAccess)/this.st);i>0&&(e.tokens=Math.min(e.tokens+i*this.nt,this.it),e.lastAccess=e.lastAccess+i*this.st)}consumeRateLimit(e){var n,i=Date.now(),r=String(e),s=this.tt[r];return s?this.ot(s,i):this.tt[r]=s={tokens:this.it,lastAccess:i},s.tokens===0||(s.tokens--,s.tokens===0&&((n=this.et)==null||n.call(this,e)),s.tokens===0)}stop(){this.tt={}}}var it="Mobile",jr="iOS",Gt="Android",Qn="Tablet",fd=Gt+" "+Qn,hd="iPad",pd="Apple",gd=pd+" Watch",Oi="Safari",ei="BlackBerry",md="Samsung",vd=md+"Browser",_d=md+" Internet",An="Chrome",Bp=An+" OS",yd=An+" "+jr,Qa="Internet Explorer",wd=Qa+" "+it,el="Opera",Dp=el+" Mini",tl="Edge",bd="Microsoft "+tl,Jn="Firefox",Ed=Jn+" "+jr,Vi="Nintendo",Gi="PlayStation",Zn="Xbox",Sd=Gt+" "+it,xd=it+" "+Oi,Ai="Windows",Yo=Ai+" Phone",vc="Nokia",Jo="Ouya",Id="Generic",jp=Id+" "+it.toLowerCase(),kd=Id+" "+Qn.toLowerCase(),Zo="Konqueror",Cd="Oculus Browser",Ur="Vivaldi",Ad="Yandex",Hr="Whale",Xo="DuckDuckGo",Pd="Pale Moon",Wr="Waterfox",Bi="Brave",Fd="Google Search App",we="(\\d+(\\.\\d+)?)",fo=new RegExp("Version/"+we),Up=new RegExp(Zn,"i"),Hp=new RegExp(Gi+" \\w+","i"),Wp=new RegExp(Vi+" \\w+","i"),nl=new RegExp(ei+"|PlayBook|BB10","i"),zp={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},Rd=function(t,e,n,i){e=e||"";var r=(function(s){return s!=null&&s.brave?Bi:null})(n);return r||(i!=null&&i.detectGoogleSearchApp&&j(t,"GSA/")?Fd:j(t," OPR/")&&j(t,"Mini")?Dp:j(t," OPR/")?el:nl.test(t)?ei:j(t,"IE"+it)||j(t,"WPDesktop")?wd:j(t,"OculusBrowser")?Cd:j(t,vd)?_d:j(t,tl)||j(t,"Edg/")?bd:j(t,Ur+"/")?Ur:j(t,"YaBrowser/")?Ad:j(t,Hr+"/")?Hr:j(t,Xo+"/")||j(t,"Ddg/")?Xo:j(t,"FBIOS")?"Facebook "+it:j(t,"UCWEB")||j(t,"UCBrowser")?"UC Browser":j(t,"CriOS")?yd:j(t,"CrMo")||j(t,An)?An:j(t,Gt)&&j(t,Oi)?Sd:j(t,"FxiOS")?Ed:j(t.toLowerCase(),Zo.toLowerCase())?Zo:j(t,Bi+"/")?Bi:((s,o)=>o&&j(o,pd)||(function(a){return j(a,Oi)&&!j(a,An)&&!j(a,Gt)})(s))(t,e)?j(t,it)?xd:Oi:j(t,"PaleMoon/")?Pd:j(t,Wr+"/")?Wr:j(t,Jn)?Jn:j(t,"MSIE")||j(t,"Trident/")?Qa:j(t,"Gecko")?Jn:"")},qp={[wd]:[new RegExp("rv:"+we)],[bd]:[new RegExp(tl+"?\\/"+we)],[An]:[new RegExp("("+An+"|CrMo)\\/"+we)],[yd]:[new RegExp("CriOS\\/"+we)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+we)],[Oi]:[fo],[xd]:[fo],[el]:[new RegExp("(Opera|OPR)\\/"+we)],[Jn]:[new RegExp(Jn+"\\/"+we)],[Ed]:[new RegExp("FxiOS\\/"+we)],[Zo]:[new RegExp("Konqueror[:/]?"+we,"i")],[ei]:[new RegExp(ei+" "+we),fo],[Sd]:[new RegExp("android\\s"+we,"i")],[_d]:[new RegExp(vd+"\\/"+we)],[Cd]:[new RegExp("OculusBrowser\\/"+we)],[Ur]:[new RegExp(Ur+"\\/"+we)],[Ad]:[new RegExp("YaBrowser\\/"+we)],[Hr]:[new RegExp(Hr+"\\/"+we)],[Bi]:[new RegExp(Bi+"\\/"+we)],[Xo]:[new RegExp("(DuckDuckGo|Ddg)\\/"+we)],[Pd]:[new RegExp("PaleMoon\\/"+we)],[Wr]:[new RegExp(Wr+"\\/"+we)],[Fd]:[new RegExp("GSA\\/"+we)],[Qa]:[new RegExp("(rv:|MSIE )"+we)],Mozilla:[new RegExp("rv:"+we)]},Vp=function(t,e,n,i){var r=Rd(t,e,n,i),s=qp[r];if(C(s))return null;for(var o=0;s.length>o;o++){var a=t.match(s[o]);if(a)return parseFloat(a[a.length-2])}return null},_c=[[new RegExp(Zn+"; "+Zn+" (.*?)[);]","i"),t=>[Zn,t&&t[1]||""]],[new RegExp(Vi,"i"),[Vi,""]],[new RegExp(Gi,"i"),[Gi,""]],[nl,[ei,""]],[new RegExp(Ai,"i"),(t,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[Yo,""];if(new RegExp(it).test(e)&&!/IEMobile\b/.test(e))return[Ai+" "+it,""];var n=/Windows NT ([0-9.]+)/i.exec(e);if(n&&n[1]){var i=zp[n[1]]||"";return/arm/i.test(e)&&(i="RT"),[Ai,i]}return[Ai,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,t=>t&&t[3]?[jr,[t[3],t[4],t[5]||"0"].join(".")]:[jr,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,t=>{var e="";return t&&t.length>=3&&(e=C(t[2])?t[3]:t[2]),["watchOS",e]}],[new RegExp("("+Gt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Gt+")","i"),t=>t&&t[2]?[Gt,[t[2],t[3],t[4]||"0"].join(".")]:[Gt,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,t=>{var e=["Mac OS X",""];return t&&t[1]&&(e[1]=[t[1],t[2],t[3]||"0"].join(".")),e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Bp,""]],[/Linux|debian/i,["Linux",""]]],yc=function(t){return Wp.test(t)?Vi:Hp.test(t)?Gi:Up.test(t)?Zn:new RegExp(Jo,"i").test(t)?Jo:new RegExp("("+Yo+"|WPDesktop)","i").test(t)?Yo:/iPad/.test(t)?hd:/iPod/.test(t)?"iPod Touch":/iPhone/.test(t)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(t)?gd:nl.test(t)?ei:/(kobo)\s(ereader|touch)/i.test(t)?"Kobo":new RegExp(vc,"i").test(t)?vc:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(t)||/(kf[a-z]+)( bui|\)).+silk\//i.test(t)?"Kindle Fire":/(Android|ZTE)/i.test(t)?new RegExp(it).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?Gt:fd:new RegExp("(pda|"+it+")","i").test(t)?jp:new RegExp(Qn,"i").test(t)&&!new RegExp(Qn+" pc","i").test(t)?kd:""},Gp=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function wc(t,e){return typeof(n=t)=="string"&&Gp.test(n)?t:e();var n}function dn(t){return t&&t.split("#")[0]}function il(t,e){var n=setTimeout(t,e);return n?.unref&&n?.unref(),n}function bc(t,e,n){return Td.apply(this,arguments)}function Td(){return(Td=se((function*(t,e,n){var i;try{return yield Promise.race([t,new Promise(((r,s)=>{i=il((()=>{try{n?.(),r()}catch(o){s(o)}}),e)}))])}finally{clearTimeout(i)}}))).apply(this,arguments)}var Kp=t=>t instanceof Error,$d={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},Yp=$d.info;function Md(t){if(gt(t))return{boolValue:t};if(typeof t=="number")return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if(typeof t=="string")return{stringValue:t};if(U(t))return{arrayValue:{values:t.map((e=>Md(e)))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}function zr(t){var e=[];for(var n in t){var i=t[n];Ve(i)||C(i)||e.push({key:n,value:Md(i)})}return e}function Jp(t,e){var n=$d[t.level||"info"]||Yp,i=n.text,r=n.number,s=String(Date.now())+"000000",o={};e.distinctId&&(o.posthogDistinctId=e.distinctId),e.sessionId&&(o.sessionId=e.sessionId),e.windowId&&(o["window.id"]=e.windowId),H(e.sessionStartTimestamp)||(o.sessionStartTimestamp=String(e.sessionStartTimestamp)),H(e.lastActivityTimestamp)||(o.lastActivityTimestamp=String(e.lastActivityTimestamp)),e.currentUrl&&(o["url.full"]=e.currentUrl),e.screenName&&(o["screen.name"]=e.screenName),e.appState&&(o["app.state"]=e.appState),e.activeFeatureFlags&&e.activeFeatureFlags.length>0&&(o.feature_flags=e.activeFeatureFlags);var a=k({},o,t.attributes||{}),l={timeUnixNano:s,observedTimeUnixNano:s,severityNumber:r,severityText:i,body:{stringValue:t.body},attributes:zr(a)};return t.trace_id&&(l.traceId=t.trace_id),t.span_id&&(l.spanId=t.span_id),C(t.trace_flags)||(l.flags=t.trace_flags),l}function Ld(t,e,n){return k({},t.resourceAttributes,{"service.name":t.serviceName||"unknown_service"},t.environment&&{"deployment.environment":t.environment},t.serviceVersion&&{"service.version":t.serviceVersion},{"telemetry.sdk.name":e,"telemetry.sdk.version":n})}function Nd(t,e,n,i){return{resourceLogs:[{resource:{attributes:zr(e)},scopeLogs:[{scope:{name:n,version:i},logRecords:t}]}]}}let Zp=class{constructor(t,e,n,i,r,s,o){var a;s===void 0&&(s=()=>Promise.resolve()),this._instance=t,this.Ne=e,this.rt=n,this.ut=i,this.ht=r,this.dt=s,this.vt=o,this.ct=null,this.ft=0,this.yt=0,this.bt=0,this._t=0,this.wt=!1,this.kt=e.maxBufferSize,this.xt=Math.max((a=e.maxQueueSize)!==null&&a!==void 0?a:e.maxBufferSize,e.maxBufferSize),this.St=e.flushIntervalMs,this.Ct=e.maxBatchRecordsPerPost,this.Mt=e.rateCapWindowMs,this.Tt=e.maxLogsPerInterval}reset(){this.Et(),this.ct=null,this.bt=0,this._t=0,this.wt=!1,this.ft=0,this.yt=0,this.Ct=this.Ne.maxBatchRecordsPerPost}onReconnect(){this.yt=0,this.It()}captureLog(t){if(!this._instance.isDisabled&&!this._instance.optedOut&&t!=null&&t.body){var e=this.Pt(t);if(e!==null)if(e.body){if(this.Rt()){var n={record:Jp(e,this.ut())};this.ht((()=>this.At(n)))}}else this.rt.info("Log was rejected in beforeSend function")}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=U(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Log was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for log:",o),null}return i}Rt(){if(this.Tt===void 0)return!0;var t=Date.now(),e=t-this.bt;return this.Mt>e&&e>=0||(this.bt=t,this._t=0,this.wt=!1),this.Tt>this._t?(this._t++,!0):(this.wt||(this.rt.warn("captureLog dropping logs: exceeded "+this.Tt+" logs per "+this.Mt+"ms"),this.wt=!0),!1)}flush(){var t=this;return se((function*(){if(!t._instance.isDisabled)return t.ct||(t.ct=t.Ft().finally((()=>{t.ct=null}))),t.ct}))()}Ft(){var t=this;return se((function*(){var e;t.Et();var n=(e=t._instance.getPersistedProperty(jt.LogsQueue))!==null&&e!==void 0?e:[];if(n.length!==0)for(var i=n.length,r=0;n.length>0&&i>r;){var s,o;t.ft=0;var a=Math.min(n.length,t.Ct),l=n.slice(0,a),u=Nd(l.map((d=>d.record)),t.Lt(),(s=t.vt)!==null&&s!==void 0?s:t._instance.getLibraryId(),t._instance.getLibraryVersion()),c=yield t._instance.Ot(u);if(c.kind==="too-large"&&l.length>1)t.Ct=Math.max(1,Math.floor(l.length/2)),t.rt.warn("Received 413 when sending logs batch of size "+l.length+", reducing batch size to "+t.Ct);else if(c.kind==="retry-later"||(c.kind==="too-large"?t.rt.warn("Dropping a single log record after 413 with batch size 1 — the record is larger than the server cap and cannot be split further."):c.kind==="ok"&&t.Ne.maxBatchRecordsPerPost>t.Ct&&(t.Ct=Math.min(t.Ne.maxBatchRecordsPerPost,t.Ct+1)),yield t.Dt(l.length),n=(o=t._instance.getPersistedProperty(jt.LogsQueue))!==null&&o!==void 0?o:[],r+=l.length,c.kind==="fatal"))throw c.error}}))()}Dt(t){var e=this;return se((function*(){var n,i=Math.max(0,t-e.ft),r=(n=e._instance.getPersistedProperty(jt.LogsQueue))!==null&&n!==void 0?n:[];e._instance.setPersistedProperty(jt.LogsQueue,r.slice(i)),yield e.dt()}))()}Lt(){return Ld(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion())}At(t){var e;if(!this._instance.optedOut){var n=(e=this._instance.getPersistedProperty(jt.LogsQueue))!==null&&e!==void 0?e:[];this.xt>n.length||(n.shift(),this.ft++,this.rt.info("Logs queue is full, dropping oldest record.")),n.push(t),this._instance.setPersistedProperty(jt.LogsQueue,n),this.kt>n.length?this.$t():this.It()}}$t(t){t===void 0&&(t=this.St),this.Nt||(this.Nt=il((()=>{this.Nt=void 0,this.It()}),t))}qt(){var t=Math.min(Math.max(0,this.yt-1),6);return this.St*Math.pow(2,t)}jt(){var t=this._instance.getPersistedProperty(jt.LogsQueue);return!!t&&t.length>0}shutdown(t){var e=this;return se((function*(){e.Et();var n=e.flush().catch((()=>{}));t!==void 0?yield bc(n,t):yield n}))()}flushWithTimeout(t){var e=this;return se((function*(){var n=e.flush();yield bc(n,t,(()=>{n.catch((()=>{}))}))}))()}It(){this.flush().then((()=>{this.yt=0}),(t=>{this.yt++,this.rt.error("PostHog logs flush failed:",t)})).finally((()=>{!this._instance.isDisabled&&this.jt()&&this.$t(this.qt())}))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}};var ho=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function Ec(t){return String(t)+"000000"}function Sc(t,e,n,i){var r="";return i&&(r=Object.keys(i).sort().map((s=>JSON.stringify(s)+":"+JSON.stringify(i[s]))).join(",")),t+"\0"+e+"\0"+(n??"")+"\0"+r}let Xp=class{constructor(t,e,n){this._instance=t,this.Ne=e,this.rt=n,this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Wt=0}count(t,e,n){e===void 0&&(e=1),this.Vt({name:t,type:"count",value:e,unit:n?.unit,attributes:n?.attributes})}gauge(t,e,n){this.Vt({name:t,type:"gauge",value:e,unit:n?.unit,attributes:n?.attributes})}histogram(t,e,n){this.Vt({name:t,type:"histogram",value:e,unit:n?.unit,attributes:n?.attributes})}flush(){var t=this,e=this.ct,n=(function(){var r=se((function*(){e&&(yield e.catch((()=>{}))),yield t.Zt()}));return function(){return r.apply(this,arguments)}})(),i=n().finally((()=>{this.ct===i&&(this.ct=null)}));return this.ct=i,i}drainWindow(){if(this.Bt.size===0)return null;var t=this.Bt;return this.Bt=new Map,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Gt(t)}reset(){this.Wt++,this.Et(),this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set}Vt(t){if(!this._instance.isDisabled&&!this._instance.optedOut){var e=this.Pt(t);if(e!==null)if(e.name&&typeof e.name=="string")if(typeof e.value=="number"&&Number.isFinite(e.value))if(e.type==="count"&&0>e.value)this.rt.warn("Dropping count '"+e.name+"': counters are monotonic, value must be >= 0");else{var n,i;try{n=e.attributes?k({},e.attributes):void 0,i=Sc(e.type,e.name,e.unit,n)}catch(o){return void this.rt.warn("Dropping metric '"+e.name+"': attributes could not be serialized",o)}var r=this.Bt.get(i);if(!r){if(!this.Qt())return;r={name:e.name,type:e.type,unit:e.unit,attributes:n,windowStartMs:Date.now()},this.Bt.set(i,r)}var s=this.Ut.get(e.name);s===void 0?this.Ut.set(e.name,e.type):s===e.type||this.zt.has(e.name)||(this.zt.add(e.name),this.rt.warn("Metric name '"+e.name+"' is already used as a "+s+"; recording it as a "+e.type+" too will blend both series in charts. Use a distinct name.")),this.Kt(r,e.value),this.$t()}else this.rt.warn("Dropping metric '"+e.name+"': value must be a finite number");else this.rt.warn("Dropping metric with empty name")}}Qt(){return this.Ne.maxSeriesPerFlush>this.Bt.size||(this.Ht||(this.Ht=!0,this.rt.warn("Metric series cap reached ("+this.Ne.maxSeriesPerFlush+" per flush window); dropping new series until the next flush. Reduce attribute cardinality.")),!1)}Kt(t,e){var n;switch(t.type){case"count":t.total=((n=t.total)!==null&&n!==void 0?n:0)+e;break;case"gauge":t.last=e;break;case"histogram":t.hist||(t.hist={count:0,sum:0,min:e,max:e,bucketCounts:new Array(ho.length+1).fill(0)});var i=t.hist;i.count+=1,i.sum+=e,i.min=Math.min(i.min,e),i.max=Math.max(i.max,e),i.bucketCounts[(function(r,s){for(var o=0;s.length>o;o++)if(s[o]>=r)return o;return s.length})(e,ho)]+=1}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=U(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Metric was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for metric:",o),null}return i}$t(){this.Nt||(this.Nt=il((()=>{this.Nt=void 0,this.flush().catch((t=>{this.rt.error("Metrics flush failed:",t)}))}),this.Ne.flushIntervalMs))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}Zt(){var t=this;return se((function*(){if(t.Bt.size!==0){var e=t.Bt;t.Bt=new Map,t.Ht=!1,t.Ut=new Map,t.zt=new Set;var n=t.Wt,i=yield t._instance.Jt(t.Gt(e));if(n===t.Wt)switch(i.kind){case"ok":return;case"retry-later":return t.Yt(e),void t.$t();case"too-large":return void t.rt.warn("Metrics batch exceeded the server size limit and was dropped");case"fatal":return void t.rt.error("Failed to send metrics batch:",i.error)}}}))()}Gt(t){return e=this.Xt(t),n=(function(s,o,a){return k({},s.resourceAttributes,{"service.name":s.serviceName||"unknown_service"},s.environment&&{"deployment.environment":s.environment},s.serviceVersion&&{"service.version":s.serviceVersion},{"telemetry.sdk.name":o,"telemetry.sdk.version":a})})(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion()),i=this._instance.getLibraryId(),r=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:zr(n)},scopeMetrics:[{scope:{name:i,version:r},metrics:e}]}]};var e,n,i,r}Xt(t){var e=Ec(Date.now()),n=new Map;for(var i of t.values()){var r,s=Sc(i.type,i.name,i.unit,void 0),o=n.get(s);o||(o=k({name:i.name},i.unit&&{unit:i.unit}),i.type==="count"?o.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?o.gauge={dataPoints:[]}:o.histogram={aggregationTemporality:1,dataPoints:[]},n.set(s,o));var a=zr((r=i.attributes)!==null&&r!==void 0?r:{}),l=Ec(i.windowStartMs);if(i.type==="count"){var u,c={attributes:a,startTimeUnixNano:l,timeUnixNano:e,asDouble:(u=i.total)!==null&&u!==void 0?u:0};o.sum.dataPoints.push(c)}else if(i.type==="gauge"){var d,f={attributes:a,timeUnixNano:e,asDouble:(d=i.last)!==null&&d!==void 0?d:0};o.gauge.dataPoints.push(f)}else i.hist&&o.histogram.dataPoints.push({attributes:a,startTimeUnixNano:l,timeUnixNano:e,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:ho})}return Array.from(n.values())}Yt(t){var e,n;for(var i of t){var r=i[0],s=i[1],o=this.Bt.get(r);if(o)switch(o.windowStartMs=Math.min(o.windowStartMs,s.windowStartMs),o.type){case"count":o.total=((e=o.total)!==null&&e!==void 0?e:0)+((n=s.total)!==null&&n!==void 0?n:0);break;case"gauge":break;case"histogram":if(s.hist)if(o.hist){o.hist.count+=s.hist.count,o.hist.sum+=s.hist.sum,o.hist.min=Math.min(o.hist.min,s.hist.min),o.hist.max=Math.max(o.hist.max,s.hist.max);for(var a=0;o.hist.bucketCounts.length>a;a++)o.hist.bucketCounts[a]+=s.hist.bucketCounts[a]}else o.hist=s.hist}else this.Qt()&&this.Bt.set(r,s)}}};var fr,xc,po;function Qp(t){var e=globalThis._posthogChunkIds;if(e){var n=Object.keys(e);return po&&n.length===xc||(xc=n.length,po=n.reduce(((i,r)=>{fr||(fr={});var s=fr[r];if(s)i[s[0]]=s[1];else for(var o=t(r),a=o.length-1;a>=0;a--){var l=o[a],u=l?.filename,c=e[r];if(u&&c){i[u]=c,fr[r]=[u,c];break}}return i}),{})),po}}class eg{constructor(e,n,i){i===void 0&&(i=[]),this.coercers=e,this.stackParser=n,this.modifiers=i}buildFromUnknown(e,n){n===void 0&&(n={});var i=n&&n.mechanism||{handled:!0,type:"generic"},r=this.buildCoercingContext(i,n,0).apply(e),s=this.buildParsingContext(n),o=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(o,i),$exception_level:"error"}}modifyFrames(e){var n=this;return se((function*(){for(var i of e)i.stacktrace&&i.stacktrace.frames&&U(i.stacktrace.frames)&&(i.stacktrace.frames=yield n.applyModifiers(i.stacktrace.frames));return e}))()}coerceFallback(e){var n;return{type:"Error",value:"Unknown error",stack:(n=e.syntheticException)==null?void 0:n.stack,synthetic:!0}}parseStacktrace(e,n){var i,r;return e.cause!=null&&(i=this.parseStacktrace(e.cause,n)),e.stack!=""&&e.stack!=null&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?n.skipFirstLines:0),n.chunkIdMap)),k({},e,{cause:i,stack:r})}applyChunkIds(e,n){return e.map((i=>(i.filename&&n&&(i.chunk_id=n[i.filename]),i)))}applyCoercers(e,n){for(var i of this.coercers)if(i.match(e))return i.coerce(e,n);return this.coerceFallback(n)}applyModifiers(e){var n=this;return se((function*(){var i=e;for(var r of n.modifiers)i=yield r(i);return i}))()}convertToExceptionList(e,n){var i,r,s,o={type:e.type,value:e.value,mechanism:{type:(i=n.type)!==null&&i!==void 0?i:"generic",handled:(r=n.handled)===null||r===void 0||r,synthetic:(s=e.synthetic)!==null&&s!==void 0&&s}};e.stack&&(o.stacktrace={type:"raw",frames:e.stack});var a=[o];return e.cause!=null&&a.push(...this.convertToExceptionList(e.cause,k({},n,{handled:!0}))),a}buildParsingContext(e){var n;return{chunkIdMap:Qp(this.stackParser),skipFirstLines:(n=e.skipFirstLines)!==null&&n!==void 0?n:1}}buildCoercingContext(e,n,i){i===void 0&&(i=0);var r=(s,o)=>{if(4>=o){var a=this.buildCoercingContext(e,n,o);return this.applyCoercers(s,a)}};return k({},n,{syntheticException:i==0?n.syntheticException:void 0,mechanism:e,apply:s=>r(s,i),next:s=>r(s,i+1)})}}var ti="?";function Qo(t,e,n,i,r){var s={platform:t,filename:e,function:n===""?ti:n,in_app:!0};return C(i)||(s.lineno=i),C(r)||(s.colno=r),s}var Od=(t,e)=>{var n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:ti,n?"safari-extension:"+e:"safari-web-extension:"+e]:[t,e]},tg=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,ng=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ig=/\((\S*)(?::(\d+))(?::(\d+))\)/,rg=(t,e)=>{var n=tg.exec(t);if(n)return Qo(e,n[1],ti,+n[2],+n[3]);var i=ng.exec(t);if(i){if(i[2]&&i[2].indexOf("eval")===0){var r=ig.exec(i[2]);r&&(i[2]=r[1],i[3]=r[2],i[4]=r[3])}var s=Od(i[1]||ti,i[2]);return Qo(e,s[1],s[0],i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},sg=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,og=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ag=(t,e)=>{var n=sg.exec(t);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var i=og.exec(n[3]);i&&(n[1]=n[1]||"eval",n[3]=i[1],n[4]=i[2],n[5]="")}var r=n[3],s=n[1]||ti,o=Od(s,r);return Qo(e,r=o[1],s=o[0],n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}},Ic=/\(error: (.*)\)/;class lg{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,n){var i=X(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:i?e.stack:void 0,cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var n=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?n+": "+e.message:n}isDOMException(e){return Dr(e,"DOMException")}isDOMError(e){return Dr(e,"DOMError")}}class cg{match(e){return(function(n){switch({}.toString.call(n)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object DOMError]":case"[object WebAssembly.Exception]":return!0;default:return dd(n,Error)}})(e)}coerce(e,n){return{type:this.getType(e),value:this.getMessage(e,n),stack:this.getStack(e),cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,n){var i=e.message;return String(i.error&&typeof i.error.message=="string"?i.error.message:i)}getStack(e){return e.stacktrace||e.stack||void 0}}class ug{constructor(){}match(e){return!!Dr(e,"ErrorEvent")&&(e.error!=null||this.fe(e))}coerce(e,n){var i;if(e.error!=null)return n.apply(e.error);var r=n.apply(e.message);return k({},r,{stack:(i=this.pe(e))!==null&&i!==void 0?i:r.stack,synthetic:!0})}fe(e){return X(e.message)&&e.message.length>0}pe(e){var n=e;if(X(n.filename)&&n.filename.length>0){var i,r,s=(i=n.lineno)!==null&&i!==void 0?i:0,o=(r=n.colno)!==null&&r!==void 0?r:0;return`Error - at `+n.filename+":"+s+":"+o}}}var dg=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class fg{match(e){return typeof e=="string"}coerce(e,n){var i,r=this.getInfos(e),s=r[0],o=r[1];return{type:s??"Error",value:o??e,stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}getInfos(e){var n="Error",i=e,r=e.match(dg);return r&&(n=r[1],i=r[2]),[n,i]}}var hg=["fatal","error","warning","log","info","debug"];function Bd(t,e){e===void 0&&(e=40);var n=Object.keys(t);if(n.sort(),!n.length)return"[object has no keys]";for(var i=n.length;i>0;i--){var r=n.slice(0,i).join(", ");if(e>=r.length)return i===n.length?r:r.length>e?r.slice(0,e)+"...":r}return""}class pg{match(e){return typeof e=="object"&&e!==null}coerce(e,n){var i,r,s=this.getErrorPropertyFromObject(e);return s?n.apply(s):{type:this.getType(e),value:this.getValue(e),stack:(i=this.getStack(e))!==null&&i!==void 0?i:(r=n.syntheticException)==null?void 0:r.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return Xa(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var n="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(n+=" with message: '"+e.message+"'"),n}if("message"in e&&typeof e.message=="string")return e.message;var i=this.getObjectClassName(e);return(i&&i!=="Object"?"'"+i+"'":"Object")+" captured as exception with keys: "+Bd(e)}isSeverityLevel(e){return X(e)&&!Ko(e)&&hg.indexOf(e)>=0}getStack(e){try{return X(e.stacktrace)&&e.stacktrace.length>0?e.stacktrace:X(e.stack)&&e.stack.length>0?e.stack:void 0}catch{return}}getErrorPropertyFromObject(e){for(var n in e)if({}.hasOwnProperty.call(e,n)){var i=e[n];if(Kp(i))return i}}getObjectClassName(e){try{var n=Object.getPrototypeOf(e);return n?n.constructor.name:void 0}catch{return}}}class gg{match(e){return Xa(e)}coerce(e,n){var i,r=e.constructor.name;return{type:r,value:r+" captured as exception with keys: "+Bd(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class mg{match(e){return ud(e)}coerce(e,n){var i;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class vg{match(e){return Dr(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!Xa(e))return!1;try{var n=e.detail;return n!=null&&typeof n=="object"&&"reason"in n}catch{return!1}}coerce(e,n){var i,r=this.getUnhandledRejectionReason(e);return ud(r)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(r),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}:n.apply(r)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var qr="$message",Vr="$timestamp",_g=new Set([qr,Vr]),go={enabled:!0,max_bytes:32768};function Gr(t){var e;return t?{enabled:(e=t.enabled)!==null&&e!==void 0?e:go.enabled,max_bytes:wg(t.max_bytes,go.max_bytes)}:k({},go)}class yg{constructor(e){this.Ke=[],this.Je=0,this.Ne=Gr(e)}setConfig(e){this.Ne=Gr(e),this.Xe()}add(e){var n=(function(r){var s;try{s=ad(r)}catch{return}try{var o=JSON.parse(s);if(!he(o))return;var a=o,l=a[qr],u=a[Vr];return!X(l)||l.trim().length===0||!X(u)&&!ke(u)?void 0:{step:a,json:s}}catch{return}})(e);if(n){var i=(function(r){if(typeof TextEncoder<"u")return new TextEncoder().encode(r).length;for(var s=encodeURIComponent(r),o=0,a=0;s.length>a;a++)s[a]==="%"?(o+=1,a+=2):o+=1;return o})(n.json);i>this.Ne.max_bytes||(this.Ke.push({step:n.step,bytes:i}),this.Je+=i,this.Xe())}}getAttachable(){return this.Ke.map((e=>e.step))}clear(){this.Ke=[],this.Je=0}size(){return this.Ke.length}Xe(){for(;this.Je>this.Ne.max_bytes&&this.Ke.length>0;){var e=this.Ke.shift();e&&(this.Je-=e.bytes)}}}function wg(t,e){if(!ke(t)||t===1/0||t===-1/0)return e;var n=Math.floor(t);return 0>n?e:n}var Dd=function(t,e){var n=(e===void 0?{}:e).debugEnabled,i={k(r){if(w&&(ne.DEBUG||w.POSTHOG_DEBUG||n)&&!C(w.console)&&w.console){for(var s=("__rrweb_original__"in w.console[r])?w.console[r].__rrweb_original__:w.console[r],o=arguments.length,a=new Array(o>1?o-1:0),l=1;o>l;l++)a[l-1]=arguments[l];s(t,...a)}},debug(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("debug",...s)},info(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("log",...s)},warn(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("warn",...s)},error(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("error",...s)},critical(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];console.error(t,...s)},uninitializedWarning(r){i.error("You must initialize PostHog before calling "+r)},createLogger:(r,s)=>Dd(t+" "+r,s)};return i},A=Dd("[PostHog.js]"),pe=A.createLogger,bg=pe("[ExternalScriptsLoader]"),mo=(t,e,n)=>{if(t.config.disable_external_dependency_loading)return bg.warn(e+" was requested but loading of external scripts is disabled."),n("Loading of external scripts is disabled");var i=F?.querySelectorAll("script");if(i){for(var r,s=function(){if(i[o].src===e){var l=i[o];return l.__posthog_loading_callback_fired?{v:n()}:(l.addEventListener("load",(u=>{l.__posthog_loading_callback_fired=!0,n(void 0,u)})),l.onerror=u=>n(u),{v:void 0})}},o=0;i.length>o;o++)if(r=s())return r.v}var a=()=>{if(!F)return n("document not found");var l=F.createElement("script");if(l.type="text/javascript",l.crossOrigin="anonymous",l.src=e,l.onload=d=>{l.__posthog_loading_callback_fired=!0,n(void 0,d)},l.onerror=d=>n(d),t.config.prepare_external_dependency_script&&(l=t.config.prepare_external_dependency_script(l)),!l)return n("prepare_external_dependency_script returned null");if(t.config.external_scripts_inject_target==="head")F.head.appendChild(l);else{var u,c=F.querySelectorAll("body > script");c.length>0?(u=c[0].parentNode)==null||u.insertBefore(l,c[0]):F.body.appendChild(l)}};F!=null&&F.body?a():F?.addEventListener("DOMContentLoaded",a)};B.__PosthogExtensions__=B.__PosthogExtensions__||{},B.__PosthogExtensions__.loadExternalDependency=(t,e,n)=>{if(e!=="remote-config"){var i;if(t.config.strict_script_versioning)i=t.requestRouter.endpointFor("assets","/static/"+t.version+"/"+e+".js");else{var r="/static/"+e+".js?v="+t.version;if(e==="toolbar"){var s=3e5;r=r+"&t="+Math.floor(Date.now()/s)*s}i=t.requestRouter.endpointFor("assets",r)}mo(t,i,n)}else{var o=t.requestRouter.endpointFor("assets","/array/"+t.config.token+"/config.js");mo(t,o,n)}},B.__PosthogExtensions__.loadSiteApp=(t,e,n)=>{var i=t.requestRouter.endpointFor("api",e);mo(t,i,n)};ne.DEBUG=!1,ne.LIB_VERSION="1.415.7",ne.LIB_NAME="web";var jd="$people_distinct_id",Ki="$device_id",vo="$device_model",Pi="__alias",Fi="__timers",ea="$autocapture_disabled_server_side",ta="$heatmaps_enabled_server_side",na="$exception_capture_enabled_server_side",ia="$error_tracking_suppression_rules",ra="$error_tracking_capture_extension_exceptions",sa="$web_vitals_enabled_server_side",rl="$dead_clicks_enabled_server_side",sl="$product_tours_enabled_server_side",oa="$web_vitals_allowed_metrics",Cn="$session_recording_remote_config",Ud="$replay_sample_rate",Hd="$replay_override_sampling",Wd="$replay_override_linked_flag",zd="$replay_override_url_trigger",qd="$replay_override_event_trigger",Gn="$sesid",ol="$session_is_sampled",En="$enabled_feature_flags",Ri="$active_feature_flags",Ir="$early_access_features",aa="$feature_flag_details",Ti="$feature_flag_payloads",kr="$feature_flag_request_id",Kr="$minimal_flag_called_events",xt="$override_feature_flags",Sn="$override_feature_flag_payloads",Dt="$stored_person_properties",xn="$stored_group_properties",la="$surveys",Yr="$surveys_loaded_at",ca="$surveys_activated",Cr="$surveys_activated_session",Ar="$surveys_activated_timestamps",$i="ph_product_tours",kn="$flag_call_reported",Mi="$flag_call_reported_session_id",Pr="$feature_flag_errors",Di="$feature_flag_evaluated_at",ot="$user_state",ua="$client_session_props",da="$capture_rate_limit",fa="$initial_campaign_params",ha="$initial_referrer_info",Jr="$initial_person_info",Zr="$epp",hr="$posthog_cookieless",Vd="$cookieless_mode",Gd="$sdk_debug_extensions_init_method",Kd="$sdk_debug_extensions_init_time_ms",Yd="$sdk_debug_recording_script_not_loaded",al="PostHog loadExternalDependency extension not found.",In="on_reject",Ht="always",jn="anonymous",mn="identified",pa="identified_only",Xr="visibilitychange",Qr="beforeunload",qn="$pageview",_o="$pageleave",yo="$identify",kc="$groupidentify";function pr(t,e){U(t)&&t.forEach(e)}function ie(t,e){if(!H(t))if(U(t))t.forEach(e);else if(Tp(t))t.forEach(((i,r)=>e(i,r)));else for(var n in t)cd.call(t,n)&&e(t[n],n)}var fe=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;e>i;i++)n[i-1]=arguments[i];for(var r of n)for(var s in r)r[s]!==void 0&&(t[s]=r[s]);return t};function Fr(t){for(var e=Object.keys(t),n=e.length,i=new Array(n);n--;)i[n]=[e[n],t[e[n]]];return i}var Cc=function(t){try{return t()}catch{return}},Eg=function(t){return function(){try{for(var e=arguments.length,n=new Array(e),i=0;e>i;i++)n[i]=arguments[i];return t.apply(this,n)}catch(r){A.critical("Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A."),A.critical(r)}}},ll=function(t){var e={};return ie(t,(function(n,i){(X(n)&&n.length>0||ke(n))&&(e[i]=n)})),e},Sg=["herokuapp.com","vercel.app","netlify.app"];function xg(t){var e=t?.hostname;if(!X(e))return!1;var n=e.split(".").slice(-2).join(".");for(var i of Sg)if(n===i)return!1;return!0}function ve(t,e,n,i){var r=i??{},s=r.capture,o=r.passive;t?.addEventListener(e,n,{capture:s!==void 0&&s,passive:o===void 0||o})}function ga(t){return t.name==="ph_toolbar_internal"}var Jd=t=>{if(F){try{for(var e=t+"=",n=F.cookie.split(";").filter((s=>s.length)),i=0;n.length>i;i++){for(var r=n[i];r.charAt(0)==" ";)r=r.substring(1,r.length);if(r.indexOf(e)===0)return decodeURIComponent(r.substring(e.length,r.length))}}catch{}return null}};Math.trunc||(Math.trunc=function(t){return 0>t?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return ke(t)&&isFinite(t)&&Math.floor(t)===t});class es{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,n,i,r){if(!Number.isInteger(e)||!Number.isInteger(n)||!Number.isInteger(i)||!Number.isInteger(r)||0>e||0>n||0>i||0>r||e>0xffffffffffff||n>4095||i>1073741823||r>4294967295)throw new RangeError("invalid field value");var s=new Uint8Array(16);return s[0]=e/Math.pow(2,40),s[1]=e/Math.pow(2,32),s[2]=e/Math.pow(2,24),s[3]=e/Math.pow(2,16),s[4]=e/256,s[5]=e,s[6]=112|n>>>8,s[7]=n,s[8]=128|i>>>24,s[9]=i>>>16,s[10]=i>>>8,s[11]=i,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new es(s)}toString(){for(var e="",n=0;this.bytes.length>n;n++)e=e+(this.bytes[n]>>>4).toString(16)+(15&this.bytes[n]).toString(16),n!==3&&n!==5&&n!==7&&n!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new es(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var n=0;16>n;n++){var i=this.bytes[n]-e.bytes[n];if(i!==0)return Math.sign(i)}return 0}}class Ig{generate(){var e=this.generateOrAbort();if(!C(e))return e;this.S=0;var n=this.generateOrAbort();if(C(n))throw new Error("Could not generate UUID after timestamp reset");return n}generateOrAbort(){var e=Date.now();if(e>this.S)this.S=e,this.C();else{if(this.S>=e+1e4)return;this.I++,this.I>4398046511103&&(this.S++,this.C())}return es.fromFieldsV7(this.S,Math.trunc(this.I/Math.pow(2,30)),this.I&Math.pow(2,30)-1,this.A.nextUint32())}C(){this.I=1024*this.A.nextUint32()+(1023&this.A.nextUint32())}constructor(){this.S=0,this.I=0,this.A=new kg}}var Ac,Zd=t=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;t.length>e;e++)t[e]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};w&&!C(w.crypto)&&crypto.getRandomValues&&(Zd=t=>crypto.getRandomValues(t));class kg{nextUint32(){return this.R.length>this.O||(Zd(this.R),this.O=0),this.R[this.O++]}constructor(){this.R=new Uint32Array(8),this.O=1/0}}var Ut=()=>Cg().toString(),Cg=()=>(Ac||(Ac=new Ig)).generate(),_i="",Ag=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i,Wt={N:()=>!!F,j(t){A.error("cookieStore error: "+t)},P:Jd,H(t){var e;try{e=JSON.parse(Wt.P(t))||{}}catch{}return e},F(t,e,n,i,r){if(!F)return!1;try{var s="",o="",a=(function(c,d){if(d){var f=(function(p,g){if(g===void 0&&(g=F),_i)return _i;if(!g||["localhost","127.0.0.1"].includes(p))return"";for(var m=p.split("."),v=Math.min(m.length,8),S="dmn_chk_"+Ut();!_i&&v--;){var b=m.slice(v).join("."),_=S+"=1;domain=."+b+";path=/";g.cookie=_+";max-age=3",g.cookie.includes(S)&&(g.cookie=_+";max-age=0",_i=b)}return _i})(c);if(!f){var h=(p=>{var g=p.match(Ag);return g?g[0]:""})(c);h!==f&&A.info("Warning: cookie subdomain discovery mismatch",h,f),f=h}return f?"; domain=."+f:""}return""})(F.location.hostname,i);if(n){var l=new Date;l.setTime(l.getTime()+864e5*n),s="; expires="+l.toUTCString()}r&&(o="; secure");var u=t+"="+encodeURIComponent(JSON.stringify(e))+s+"; SameSite=Lax; path=/"+a+o;return u.length>3686.4&&A.warn("cookieStore warning: large cookie, len="+u.length),F.cookie=u,!0}catch{return!1}},q(t,e){if(F!=null&&F.cookie)try{Wt.F(t,"",-1,e)}catch{return}}},wo=null,le={N(){if(!Ve(wo))return wo;var t=!0;if(C(w))t=!1;else try{var e="__mplssupport__";le.F(e,"xyz"),le.P(e)!=='"xyz"'&&(t=!1),le.q(e)}catch{t=!1}return t||A.error("localStorage unsupported; falling back to cookie store"),wo=t,t},j(t){A.error("localStorage error: "+t)},P(t){try{return w?.localStorage.getItem(t)}catch(e){le.j(e)}return null},H(t){try{return JSON.parse(le.P(t))||{}}catch{}return null},F(t,e){try{return w?.localStorage.setItem(t,JSON.stringify(e)),!0}catch(n){le.j(n)}return!1},q(t){try{w?.localStorage.removeItem(t)}catch(e){le.j(e)}}},Pg=[Ki,"distinct_id",Gn,ol,Zr,Jr,ot],gr={},Fg={N:()=>!0,j(t){A.error("memoryStorage error: "+t)},P:t=>gr[t]||null,H:t=>gr[t]||null,F:(t,e)=>(gr[t]=e,!0),q(t){delete gr[t]}},vn=null,be={N(){if(!Ve(vn))return vn;if(vn=!0,C(w))vn=!1;else try{var t="__support__";be.F(t,"xyz"),be.P(t)!=='"xyz"'&&(vn=!1),be.q(t)}catch{vn=!1}return vn},j(t){A.error("sessionStorage error: ",t)},P(t){try{return w?.sessionStorage.getItem(t)}catch(e){be.j(e)}return null},H(t){try{return JSON.parse(be.P(t))||null}catch{}return null},F(t,e){try{return w?.sessionStorage.setItem(t,JSON.stringify(e)),!0}catch(n){be.j(n)}return!1},q(t){try{w?.sessionStorage.removeItem(t)}catch(e){be.j(e)}}};class Rg{constructor(e){this._instance=e}get Ne(){return this._instance.config}get consent(){return this.ti()?0:this.ei}isOptedOut(){return this.Ne.cookieless_mode===Ht||this.isRejected()||this.consent===-1&&this.Ne.cookieless_mode===In}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===0}isRejected(){return this.consent===0||this.consent===-1&&this.Ne.opt_out_capturing_by_default}optInOut(e){this.ii.F(this.ri,e?1:0,this.Ne.cookie_expiration,this.Ne.cross_subdomain_cookie,this.Ne.secure_cookie)}reset(){this.ii.q(this.ri,this.Ne.cross_subdomain_cookie)}get ri(){var e=this._instance.config,n=e.token,i=e.opt_out_capturing_cookie_prefix;return e.consent_persistence_name||(i?i+n:"__ph_opt_in_out_"+n)}get ei(){var e=this.ii.P(this.ri);return uo(e)?1:j(Np,e)?0:-1}get ii(){var e=this.Ne.opt_out_capturing_persistence_type,n=e==="localStorage"?le:Wt;if(!this.ni||this.ni!==n){this.ni=n;var i=e==="localStorage"?Wt:le;i.P(this.ri)&&(this.ni.P(this.ri)||this.optInOut(uo(i.P(this.ri))),i.q(this.ri,this.Ne.cross_subdomain_cookie))}return this.ni}ti(){return!!this.Ne.respect_dnt&&[Ue?.doNotTrack,Ue?.msDoNotTrack,B.doNotTrack].some((e=>uo(e)))}}function Xd(t,e){var n,i=t==null||(n=t.config)==null?void 0:n.get_current_url;if(!De(i))return e;try{var r=i(e);return X(r)&&r?r:e}catch(s){return A.error("Error in get_current_url, falling back to window.location.href",s),e}}var Qd="__POSTHOG_TOOLBAR__",Tg=1,$g=3,Mg=11;function Pc(t){return t instanceof Element&&(t.id===Qd||!(t.closest==null||!t.closest(".toolbar-global-fade-container")))}function fn(t){return!!t&&t.nodeType===Tg}function Qe(t,e){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===e.toLowerCase()}function ef(t){return!!t&&t.nodeType===$g}function tf(t){return!!t&&t.nodeType===Mg&&fn(t.host)}var nf=1e3;function cl(t){return t?Ss(t).split(/\s+/):[]}function Fc(t,e){var n=(function(i){var r,s=w==null||(r=w.location)==null?void 0:r.href;return C(s)?void 0:Xd(i,s)})(e);return!!(n&&t&&t.some((i=>n.match(i))))}function ts(t){var e="";switch(typeof t.className){case"string":e=t.className;break;case"object":e=(t.className&&"baseVal"in t.className?t.className.baseVal:null)||t.getAttribute("class")||"";break;default:e=""}return cl(e)}function rf(t){return H(t)?null:Ss(t).split(/(\s+)/).filter((e=>ji(e))).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function Yi(t){var e="";return va(t)&&!lf(t)&&t.childNodes&&t.childNodes.length&&ie(t.childNodes,(function(n){var i;ef(n)&&n.textContent&&(e+=(i=rf(n.textContent))!==null&&i!==void 0?i:"")})),Ss(e)}function bo(t){var e;return C(t.target)?t.srcElement||null:(e=t.target)!=null&&e.shadowRoot?t.composedPath()[0]||null:t.target||null}var ul=["a","button","form","input","select","textarea","label"];function ma(t,e){if(C(e))return!0;var n,i=function(s){if(e.some((o=>(function(a,l){var u=a.matches||a.matchesSelector||a.msMatchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.oMatchesSelector;try{return!!u&&u.call(a,l)}catch{return!1}})(s,o))))return{v:!0}};for(var r of t)if(n=i(r))return n.v;return!1}function sf(t){var e=t.parentNode;return!(!e||!fn(e))&&e}var Lg=[".ph-no-autocapture","[data-ph-no-autocapture]"],of=["next","previous","prev",">","<"],Ng=[...of,"+","-","−","–"],Rc=(t,e)=>/[a-z0-9]/i.test(e)?t.includes(e):t===e,Tc=[".ph-no-rageclick",".ph-no-capture"],Og=["","text","search","email","password","url","tel","number"];function $c(t,e){if(!w||dl(t))return!1;var n,i,r,s,o;if(gt(e)?(n=!!e&&Tc,i=void 0,r=!1):(n=(s=e?.css_selector_ignorelist)!==null&&s!==void 0?s:Tc,i=e?.content_ignorelist,r=(o=e?.ignore_text_selection)!==null&&o!==void 0&&o),n===!1||r&&(function(l){return!(!l||!fn(l))&&(!!Qe(l,"textarea")||(Qe(l,"input")?j(Og,(l.getAttribute("type")||"").toLowerCase()):(function(u){if(u.isContentEditable)return!0;var c=u.getAttribute==null?void 0:u.getAttribute("contenteditable");return c==="true"||c===""})(l)))})(t))return!1;var a=af(t,!1).targetElementList;return!(function(l,u){if(l===!1||C(l))return!1;var c;if(l===!0)c=of;else{if(!U(l))return!1;if(l.length>10)return A.error("[PostHog] content_ignorelist array cannot exceed 10 items. Use css_selector_ignorelist for more complex matching."),!1;c=l.map((d=>d.toLowerCase()))}return u.some((d=>{var f=d.safeText,h=d.ariaLabel;return c.some((p=>Rc(f,p)||Rc(h,p)))}))})(i,a.map((l=>{var u;return{safeText:Yi(l).toLowerCase(),ariaLabel:((u=l.getAttribute("aria-label"))==null?void 0:u.toLowerCase().trim())||""}})))&&!ma(a,n)}var dl=t=>!t||Qe(t,"html")||!fn(t),af=(t,e)=>{if(!w||dl(t))return{parentIsUsefulElement:!1,targetElementList:[]};for(var n=!1,i=[t],r=t;r.parentNode&&!Qe(r,"body");)if(tf(r.parentNode))i.push(r.parentNode.host),r=r.parentNode.host;else{var s=sf(r);if(!s)break;if(e||ul.indexOf(s.tagName.toLowerCase())>-1)n=!0;else try{var o=w.getComputedStyle(s);o&&o.getPropertyValue("cursor")==="pointer"&&(n=!0)}catch{}i.push(s),r=s}return{parentIsUsefulElement:n,targetElementList:i}};function va(t){for(var e=new Set,n=0,i=t;i.parentNode&&!Qe(i,"body");i=i.parentNode){if(n++>=nf||e.has(i))return!1;e.add(i);var r=ts(i);if(j(r,"ph-sensitive")||j(r,"ph-no-capture"))return!1}if(j(ts(t),"ph-include"))return!0;var s=t.type||"";if(X(s))switch(s.toLowerCase()){case"hidden":case"password":return!1}var o=t.name||t.id||"";return!X(o)||!/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(o.replace(/[^a-zA-Z0-9]/g,""))}function lf(t){return!!(Qe(t,"input")&&!["button","checkbox","submit","reset"].includes(t.type)||Qe(t,"select")||Qe(t,"textarea")||t.getAttribute("contenteditable")==="true")}var Mc=new RegExp("^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$"),Lc=/(^|[^0-9A-Za-z_])([0-9][0-9 -]*[0-9])(?=$|[^0-9A-Za-z_])/g,Bg=[16,15,14,13],Dg=new RegExp("^(\\d{3}-?\\d{2}-?\\d{4})$"),Nc=new RegExp("(^|[^0-9])((?!000|666)[0-9]{3}-?(?!00)[0-9]{2}-?(?!0000)[0-9]{4})(?=$|([^0-9]))","g"),Oc=/[0-9A-Za-z_]/;function jg(t){for(var e=0,n=!1,i=t.length-1;i>=0;i--){var r=t.charCodeAt(i)-48;n&&(r*=2)>9&&(r-=9),e+=r,n=!n}return e%10==0}function ji(t,e){if(e===void 0&&(e=!0),H(t))return!1;if(X(t)){t=Ss(t);var n=e?Mc.test((t||"").replace(/[- ]/g,"")):(function(r){var s;for(Lc.lastIndex=0;s=Lc.exec(r);){var o=s[2];if(o)for(var a=o.replace(/[- ]/g,""),l=0;a.length>l;l++)for(var u of Bg){var c=l+u;if(a.length>=c){var d=a.slice(l,c);if(Mc.test(d)&&jg(d))return!0}}}return!1})(t);if(n)return!1;var i=e?Dg.test(t):(function(r){var s;for(Nc.lastIndex=0;s=Nc.exec(r);){var o=s[1],a=s[3];if(!(o&&a&&Oc.test(o)&&Oc.test(a)))return!0}return!1})(t);if(i)return!1}return!0}function Bc(t){var e=Yi(t);return ji(e=(e+" "+cf(t)).trim())?e:""}function cf(t){var e="";return t&&t.childNodes&&t.childNodes.length&&ie(t.childNodes,(function(n){var i;if(n&&((i=n.tagName)==null?void 0:i.toLowerCase())==="span")try{var r=Yi(n);e=(e+" "+r).trim(),n.childNodes&&n.childNodes.length&&(e=(e+" "+cf(n)).trim())}catch(s){A.error("[AutoCapture]",s)}})),e}function Dc(t){return t.replace(/"|\\"/g,'\\"')}function Ug(t){var e=t.attr__class;if(e)return U(e)?e:cl(e)}var mr=pe("[Dead Clicks]"),Hg=()=>!0,Wg=t=>{var e,n=!((e=t.instance.persistence)==null||!e.get_property(rl)),i=t.instance.config.capture_dead_clicks;return gt(i)?i:!!he(i)||n};class jc{get lazyLoadedDeadClicksAutocapture(){return this.si}constructor(e,n,i){this.instance=e,this.isEnabled=n,this.onCapture=i,this.startIfEnabledOrStop()}onRemoteConfig(e){if(e.ok){var n=e.config;"captureDeadClicks"in n&&(this.instance.persistence&&this.instance.persistence.register({[rl]:n.captureDeadClicks}),this.startIfEnabledOrStop())}}startIfEnabledOrStop(){this.isEnabled(this)?this.ai((()=>{this.oi()})):this.stop()}ai(e){var n,i;(n=B.__PosthogExtensions__)!=null&&n.initDeadClicksAutocapture?e():(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this.instance,"dead-clicks-autocapture",(r=>{r?mr.error("failed to load script",r):e()}))}oi(){var e;if(F){if(!this.si&&(e=B.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var n=he(this.instance.config.capture_dead_clicks)?k({},this.instance.config.capture_dead_clicks):{};n.__onCapture=this.onCapture,this.onCapture&&(n.capture_dead_swipes=!1),this.si=B.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,n),this.si.start(F),mr.info("starting...")}}else mr.error("`document` not found. Cannot start.")}stop(){this.si&&(this.si.stop(),this.si=void 0,mr.info("stopping..."))}}var Eo=pe("[SegmentIntegration]"),uf="posthog-js";function df(t,e){var n=e===void 0?{}:e,i=n.organization,r=n.projectId,s=n.prefix,o=n.severityAllowList,a=o===void 0?["error"]:o,l=n.sendExceptionsToPostHog,u=l===void 0||l;return c=>{var d,f,h,p,g;if(a!=="*"&&!a.includes(c.level)||!t.__loaded)return c;c.tags||(c.tags={});var m=t.requestRouter.endpointFor("ui","/project/"+t.config.token+"/person/"+t.get_distinct_id());c.tags["PostHog Person URL"]=m,t.sessionRecordingStarted()&&(c.tags["PostHog Recording URL"]=t.get_session_replay_url({withTimestamp:!0}));var v,S=((d=c.exception)==null?void 0:d.values)||[],b=S.map((x=>k({},x,{stacktrace:x.stacktrace?k({},x.stacktrace,{type:"raw",frames:(x.stacktrace.frames||[]).map((I=>k({},I,{platform:"web:javascript"})))}):void 0}))),_={$exception_message:((f=S[0])==null?void 0:f.value)||c.message,$exception_type:(h=S[0])==null?void 0:h.type,$exception_level:c.level,$exception_list:b,$sentry_event_id:c.event_id,$sentry_exception:c.exception,$sentry_exception_message:((p=S[0])==null?void 0:p.value)||c.message,$sentry_exception_type:(g=S[0])==null?void 0:g.type,$sentry_tags:c.tags};return i&&r&&(_.$sentry_url=(s||"https://sentry.io/organizations/")+i+"/issues/?project="+r+"&query="+c.event_id),u&&((v=t.exceptions)==null||v.sendExceptionEvent(_)),c}}class zg{constructor(e,n,i,r,s,o){this.name=uf,this.setupOnce=function(a){a(df(e,{organization:n,projectId:i,prefix:r,severityAllowList:s,sendExceptionsToPostHog:o==null||o}))}}}class Uc{constructor(e){this.li=(n,i,r)=>{r&&(r.noSessionId||r.activityTimeout||r.sessionPastMaximumLength||r.crossTabAdoption)&&(A.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:n,changeReason:r}),this.ui=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.hi()}hi(){var e;this.di=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.li)}destroy(){var e;(e=this.di)==null||e.call(this),this.di=void 0}doPageView(e,n){var i,r=this.vi(e,n);return this.ui={pathname:(i=w?.location.pathname)!==null&&i!==void 0?i:"",pageViewId:n,timestamp:e},this._instance.scrollManager.resetContext(),r}doPageLeave(e){var n;return this.vi(e,(n=this.ui)==null?void 0:n.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.ui)==null?void 0:e.pageViewId}}vi(e,n){var i=this.ui;if(!i)return{$pageview_id:n};var r={$pageview_id:n,$prev_pageview_id:i.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var o=s.maxScrollHeight,a=s.lastScrollY,l=s.maxScrollY,u=s.maxContentHeight,c=s.lastContentY,d=s.maxContentY;if(!(C(o)||C(a)||C(l)||C(u)||C(c)||C(d))){o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),c=Math.ceil(c),d=Math.ceil(d);var f=o>1?Ct(a/o,0,1,A):1,h=o>1?Ct(l/o,0,1,A):1,p=u>1?Ct(c/u,0,1,A):1,g=u>1?Ct(d/u,0,1,A):1;r=fe(r,{$prev_pageview_last_scroll:a,$prev_pageview_last_scroll_percentage:f,$prev_pageview_max_scroll:l,$prev_pageview_max_scroll_percentage:h,$prev_pageview_last_content:c,$prev_pageview_last_content_percentage:p,$prev_pageview_max_content:d,$prev_pageview_max_content_percentage:g})}}return i.pathname&&(r.$prev_pageview_pathname=i.pathname),i.timestamp&&(r.$prev_pageview_duration=(e.getTime()-i.timestamp.getTime())/1e3),r}}var So=["flags","surveys"],qg={[jd]:{exposure:"hidden"},[Pi]:{exposure:"hidden"},__cmpns:{exposure:"hidden"},[Fi]:{exposure:"hidden"},[ea]:{exposure:"event"},[ta]:{exposure:"hidden"},[na]:{exposure:"event"},[ia]:{exposure:"hidden"},[ra]:{exposure:"event"},[sa]:{exposure:"event"},[rl]:{exposure:"event"},[sl]:{exposure:"hidden"},[oa]:{exposure:"event"},[Cn]:{exposure:"hidden"},$session_recording_enabled_server_side:{exposure:"hidden"},[Gn]:{exposure:"hidden"},[ol]:{exposure:"event"},[Ud]:{exposure:"event",shouldSkipFromEventProperties:t=>Ve(t)},$session_past_minimum_duration:{exposure:"event"},$session_recording_url_trigger_activated_session:{exposure:"event"},$session_recording_event_trigger_activated_session:{exposure:"event"},$debug_first_full_snapshot_timestamp:{exposure:"event"},$sess_rec_flush_size:{exposure:"hidden"},[En]:{exposure:"hidden",storageGroup:"flags"},[Ri]:{exposure:"hidden",storageGroup:"flags"},[Ir]:{exposure:"hidden"},[aa]:{exposure:"hidden",storageGroup:"flags"},[Ti]:{exposure:"hidden",storageGroup:"flags"},[kr]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[Kr]:{exposure:"hidden",storageGroup:"flags"},[xt]:{exposure:"hidden"},[Sn]:{exposure:"hidden"},[Dt]:{exposure:"hidden"},[xn]:{exposure:"hidden"},[la]:{exposure:"hidden",storageGroup:"surveys"},[Yr]:{exposure:"hidden",storageGroup:"surveys",volatile:!0},[ca]:{exposure:"event"},[Cr]:{exposure:"hidden"},[Ar]:{exposure:"hidden"},[$i]:{exposure:"hidden"},$product_tours_activated:{exposure:"hidden"},$product_tours_activated_session:{exposure:"hidden"},$conversations_widget_session_id:{exposure:"event"},$conversations_ticket_id:{exposure:"event"},$conversations_widget_state:{exposure:"event"},$conversations_user_traits:{exposure:"event"},[kn]:{exposure:"hidden"},[Mi]:{exposure:"hidden"},[Pr]:{exposure:"hidden"},[Di]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[ot]:{exposure:"hidden"},[ua]:{exposure:"hidden"},[da]:{exposure:"hidden"},[fa]:{exposure:"hidden"},[ha]:{exposure:"hidden"},[Jr]:{exposure:"hidden"},[Zr]:{exposure:"hidden"},[Hd]:{exposure:"event"},[Wd]:{exposure:"event"},[zd]:{exposure:"event"},[qd]:{exposure:"event"},[Gd]:{exposure:"event"},[Kd]:{exposure:"event"},[Yd]:{exposure:"event"},$sdk_debug_replay_event_trigger_status:{exposure:"event"},$sdk_debug_replay_linked_flag_trigger_status:{exposure:"event"},$sdk_debug_replay_matched_recording_trigger_groups:{exposure:"event"},$sdk_debug_replay_remote_trigger_matching_config:{exposure:"event"},$sdk_debug_replay_trigger_groups_count:{exposure:"event"},$sdk_debug_replay_url_trigger_status:{exposure:"event"},$session_recording_start_reason:{exposure:"event"}},Vg=[["$posthog_sr_group_event_trigger_",{exposure:"hidden"}],["$posthog_sr_group_url_trigger_",{exposure:"hidden"}],["$posthog_sr_group_sampling_",{exposure:"hidden"}]],_n=t=>{var e=qg[t];if(e)return e;for(var n of Vg){var i=n[1];if(t.indexOf(n[0])===0)return i}},Kn=(t,e)=>{try{return JSON.stringify(t,((n,i)=>typeof i=="bigint"?i.toString():i),e)}catch{return ad(t)}},ns=t=>{var e=F?.createElement("a");return C(e)?null:(e.href=t,e)},ni=function(t,e){for(var n,i=((t.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),r=0;i.length>r;r++){var s=i[r].split("=");if(s[0]===e){n=s;break}}if(!U(n)||2>n.length)return"";var o=n[1];try{o=decodeURIComponent(o)}catch{A.error("Skipping decoding for malformed query param: "+o)}return o.replace(/\+/g," ")},Ji=function(t,e,n){if(!t||!e||!e.length)return t;for(var i=t.split("#"),r=i[1],s=(i[0]||"").split("?"),o=s[1],a=s[0],l=(o||"").split("&"),u=[],c=0;l.length>c;c++){var d=l[c].split("=");U(d)&&(e.includes(d[0])?u.push(d[0]+"="+n):u.push(l[c]))}var f=a;return o!=null&&(f+="?"+u.join("&")),r!=null&&(f+="#"+r),f},is=function(t,e){var n=t.match(new RegExp(e+"=([^&]*)"));return n?n[1]:null},ff=(t,e)=>t>=e&&rd(),hf=(t,e,n,i)=>{if(t===0){if(rd()){var r=e+1;return r===n&&i(),r}return e}return 0},vr="https?://(.*)",ii=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],Gg=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...ii],Zi="",Kg=["li_fat_id"];function pf(t,e,n){if(!F)return{};var i,r=e?[...ii,...n||[]]:[],s=gf(Ji(F.URL,r,Zi),t),o=(i={},ie(Kg,(function(a){var l=Jd(a);i[a]=l||null})),i);return fe(o,s)}function gf(t,e){var n=Gg.concat(e||[]),i={};return ie(n,(function(r){var s=ni(t,r);i[r]=s||null})),i}function mf(t){var e=(function(s){return s?s.search(vr+"google.([^/?]*)")===0?"google":s.search(vr+"bing.com")===0?"bing":s.search(vr+"yahoo.com")===0?"yahoo":s.search(vr+"duckduckgo.com")===0?"duckduckgo":null:null})(t),n=e!="yahoo"?"q":"p",i={};if(!Ve(e)){i.$search_engine=e;var r=F?ni(F.referrer,n):"";r.length&&(i.ph_keyword=r)}return i}function Hc(){return navigator.language||navigator.userLanguage}var rs="$direct";function vf(){return F?.referrer||rs}function _f(t,e,n){n===void 0&&(n=!1);var i=t?[...ii,...e||[]]:[],r=n?dn(me?.href):me?.href,s=r?.substring(0,1e3);return{r:vf().substring(0,1e3),u:s?Ji(s,i,Zi):void 0}}function yf(t,e){var n;e===void 0&&(e=!1);var i=t.r,r=t.u,s=e?dn(r):r,o={$referrer:i,$referring_domain:i==null?void 0:i==rs?rs:(n=ns(i))==null?void 0:n.host};if(s){o.$current_url=s;var a=ns(s);o.$host=a?.host,o.$pathname=a?.pathname;var l=gf(s);fe(o,l)}if(i){var u=mf(i);fe(o,u)}return o}function wf(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function Yg(){try{return new Date().getTimezoneOffset()}catch{return}}var Jg={flags:Di,surveys:Yr},Zg=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"],Un="main";class xo{constructor(e,n,i){if(i===void 0&&(i=!0),this.ci={},this.fi=!1,this.pi=!1,this.Ne=e,this.gi=i,this.props={},this.mi=void 0,this.yi=(s=>{var o="";return s.token&&(o=s.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),s.persistence_name?"ph_"+s.persistence_name:"ph_"+o+"_posthog"})(e),this.ii=this.bi(e),this.pi=this.wi(e),this.load(),e.debug&&A.info("Persistence loaded",e.persistence,k({},this.props)),this.update_config(e,e,n),this.save(),w){var r=()=>this.flush();ve(w,"beforeunload",r,{capture:!1}),ve(w,"pagehide",r,{capture:!1})}}ki(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return ke(n)&&n>0?n:0}isDisabled(){return!!this.xi}bi(e){Zg.indexOf(e.persistence.toLowerCase())===-1&&(A.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var n,i=(function(o,a){o===void 0&&(o=[]),a===void 0&&(a=!1);var l=[...Pg,...o];return k({},le,{H(u){try{var c={};try{c=Wt.H(u)||{}}catch{}var d,f=JSON.parse(le.P(u)||"{}");if(a){var h={};for(var p in c){var g=c[p];Ve(g)||g===""||(h[p]=g)}d=fe(f,h)}else d=fe(c,f);return le.F(u,d),d}catch{}return null},F(u,c,d,f,h,p){var g=le.F(u,c,void 0,void 0,p);try{var m={};l.forEach((v=>{c[v]&&(m[v]=c[v])})),Object.keys(m).length&&Wt.F(u,m,d,f,h,p)}catch(v){le.j(v)}return g},q(u,c){try{w?.localStorage.removeItem(u),Wt.q(u,c)}catch(d){le.j(d)}}})})(e.cookie_persisted_properties||[],e.__preview_cookie_wins_on_conflict||!1),r=!1,s=e.persistence.toLowerCase();return s==="localstorage"&&le.N()?(n=le,r=!0):s==="localstorage+cookie"&&i.N()?(n=i,r=!0):s==="sessionstorage"&&be.N()?n=be:s==="memory"?n=Fg:s==="cookie"?n=Wt:i.N()?(n=i,r=!0):n=Wt,this.fi=r,n}Si(e){return this.yi+"__"+e}wi(e){return this.fi&&!!e.split_storage}properties(){var e={};return ie(this.props,((n,i)=>{var r=_n(i);if(!r||r.exposure==="event"){if(r!=null&&r.shouldSkipFromEventProperties!=null&&r.shouldSkipFromEventProperties(n))return;e[i]=n}})),e}load(){if(!this.xi){var e=this.ii.H(this.yi);e&&(this.props=fe({},e)),this.pi&&this.Ci()}}Ci(){for(var e of So){var n=le.H(this.Si(e));if(n&&!Vt(n)){var i=this.Mi(e);i.persisted=!0,this.Ti(e)||(i.fingerprint=this.Ei(n,e)),this.Ii(e,n)||fe(this.props,n)}}}Ti(e){return Object.keys(this.props).some((n=>{var i;return((i=_n(n))==null?void 0:i.storageGroup)===e}))}Ii(e,n){var i=Jg[e];if(!i)return!1;var r=n[i],s=this.props[i];return ke(r)&&ke(s)&&s>r}refreshKey(e){var n;if(!this.xi){var i=this.pi?(n=_n(e))==null?void 0:n.storageGroup:void 0,r=i?le.H(this.Si(i)):this.ii.H(this.yi);if(r&&e in r)this.Pi(e,r[e]);else{if(i){var s=this.ii.H(this.yi);if(s&&e in s)return void this.Pi(e,s[e])}this.Ri(e)}}}save(){if(!this.xi){var e=this.ki();e>0?C(this.Ai)&&(this.Ai=setTimeout((()=>{this.Ai=void 0,this.Fi()}),e)):this.Fi()}}flush(){C(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0,this.Fi())}Fi(){this.xi||(this.pi?this.Li():this.Oi(this.ii,this.yi,this.props,Un))}Li(){var e=this.Di(),n=e.main,i=e.groups;for(var r of(this.Oi(this.ii,this.yi,n,Un),So)){var s,o=i[r];(!Vt(o)||(s=this.ci[r])!=null&&s.persisted)&&this.Oi(le,this.Si(r),o,r)}}Di(){var e={},n={flags:{},surveys:{}};return ie(this.props,((i,r)=>{var s,o=(s=_n(r))==null?void 0:s.storageGroup;o?n[o][r]=i:e[r]=i})),{main:e,groups:n}}Ei(e,n){if(n===Un)return JSON.stringify(e)+"|"+this.$i+"|"+this.Ni+"|"+this.qi;var i={};return ie(e,((r,s)=>{var o;i[s]=(o=_n(s))!=null&&o.volatile?"__volatile__":r})),JSON.stringify(i)}Oi(e,n,i,r){var s=this.Mi(r);if(r===Un||s.dirty||C(s.fingerprint)){var o;try{if((o=this.Ei(i,r))===s.fingerprint)return void(s.dirty=!1)}catch{o=void 0}e.F(n,i,this.$i,this.Ni,this.qi,this.Ne.debug)?(s.dirty=!1,r!==Un&&(s.persisted=!0),C(o)||(s.fingerprint=o)):this.Ne.debug&&A.warn('failed to persist storage entry "'+n+'"; will retry on next save')}}remove(e){var n=(e===void 0?{}:e).keepGroupEntries,i=n!==void 0&&n;if(C(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0),this.ii.q(this.yi,!1),this.ii.q(this.yi,!0),!i&&this.gi)for(var r of So)le.q(this.Si(r));i?delete this.ci[Un]:this.ci={}}clear(){this.remove(),this.props={}}register_once(e,n,i){if(he(e)){C(n)&&(n="None"),this.$i=C(i)?this.ji:i;var r=!1;if(ie(e,((s,o)=>{this.props.hasOwnProperty(o)&&this.props[o]!==n||(this.Pi(o,s),r=!0)})),r)return this.save(),!0}return!1}register(e,n){if(he(e)){this.$i=C(n)?this.ji:n;var i=!1;if(ie(e,((r,s)=>{e.hasOwnProperty(s)&&(this.props[s]!==r||he(r)||U(r))&&(this.Pi(s,r),i=!0)})),i)return this.save(),!0}return!1}unregister(e){var n=typeof e=="string"?[e]:e,i=!1;for(var r of n)r in this.props&&(this.Ri(r),i=!0);i&&this.save()}update_campaign_params(){var e=F?.URL;if(e!==this.mi){var n=pf(this.Ne.custom_campaign_params,this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties);Vt(ll(n))||this.register(n),this.mi=e}}update_search_keyword(){var e;this.register((e=F?.referrer)?mf(e):{})}update_referrer_info(){var e;this.register_once({$referrer:vf(),$referring_domain:F!=null&&F.referrer&&((e=ns(F.referrer))==null?void 0:e.host)||rs},void 0)}set_initial_person_info(){this.props[fa]||this.props[ha]||this.register_once({[Jr]:_f(this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties,this.Ne.disable_capture_url_hashes)},void 0)}get_initial_props(){var e={};ie([ha,fa],(r=>{var s=this.props[r];s&&ie(s,(function(o,a){e["$initial_"+Go(a)]=o}))}));var n=this.props[Jr];if(n){var i=(function(r,s){s===void 0&&(s=!1);var o=yf(r,s),a={};return ie(o,(function(l,u){a["$initial_"+Go(u)]=l})),a})(n,this.Ne.disable_capture_url_hashes);fe(e,i)}return e}safe_merge(e){return ie(this.props,(function(n,i){i in e||(e[i]=n)})),e}update_config(e,n,i){this.ji=this.$i=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!i),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie);var r=e.persistence!==n.persistence||!((l,u)=>{if(l.length!==u.length)return!1;var c=[...l].sort(),d=[...u].sort();return c.every(((f,h)=>f===d[h]))})(e.cookie_persisted_properties||[],n.cookie_persisted_properties||[]),s=r?this.bi(e):this.ii,o=this.wi(e);if(r||o!==this.pi){var a=this.props;this.clear(),this.ii=s,this.pi=o,this.props=a,this.save()}}set_disabled(e){this.xi=e,this.xi?this.remove():this.save()}set_cross_subdomain(e){e!==this.Ni&&(this.Ni=e,this.remove({keepGroupEntries:!0}),this.save())}set_secure(e){e!==this.qi&&(this.qi=e,this.remove({keepGroupEntries:!0}),this.save())}set_event_timer(e,n){var i=this.props[Fi]||{};i[e]=n,this.Pi(Fi,i),this.save()}remove_event_timer(e){var n=this.props[Fi]||{},i=n[e];return C(i)||(delete n[e],this.Pi(Fi,n),this.save()),i}get_property(e){return this.props[e]}set_property(e,n){this.Pi(e,n),this.save()}Pi(e,n){var i;this.props[e]=n,(i=_n(e))!=null&&i.volatile||this.Bi(e)}Ri(e){delete this.props[e],this.Bi(e)}Bi(e){var n,i=(n=_n(e))==null?void 0:n.storageGroup;i&&(this.Mi(i).dirty=!0)}Mi(e){return this.ci[e]||(this.ci[e]={})}}function _r(t){var e=!0;return{dispose(){if(e){e=!1;var n=t();n&&De(n.then)&&n.then(void 0,(()=>{}))}}}}var je={GZipJS:"gzip-js",Base64:"base64"},yi={Activation:"events",Cancellation:"cancelEvents"},Io={Popover:"popover",API:"api",Widget:"widget"},zt={SHOWN:"survey shown",DISMISSED:"survey dismissed",SENT:"survey sent"},ko={SURVEY_ID:"$survey_id",SURVEY_ITERATION:"$survey_iteration",SURVEY_LAST_SEEN_DATE:"$survey_last_seen_date"},_a={Popover:"popover",Inline:"inline"},Xg={SHOWN:"product tour shown"},Wc={TOUR_LAST_SEEN_DATE:"$product_tour_last_seen_date",TOUR_TYPE:"$product_tour_type"},zc=pe("[RateLimiter]");class Qg{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=n=>{var i=n.text;if(i&&i.length)try{(JSON.parse(i).quota_limited||[]).forEach((r=>{zc.info((r||"events")+" is quota limited."),this.serverLimits[r]=new Date().getTime()+6e4}))}catch(r){return void zc.warn('could not rate limit - continuing. Error: "'+r?.message+'"',{text:i})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var n,i,r;e===void 0&&(e=!1);var s=this.captureEventsBurstLimit,o=this.captureEventsPerSecond,a=new Date().getTime(),l=(n=(i=this.instance.persistence)==null?void 0:i.get_property(da))!==null&&n!==void 0?n:{tokens:s,last:a};l.tokens+=(a-l.last)/1e3*o,l.last=a,l.tokens>s&&(l.tokens=s);var u=1>l.tokens;if(u||e||(l.tokens=Math.max(0,l.tokens-1)),u&&!e){var c=(ke(l.dropped)?l.dropped:0)+1;l.dropped=c,!this.lastEventRateLimited&&this.Hi(c)&&(l.dropped=0)}return this.lastEventRateLimited=u,(r=this.instance.persistence)==null||r.set_property(da,l),{isRateLimited:u,remainingTokens:l.tokens}}Ui(e){var n=this.instance.config.property_denylist;return!U(n)||!n.includes(e)}zi(){var e;if(this.Ui("$current_url")&&this.Ui("$pathname")&&me!=null&&me.pathname)return""+((e=me.origin)!==null&&e!==void 0?e:"")+me.pathname}Hi(e){var n,i,r=this.captureEventsBurstLimit,s=this.captureEventsPerSecond,o=this.zi(),a=this.Ui("$session_id")?(n=(i=this.instance).get_session_id)==null?void 0:n.call(i):void 0,l=[e+" event(s) dropped since the last warning",o?"triggered on "+o:void 0,a?"session "+a:void 0].filter(Boolean).join(", ");return!!this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited: "+l+". Config is set to "+s+" events per second and "+r+" events burst limit."},{skip_client_rate_limiting:!0})}isServerRateLimited(e){var n=this.serverLimits[e||"events"]||!1;return n!==!1&&new Date().getTime()e(this.remoteConfig))):e()}Vi(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback:e})}load(){try{if(this.remoteConfig)return sn.info("Using preloaded remote config",this.remoteConfig),this.Zi(this.remoteConfig),void this.Gi();if(this._instance.Qi())return void sn.warn("Remote config is disabled. Falling back to local config.");this.Wi((e=>{if(!e)return sn.info("No config found after loading remote JS config. Falling back to JSON."),void this.Vi((n=>{this.Zi(n.json,n),this.Gi()}));this.Zi(e),this.Gi()}))}catch(e){sn.error("Error loading remote config",e),this.Zi()}}stop(){this.Ki&&(clearInterval(this.Ki),this.Ki=void 0)}refresh(){!this._instance.Qi()&&F&&F.visibilityState!=="hidden"&&this._instance.reloadFeatureFlags()}Gi(){var e;if(!this.Ki){var n=(e=this._instance.config.remote_config_refresh_interval_ms)!==null&&e!==void 0?e:3e5;n!==0&&(this.Ki=setInterval((()=>{this.refresh()}),n))}}Zi(e,n){!e&&n&&(n.statusCode===0?n.error||sn.warn("Failed to fetch remote config from PostHog."):sn.error("Failed to fetch remote config from PostHog."));try{this._instance.Zi(e?{ok:!0,config:e}:{ok:!1})}catch(r){sn.error("Error applying remote config",r)}if(e?.hasFeatureFlags!==!1&&!this._instance.config.advanced_disable_feature_flags_on_first_load)try{var i;(i=this._instance.featureFlags)==null||i.ensureFlagsLoaded()}catch(r){sn.error("Error loading feature flags",r)}}}var lt=Uint8Array,qe=Uint16Array,ri=Uint32Array,fl=new lt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),hl=new lt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),qc=new lt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ef=function(t,e){for(var n=new qe(31),i=0;31>i;++i)n[i]=e+=1<i;++i)for(var s=n[i];n[i+1]>s;++s)r[s]=s-n[i]<<5|i;return[n,r]},Sf=Ef(fl,2),ya=Sf[1];Sf[0][28]=258,ya[258]=28;for(var Vc=Ef(hl,0)[1],xf=new qe(32768),_e=0;32768>_e;++_e){var Hn=(43690&_e)>>>1|(21845&_e)<<1;xf[_e]=((65280&(Hn=(61680&(Hn=(52428&Hn)>>>2|(13107&Hn)<<2))>>>4|(3855&Hn)<<4))>>>8|(255&Hn)<<8)>>>1}var Ui=function(t,e,n){for(var i=t.length,r=0,s=new qe(e);i>r;++r)++s[t[r]-1];var o,a=new qe(e);for(r=0;e>r;++r)a[r]=a[r-1]+s[r-1]<<1;for(o=new qe(i),r=0;i>r;++r)o[r]=xf[a[t[r]-1]++]>>>15-t[r];return o},Tn=new lt(288);for(_e=0;144>_e;++_e)Tn[_e]=8;for(_e=144;256>_e;++_e)Tn[_e]=9;for(_e=256;280>_e;++_e)Tn[_e]=7;for(_e=280;288>_e;++_e)Tn[_e]=8;var ss=new lt(32);for(_e=0;32>_e;++_e)ss[_e]=5;var em=Ui(Tn,9),tm=Ui(ss,5),If=function(t){return(t/8>>0)+(7&t&&1)},kf=function(t,e,n){(n==null||n>t.length)&&(n=t.length);var i=new(t instanceof qe?qe:t instanceof ri?ri:lt)(n-e);return i.set(t.subarray(e,n)),i},Nt=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8},wi=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8,t[i+2]|=n>>>16},Co=function(t,e){for(var n=[],i=0;t.length>i;++i)t[i]&&n.push({s:i,f:t[i]});var r=n.length,s=n.slice();if(!r)return[new lt(0),0];if(r==1){var o=new lt(n[0].s+1);return o[n[0].s]=1,[o,1]}n.sort((function(x,I){return x.f-I.f})),n.push({s:-1,f:25001});var a=n[0],l=n[1],u=0,c=1,d=2;for(n[0]={s:-1,f:a.f+l.f,l:a,r:l};c!=r-1;)a=n[n[d].f>n[u].f?u++:d++],l=n[u!=c&&n[d].f>n[u].f?u++:d++],n[c++]={s:-1,f:a.f+l.f,l:a,r:l};var f=s[0].s;for(i=1;r>i;++i)s[i].s>f&&(f=s[i].s);var h=new qe(f+1),p=wa(n[c-1],h,0);if(p>e){i=0;var g=0,m=p-e,v=1<i;++i){var S=s[i].s;if(e>=h[S])break;g+=v-(1<>>=m;g>0;){var b=s[i].s;e>h[b]?g-=1<=0&&g;--i){var _=s[i].s;h[_]==e&&(--h[_],++g)}p=e}return[new lt(h),p]},wa=function(t,e,n){return t.s==-1?Math.max(wa(t.l,e,n+1),wa(t.r,e,n+1)):e[t.s]=n},Gc=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new qe(++e),i=0,r=t[0],s=1,o=function(l){n[i++]=l},a=1;e>=a;++a)if(t[a]==r&&a!=e)++s;else{if(!r&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(r),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(r);s=1,r=t[a]}return[n.subarray(0,i),e]},bi=function(t,e){for(var n=0,i=0;e.length>i;++i)n+=t[i]*e[i];return n},ba=function(t,e,n){var i=n.length,r=If(e+2);t[r]=255&i,t[r+1]=i>>>8,t[r+2]=255^t[r],t[r+3]=255^t[r+1];for(var s=0;i>s;++s)t[r+s+4]=n[s];return 8*(r+4+i)},Kc=function(t,e,n,i,r,s,o,a,l,u,c){Nt(e,c++,n),++r[256];for(var d=Co(r,15),f=d[0],h=d[1],p=Co(s,15),g=p[0],m=p[1],v=Gc(f),S=v[0],b=v[1],_=Gc(g),x=_[0],I=_[1],T=new qe(19),E=0;S.length>E;++E)T[31&S[E]]++;for(E=0;x.length>E;++E)T[31&x[E]]++;for(var P=Co(T,7),$=P[0],O=P[1],L=19;L>4&&!$[qc[L-1]];--L);var N,G,V,M,R=u+5<<3,Z=bi(r,Tn)+bi(s,ss)+o,Ce=bi(r,f)+bi(s,g)+o+14+3*L+bi(T,$)+(2*T[16]+3*T[17]+7*T[18]);if(Z>=R&&Ce>=R)return ba(e,c,t.subarray(l,l+u));if(Nt(e,c,1+(Z>Ce)),c+=2,Z>Ce){N=Ui(f,h),G=f,V=Ui(g,m),M=g;var oe=Ui($,O);for(Nt(e,c,b-257),Nt(e,c+5,I-1),Nt(e,c+10,L-4),c+=14,E=0;L>E;++E)Nt(e,c+3*E,$[qc[E]]);c+=3*L;for(var ye=[S,x],$e=0;2>$e;++$e){var ae=ye[$e];for(E=0;ae.length>E;++E)Nt(e,c,oe[Ie=31&ae[E]]),c+=$[Ie],Ie>15&&(Nt(e,c,ae[E]>>>5&127),c+=ae[E]>>>12)}}else N=em,G=Tn,V=tm,M=ss;for(E=0;a>E;++E)if(i[E]>255){var Ie;wi(e,c,N[257+(Ie=i[E]>>>18&31)]),c+=G[Ie+257],Ie>7&&(Nt(e,c,i[E]>>>23&31),c+=fl[Ie]);var Se=31&i[E];wi(e,c,V[Se]),c+=M[Se],Se>3&&(wi(e,c,i[E]>>>5&8191),c+=hl[Se])}else wi(e,c,N[i[E]]),c+=G[i[E]];return wi(e,c,N[256]),c+G[256]},nm=new ri([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),im=(function(){for(var t=new ri(256),e=0;256>e;++e){for(var n=e,i=9;--i;)n=(1&n&&3988292384)^n>>>1;t[e]=n}return t})(),Ao=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8};function rm(t,e){e===void 0&&(e={});var n=(function(){var d=4294967295;return{p(f){for(var h=d,p=0;f.length>p;++p)h=im[255&h^f[p]]^h>>>8;d=h},d(){return 4294967295^d}}})(),i=t.length;n.p(t);var r,s,o,a,l,u=(a=10+((r=e).filename&&r.filename.length+1||0),l=8,(function(d,f,h,p,g,m){var v=d.length,S=new lt(p+v+5*(1+Math.floor(v/7e3))+g),b=S.subarray(p,S.length-g),_=0;if(!f||8>v)for(var x=0;v>=x;x+=65535){var I=x+65535;v>I?_=ba(b,_,d.subarray(x,I)):(b[x]=!0,_=ba(b,_,d.subarray(x,v)))}else{for(var T=nm[f-1],E=T>>>13,P=8191&T,$=(1<x;++x){var Ie=V(x),Se=32767&x,Be=L[Ie];if(O[Se]=Be,L[Ie]=Se,x>=$e){var yt=v-x;if((Ce>7e3||ye>24576)&&yt>423){_=Kc(d,b,0,M,R,Z,oe,ye,ae,x-ae,_),ye=Ce=oe=0,ae=x;for(var ge=0;286>ge;++ge)R[ge]=0;for(ge=0;30>ge;++ge)Z[ge]=0}var Ye=2,wt=0,gn=P,Re=Se-Be&32767;if(yt>2&&Ie==V(x-Re))for(var Pe=Math.min(E,yt)-1,Tt=Math.min(32767,x),On=Math.min(258,yt);Tt>=Re&&--gn&&Se!=Be;){if(d[x+Ye]==d[x+Ye-Re]){for(var He=0;On>He&&d[x+He]==d[x+He-Re];++He);if(He>Ye){if(Ye=He,wt=Re,He>Pe)break;var Bn=Math.min(Re,He-2),$t=0;for(ge=0;Bn>ge;++ge){var Mt=x-Re+ge+32768&32767,ct=Mt-O[Mt]+32768&32767;ct>$t&&($t=ct,Be=Mt)}}}Re+=(Se=Be)-(Be=O[Se])+32768&32767}if(wt){M[ye++]=268435456|ya[Ye]<<18|Vc[wt];var nn=31&ya[Ye],pi=31&Vc[wt];oe+=fl[nn]+hl[pi],++R[257+nn],++Z[pi],$e=x+Ye,++Ce}else M[ye++]=d[x],++R[d[x]]}}_=Kc(d,b,!0,M,R,Z,oe,ye,ae,x-ae,_)}return kf(S,0,p+If(_)+g)})(s=t,(o=e).level==null?6:o.level,o.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):12+o.mem,a,l)),c=u.length;return(function(d,f){var h=f.filename;if(d[0]=31,d[1]=139,d[2]=8,d[8]=2>f.level?4:f.level==9?2:0,d[9]=3,f.mtime!=0&&Ao(d,4,Math.floor(new Date(f.mtime||Date.now())/1e3)),h){d[3]=8;for(var p=0;h.length>=p;++p)d[p+10]=h.charCodeAt(p)}})(u,e),Ao(u,c-8,n.d()),Ao(u,c-4,i),u}var sm=!!zo||!!Za,Cf="text/plain",Rr=!1,Af=(t,e)=>{var n=t.split("#"),i=n[1],r=n[0].split("?"),s=r[0],o=r[1];if(!o)return t;var a=o.split("&").filter((l=>l.split("=")[0]!==e)).join("&");return s+(a?"?"+a:"")+(i?"#"+i:"")},Is=function(t,e,n){var i;n===void 0&&(n=!0);var r=t.split("?"),s=r[0],o=r[1],a=k({},e),l=(i=o?.split("&").map((c=>{var d,f=c.split("="),h=f[0],p=n&&(d=a[h])!==null&&d!==void 0?d:f[1];return delete a[h],h+"="+p})))!==null&&i!==void 0?i:[],u=(function(c,d){var f,h;d===void 0&&(d="&");var p=[];return ie(c,(function(g,m){C(g)||C(m)||m==="undefined"||(f=encodeURIComponent((v=>v instanceof File)(g)?g.name:g.toString()),h=encodeURIComponent(m),p[p.length]=h+"="+f)})),p.join(d)})(a);return u&&l.push(u),l.length>0?s+"?"+l.join("&"):s},Po=t=>{if(t.Ji)return t.Ji;var e=t.data,n=t.compression;if(e){if(n===je.GZipJS){var i=rm((function(a,l){var u=a.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(a);for(var c=new lt(a.length+(a.length>>>1)),d=0,f=function(m){c[d++]=m},h=0;u>h;++h){if(d+5>c.length){var p=new lt(d+8+(u-h<<1));p.set(c),c=p}var g=a.charCodeAt(h);128>g?f(g):2048>g?(f(192|g>>>6),f(128|63&g)):g>55295&&57344>g?(f(240|(g=65536+(1047552&g)|1023&a.charCodeAt(++h))>>>18),f(128|g>>>12&63),f(128|g>>>6&63),f(128|63&g)):(f(224|g>>>12),f(128|g>>>6&63),f(128|63&g))}return kf(c,0,d)})(Kn(e)),{mtime:0});return{contentType:Cf,body:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength),estimatedSize:i.byteLength}}if(n===je.Base64){var r=(function(a){return a&&btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,((l,u)=>String.fromCharCode(parseInt(u,16)))))})(Kn(e)),s=(a=>"data="+encodeURIComponent(typeof a=="string"?a:Kn(a)))(r);return{contentType:"application/x-www-form-urlencoded",body:s,estimatedSize:new Blob([s]).size}}var o=Kn(e);return{contentType:"application/json",body:o,estimatedSize:new Blob([o]).size}}},Pf=t=>{var e,n,i=()=>t.transport==="sendBeacon"?{url:Is(t.url,{compression:je.Base64}),encodedBody:Po(k({},t,{compression:je.Base64,Ji:void 0}))}:{url:Af(t.url,"compression"),encodedBody:Po(k({},t,{compression:void 0,Ji:void 0}))};try{e=Po(t)}catch(r){if(pc(t.compression,ni(t.url,"compression")))return A.error("Failed to gzip request body, sending uncompressed payload",r),i();throw r}return e&&pc(t.compression,ni(t.url,"compression"))&&!((n=e.body)instanceof ArrayBuffer?qo(new Uint8Array(n)):ArrayBuffer.isView(n)&&qo(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)))?(Rr=!0,i()):{url:t.url,encodedBody:e}},Ff=t=>{try{return Pf(t)}catch(e){return A.error(e),void(t.callback==null||t.callback({statusCode:0,error:e}))}},om=(function(){var t=se((function*(e){var n=Kn(e.data),i=yield(function(s,o,a){return Vo.apply(this,arguments)})(n,ne.DEBUG,{rethrow:!0});if(!i)return e;var r=yield i.arrayBuffer();return k({},e,{Ji:{contentType:Cf,body:r,estimatedSize:r.byteLength}})}));return function(e){return t.apply(this,arguments)}})(),am=/Failed to fetch|NetworkError|Load failed/i,Rf=t=>t?.name==="TypeError"&&am.test(t?.message||""),Tf=t=>{var e=Ff(t);if(e){var n=e.url,i=e.encodedBody,r=i??{},s=r.contentType,o=r.body,a=r.estimatedSize,l=new Headers;ie(t.headers,(function(p,g){l.append(g,p)})),s&&l.append("Content-Type",s);var u=null,c=!1;if(lc){var d=new lc;u={signal:d.signal,timeout:setTimeout((()=>{var p,g;c=!0,d.abort((p=t.timeout,(g=new Error("PostHog request timed out"+(p?" after "+p+"ms":""))).name="AbortError",g))}),t.timeout)}}var f=p=>{c&&p?.name==="AbortError"||Rf(p)?A.warn(p):A.error(p),t.callback==null||t.callback({statusCode:0,error:p})};try{var h;Za(n,k({method:t?.method||"GET",headers:l,keepalive:t.method==="POST"&&!t.Yi&&52428.8>(a||0),body:o,signal:(h=u)==null?void 0:h.signal},t.fetchOptions)).then((p=>p.text().then((g=>{var m={statusCode:p.status,text:g};if(p.status===200)try{m.json=JSON.parse(g)}catch(v){A.error(v)}t.callback==null||t.callback(m)})))).catch(f).finally((()=>u?clearTimeout(u.timeout):null))}catch(p){u&&clearTimeout(u.timeout),f(p)}}},Ea=t=>{try{var e,n=Pf(t),i=n.url,r=n.encodedBody,s=r??{},o=s.body,a=s.estimatedSize;if(!o)return;var l=o instanceof Blob?o:new Blob([o],{type:s.contentType});if(Ue.sendBeacon(i,l))return;var u=U(t.data)?t.data:(e=t.data)==null?void 0:e.batch;if(U(u)&&u.length>1&&(a??0)>16384){var c=Math.ceil(u.length/2),d=f=>U(t.data)?f:k({},t.data,{batch:f});return Ea(k({},t,{data:d(u.slice(0,c))})),void Ea(k({},t,{data:d(u.slice(c))}))}A.warn("Beacon of ~"+(a??0)+" bytes was rejected by the browser, falling back to fetch"),Tf(k({},t,{Yi:!0}))}catch(f){A.warn("Beacon send failed",f)}},Yc=(t,e,n,i)=>{var r=i==="query"?e==="POST"?"sent_at":"_":void 0;return Is(n===je.GZipJS?Af(t,"compression"):t,k({},r?{[r]:Date.now().toString()}:{},n===je.GZipJS?{}:{compression:n}))},Tr=[];Za&&Tr.push({transport:"fetch",method:Tf}),zo&&Tr.push({transport:"XHR",method(t){var e=Ff(t);if(e){var n=new zo,i=e.encodedBody;n.open(t.method||"GET",e.url,!0);var r=i??{},s=r.contentType,o=r.body;ie(t.headers,(function(a,l){n.setRequestHeader(l,a)})),s&&n.setRequestHeader("Content-Type",s),t.timeout&&(n.timeout=t.timeout),n.onreadystatechange=()=>{if(n.readyState===4){var a={statusCode:n.status,text:n.responseText};if(n.status===200)try{a.json=JSON.parse(n.responseText)}catch{}t.callback==null||t.callback(a)}},n.send(o)}}}),Ue!=null&&Ue.sendBeacon&&Tr.push({transport:"sendBeacon",method:Ea});var Sa=3e3;class lm{constructor(e,n){this.Xi=!0,this.tr=[],this.er=Ct(n?.flush_interval_ms||Sa,250,5e3,A.createLogger("flush interval"),Sa),this.ir=e}enqueue(e){this.tr.push(e),this.rr||this.nr()}unload(){this.sr();var e=this.tr.length>0?this.ar():{},n=Object.values(e);[...n.filter((i=>i.url.indexOf("/e")===0)),...n.filter((i=>i.url.indexOf("/e")!==0))].map((i=>{this.lr(k({},i,{transport:"sendBeacon"}))}))}enable(){this.Xi=!1,this.nr()}nr(){var e=this;this.Xi||(this.rr=setTimeout((()=>{if(this.sr(),this.tr.length>0){var n=this.ar(),i=function(){var s=n[r],o=new Date().getTime();s.data&&U(s.data)&&ie(s.data,(a=>{a.offset=Math.abs(a.timestamp-o),delete a.timestamp})),e.lr(s)};for(var r in n)i()}}),this.er))}lr(e){try{this.ir(e)}catch(n){A.error(n)}}sr(){clearTimeout(this.rr),this.rr=void 0}ar(){var e={};return ie(this.tr,(n=>{var i,r=n,s=(r?r.batchKey:null)||r.url;C(e[s])&&(e[s]=k({},r,{data:[]})),(i=e[s].data)==null||i.push(r.data)})),this.tr=[],e}}var cm=["retriesPerformedSoFar"];class um{constructor(e){this.ur=!1,this.hr=3e3,this.tr=[],this._instance=e,this.tr=[],this.dr=!0,!C(w)&&"onLine"in w.navigator&&(this.dr=w.navigator.onLine,this.vr=()=>{this.dr=!0,this.cr()},this.pr=()=>{this.dr=!1},ve(w,"online",this.vr),ve(w,"offline",this.pr))}get length(){return this.tr.length}retriableRequest(e){var n=e.retriesPerformedSoFar,i=sd(e,cm);Bt(n)&&(i.url=Is(i.url,{retry_count:n})),this._instance._send_request(k({},i,{callback:r=>{if(r.statusCode!==200&&(400>r.statusCode||r.statusCode>=500)){if((r.statusCode===0?3:10)>(n??0))return void this.At(k({retriesPerformedSoFar:n},i));r.statusCode===0&&A.warn("Request failed before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped retrying after "+(n??0)+" retries.")}i.callback==null||i.callback(r)}}))}At(e){var n=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=n+1;var i=(function(o){var a=3e3*Math.pow(2,o),l=a/2,u=Math.min(18e5,a),c=Math.random()-.5;return Math.ceil(u+c*(u-l))})(n),r=Date.now()+i;this.tr.push({retryAt:r,requestOptions:e});var s="Enqueued failed request for retry in "+i;navigator.onLine||(s+=" (Browser is offline)"),A.warn(s),this.ur||(this.ur=!0,this.gr())}gr(){if(this.mr&&clearTimeout(this.mr),this.tr.length===0)return this.ur=!1,void(this.mr=void 0);this.mr=setTimeout((()=>{this.dr&&this.tr.length>0&&this.cr(),this.gr()}),this.hr)}cr(){var e=Date.now(),n=[],i=this.tr.filter((s=>e>s.retryAt||(n.push(s),!1)));if(this.tr=n,i.length>0)for(var r of i)this.retriableRequest(r.requestOptions)}unload(){for(var e of(this.mr&&(clearTimeout(this.mr),this.mr=void 0),this.ur=!1,C(w)||(this.vr&&(w.removeEventListener("online",this.vr),this.vr=void 0),this.pr&&(w.removeEventListener("offline",this.pr),this.pr=void 0)),this.tr)){var n=e.requestOptions;try{this._instance._send_request(k({},n,{transport:"sendBeacon"}))}catch(i){A.error(i)}}this.tr=[]}}class dm{constructor(e){this.yr=()=>{var n,i,r,s;this.br||(this.br={});var o=this.scrollElement(),a=this.scrollY(),l=o?Math.max(0,o.scrollHeight-o.clientHeight):0,u=a+(o?.clientHeight||0),c=o?.scrollHeight||0;this.br.lastScrollY=Math.ceil(a),this.br.maxScrollY=Math.max(a,(n=this.br.maxScrollY)!==null&&n!==void 0?n:0),this.br.maxScrollHeight=Math.max(l,(i=this.br.maxScrollHeight)!==null&&i!==void 0?i:0),this.br.lastContentY=u,this.br.maxContentY=Math.max(u,(r=this.br.maxContentY)!==null&&r!==void 0?r:0),this.br.maxContentHeight=Math.max(c,(s=this.br.maxContentHeight)!==null&&s!==void 0?s:0)},this._instance=e}get _r(){return this._instance.config.scroll_root_selector}getContext(){return this.br}resetContext(){var e=this.br;return setTimeout(this.yr,0),e}startMeasuringScrollPosition(){ve(w,"scroll",this.yr,{capture:!0}),ve(w,"scrollend",this.yr,{capture:!0}),ve(w,"resize",this.yr)}scrollElement(){if(!this._r)return w?.document.documentElement;var e=U(this._r)?this._r:[this._r];for(var n of e){var i=w?.document.querySelector(n);if(i)return i}}wr(e){var n=e==="y"?"scrollTop":"scrollLeft";if(this._r){var i=this.scrollElement();return i&&i[n]||0}return w?e==="y"?w.scrollY||w.pageYOffset||w.document.documentElement.scrollTop||0:w.scrollX||w.pageXOffset||w.document.documentElement.scrollLeft||0:0}scrollY(){return this.wr("y")}scrollX(){return this.wr("x")}}var fm=t=>_f(t?.config.mask_personal_data_properties,t?.config.custom_personal_data_properties,t?.config.disable_capture_url_hashes);class Jc{constructor(e,n,i,r){this.kr=s=>{var o=this.Sr();if(!o||o.sessionId!==s){var a={sessionId:s,props:this.Cr(this._instance)};this.Mr.register({[ua]:a})}},this._instance=e,this.Tr=n,this.Mr=i,this.Cr=r||fm,this.Tr.onSessionId(this.kr)}Sr(){return this.Mr.props[ua]}getSetOnceProps(){var e,n=(e=this.Sr())==null?void 0:e.props;return n?"r"in n?yf(n,this._instance.config.disable_capture_url_hashes):{$referring_domain:n.referringDomain,$pathname:n.initialPathName,utm_source:n.utm_source,utm_campaign:n.utm_campaign,utm_medium:n.utm_medium,utm_content:n.utm_content,utm_term:n.utm_term}:{}}getSessionProps(){var e={};return ie(ll(this.getSetOnceProps()),((n,i)=>{i==="$current_url"&&(i="url"),e["$session_entry_"+Go(i)]=n})),e}}class pl{on(e,n){return this.Er[e]||(this.Er[e]=[]),this.Er[e].push(n),()=>{this.Er[e]=this.Er[e].filter((i=>i!==n))}}emit(e,n){for(var i of this.Er[e]||[])i(n);for(var r of this.Er["*"]||[])r(e,n)}constructor(){this.Er={}}}var Ei=pe("[SessionId]");class Zc{on(e,n){return this.Ir.on(e,n)}constructor(e,n,i){var r;if(this.Pr=null,this.Rr=[],this.Ar=void 0,this.Fr=!1,this.Ir=new pl,this.Lr=(u,c)=>!(!Bt(u)||!Bt(c))&&Math.abs(u-c)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode===Ht)throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.Ne=e.config,this.Mr=e.persistence,this.Or=void 0,this.Dr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.$r=n||Ut,this.Nr=i||Ut;var s=this.Ne.persistence_name||this.Ne.token;if(this._sessionTimeoutMs=1e3*Ct(this.Ne.session_idle_timeout_seconds||1800,60,36e3,Ei.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.qr(),this.jr="ph_"+s+"_window_id",this.Br="ph_"+s+"_primary_window_exists",this.Hr()){var o=be.H(this.jr),a=be.H(this.Br);o&&!a?this.Or=o:be.q(this.jr),be.F(this.Br,!0)}if((r=this.Ne.bootstrap)!=null&&r.sessionID)try{var l=(u=>{var c=this.Ne.bootstrap.sessionID.replace(/-/g,"");if(c.length!==32)throw new Error("Not a valid UUID");if(c[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(c.substring(0,12),16)})();this.Ur(this.Ne.bootstrap.sessionID,new Date().getTime(),l)}catch(u){Ei.error("Invalid sessionID in bootstrap",u)}this.zr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return C(this.Rr)&&(this.Rr=[]),this.Rr.push(e),this.Dr&&e(this.Dr,this.Or),()=>{this.Rr=this.Rr.filter((n=>n!==e))}}Hr(){return this.Ne.persistence!=="memory"&&!this.Mr.xi&&be.N()}Wr(e){e!==this.Or&&(this.Or=e,this.Hr()&&be.F(this.jr,e))}Vr(){return this.Or?this.Or:this.Hr()?be.H(this.jr):null}Zr(e){var n=this.Pr;return!Ve(n)&&!Ve(e)&&5e3>Math.abs(e-n)}Ur(e,n,i){var r=n!==this._sessionActivityTimestamp,s=!(e!==this.Dr||i!==this._sessionStartTimestamp);this._sessionStartTimestamp=i,this._sessionActivityTimestamp=n,this.Dr=e,s&&!r||s&&this.Zr(n)||(this.Pr=n,this.Mr.register({[Gn]:[n,e,i]}))}Gr(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return Bt(n)&&n>0}Qr(){this.Gr()?this.Mr.refreshKey(Gn):(this.Mr.flush(),this.Mr.load())}Kr(){var e;if(!Ve(this._sessionActivityTimestamp)&&this._sessionActivityTimestamp!==this.Pr){this.Qr();var n=this.Jr();n[1]===this.Dr&&n[2]===this._sessionStartTimestamp&&(this.Pr=this._sessionActivityTimestamp,this.Mr.register({[Gn]:[this._sessionActivityTimestamp,(e=this.Dr)!==null&&e!==void 0?e:null,this._sessionStartTimestamp]}),this.Mr.flush())}}Yr(){var e=this.Jr()[0],n=Bt(e)?e:0,i=Bt(this._sessionActivityTimestamp)?this._sessionActivityTimestamp:0;return Math.max(n,i)}Xr(e){return this.Qr(),this.Lr(e,this.Yr())}Jr(){var e=this.Mr.props[Gn];return U(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this.Pr=null,clearTimeout(this.tn),this.tn=void 0,this.Ur(null,null,null)}destroy(){this.Fr=!0,this.Kr(),clearTimeout(this.tn),this.tn=void 0,this.Ar&&w&&(w.removeEventListener(Qr,this.Ar,{capture:!1}),this.Ar=void 0),this.Rr=[]}zr(){this.Ar=()=>{this.Kr(),this.Hr()&&be.q(this.Br)},ve(w,Qr,this.Ar,{capture:!1})}checkAndGetSessionAndWindowId(e,n){if(e===void 0&&(e=!1),n===void 0&&(n=null),this.Ne.cookieless_mode===Ht)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var i=n||new Date().getTime(),r=this.Jr(),s=r[1],o=r[2],a=this.Yr(),l=this.Vr(),u=Bt(o)&&Math.abs(i-o)>864e5,c=!1,d=!1,f=!s,h=s,p=!f&&!e&&this.Lr(i,a);if(p){(p=this.Xr(i))||Ei.info("cross-tab refresh kept the session alive",{sessionId:s});var g=this.Jr();s=g[1],o=g[2]}f||p||u?(s=this.$r(),l=this.Nr(),Ei.info("new session ID generated",{sessionId:s,windowId:l,changeReason:{noSessionId:f,activityTimeout:p,sessionPastMaximumLength:u}}),o=i,c=!0):(l||(l=this.Nr(),c=!0),(d=s!==h)&&(Ei.info("adopted cross-tab session id",{sessionId:s,windowId:l}),c=!0));var m=Bt(a)&&e&&!u?a:i,v=Bt(o)?o:new Date().getTime();this.Wr(l),this.Ur(s,m,v),e||this.qr();var S={noSessionId:f,activityTimeout:p,sessionPastMaximumLength:u,crossTabAdoption:d};return c&&this.Rr.forEach((b=>b(s,l,S))),{sessionId:s,windowId:l,sessionStartTimestamp:v,changeReason:c?S:void 0,lastActivityTimestamp:a}}qr(){this.Fr||(clearTimeout(this.tn),this.tn=setTimeout((()=>{if(!this.Fr)if(this.Xr(new Date().getTime())){var e=this.Dr;this.resetSessionId(),this.Ir.emit("forcedIdleReset",{idleSessionId:e})}else this.qr()}),1.1*this.sessionTimeoutMs))}}var $f=function(t,e){if(!t)return!1;var n=t.userAgent;if(n&&mc(n,e))return!0;try{var i=t?.userAgentData;if(i!=null&&i.brands&&i.brands.some((r=>mc(r?.brand,e))))return!0}catch{}return!!t.webdriver};function Mf(){return(Mf=se((function*(){var t=Ue?.userAgentData;if(t!=null&&t.getHighEntropyValues)try{var e=yield t.getHighEntropyValues(["model"]),n=e?.model;return X(n)&&n.length>0?n:void 0}catch(i){return void A.info("Unable to resolve $device_model from userAgentData.getHighEntropyValues",i)}}))).apply(this,arguments)}var os=function(t,e){if(!(function(n){try{new RegExp(n)}catch{return!1}return!0})(e))return!1;try{return new RegExp(e).test(t)}catch{return!1}};function Fo(t,e,n){return Kn({distinct_id:t,userPropertiesToSet:e,userPropertiesToSetOnce:n})}var Lf={exact:(t,e)=>e.some((n=>t.some((i=>n===i)))),is_not:(t,e)=>e.every((n=>t.every((i=>n!==i)))),regex:(t,e)=>e.some((n=>t.some((i=>os(n,i))))),not_regex:(t,e)=>e.every((n=>t.every((i=>!os(n,i))))),icontains:(t,e)=>e.map(yr).some((n=>t.map(yr).some((i=>n.includes(i))))),not_icontains:(t,e)=>e.map(yr).every((n=>t.map(yr).every((i=>!n.includes(i))))),gt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>i>parseFloat(r)))})),lt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>it.toLowerCase();function Nf(t,e){return!t||Object.entries(t).every((n=>{var i=n[1],r=e?.[n[0]];if(C(r)||Ve(r))return!1;var s=[String(r)],o=Lf[i.operator];return!!o&&o(i.values,s)}))}var xa="custom",Xc="i.posthog.com",hm=/^\/static\//;class pm{constructor(e){this.en={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,n=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return n||(n=this.apiHost.replace("."+Xc,".posthog.com")),n==="https://app.posthog.com"?"https://us.posthog.com":n}get region(){return this.en[this.apiHost]||(this.en[this.apiHost]=/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"us":/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"eu":xa),this.en[this.apiHost]}rn(e){if(hm.test(e)){var n=this.instance.config.asset_host;if(typeof n=="string")return n.trim().replace(/\/$/,"")||void 0}}endpointFor(e,n){if(n===void 0&&(n=""),n&&(n=n[0]==="/"?n:"/"+n),e==="ui")return this.uiHost+n;if(e==="flags")return this.flagsApiHost+n;if(e==="assets"){var i=this.rn(n);if(i)return""+i+n}if(this.region===xa)return this.apiHost+n;var r=Xc+n;switch(e){case"assets":return"https://"+this.region+"-assets."+r;case"api":return"https://"+this.region+"."+r}}}function Of(t){var e;return!((e=t.conditions)==null||(e=e.events)==null||(e=e.values)==null||!e.length)}var Q=pe("[Surveys]"),Bf="seenSurvey_",Df=t=>{try{var e=(n=>((i,r)=>""+Bf+(function(s){return s.current_iteration&&s.current_iteration>0?s.id+"_"+s.current_iteration:s.id})(r))(0,n))(t);if(localStorage.getItem(e))return;localStorage.setItem(e,"true")}catch(n){Q.error("Failed to persist survey seen state",n)}},gm=[Io.Popover,Io.Widget,Io.API],mm={ignoreConditions:!1,ignoreDelay:!1,displayType:_a.Popover},vm=pe("[PostHog ExternalIntegrations]"),_m={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class ym{constructor(e){this._instance=e}ai(e,n){var i;(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,e,(r=>{if(r)return vm.error("failed to load script",r);n()}))}startIfEnabledOrStop(){var e=this,n=function(){var s,o,a,l=i[0],u=i[1];!u||(s=B.__PosthogExtensions__)!=null&&(s=s.integrations)!=null&&s[l]||e.ai(_m[l],(()=>{var c;(c=B.__PosthogExtensions__)==null||(c=c.integrations)==null||(c=c[l])==null||c.start(e._instance)})),!u&&(o=B.__PosthogExtensions__)!=null&&(o=o.integrations)!=null&&o[l]&&((a=B.__PosthogExtensions__)==null||(a=a.integrations)==null||(a=a[l])==null||a.stop())};for(var i of Object.entries((r=this._instance.config.integrations)!==null&&r!==void 0?r:{})){var r;n()}}}class wm{constructor(e,n){this.rt=e,this.nn=n,this.sn=new Map,this.an=!1}add(e){var n=this;return se((function*(){if(n.an)throw new Error("Cannot add an extension to a disposed ExtensionRuntime");if(n.sn.has(e.name))throw new Error('Browser extension "'+e.name+'" is already registered');n.sn.set(e.name,e);try{var i=e.setup(n.nn);i&&(yield i)}catch(s){var r=n.sn.get(e.name)===e;r&&n.sn.delete(e.name),n.rt.error('Failed to set up browser extension "'+e.name+'"',s),r&&n.ln(e)}}))()}dispose(){if(!this.an){this.an=!0;var e=Array.from(this.sn.values()).reverse();for(var n of(this.sn.clear(),e))this.ln(n)}}ln(e){try{var n=e.dispose==null?void 0:e.dispose();n&&De(n.then)&&n.then(void 0,(i=>{this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}))}catch(i){this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}}}class bm{constructor(e){this._instance=e}initialize(){}get(e){var n=this._instance.persistence;if(typeof e=="string")return n?.get_property(e);var i={};for(var r of e){var s=n?.get_property(r);C(s)||(i[r]=s)}return i}set(e,n){var i;(i=this._instance.persistence)==null||i.register(typeof e=="string"?{[e]:n}:e)}remove(e){var n;(n=this._instance.persistence)==null||n.unregister(e)}}var Qc="extensionsRemoteConfig";class Em{constructor(e){this.an=!1,this.instance=e,this.rt=A,this.un=e.hn,this.kv=new bm(e),this.onEvent=n=>_r(this.instance.on("eventCaptured",(i=>{try{n({event:i.event,properties:i.properties})}catch(r){this.rt.error("Browser extension event listener failed",r)}}))),this.onRemoteConfig=n=>{if(this.an)return _r((()=>{}));var i=s=>{try{n(s)}catch(o){this.rt.error("Browser extension remote config listener failed",o)}},r=this.instance.dn.on(Qc,i);return this.un&&i(this.un),_r(r)},this.vn=new wm(A.createLogger("[BrowserExtensions]"),this)}get logger(){return this.rt}get distinctId(){return this.instance.get_distinct_id()}get anonymousId(){var e;return(e=this.instance.get_property(Ki))!==null&&e!==void 0?e:this.distinctId}get deviceId(){var e=this.instance.get_property(Ki);return typeof e=="string"?e:void 0}get library(){return{name:ne.LIB_NAME,version:ne.LIB_VERSION}}get initialPersonProperties(){var e,n;return(e=(n=this.instance.persistence)==null?void 0:n.get_initial_props())!==null&&e!==void 0?e:{}}get groups(){return this.instance.getGroups()}get session(){try{var e,n,i,r,s=(e=this.instance.sessionManager)==null?void 0:e.checkAndGetSessionAndWindowId(!0);return{sessionId:(n=s?.sessionId)!==null&&n!==void 0?n:"",windowId:(i=s?.windowId)!==null&&i!==void 0?i:"",sessionStartTimestamp:(r=s?.sessionStartTimestamp)!==null&&r!==void 0?r:0}}catch{return{sessionId:"",windowId:"",sessionStartTimestamp:0}}}get projectToken(){return this.instance.config.token}add(e){return this.vn.add(e)}capture(e,n,i){var r=this;return se((function*(){i?r.instance.capture(e,n,{timestamp:i.timestamp,uuid:i.uuid,$set:i.set,$set_once:i.setOnce}):r.instance.capture(e,n)}))()}registerDynamicEventProperties(e){return _r(this.instance.cn(e))}handleRemoteConfig(e){this.an||(this.un=e,this.instance.dn.emit(Qc,e))}sendRequest(e,n){var i=this;return se((function*(){var r;n===void 0&&(n={});var s=i.instance.requestRouter.endpointFor((r=n.target)!==null&&r!==void 0?r:"api",e),o={method:n.method,url:n.query?Is(s,n.query):s,data:n.body,headers:n.headers,timeout:n.timeoutMs,fireCallbackOnDrop:!0,transport:n.transport,compression:n.compression,timestampMode:n.sentAt};return n.transport==="sendBeacon"?(i.instance._send_request(o),{statusCode:202}):new Promise((a=>{o.callback=a,i.instance._send_request(o)}))}))()}dispose(){this.an||(this.an=!0,this.vn.dispose())}}var Hi={},Ro=0,as=()=>{},eu='Consent opt in/out is not valid with cookieless_mode="always" and will be ignored',Si="Surveys module not available",tu="sanitize_properties is deprecated. Use before_send instead",jf="Invalid value for property_denylist config: ",Sm=["token","distinct_id",Vd],Vn="posthog",Uf=!sm&&ze?.indexOf("MSIE")===-1&&ze?.indexOf("Mozilla")===-1,To=t=>{var e;return k({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,asset_host:null,token:"",autocapture:!0,cross_subdomain_cookie:xg(F?.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:as,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:t??"unset",__preview_deferred_init_extensions:!1,__preview_external_dependency_versioned_paths:!1,__preview_cookie_wins_on_conflict:!1,debug:me&&X(me?.search)&&me.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disableDeviceModel:!1,disable_external_dependency_loading:!1,strict_script_versioning:!1,enable_recording_console_log:void 0,secure_cookie:(w==null||(e=w.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_feature_flags_dedup_per_session:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error(n){A.error("Bad HTTP status: "+n.statusCode+" "+n.text)},get_device_id:n=>n,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:pa,before_send:void 0,get_current_url:void 0,request_queue_config:{flush_interval_ms:Sa},error_tracking:{},_onCapture:as},(n=>({rageclick:n&&n>="2026-05-30"?{content_ignorelist:Ng,ignore_text_selection:!0}:!n||"2025-11-30">n||{content_ignorelist:!0},capture_pageview:!n||"2025-05-24">n||"history_change",session_recording:n&&n>="2026-06-25"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6},streamNetworkBody:!0}:n&&n>="2026-05-30"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6}}:n&&n>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:n&&n>="2026-01-30"?"head":"body",internal_or_test_user_hostname:n&&n>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0,persistence_save_debounce_ms:n&&n>="2026-05-30"?250:0,split_storage:!(!n||"2026-05-30">n),detect_google_search_app:!(!n||"2026-05-30">n),disable_capture_url_hashes:!(!n||"2026-06-25">n)}))(t))},xm=[["process_person","person_profiles"],["xhr_headers","request_headers"],["cookie_name","persistence_name"],["disable_cookie","disable_persistence"],["__preview_disable_beacon","disable_beacon"],["store_google","save_campaign_params"],["verbose","debug"]],nu=t=>{var e={};for(var n of xm){var i=n[0],r=n[1];C(t[i])||(e[r]=t[i])}var s=fe({},e,t),o=t.__preview_external_dependency_versioned_paths;return C(o)||(C(t.strict_script_versioning)&&(s.strict_script_versioning=!!o),X(o)&&C(t.asset_host)&&(s.asset_host=o)),U(t.property_blacklist)&&(C(t.property_denylist)?s.property_denylist=t.property_blacklist:U(t.property_denylist)?s.property_denylist=[...t.property_blacklist,...t.property_denylist]:A.error(jf+t.property_denylist)),s};class Im{constructor(){this.__forceAllowLocalhost=!1}get fn(){return this.__forceAllowLocalhost}set fn(e){A.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class Je{pn(e,n){if(e){var i=this.sn.indexOf(e);i!==-1&&this.sn.splice(i,1)}return this.sn.push(n),n.initialize==null||n.initialize(),n}gn(){return this.config.cookieless_mode===Ht||this.config.cookieless_mode===In&&this.consent.isRejected()}get decideEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){var e;this.webPerformance=new Im,this.mn=!1,this.version=ne.LIB_VERSION,this.yn=new Set,this.bn="",this.dn=new pl,this.sn=[],this._n=[],this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=To(),this.SentryIntegration=zg,this.sentryIntegration=i=>(function(r,s){var o=df(r,s);return{name:uf,processEvent:a=>o(a)}})(this,i),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.wn=!1,this.kn=null,this.xn=null,this.Sn=null,this.scrollManager=new dm(this),this.pageViewManager=new Uc(this),this.rateLimiter=new Qg(this),this.requestRouter=new pm(this),this.consent=new Rg(this),this.externalIntegrations=new ym(this);var n=(e=Je.__defaultExtensionClasses)!==null&&e!==void 0?e:{};this.featureFlags=n.featureFlags&&new n.featureFlags(this),this.toolbar=n.toolbar&&new n.toolbar(this),this.surveys=n.surveys&&new n.surveys(this),this.conversations=n.conversations&&new n.conversations(this),this.logs=n.logs&&new n.logs(this),this.metrics=n.metrics&&new n.metrics(this),this.experiments=n.experiments&&new n.experiments(this),this.exceptions=n.exceptions&&new n.exceptions(this),this.people={set:(i,r,s)=>{var o=X(i)?{[i]:r}:i;this.setPersonProperties(o),s?.({})},set_once:(i,r,s)=>{var o=X(i)?{[i]:r}:i;this.setPersonProperties(void 0,o),s?.({})}},this.on("eventCaptured",(i=>A.info('send "'+i?.event+'"',i)))}init(e,n,i){if(i&&i!==Vn){var r,s=(r=Hi[i])!==null&&r!==void 0?r:new Je;return s._init(e,n,i),Hi[i]=s,Hi[Vn][i]=s,s}return this._init(e,n,i)}_init(e,n,i){var r,s;n===void 0&&(n={});var o,a=X(e)?e.trim():"";if(!a)return A.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return a!==((o=this.config)==null?void 0:o.token)?console.warn("[PostHog.js]","You have already initialized PostHog with a different project token! Re-initializing is a no-op, so events will keep going to the project this instance was initialized with. To capture into a second project, load PostHog once, then initialize a named instance after the SDK has loaded, e.g. posthog.init('"+a+"', { ... }, 'project2')"):console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config=To(n.defaults),n.debug=this.Cn(n.debug),this.Mn=n,this.Tn=[],n.person_profiles?this.xn=n.person_profiles:n.process_person&&(this.xn=n.process_person);var l=To(n.defaults),u=nu(n),c=fe({},l,u,{name:i,token:a});he(l.rageclick)&&he(u.rageclick)&&(c.rageclick=fe({},l.rageclick,u.rageclick)),he(l.session_recording)&&he(u.session_recording)&&(c.session_recording=fe({},l.session_recording,u.session_recording)),this.set_config(c),this.config.on_xhr_error&&A.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=n.disable_compression?void 0:je.GZipJS;var d=this.En();if(this.persistence=new xo(this.config,d),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new xo(k({},this.config,{persistence:"sessionStorage"}),d,!1),this.bn="ph_"+(this.config.persistence_name||this.config.token)+"_session_registered_properties",this.config.persistence!=="memory"&&!d&&be.N()){var f=be.H(this.bn);U(f)&&f.forEach((I=>{X(I)&&this.yn.add(I)}))}else be.q(this.bn);var h=k({},this.persistence.props),p=k({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.In=new lm((I=>this.Pn(I)),this.config.request_queue_config),this.Rn=new um(this),this.__request_queue=[];var g=this.gn();if(g||(this.sessionManager=new Zc(this),this.sessionPropsManager=new Jc(this,this.sessionManager,this.persistence),this.sessionManager.onSessionId(((I,T,E)=>{(E!=null&&E.activityTimeout||E!=null&&E.sessionPastMaximumLength||E!=null&&E.crossTabAdoption)&&this.An()}))),this.Fn(),this.config.__preview_deferred_init_extensions?(A.info("Deferring extension initialization to improve startup performance"),setTimeout((()=>{this.Ln(g)}),0)):(A.info("Initializing extensions synchronously"),this.Ln(g)),ne.DEBUG=ne.DEBUG||this.config.debug,ne.DEBUG&&A.info("Starting in debug mode",{this:this,config:n,thisC:k({},this.config),p:h,s:p}),!this.config.identity_distinct_id||(r=n.bootstrap)!=null&&r.distinctID||(n.bootstrap=k({},n.bootstrap,{distinctID:this.config.identity_distinct_id,isIdentifiedID:!0})),((s=n.bootstrap)==null?void 0:s.distinctID)!==void 0){var m=n.bootstrap.distinctID,v=this.get_distinct_id(),S=this.persistence.get_property(ot);if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&S===jn)this.identify(m);else if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&S===mn)A.warn("Bootstrap distinctID differs from an already-identified user. The existing identity is preserved. Call reset() before reinitializing if you intend to switch users.");else{var b=this.config.get_device_id(Ut()),_=n.bootstrap.isIdentifiedID?b:m;this.persistence.set_property(ot,n.bootstrap.isIdentifiedID?mn:jn),this.register({distinct_id:m,$device_id:_})}}if(g)this.register_once({distinct_id:hr,$device_id:null},"");else if(!this.get_distinct_id()){var x=this.config.get_device_id(Ut());this.register_once({distinct_id:x,$device_id:x},""),this.persistence.set_property(ot,jn)}return ve(w,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),n.segment?(function(I,T){var E=I.config.segment;if(!E)return T();(function(P,$){var O=P.config.segment;if(!O)return $();var L=G=>{var V=()=>G.anonymousId()||Ut();P.config.get_device_id=V,G.id()&&(P.register({distinct_id:G.id(),$device_id:V()}),P.persistence.set_property(ot,mn)),$()},N=O.user();"then"in N&&De(N.then)?N.then(L):L(N)})(I,(()=>{E.register((P=>{typeof Promise<"u"&&Promise.resolve||Eo.warn("This browser does not have Promise support, and can not use the segment integration");var $=(O,L)=>{if(!L)return O;O.event.userId||O.event.anonymousId===P.get_distinct_id()||(Eo.info("No userId set, resetting PostHog"),P.reset()),O.event.userId&&O.event.userId!==P.get_distinct_id()&&(Eo.info("UserId set, identifying with PostHog"),P.identify(O.event.userId));var N=P.calculateEventProperties(L,O.event.properties);return O.event.properties=Object.assign({},N,O.event.properties),O};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:O=>$(O,O.event.event),page:O=>$(O,qn),identify:O=>$(O,yo),screen:O=>$(O,"$screen")}})(I)).then((()=>{T()}))}))})(this,(()=>this.On())):this.On(),De(this.config._onCapture)&&this.config._onCapture!==as&&(A.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",(I=>this.config._onCapture(I.event,I)))),this.config.ip&&A.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this.config.disableDeviceModel||(function(){return Mf.apply(this,arguments)})().then((I=>{I&&this.register({[vo]:I})})).catch(as),this}Fn(){var e,n,i,r,s,o,a=(e=(n=this.config.__extensionClasses)==null?void 0:n.featureFlags)!==null&&e!==void 0?e:(i=Je.__defaultExtensionClasses)==null?void 0:i.featureFlags;a&&(this.featureFlags&&this.featureFlags instanceof a||((r=this.Dn)==null||r.call(this),this.Dn=void 0,this.featureFlags=new a(this)),De(this.featureFlags.onReloading)&&De(this.featureFlags.setup)?this.Dn||(this.Dn=this.featureFlags.onReloading((()=>{this.dn.emit("featureFlagsReloading",!0)})),this.$n().add(this.featureFlags)):(s=(o=this.featureFlags).initialize)==null||s.call(o))}Ln(e){var n,i,r,s,o,a,l,u=performance.now(),c=k({},Je.__defaultExtensionClasses,this.config.__extensionClasses),d=[];c.exceptions&&this.sn.push(this.exceptions=(n=this.exceptions)!==null&&n!==void 0?n:new c.exceptions(this)),c.historyAutocapture&&this.sn.push(this.historyAutocapture=new c.historyAutocapture(this)),c.tracingHeaders&&this.sn.push(this.tracingHeaders=new c.tracingHeaders(this)),c.siteApps&&this.sn.push(this.siteApps=new c.siteApps(this)),c.sessionRecording&&!e&&this.sn.push(this.sessionRecording=new c.sessionRecording(this)),this.config.disable_scroll_properties||d.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),c.autocapture&&this.sn.push(this.autocapture=new c.autocapture(this)),c.surveys&&this.sn.push(this.surveys=(i=this.surveys)!==null&&i!==void 0?i:new c.surveys(this)),c.logs&&this.sn.push(this.logs=(r=this.logs)!==null&&r!==void 0?r:new c.logs(this)),c.metrics&&this.sn.push(this.metrics=(s=this.metrics)!==null&&s!==void 0?s:new c.metrics(this)),c.conversations&&this.sn.push(this.conversations=(o=this.conversations)!==null&&o!==void 0?o:new c.conversations(this)),c.productTours&&this.sn.push(this.productTours=new c.productTours(this)),c.heatmaps&&this.sn.push(this.heatmaps=new c.heatmaps(this)),c.webVitalsAutocapture&&this.sn.push(this.webVitalsAutocapture=new c.webVitalsAutocapture(this)),c.exceptionObserver&&this.sn.push(this.exceptionObserver=new c.exceptionObserver(this)),c.deadClicksAutocapture&&this.sn.push(this.deadClicksAutocapture=new c.deadClicksAutocapture(this,Wg)),c.toolbar&&this.sn.push(this.toolbar=(a=this.toolbar)!==null&&a!==void 0?a:new c.toolbar(this)),c.experiments&&this.sn.push(this.experiments=(l=this.experiments)!==null&&l!==void 0?l:new c.experiments(this)),this.sn.forEach((f=>{f.initialize&&d.push((()=>{f.initialize==null||f.initialize()}))})),d.push((()=>{if(this.Nn){var f=this.Nn;this.Nn=void 0,this.sn.forEach((h=>h.onRemoteConfig==null?void 0:h.onRemoteConfig(f)))}})),this.qn(d,u)}qn(e,n){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-n>=30&&e.length>0)return void setTimeout((()=>{this.qn(e,n)}),0);var i=e.shift();if(i)try{i()}catch(s){A.error("Error initializing extension:",s)}}var r=Math.round(performance.now()-n);this.register_for_session({[Gd]:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",[Kd]:r}),this.config.__preview_deferred_init_extensions&&A.info("PostHog extensions initialized ("+r+"ms)")}Zi(e){var n;if(!F||!F.body)return A.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((()=>{this.Zi(e)}),500);if(this.config.__preview_deferred_init_extensions&&(this.Nn=e),this.hn=e,this.compression=void 0,e.ok){var i,r=e.config;r.supportedCompression&&!this.config.disable_compression&&(this.compression=j(r.supportedCompression,je.GZipJS)?je.GZipJS:j(r.supportedCompression,je.Base64)?je.Base64:void 0),(i=r.analytics)!=null&&i.endpoint&&(this.analyticsDefaultEndpoint=r.analytics.endpoint)}this.set_config({person_profiles:this.xn?this.xn:pa}),(n=this.jn)==null||n.handleRemoteConfig(e),this.sn.forEach((s=>s.onRemoteConfig==null?void 0:s.onRemoteConfig(e)))}On(){try{this.config.loaded(this)}catch(i){A.critical("`loaded` function failed",i)}if(this.Bn(),this.config.internal_or_test_user_hostname&&me!=null&&me.hostname){var e=me.hostname,n=this.config.internal_or_test_user_hostname;(typeof n=="string"?e===n:n.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||this.gn())&&this.Hn()}),1),this.Un=new bf(this),this.Un.load()}Bn(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.In)==null||e.enable())}_dom_loaded(){this.is_capturing()&&pr(this.__request_queue,(e=>this.Pn(e))),this.__request_queue=[],this.Bn()}_handle_unload(){var e,n,i,r,s;(e=this.surveys)==null||e.handlePageUnload==null||e.handlePageUnload(),(n=this.metrics)==null||n.flush("sendBeacon"),this.config.request_batching?(this.zn()&&this.capture(_o),(i=this.logs)==null||i.flushLogs("sendBeacon"),(r=this.In)==null||r.unload(),(s=this.Rn)==null||s.unload()):this.zn()&&this.capture(_o,null,{transport:"sendBeacon"})}_send_request(e){this.__loaded?Uf?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)?e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:429})):(e.transport=e.transport||this.config.api_transport,e.headers=k({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,(C(this.config.disable_beacon)?this.config.__preview_disable_beacon:this.config.disable_beacon)&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(n=>{var i,r,s,o=k({},n);o.timeout=o.timeout||6e4;var a,l,u,c,d,f=(i=o.transport)!==null&&i!==void 0?i:"fetch";f==="sendBeacon"&&C(o.compression)&&o.data&&(o.compression=je.Base64),o.method==="POST"&&o.data&&(o.timestampMode==="capture-body"?o.data={api_key:(l=(d=(c=U(a=o.data)?a:[a])[0])==null||(u=d.properties)==null?void 0:u.token)!==null&&l!==void 0?l:d?.token,batch:c,sent_at:new Date().toISOString()}:o.timestampMode==="body"&&(o.data=(function(m,v){return v===void 0&&(v=new Date().toISOString()),U(m)?m.map((S=>k({},S,{sent_at:v}))):k({},m,{sent_at:v})})(o.data))),o.url=Yc(o.url,o.method,o.compression,o.timestampMode);var h=Tr.filter((m=>!o.disableTransport||!m.transport||!o.disableTransport.includes(m.transport))),p=(r=(s=(function(m,v){for(var S=0;m.length>S;S++)if(m[S].transport===f)return m[S]})(h))==null?void 0:s.method)!==null&&r!==void 0?r:h[0].method;if(!p)throw new Error("No available transport method");var g=m=>{try{p(m)}catch(v){Rf(v)?A.warn(v):A.error(v),o.callback==null||o.callback({statusCode:0,error:v})}};f!=="sendBeacon"&&o.data&&o.compression===je.GZipJS&&kp&&typeof Promise<"u"&&!Rr?om(o).then((m=>{g(m)})).catch((m=>{if(gc(m))return Rr=!0,void g(k({},o,{compression:void 0,url:Yc(n.url,n.method,void 0,n.timestampMode)}));(v=>{if(!v||typeof v!="object")return!1;var S="name"in v?String(v.name):"";return gc(v)||S===od})(m)&&(Rr=!0),g(o)})):p(o)})(k({},e,{callback:n=>{var i,r;this.rateLimiter.checkForLimiting(n),400>n.statusCode||(i=(r=this.config).on_request_error)==null||i.call(r,n),e.callback==null||e.callback(n)}}))):e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:0}))}Pn(e){this.Rn?this.Rn.retriableRequest(e):this._send_request(e)}_execute_array(e){Ro++;try{var n,i=[],r=[],s=[];pr(e,(a=>{if(a)if(U(n=a[0]))s.push(a);else if(De(a))try{a.call(this)}catch(l){A.error("Error executing queued PostHog call",a,l)}else U(a)&&n==="alias"?i.push(a):U(a)&&n.indexOf("capture")!==-1&&De(this[n])?s.push(a):r.push(a)}));var o=function(a,l){pr(a,(function(u){try{if(U(u[0])){var c=l;ie(u,(function(d){c=c[d[0]].apply(c,d.slice(1))}))}else l[u[0]].apply(l,u.slice(1))}catch(d){A.error("Error executing queued PostHog call",u,d)}}))};o(i,this),o(r,this),o(s,this)}finally{Ro--}}push(e){if(Ro>0&&U(e)&&X(e[0])){var n=Je.prototype[e[0]];De(n)&&n.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,n,i){var r,s,o,a,l;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.In){if(this.is_capturing())if(!C(e)&&X(e)){var u=!this.config.opt_out_useragent_filter&&this._is_bot();if(!u||this.config.__preview_capture_bot_pageviews){var c=i!=null&&i.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(c==null||!c.isRateLimited){n!=null&&n.$current_url&&!X(n?.$current_url)&&(A.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),n==null||delete n.$current_url),e!=="$exception"||i!=null&&i.Wn||A.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var d=new Date,f=i?.timestamp||d,h=wc(i?.uuid,Ut),p={uuid:h,event:e,properties:this.calculateEventProperties(e,n||{},f,h)};e===qn&&this.config.__preview_capture_bot_pageviews&&u&&(p.event="$bot_pageview",p.properties.$browser_type="bot"),c&&(p.properties.$lib_rate_limit_remaining_tokens=c.remainingTokens);var g=e==="$feature_flag_called"&&p.properties.$feature_flag_has_experiment===!1&&this.get_property(Kr)===!0;i?.$set&&!g&&(p.$set=i?.$set);var m=i?.$unset;m&&(p.$unset=m);var v,S,b,_=g?void 0:this.Vn(i?.$set_once,e!==kc,e===yo);if(_&&(p.$set_once=_),i!=null&&i._noTruncate||(s=this.config.properties_string_max_length,o=p,a=L=>X(L)?L.slice(0,s):L,l=new Set,p=(function L(N,G){if(N!==Object(N))return a?a(N):N;if(!l.has(N)){var V;if(l.add(N),U(N))V=[],pr(N,(R=>{V.push(L(R))}));else{var M={};ie(N,((R,Z)=>{l.has(R)||(M[Z]=L(R))})),V=M}return V}})(o)),p.timestamp=f,C(i?.timestamp)||(p.properties.$event_time_override_provided=!0,p.properties.$event_time_override_system_time=d),g&&(p.properties=(function(L,N){N===void 0&&(N=[]);var G={},V=M=>{L[M]!==void 0&&(G[M]=L[M])};return Cp.forEach(V),N.forEach(V),G})(p.properties,Sm)),e===zt.DISMISSED||e===zt.SENT){var x=n?.[ko.SURVEY_ID],I=n?.[ko.SURVEY_ITERATION];Df({id:x,current_iteration:I}),p.$set=k({},p.$set,{[(v={id:x,current_iteration:I},S=e===zt.SENT?"responded":"dismissed",b="$survey_"+S+"/"+v.id,v.current_iteration&&v.current_iteration>0&&(b="$survey_"+S+"/"+v.id+"/"+v.current_iteration),b)]:!0})}else e===zt.SHOWN&&(p.$set=k({},p.$set,{[ko.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));if(e===Xg.SHOWN){var T=n?.[Wc.TOUR_TYPE];T&&(p.$set=k({},p.$set,{[Wc.TOUR_LAST_SEEN_DATE+"/"+T]:new Date().toISOString()}))}var E=k({},p.properties.$set,p.$set);if(Vt(E)||this.setPersonPropertiesForFlags(E),!H(this.config.before_send)){var P=this.Pt(p);if(!P)return;(p=P).uuid=wc(p.uuid,Ut)}this.dn.emit("eventCaptured",p);var $=(r=i?._url)!==null&&r!==void 0?r:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),O={method:"POST",url:$,data:p,compression:"best-available",timestampMode:i?._batchKey==="recordings"||/\/s\/(?:\?|$)/.test($)?"body":"capture-body",batchKey:i?._batchKey,transport:i?.transport};return!this.config.request_batching||i&&(i==null||!i._batchKey)||i!=null&&i.send_instantly?this.Pn(O):this.In.enqueue(O),p}A.critical("This capture call is ignored due to client rate limiting.")}}else A.error("No event name provided to posthog.capture")}else A.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",(n=>e(n.event,n)))}$n(){var e;return(e=this.jn)!==null&&e!==void 0?e:this.jn=new Em(this)}cn(e){this._n.push(e);var n=!0;return()=>{if(n){n=!1;var i=this._n.indexOf(e);i!==-1&&this._n.splice(i,1)}}}calculateEventProperties(e,n,i,r,s){if(i=i||new Date,!this.persistence||!this.sessionPersistence)return n;var o=s?void 0:this.persistence.remove_event_timer(e),a=k({},n);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.gn()&&(a[Vd]=!0),e==="$snapshot"){var l=k({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!X(a.distinct_id)&&!ke(a.distinct_id)||Ko(a.distinct_id))&&A.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),a}var u,c=(function(x,I,T,E){var P,$,O,L;if(E===void 0&&(E=!1),!ze)return{};var N,G=x?[...ii,...I||[]]:[],V=(function(On){for(var He=0;_c.length>He;He++){var Bn=_c[He],$t=Bn[1],Mt=Bn[0].exec(On),ct=Mt&&(De($t)?$t(Mt,On):$t);if(ct)return ct}return["",""]})(ze),M=V[0],R=V[1],Z=(N=typeof navigator<"u"?navigator:void 0)!=null&&N.brave?{brave:!0}:{},Ce={};C(T)||(Ce.detectGoogleSearchApp=T);var oe={},ye=(P=navigator)==null||(P=P.userAgentData)==null?void 0:P.platform,$e=($=navigator)==null?void 0:$.maxTouchPoints,ae=w==null||(O=w.screen)==null?void 0:O.width,Ie=w==null||(L=w.screen)==null?void 0:L.height,Se=w?.devicePixelRatio;C(ye)||(oe.userAgentDataPlatform=ye),C($e)||(oe.maxTouchPoints=$e),C(ae)||(oe.screenWidth=ae),C(Ie)||(oe.screenHeight=Ie),C(Se)||(oe.devicePixelRatio=Se);var Be,yt,ge,Ye,wt,gn,Re,Pe,Tt=fe(ll({$os:M,$os_version:R,$browser:Rd(ze,navigator.vendor,Z,Ce),$device:yc(ze),$device_type:(yt=ze,ge=oe,Pe=yc(yt),Pe===hd||Pe===fd||Pe==="Kobo"||Pe==="Kindle Fire"||Pe===kd?Qn:Pe===Vi||Pe===Zn||Pe===Gi||Pe===Jo?"Console":Pe===gd?"Wearable":Pe?it:ge?.userAgentDataPlatform==="Android"&&((Ye=ge?.maxTouchPoints)!==null&&Ye!==void 0?Ye:0)>0?600>Math.min((wt=ge?.screenWidth)!==null&&wt!==void 0?wt:0,(gn=ge?.screenHeight)!==null&&gn!==void 0?gn:0)/((Re=ge?.devicePixelRatio)!==null&&Re!==void 0?Re:1)?it:Qn:"Desktop"),$timezone:wf(),$timezone_offset:Yg()}),{$current_url:Ji(E?dn(me?.href):me?.href,G,Zi),$host:me?.host,$pathname:me?.pathname,$raw_user_agent:ze.length>1e3?ze.substring(0,997)+"...":ze,$browser_version:Vp(ze,navigator.vendor,Z,Ce),$browser_language:Hc(),$browser_language_prefix:(Be=Hc(),typeof Be=="string"?Be.split("-")[0]:void 0),$screen_height:w?.screen.height,$screen_width:w?.screen.width,$viewport_height:w?.innerHeight,$viewport_width:w?.innerWidth,$lib:ne.LIB_NAME,$lib_version:ne.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return ne.SDK_DIST_CHANNEL&&(Tt.$sdk_dist_channel=ne.SDK_DIST_CHANNEL),Tt})(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties,this.config.detect_google_search_app,this.config.disable_capture_url_hashes);if(this.sessionManager){var d=this.sessionManager.checkAndGetSessionAndWindowId(s,i.getTime()),f=d.windowId;a.$session_id=d.sessionId,a.$window_id=f}this.sessionPropsManager&&fe(a,this.sessionPropsManager.getSessionProps());try{var h;this.sessionRecording&&fe(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=(h=this.Rn)==null?void 0:h.length}catch(x){a.$sdk_debug_error_capturing_properties=String(x)}if(this.requestRouter.region===xa&&(a.$lib_custom_api_host=this.config.api_host),u=e!==qn||s?e!==_o||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(i):this.pageViewManager.doPageView(i,r),a=fe(a,u),e===qn&&F&&(a.title=F.title),!C(o)){var p=i.getTime()-o;a.$duration=parseFloat((p/1e3).toFixed(3))}ze&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?"bot":"browser");var g=this.persistence.properties(),m=this.sessionPersistence.properties();ie(["$referrer","$referring_domain"],(x=>{x in g&&delete m[x]}));var v={};if(this._n.length>0)for(var S of this._n.slice())try{fe(v,S())}catch(x){A.error("Failed to produce browser extension event properties",x)}(a=fe({},c,g,m,k({},v,a))).$is_identified=this._isIdentified(),U(this.config.property_denylist)?ie(this.config.property_denylist,(function(x){delete a[x]})):A.error(jf+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var b=this.config.sanitize_properties;b&&(A.error(tu),a=b(a,e));var _=this.Zn();return a.$process_person_profile=_,_&&!s&&this.Gn("_calculate_event_properties"),a}Vn(e,n,i){var r;if(n===void 0&&(n=!0),i===void 0&&(i=!1),!this.persistence||!this.Zn()||this.mn&&!i)return e;var s=this.persistence.get_initial_props(),o=(r=this.sessionPropsManager)==null?void 0:r.getSetOnceProps(),a=fe({},s,o||{},e||{}),l=this.config.sanitize_properties;return l&&(A.error(tu),a=l(a,"$set_once")),n&&(this.mn=!0),Vt(a)?void 0:a}register(e,n){var i;(i=this.persistence)==null||i.register(e,n)}register_once(e,n,i){var r;(r=this.persistence)==null||r.register_once(e,n,i)}register_for_session(e){var n;(n=this.sessionPersistence)==null||n.register(e),Object.keys(e).forEach((i=>this.yn.add(i))),this.Qn()}unregister(e){var n;(n=this.persistence)==null||n.unregister(e)}unregister_for_session(e){var n;(n=this.sessionPersistence)==null||n.unregister(e),this.yn.delete(e),this.Qn()}Kn(e,n){this.register({[e]:n})}An(){this.yn.forEach((e=>{var n;(n=this.sessionPersistence)==null||n.unregister(e)})),this.yn.clear(),this.Qn()}Qn(){var e;if(this.bn)if(this.config.persistence==="memory"||(e=this.sessionPersistence)!=null&&e.xi||!be.N())be.q(this.bn);else{var n=[];this.yn.forEach((i=>n.push(i))),n.length>0?be.F(this.bn,n):be.q(this.bn)}}getFeatureFlag(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlag(e,n)}getFeatureFlagPayload(e){var n;return(n=this.featureFlags)==null?void 0:n.getFeatureFlagPayload(e)}getFeatureFlagResult(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlagResult(e,n)}getAllFeatureFlags(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.getAllFeatureFlags())!==null&&e!==void 0?e:[]}isFeatureEnabled(e,n){var i,r;return(i=(r=this.featureFlags)==null?void 0:r.isFeatureEnabled(e,n))!==null&&i!==void 0?i:n?.defaultValue}reloadFeatureFlags(){var e;(e=this.featureFlags)==null||e.reloadFeatureFlags()}updateFlags(e,n,i){var r;(r=this.featureFlags)==null||r.updateFlags(e,n,i)}updateEarlyAccessFeatureEnrollment(e,n,i){var r;(r=this.featureFlags)==null||r.updateEarlyAccessFeatureEnrollment(e,n,i)}getEarlyAccessFeatures(e,n,i){var r;return n===void 0&&(n=!1),(r=this.featureFlags)==null?void 0:r.getEarlyAccessFeatures(e,n,i)}on(e,n){return this.dn.on(e,n)}onFeatureFlags(e){return this.featureFlags?this.featureFlags.onFeatureFlags(e):(e([],{},{errorsLoading:!0}),()=>{})}onSurveysLoaded(e){return this.surveys?this.surveys.onSurveysLoaded(e):(e([],{isLoaded:!1,error:Si}),()=>{})}onSessionId(e){var n,i;return(n=(i=this.sessionManager)==null?void 0:i.onSessionId(e))!==null&&n!==void 0?n:()=>{}}getSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getSurveys(e,n):e([],{isLoaded:!1,error:Si})}getActiveMatchingSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getActiveMatchingSurveys(e,n):e([],{isLoaded:!1,error:Si})}renderSurvey(e,n){var i;(i=this.surveys)==null||i.renderSurvey(e,n)}displaySurvey(e,n){var i;n===void 0&&(n=mm),(i=this.surveys)==null||i.displaySurvey(e,n)}cancelPendingSurvey(e){var n;(n=this.surveys)==null||n.cancelPendingSurvey(e)}canRenderSurvey(e){var n,i;return(n=(i=this.surveys)==null?void 0:i.canRenderSurvey(e))!==null&&n!==void 0?n:{visible:!1,disabledReason:Si}}canRenderSurveyAsync(e,n){var i,r;return n===void 0&&(n=!1),(i=(r=this.surveys)==null?void 0:r.canRenderSurveyAsync(e,n))!==null&&i!==void 0?i:Promise.resolve({visible:!1,disabledReason:Si})}Jn(e){return!e||Ko(e)?(A.critical("Unique user id has not been set in posthog.identify"),!1):e===hr?(A.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.'),!1):!["distinct_id","distinctid"].includes(e.toLowerCase())&&!["undefined","null"].includes(e.toLowerCase())||(A.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'),!1)}identify(e,n,i){if(!this.__loaded||!this.persistence)return A.uninitializedWarning("posthog.identify");if(ke(e)&&(e=e.toString(),A.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),this.Jn(e)&&this.Gn("posthog.identify")){var r=this.get_distinct_id();this.register({$user_id:e}),this.get_property(Ki)||this.register_once({$had_persisted_distinct_id:!0,$device_id:r},""),e!==r&&e!==this.get_property(Pi)&&(this.unregister(Pi),this.register({distinct_id:e}));var s,o=(this.persistence.get_property(ot)||jn)===jn,a=e!==r,l=!a&&o;if(a&&o)this.persistence.set_property(ot,mn),this.setPersonPropertiesForFlags({$set:n||{},$set_once:i||{}},!1),this.capture(yo,{distinct_id:e,$anon_distinct_id:r},{$set:n||{},$set_once:i||{}}),this.Sn=Fo(e,n,i),(s=this.featureFlags)==null||s.setAnonymousDistinctId(r);else if(l){this.persistence.set_property(ot,mn);var u=n||{},c=i||{};this.setPersonPropertiesForFlags({$set:u,$set_once:c},!1),this.capture("$set",{$set:u,$set_once:c}),this.Sn=Fo(e,n,i)}else(n||i)&&this.setPersonProperties(n,i);a?(this.reloadFeatureFlags(),this.featureFlags?this.featureFlags.resetFlagCallReported():this.unregister(kn)):l&&(n||i)&&this.reloadFeatureFlags()}}setPersonProperties(e,n){if((e||n)&&this.Gn("posthog.setPersonProperties")){var i=Fo(this.get_distinct_id(),e,n);this.Sn!==i?(this.setPersonPropertiesForFlags({$set:e||{},$set_once:n||{}},!0),this.capture("$set",{$set:e||{},$set_once:n||{}}),this.Sn=i):A.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}unsetPersonProperties(e){var n,i=(U(e)?e:[e]).filter((r=>X(r)&&r.length>0));i.length!==0&&this.Gn("posthog.unsetPersonProperties")&&((n=this.featureFlags)==null||n.unsetPersonPropertiesForFlags(i,!0),this.capture("$set",{$unset:i}),this.Sn=null)}group(e,n,i){if(e&&n){var r=this.getGroups(),s=r[e]!==n;if(s&&this.resetGroupPropertiesForFlags(e),this.register({$groups:k({},r,{[e]:n})}),s||i){var o={$group_type:e,$group_key:n};i&&(o.$group_set=i),this.capture(kc,o)}i&&this.setGroupPropertiesForFlags({[e]:i}),s&&!i&&this.reloadFeatureFlags()}else A.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),(i=this.featureFlags)==null||i.setPersonPropertiesForFlags(e,n)}resetPersonPropertiesForFlags(e){var n;e===void 0&&(e=!0),(n=this.featureFlags)==null||n.resetPersonPropertiesForFlags(e)}setGroupPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),this.Gn("posthog.setGroupPropertiesForFlags")&&((i=this.featureFlags)==null||i.setGroupPropertiesForFlags(e,n))}resetGroupPropertiesForFlags(e){var n;(n=this.featureFlags)==null||n.resetGroupPropertiesForFlags(e)}reset(e){this.Yn(e)}Yn(e,n){var i,r,s,o,a,l,u,c,d,f;if(n===void 0&&(n=!1),A.info("reset"),!this.__loaded)return A.uninitializedWarning("posthog.reset");var h,p=this.get_property(Ki),g=this.get_property(vo),m=this.get_property(Cn),v=this.is_capturing();if(this.consent.reset(),n||!v||this.is_capturing()||console.warn("[PostHog.js]","reset() cleared the stored consent, and capturing is now off because of `opt_out_capturing_by_default`. Call opt_in_capturing() again, and prefer calling reset() before opting in rather than after."),(i=this.persistence)==null||i.clear(),(r=this.sessionPersistence)==null||r.clear(),this.yn.clear(),this.Qn(),C(m)||(h=this.persistence)==null||h.register({[Cn]:m}),(s=this.surveys)==null||s.reset(),(o=this.Un)==null||o.stop(),(a=this.featureFlags)==null||a.reset(),(l=this.conversations)==null||l.reset(),(u=this.logs)==null||u.reset(),(c=this.metrics)==null||c.reset(),(d=this.persistence)==null||d.set_property(ot,jn),(f=this.sessionManager)==null||f.resetSessionId(),this.Sn=null,this.config.cookieless_mode===Ht)this.register_once({distinct_id:hr,$device_id:null},"");else{var S=this.config.get_device_id(Ut());this.register_once({distinct_id:S,$device_id:e?S:p},""),e||C(g)||this.register({[vo]:g})}this.register({$last_posthog_reset:new Date().toISOString()},1),delete this.config.identity_distinct_id,delete this.config.identity_hash,this.reloadFeatureFlags()}shutdown(e){var n=this;return se((function*(){var i,r,s,o,a,l,u;if(n.__loaded){(i=n.Un)==null||i.stop(),(r=n.jn)==null||r.dispose(),(s=n.sessionRecording)==null||s.dispose(),(o=n.logs)==null||o.flushLogs("sendBeacon"),(a=n.metrics)==null||a.flush("sendBeacon"),(l=n.In)==null||l.unload(),(u=n.Rn)==null||u.unload();try{var c;(c=n.featureFlags)==null||c.destroy()}catch(d){A.error("Error while destroying feature flags",d)}}else A.uninitializedWarning("posthog.shutdown")}))()}setIdentity(e,n){var i;this.config.identity_distinct_id=e,this.config.identity_hash=n,this.alias(e),(i=this.conversations)==null||i.Xn()}clearIdentity(){var e;delete this.config.identity_distinct_id,delete this.config.identity_hash,(e=this.conversations)==null||e.ts()}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,n;return(e=(n=this.sessionManager)==null?void 0:n.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var n=this.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.sessionStartTimestamp,r=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+n.sessionId);if(e!=null&&e.withTimestamp&&i){var s,o=(s=e.timestampLookBack)!==null&&s!==void 0?s:10;if(!i)return r;r+="?t="+Math.max(Math.floor((new Date().getTime()-i)/1e3)-o,0)}return r}alias(e,n){return e===this.get_property(jd)?(A.critical("Attempting to create alias for existing People user - aborting."),-2):this.Gn("posthog.alias")?(C(n)&&(n=this.get_distinct_id()),e!==n?(this.Kn(Pi,e),this.capture("$create_alias",{alias:e,distinct_id:n})):(A.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var n=k({},this.config);if(he(e)){var i,r,s,o,a,l,u,c,d,f,h,p;fe(this.config,nu(e));var g=this.En();(i=this.persistence)==null||i.update_config(this.config,n,g),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new xo(k({},this.config,{persistence:"sessionStorage"}),g,!1);var m=this.Cn(this.config.debug);gt(m)&&(this.config.debug=m),gt(this.config.debug)&&(this.config.debug?(ne.DEBUG=!0,le.N()&&le.F("ph_debug",!0),A.info("set_config",{config:e,oldConfig:n,newConfig:k({},this.config)})):(ne.DEBUG=!1,le.N()&&le.q("ph_debug"))),(r=this.featureFlags)==null||r.updateConfig==null||r.updateConfig(this.config,this.Qi()),(s=this.exceptionObserver)==null||s.onConfigChange(),(o=this.exceptions)==null||o.onConfigChange(),(a=this.sessionRecording)==null||a.startIfEnabledOrStop(),(l=this.tracingHeaders)==null||l.startIfEnabledOrStop(),(u=this.autocapture)==null||u.startIfEnabled(),(c=this.heatmaps)==null||c.startIfEnabled(),(d=this.exceptionObserver)==null||d.startIfEnabledOrStop(),(f=this.deadClicksAutocapture)==null||f.startIfEnabledOrStop(),(h=this.surveys)==null||h.loadIfEnabled(),this.es(),(p=this.externalIntegrations)==null||p.startIfEnabledOrStop()}}_overrideSDKInfo(e,n){ne.LIB_NAME=e,ne.LIB_VERSION=n}startSessionRecording(e){var n,i,r,s,o,a=e===!0,l={sampling:a||!(e==null||!e.sampling),linked_flag:a||!(e==null||!e.linked_flag),url_trigger:a||!(e==null||!e.url_trigger),event_trigger:a||!(e==null||!e.event_trigger)};Object.values(l).some(Boolean)&&((n=this.sessionManager)==null||n.checkAndGetSessionAndWindowId(),l.sampling&&((i=this.sessionRecording)==null||i.overrideSampling()),l.linked_flag&&((r=this.sessionRecording)==null||r.overrideLinkedFlag()),l.url_trigger&&((s=this.sessionRecording)==null||s.overrideTrigger("url")),l.event_trigger&&((o=this.sessionRecording)==null||o.overrideTrigger("event"))),this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,n){if(this.exceptions){var i=new Error("PostHog syntheticException"),r=this.exceptions.buildProperties(e,{handled:!0,syntheticException:i});return this.exceptions.sendExceptionEvent(k({},r,n))}}addExceptionStep(e,n){var i;(i=this.exceptions)==null||i.addExceptionStep(e,n)}captureLog(e){var n;(n=this.logs)==null||n.captureLog(e)}get logger(){var e,n;return(e=(n=this.logs)==null?void 0:n.logger)!==null&&e!==void 0?e:Je.rs}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){var n,i;return(n=(i=this.toolbar)==null?void 0:i.loadToolbar(e))!==null&&n!==void 0&&n}get_property(e){var n;return(n=this.persistence)==null?void 0:n.props[e]}getSessionProperty(e){var n;return(n=this.sessionPersistence)==null?void 0:n.props[e]}toString(){var e,n=(e=this.config.name)!==null&&e!==void 0?e:Vn;return n!==Vn&&(n=Vn+"."+n),n}_isIdentified(){var e,n;return((e=this.persistence)==null?void 0:e.get_property(ot))===mn||((n=this.sessionPersistence)==null?void 0:n.get_property(ot))===mn}Zn(){var e,n;return!(this.config.person_profiles==="never"||this.config.person_profiles===pa&&!this._isIdentified()&&Vt(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[Pi])&&((n=this.persistence)==null||(n=n.props)==null||!n[Zr]))}zn(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.Zn()||this.Gn("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.Gn("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}Gn(e){return this.config.person_profiles==="never"?(A.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.Kn(Zr,!0),!0)}En(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut();return this.config.disable_persistence||e&&!(!this.config.opt_out_persistence_by_default&&this.config.cookieless_mode!==In)}es(){var e,n,i,r,s=this.En();return((e=this.persistence)==null?void 0:e.xi)!==s&&((i=this.persistence)==null||i.set_disabled(s)),((n=this.sessionPersistence)==null?void 0:n.xi)!==s&&((r=this.sessionPersistence)==null||r.set_disabled(s)),s&&(this.yn.clear(),this.Qn()),s}opt_in_capturing(e){var n;if(this.config.cookieless_mode!==Ht){if(this.gn()){var i,r,s,o,a;this.Yn(!0,!0),(i=this.sessionManager)==null||i.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=new Zc(this),this.pageViewManager=new Uc(this),this.persistence&&(this.sessionPropsManager=new Jc(this,this.sessionManager,this.persistence));var l,u=(s=(o=this.config.__extensionClasses)==null?void 0:o.sessionRecording)!==null&&s!==void 0?s:(a=Je.__defaultExtensionClasses)==null?void 0:a.sessionRecording;u&&(this.sessionRecording=this.pn(this.sessionRecording,new u(this)),this.hn&&((l=this.sessionRecording)==null||l.onRemoteConfig==null||l.onRemoteConfig(this.hn)))}var c,d;this.consent.optInOut(!0),this.es(),this.Bn(),(n=this.sessionRecording)==null||n.startIfEnabledOrStop(),this.config.cookieless_mode==In&&((c=this.surveys)==null||c.loadIfEnabled()),(C(e?.captureEventName)||e!=null&&e.captureEventName)&&this.capture((d=e?.captureEventName)!==null&&d!==void 0?d:"$opt_in",e?.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.Hn()}else A.warn(eu)}opt_out_capturing(){var e,n,i;this.config.cookieless_mode!==Ht?(this.config.cookieless_mode===In&&this.consent.isOptedIn()&&this.Yn(!0,!0),this.consent.optInOut(!1),this.es(),this.config.cookieless_mode===In&&(this.register({distinct_id:hr,$device_id:null}),(e=this.sessionRecording)==null||e.stopRecording(),this.sessionRecording=void 0,(n=this.sessionManager)==null||n.destroy(),(i=this.pageViewManager)==null||i.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,this.config.capture_pageview&&this.Hn(),this.Bn())):A.warn(eu)}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===1?"granted":e===0?"denied":"pending"}is_capturing(){return this.config.cookieless_mode===Ht||(this.config.cookieless_mode===In?this.consent.isRejected()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.es()}_is_bot(){return Ue?$f(Ue,this.config.custom_blocked_useragents):void 0}Hn(){F&&(F.visibilityState==="visible"?this.wn||(this.wn=!0,this.capture(qn,{title:F.title},{send_instantly:!0}),this.kn&&(F.removeEventListener(Xr,this.kn),this.kn=null)):this.kn||(this.kn=this.Hn.bind(this),ve(F,Xr,this.kn)))}debug(e){e===!1?(w?.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(w?.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}Qi(){var e=this.Mn||{};return"advanced_disable_flags"in e?!!e.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(A.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):(function(n,i,r,s,o){var a=i in n&&!H(n[i]),l=r in n&&!H(n[r]);return a?n[i]:!!l&&(o&&o.warn("Config field '"+r+"' is deprecated. Please use '"+i+"' instead. The old field will be removed in a future major version."),n[r])})(e,"advanced_disable_flags","advanced_disable_decide",0,A)}Pt(e){var n;if(H(this.config.before_send))return e;var i=Object.keys((n=e.properties)!==null&&n!==void 0?n:{}).filter(Mp),r=U(this.config.before_send)?this.config.before_send:[this.config.before_send],s=e;for(var o of r){if(s=o(s),H(s)){var a="Event '"+e.event+"' was rejected in beforeSend function";return $p(e.event)?A.warn(a+". This can cause unexpected behavior."):A.info(a),null}s.properties&&!Vt(s.properties)||A.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}for(var l of i)if(s.properties&&H(s.properties[l]))return A.warn("Event '"+e.event+"' had its '"+l+"' property removed in a beforeSend function. This property is required for ingestion, so the event will be dropped."),null;return s}getPageViewId(){var e;return(e=this.pageViewManager.ui)==null?void 0:e.pageViewId}captureTraceFeedback(e,n){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:n})}captureTraceMetric(e,n,i){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:n,$ai_metric_value:String(i)})}Cn(e){var n=gt(e)&&!e,i=le.N()&&le.P("ph_debug")==="true";return!n&&(!!i||e)}}Je.__defaultExtensionClasses={},Je.rs=(()=>{var t=()=>{};return{trace:t,debug:t,info:t,warn:t,error:t,fatal:t}})(),(function(t,e){for(var n=0;e.length>n;n++)t.prototype[e[n]]=Eg(t.prototype[e[n]])})(Je,["identify"]);class iu{constructor(e){this.disabled=e===!1;var n=he(e)?e:{};this.thresholdPx=n.threshold_px||30,this.timeoutMs=n.timeout_ms||1e3,this.clickCount=n.click_count||3,this.clicks=[]}isRageClick(e,n,i){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(e-r.x)+Math.abs(n-r.y)i-r.timestamp){if(this.clicks.push({x:e,y:n,timestamp:i}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:e,y:n,timestamp:i}];return!1}}var $o="$copy_autocapture",Mo=pe("[AutoCapture]");function Lo(t,e){return e.length>t?e.slice(0,t)+"...":e}function km(t){if(t.previousElementSibling)return t.previousElementSibling;var e=t;do e=e.previousSibling;while(e&&!fn(e));return e}function Cm(t,e){var n,i,r=e.e,s=e.maskAllElementAttributes,o=e.maskAllText,a=e.elementAttributeIgnoreList,l=e.elementsChainAsString,u=e.disableCaptureUrlHashes;if(!fn(t))return{props:{}};for(var c=[t],d=new Set([t]),f=t;f.parentNode&&!Qe(f,"body")&&nf>c.length;)if(tf(f.parentNode)){var h=f.parentNode.host;if(d.has(h))break;d.add(h),c.push(h),f=h}else{if(!fn(f.parentNode)||d.has(f.parentNode))break;d.add(f.parentNode),c.push(f.parentNode),f=f.parentNode}var p,g,m=[],v={},S=!1,b=!1;if(ie(c,(E=>{var P=va(E);if(Qe(E,"a")){var $=E.getAttribute("href");S=!!(P&&$&&ji($))&&(u?dn($):$)}j(ts(E),"ph-no-capture")&&(b=!0),m.push((function(L,N,G,V,M){M===void 0&&(M=!1);var R=L.tagName.toLowerCase(),Z={tag_name:R};ul.indexOf(R)>-1&&!G&&(Z.$el_text=R.toLowerCase()==="a"||R.toLowerCase()==="button"?Lo(1024,Bc(L)):Lo(1024,Yi(L)));var Ce=ts(L);Ce.length>0&&(Z.classes=Ce.filter((function(ae){return ae!==""}))),ie(L.attributes,(function(ae){var Ie;if((!lf(L)||["name","id","class","aria-label"].indexOf(ae.name)!==-1)&&(V==null||!V.includes(ae.name))&&!N&&ji(ae.value)&&(!X(Ie=ae.name)||Ie.substring(0,10)!=="_ngcontent"&&Ie.substring(0,7)!=="_nghost")){var Se=ae.value;ae.name==="class"&&(Se=cl(Se).join(" ")),Z["attr__"+ae.name]=Lo(1024,ae.name==="href"&&M?dn(Se):Se)}}));for(var oe=1,ye=1,$e=L;$e=km($e);)oe++,$e.tagName===L.tagName&&ye++;return Z.nth_child=oe,Z.nth_of_type=ye,Z})(E,s,o,a,u));var O=(function(L){if(!va(L))return{};var N={};return ie(L.attributes,(function(G){if(G.name&&G.name.indexOf("data-ph-capture-attribute")===0){var V=G.name.replace("data-ph-capture-attribute-",""),M=G.value;V&&M&&ji(M)&&(N[V]=M)}})),N})(E);fe(v,O)})),b)return{props:{},explicitNoCapture:b};if(o||(m[0].$el_text=Qe(t,"a")||Qe(t,"button")?Bc(t):Yi(t)),S){var _,x;m[0].attr__href=S;var I=(_=ns(S))==null?void 0:_.host,T=w==null||(x=w.location)==null?void 0:x.host;I&&T&&I!==T&&(p=S)}return{props:fe({$event_type:r.type,$ce_version:1},l?{}:{$elements:m},{$elements_chain:(g=m,(function(E){return E.map((P=>{var $,O,L="";if(P.tag_name&&(L+=P.tag_name),P.attr_class)for(var N of(P.attr_class.sort(),P.attr_class))L+="."+N.replace(/"/g,"");var G=k({},P.text?{text:P.text}:{},{"nth-child":($=P.nth_child)!==null&&$!==void 0?$:0,"nth-of-type":(O=P.nth_of_type)!==null&&O!==void 0?O:0},P.href?{href:P.href}:{},P.attr_id?{attr_id:P.attr_id}:{},P.attributes),V={};return Fr(G).sort(((M,R)=>M[0].localeCompare(R[0]))).forEach((M=>{var R=M[1];return V[Dc(M[0].toString())]=Dc(R.toString())})),(L+=":")+Fr(V).map((M=>M[0]+'="'+M[1]+'"')).join("")})).join(";")})((function(E){return E.map((P=>{var $,O,L={text:($=P.$el_text)==null?void 0:$.slice(0,400),tag_name:P.tag_name,href:(O=P.attr__href)==null?void 0:O.slice(0,2048),attr_class:Ug(P),attr_id:P.attr__id,nth_child:P.nth_child,nth_of_type:P.nth_of_type,attributes:{}};return Fr(P).filter((N=>N[0].indexOf("attr__")===0)).forEach((N=>L.attributes[N[0]]=N[1])),L}))})(g)))},(n=m[0])!=null&&n.$el_text?{$el_text:(i=m[0])==null?void 0:i.$el_text}:{},p&&r.type==="click"?{$external_click_url:p}:{},v)}}var xi=pe("[ExceptionAutocapture]"),ru=()=>{},Am=pe("[TracingHeaders]"),yn=pe("[Web Vitals]"),su=9e5,ou="disabled",au="lazy_loading",Ii="awaiting_config",wr="missing_config";pe("[SessionRecording]"),pe("[SessionRecording]");var Ia="[SessionRecording]",Ot=pe(Ia),Pm=pe("[Heatmaps]");function No(t){return he(t)&&"clientX"in t&&"clientY"in t&&ke(t.clientX)&&ke(t.clientY)}var br=pe("[Product Tours]"),Oo=t=>{var e;return!t.config.disable_product_tours&&!((e=t.persistence)==null||!e.get_property(sl))},Fm=["$set_once","$set"],bt=pe("[SiteApps]"),lu="Error while initializing PostHog app with config id ";function Wn(t,e,n){if(H(t))return!1;switch(n){case"exact":return t===e;case"contains":var i=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(i,"i").test(t);case"regex":try{return new RegExp(e).test(t)}catch{return!1}default:return!1}}class Rm{constructor(e){this.ns=new pl,this.ss=(n,i)=>this.os(n,i)&&this.ls(n,i)&&this.us(n,i)&&this.hs(n,i),this.os=(n,i)=>i==null||!i.event||n?.event===i?.event,this._instance=e,this.ds=new Set,this.vs=new Set}init(){var e,n;C((e=this._instance)==null?void 0:e._addCaptureHook)||(n=this._instance)==null||n._addCaptureHook(((i,r)=>{this.on(i,r)}))}register(e){var n,i;if(!C((n=this._instance)==null?void 0:n._addCaptureHook)&&(e.forEach((o=>{var a,l;(a=this.vs)==null||a.add(o),(l=o.steps)==null||l.forEach((u=>{var c;(c=this.ds)==null||c.add(u?.event||"")}))})),(i=this._instance)!=null&&i.autocapture)){var r,s=new Set;e.forEach((o=>{var a;(a=o.steps)==null||a.forEach((l=>{l!=null&&l.selector&&s.add(l?.selector)}))})),(r=this._instance)==null||r.autocapture.setElementSelectors(s)}}on(e,n){var i;n!=null&&e.length!=0&&(this.ds.has(e)||this.ds.has(n.event))&&this.vs&&((i=this.vs)==null?void 0:i.size)>0&&this.vs.forEach((r=>{this.cs(n,r)&&this.ns.emit("actionCaptured",r.name)}))}fs(e){this.onAction("actionCaptured",(n=>e(n)))}cs(e,n){if(n?.steps==null)return!1;for(var i of n.steps)if(this.ss(e,i))return!0;return!1}onAction(e,n){return this.ns.on(e,n)}ls(e,n){if(n!=null&&n.url){var i,r=e==null||(i=e.properties)==null?void 0:i.$current_url;if(!r||typeof r!="string"||!Wn(r,n.url,n.url_matching||"contains"))return!1}return!0}us(e,n){return!!this.ps(e,n)&&!!this.gs(e,n)&&!!this.ys(e,n)}ps(e,n){var i;if(n==null||!n.href)return!0;var r=this.bs(e);if(r.length>0)return r.some((a=>Wn(a.href,n.href,n.href_matching||"exact")));var s,o=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!o&&Wn((s=o.match(/(?::|")href="(.*?)"/))?s[1]:"",n.href,n.href_matching||"exact")}gs(e,n){var i;if(n==null||!n.text)return!0;var r=this.bs(e);if(r.length>0)return r.some((u=>Wn(u.text,n.text,n.text_matching||"exact")||Wn(u.$el_text,n.text,n.text_matching||"exact")));var s,o,a,l=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!l&&(s=(function(u){for(var c,d=[],f=/(?::|")text="(.*?)"/g;!H(c=f.exec(u));)d.includes(c[1])||d.push(c[1]);return d})(l),o=n.text,a=n.text_matching||"exact",s.some((u=>Wn(u,o,a))))}ys(e,n){var i,r;if(n==null||!n.selector)return!0;var s=e==null||(i=e.properties)==null?void 0:i.$element_selectors;if(s!=null&&s.includes(n.selector))return!0;var o=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";if(n.selector_regex&&o)try{return new RegExp(n.selector_regex).test(o)}catch{return!1}return!1}bs(e){var n;return(e==null||(n=e.properties)==null?void 0:n.$elements)==null?[]:e?.properties.$elements}hs(e,n){return n==null||!n.properties||n.properties.length===0||Nf(n.properties.reduce(((i,r)=>{var s=U(r.value)?r.value.map(String):r.value!=null?[String(r.value)]:[];return i[r.key]={values:s,operator:r.operator||"exact"},i}),{}),e?.properties)}}class Tm{constructor(e){var n;this._s=[],this._instance=e,this.ws=new Map,this.ks=new Map,this.xs=new Map,(n=this._instance)==null||n.onSessionId==null||n.onSessionId((i=>this.Ss(i)))}Cs(e){return!1}Ms(){return null}Ts(e){}Es(){}Is(e,n){return!!e&&Nf(e.propertyFilters,n?.properties)}Ps(e,n){var i=new Map;return e.forEach((r=>{var s;(s=r.conditions)==null||(s=s[n])==null||(s=s.values)==null||s.forEach((o=>{if(o!=null&&o.name){var a=i.get(o.name)||[];a.push(r.id),i.set(o.name,a)}}))})),i}Rs(e,n,i){var r=(i===yi.Activation?this.ws:this.ks).get(e),s=[];return this.As((o=>{s=o.filter((a=>r?.includes(a.id)))})),s.filter((o=>{var a,l=(a=o.conditions)==null||(a=a[i])==null||(a=a.values)==null?void 0:a.find((u=>u.name===e));return this.Is(l,n)}))}register(e){var n;C((n=this._instance)==null?void 0:n._addCaptureHook)||(this.Fs(e),this.Ls(e))}Ls(e){var n=e.filter((i=>{var r,s;return((r=i.conditions)==null?void 0:r.actions)&&((s=i.conditions)==null||(s=s.actions)==null||(s=s.values)==null?void 0:s.length)>0}));n.length!==0&&(this.Os==null&&(this.Os=new Rm(this._instance),this.Os.init(),this.Os.fs((i=>{this.onAction(i)}))),n.forEach((i=>{var r,s,o,a,l;i.conditions&&(r=i.conditions)!=null&&r.actions&&(s=i.conditions)!=null&&(s=s.actions)!=null&&s.values&&((o=i.conditions)==null||(o=o.actions)==null||(o=o.values)==null?void 0:o.length)>0&&((a=this.Os)==null||a.register(i.conditions.actions.values),(l=i.conditions)==null||(l=l.actions)==null||(l=l.values)==null||l.forEach((u=>{if(u&&u.name){var c=this.xs.get(u.name);c&&c.push(i.id),this.xs.set(u.name,c||[i.id])}})))})))}Fs(e){var n,i=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.events)&&((a=s.conditions)==null||(a=a.events)==null||(a=a.values)==null?void 0:a.length)>0})),r=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.cancelEvents)&&((a=s.conditions)==null||(a=a.cancelEvents)==null||(a=a.values)==null?void 0:a.length)>0}));i.length===0&&r.length===0||((n=this._instance)==null||n._addCaptureHook(((s,o)=>{this.onEvent(s,o)})),this.ws=this.Ps(e,yi.Activation),this.ks=this.Ps(e,yi.Cancellation))}onEvent(e,n){var i,r,s=this.Ds(),o=(n==null||(i=n.properties)==null?void 0:i.$survey_id)||(n==null||(r=n.properties)==null?void 0:r.$product_tour_id);if(o&&this.getActivatedIds().includes(o)){var a=this.$s(e,o);if(a==="consume")return s.info("event consumed activated item, removing it",{event:e,itemId:o}),void this.Ns([o]);if(a==="persist")return s.info("shown item promoted to persisted activation",{event:e,itemId:o}),this.qs(o),void this.js([o])}if(this.ks.has(e)){var l=this.Rs(e,n,yi.Cancellation);l.length>0&&(s.info("cancel event matched, cancelling items",{event:e,itemsToCancel:l.map((c=>c.id))}),this.Ns(l.map((c=>c.id))),l.forEach((c=>this.Bs(c.id))))}if(this.ws.has(e)){s.info("event name matched",{event:e,eventPayload:n,items:this.ws.get(e)});var u=this.Rs(e,n,yi.Activation);this.Hs(u.map((c=>c.id)))}}onAction(e){this.xs.has(e)&&this.Hs(this.xs.get(e)||[])}Hs(e){var n;if(e.length!==0){var i=!((n=this._instance)==null||n.get_session_id==null||!n.get_session_id()),r=[];for(var s of e)i&&this.Cs(s)?this.qs(s)&&this.Us(s):r.push(s);r.length>0&&(this._s=[...new Set([...this._s,...r])]),this.Ds().info("updating activated items",{activatedItems:this.getActivatedIds()})}}qs(e){this._s=this._s.filter((i=>i!==e));var n=this.zs();return!n.includes(e)&&(this.Ws([...n,e]),this.Vs(),!0)}Ns(e){var n=new Set(e);this._s=this._s.filter((s=>!n.has(s)));var i=this.Zs(),r=i.filter((s=>!n.has(s)));r.length!==i.length&&(this.Ws(r),r.length===0&&this.Gs()),this.js(e)}Qs(){var e,n=this.Ms();if(!n)return{};var i=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n];return i&&typeof i=="object"?i:{}}Us(e){if(this.Ms()){var n=this.Qs();this.Ts(k({},n,{[e]:Date.now()}))}}js(e){if(this.Ms()){var n=this.Qs(),i={},r=!1;for(var s of Object.entries(n)){var o=s[0],a=s[1];e.includes(o)?r=!0:i[o]=a}r&&(Vt(i)?this.Es():this.Ts(i))}}Ks(){this.Ms()&&this.Es()}getActivationTimestamp(e){if(this.zs().includes(e)){var n=this.Qs()[e];return ke(n)?n:void 0}}Zs(){var e,n=this.Js();return((e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n])||[]}zs(){var e,n,i=this.Zs();if(i.length===0)return[];var r=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[this.Ys()],s=(n=this._instance)==null||n.get_session_id==null?void 0:n.get_session_id();return s&&r===s?i:[]}Vs(){var e,n=(e=this._instance)==null||e.get_session_id==null?void 0:e.get_session_id();n&&this.Xs(n)}Gs(){this.ta()}Ss(e){var n,i=(n=this._instance)==null||(n=n.persistence)==null?void 0:n.props[this.Ys()];if(i&&i!==e){var r=this.Zs(),s=this.Qs();r.length>0&&(this.Ws([]),r.filter((o=>ke(s[o]))).forEach((o=>this.Bs(o)))),this.Gs(),this.Ks()}}getActivatedIds(){return[...new Set([...this.zs(),...this._s])].filter((e=>!this.ea(e)))}reset(){this._s=[],this.Zs().length>0&&this.Ws([]),this.Gs(),this.Ks()}getEventToItemsMap(){return this.ws}ia(){return this.Os}}class $m extends Tm{constructor(e){super(e)}Js(){return ca}Ys(){return Cr}Ms(){return Ar}Ts(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Ar]:e})}Es(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Ar)}Cs(e){var n,i;this.As((s=>{i=s.find((o=>o.id===e))}));var r=(n=i)==null||(n=n.appearance)==null?void 0:n.surveyPopupDelaySeconds;return ke(r)&&r>0}ra(){return zt.SHOWN}As(e){var n;(n=this._instance)==null||n.getSurveys(e)}Bs(e){var n;(n=this._instance)==null||n.cancelPendingSurvey(e)}Ds(){return Q}Ws(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[ca]:e})}Xs(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Cr]:e})}ta(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Cr)}ea(){return!1}$s(e,n){var i;this.As((s=>{i=s.find((o=>o.id===n))}));var r=!i||(function(s){var o;return Of(s)&&!((o=s.conditions)==null||(o=o.events)==null||!o.repeatedActivation)||s.schedule==="always"})(i);return r?e===zt.SHOWN?"consume":"ignore":e===zt.SHOWN?"persist":e===zt.DISMISSED||e===zt.SENT?"consume":"ignore"}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}var Er="SDK is not enabled or survey functionality is not yet loaded",cu="Disabled. Not loading surveys.",Mm=w!=null&&w.location?is(w.location.hash,"__posthog")||is(location.hash,"state"):null,uu="_postHogToolbarParams",du=pe("[Toolbar]"),fu=pe("[FeatureFlags]");class Lm{constructor(e,n){n===void 0&&(n=!1),this.na=!1,this.update(e,n)}update(e,n){this.sa=((i,r)=>{var s,o,a,l;return{bootstrap:{featureFlags:(s=i.bootstrap)==null?void 0:s.featureFlags,featureFlagPayloads:(o=i.bootstrap)==null?void 0:o.featureFlagPayloads},remoteRequestsDisabled:r,featureFlagsDisabled:!!i.advanced_disable_feature_flags,onlyEvaluateSurveyFeatureFlags:!!i.advanced_only_evaluate_survey_feature_flags,deduplicateCallsPerSession:!!i.advanced_feature_flags_dedup_per_session,cacheTtlMs:i.feature_flag_cache_ttl_ms,requestTimeoutMs:i.feature_flag_request_timeout_ms,compression:i.disable_compression?"none":"base64",evaluationContexts:(a=(l=i.evaluation_contexts)!==null&&l!==void 0?l:i.evaluation_environments)!==null&&a!==void 0?a:[],flagKeys:U(i.flag_keys)?i.flag_keys:void 0}})(e,n),!e.evaluation_environments||e.evaluation_contexts||this.na||(fu.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.na=!0),C(e.flag_keys)||U(e.flag_keys)||fu.error("Invalid flag_keys found:",e.flag_keys,"Expected array of non-empty strings")}get(){return this.sa}}var hu=pe("[FeatureFlags]"),wn=pe("[FeatureFlags]",{debugEnabled:!0}),Bo=`" failed. Feature flags didn't load in time.`,pu="connection_error",gu=t=>{for(var e={},n=0;t.length>n;n++)e[t[n]]=!0;return e},mu=t=>{var e={};for(var n of Fr(t||{})){var i=n[1];i&&(e[n[0]]=i)}return e},Et=pe("[Error tracking]"),vu="Refusing to render web experiment since the viewer is a likely bot",Nm={icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())>-1,not_icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())===-1,regex:(t,e)=>os(e,t),not_regex:(t,e)=>!os(e,t),exact:(t,e)=>e===t,is_not:(t,e)=>e!==t};class Me{get Ne(){return this._instance.config}constructor(e){var n=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(i){i===void 0&&(i=!1),n.getWebExperiments((r=>{Me.aa("retrieved web experiments from the server"),n.oa=new Map,r.forEach((s=>{if(s.feature_flag_key){var o;n.oa&&(Me.aa("setting flag key ",s.feature_flag_key," to web experiment ",s),(o=n.oa)==null||o.set(s.feature_flag_key,s));var a=n._instance.getFeatureFlag(s.feature_flag_key);X(a)&&s.variants[a]&&n.la(s.name,a,s.variants[a].transforms)}else if(s.variants)for(var l in s.variants){var u=s.variants[l];Me.ua(u,n._instance)&&n.la(s.name,l,u.transforms)}}))}),i)},this._instance=e,this._instance.onFeatureFlags((i=>{this.onFeatureFlags(i)}))}initialize(){}onFeatureFlags(e){if(this._is_bot())Me.aa(vu);else if(!this.Ne.disable_web_experiments){if(H(this.oa))return this.oa=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Me.aa("applying feature flags",e),e.forEach((n=>{var i;if(this.oa&&(i=this.oa)!=null&&i.has(n)){var r,s=this._instance.getFeatureFlag(n),o=(r=this.oa)==null?void 0:r.get(n);s&&o!=null&&o.variants[s]&&this.la(o.name,s,o.variants[s].transforms)}}))}}previewWebExperiment(){var e=Me.getWindowLocation();if(e!=null&&e.search){var n=ni(e?.search,"__experiment_id"),i=ni(e?.search,"__experiment_variant");n&&i&&(Me.aa("previewing web experiments "+n+" && "+i),this.getWebExperiments((r=>{this.ha(parseInt(n),i,r)}),!1,!0))}}loadIfEnabled(){this.Ne.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,n,i){if(this.Ne.disable_web_experiments&&!i)return e([]);var r=this._instance.get_property("$web_experiments");if(r&&!n)return e(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this.Ne.token),method:"GET",timestampMode:"query",callback:s=>e(s.statusCode===200&&s.json&&s.json.experiments||[])})}ha(e,n,i){var r=i.filter((s=>s.id===e));r&&r.length>0&&(Me.aa("Previewing web experiment ["+r[0].name+"] with variant ["+n+"]"),this.la(r[0].name,n,r[0].variants[n].transforms))}static ua(e,n){return!H(e.conditions)&&Me.da(e,n)&&Me.va(e)}static da(e,n){var i;if(H(e.conditions)||H((i=e.conditions)==null?void 0:i.url))return!0;var r=Me.getWindowLocation();if(r){var s,o,a,l=Xd(n,r.href);return(s=e.conditions)==null||!s.url||Nm[(o=(a=e.conditions)==null?void 0:a.urlMatchType)!==null&&o!==void 0?o:"icontains"](e.conditions.url,l)}return!1}static getWindowLocation(){return w?.location}static va(e){var n;if(H(e.conditions)||H((n=e.conditions)==null?void 0:n.utm))return!0;var i=pf();if(i.utm_source){var r,s,o,a,l,u,c,d,f=(r=e.conditions)==null||(r=r.utm)==null||!r.utm_campaign||((s=e.conditions)==null||(s=s.utm)==null?void 0:s.utm_campaign)==i.utm_campaign,h=(o=e.conditions)==null||(o=o.utm)==null||!o.utm_source||((a=e.conditions)==null||(a=a.utm)==null?void 0:a.utm_source)==i.utm_source,p=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_medium||((u=e.conditions)==null||(u=u.utm)==null?void 0:u.utm_medium)==i.utm_medium,g=(c=e.conditions)==null||(c=c.utm)==null||!c.utm_term||((d=e.conditions)==null||(d=d.utm)==null?void 0:d.utm_term)==i.utm_term;return f&&p&&g&&h}return!1}static aa(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;n>r;r++)i[r-1]=arguments[r];A.info("[WebExperiments] "+e,i)}la(e,n,i){this._is_bot()?Me.aa(vu):n!=="control"?i.forEach((r=>{if(r.selector){var s;Me.aa("applying transform of variant "+n+" for experiment "+e+" ",r);var o=(s=document)==null?void 0:s.querySelectorAll(r.selector);o?.forEach((a=>{var l=a;r.html&&(l.innerHTML=r.html),r.css&&l.setAttribute("style",r.css)}))}})):Me.aa("Control variants leave the page unmodified.")}_is_bot(){return Ue&&this._instance?$f(Ue,this.Ne.custom_blocked_useragents):void 0}}var st=pe("[Conversations]"),bn="Conversations not available yet.",_u="console",Hf="__posthogHandledLogsRequestError",Do=(t,e)=>{var n=t instanceof Error?t:new Error(e);return n[Hf]=!0,n},yu=t=>!!t&&typeof t=="object"&&t[Hf]===!0,ks={featureFlags:class{constructor(t){this.name="featureFlags",this.ca=!1,this.featureFlagEventHandlers=[],this.rt=hu,this.fa={},this.pa={},this.ga=[],this.ma=!1,this.ya=!1,this.ba=0,this._a=!1,this.wa=!1,this.ka=!1,this.xa=!1,this.Sa=0,this.Ca=()=>{var e=this.Ma();this.Sa=0,e&&this.reloadFeatureFlags()},"get"in t?this.Ta=t:(this.Ea=new Lm(t.config,t.Qi()),this.Ta=this.Ea)}updateConfig(t,e){var n;(n=this.Ea)==null||n.update(t,e)}setup(t){return this.Ia=t,this.rt=t.logger.createLogger("[FeatureFlags]"),n=()=>{this.Ia===t&&(this.Ia=void 0,this.nn=t,this.Pa(t))},(e=t.kv.initialize())!=null&&e.then?e.then(n):n();var e,n}Pa(t){if(this.nn===t)return w&&ve(w,"online",this.Ca),this.Ra=t.registerDynamicEventProperties((()=>this.Aa()?this.fa:this.pa)),this.Fa(),this.initialize()}destroy(){w?.removeEventListener("online",this.Ca)}dispose(){var t;this.ba++,this.wa=!1,this.Ia=void 0,this.nn&&(this.La(),(t=this.Ra)==null||t.dispose(),this.Ra=void 0,this.ga=[],w?.removeEventListener("online",this.Ca),this.nn=void 0)}get Ne(){return this.Ta.get()}Oa(t){var e;return(e=this.nn)==null?void 0:e.kv.get(t)}F(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.set(t)}))}q(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.remove(t)}))}Da(t){try{t()}catch(e){this.rt.error("Failed to update feature flag persistence",e)}}Fa(){var t={};for(var e of[Ri,Ti,kr,xt]){var n=this.Oa(e);C(n)||(t[e]=n)}this.fa=t;var i=k({},t),r=this.Oa(En);if(r)for(var s of Object.entries(r))i["$feature/"+s[0]]=s[1];this.pa=i}Aa(){var t=this.Ne.cacheTtlMs;if(!t||0>=t)return!1;var e=this.Oa(Di);return typeof e!="number"||Date.now()-e>t}$a(){return!!this.Aa()&&(this.xa||this.ya||(this.xa=!0,this.rt.warn("Feature flag cache is stale, triggering refresh..."),this.reloadFeatureFlags()),!0)}Na(){var t=this.Ne.evaluationContexts;return t!=null&&t.length?t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid evaluation context found:",e,"Expected non-empty string"),n})):[]}qa(){var t=this.Ne.flagKeys;if(!C(t))return t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid flag key found:",e,"Expected non-empty string"),n}))}initialize(){var t,e,n=this.Ne,i=(t=(e=n.bootstrap)==null?void 0:e.featureFlags)!==null&&t!==void 0?t:{};if(Object.keys(i).length){var r,s,o=(r=(s=n.bootstrap)==null?void 0:s.featureFlagPayloads)!==null&&r!==void 0?r:{},a=Object.keys(i).filter((u=>!!i[u])).reduce(((u,c)=>(u[c]=i[c]||!1,u)),{}),l=Object.keys(o).filter((u=>a[u])).reduce(((u,c)=>(o[c]&&(u[c]=o[c]),u)),{});return this.ja({featureFlags:a,featureFlagPayloads:l})}}updateFlags(t,e,n){var i,r,s=n!=null&&n.merge&&(i=this.Oa(En))!==null&&i!==void 0?i:{},o=n!=null&&n.merge&&(r=this.Oa(Ti))!==null&&r!==void 0?r:{},a=k({},s,t),l=k({},o,e),u={};for(var c of Object.entries(a)){var d=c[0],f=c[1];u[d]={key:d,enabled:dc(f),variant:fc(f),reason:void 0,metadata:C(l?.[d])?void 0:{id:0,version:void 0,description:void 0,payload:l[d]}}}this.ja({flags:u})}get hasLoadedFlags(){return this.ma}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this.Oa(aa),e=this.Oa(xt),n=this.Oa(Sn);if(!n&&!e)return t||{};var i=fe({},t||{}),r=[...new Set([...Object.keys(n||{}),...Object.keys(e||{})])];for(var s of r){var o,a,l=i[s],u=e?.[s],c=C(u)?(o=l?.enabled)!==null&&o!==void 0&&o:!!u,d=C(u)?l?.variant:typeof u=="string"?u:void 0,f=n?.[s],h=k({},l,{enabled:c,variant:c?d??l?.variant:void 0});c!==l?.enabled&&(h.original_enabled=l?.enabled),d!==l?.variant&&(h.original_variant=l?.variant),f&&(h.metadata=k({},l?.metadata,{payload:f,original_payload:l==null||(a=l.metadata)==null?void 0:a.payload})),i[s]=h}return this.ca||(this.rt.warn(" Overriding feature flag details!",{flagDetails:t,overriddenPayloads:n,finalDetails:i}),this.ca=!0),i}getAllFeatureFlags(){var t=this.getFlagVariants(),e=this.getFlagPayloads();return Object.keys(t).map((n=>{var i=t[n];return{key:n,enabled:dc(i),variant:fc(i),payload:uc(e[n])}}))}getFlagVariants(){var t=this.Oa(En),e=this.Oa(xt);if(!e)return t||{};for(var n=fe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flags!",{enabledFlags:t,overriddenFlags:e,finalFlags:n}),this.ca=!0),n}getFlagPayloads(){var t=this.Oa(Ti),e=this.Oa(Sn);if(!e)return t||{};for(var n=fe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flag payloads!",{flagPayloads:t,overriddenPayloads:e,finalPayloads:n}),this.ca=!0),n}reloadFeatureFlags(){this._a||this.Ne.featureFlagsDisabled||this.Ma()||this.Ba||(this.ga.slice().forEach((t=>{try{t()}catch(e){this.rt.error("Error while running feature flags reloading callback",e)}})),this.Ba=setTimeout((()=>{this.Ha()}),5))}La(){clearTimeout(this.Ba),this.Ba=void 0}onReloading(t){return this.ga.push(t),()=>{this.ga=this.ga.filter((e=>e!==t))}}ensureFlagsLoaded(){this.ma||this.ya||this.Ba||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this._a=t}resetFlagCallReported(){this.q(kn)}Ha(t){this.La();var e=this.nn;if(e&&!this.Ne.remoteRequestsDisabled&&!this.Ma())if(this.ya)this.wa=!0;else{var n={token:e.projectToken,distinct_id:e.distinctId,groups:e.groups,$anon_distinct_id:this.$anon_distinct_id,person_properties:k({},e.initialPersonProperties,this.Oa(Dt)||{},{$lib:e.library.name,$lib_version:e.library.version}),group_properties:this.Oa(xn),timezone:wf()};C(e.deviceId)||(n.$device_id=e.deviceId),(t!=null&&t.disableFlags||this.Ne.featureFlagsDisabled)&&(n.disable_flags=!0);var i=this.Na();i.length&&(n.evaluation_contexts=i);var r=this.qa();C(r)||(n.flag_keys=r);var s=this.Ne.onlyEvaluateSurveyFeatureFlags,o="/flags/?v=2"+(s?"&only_evaluate_survey_feature_flags=true":""),a=this.ba;this.ya=!0;var l=()=>{this.wa&&(this.wa=!1,this.Ha())},u=c=>{this.ya=!1,a===this.ba&&(this.F({[Pr]:[pu]}),this.rt.error("Feature flag request failed",c)),l()};try{e.sendRequest(o,{target:"flags",method:"POST",body:n,compression:this.Ne.compression==="base64"?je.Base64:void 0,sentAt:"body",timeoutMs:this.Ne.requestTimeoutMs}).then((c=>{var d,f,h=(d=c.json)!==null&&d!==void 0?d:{},p=c.statusCode!==200;if(this.ya=!1,a===this.ba){if(this.Ua(c.statusCode),p||this.wa||(this.$anon_distinct_id=void 0),!n.disable_flags||this.wa){this.ka=!p;var g=[];c.error?g.push(c.error instanceof Error&&c.error.name==="AbortError"?"timeout":c.error instanceof Error?pu:"unknown_error"):c.statusCode!==200&&g.push("api_error_"+c.statusCode),h.errorsWhileComputingFlags&&g.push("errors_while_computing_flags");var m=!((f=h.quotaLimited)==null||!f.includes("feature_flags"));m&&g.push("quota_limited"),this.F({[Pr]:g}),m?this.rt.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more."):n.disable_flags||this.ja(h,p,{partialResponse:s}),l()}}else l()})).catch(u)}catch(c){u(c)}}}Ma(){return ff(this.Sa,3)}Ua(t){this.Sa=hf(t,this.Sa,3,(()=>this.rt.warn("Feature flag requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped refreshing feature flags; will try again when connectivity changes.")))}getFeatureFlag(t,e){var n;if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var i=this.getFeatureFlagResult(t,e);return(n=i?.variant)!==null&&n!==void 0?n:i?.enabled}}else this.rt.warn('getFeatureFlag for key "'+t+Bo)}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){var e=this.getFeatureFlagResult(t,{send_event:!1});return e?.payload}getFeatureFlagResult(t,e){if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var n,i=this.getFlagVariants(),r=t in i,s=i[t],o=this.getFlagPayloads()[t],a=String(s),l=this.Oa(kr)||void 0,u=this.Oa(Di)||void 0,c=this.Oa(kn)||{};if(this.Ne.deduplicateCallsPerSession){var d,f=(d=this.nn)==null?void 0:d.session.sessionId,h=this.Oa(Mi);f&&f!==h&&(c={},n=f)}if(e.send_event||!("send_event"in e))if(t in c&&c[t].includes(a))n&&this.F({[kn]:c,[Mi]:n});else{var p,g,m,v,S,b,_,x,I,T;U(c[t])?c[t].push(a):c[t]=[a],this.F(k({[kn]:c},n?{[Mi]:n}:{}));var E=this.getFeatureFlagDetails(t),P=[...(p=this.Oa(Pr))!==null&&p!==void 0?p:[]];C(s)&&P.push("flag_missing");var $={$feature_flag:t,$feature_flag_response:s,$feature_flag_payload:o||null,$feature_flag_request_id:l,$feature_flag_evaluated_at:u,$feature_flag_bootstrapped_response:((g=this.Ne.bootstrap)==null||(g=g.featureFlags)==null?void 0:g[t])||null,$feature_flag_bootstrapped_payload:((m=this.Ne.bootstrap)==null||(m=m.featureFlagPayloads)==null?void 0:m[t])||null,$used_bootstrap_value:!this.ka};C(E==null||(v=E.metadata)==null?void 0:v.has_experiment)||($.$feature_flag_has_experiment=E.metadata.has_experiment),C(E==null||(S=E.metadata)==null?void 0:S.version)||($.$feature_flag_version=E.metadata.version);var O,L=(b=E==null||(_=E.reason)==null?void 0:_.description)!==null&&b!==void 0?b:E==null||(x=E.reason)==null?void 0:x.code;L&&($.$feature_flag_reason=L),E!=null&&(I=E.metadata)!=null&&I.id&&($.$feature_flag_id=E.metadata.id),C(E?.original_variant)&&C(E?.original_enabled)||($.$feature_flag_original_response=C(E.original_variant)?E.original_enabled:E.original_variant),E!=null&&(T=E.metadata)!=null&&T.original_payload&&($.$feature_flag_original_payload=E==null||(O=E.metadata)==null?void 0:O.original_payload),P.length&&($.$feature_flag_error=P.join(",")),this.za($)}else n&&this.F({[kn]:c,[Mi]:n});if(r)return{key:t,enabled:!!s,variant:typeof s=="string"?s:void 0,payload:uc(o)}}}else this.rt.warn('getFeatureFlagResult for key "'+t+Bo)}za(t){try{var e;(e=this.nn)==null||e.capture("$feature_flag_called",t).catch((n=>{this.rt.error("Failed to capture feature flag call",n)}))}catch(n){this.rt.error("Failed to capture feature flag call",n)}}getRemoteConfigPayload(t,e){this.Wa(t,e)}Wa(t,e){var n=this;return se((function*(){var i=n.nn;if(i){var r={distinct_id:i.distinctId,token:i.projectToken,person_properties:{$lib:i.library.name,$lib_version:i.library.version}},s=n.Na();s.length&&(r.evaluation_contexts=s);var o,a=n.qa();C(a)||(r.flag_keys=a);try{var l,u=(l=(yield i.sendRequest("/flags/?v=2",{target:"flags",method:"POST",body:r,compression:n.Ne.compression==="base64"?je.Base64:void 0,sentAt:"body",timeoutMs:n.Ne.requestTimeoutMs})).json)==null?void 0:l.featureFlagPayloads;o=u?.[t]||void 0}catch(c){return void n.rt.error("Remote config feature flag request failed",c)}try{e(o)}catch(c){n.rt.error("Remote config feature flag callback failed",c)}}}))()}isFeatureEnabled(t,e){if(e===void 0&&(e={}),e.fresh&&!this.ka)return e.defaultValue;if(!(this.ma||this.getFlags()&&this.getFlags().length>0))return this.rt.warn('isFeatureEnabled for key "'+t+Bo),e.defaultValue;var n=this.getFeatureFlag(t,e);return C(n)?e.defaultValue:!!n}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((e=>e!==t))}receivedFeatureFlags(t,e,n){this.ja(t,e,n)}ja(t,e,n){if(this.nn){this.ma=!0;var i=(function(r,s,o,a,l,u){s===void 0&&(s={}),o===void 0&&(o={}),a===void 0&&(a={}),u===void 0&&(u=hu);var c=((I,T)=>{var E=I.flags;return E?k({},I,{featureFlags:Object.fromEntries(Object.keys(E).map((P=>{var $;return[P,($=E[P].variant)!==null&&$!==void 0?$:E[P].enabled]}))),featureFlagPayloads:Object.fromEntries(Object.keys(E).filter((P=>E[P].enabled)).filter((P=>{var $;return($=E[P].metadata)==null?void 0:$.payload})).map((P=>{var $;return[P,($=E[P].metadata)==null?void 0:$.payload]})))}):(I.featureFlags&&T.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),I)})(r,u),d=c.flags,f=c.featureFlags,h=c.featureFlagPayloads;if(f){var p=r.requestId,g=r.evaluatedAt;if(U(f)){u.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var m={};if(f)for(var v=0;f.length>v;v++)m[f[v]]=!0;return{[Ri]:f,[En]:m,[Kr]:!1}}var S=f,b=h,_=d;if(l!=null&&l.partialResponse)S=k({},s,S),b=k({},o,b),_=k({},a,_);else if(r.errorsWhileComputingFlags)if(d){var x=new Set(Object.keys(d).filter((I=>{var T;return!((T=d[I])!=null&&T.failed)})));S=k({},s,Object.fromEntries(Object.entries(S).filter((I=>x.has(I[0]))))),b=k({},o,Object.fromEntries(Object.entries(b||{}).filter((I=>x.has(I[0]))))),_=k({},a,Object.fromEntries(Object.entries(_||{}).filter((I=>x.has(I[0])))))}else S=k({},s,S),b=k({},o,b),_=k({},a,_);return k({[Ri]:Object.keys(mu(S)),[En]:S||{},[Ti]:b||{},[aa]:_||{},[Kr]:r.minimalFlagCalledEvents===!0},p?{[kr]:p}:{},g?{[Di]:g}:{})}})(t,this.getFlagVariants(),this.getFlagPayloads(),this.getFlagsWithDetails(),n,this.rt);i&&this.F(i),e||(this.xa=!1),this.Va(e)}}override(t,e){e===void 0&&(e=!1),this.rt.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:t,suppressWarning:e})}overrideFeatureFlags(t){this.Za(t)}Za(t){if(this.nn){if(t===!1)return this.q([xt,Sn]),this.Va(),void wn.info("All overrides cleared");if(U(t))return this.F({[xt]:gu(t)}),this.Va(),void wn.info("Flag overrides set",{flags:t});if(t&&typeof t=="object"&&("flags"in t||"payloads"in t)){var e,n=t;this.ca=!!((e=n.suppressWarning)!==null&&e!==void 0&&e);var i={},r=n.flags,s=n.payloads;return r&&(i[xt]=U(r)?gu(r):r),s&&(i[Sn]=s),Object.keys(i).length&&this.F(i),r===!1&&s===!1?this.q([xt,Sn]):r===!1?this.q(xt):s===!1&&this.q(Sn),this.Va(),r===!1?wn.info("Flag overrides cleared"):r&&wn.info("Flag overrides set",{flags:r}),void(s===!1?wn.info("Payload overrides cleared"):s&&wn.info("Payload overrides set",{payloads:s}))}if(t&&typeof t=="object")return this.F({[xt]:t}),this.Va(),void wn.info("Flag overrides set",{flags:t});this.rt.warn("Invalid overrideOptions provided to overrideFeatureFlags",{overrideOptions:t})}else this.rt.warn("posthog.featureFlags.overrideFeatureFlags called before feature flags were ready")}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ma){var e=this.Ga(),n=e.flags,i=e.flagVariants;try{t(n,i)}catch(r){this.rt.error("Error while running feature flags callback",r)}}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,e,n){var i=(this.Oa(Ir)||[]).find((l=>l.flagKey===t)),r={["$feature_enrollment/"+t]:e},s={$feature_flag:t,$feature_enrollment:e,$set:r};i&&(s.$early_access_feature_name=i.name),n&&(s.$feature_enrollment_stage=n);var o=k({},this.getFlagVariants(),{[t]:e});this.F({[Ri]:Object.keys(mu(o)),[En]:o,[Dt]:k({},this.Oa(Dt)||{},r)}),this.Va();try{var a;(a=this.nn)==null||a.capture("$feature_enrollment_update",s).catch((l=>{this.rt.error("Failed to capture early access feature enrollment",l)}))}catch(l){this.rt.error("Failed to capture early access feature enrollment",l)}}getEarlyAccessFeatures(t,e,n){e===void 0&&(e=!1);var i=this.Oa(Ir);!i||e?this.Qa(t,n):t(i)}Qa(t,e){var n=this;return se((function*(){var i=n.nn;if(i){var r,s=e?"&"+e.map((a=>"stage="+a)).join("&"):"";try{var o=yield i.sendRequest("/api/early_access_features/?token="+i.projectToken+s,{target:"api",method:"GET",sentAt:"query"});if(!o.json)return;n.F({[Ir]:r=o.json.earlyAccessFeatures})}catch(a){return void n.rt.error("Early access feature request failed",a)}try{t(r)}catch(a){n.rt.error("Early access feature callback failed",a)}}}))()}Ga(){var t=this.getFlags(),e=this.getFlagVariants();return{flags:t.filter((n=>e[n])),flagVariants:Object.keys(e).filter((n=>e[n])).reduce(((n,i)=>(n[i]=e[i],n)),{})}}Va(t){this.Fa();var e=this.Ga(),n=e.flags,i=e.flagVariants;this.featureFlagEventHandlers.forEach((r=>{try{r(n,i,{errorsLoading:t})}catch(s){this.rt.error("Error while running feature flags callback",s)}}))}setPersonPropertiesForFlags(t,e){e===void 0&&(e=!0),this.Ka(t,e)}Ka(t,e){e===void 0&&(e=!0);var n=this.Oa(Dt)||{},i=t?.$set||(t!=null&&t.$set_once?{}:t),r=t?.$set_once,s={};if(r)for(var o in r)({}).hasOwnProperty.call(r,o)&&(o in n||(s[o]=r[o]));this.F({[Dt]:k({},n,s,i)}),e&&this.reloadFeatureFlags()}unsetPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=k({},this.Oa(Dt)||{});t.forEach((i=>{delete n[i]})),this.F({[Dt]:n}),e&&this.reloadFeatureFlags()}resetPersonPropertiesForFlags(t){t===void 0&&(t=!0),this.q(Dt),t&&this.reloadFeatureFlags()}setGroupPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=this.Oa(xn)||{},i=k({},n);for(var r of Object.keys(t))i[r]=k({},n[r],t[r]);this.F({[xn]:i}),e&&this.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var e=this.Oa(xn)||{};this.F({[xn]:k({},e,{[t]:{}})})}else this.q(xn)}reset(){this.ba++,this.wa=!1,this.Fa(),this.ma=!1,this._a=!1,this.ka=!1,this.$anon_distinct_id=void 0,this.La(),this.ca=!1,this.Sa=0}}},Om={sessionRecording:class{get Ne(){return this._instance.config}get Mr(){return this._instance.persistence}get started(){var t;return!((t=this.Ja)==null||!t.isStarted)}get status(){var t,e;return this.Ya===Ii||this.Ya===wr?this.Ya:(t=(e=this.Ja)==null?void 0:e.status)!==null&&t!==void 0?t:this.Ya}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Ya=ou,this.Xa=void 0,this.eo=!1,this.io=(()=>{var e;if(F==null||!F.visibilityState||F.visibilityState==="visible")return!0;var n=w==null||(e=w.performance)==null||e.getEntriesByType==null?void 0:e.getEntriesByType("visibility-state");return!(n!=null&&n.length)||n.some((i=>i.name==="visible"))})(),this.Ie=()=>{var e;F?.visibilityState==="visible"&&(this.io=!0,(e=this.Ja)==null||e.setDocumentWasEverVisible==null||e.setDocumentWasEverVisible(!0))},this._instance=t,!this._instance.sessionManager)throw Ot.error("started without valid sessionManager"),new Error(Ia+" started without valid sessionManager. This is a bug.");if(this.Ne.cookieless_mode===Ht)throw new Error(Ia+' cannot be used with cookieless_mode="always"');F!=null&&F.addEventListener&&ve(F,"visibilitychange",this.Ie)}initialize(){this.startIfEnabledOrStop()}dispose(){this.eo=!0,F==null||F.removeEventListener==null||F.removeEventListener("visibilitychange",this.Ie),this.stopRecording()}get ro(){var t,e=!((t=this._instance.get_property(Cn))==null||!t.enabled),n=!this.Ne.disable_session_recording,i=this.Ne.disable_session_recording||this._instance.consent.isOptedOut();return w&&e&&n&&!i}startIfEnabledOrStop(t){var e;if(!(this.eo||this.ro&&(e=this.Ja)!=null&&e.isStarted)){var n=!C(Object.assign)&&!C(Array.from);this.ro&&n?(this.no(t),Ot.info("starting")):(this.Ya=ou,this.stopRecording())}}no(t){var e,n,i;this.ro&&(this.Ya!==Ii&&this.Ya!==wr&&(this.Ya=au),B!=null&&(e=B.__PosthogExtensions__)!=null&&(e=e.rrweb)!=null&&e.record&&(n=B.__PosthogExtensions__)!=null&&n.initSessionRecording?this.so(t):(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,this.ao,(r=>{if(r)return Ot.error("could not load recorder",r);this.so(t)})))}stopRecording(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.stop()}oo(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.discard()}lo(){var t,e;(t=this.Mr)==null||t.unregister(ol),(e=this.Mr)==null||e.unregister(Ud)}uo(t,e){if(H(t))return null;var n,i=ke(t)?t:parseFloat(t);return typeof(n=i)!="number"||!Number.isFinite(n)||0>n||n>1?(Ot.warn(e+" must be between 0 and 1. Ignoring invalid value:",t),null):i}ho(t){if(this.Mr){var e,n,i=this.Mr,r=()=>{var s,o=t.sessionRecording===!1?void 0:t.sessionRecording,a=this.uo((s=this.Ne.session_recording)==null?void 0:s.sampleRate,"session_recording.sampleRate"),l=this.uo(o?.sampleRate,"remote config sampleRate"),u=a??l;H(u)&&this.lo();var c=o?.minimumDurationMilliseconds;i.register({[Cn]:k({cache_timestamp:Date.now(),enabled:!!o},o,{networkPayloadCapture:k({capturePerformance:t.capturePerformance},o?.networkPayloadCapture),canvasRecording:{enabled:o?.recordCanvas,fps:o?.canvasFps,quality:o?.canvasQuality},sampleRate:u,minimumDurationMilliseconds:C(c)?null:c,endpoint:o?.endpoint,triggerMatchType:o?.triggerMatchType,masking:o?.masking,urlTriggers:o?.urlTriggers,version:o?.version,triggerGroups:o?.triggerGroups})})};r(),(e=this.Xa)==null||e.call(this),this.Xa=(n=this._instance.sessionManager)==null?void 0:n.onSessionId(r)}}onRemoteConfig(t){var e=t.ok?t.config:void 0;return e&&"sessionRecording"in e?e.sessionRecording===!1?(this.ho(e),void this.oo()):(this.ho(e),void this.startIfEnabledOrStop()):(this.Ya===Ii&&(this.Ya=wr,Ot.warn("config refresh failed, recording will not start until page reload")),void this.startIfEnabledOrStop())}log(t,e){var n;e===void 0&&(e="log"),(n=this.Ja)!=null&&n.log?this.Ja.log(t,e):Ot.warn("log called before recorder was ready")}get ao(){var t,e,n=(t=this._instance)==null||(t=t.persistence)==null?void 0:t.get_property(Cn);return(n==null||(e=n.scriptConfig)==null?void 0:e.script)||"lazy-recorder"}do(){var t,e=this._instance.get_property(Cn);if(!e)return!1;try{t=typeof e=="object"?e:JSON.parse(e)}catch(n){return Ot.warn("persisted remote config for session recording is invalid and will be ignored",n),!1}return!H(t.cache_timestamp)&&36e5>=Date.now()-t.cache_timestamp}so(t){var e,n,i;if(!this.eo){if((e=B.__PosthogExtensions__)==null||!e.initSessionRecording)return Ot.warn("Called on script loaded before session recording is available. This can be caused by adblockers."),void this._instance.register_for_session({[Yd]:!0});var r;if(this.Ja||(this.Ja=(r=B.__PosthogExtensions__)==null?void 0:r.initSessionRecording(this._instance,this.io),this.Ja._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),!this.do())return this.Ya===wr||this.Ya===Ii?void 0:(this.Ya=Ii,Ot.info("persisted remote config is stale, requesting fresh config before starting"),void new bf(this._instance).load());this.Ya=au,(n=(i=this.Ja).setDocumentWasEverVisible)==null||n.call(i,this.io),this.Ja.start(t)}}onRRwebEmit(t){var e;(e=this.Ja)==null||e.onRRwebEmit==null||e.onRRwebEmit(t)}overrideLinkedFlag(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Wd]:!0}),(t=this.Ja)==null||t.overrideLinkedFlag()}overrideSampling(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Hd]:!0}),(t=this.Ja)==null||t.overrideSampling()}overrideTrigger(t){var e,n;this.Ja||(n=this.Mr)==null||n.register({[t==="url"?zd:qd]:!0}),(e=this.Ja)==null||e.overrideTrigger(t)}get sdkDebugProperties(){var t;return((t=this.Ja)==null?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,e){var n;return!((n=this.Ja)==null||!n.tryAddCustomEvent(t,e))}}},Bm={autocapture:class{constructor(t){this.vo=!1,this.co=null,this.fo=!1,this.po=!1,this.instance=t,this.rageclicks=new iu(t.config.rageclick),this.mo=null}initialize(){this.startIfEnabled()}get Ne(){var t,e,n=he(this.instance.config.autocapture)?this.instance.config.autocapture:{};return n.url_allowlist=(t=n.url_allowlist)==null?void 0:t.map((i=>new RegExp(i))),n.url_ignorelist=(e=n.url_ignorelist)==null?void 0:e.map((i=>new RegExp(i))),n}yo(){if(this.isBrowserSupported()){if(w&&F){var t=n=>{n=n||w?.event;try{this.bo(n)}catch(i){Mo.error("Failed to capture event",i)}};if(ve(F,"submit",t,{capture:!0}),ve(F,"change",t,{capture:!0}),ve(F,"click",t,{capture:!0}),this.Ne.capture_copied_text){var e=n=>{n=n||w?.event;try{this.bo(n,$o)}catch(i){Mo.error("Failed to capture copy/cut event",i)}};ve(F,"copy",e,{capture:!0}),ve(F,"cut",e,{capture:!0})}}}else Mo.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.vo&&(this.yo(),this.vo=!0)}onRemoteConfig(t){if(this.fo=!0,t.ok){var e=t.config;e.elementsChainAsString&&(this.po=e.elementsChainAsString);var n=e.autocapture_opt_out;gt(n)&&(this.instance.persistence&&this.instance.persistence.register({[ea]:n}),this.co=n),this.startIfEnabled()}else this.startIfEnabled()}setElementSelectors(t){this.mo=t}getElementSelectors(t){var e,n=[];return(e=this.mo)==null||e.forEach((i=>{var r=F?.querySelectorAll(i);r?.forEach((s=>{t===s&&n.push(i)}))})),n}get isEnabled(){var t,e,n=(t=this.instance.persistence)==null?void 0:t.props[ea],i=this.co,r=this.instance.Qi()&&!this.fo;if(Ve(i)&&!gt(n)&&!r)return!1;var s=(e=this.co)!==null&&e!==void 0?e:!!n;return!!this.instance.config.autocapture&&!s}bo(t,e){if(e===void 0&&(e="$autocapture"),this.isEnabled){var n,i=bo(t);ef(i)&&(i=i.parentNode||null),e==="$autocapture"&&t.type==="click"&&t instanceof MouseEvent&&this.instance.config.rageclick&&(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,t.timeStamp||new Date().getTime())&&$c(i,this.instance.config.rageclick)&&this.bo(t,"$rageclick");var r=e===$o;if(i&&(function(d,f,h,p,g,m){var v;if(!w||dl(d)||h!=null&&h.url_allowlist&&!Fc(h.url_allowlist,m)||h!=null&&h.url_ignorelist&&Fc(h.url_ignorelist,m))return!1;if(h!=null&&h.dom_event_allowlist){var S=h.dom_event_allowlist;if(S&&!S.some((E=>f.type===E)))return!1}var b=af(d,p),_=b.parentIsUsefulElement,x=b.targetElementList;if(!(function(E,P){var $=P?.element_allowlist;if(C($))return!0;var O,L=function(G){if($.some((V=>G.tagName.toLowerCase()===V)))return{v:!0}};for(var N of E)if(O=L(N))return O.v;return!1})(x,h)||!ma(x,h?.css_selector_allowlist)||ma(x,(v=h?.css_selector_ignorelist)!==null&&v!==void 0?v:Lg))return!1;try{var I=w.getComputedStyle(d);if(I&&I.getPropertyValue("cursor")==="pointer"&&f.type==="click")return!0}catch{}var T=d.tagName.toLowerCase();switch(T){case"html":return!1;case"form":return(g||["submit"]).indexOf(f.type)>=0;case"input":case"select":case"textarea":return(g||["change","click"]).indexOf(f.type)>=0;default:return _?(g||["click"]).indexOf(f.type)>=0:(g||["click"]).indexOf(f.type)>=0&&(ul.indexOf(T)>-1||d.getAttribute("contenteditable")==="true")}})(i,t,this.Ne,r,r?["copy","cut"]:void 0,this.instance)){var s=Cm(i,{e:t,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.Ne.element_attribute_ignorelist,elementsChainAsString:this.po,disableCaptureUrlHashes:this.instance.config.disable_capture_url_hashes}),o=s.props;if(s.explicitNoCapture)return!1;var a=this.getElementSelectors(i);if(a&&a.length>0&&(o.$element_selectors=a),e===$o){var l,u=rf(w==null||(l=w.getSelection())==null?void 0:l.toString()),c=t.type||"clipboard";if(!u)return!1;o.$selected_content=u,o.$copy_type=c}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return De(F?.querySelectorAll)}},historyAutocapture:class{constructor(t){var e;this._instance=t,this._o=(w==null||(e=w.location)==null?void 0:e.pathname)||""}initialize(){this.startIfEnabled()}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(A.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.wo&&this.wo(),this.wo=void 0,A.info("History API monitoring stopped")}monitorHistoryChanges(){w&&w.history&&(this.ko("pushState"),this.ko("replaceState"),this.xo())}ko(t){var e;if(w&&((e=w.history[t])==null||!e.__posthog_wrapped__)){var n=this;(function(i,r,s){try{if(!(r in i))return ru;var o={next:i[r]},a=s((function(){for(var l=arguments.length,u=new Array(l),c=0;l>c;c++)u[c]=arguments[c];return o.next.apply(this,u)}));return De(a)&&(a.prototype=a.prototype||{},Object.defineProperties(a,{__posthog_wrapped__:{enumerable:!1,value:!0},__posthog_layer__:{enumerable:!1,value:o}})),i[r]=a,()=>{if(i[r]!==a)for(var l=i[r];De(l)&&l.__posthog_layer__;){var u=l.__posthog_layer__;if(u.next===a)return void(u.next=o.next);l=u.next}else i[r]=o.next}}catch{return ru}})(w.history,t,(i=>function(r,s,o){i.call(this,r,s,o),n.So(t)}))}}So(t){try{var e,n=w==null||(e=w.location)==null?void 0:e.pathname;if(!n)return;n!==this._o&&this.isEnabled&&this._instance.capture(qn,{navigation_type:t}),this._o=n}catch(i){A.error("Error capturing "+t+" pageview",i)}}xo(){if(!this.wo){var t=()=>{this.So("popstate")};ve(w,"popstate",t),this.wo=()=>{w&&w.removeEventListener("popstate",t)}}}},heatmaps:class{get Ne(){return this.instance.config}constructor(t){var e;this.Co=!1,this.vo=!1,this.Mo=null,this.instance=t,this.Co=!((e=this.instance.persistence)==null||!e.props[ta]),this.rageclicks=new iu(t.config.rageclick)}initialize(){this.startIfEnabled()}get flushIntervalMilliseconds(){var t=5e3;return he(this.Ne.capture_heatmaps)&&this.Ne.capture_heatmaps.flush_interval_milliseconds&&(t=this.Ne.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return H(this.Ne.capture_heatmaps)?H(this.Ne.enable_heatmaps)?this.Co:this.Ne.enable_heatmaps:this.Ne.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.vo)return;Pm.info("starting..."),this.To(),this.Ie()}else{var t;clearInterval((t=this.Mo)!==null&&t!==void 0?t:void 0),this.Eo(),this.getAndClearBuffer()}}onRemoteConfig(t){if(t.ok){var e=t.config;if("heatmaps"in e){var n=!!e.heatmaps;this.instance.persistence&&this.instance.persistence.register({[ta]:n}),this.Co=n,this.startIfEnabled()}}}getAndClearBuffer(){var t=this.R;return this.R=void 0,t}Io(t){No(t.originalEvent)&&this.ke(t.originalEvent,"deadclick")}Ie(){this.Mo&&clearInterval(this.Mo),this.Mo=F?.visibilityState==="visible"?setInterval(this.cr.bind(this),this.flushIntervalMilliseconds):null}To(){w&&F&&(this.Po=this.cr.bind(this),ve(w,Qr,this.Po),this.Ro=t=>this.ke(t||w?.event),ve(F,"click",this.Ro,{capture:!0}),this.Ao=t=>this.Fo(t||w?.event),ve(F,"mousemove",this.Ao,{capture:!0}),this.Lo=new jc(this.instance,Hg,this.Io.bind(this)),this.Lo.startIfEnabledOrStop(),this.Oo=this.Ie.bind(this),ve(F,Xr,this.Oo),this.vo=!0)}Eo(){var t;w&&F&&(this.Po&&w.removeEventListener(Qr,this.Po),this.Ro&&F.removeEventListener("click",this.Ro,{capture:!0}),this.Ao&&F.removeEventListener("mousemove",this.Ao,{capture:!0}),this.Oo&&F.removeEventListener(Xr,this.Oo),clearTimeout(this.Do),(t=this.Lo)==null||t.stop(),this.vo=!1)}$o(t,e){var n=this.instance.scrollManager.scrollY(),i=this.instance.scrollManager.scrollX(),r=this.instance.scrollManager.scrollElement(),s=(function(o,a,l){for(var u=o;u&&fn(u)&&!Qe(u,"body");){if(u===l)return!1;var c=void 0;try{var d,f,h;c=(d=(f=(h=u.ownerDocument)==null?void 0:h.defaultView)!==null&&f!==void 0?f:w)==null?void 0:d.getComputedStyle(u).position}catch{return!1}if(j(a,c))return!0;u=sf(u)}return!1})(bo(t),["fixed","sticky"],r);return{x:t.clientX+(s?0:i),y:t.clientY+(s?0:n),target_fixed:s,type:e}}ke(t,e){var n;if(e===void 0&&(e="click"),!Pc(t.target)&&No(t)){var i=this.$o(t,e);(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,new Date().getTime())&&$c(bo(t),this.instance.config.rageclick)&&this.Vt(k({},i,{type:"rageclick"})),this.Vt(i)}}Fo(t){!Pc(t.target)&&No(t)&&(clearTimeout(this.Do),this.Do=setTimeout((()=>{this.Vt(this.$o(t,"mousemove"))}),500))}Vt(t){if(w){var e=this.Ne.disable_capture_url_hashes?dn(w.location.href):w.location.href,n=this.Ne.custom_personal_data_properties,i=this.Ne.mask_personal_data_properties?[...ii,...n||[]]:[],r=Ji(e,i,Zi);this.R=this.R||{},this.R[r]||(this.R[r]=[]),this.R[r].push(t)}}cr(){this.R&&!Vt(this.R)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}},deadClicksAutocapture:jc,webVitalsAutocapture:class{constructor(t){var e;this.Co=!1,this.vo=!1,this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},this.No=()=>{clearTimeout(this.qo),this.qo=void 0,this.R.metrics.length!==0&&(this._instance.capture("$web_vitals",k({$current_url:this.R.url},this.R.metrics.reduce(((n,i)=>k({},n,{["$web_vitals_"+i.name+"_event"]:k({},i),["$web_vitals_"+i.name+"_value"]:i.value})),{}))),this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.jo=n=>{var i;if(this.R=this.R||{navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},H(n?.name)||H(n?.value))yn.error("Invalid metric received",n);else{var r=typeof n.navigationURL=="string"?n.navigationURL:void 0,s=this.Bo(r);if(!C(s)){var o=ke(n.navigationId)||typeof n.navigationId=="string"?"navigation:"+n.navigationId:"url:"+s;if(!this.Ho||this.Ho>n.value){this.R.navigationKey!==o&&(this.No(),this.qo=setTimeout(this.No,this.flushToCaptureTimeoutMs)),C(this.R.navigationKey)&&(this.R.navigationKey=o,this.R.url=s),this.R.firstMetricTimestamp=C(this.R.firstMetricTimestamp)?Date.now():this.R.firstMetricTimestamp,n.attribution&&n.attribution.interactionTargetElement&&(n.attribution.interactionTargetElement=void 0);var a=(i=this._instance.sessionManager)==null?void 0:i.checkAndGetSessionAndWindowId(!0),l=k({},n,r?{navigationURL:s}:{},{$current_url:s,timestamp:Date.now()});C(a)||(l.$session_id=a.sessionId,l.$window_id=a.windowId),this.R.metrics.push(l),this.R.metrics.length===this.allowedMetrics.length&&this.No()}else yn.error("Ignoring metric with value >= "+this.Ho,n)}}},this.Uo=()=>{if(!this.vo){var n,i,r,s,o=B.__PosthogExtensions__,a=o?.postHogWebVitalsCallbacksByFlavor,l=a?.[this.zo]||(this.zo==="web-vitals"&&C(a)?o?.postHogWebVitalsCallbacks:void 0);if(C(l)||(n=l.onLCP,i=l.onCLS,r=l.onFCP,s=l.onINP),n&&i&&r&&s){var u={reportSoftNavs:this.useSoftNavs};this.allowedMetrics.indexOf("LCP")>-1&&n(this.jo.bind(this),u),this.allowedMetrics.indexOf("CLS")>-1&&i(this.jo.bind(this),u),this.allowedMetrics.indexOf("FCP")>-1&&r(this.jo.bind(this),u),this.allowedMetrics.indexOf("INP")>-1&&s(this.jo.bind(this),u),this.vo=!0}else yn.error("web vitals callbacks not loaded - not starting")}},this._instance=t,this.Co=!((e=this._instance.persistence)==null||!e.props[sa]),this.startIfEnabled()}get Wo(){return this._instance.config.capture_performance}get allowedMetrics(){var t,e,n=he(this.Wo)?(t=this.Wo)==null?void 0:t.web_vitals_allowed_metrics:void 0;return H(n)?((e=this._instance.persistence)==null?void 0:e.props[oa])||["CLS","FCP","INP","LCP"]:n}get flushToCaptureTimeoutMs(){return(he(this.Wo)?this.Wo.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=he(this.Wo)?this.Wo.web_vitals_attribution:void 0;return t!=null&&t}get useSoftNavs(){var t=he(this.Wo)?this.Wo.__preview_web_vitals_soft_navs:void 0;return t!=null&&t}get Ho(){var t=he(this.Wo)&&ke(this.Wo.__web_vitals_max_value)?this.Wo.__web_vitals_max_value:su;return t>0&&6e4>=t?su:t}get isEnabled(){var t=me?.protocol;if(t!=="http:"&&t!=="https:")return yn.info("Web Vitals are disabled on non-http/https protocols"),!1;var e=he(this.Wo)?this.Wo.web_vitals:gt(this.Wo)?this.Wo:void 0;return gt(e)?e:this.Co}startIfEnabled(){this.isEnabled&&!this.vo&&(yn.info("enabled, starting..."),this.ai(this.Uo))}onRemoteConfig(t){if(t.ok){var e=t.config;if("capturePerformance"in e){var n=he(e.capturePerformance)&&!!e.capturePerformance.web_vitals,i=he(e.capturePerformance)?e.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[sa]:n}),this._instance.persistence.register({[oa]:i})),this.Co=n,this.startIfEnabled()}}}get zo(){return this.useSoftNavs?this.useAttribution?"web-vitals-with-attribution-soft-navs":"web-vitals-soft-navs":this.useAttribution?"web-vitals-with-attribution":"web-vitals"}ai(t){var e=B.__PosthogExtensions__,n=this.zo,i=e?.postHogWebVitalsCallbacksByFlavor;i!=null&&i[n]||n==="web-vitals"&&C(i)&&e!=null&&e.postHogWebVitalsCallbacks?t():e==null||e.loadExternalDependency==null||e.loadExternalDependency(this._instance,n,(r=>{r?yn.error("failed to load script",r):t()}))}Bo(t){var e=t||w?.location.href;if(e){var n=this._instance.config.disable_capture_url_hashes?dn(e):e,i=this._instance.config.custom_personal_data_properties,r=this._instance.config.mask_personal_data_properties?[...ii,...i||[]]:[];return Ji(n,r,Zi)}yn.error("Could not determine current URL")}}},Dm={exceptionObserver:class{constructor(t){var e;this.Uo=()=>{var n;if(w&&this.isEnabled&&(n=B.__PosthogExtensions__)!=null&&n.errorWrappingFunctions){var i=B.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=B.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=B.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.Vo&&this.Ne.capture_unhandled_errors&&(this.Vo=i(this.captureException.bind(this))),!this.Zo&&this.Ne.capture_unhandled_rejections&&(this.Zo=r(this.captureException.bind(this))),!this.Go&&this.Ne.capture_console_errors&&(this.Go=s(this.captureException.bind(this)))}catch(o){xi.error("failed to start",o),this.Qo()}}},this._instance=t,this.Ko=!((e=this._instance.persistence)==null||!e.props[na]),this.Jo=new Op(k({},(function(n){var i,r,s,o;return n===void 0&&(n={}),{refillRate:(i=(r=n.exceptionRateLimiterRefillRate)!==null&&r!==void 0?r:n.__exceptionRateLimiterRefillRate)!==null&&i!==void 0?i:1,bucketSize:(s=(o=n.exceptionRateLimiterBucketSize)!==null&&o!==void 0?o:n.__exceptionRateLimiterBucketSize)!==null&&s!==void 0?s:10}})(this._instance.config.error_tracking),{refillInterval:1e4,rt:xi})),this.Ne=this.Yo(),this.startIfEnabledOrStop()}Yo(){var t=this._instance.config.capture_exceptions,e={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return he(t)?e=k({},e,t):(C(t)?this.Ko:t)&&(e=k({},e,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),e}get isEnabled(){return this.Ne.capture_console_errors||this.Ne.capture_unhandled_errors||this.Ne.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(xi.info("enabled"),this.Qo(),this.ai(this.Uo)):this.Qo()}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.errorWrappingFunctions?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"exception-autocapture",(i=>{if(i)return xi.error("failed to load script",i);t()}))}Qo(){var t,e,n;(t=this.Vo)==null||t.call(this),this.Vo=void 0,(e=this.Zo)==null||e.call(this),this.Zo=void 0,(n=this.Go)==null||n.call(this),this.Go=void 0}onRemoteConfig(t){if(t.ok){var e=t.config;"autocaptureExceptions"in e&&(this.Ko=!!e.autocaptureExceptions||!1,this._instance.persistence&&this._instance.persistence.register({[na]:this.Ko}),this.Ne=this.Yo(),this.startIfEnabledOrStop())}}onConfigChange(){this.Ne=this.Yo()}captureException(t){var e,n,i,r=(e=t==null||(n=t.$exception_list)==null||(n=n[0])==null?void 0:n.type)!==null&&e!==void 0?e:"Exception";this.Jo.consumeRateLimit(r)?xi.info("Skipping exception capture because of client rate limiting.",{exception:r}):(i=this._instance.exceptions)==null||i.sendExceptionEvent(t)}},exceptions:class{constructor(t){var e,n;this.Xo=[],this.tl=new eg([new lg,new vg,new ug,new cg,new gg,new pg,new fg,new mg],(function(i){for(var r=arguments.length,s=new Array(r>1?r-1:0),o=1;r>o;o++)s[o-1]=arguments[o];return function(a,l){l===void 0&&(l=0);for(var u=[],c=a.split(` -`),d=l;c.length>d;d++){var f=c[d];if(1024>=f.length){var h=Ic.test(f)?f.replace(Ic,"$1"):f;if(!h.match(/\S*Error: /)){for(var p of s){var g=p(h,i);if(g){u.push(g);break}}if(u.length>=50)break}}}return(function(m){if(!m.length)return[];var v=Array.from(m);return v.reverse(),v.slice(0,50).map((S=>{return k({},S,{filename:S.filename||(b=v,b[b.length-1]||{}).filename,function:S.function||ti});var b}))})(u)}})("web:javascript",rg,ag)),this._instance=t,this.Xo=(e=(n=this._instance.persistence)==null?void 0:n.get_property(ia))!==null&&e!==void 0?e:[],this.el=Gr(this.il()),this.rl=new yg(this.el)}onConfigChange(){this.el=Gr(this.il()),this.rl.setConfig(this.el)}onRemoteConfig(t){var e,n,i;if(t.ok){var r=t.config;if("errorTracking"in r){var s=(e=(n=r.errorTracking)==null?void 0:n.suppressionRules)!==null&&e!==void 0?e:[],o=(i=r.errorTracking)==null?void 0:i.captureExtensionExceptions;this.Xo=s,this._instance.persistence&&this._instance.persistence.register({[ia]:this.Xo,[ra]:o})}}}get nl(){var t,e=!!this._instance.get_property(ra),n=this._instance.config.error_tracking.captureExtensionExceptions;return(t=n??e)!==null&&t!==void 0&&t}buildProperties(t,e){return this.tl.buildFromUnknown(t,{syntheticException:e?.syntheticException,mechanism:{handled:e?.handled}})}addExceptionStep(t,e){if(this.el.enabled)try{if(!X(t)||t.trim().length===0)return void Et.warn("Ignoring exception step because message must be a non-empty string");var n=(function(s){if(!s)return{sanitizedProperties:{},droppedKeys:[]};var o=[];return{sanitizedProperties:Object.keys(s).reduce(((a,l)=>_g.has(l)?(o.push(l),a):(a[l]=s[l],a)),{}),droppedKeys:o}})(this.sl(e)),i=n.sanitizedProperties,r=n.droppedKeys;r.length>0&&Et.warn("Ignoring reserved exception step fields",{droppedKeys:r}),this.rl.add(k({[qr]:t,[Vr]:new Date().toISOString()},i))}catch(s){Et.error("Failed to add exception step. Ignoring breadcrumb.",s)}}sendExceptionEvent(t){try{var e=t.$exception_list;if(this.al(e)){if(this.ol(e))return this.ll("Exception dropped: matched a suppression rule"),void Et.info("Skipping exception capture because a suppression rule matched");if(!this.nl&&this.ul(e))return this.ll("Exception dropped: thrown by a browser extension"),void Et.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.hl(e))return this.ll("Exception dropped: thrown by the PostHog SDK"),void Et.info("Skipping exception capture because it was thrown by the PostHog SDK")}var n=this.el.enabled&&H(t.$exception_steps)?this.dl(t):t,i=typeof(s=globalThis._posthogReleaseId)=="string"&&s.length>0?s:void 0;i&&(n.$release_id=i);try{var r=this._instance.capture("$exception",n,{_noTruncate:!0,_batchKey:"exceptionEvent",Wn:!0});return r&&this.rl.clear(),r}catch(o){return Et.error("Failed to capture exception event. Dropping this exception.",o),void this.rl.clear()}}catch(o){return void Et.error("Failed to process exception event. Ignoring this exception.",o)}var s}dl(t){try{var e=this.rl.getAttachable();return e.length===0?t:k({},t,{$exception_steps:e})}catch(n){return Et.error("Failed to read buffered exception steps. Capturing exception without steps.",n),t}}ll(t){this.el.enabled&&this.rl.add({[qr]:t,[Vr]:new Date().toISOString()})}sl(t){return he(t)?k({},t):{}}il(){var t,e;return(t=(e=this._instance.config.error_tracking)==null?void 0:e.exception_steps)!==null&&t!==void 0?t:{}}ol(t){if(t.length===0)return!1;try{var e=t.reduce(((n,i)=>{var r=i.type,s=i.value;return X(r)&&r.length>0&&n.$exception_types.push(r),X(s)&&s.length>0&&n.$exception_values.push(s),n}),{$exception_types:[],$exception_values:[]});return this.Xo.some((n=>{var i=n.values.map((r=>{var s=Lf[r.operator],o=e[r.key];if(!s||!o)return!1;var a=U(r.value)?r.value:[r.value];return a.length>0&&s(a,o)}));return n.type==="OR"?i.some(Boolean):i.every(Boolean)}))}catch(n){return Et.warn("Failed to evaluate suppression rules. Capturing the exception.",n),!1}}ul(t){return t.flatMap((e=>{var n,i;return(n=(i=e.stacktrace)==null?void 0:i.frames)!==null&&n!==void 0?n:[]})).some((e=>e.filename&&e.filename.startsWith("chrome-extension://")))}hl(t){if(t.length>0){var e,n,i,r,s=(e=(n=t[0].stacktrace)==null?void 0:n.frames)!==null&&e!==void 0?e:[],o=s[s.length-1];return(i=o==null||(r=o.filename)==null?void 0:r.includes("posthog.com/static"))!==null&&i!==void 0&&i}return!1}al(t){return!H(t)&&U(t)}}},jm=k({productTours:class{get Mr(){return this._instance.persistence}constructor(t){this.vl=null,this.cl=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(t.ok){var e=t.config;if("productTours"in e){var n,i;if(this.Mr&&this.Mr.register({[sl]:!!e.productTours}),!Oo(this._instance))return!this.vl&&H((n=this.Mr)==null?void 0:n.props[$i])||br.info("product tours disabled; stopping and clearing cached tours"),(i=this.vl)==null||i.stop(),this.vl=null,void this.clearCache();this.loadIfEnabled()}}}loadIfEnabled(){!this.vl&&Oo(this._instance)&&this.ai((()=>this.fl()))}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.generateProductTours?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"product-tours",(i=>{i?br.error("Could not load product tours script",i):t()}))}fl(){var t;!this.vl&&(t=B.__PosthogExtensions__)!=null&&t.generateProductTours&&(this.vl=B.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,e){if(e===void 0&&(e=!1),!U(this.cl)||e){var n=this.Mr;if(n){var i=n.props[$i];if(U(i)&&!e)return this.cl=i,void t(i,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",timestampMode:"query",callback:r=>{if(Oo(this._instance)){var s=r.statusCode;if(s!==200||!r.json){var o="Product Tours API could not be loaded, status: "+s;return s===0?r.error||br.warn(o):br.error(o),void t([],{isLoaded:!1,error:o})}var a=U(r.json.product_tours)?r.json.product_tours:[];this.cl=a,n&&n.register({[$i]:a}),t(a,{isLoaded:!0})}else t([],{isLoaded:!0})}})}else t(this.cl,{isLoaded:!0})}getActiveProductTours(t){H(this.vl)?t([],{isLoaded:!1,error:"Product tours not loaded"}):this.vl.getActiveProductTours(t)}showProductTour(t){var e;(e=this.vl)==null||e.showTourById(t)}previewTour(t){this.vl?this.vl.previewTour(t):this.ai((()=>{var e;this.fl(),(e=this.vl)==null||e.previewTour(t)}))}dismissProductTour(){var t;(t=this.vl)==null||t.dismissTour("user_clicked_skip")}nextStep(){var t;(t=this.vl)==null||t.nextStep()}previousStep(){var t;(t=this.vl)==null||t.previousStep()}clearCache(){var t;this.cl=null,(t=this.Mr)==null||t.unregister($i)}resetTour(t){var e;(e=this.vl)==null||e.resetTour(t)}resetAllTours(){var t;(t=this.vl)==null||t.resetAllTours()}cancelPendingTour(t){var e;(e=this.vl)==null||e.cancelPendingTour(t)}}},ks),Um={siteApps:class{constructor(t){this.pl=0,this._instance=t,this.gl=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ml(t,e){if(e){var n=this.globalsForEvent(e);this.gl.push(n),this.gl.length>1e3&&(this.gl=this.gl.slice(10))}}get siteAppLoaders(){var t;return(t=B._POSTHOG_REMOTE_CONFIG)==null||(t=t[this._instance.config.token])==null?void 0:t.siteApps}initialize(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.ml.bind(this));this.yl=()=>{t(),this.gl=[],this.yl=void 0}}}globalsForEvent(t){var e,n,i,r,s,o,a;if(!t)throw new Error("Event payload is required");var l={},u=this._instance.get_property("$groups")||[],c=this._instance.get_property("$stored_group_properties")||{};for(var d of Object.entries(c)){var f=d[0];l[f]={id:u[f],type:f,properties:d[1]}}var h=t.$set_once,p=t.$set;return{event:k({},sd(t,Fm),{properties:k({},t.properties,p?{$set:k({},(e=(n=t.properties)==null?void 0:n.$set)!==null&&e!==void 0?e:{},p)}:{},h?{$set_once:k({},(i=(r=t.properties)==null?void 0:r.$set_once)!==null&&i!==void 0?i:{},h)}:{}),elements_chain:(s=(o=t.properties)==null?void 0:o.$elements_chain)!==null&&s!==void 0?s:"",distinct_id:(a=t.properties)==null?void 0:a.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:l}}bl(t){var e,n=(e=t.tagName)==null?void 0:e.toLowerCase();return n==="style"&&this._instance.config.prepare_external_dependency_stylesheet?this._instance.config.prepare_external_dependency_stylesheet(t)||(bt.error("prepare_external_dependency_stylesheet returned null"),null):n==="script"&&this._instance.config.prepare_external_dependency_script?this._instance.config.prepare_external_dependency_script(t)||(bt.error("prepare_external_dependency_script returned null"),null):t}_l(){var t,e,n,i,r,s,o,a;if(!this._instance.config.prepare_external_dependency_stylesheet&&!this._instance.config.prepare_external_dependency_script)return()=>{};var l=F?.defaultView,u=l==null||(t=l.Node)==null?void 0:t.prototype;if(!l||!u)return()=>{};if(this.pl++,this.wl)return this.kl();var c=[],d=this,f=new WeakSet,h=(m,v,S)=>{if(m!=null&&m[v]){var b=m[v];m[v]=S(b),c.push((()=>{m[v]=b}))}},p=m=>{if(f.has(m))return m;var v=d.bl(m);return v&&f.add(v),v},g=m=>m.map((v=>typeof v=="string"?v:p(v))).filter((v=>!Ve(v)));return h(u,"appendChild",(m=>function(v){var S=p(v);return S?m.call(this,S):v})),h(u,"insertBefore",(m=>function(v,S){var b=p(v);return b?m.call(this,b,S):v})),h(u,"replaceChild",(m=>function(v,S){var b=p(v);return b?m.call(this,b,S):S})),[(e=l.Element)==null?void 0:e.prototype,(n=l.Document)==null?void 0:n.prototype,(i=l.DocumentFragment)==null?void 0:i.prototype].forEach((m=>{h(m,"append",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"prepend",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))}))})),[(r=l.Element)==null?void 0:r.prototype,(s=l.CharacterData)==null?void 0:s.prototype,(o=l.DocumentType)==null?void 0:o.prototype].forEach((m=>{h(m,"before",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"after",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"replaceWith",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];var x=g(b);return b.length&&!x.length?void 0:v.apply(this,x)}))})),h((a=l.Element)==null?void 0:a.prototype,"insertAdjacentElement",(m=>function(v,S){var b=p(S);return b?m.call(this,v,b):null})),this.wl=()=>{c.forEach((m=>m())),this.wl=void 0},this.kl()}kl(){var t=!1;return()=>{var e;t||(t=!0,this.pl--,this.pl===0&&((e=this.wl)==null||e.call(this)))}}xl(t,e){e===void 0&&(e=!0);var n=this._l();try{var i=t(n);return e&&n(),i}catch(r){throw n(),r}}setupSiteApp(t){var e=this.apps[t.id],n=()=>{var o;!e.errored&&this.gl.length&&(bt.info("Processing "+this.gl.length+" events for site app with id "+t.id),this.gl.forEach((a=>this.xl((()=>e.processEvent==null?void 0:e.processEvent(a))))),e.processedBuffer=!0),Object.values(this.apps).every((a=>a.processedBuffer||a.errored))&&((o=this.yl)==null||o.call(this))},i=!1,r=o=>{e.errored=!o,e.loaded=!0,bt.info("Site app with id "+t.id+" "+(o?"loaded":"errored")),i&&n()};try{var s=this.xl((o=>t.init({posthog:this._instance,callback(a){o(),r(a)}})),!1).processEvent;s&&(e.processEvent=s),i=!0}catch(o){bt.error(lu+t.id,o),r(!1)}if(i&&e.loaded)try{n()}catch(o){bt.error("Error while processing buffered events PostHog app with config id "+t.id,o),e.errored=!0}}Sl(){var t=this.siteAppLoaders||[];for(var e of t)this.apps[e.id]={id:e.id,loaded:!1,errored:!1,processedBuffer:!1};for(var n of t)this.setupSiteApp(n)}Cl(t){var e=this;if(Object.keys(this.apps).length!==0){var n=this.globalsForEvent(t),i=function(s){try{e.xl((()=>s.processEvent==null?void 0:s.processEvent(n)))}catch(o){bt.error("Error while processing event "+t.event+" for site app "+s.id,o)}};for(var r of Object.values(this.apps))i(r)}}onRemoteConfig(t){var e,n,i,r=this;if((e=this.siteAppLoaders)!=null&&e.length)return this.isEnabled?(this.Sl(),void this._instance.on("eventCaptured",(l=>this.Cl(l)))):void bt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((n=this.yl)==null||n.call(this),t.ok){var s=t.config;if((i=s.siteApps)!=null&&i.length)if(this.isEnabled){var o=function(){var l,u=a.id,c=a.url;B["__$$ph_site_app_"+u]=r._instance,(l=B.__PosthogExtensions__)==null||l.loadSiteApp==null||l.loadSiteApp(r._instance,c,(d=>{if(d)return bt.error(lu+u,d)}))};for(var a of s.siteApps)o()}else bt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}}},Hm={tracingHeaders:class{constructor(t){this.Ml=void 0,this.Tl=void 0,this.El=void 0,this.Uo=()=>{var e,n,i=this.Il();i?(C(this.Ml)&&(this.Ml=(e=B.__PosthogExtensions__)==null||(e=e.tracingHeadersPatchFns)==null?void 0:e._patchXHR(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager)),C(this.Tl)&&(this.Tl=(n=B.__PosthogExtensions__)==null||(n=n.tracingHeadersPatchFns)==null?void 0:n._patchFetch(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager))):this.Qo()},this._instance=t}initialize(){this.startIfEnabledOrStop()}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.tracingHeadersPatchFns?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"tracing-headers",(i=>{if(i)return Am.error("failed to load script",i);t()}))}Pl(){var t,e;return(t=(e=this._instance.config.tracing_headers)!==null&&e!==void 0?e:this._instance.config.addTracingHeaders)!==null&&t!==void 0?t:this._instance.config.__add_tracing_headers}Il(){var t=this.Pl();return U(t)?(U(this.El)?this.El.splice(0,this.El.length,...t):this.El=[...t],t.length>0?this.El:void 0):(U(this.El)&&this.El.splice(0),this.El=t||void 0,this.El)}Qo(){var t,e;(t=this.Ml)==null||t.call(this),(e=this.Tl)==null||e.call(this),this.Ml=void 0,this.Tl=void 0}startIfEnabledOrStop(){this.Il()?this.ai(this.Uo):this.Qo()}}},Wm=k({surveys:class{get Ne(){return this._instance.config}constructor(t){this.Rl=void 0,this._surveyManager=null,this.Al=!1,this.Fl=[],this.Ll=null,this.Ol=null,this._instance=t,this._surveyEventReceiver=null}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this.Ne.disable_surveys){if(!t.ok)return Q.warn("Remote config unavailable. Not loading surveys.");var e=t.config.surveys;if(H(e))return Q.warn("Flags not loaded yet. Not loading surveys.");var n=U(e);this.Rl=n?e.length>0:e,Q.info("flags response received, isSurveysEnabled: "+this.Rl),this.loadIfEnabled()}}reset(){try{var t;(t=this._surveyEventReceiver)==null||t.reset(),localStorage.removeItem("lastSeenSurveyDate");for(var e=[],n=0;nlocalStorage.removeItem(r)))}catch{}}loadIfEnabled(){if(!this._surveyManager)if(this.Al)Q.info("Already initializing surveys, skipping...");else if(this.Ne.disable_surveys)Q.info(cu);else if(this.Ne.cookieless_mode&&this._instance.consent.isOptedOut())Q.info("Not loading surveys in cookieless mode without consent.");else{var t=B?.__PosthogExtensions__;if(t){if(!C(this.Rl)||this.Ne.advanced_enable_surveys){var e=this.Rl||this.Ne.advanced_enable_surveys;this.Al=!0;try{var n=t.generateSurveys;if(n)return void this.Dl(n,e);var i=t.loadExternalDependency;if(!i)return void this.$l(al);i(this._instance,"surveys",(r=>{r||!t.generateSurveys?this.$l("Could not load surveys script",r):this.Dl(t.generateSurveys,e)}))}catch(r){throw this.$l("Error initializing surveys",r),r}finally{this.Al=!1}}}else Q.error("PostHog Extensions not found.")}}Dl(t,e){this._surveyManager=t(this._instance,e),this._surveyEventReceiver=new $m(this._instance),Q.info("Surveys loaded successfully"),this.Nl({isLoaded:!0})}$l(t,e){Q.error(t,e),this.Nl({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.Fl.push(t),this._surveyManager&&this.Nl({isLoaded:!0}),()=>{this.Fl=this.Fl.filter((e=>e!==t))}}getSurveys(t,e){if(e===void 0&&(e=!1),this.Ne.disable_surveys)return Q.info(cu),t([]);var n,i=this._instance.get_property(la);if(i&&!e)return t(i,{isLoaded:!0}),void(this.ql()&&this.getSurveys((()=>{}),!0));typeof Promise<"u"&&this.Ll?this.Ll.then((r=>t(r.surveys,r.context))):(typeof Promise<"u"&&(this.Ll=new Promise((r=>{n=r}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this.Ne.token),method:"GET",timestampMode:"query",timeout:this.Ne.surveys_request_timeout_ms,callback:r=>{var s;this.Ll=null;var o=r.statusCode;if(o!==200||!r.json){var a="Surveys API could not be loaded, status: "+o;o!==0?Q.error(a):r.error||Q.warn(a),this.Ol=Date.now();var l={isLoaded:!1,error:a};return t([],l),void(n==null||n({surveys:[],context:l}))}this.Ol=null;var u,c=r.json.surveys||[],d=c.filter((h=>(function(p){return!(!p.start_date||p.end_date)})(h)&&(Of(h)||(function(p){var g;return!((g=p.conditions)==null||(g=g.actions)==null||(g=g.values)==null||!g.length)})(h))));d.length>0&&((u=this._surveyEventReceiver)==null||u.register(d)),(s=this._instance.persistence)==null||s.register({[la]:c,[Yr]:Date.now()});var f={isLoaded:!0};t(c,f),n?.({surveys:c,context:f})}}))}ql(){return this.jl()&&!this.Ll&&!this.Bl()}jl(){var t=this._instance.get_property(Yr);return ke(t)&&Date.now()-t>3e5}Bl(){return ke(this.Ol)&&3e5>Date.now()-this.Ol}markSurveyAsSeen(t,e){var n,i={id:t,current_iteration:(n=e?.iteration)!==null&&n!==void 0?n:null};Df(i);try{localStorage.setItem("lastSeenSurveyDate",new Date().toISOString())}catch{}}Nl(t){for(var e of this.Fl)try{if(!t.isLoaded)return e([],t);this.getSurveys(e)}catch(n){Q.error("Error in survey callback",n)}}getActiveMatchingSurveys(t,e){if(e===void 0&&(e=!1),!H(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,e);Q.warn("init was not called")}Hl(t){var e=null;return this.getSurveys((n=>{var i;e=(i=n.find((r=>r.id===t)))!==null&&i!==void 0?i:null})),e}Ul(t){if(H(this._surveyManager))return{eligible:!1,reason:Er};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyEligibility(e):{eligible:!1,reason:"Survey not found"}}zl(t){if(H(this._surveyManager))return{eligible:!1,reason:Er};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyRenderability(e):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(t){if(H(this._surveyManager))return Q.warn("init was not called"),{visible:!1,disabledReason:Er};var e=this.zl(t);return{visible:e.eligible,disabledReason:e.reason}}canRenderSurveyAsync(t,e){return H(this._surveyManager)?(Q.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:Er})):new Promise((n=>{this.getSurveys((i=>{var r,s=(r=i.find((a=>a.id===t)))!==null&&r!==void 0?r:null;if(s){var o=this.zl(s);n({visible:o.eligible,disabledReason:o.reason})}else n({visible:!1,disabledReason:"Survey not found"})}),e)}))}renderSurvey(t,e,n){var i;if(H(this._surveyManager))Q.warn("init was not called");else{var r=typeof t=="string"?this.Hl(t):t;if(r!=null&&r.id)if(gm.includes(r.type)){var s=F?.querySelector(e);if(s)return(i=r.appearance)!=null&&i.surveyPopupDelaySeconds?(Q.info("Rendering survey "+r.id+" with delay of "+r.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout((()=>{var o,a;Q.info("Rendering survey "+r.id+" with delay of "+((o=r.appearance)==null?void 0:o.surveyPopupDelaySeconds)+" seconds"),(a=this._surveyManager)==null||a.renderSurvey(r,s,n),Q.info("Survey "+r.id+" rendered")}),1e3*r.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(r,s,n);Q.warn("Survey element not found")}else Q.warn("Surveys of type "+r.type+" cannot be rendered in the app");else Q.warn("Survey not found")}}displaySurvey(t,e){var n;if(H(this._surveyManager))Q.warn("init was not called");else{var i=this.Hl(t);if(i){var r=i;if((n=i.appearance)!=null&&n.surveyPopupDelaySeconds&&e.ignoreDelay&&(r=k({},i,{appearance:k({},i.appearance,{surveyPopupDelaySeconds:0})})),e.displayType!==_a.Popover&&e.initialResponses&&Q.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),e.ignoreConditions===!1){var s=this.Ul(i);if(!s.eligible)return void Q.warn("Survey is not eligible to be displayed: ",s.reason)}e.displayType!==_a.Inline?this._surveyManager.handlePopoverSurvey(r,e):this.renderSurvey(r,e.selector,e.properties)}else Q.warn("Survey not found")}}cancelPendingSurvey(t){H(this._surveyManager)?Q.warn("init was not called"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;(t=this._surveyManager)==null||t.handlePageUnload==null||t.handlePageUnload()}}},ks),zm={toolbar:class{constructor(t){this.instance=t}Wl(t){B.ph_toolbar_state=t}Vl(){var t;return(t=B.ph_toolbar_state)!==null&&t!==void 0?t:0}initialize(){return this.maybeLoadToolbar()}maybeLoadToolbar(t,e,n){if(t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),ga(this.instance.config)||!w||!F)return!1;t=t??w.location,n=n??w.history;try{if(!e){try{w.localStorage.setItem("test","test"),w.localStorage.removeItem("test")}catch{return!1}e=w?.localStorage}var i,r=Mm||is(t.hash,"__posthog")||is(t.hash,"state"),s=r?Cc((()=>JSON.parse(atob(decodeURIComponent(r)))))||Cc((()=>JSON.parse(decodeURIComponent(r)))):null;return s&&s.action==="ph_authorize"?((i=s).source="url",i&&Object.keys(i).length>0&&(s.desiredHash?t.hash=s.desiredHash:n?n.replaceState(n.state,"",t.pathname+t.search):t.hash="")):((i=JSON.parse(e.getItem(uu)||"{}")).source="localstorage",delete i.userIntent),!(!i.token||this.instance.config.token!==i.token||(this.loadToolbar(i),0))}catch{return!1}}Zl(t){var e=B.ph_load_toolbar||B.ph_load_editor;!H(e)&&De(e)?e(t,this.instance):du.warn("No toolbar load function found")}loadToolbar(t){var e=!(F==null||!F.getElementById(Qd));if(!w||e)return!1;var n=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,i=k({token:this.instance.config.token},t,{apiURL:this.instance.requestRouter.endpointFor("ui")},n?{instrument:!1}:{});if(w.localStorage.setItem(uu,JSON.stringify(k({},i,{source:void 0}))),this.Vl()===2)this.Zl(i);else if(this.Vl()===0){var r;this.Wl(1),(r=B.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this.instance,"toolbar",(s=>{if(s)return du.error("[Toolbar] Failed to load",s),void this.Wl(0);this.Wl(2),this.Zl(i)})),ve(w,"turbolinks:load",(()=>{this.Wl(0),this.loadToolbar(i)}))}return!0}Gl(t){return this.loadToolbar(t)}maybeLoadEditor(t,e,n){return t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),this.maybeLoadToolbar(t,e,n)}}},qm=k({experiments:Me},ks),Vm={conversations:class{constructor(t){this.Ql=void 0,this._conversationsManager=null,this.Kl=!1,this.Jl=null,this.Yl=!1,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this._instance.config.disable_conversations&&(this.Xl=t.ok,t.ok)){var e=t.config.conversations;H(e)||(gt(e)?this.Ql=e:(this.Ql=e.enabled,this.Jl=e),this.loadIfEnabled())}}reset(){var t;(t=this._conversationsManager)==null||t.reset(),this._conversationsManager=null,this.Ql=void 0,this.Jl=null,this.Xl=void 0,this.Yl=!1}loadIfEnabled(){if(!(this._conversationsManager||this.Kl||this._instance.config.disable_conversations||ga(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=B?.__PosthogExtensions__;if(t&&!C(this.Ql)&&this.Ql)if(this.Jl&&this.Jl.token){this.Kl=!0;try{var e=t.initConversations;if(e)return this.tu(e),void(this.Kl=!1);var n=t.loadExternalDependency;if(!n)return void this.eu(al);n(this._instance,"conversations",(i=>{i||!t.initConversations?this.eu("Could not load conversations script",i):this.tu(t.initConversations),this.Kl=!1}))}catch(i){this.eu("Error initializing conversations",i),this.Kl=!1}}else st.error("Conversations enabled but missing token in remote config.")}}tu(t){if(this.Jl)try{this._conversationsManager=t(this.Jl,this._instance),this.Yl=!1,st.info("Conversations loaded successfully")}catch(e){this.eu("Error completing conversations initialization",e)}else st.error("Cannot complete initialization: remote config is null")}eu(t,e){st.error(t,e),this._conversationsManager=null,this.Kl=!1,this.Yl=!0}show(){this._conversationsManager?this._conversationsManager.show():st.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.Ql===!0&&!Ve(this._conversationsManager)}getUnavailableReason(){return this.isAvailable()?null:this._instance.config.disable_conversations?"disabled_by_config":ga(this._instance.config)?"disabled_for_toolbar":this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut()?"consent_opted_out":this.Xl===!1?"remote_config_failed":C(this.Ql)?this.Xl?"disabled_in_project":"remote_config_pending":this.Ql?H(this.Jl)||!this.Jl.token?"missing_token":B!=null&&B.__PosthogExtensions__?this.Kl?"initializing":this.Yl?"load_failed":"not_loaded":"extensions_unavailable":"disabled_in_project"}isVisible(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.isVisible())!==null&&t!==void 0&&t}sendMessage(t,e,n){var i=this;return se((function*(){return i._conversationsManager?i._conversationsManager.sendMessage(t,e,n):(st.warn(bn),null)}))()}getMessages(t,e){var n=this;return se((function*(){return n._conversationsManager?n._conversationsManager.getMessages(t,e):(st.warn(bn),null)}))()}markAsRead(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.markAsRead(t):(st.warn(bn),null)}))()}getTickets(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.getTickets(t):(st.warn(bn),null)}))()}requestRestoreLink(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.requestRestoreLink(t):(st.warn(bn),null)}))()}restoreFromToken(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.restoreFromToken(t):(st.warn(bn),null)}))()}restoreFromUrlToken(){var t=this;return se((function*(){return t._conversationsManager?t._conversationsManager.restoreFromUrlToken():(st.warn(bn),null)}))()}getCurrentTicketId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getCurrentTicketId())!==null&&t!==void 0?t:null}getWidgetSessionId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getWidgetSessionId())!==null&&t!==void 0?t:null}Xn(){var t;(t=this._conversationsManager)==null||t.setIdentity()}ts(){var t;(t=this._conversationsManager)==null||t.clearIdentity()}}},Gm={logs:class{constructor(t){var e,n=this;this.iu=!1,this.ru=!1,this.rt=pe("[logs]"),this.nu=k({},this.rt,{error(){for(var i=arguments.length,r=new Array(i),s=0;i>s;s++)r[s]=arguments[s];r.some(yu)||n.rt.error(...r)}}),this.tr=[],this.su=[],this.Sa=0,this.au=()=>{var i,r;this.Sa=0,(i=this.ou)==null||i.onReconnect(),(r=this.lu)==null||r.onReconnect()},this._instance=t,this._instance&&(e=this._instance.config.logs)!=null&&e.captureConsoleLogs&&(this.iu=!0),w&&ve(w,"online",this.au)}uu(t,e,n,i){var r,s=(function(o,a){var l,u,c,d,f,h,p,g=(l=o?.flushIntervalMs)!==null&&l!==void 0?l:3e3,m=(u=o?.maxBufferSize)!==null&&u!==void 0?u:100,v=a!=null&&a.consoleCapture?void 0:(c=o?.maxLogsPerInterval)!==null&&c!==void 0?c:1e3,S=C(v)?Math.max(m,2048):Math.max(m,v),b=o?.resourceAttributes;return{serviceName:(d=(f=b?.["service.name"])!==null&&f!==void 0?f:o?.serviceName)!==null&&d!==void 0?d:a?.serviceNameDefault,serviceVersion:(h=b?.["service.version"])!==null&&h!==void 0?h:o?.serviceVersion,environment:(p=b?.["deployment.environment"])!==null&&p!==void 0?p:o?.environment,resourceAttributes:b,beforeSend:o?.beforeSend,flushIntervalMs:g,maxBufferSize:m,maxQueueSize:S,maxBatchRecordsPerPost:100,rateCapWindowMs:g,maxLogsPerInterval:v,backgroundFlushBudgetMs:0,terminationFlushBudgetMs:0}})((r=this._instance)==null||(r=r.config)==null?void 0:r.logs,n);return[new Zp(this.hu(t,e),s,this.nu,(()=>this.du()),(o=>o()),void 0,i),s]}vu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.ou||this.cu!==e){var n;(n=this.ou)==null||n.reset(),this.cu=e;var i=this.uu((()=>this.tr),(r=>{this.tr=r}));this.ou=i[0],this.fu=i[1]}return this.ou}pu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.lu||this.gu!==e){var n;(n=this.lu)==null||n.reset(),this.gu=e;var i=this.uu((()=>this.su),(r=>{this.su=r}),{serviceNameDefault:"posthog-browser-logs",consoleCapture:!0},_u);this.lu=i[0],this.mu=i[1]}return this.lu}initialize(){this.loadIfEnabled()}onRemoteConfig(t){var e;if(t.ok){var n=(e=t.config.logs)==null?void 0:e.captureConsoleLogs;!H(n)&&n&&(this.iu=!0,this.loadIfEnabled())}}reset(){var t,e;this.tr=[],(t=this.ou)==null||t.reset(),this.su=[],(e=this.lu)==null||e.reset(),this.Sa=0}captureLog(t){this.vu().captureLog(t)}he(t){this.pu().captureLog(t)}get logger(){return this.yu||(this.yu={trace:(t,e)=>this.captureLog({body:t,level:"trace",attributes:e}),debug:(t,e)=>this.captureLog({body:t,level:"debug",attributes:e}),info:(t,e)=>this.captureLog({body:t,level:"info",attributes:e}),warn:(t,e)=>this.captureLog({body:t,level:"warn",attributes:e}),error:(t,e)=>this.captureLog({body:t,level:"error",attributes:e}),fatal:(t,e)=>this.captureLog({body:t,level:"fatal",attributes:e})}),this.yu}flushLogs(t){t?this.bu(t):(this.ou&&this.ou.flush().catch((e=>this._u(e))),this.lu&&this.lu.flush().catch((e=>this._u(e))))}_u(t){yu(t)||this.rt.error("PostHog logs flush failed:",t)}loadIfEnabled(){if(this.iu&&!this.ru){var t=B?.__PosthogExtensions__;if(t){var e=t.loadExternalDependency;e?e(this._instance,"logs",(n=>{var i;n||(i=t.logs)==null||!i.initializeLogs?this.rt.error("Could not load logs script",n):(t.logs.initializeLogs(this._instance),this.ru=!0)})):this.rt.error(al)}else this.rt.error("PostHog Extensions not found.")}}hu(t,e){var n=this._instance;return{get isDisabled(){return!1},get optedOut(){return!n.is_capturing()},getPersistedProperty:i=>i===jt.LogsQueue?t():void 0,setPersistedProperty(i,r){var s;i===jt.LogsQueue&&e((s=r)!==null&&s!==void 0?s:[])},Ot:i=>this.Ot(i),getLibraryId:()=>ne.LIB_NAME,getLibraryVersion:()=>ne.LIB_VERSION}}Ot(t){return new Promise((e=>{if(ff(this.Sa,3))e({kind:"fatal",error:Do(void 0,"logs endpoint is unreachable, dropping batch")});else{var n=!1,i=s=>{n||(n=!0,clearTimeout(r),e(s))},r=setTimeout((()=>{this.rt.warn("Logs request timed out before receiving a response"),i({kind:"retry-later",error:Do(void 0,"logs request timed out")})}),9e4);this._instance._send_request({method:"POST",url:this.wu(),data:t,compression:"best-available",batchKey:"logs",fireCallbackOnDrop:!0,callback:s=>{var o=s.statusCode;if(this.ku(o),o>=200&&300>o)i({kind:"ok"});else if(o===413)i({kind:"too-large"});else if(o!==0&&o!==429&&500>o)i({kind:"fatal",error:new Error("logs request failed with status "+o)});else{var a;o===0?(s.error||this.rt.warn("Logs request failed before receiving an HTTP response"),i({kind:"retry-later",error:Do(s.error,"logs request failed before receiving an HTTP response")})):i({kind:"retry-later",error:(a=s.error)!==null&&a!==void 0?a:new Error("logs request failed with status "+o)})}}})}}))}ku(t){(t!==0||this._instance.__loaded)&&(this.Sa=hf(t,this.Sa,3,(()=>this.rt.warn("Log requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped sending logs; will try again when connectivity changes."))))}bu(t){this.tr.length>0&&this.xu(t,this.tr,this.fu,ne.LIB_NAME,(e=>{this.tr=e})),this.su.length>0&&this.xu(t,this.su,this.mu,_u,(e=>{this.su=e}))}xu(t,e,n,i,r){if(e.length!==0){var s=e.map((a=>a.record));r([]);var o=Nd(s,Ld(n,ne.LIB_NAME,ne.LIB_VERSION),i,ne.LIB_VERSION);this._instance._send_request({method:"POST",url:this.wu(),data:o,compression:"best-available",batchKey:"logs",transport:t})}}wu(){return this._instance.requestRouter.endpointFor("api","/i/v1/logs")+"?token="+encodeURIComponent(this._instance.config.token)}du(){var t,e={};if(e.distinctId=this._instance.get_distinct_id(),this._instance.sessionManager){var n=this._instance.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.windowId,r=n.sessionStartTimestamp,s=n.lastActivityTimestamp;e.sessionId=n.sessionId,e.windowId=i,H(r)||(e.sessionStartTimestamp=r),H(s)||(e.lastActivityTimestamp=s)}if(B!=null&&(t=B.location)!=null&&t.href&&(e.currentUrl=this._instance.config.disable_capture_url_hashes?dn(B.location.href):B.location.href),this._instance.featureFlags){var o=this._instance.featureFlags.getFlags();o&&o.length>0&&(e.activeFeatureFlags=o)}return e}}},Km={metrics:class{constructor(t){this.rt=pe("[metrics]"),this._instance=t}initialize(){}vu(){var t,e,n=(t=this._instance)==null||(t=t.config)==null?void 0:t.metrics;return this.ou&&this.cu===n||((e=this.ou)==null||e.reset(),this.cu=n,this.ou=new Xp(this.hu(),(function(i){var r,s,o,a,l,u=i?.resourceAttributes;return{serviceName:(r=u?.["service.name"])!==null&&r!==void 0?r:i?.serviceName,serviceVersion:(s=u?.["service.version"])!==null&&s!==void 0?s:i?.serviceVersion,environment:(o=u?.["deployment.environment"])!==null&&o!==void 0?o:i?.environment,resourceAttributes:u,beforeSend:i?.beforeSend,flushIntervalMs:(a=i?.flushIntervalMs)!==null&&a!==void 0?a:1e4,maxSeriesPerFlush:(l=i?.maxSeriesPerFlush)!==null&&l!==void 0?l:1e3}})(n),this.rt)),this.ou}count(t,e,n){e===void 0&&(e=1),this.vu().count(t,e,n)}gauge(t,e,n){this.vu().gauge(t,e,n)}histogram(t,e,n){this.vu().histogram(t,e,n)}flush(t){if(!this.ou)return Promise.resolve();if(t){var e=this.ou.drainWindow();return e&&this.Jt(e,t),Promise.resolve()}return this.ou.flush().catch((n=>this.rt.error("PostHog metrics flush failed:",n)))}reset(){var t;(t=this.ou)==null||t.reset()}hu(){var t=this._instance,e=this;return{get isDisabled(){return!1},get optedOut(){return!t.is_capturing()},Jt:n=>e.Jt(n),getLibraryId:()=>ne.LIB_NAME,getLibraryVersion:()=>ne.LIB_VERSION}}Jt(t,e){return new Promise((n=>{var i=!1,r=o=>{i||(i=!0,clearTimeout(s),n(o))},s=setTimeout((()=>r({kind:"retry-later",error:new Error("metrics request timed out")})),9e4);this._instance._send_request(k({method:"POST",url:this.Su(),data:t,compression:"best-available",batchKey:"metrics"},e&&{transport:e},{fireCallbackOnDrop:!0,callback(o){var a=o.statusCode;if(a>=200&&300>a)r({kind:"ok"});else if(a===413)r({kind:"too-large"});else if(a!==0&&a!==429&&500>a)r({kind:"fatal",error:new Error("metrics request failed with status "+a)});else{var l;r({kind:"retry-later",error:(l=o.error)!==null&&l!==void 0?l:new Error("metrics request failed with status "+a)})}}}))}))}Su(){return this._instance.requestRouter.endpointFor("api","/i/v1/metrics")+"?token="+encodeURIComponent(this._instance.config.token)}}},Ym=k({},ks,Om,Bm,Dm,jm,Um,Wm,Hm,zm,qm,Vm,Gm,Km);Je.__defaultExtensionClasses=k({},Ym);(function(){ne.SDK_DIST_CHANNEL="npm";var t=Hi[Vn]=new Je;return(function(){function e(){e.done||(e.done=!0,Uf=!1,ie(Hi,(function(n){n._dom_loaded()})))}F!=null&&F.addEventListener?F.readyState==="complete"?e():ve(F,"DOMContentLoaded",e,{capture:!1}):w&&A.error("Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized")})(),t})();const Jm=["a[href]","button:not([disabled])","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])"].join(",");let ht=null,ka=null,Wf="";const Ca=new Map;function zf(t){return[...t.querySelectorAll(Jm)].filter(e=>!e.hidden&&e.getAttribute("aria-hidden")!=="true"&&e.getClientRects().length>0)}function Zm(t){for(const e of document.body.children)e===t||e.tagName==="SCRIPT"||(Ca.set(e,{inert:e.inert,ariaHidden:e.getAttribute("aria-hidden")}),e.inert=!0,e.setAttribute("aria-hidden","true"))}function Xm(){for(const[t,e]of Ca)t.inert=e.inert,e.ariaHidden===null?t.removeAttribute("aria-hidden"):t.setAttribute("aria-hidden",e.ariaHidden);Ca.clear()}function qf(t){return t?.dataset.modalDismissible!=="false"&&t?.getAttribute("aria-busy")!=="true"}function Ge(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n)return!1;ht&&ht!==n&&Ke(ht,{restoreFocus:!1,force:!0}),ka=e.trigger||document.activeElement,ht=n,Wf=document.body.style.overflow,Zm(n),document.body.style.overflow="hidden",n.classList.add("open"),n.setAttribute("aria-hidden","false");const i=n.querySelector(".modal-content");i&&(i.style.transform="scale(1) translateY(0)");const r=()=>{if(ht!==n)return;((e.initialFocus?n.querySelector(e.initialFocus):n.querySelector("[data-modal-initial-focus]"))||zf(n)[0]||n.querySelector(".modal-content")||n).focus({preventScroll:!0})};return requestAnimationFrame(r),setTimeout(r,260),!0}function Ke(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n||!e.force&&!qf(n))return!1;n.classList.remove("open"),n.setAttribute("aria-hidden","true"),Xm(),document.body.style.overflow=Wf,ht=null;const i=ka;return ka=null,e.restoreFocus!==!1&&i?.isConnected&&i.focus({preventScroll:!0}),!0}function wu(t,e,n="Operation in progress"){const i=typeof t=="string"?document.getElementById(t):t;i&&(i.dataset.modalDismissible=e?"false":"true",i.setAttribute("aria-busy",String(!!e)),e?i.setAttribute("aria-label",n):i.removeAttribute("aria-label"))}function Qm(t){if(!qf(t))return;const e=t.dataset.modalCloseHandler;e&&typeof window[e]=="function"?window[e]():Ke(t)}document.addEventListener("keydown",t=>{if(!ht)return;if(t.key==="Escape"){t.preventDefault(),t.stopImmediatePropagation(),Qm(ht);return}if(t.key!=="Tab"){t.stopPropagation();return}const e=zf(ht);if(!e.length){t.preventDefault(),(ht.querySelector(".modal-content")||ht).focus();return}const n=e[0],i=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),n.focus())},!0);function ev(){document.querySelectorAll(".modal-overlay").forEach(t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-hidden",t.classList.contains("open")?"false":"true");const e=t.querySelector(".modal-content");e&&!e.hasAttribute("tabindex")&&(e.tabIndex=-1);const n=t.querySelector("h1, h2, h3");n&&(n.id||(n.id=`${t.id}-title`),t.setAttribute("aria-labelledby",n.id)),t.querySelectorAll(".modal-close").forEach(i=>{i.getAttribute("aria-label")||i.setAttribute("aria-label","Close dialog")})})}const gl=Object.freeze({free:"Free",professional:"Pro",power:"Power"}),tv=Object.freeze({free:2,professional:50,power:2e3}),nv="(contact us)",iv=Object.freeze({free:Object.freeze(["2 generations/month","Gemini model only","Code Review"]),professional:Object.freeze(["50 generations/month","All models","Code Regeneration","Code Review"]),power:Object.freeze(["2000 generations/month","All models","Code Regeneration","Bring your own key (BYOK)","Code Review","All models + early access",`API & MCP access ${nv}`])}),Vf="CodeFile",Gf="GeneratedCode",rv={CustomAction:"A",CustomWidget:"W",CustomFunction:"F",CustomClass:"C",CodeFile:"C"};function an(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function Aa(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function sv(t={},e=0){const n=Aa(t.artifactType||t.type||Vf),i=Aa(t.artifactName||t.name||t.fileName||`${Gf}-${e+1}`);return`${n||"artifact"}-${i||e+1}`}function Kf(t={},e=0){const n=an(t),i=n.artifactType||n.type||Vf,r=n.artifactName||n.name||Gf;let s=n.fileName||r;return s.endsWith(".dart")||(s+=".dart"),{id:Aa(n.id)||sv({...n,artifactType:i,artifactName:r,fileName:s},e),artifactType:i,artifactName:r,fileName:s,deployPath:n.deployPath||"",description:n.description||"",code:n.code||n.content||"",dependencies:Yf(n.dependencies),imports:Array.isArray(n.imports)?n.imports:[],publicApi:Array.isArray(n.publicApi)?n.publicApi:[],relationships:Jf(n.relationships),deployStatus:n.deployStatus||"pending",review:n.review||null,metadata:an(n.metadata),codeType:n.codeType||rv[i]||"O"}}function Yf(t){return t?Array.isArray(t)?t.map(e=>{if(typeof e=="string")return{name:e,version:null,inferred:!1};const n=an(e),i=n.name||n.package;return i?{name:i,version:n.version||null,versionRequired:!!(n.versionRequired||n.required),inferred:!!n.inferred,...n.reason?{reason:n.reason}:{}}:null}).filter(Boolean):Object.entries(an(t)).map(([e,n])=>({name:e,version:n||null,inferred:!1})):[]}function Jf(t){return t?(Array.isArray(t)?t:[t]).map(e=>{const n=an(e);return!n.from&&!n.to?null:{from:n.from||null,to:n.to||null,type:n.type||"uses",description:n.description||""}}).filter(Boolean):[]}function Pa(t){if(typeof t!="string")return null;const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{const n=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(!n)return null;try{return JSON.parse(n[1].trim())}catch{return null}}}function Xi(t,e={}){const n=[],i=typeof t=="string"?Pa(t):t,s=an(i||{});!i&&typeof t=="string"&&n.push("Structured bundle parse failed; using legacy single-artifact fallback.");const o=Array.isArray(s.artifacts)?s.artifacts:[{artifactType:s.artifactType||e.artifactType,artifactName:s.artifactName||e.artifactName,fileName:s.fileName||e.fileName,description:s.description,code:s.code||e.code||(typeof t=="string"?t:""),dependencies:s.dependencies||e.dependencies,relationships:s.relationships||e.relationships}];o.forEach((d,f)=>{!d?.artifactType&&!d?.type&&n.push(`Artifact ${f+1} has no artifactType; it will deploy as a standalone code file under lib/custom_code/ root.`)});const a=o.map((d,f)=>Kf(d,f)),l=new Map(o.map((d,f)=>[an(d).id,a[f]?.id]).filter(([d,f])=>d&&f)),u=d=>l.get(d)||d,c=Jf(s.relationships||e.relationships).map(d=>({...d,from:d.from?u(d.from):d.from,to:d.to?u(d.to):d.to}));return{schemaVersion:s.schemaVersion||e.schemaVersion||null,id:s.id||e.id||"bundle-current",title:s.title||s.name||e.title||"Generated artifact bundle",description:s.description||e.description||"",artifacts:a,dependencies:Yf(s.dependencies||e.dependencies),relationships:c,deployOrder:Array.isArray(s.deployOrder)?s.deployOrder.map(u):a.map(d=>d.id),warnings:[...n,...Array.isArray(s.warnings)?s.warnings:[]],metadata:an(s.metadata)}}function si(t){return Xi(t).artifacts[0]||Kf()}function Yt(t){if(typeof t!="string")return t??"";const e=t.trim();if(!e)return"";try{return JSON.parse(e)}catch{return t}}function oi(t){return JSON.stringify(t,null,2)}function ov(t){return oi({task:"architect",userRequest:String(t??"")})}function av(t){const e=Yt(t);return e&&typeof e=="object"&&typeof e.task=="string"?oi(e):oi({task:"generate_bundle",bundleSpec:e})}function lv(t){return oi({task:"review_bundle",generatedBundle:Yt(t),outputRequirements:{bundleReview:["status","score","summary","manualActions","findings"],scoreRange:[0,100],eachArtifact:["id","review.status","review.findings"],manualActions:{definition:"Setup the developer must perform by hand in the FlutterFlow editor that FlutterFlow will NOT do for them.",exclude:["creating the Custom Action, Widget or Code File itself - deploying the code creates it","declaring parameters or return values FlutterFlow derives from the function signature","anything that resolves as a side effect of using the action or widget in the editor","generic advice such as testing, reviewing or rebuilding the app"],preferEmpty:"Return an empty array when nothing qualifies - an empty list is the expected result for most bundles."}}})}function ml(t,e=null){const n={stage:t};return e!=null&&(n.bundle=Yt(e)),n}function cv({bundleSpec:t,artifactBundle:e,bundleReview:n,artifactId:i,userFeedback:r}){return oi({task:"regenerate_artifact",artifactId:i,bundleSpec:Yt(t),artifactBundle:Yt(e),bundleReview:Yt(n),userFeedback:String(r)})}function Zf({bundleSpec:t,artifactBundle:e,bundleReview:n,userFeedback:i}){return oi({task:"regenerate_bundle",bundleSpec:Yt(t),artifactBundle:Yt(e),bundleReview:Yt(n),userFeedback:String(i??"")})}const bu={csam:"child-safety content",dangerous:"dangerous content",harassment:"harassment",hate_speech:"hate speech",maliciousUrls:"a potentially malicious URL",malicious_uris:"a potentially malicious URL",pi_and_jailbreak:"prompt-injection or jailbreak instructions",promptInjection:"prompt-injection or jailbreak instructions",rai:"restricted content",sdp:"sensitive personal data",sexually_explicit:"sexually explicit content",virus_scan:"potentially malicious file content"},uv=["sanitizationResult","modelArmor","modelArmorResult","data","result","error"];function et(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function dv(t){return et(t)?typeof t.filterMatchState=="string"||typeof t.invocationResult=="string"||Array.isArray(t.matchedFilters)||et(t.filterSummary)||et(t.filterResults):!1}function Xf(t,e=0){if(!et(t)||e>3)return null;if(dv(t))return t;for(const n of uv){const i=t[n];if(et(i)){const r=Xf(i,e+1);if(r)return r}}return null}function ls(t){return Array.isArray(t)?t.some(ls):et(t)?t.matched===!0||t.matchState==="MATCH_FOUND"?!0:Object.values(t).some(ls):!1}function Fa(t){return Array.isArray(t)?t.some(Fa):et(t)?typeof t.executionState=="string"&&t.executionState!=="EXECUTION_SUCCESS"?!0:Object.values(t).some(Fa):!1}function Qf(t){return{csamFilterFilterResult:"csam",maliciousUriFilterResult:"malicious_uris",piAndJailbreakFilterResult:"pi_and_jailbreak",raiFilterResult:"rai",sdpFilterResult:"sdp",virusScanFilterResult:"virus_scan"}[t]||t}function fv(t,e){if(et(t))for(const[n,i]of Object.entries(t)){if(!et(i))continue;const r=et(i.categories)?i.categories:{},s=Object.entries(r).filter(([,o])=>et(o)&&o.matched===!0).map(([o])=>o);s.length>0?s.forEach(o=>e.add(o)):i.matched===!0&&e.add(Qf(n))}}function hv(t,e){if(!t)return;const n=Array.isArray(t)?t.flatMap(i=>et(i)?Object.entries(i):[]):Object.entries(t);for(const[i,r]of n){if(!ls(r))continue;const s=Qf(i),o=r?.raiFilterResult?.raiFilterTypeResults||(s==="rai"?r?.raiFilterTypeResults:null),a=et(o)?Object.entries(o).filter(([,l])=>ls(l)).map(([l])=>l):[];a.length>0?a.forEach(l=>e.add(l)):e.add(s)}}function pv(t){return bu[t]?bu[t]:String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase()}function Eu(t){return t.length<=1?t[0]||"content that did not pass":t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(", ")}, and ${t.at(-1)}`}function gv(t){const e=Xf(t);if(!e)return null;const n=new Set(Array.isArray(e.matchedFilters)?e.matchedFilters:[]);fv(e.filterSummary,n),hv(e.filterResults,n);const i=e.blocked===!0||e.filterMatchState==="MATCH_FOUND"||n.size>0,r=e.invocationResult||null,s=Fa(e.filterSummary||e.filterResults);return!i&&!s&&!["PARTIAL","FAILURE"].includes(r)?null:{kind:i?"blocked":"unavailable",invocationResult:r,matchedFilters:[...n]}}function mv(t,e){const n=gv(t);if(!n)return null;const i=[...new Set(n.matchedFilters.map(pv))],r=n.kind==="blocked",s=new Error(r?`Safety screening blocked this pipeline step for ${Eu(i)}.`:"Safety screening could not be completed. Please try again.");return s.name="ModelArmorError",s.code=r?"MODEL_ARMOR_BLOCKED":"MODEL_ARMOR_UNAVAILABLE",s.isModelArmor=!0,s.pipelineStep=e,s.userTitle=r?"Request blocked for safety":"Safety check unavailable",s.userMessage=r?`The safety check detected ${Eu(i)}. Edit your request to remove or rephrase the flagged content, then run the pipeline again.`:"The safety service did not finish all of its checks. Please wait a moment and run the pipeline again.",s.retryExplanation=r?"Trying another model would not change this safety decision.":"A fallback model was not attempted because safety screening must complete first.",s.matchedFilters=n.matchedFilters,s}function vv(t){return String(t||"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"")}function Su(t){const e=/^(import|export|part|library|class|enum|extension|typedef|mixin|abstract|const|final|var|late)\b/,n=[];for(const i of vv(t).split(` -`)){if(!/^[A-Za-z_$]/.test(i)||e.test(i))continue;const r=i.match(/^[\w$<>,?\s[\]]+?\s([a-zA-Z_$][\w$]*)\s*\(/);r&&n.push(r[1])}return n}function vl(t,e){const n=t.replace(/\.dart$/,"");if(e==="W")return n.replace(/(^|_)(\w)/g,(i,r,s)=>s.toUpperCase());if(e==="A"){const i=n.replace(/(^|_)(\w)/g,(r,s,o)=>o.toUpperCase());return i.charAt(0).toLowerCase()+i.slice(1)}return e==="F"?"CustomFunctions":e==="C"?t.endsWith(".dart")?t:`${t}.dart`:n}async function xu(t){const e=new TextEncoder().encode(String(t||"")),n=await globalThis.crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n),i=>i.toString(16).padStart(2,"0")).join("")}async function _v(t,e=new Map){const n={},i=new Set;for(const[o,a]of t.entries()){if(a.type==="D"||a.type==="O")continue;const l=vl(o,a.type),u={old_identifier_name:l,new_identifier_name:l,type:a.type,is_deleted:!1,current_checksum:await xu(a.content)},c=e.get(a.path);if(c!==void 0&&(u.original_checksum=await xu(c)),n[o]=u,a.type==="F"){const d=Su(a.content);(d.length>0?d:[a.functionName].filter(Boolean)).forEach(h=>i.add(h))}}const r=new Set(Su(e.get("lib/flutter_flow/custom_functions.dart")||"")),s={functions_to_rename:[],functions_to_delete:[],functions_to_add:Array.from(i).filter(o=>!r.has(o))};return{fileMapContents:JSON.stringify(n),functionsMapContents:JSON.stringify(s)}}const yv=new Set(["CustomWidget","CustomAction","CustomFunction","CustomClass","CodeFile"]),Iu={CustomWidget:"custom_code/widgets/",CustomAction:"custom_code/actions/",CustomFunction:"flutter_flow/custom_functions.dart",CustomClass:"custom_code/",CodeFile:"custom_code/"},wv=new Set(["void","dynamic","String","int","double","num","bool","Color","DateTime","DateTimeRange","LatLng","FFPlace","FFUploadedFile","DocumentReference","List"]),bv=["Struct","Record"],Ev=[{id:"required-public-param",severity:"error",message:"CustomWidget constructor uses `required` on a parameter FlutterFlow can leave unset. FlutterFlow omits unset Define Parameters fields from the constructor call, so the widget will not compile when placed. Make the parameter optional and nullable (`this.value` with `final double? value`), or give it a constructor default (`this.value = 0.0`).",detect:t=>jo(t).some(e=>/\brequired\s+this\.\w+/.test(e)),pos:"class W extends StatefulWidget { const W({required this.value}); final double value; }",neg:`class _P { const _P({required this.t}); final double t; } -class W extends StatefulWidget { const W({this.value}); final double? value; }`},{id:"non-nullable-public-field",severity:"error",message:"CustomWidget declares a non-nullable field with no constructor default. FlutterFlow omits unset Define Parameters fields, so the emitted call cannot supply it. Make the field nullable (`final double? value`) or give the parameter a default (`this.value = 0.0`).",detect:t=>jo(t).some(e=>{const n=/^\s*final\s+(?:double|int|String|bool|Color|num)\s+(\w+)\s*;/gm;let i;for(;(i=n.exec(e))!==null;){const r=i[1];if(!(new RegExp(`this\\.${r}\\s*=(?!=)`).test(e)||new RegExp(`[:,]\\s*${r}\\s*=(?!=)`).test(e)))return!0}return!1}),pos:`class W extends StatefulWidget { - const W({required this.value}); - final double value; -}`,neg:`class _P { - const _P({required this.t}); - final double t; -} -class W extends StatefulWidget { - const W({this.value = 1.0}); - final double value; -}`},{id:"asset-without-anchor",severity:"warning",message:'CustomWidget calls Image.asset with a path arriving as a String parameter. An asset reaches the build only when a FlutterFlow widget NODE references it - a filename passed as a parameter does not count, so the image renders as a broken-image icon on device. "Download Unused Project Assets" does not fix it (FlutterFlow issues 522, 2271, 3799). Keep something in the UI referencing the file, or load it over the network instead.',detect:t=>/Image\.asset\s*\(/.test(t)&&/final\s+String\??\s+\w*[Pp]ath\b/.test(t),pos:`class W extends StatefulWidget { final String? imagePath; } -var x = Image.asset(widget.imagePath);`,neg:`class W extends StatefulWidget { final String? imagePath; } -var x = Image.network(widget.imagePath);`},{id:"unsupported-param-type",severity:"error",message:"CustomWidget exposes a Flutter data type FlutterFlow cannot express as a Define Parameter: TextStyle, BoxShadow, FontWeight, FontStyle, TextDirection, TextAlign, EdgeInsets, Offset, Alignment/AlignmentGeometry, Border, BorderRadius, BoxDecoration, BoxConstraints, BorderSide, Gradient, or ThemeData. FlutterFlow's supported data types (docs.flutterflow.io/resources/data-representation/data-types) are only int, double, bool, string, Color, Image, DateTime, Json, LatLng, and the FF objects, so this parameter cannot be configured in the editor and the widget will not place or compile. Expose primitives instead (color, fontSize as double?, fontWeight via a custom enum, doubles for spacing).",detect:t=>jo(t).some(e=>/final\s+(TextStyle|BoxShadow|FontWeight|FontStyle|TextDirection|TextAlign|EdgeInsets|Offset|Alignment(?:Geometry)?|Border(?:Radius|Side)?|BoxDecoration|BoxConstraints|Gradient|LinearGradient|RadialGradient|ThemeData)\??\s+\w+\s*;/.test(e)),pos:`class W extends StatefulWidget { - const W({this.textStyle}); - final TextStyle? textStyle; - @override _S createState() => _S(); -} -class _S extends State { @override Widget build(BuildContext c) => const SizedBox(); }`,neg:`class W extends StatefulWidget { - const W({this.width}); - final double? width; - @override _S createState() => _S(); -} -class _S extends State { @override Widget build(BuildContext c) => Padding(padding: const EdgeInsets.all(8), child: const SizedBox()); }`}];function St(t,e,n){return{artifactId:t.id,artifactName:t.artifactName,artifactType:t.artifactType,severity:e,message:n}}function Qi(t){let e="",n=0;for(;n"&&(n--,n===0))return{inner:t.slice(e+1,i),end:i+1};return null}function xv(t,e){const n=new RegExp(`class\\s+${e}\\b[^{]*\\{`).exec(t);if(!n)return null;let i=0;for(let r=n.index+n[0].length-1;rIv(t).usable);function Cv(t=""){const e=Qi(t);return kv.filter(n=>n.detect(e)).map(({id:n,severity:i,message:r})=>({id:n,severity:i,message:r}))}function Av(t){const e=[],n=t.matchAll(/\bFuture\b/g);for(const i of n){let r=i.index+6,s=null;const o=r;for(;ro;if(t[r]==="<"){const u=Sv(t,r);if(!u||(s=u.inner.replace(/\s+/g," ").trim(),r=u.end,!/\s/.test(t[r]||"")))continue;for(;rku(o.functionName)===i);if(r)return r;const s=o=>!o.functionName.startsWith("_");return n.find(s)||n[0]}function Cs(t=""){return Array.from(Qi(t).matchAll(/\b(?:class|enum)\s+([A-Za-z_]\w*)/g),e=>e[1])}function Pv(t="",e=""){return _l(t,e)?.returnType||null}function Cu(t){return String(t||"").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function Fv(t,e){const n=Cs(e);if(n.length===0)return null;const r=String(t||"").split("/").pop().replace(/\.dart$/,"");if(n.some(l=>Cu(l)===r)||n.length>1)return null;const[o]=n,a=`${Cu(o)}.dart`;return`File name "${t}" does not match declared class "${o}". FlutterFlow accepts this, but naming the file "${a}" keeps the Code File recognisable in the editor.`}function yl(t){return String(t||"").replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}function Rv(t,e,n=""){const i=_l(e,n)?.functionName;if(!i)return null;const r=String(t||"").split("/").pop(),s=vl(r,"A");if(s===i)return null;const o=`${yl(i)}.dart`;return`File name "${r}" does not match Action "${i}". FlutterFlow derives the action from the file name, so it looks for "${s}" and reports Action "${s}" declaration not found. Rename the file to "${o}" - FlutterFlow puts an underscore before every capital - or rename the function to "${s}".`}function Tv(t="",e=""){return _l(t,e)!==null}function $v(t,e=new Set){return(t?.match(/[A-Za-z_]\w*/g)||[]).filter(i=>wv.has(i)?!1:!bv.some(s=>i.endsWith(s))||e.has(i))}function Mv(t,{functionName:e="",declaredTypes:n=new Set}={}){const i=Pv(t,e),r=$v(i,n);if(r.length===0)return null;const[s]=r;let o;return n.has(s)?o=`uses Code File type "${s}", which FlutterFlow cannot process as an Action Return Value`:i===s?o="is not a FlutterFlow Action Return Value":o=`uses type "${s}", which is not a FlutterFlow Action Return Value`,`CustomAction return type "${i}" ${o}. Return JSON (Future) or an existing FlutterFlow Data Type (*Struct) instead.`}function Lv(t,e={}){const n=[],i=t.fileName||"",r=t.code||"";if(yv.has(t.artifactType)||n.push(St(t,"error",`Unsupported artifact type "${t.artifactType}".`)),i.endsWith(".dart")||n.push(St(t,"error","FlutterFlow custom code artifacts must use .dart files.")),!r.trim())return n.push(St(t,"warning","Generated artifact has no Dart code yet.")),n;if(t.artifactType==="CustomWidget"){/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)||n.push(St(t,"warning","CustomWidget code should declare a widget class extending StatelessWidget or StatefulWidget."));for(const s of Cv(r))n.push(St(t,s.severity,s.message))}if(t.artifactType==="CustomAction"&&!Tv(r,t.artifactName)&&n.push(St(t,"warning","CustomAction code should expose an async Future function callable from FlutterFlow.")),t.artifactType==="CustomAction"){const s=e.declaredTypes||new Set(Cs(r)),o=Mv(r,{functionName:t.artifactName,declaredTypes:s});o&&n.push(St(t,"error",o));const a=Rv(i,r,t.artifactName);a&&n.push(St(t,"error",a))}if(t.artifactType==="CustomFunction"&&/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)&&n.push(St(t,"warning","CustomFunction should be a callable function, not a widget class.")),t.artifactType==="CustomClass"||t.artifactType==="CodeFile"){const s=Fv(i,r);s&&n.push(St(t,"info",s))}return n}function Nv(t){const e=Array.isArray(t?.artifacts)?t.artifacts:[],n=new Set(e.flatMap(s=>Cs(s.code||""))),i=e.flatMap(s=>Lv(s,{declaredTypes:n})),r=e.map(s=>({artifactId:s.id,fileName:s.fileName,pathHint:Iu[s.artifactType]||Iu.CodeFile}));return{valid:i.every(s=>s.severity!=="error"),findings:i,deployHints:r}}const Au="// DO NOT REMOVE OR MODIFY THE CODE ABOVE!";function Pu(t){return(/^\s*import\s+['"]([^'"]+)['"]/.exec(t)||[])[1]||null}function Ov(t=""){const e=t.indexOf(Au);return e===-1?t:t.slice(e+Au.length).replace(/^\s*\n/,"")}const Bv=/^\s*import\s+['"][^'"]+['"]\s*;\s*(?:\/\/.*)?$/;function Dv(t="",e=""){const n=Ov(t),i=new Set((e.match(/^\s*import .*$/gm)||[]).map(Pu).filter(Boolean)),r=n.split(` -`).filter(s=>{const o=Pu(s);return o===null||!i.has(o)?!0:!Bv.test(s)}).join(` -`).replace(/^\s*\/\/ Automatic FlutterFlow imports\s*$/m,"").replace(/^\s*\n+/,"");return e+r}const jv=new Set(["flutter","flutter_test","flutter_driver","flutter_localizations"]);function eh(t){let e="",n=0;for(;n{const i=n.name||n.package;if(!i||i==="flutter")return e;const r=n.versionRequired||n.required;return e[i]=r&&n.version||"",e},{})}function qv(t){const e=new Map,n=new Map,i=[];for(const r of t)e.has(r.fileName)?i.push(`Duplicate deploy file name "${r.fileName}" for artifacts "${e.get(r.fileName)}" and "${r.artifactId}".`):e.set(r.fileName,r.artifactId),n.has(r.path)?i.push(`Duplicate deploy path "${r.path}" for artifacts "${n.get(r.path)}" and "${r.artifactId}".`):n.set(r.path,r.artifactId);return i}function Vv(t,e={}){const n=Array.isArray(t?.artifacts)?t.artifacts:[],r=(e.selectedArtifactIds||t?.deployOrder||n.map(h=>h.id)).map(h=>n.find(p=>p.id===h)).filter(Boolean),s=[...t?.warnings||[]];let o=[];r.forEach(h=>{const p=zv(h),g=h.fixedCode||h.code||"",m=h.codeType||Hv[h.artifactType]||Ze.OTHER;g.trim()||s.push(`${h.artifactName||h.id} has no generated code.`),o.push({artifactId:h.id,artifactName:h.artifactName,artifactType:h.artifactType,fileName:p,content:g,type:m,path:h.deployPath||Wv(p,m),deployPath:h.deployPath||"",deployMode:"customCodeSync"})});const a="lib/flutter_flow/custom_functions.dart",l=o.map((h,p)=>({entry:h,index:p})).filter(({entry:h})=>h.type===Ze.FUNCTION&&h.path===a);if(l.length>1){const h=l[0],p={...h.entry,artifactId:l.map(({entry:m})=>m.artifactId).join("+"),artifactName:h.entry.artifactName,content:l.map(({entry:m})=>`// ${m.artifactId} -${m.content}`).join(` - -`)},g=new Set(l.slice(1).map(({index:m})=>m));o=o.filter((m,v)=>!g.has(v)),o[h.index]=p}const u={...Fu(t?.dependencies),...r.reduce((h,p)=>({...h,...Fu(p.dependencies)}),{})},c={};r.forEach(h=>{wl(h.code||"").forEach(p=>{p in u||(c[p]="")})});const d={...c,...u},f=qv(o);return{bundleId:t?.id||"bundle-current",title:t?.title||"Generated artifact bundle",fileEntries:o,dependencies:d,relationships:t?.relationships||[],warnings:s,errors:f}}function Gv(t){return String(t||"").match(/\bclass\s+([A-Z][A-Za-z0-9_]*)\b/)?.[1]}function Kv(t){return String(t||"").split("/").pop().replace(/\.dart$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}function Yv(t,e){const i=[Kv(t),Gv(e.content),e.artifactName].find(r=>/^[A-Z][A-Za-z0-9_]*$/.test(String(r||"")));if(!i)throw new Error(`Cannot derive a FlutterFlow custom class name for ${t}.`);return i}function Jv(t,e=new Map){const n=[];for(const[i,r]of t.entries())r.type!=="C"||e.has(r.path)||n.push({artifactId:r.artifactId||i,className:Yv(i,r),content:r.content,fileName:i,path:r.path});return n}function Zv(t,e){const n=new Set(e.map(i=>i.path));return new Map(Array.from(t.entries()).filter(([,i])=>!n.has(i.path)))}const Ru={pass:0,warning:1,fail:2},Xv=["manualActions"];function rt(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function qt(...t){for(const e of t){if(typeof e=="string"&&e.trim())return e.trim();if(Array.isArray(e)&&e.length>0){const n=e.filter(i=>typeof i=="string").join(` -`);if(n)return n}}return""}function It(t){return t==null?[]:Array.isArray(t)?t:[t]}function Qv(t){const e=rt(t).value??t;if(e==null||typeof e=="string"&&e.trim()==="")return null;const n=Number(e);if(Number.isFinite(n))return Tu(n);const i=String(t||"").match(/\bscore\b[^\d]{0,12}(\d{1,3})(?:\s*\/\s*100)?/i);return i?Tu(Number(i[1])):null}function Tu(t){return t>=0&&t<=100?t:null}function at(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function bl(t){const e=String(t||"").toLowerCase();return/(fail|error|critical|block|reject|invalid)/.test(e)?"fail":/(warn|attention|manual|partial|incomplete|concern)/.test(e)?"warning":/(pass|success|ready|approve|valid|clean|info|notice)/.test(e)?"pass":null}function Ra(...t){return t.filter(Boolean).reduce((e,n)=>Ru[n]>Ru[e]?n:e,"pass")}function th(t,e="warning",n="review"){if(typeof t=="string")return{severity:e,message:t,suggestion:"",source:n};const i=rt(t),r=qt(i.message,i.title,i.issue,i.description,i.summary);return r?{severity:bl(i.severity||i.status||i.level)||e,message:r,suggestion:qt(i.suggestion,i.fix,i.recommendation,i.action),source:i.source||n}:null}function Ta(t,e="review"){const n=rt(t);return[["findings","warning"],["issues","warning"],["criticalIssues","fail"],["errors","fail"],["warnings","warning"],["recommendations","warning"],["requiredFixes","fail"],["suggestions","warning"]].flatMap(([r,s])=>It(n[r]).map(o=>th(o,s,e)).filter(Boolean))}function e_(t,e,n=null){if(typeof t=="string")return{id:`${n||"bundle"}-manual-${e+1}`,title:t,detail:"",location:"",timing:"unspecified",artifactId:n,source:"Code Review"};const i=rt(t),r=qt(i.title,i.action,i.step,i.message,i.name,i.description);return r?{id:i.id||`${n||"bundle"}-manual-${e+1}`,title:r,detail:qt(i.detail,i.instructions,i.description),location:qt(i.location,i.flutterFlowPath,i.path),timing:qt(i.timing,i.phase)||"unspecified",artifactId:n,source:qt(i.source)||"Code Review"}:null}function $a(t,e=null){const n=rt(t);return Xv.flatMap(i=>It(n[i])).map((i,r)=>e_(i,r,e)).filter(Boolean)}function t_(t){let e=typeof t=="string"?Pa(t):t;if(!e&&typeof t=="string")return{rawText:t,root:{}};const n=rt(e);typeof n.content=="string"&&(e=Pa(n.content)||e);const i=rt(e),r=rt(i.reviewResult||i.codeReview||i.result);return{rawText:"",root:Object.keys(r).length?r:i}}function n_(t,e){const n=[e.id,e.fileName,e.artifactName].map(at);return t.find(i=>{const r=rt(i);return[r.id,r.fileName,r.artifactName,r.name].map(at).some(s=>s&&n.includes(s))})||null}function i_(t,e){return It(t?.metadata?.compatibility?.deployHints).find(r=>at(r?.artifactId)===at(e.id)||at(r?.fileName)===at(e.fileName))?.pathHint||""}function r_(t,e){return It(t?.relationships).filter(n=>at(n?.from)===at(e.id)||at(n?.to)===at(e.id))}function s_(t,e){return It(t?.metadata?.compatibility?.findings).filter(n=>!n?.artifactId||at(n.artifactId)===at(e.id)).map(n=>th(n,"warning","Compatibility check")).filter(Boolean)}function o_(t,e,n,i){const r=n_(e,n),s=rt(r?.review||r||n.review),o=Object.keys(s).length>0,a=[...Ta(s),...s_(t,n)],l=$a(s,n.id),u=bl(s.status||s.verdict||s.outcome||s.result),c=a.length?Ra(...a.map(f=>f.severity)):null,d=Ra(u,c,o?null:"warning");return{...n,index:i,status:d,statusReason:o?qt(s.summary,s.overview,s.assessment,s.conclusion)||(a.length?`${a.length} review finding${a.length===1?"":"s"}`:"No file-level findings"):"No file-level verdict was returned",reviewComplete:o,findings:a,manualSteps:l,fixedSource:typeof s.fixedSource=="string"&&s.fixedSource.trim()?s.fixedSource.trim():null,pathHint:i_(t,n),relationships:r_(t,n)}}function a_({status:t,score:e,artifactPresentations:n,manualSteps:i}){const r=n.length;if(r===0&&i.length===0)return e==null?"Code review returned no overall summary and no score.":`Reviewed bundle with score ${e}/100.`;const s=n.reduce((a,l)=>(a[l.status]+=1,a),{pass:0,warning:0,fail:0}),o=[];return t&&o.push(`Overall verdict: ${t}.`),r&&o.push(`${r} artifact${r===1?"":"s"}: ${s.pass} pass, ${s.warning} warn, ${s.fail} fail.`),i.length&&o.push(`Do before deploy: ${i.map(a=>a.title).join("; ")}.`),e==null&&o.push("No numeric score (0-100) was returned."),o.join(" ")}function l_({bundle:t,reviewResult:e}){const n=rt(t),i=It(n.artifacts),{root:r,rawText:s}=t_(e),o=[r.bundleReview,r.overallReview,r.overall,r.bundleSummary,r.summaryReview,r.review].map(rt).find(b=>Object.keys(b).length)||{},a=It(r.artifacts||r.files||r.reviews),l=i.map((b,_)=>o_(n,a,b,_)),u=Ta(r),d=[...Ta(o),...u],f=[...$a(o),...$a(r),...l.flatMap(b=>b.manualSteps)].filter((b,_,x)=>x.findIndex(I=>I.title===b.title&&I.artifactId===b.artifactId)===_),h=bl(o.status||o.verdict||o.overallStatus||r.status||r.verdict||r.overallStatus||r.outcome),p=Ra(h,...d.map(b=>b.severity),...l.map(b=>b.status)),g=o.score??r.score??r.overallScore??s,m=Qv(g),v=qt(o.headline,o.summary,o.executiveSummary,o.overview,o.assessment,o.conclusion,r.overallSummary,r.headline,r.summary,r.executiveSummary,r.overview,r.assessment,r.conclusion,s)||a_({status:p,score:m,artifactPresentations:l,manualSteps:f}),S=l.reduce((b,_)=>(b[_.status]+=1,b),{pass:0,warning:0,fail:0});return{title:n.title||"Generated artifact bundle",description:n.description||"",status:p,score:m,summary:v,findings:d,manualSteps:f,artifacts:l,counts:S,reviewCoverage:{reviewed:l.filter(b=>b.reviewComplete).length,total:l.length},deployOrder:It(n.deployOrder),relationships:It(n.relationships),warnings:It(n.warnings),compatibility:rt(n.metadata?.compatibility)}}const c_=/^\uFEFF/;function ki(t){let e=0,n=t.length;for(;ee&&!t[n-1].trim();)n--;return t.slice(e,n).join(` -`)}function u_(t){const e=String(t??"").replace(c_,"");if(!e.trim())return"";const n=e.split(` -`),i=c=>{const d=c.trim();return/^`{3,}[A-Za-z0-9+#_.-]*$/.test(d)?c.length-c.trimStart().length:-1};let r=0,s=-1;const o=[];{let c=0;for(let d=0;d=0&&(r++,s<0&&(s=d),o.push(c+f)),c+=n[d].length+1}}if(r===0)return ki(n);{const c=Ma(e);if(!c.error&&o.every(f=>Mu(f,c.commentAndStringRanges)))return ki(n)}if(r===1){const c=ki(n.slice(0,s)),d=ki(n.slice(s+1));return d.length>=c.length?d:c}const a=[];let l=null;for(let c=0;cc.length>0);return u.length===0?"":u.join(` - -`)}function d_(t){return String(t??"").replace(/\/\*[\s\S]*?\*\//g," ").replace(/\/\/[^\n]*/g,"").replace(/'''[\s\S]*?'''/g,'""').replace(/"""[\s\S]*?"""/g,'""').replace(/'(?:\\.|[^'\\\n])*'/g,'""').replace(/"(?:\\.|[^"\\\n])*"/g,'""')}function nh(t){const e=d_(t);return Array.from(e.matchAll(/class\s+([A-Z]\w*)\s+extends\s+[A-Za-z_]\w*Widget\b/g),n=>n[1])}function ih(t){return`${yl(t)}.dart`}function f_(t){return vl(t,"W")}const $u={"(":")","[":"]","{":"}"},h_={")":"(","]":"[","}":"{"},p_=/[A-Za-z0-9_]/;function Ma(t){const e=[{kind:"code",opener:null,openedLine:0}],n=[];let i=1,r=0;const s=(c,d)=>{(c===` -`||c==="\r"&&d!==` -`)&&i++};let o=null;const a=()=>{for(const c of e)(c.kind==="string"||c.kind==="block-comment"||c.kind==="line-comment")&&n.push({start:c.startIndex,end:t.length})};for(;r0?t[r-1]:"",p=r>1?t[r-2]:"",g=(h==="r"||h==="R")&&!p_.test(p);e.push({kind:"string",quote:c,triple:f,raw:g,startIndex:r,openedLine:i}),r+=f?3:1;continue}if($u[c]){e.push({kind:"code",opener:c,openedLine:i}),r++;continue}if(h_[c]){if(d.interpolation&&c==="}"){e.pop(),r++;continue}if(d.opener&&$u[d.opener]===c){e.pop(),r++;continue}return d.opener?(a(),{error:o??`line ${i}: "${c}" closes nothing - "${d.opener}" opened on line ${d.openedLine} is still open`,commentAndStringRanges:n}):(a(),{error:o??`line ${i}: unexpected "${c}" with no matching opener`,commentAndStringRanges:n})}s(c,t[r+1]),r++}a();let l=e.length-1;for(;l>0&&e[l].kind==="line-comment";)l--;let u=o;if(!u){const c=e[l];if(!(c.kind==="code"&&!c.opener&&!c.interpolation))if(c.kind==="string")u=`unclosed ${c.triple?"triple-quoted ":""}string starting on line ${c.openedLine} was never closed`;else if(c.kind==="block-comment")u=`unterminated /* comment starting on line ${c.openedLine}`;else if(c.interpolation){const d=e.findLast(h=>h.opener);u=`unclosed "\${" expression${d?` opened on line ${d.openedLine}`:""} was never closed`}else u=`"${c.opener}" opened on line ${c.openedLine} is never closed`}return{error:u,commentAndStringRanges:n}}function g_(t){return Ma(String(t??"")).error}function Mu(t,e){return e.some(({start:n,end:i})=>t>=n&&ttypeof n=="string"?n:n?.errorMessage).filter(Boolean);return e.length>0?e.join("; "):JSON.stringify(t)}return t&&typeof t=="object"?t.errorMessage||JSON.stringify(t):String(t??"")}const m_=["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","msn.com"],v_="MAGIC_LINK_SENT",__="PLUS_ALIAS_REJECTED",y_="Please enter your primary email address. Plus aliases (such as {email}) are not allowed for {domain} accounts.",As={allowlistedDomains:m_,successCode:v_,validationCode:__,messageTemplate:y_},w_=new Set(As.allowlistedDomains),b_=As.successCode,rh=As.validationCode;function Ps(t){return typeof t=="string"?t.trim():""}function E_(t){const e=Ps(t),n=e.lastIndexOf("@");if(n<=0||n===e.length-1)return!1;const i=e.slice(0,n),r=e.slice(n+1).toLowerCase();return w_.has(r)?i.includes("+"):!1}function S_(t,e){return As.messageTemplate.replaceAll("{email}",t).replaceAll("{domain}",e)}function sh(t){if(!E_(t))return null;const e=Ps(t),n=e.lastIndexOf("@"),i=e.slice(n+1).toLowerCase();return S_(e,i)}function oh(t,e){return t?.code===rh?t.message||sh(e)||"Please enter your primary email address.":t?.code===b_||!t?.code?`Check your email — we sent a link to ${Ps(e)}`:t.message||"Something went wrong. Please try again."}const x_="ccc_auth_session",I_="ccc_subscription",k_=Object.freeze(["hasSeenWalkthrough"]);function C_(t){const e=[];for(const n of k_)t.getItem(n)!==null&&(t.removeItem(n),e.push(n));return e}function A_(){return[x_,I_]}function P_({storage:t,onIdentityChanged:e,onPlanChanged:n}){for(const i of A_())t.removeItem(i);typeof e=="function"&&e(),typeof n=="function"&&n()}function F_({sendLink:t,getEmail:e,onState:n}){let i=!1;return async function(){if(i)return{status:"busy"};i=!0;let s;try{n({status:"pending",error:null});const o=await t(e());return s={status:"sent",data:o},n({status:"sent",data:o}),s}catch(o){return s={status:"error",error:o},n({status:"error",error:o}),s}finally{i=!1}}}const R_=/^dependencies\s*:\s*(?:#.*)?$/,T_=/^(?:"([^"]+)"|'([^']+)'|([A-Za-z_][A-Za-z0-9_-]*))\s*:/;function Fs(t){const e=t.match(T_);return e?e[1]??e[2]??e[3]:null}function rr(t){const e=t.trim();return e===""||e.startsWith("#")}function di(t){const e=t.match(/^(\s*)/);return e?e[1].length:0}function Sl(t,e){const n=t.findIndex(s=>e.test(s));if(n===-1)return null;let i=n,r=null;for(let s=n+1;s=0.0.0"}`}function N_(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([u])=>u&&u!=="flutter");if(i.length===0)return{yaml:n,added:[],alreadyPresent:[]};const r=n.split(` -`),s=new Set(lh(n)),o=[],a=[];for(const[u,c]of i)s.has(u)?a.push(u):(o.push([u,c]),s.add(u));if(o.length===0)return{yaml:n,added:[],alreadyPresent:a};const l=xl(r);if(l){const u=o.map(([c,d])=>Lu(l.childIndent,c,d));r.splice(l.endIndex,0,...u)}else r.length>0&&r[r.length-1].trim()!==""&&r.push(""),r.push("dependencies:"),o.forEach(([u,c])=>{r.push(Lu(" ",u,c))});return{yaml:r.join(` -`),added:o.map(([u])=>u),alreadyPresent:a}}function O_(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([l])=>l&&l!=="flutter");if(i.length===0)return{yaml:n,overridden:[],skipped:[]};const r=n.split(` -`),s=Ts(n),o=[],a=[];for(const[l,u]of i){const c=s.get(l);if(!c||!c.isScalar||!String(u||"").trim()){a.push(l);continue}const d=" ".repeat(di(r[c.lineIndex]));r[c.lineIndex]=`${d}${l}: ${uh(String(u).trim())}${c.comment}`,o.push({name:l,from:c.constraint,to:u})}return{yaml:r.join(` -`),overridden:o,skipped:a}}function dh(t){const e=String(t||""),n=[];return e.trim()?(/^name:\s*\S+/m.test(e)||n.push("pubspec.yaml missing name field"),xl(e.split(` -`))||n.push("pubspec.yaml missing dependencies section"),lh(e).includes("flutter")||n.push("pubspec.yaml missing Flutter SDK dependency"),{valid:n.length===0,errors:n}):(n.push("pubspec.yaml is empty"),{valid:!1,errors:n})}const B_=">=3.0.0 <4.0.0";function La(t){const e=String(t||"").trim(),n=e[0];return n!=="'"&&n!=='"'||e[e.length-1]!==n?e:e.slice(1,-1).replaceAll(`${n}${n}`,n)}function D_(t=""){const e=Uv(t).filter(n=>!n.startsWith("dart:")&&!n.startsWith("package:"));return{selfContained:e.length===0,unresolvableImports:e}}function Nu(t,e,n){const i=[];for(const[r,s]of t){if(s.isScalar){e[r]=La(s.constraint);continue}if(s.sourceKey==="sdk"){n.add(r);continue}if(s.sourceKey===null&&s.version){e[r]=La(s.version);continue}i.push(r)}return i}function j_(t){const e=new Set,n={},i={},r=Nu(Ts(t),n,e);r.push(...Nu(M_(t,"dependency_overrides"),i,e));const s=new Set([...Object.keys(n),...e]),{sdk:o}=ch(t);return{sdkConstraint:La(o)||B_,dependencies:n,overrides:i,sdkPackages:[...e].sort(),availablePackages:s,unrepresentable:r}}function U_(t,e,n){return e.length>0?`${t} imports ${e.join(", ")}, which FlutterFlow only generates once the app is built, so it could not be compiled before the deploy.`:`${t} imports ${n.join(", ")}, which your project's pubspec.yaml does not declare with a version constraint, so it could not be compiled before the deploy.`}function H_(t,e){const{sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s,availablePackages:o,unrepresentable:a}=j_(e),l={sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s},u=[],c=[],d=a.map(f=>`Your project declares ${f} from a source that cannot be reproduced outside it, so the pre-deploy compile check runs against a scratch package graph that omits ${f}. Classes that do not import ${f} directly are still checked, but against that reduced graph, so their transitive package resolution may differ from your project's and the check is approximate for them.`);for(const f of t){const{className:h,content:p}=f,g=wl(p),m=g.filter(b=>a.includes(b));if(m.length>0){c.push({className:h,reason:`${h} was not compiled before deploying: it imports ${m.join(", ")}, which your project declares from a source that cannot be reproduced outside it, so package resolution could not be matched exactly.`});continue}const{unresolvableImports:v}=D_(p),S=g.filter(b=>!o.has(b));if(v.length>0||S.length>0){c.push({className:h,reason:U_(h,v,S)});continue}u.push({fileName:`${yl(h)}.dart`,content:p})}return{manifest:l,sources:u,skipped:c,approximate:d}}function Ou(t,e){const n=`${t}${e}`.split(` -`),i=n.pop()??"",r=[];for(const s of n){const o=fh(s);o&&r.push(o)}return{events:r,buffer:i}}function W_(t){const e=fh(t);return e?[e]:[]}function fh(t){const e=t.trim();if(!e)return null;try{const n=JSON.parse(e);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}const Xe=Object.freeze({COMMITTED:"committed",PARTIAL:"partial",FAILED:"failed",UNCONFIRMED:"unconfirmed"}),z_=12e4;function hh(t){return t?.unconfirmed===!0||t?.outcome===Xe.UNCONFIRMED?Xe.UNCONFIRMED:t?.partial===!0||t?.outcome===Xe.PARTIAL?Xe.PARTIAL:t?.success===!0?Xe.COMMITTED:Xe.FAILED}async function q_(t,e={}){const{onPhase:n,onLog:i}=e;let r=null,s="";const o=a=>{if(a.event==="phase"){a.message&&n&&n(a.message);return}if(a.event==="log"){a.message&&i&&i(a.message);return}r=a};if(t.body?.getReader){const a=t.body.getReader(),l=new TextDecoder;for(;;){const{done:u,value:c}=await a.read();if(u)break;const d=Ou(s,l.decode(c,{stream:!0}));s=d.buffer,d.events.forEach(o)}}else{const a=Ou("",await t.text());s=a.buffer,a.events.forEach(o)}return W_(s).forEach(o),r?{...r,success:r.success===!0||r.success===void 0&&t.ok,finalResultReceived:!0}:{success:!1,finalResultReceived:!1,httpRejected:!t.ok,httpStatus:t.status,error:t.ok?"The FlutterFlow deploy runner closed the connection before it finished.":`FlutterFlow custom class provisioning failed (HTTP ${t.status}).`}}function V_(t){return t?.finalResultReceived?hh(t):t?.httpRejected?Xe.FAILED:Xe.UNCONFIRMED}function G_(){let t=document.getElementById("fx-grid");if(!t)return null;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),n=window.matchMedia("(pointer: none)");let i=t.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,stencil:!1,premultipliedAlpha:!0,powerPreference:"low-power"}),r=i?null:t.getContext("2d");if(!i&&!r)return null;const s='',o=`#version 300 es -in vec2 p; void main(){ gl_Position = vec4(p, 0.0, 1.0); }`;function a(){return["#version 300 es","precision highp float;","out vec4 o;","uniform vec2 res;","uniform vec2 design;","uniform vec2 mouse;","uniform float energy;","uniform float parallax;","uniform float t;","uniform vec3 ink;","uniform sampler2D mark;","uniform vec2 rot;","const float WARP_A = 0.0032;","void main(){"," vec2 px = gl_FragCoord.xy * (design / res);"," vec2 p = vec2(px.x, design.y - px.y);"," vec2 off = vec2(0.0, -parallax) + vec2(sin(t * 0.11), cos(t * 0.09)) * 7.0;"," vec2 g = p + off;"," vec2 gm = mouse + off;"," float base = min(design.x, design.y);"," float spacing = clamp(base / 10.0, 64.0, 118.0);"," vec2 rel = g - gm;"," float rho = length(rel) + 1e-5;"," vec2 dir = rel / rho;"," vec2 pw = gm + dir * (rho + WARP_A * rho * rho);"," vec2 cell = floor(pw / spacing);"," vec2 cw = (cell + 0.5) * spacing - gm;"," float Rc = length(cw) + 1e-5;"," float rhoC = (-1.0 + sqrt(1.0 + 4.0 * WARP_A * Rc)) / (2.0 * WARP_A);"," vec2 c = gm + (cw / Rc) * rhoC;"," float cellSize = spacing / (1.0 + 2.0 * WARP_A * rhoC);"," float sigma = spacing * 2.9;"," float f = exp(-(rhoC * rhoC) / (2.0 * sigma * sigma));"," float scale = mix(0.32, 1.42, f);"," float weight = smoothstep(0.06, 0.80, f);"," float hs = cellSize * 0.26 * scale;"," vec2 uv = (g - c) / hs;"," vec2 ruv = mat2(rot.x, rot.y, -rot.y, rot.x) * uv;"," float cov = 0.0;"," if (abs(ruv.x) <= 1.0 && abs(ruv.y) <= 1.0) cov = texture(mark, ruv * 0.5 + 0.5).a;"," float s = cov * weight * energy * 0.26;"," o = vec4(ink * s, s);","}"].join(` -`)}let l=null,u,c,d,f,h,p,g,m,v;function S(K,W){if(!i)return null;const D=i.createShader(K);return i.shaderSource(D,W),i.compileShader(D),i.getShaderParameter(D,i.COMPILE_STATUS)?D:(window.console&&console.warn("fx-grid shader: "+i.getShaderInfoLog(D)),null)}if(i){const K=S(i.VERTEX_SHADER,o),W=S(i.FRAGMENT_SHADER,a());if(K&&W&&(l=i.createProgram(),i.attachShader(l,K),i.attachShader(l,W),i.linkProgram(l),i.getProgramParameter(l,i.LINK_STATUS)||(window.console&&console.warn("fx-grid link: "+i.getProgramInfoLog(l)),l=null)),l){i.useProgram(l),i.bindBuffer(i.ARRAY_BUFFER,i.createBuffer()),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),i.STATIC_DRAW);const D=i.getAttribLocation(l,"p");i.enableVertexAttribArray(D),i.vertexAttribPointer(D,2,i.FLOAT,!1,0,0),u=i.getUniformLocation(l,"res"),c=i.getUniformLocation(l,"design"),d=i.getUniformLocation(l,"mouse"),f=i.getUniformLocation(l,"energy"),h=i.getUniformLocation(l,"parallax"),p=i.getUniformLocation(l,"t"),g=i.getUniformLocation(l,"ink"),m=i.getUniformLocation(l,"mark"),v=i.getUniformLocation(l,"rot"),i.enable(i.BLEND),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.clearColor(0,0,0,0)}else{i=null;const D=t.cloneNode(!1);if(t.parentNode.replaceChild(D,t),t=D,r=t.getContext("2d"),!r)return null}}function b(K){if(!K)return null;const W=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(K);if(W){let D=W[1];return D.length===3&&(D=D[0]+D[0]+D[1]+D[1]+D[2]+D[2]),[parseInt(D.slice(0,2),16)/255,parseInt(D.slice(2,4),16)/255,parseInt(D.slice(4,6),16)/255]}try{const D=document.createElement("canvas");D.width=1,D.height=1;const ue=D.getContext("2d");ue.fillStyle="rgb(9, 8, 7)";const xe=String(ue.fillStyle);ue.fillStyle=K;const Fe=String(ue.fillStyle);if(Fe===xe)return null;const ut=/^#([0-9a-f]{6})$/i.exec(Fe);if(ut){const dt=ut[1];return[parseInt(dt.slice(0,2),16)/255,parseInt(dt.slice(2,4),16)/255,parseInt(dt.slice(4,6),16)/255]}const Lt=/rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/i.exec(Fe);if(Lt)return[Number(Lt[1])/255,Number(Lt[2])/255,Number(Lt[3])/255]}catch{}return null}function _(){let K="";try{const W=getComputedStyle(document.documentElement);K=(W.getPropertyValue("--fx-ink")||"").trim()||(W.getPropertyValue("--fg")||"").trim()}catch{}return b(K)||[.56,.68,.88]}const x=_();let I=1920,T=1080,E=960,P=540,$=960,O=540,L=.66,N=0,G=-1e9,V=!1,M=0,R=0,Z=null,Ce=!1,oe=!1,ye=!1;const $e=64,ae=15.2;let Ie=0,Se=0;const Be=.0032,yt=0,ge=.56,Ye=.26,wt=.32,gn=.16,Re=.349;let Pe=yt;function Tt(){const K=t.getBoundingClientRect(),W=t.clientWidth,D=t.clientHeight;if(!K.width||!W||!D)return;const ue=Math.min(window.devicePixelRatio||1,2),xe=Math.max(.2,Math.min(2,K.width/W*ue)),Fe=Math.max(2,Math.round(W*xe)),ut=Math.max(2,Math.round(D*xe));(Fe!==t.width||ut!==t.height)&&(t.width=Fe,t.height=ut,i&&i.viewport(0,0,Fe,ut)),I=W,T=D,V||(E=$=I/2,P=O=T/2,V=!0)}function On(K){!l||!Ce||!i||(i.uniform2f(u,t.width,t.height),i.uniform2f(c,I,T),i.uniform2f(d,E,P),i.uniform1f(f,L),i.uniform1f(h,N),i.uniform2f(v,Math.cos(Pe),Math.sin(Pe)),i.uniform1f(p,K),i.uniform3f(g,x[0],x[1],x[2]),i.clear(i.COLOR_BUFFER_BIT),i.drawArrays(i.TRIANGLES,0,3))}function He(K,W,D){const ue=Math.max(0,Math.min(1,(D-K)/(W-K)));return ue*ue*(3-2*ue)}function Bn(K){if(!Z||!r)return;const W=r;W.setTransform(1,0,0,1,0,0),W.clearRect(0,0,t.width,t.height);const D=t.width/I;W.setTransform(D,0,0,D,0,0),W.globalAlpha=1;const ue=Math.min(I,T),xe=Math.max(64,Math.min(118,ue/10)),Fe=xe*2.9,ut=2*Fe*Fe,Lt=Math.sin(K*.11)*7,dt=Math.cos(K*.09)*7-N,lr=E+Lt,cr=P+dt,no=Fe*Math.sqrt(2*Math.log(1/.06)),gi=no+Be*no*no+xe,bp=Math.floor((lr-gi)/xe)-1,Ep=Math.ceil((lr+gi)/xe)+1,Sp=Math.floor((cr-gi)/xe)-1,xp=Math.ceil((cr+gi)/xe)+1;for(let io=Sp;io<=xp;io++){const Ip=(io+.5)*xe;for(let ro=bp;ro<=Ep;ro++){const so=(ro+.5)*xe-lr,oo=Ip-cr,ao=Math.sqrt(so*so+oo*oo)+1e-5;if(ao>gi)continue;const ur=(-1+Math.sqrt(1+4*Be*ao))/(2*Be),sc=Math.exp(-(ur*ur)/ut),oc=He(.06,.8,sc)*L*.26;if(oc<.004)continue;const rn=xe/(1+2*Be*ur)*.26*(.32+1.1*sc),ac=ur/ao,lo=lr+so*ac,co=cr+oo*ac;lo<-rn*1.6||lo>I+rn*1.6||co<-rn*1.6||co>T+rn*1.6||(W.globalAlpha=oc,W.save(),W.translate(lo,co),W.rotate(Pe),W.drawImage(Z,-rn,-rn,rn*2,rn*2),W.restore())}}W.globalAlpha=1}function $t(K){if(!oe)return;const W=R?Math.min(.05,(K-R)/1e3):.016;R=K;const ue=K-G>2400?.6:1;L+=(ue-L)*Math.min(1,W*3.2);const xe=Math.min(.05,W);Ie+=(($-E)*$e-Ie*ae)*xe,Se+=((O-P)*$e-Se*ae)*xe,E+=Ie*xe,P+=Se*xe,N=(window.scrollY||window.pageYOffset||0)*.55;const Fe=K/1e3,ut=E/(I||1)-.5,Lt=P/(T||1)-.5;let dt=ut*(ut>=0?ge:Ye)+Lt*(Lt>=0?wt:gn);dt>Re?dt=Re:dt<-Re&&(dt=-Re),Pe=yt+dt-N*6e-4,Tt(),i?On(Fe):Bn(Fe),M=requestAnimationFrame($t)}function Mt(K){if(!oe)return;const W=t.getBoundingClientRect();!W.width||!I||!T||($=(K.clientX-W.left)/W.width*I,O=(K.clientY-W.top)/W.height*T,G=performance.now())}function ct(){oe||to||e.matches||n.matches||!ye||document.hidden||(oe=!0,R=0,M=requestAnimationFrame($t))}function nn(){oe=!1,M&&(cancelAnimationFrame(M),M=0),R=0}function pi(){e.matches?(nn(),t.classList.remove("is-ready")):ye&&ct()}function Dn(){n.matches?nn():ye&&ct()}function nc(){document.hidden?nn():ye&&ct()}const ic=new IntersectionObserver(K=>{ye=K[0]?.isIntersecting||!1,ye?ct():nn()},{threshold:0});ic.observe(t),window.addEventListener("pointermove",Mt,{passive:!0,capture:!0}),window.addEventListener("resize",Tt),e.addEventListener("change",pi),n.addEventListener("change",Dn),document.addEventListener("visibilitychange",nc);function wp(){const K=(s.match(/\sd="([^"]+)"/)||[])[1],W=document.createElement("canvas");W.width=256,W.height=256;const D=W.getContext("2d");if(K&&window.Path2D){const ue=Math.min(8.533333333333333,8.421052631578947);D.setTransform(ue,0,0,ue,ue+(256-30*ue)/2,-6.4*ue),D.fillStyle="rgb(255,255,255)",D.fill(new Path2D(K),"evenodd"),D.setTransform(1,0,0,1,0,0)}try{const ue=D.getImageData(0,0,256,256),xe=ue.data;for(let Fe=3;Feoe}}const K_=120;function Y_(t,e,n){return tn?n:t}function de(t,e,n){return Y_((t-e)/(n-e),0,1)}function J_(t){return t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2}function Uo(t){return 1-Math.pow(1-t,3)}function We(t,e){return e=e===void 0?1.7:e,1+(e+1)*Math.pow(t-1,3)+e*Math.pow(t-1,2)}function Bu(t){return 1-Math.pow(2,-9*t)*Math.cos(t*15)}function te(t,e){if(t<=e[0].t)return e[0].v;for(let n=1;n8.2&&_<9.4&&(s*=1-.07*Math.sin(de(_,8.2,9.4)*Math.PI))}else if(t<53){const _=t-42;g=te(_,[{t:0,v:1},{t:2,v:0},{t:4.2,v:0},{t:4.6,v:1},{t:6.8,v:1},{t:7.4,v:0},{t:9.4,v:0},{t:10.6,v:1}]),p=te(_,[{t:0,v:1},{t:2,v:.3},{t:4.6,v:1,e:We}]),d=te(_,[{t:0,v:0},{t:2,v:.3},{t:4.6,v:.16,e:We},{t:10.6,v:0}]),h=te(_,[{t:0,v:0},{t:2,v:-40},{t:4.6,v:0,e:We}]),o=te(_,[{t:0,v:0},{t:4.6,v:-.12},{t:10.6,v:0}])}else if(t<60){const _=t-53;c=te(_,[{t:0,v:1},{t:.35,v:0},{t:.45,v:0},{t:.7,v:1}]);const x=de(_,.45,2.2);a=x>0?-2.6*(1-Bu(x)):0,g=te(_,[{t:0,v:1},{t:.57,v:0},{t:.67,v:0},{t:.92,v:1}]);const I=de(_,.67,2.42);f=I>0?-2.6*(1-Bu(I)):0,s=1-.05*(Math.sin(de(_,1.9,2.5)*Math.PI)+Math.sin(de(_,2.5,3.1)*Math.PI))}else if(t<74){let x=function(P){return[te(P,[{t:0,v:0},{t:.25,v:1},{t:.5,v:1},{t:.72,v:.14},{t:.82,v:.14},{t:1,v:0}]),te(P,[{t:0,v:0},{t:.08,v:-.62},{t:.25,v:-.62},{t:.33,v:.62},{t:.7,v:.62},{t:.82,v:-.62},{t:1,v:-.62}])]};var b=x;const _=t-60,I=1-de(_,12,14),T=x(de(_,0,12)),E=x(de(_-.5,0,12));n=T[0]*I,i=(T[1]+.05*Math.sin(_*7))*I,o=(E[0]-T[0])*.6*I,a=(E[1]-T[1])*.6*I,h=(E[0]-T[0])*30*I,S=de(_,0,.4)*I}else if(t<85.4){const _=t-74,x=te(_,[{t:0,v:0},{t:4,v:1},{t:8,v:.24},{t:9.6,v:1,e:We},{t:11.4,v:0}]);o=x*.5,d=-x*.5,l=te(_,[{t:0,v:0},{t:4,v:6},{t:8,v:20},{t:9.6,v:38,e:We},{t:11.4,v:0}]),h=-l*.7,a=te(_,[{t:0,v:0},{t:8,v:0},{t:9.6,v:.4},{t:11.4,v:0}])}else if(t<96.4){const _=t-85.4,x=de(_,0,5.6),I=de(_,5.6,7.6),T=.72*Math.min(1,_/.6)*(1-I);d=Math.cos(x*Math.PI*2)*T,f=Math.sin(x*Math.PI*2)*T*.55,h=x*360*(1-I);const E=te(_,[{t:0,v:0},{t:7.6,v:0},{t:8.2,v:1,e:Uo},{t:8.6,v:.55},{t:9.4,v:0}]);o=-.16*E,d+=.16*E,l=-6*E,h+=6*E,s=1+.05*E,m=1+.9*E}else if(t<108.6){const _=t-96.4,x=de(_,9.6,12.2);n=te(_,[{t:0,v:0},{t:2.1,v:1},{t:4.8,v:.08},{t:7.5,v:1},{t:9.6,v:0}])*(1-x),i=-.35*Math.abs(Math.sin(de(_,0,9.6)*Math.PI*3))*(1-x);const I=Math.sin(_*6.2)*(1-x);u=1+.12*I,p=1-.12*I,l=I*8,h=-I*8,o=.06*I,d=-.06*I,S=de(_,0,.4)*(1-x)}else{const _=t-108.6,x=Math.sin(de(_,0,8)*Math.PI),I=1-de(_,8,11.4);s=1+.04*x*I,i=-.1*x*I,r=2*x*I,m=1+.5*Math.sin(de(_,0,6)*Math.PI),v=1+.1*Math.sin(de(_,0,6)*Math.PI)}return e.x=n,e.y=i,e.rot=r,e.scale=s,e.ax=o,e.ay=a,e.ar=l,e.asc=u,e.afade=c,e.bx=d,e.by=f,e.br=h,e.bsc=p,e.bfade=g,e.hfade=m,e.hsc=v,e.shd=S,e}function Z_(t={}){const e=t.arena||document.querySelector(".pipeline-glyph.logo-loop");if(!e)return null;const n=e.querySelector(".loop-mark"),i=e.querySelector(".loop-piece-a"),r=e.querySelector(".loop-piece-b"),s=e.querySelector(".loop-halo"),o=e.querySelector(".loop-shadow");if(!n||!i||!r||!s||!o)return null;const a=t.reducedMotion||window.matchMedia("(prefers-reduced-motion: reduce)"),l=K_;let u=34,c=0,d=0;function f(){u=n.offsetWidth||34,c=Math.max(0,e.offsetWidth-u-4),d=Math.max(0,(e.offsetHeight-u)/2-2),e.style.setProperty("--mark-c",u/2+"px")}function h(M){const R=Math.min(1,Math.max(0,M.x))*c,Z=M.y*d;n.style.transform="translate3d("+R.toFixed(2)+"px,"+Z.toFixed(2)+"px,0) rotate("+M.rot.toFixed(2)+"deg) scale("+M.scale.toFixed(3)+")",i.style.transform="translate3d("+(M.ax*u).toFixed(2)+"px,"+(M.ay*u).toFixed(2)+"px,0) rotate("+M.ar.toFixed(2)+"deg) scale("+M.asc.toFixed(3)+")",i.style.opacity=M.afade.toFixed(3),r.style.transform="translate3d("+(M.bx*u).toFixed(2)+"px,"+(M.by*u).toFixed(2)+"px,0) rotate("+M.br.toFixed(2)+"deg) scale("+M.bsc.toFixed(3)+")",r.style.opacity=M.bfade.toFixed(3),s.style.transform="scale("+M.hsc.toFixed(3)+")",s.style.opacity=(.09*M.hfade).toFixed(3),o.style.transform="translateX("+R.toFixed(2)+"px) scaleX("+(.75+.4*Math.abs(M.x)).toFixed(3)+")",o.style.opacity=(M.shd*.5).toFixed(3)}let p=0,g=0,m=0,v=!1,S=!1,b=!1,_=0;function x(){return b||a.matches||document.hidden||!e.offsetParent?!1:S}function I(M){if(!v)return;if(m=requestAnimationFrame(I),!x()){E();return}const R=g?(M-g)/1e3:0;g=M,p=(p+Math.min(R,.1))%l,_+=1,h(Ci(p))}function T(){v||b||x()&&(v=!0,g=0,m=requestAnimationFrame(I))}function E(){v=!1,m&&(cancelAnimationFrame(m),m=0),g=0}function P(){x()?T():E()}function $(){a.matches?(E(),h(Ci(0))):P()}function O(){f(),v&&h(Ci(p))}function L(){g=0,P()}const N=new IntersectionObserver(M=>{S=M[0]?M[0].isIntersecting:!1,P()},{threshold:0});N.observe(e),window.addEventListener("resize",O),a.addEventListener("change",$),document.addEventListener("visibilitychange",L);function G(){b||(b=!0,E(),N.disconnect(),window.removeEventListener("resize",O),a.removeEventListener("change",$),document.removeEventListener("visibilitychange",L))}window.addEventListener("pagehide",G);function V(M){p=(M%l+l)%l,h(Ci(p))}return f(),h(Ci(0)),P(),{isRunning:()=>v,currentTime:()=>p,frameCount:()=>_,seek:V,dispose:G}}const X_=/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function Jt(t){const e=String(t||"").trim().match(X_);return e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),prerelease:e[4]?e[4].split("."):[]}:null}function Q_(t,e){if(t.length===0&&e.length===0)return 0;if(t.length===0)return 1;if(e.length===0)return-1;for(let n=0;n0)}function ty(t){const e=Jt(t);return e?e.major>0?`${e.major+1}.0.0`:`0.${e.minor+1}.0`:null}function Il(t){let e=String(t??"").trim();if((e.startsWith("'")||e.startsWith('"'))&&(e=e.slice(1,-1).trim()),e===""||e==="any"||e==="*")return{min:null,minInclusive:!1,max:null,maxInclusive:!1};if(e.startsWith("^")){const o=e.slice(1).trim();return Jt(o)?{min:o,minInclusive:!0,max:ty(o),maxInclusive:!1}:null}if(Jt(e))return{min:e,minInclusive:!0,max:e,maxInclusive:!0};const n={min:null,minInclusive:!1,max:null,maxInclusive:!1},i=/(>=|<=|>|<)\s*([0-9][0-9A-Za-z.+-]*)/g;let r=!1,s;for(;(s=i.exec(e))!==null;){const[,o,a]=s;if(!Jt(a))return null;r=!0,o===">="||o===">"?(n.min=a,n.minInclusive=o===">="):(n.max=a,n.maxInclusive=o==="<=")}return r?n:null}function Du(t,e){const n=Il(t);if(!n||!Jt(e))return!1;if(n.min!==null){const i=cs(e,n.min);if(i<0||i===0&&!n.minInclusive)return!1}if(n.max!==null){const i=cs(e,n.max);if(i>0||i===0&&!n.maxInclusive)return!1}return!0}function ny(t,e){const n=Il(t);if(!n||!Jt(e))return!1;if(n.max===null)return!0;const i=cs(n.max,e);return i>0?!0:i===0&&n.maxInclusive}function zn(t){const e=Il(t);return e?e.min:null}const iy="https://pub.dev/api/packages/",ry=8e3;function sy(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null}=e,r=Array.isArray(t?.versions)?t.versions:[];let s=null;for(const o of r){const a=o?.version;if(!a||o.retracted||ey(a))continue;const l=o.pubspec?.environment||{};n&&l.sdk&&!Du(l.sdk,n)||i&&l.flutter&&!Du(l.flutter,i)||(!s||cs(a,s)>0)&&(s=a)}return s?{version:s,constraint:`^${s}`}:null}async function oy(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null,fetchImpl:r=fetch}=e;let s;try{const a=await r(`${iy}${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(ry)});if(!a.ok)return{name:t,constraint:null,version:null,error:a.status===404?`"${t}" was not found on pub.dev`:`pub.dev returned ${a.status} for "${t}"`};s=await a.json()}catch(a){return{name:t,constraint:null,version:null,error:`could not reach pub.dev for "${t}" (${a.message})`}}const o=sy(s,{dartSdkFloor:n,flutterSdkFloor:i});return o?{name:t,...o,error:null}:{name:t,constraint:null,version:null,error:n?`no published "${t}" release supports Dart ${n}`:`no published "${t}" release could be read`}}async function ay(t,e={}){const n=await Promise.all(t.map(i=>oy(i,e)));return new Map(n.map(({name:i,...r})=>[i,r]))}async function ly(t,e={},n={}){const{resolveVersions:i=ay}=n,r=Object.entries(e).filter(([c])=>c&&c!=="flutter"),s=ch(t),o={dartSdkFloor:zn(s.sdk),flutterSdkFloor:zn(s.flutter)},a={additions:{},overrides:{},kept:[],warnings:[],sdk:o};if(r.length===0)return a;const l=Ts(t),u=[];for(const[c,d]of r){const f=l.get(c);if(!f){u.push(c);continue}const h=zn(d);if(!h){a.kept.push({name:c,constraint:f.constraint});continue}if(!f.isScalar){a.warnings.push(`"${c}" is declared in your project from a git, path, or SDK source, but the generated code needs at least ${h}. Left as-is — update it yourself if the build fails.`),a.kept.push({name:c,constraint:f.constraint});continue}if(ny(f.constraint,h)){a.kept.push({name:c,constraint:f.constraint});continue}a.overrides[c]=`^${h}`,a.warnings.push(`"${c}" was pinned to ${f.constraint} in your project, which cannot resolve the ${h} the generated code needs. Raising it to ^${h} — this changes a dependency the rest of your app also uses.`)}if(u.length>0){const c=await i(u,o);for(const d of u){const f=c.get(d);if(f?.constraint){a.additions[d]=f.constraint;continue}const h=e[d]||"";if(zn(h)){a.additions[d]=`^${zn(h)}`,a.warnings.push(`Could not confirm "${d}" version on pub.dev (${f?.error||"lookup failed"}). Using ^${zn(h)} from the AI's recommendation — verify this is current.`);continue}a.additions[d]=">=0.0.0",a.warnings.push(`Could not determine a version for "${d}" (${f?.error||"lookup failed"}) and the AI supplied none. Added with a wide-open >=0.0.0 constraint — pin a concrete version in FlutterFlow before deploying.`)}}return a}const cy={"&":"&","<":"<",">":">",'"':""","'":"'"};function Zt(t){return String(t??"").replace(/[&<>"']/g,e=>cy[e])}function z(t){return t?Zt(t).replace(/\n/g,"
"):""}function Kt(t){return Zt(t).replace(/\r?\n/g," ")}function $s(t,e={}){const n=t?.pipelineStep;if(n!=null&&e[n]!=null)return e[n];const i=t?.message||"";return i.includes("Code Generator")?2:i.includes("Code Review")?3:1}function gh(t){if(!t)return{kind:"generic",title:"Generation failed",message:"An unknown error occurred. Please try again.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1};if(t.isModelArmor){const n=t.code==="MODEL_ARMOR_BLOCKED";return{kind:"safety",title:t.userTitle||"Request blocked for safety",message:t.userMessage||t.message,detail:t.retryExplanation||"",canRetry:!n,canEdit:!0,canUpgrade:!1}}if(t.isUsageLimit)return{kind:"quota",title:"Monthly limit reached",message:t.message||"You've used all your generations for this period.",detail:"",canRetry:!1,canEdit:!1,canUpgrade:!0};const e=t.message||"";return/timed out after/i.test(e)?{kind:"timeout",title:"Request timed out",message:"The generation service took too long to respond.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:/unreachable|failed to fetch|load failed|cors/i.test(e)?{kind:"network",title:"Connection problem",message:"We couldn't reach the generation service. Check your connection and try again.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:{kind:"generic",title:"Generation failed",message:e||"An unexpected error occurred.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1}}function uy(t){const e={"Integration Audit Report":"📋","Critical Issues":"❌",Warnings:"⚠️",Recommendations:"✅","Overall Score":"📊"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📄"}function dy(t){const e={critical:"❌",warning:"⚠️",recommendation:"✅",score:"📊",issue:"🔍",fix:"🔧"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📝"}function fy(t){return t.includes("class ")&&t.includes("extends ")||t.includes("StatelessWidget")||t.includes("StatefulWidget")||t.includes("import 'package:flutter/")?"dart":t.includes("def ")||t.includes("import ")||t.includes("print(")?"python":t.includes("function ")||t.includes("const ")||t.includes("console.")?"javascript":"dart"}function ai(t){if(!t)return"";if(typeof t!="string")return String(t);const e=/```(?:\w+)?\n?([\s\S]*?)```/,n=t.match(e);return n?n[1].trim():t.trim()}function ju(t){return t=Zt(t),t=t.replace(/\*\*(.*?)\*\*/g,'$1'),t=t.replace(/\*(.*?)\*/g,'$1'),t=t.replace(/`(.*?)`/g,'$1'),t=t.replace(/\b(FAIL|ERROR|CRITICAL)\b/g,'$1'),t=t.replace(/\b(WARN|WARNING)\b/g,'$1'),t=t.replace(/\b(PASS|SUCCESS|OK)\b/g,'$1'),t}function mh(t,e="dart",n=globalThis.hljs){if(!t)return"";const i=ai(t);try{return n.highlight(i,{language:e}).value}catch(r){console.warn("Syntax highlighting failed:",r);try{return n.highlight(i,{language:"json"}).value}catch{return Zt(i)}}}function Ms(t,e={}){const{highlighter:n=globalThis.hljs}=e;let i='
';const r=String(t??"").split(` -`);let s=!1,o="";for(const a of r){if(a.startsWith("```")){if(s){const l=fy(o),u=mh(o.trim(),l,n);i+=`
-
${u}
-
`,o="",s=!1}else s=!0;continue}if(s){o+=a+` -`;continue}if(a.startsWith("# ")){const l=a.substring(2).trim();i+=`
-

- ${uy(l)} - ${Zt(l)} -

-
`;continue}if(a.startsWith("## ")){const l=a.substring(3).trim();i+=`
-

- ${dy(l)} - ${Zt(l)} -

-
`;continue}if(/^[-*+]\s+/.test(a)||/^\d+\.\s+/.test(a)){const l=a.replace(/^([-*+]|\d+\.)\s+/,"").trim();i+=`
- • - ${ju(l)} -
`;continue}a.trim()!==""&&(i+=`

${ju(a)}

`)}return i+="
",` -
-
-
- Live Audit Report -
- ${i} -
- `}const hy=[[/gradient stroke\s*$/i," and an animated percentage label"],[/gauge\s*$/i," with a gradient stroke and animated fill"],[/rating\s*(bar|widget)?\s*$/i," with half-star support and haptic feedback"],[/list\s*$/i," with swipe-to-delete and an undo snackbar"],[/pad\s*$/i," that exports a transparent PNG"],[/carousel\s*$/i," with parallax cards and page indicators"],[/(button|cta)\s*$/i," with a loading spinner and success state"],[/(chart|graph)\s*$/i," that animates from a Firestore stream"],[/action\s*(that|to)?\s*$/i," uploads an image to Firebase Storage and returns the URL"],[/timer\s*$/i," with pause, resume and a completion callback"],[/map\s*$/i," with clustered markers and a custom info window"],[/^a\s+\w*$/i," widget that"],[/(picker|selector)\s*$/i," with search and multi-select"]],py=220,gy=6;function Uu(t,e){return!!(t&&t.trim())&&!e}function my(t,e=""){if(typeof t!="string"||!t||t===e||t.trim().lengthi.test(t));return n?n[1]:null}function vy(){let t="",e="";return{get active(){return t},resolve(n){return t=my(n,e)??"",t},dismiss(){t=""},accept(n){if(!t)return null;const i=n+t;return e=i,t="",i}}}function _y({onSubmit:t}){const e=document.getElementById("composer"),n=document.getElementById("pipeline-input"),i=document.getElementById("hero-send");if(!e||!n||!i||typeof t!="function")return;const r=e.querySelector(".ghost .typed"),s=e.querySelector(".ghost .suggest"),o=document.getElementById("tab-hint"),a=document.getElementById("suggest-status"),l=Array.from(document.querySelectorAll("#example-chips .chip")),u=document.getElementById("btn-add-images"),c=document.getElementById("prompt-image-input"),d=window.matchMedia("(prefers-reduced-motion: reduce)"),f=vy();let h=!1,p=!1,g=!1,m=!1,v=null,S=null;function b(){i.disabled=!Uu(n.value,p||g||m)}function _(){r&&(r.textContent=n.value)}function x(){s&&(s.textContent=""),_(),e.classList.remove("has-suggest"),o&&(o.hidden=!0,o.tabIndex=-1),a&&(a.textContent="")}function I(R){s&&(s.textContent=R),_(),e.classList.add("has-suggest"),o&&(o.hidden=!1,o.tabIndex=0,o.setAttribute("aria-label","Accept suggestion: "+R.trim())),a&&(a.textContent="Suggestion: "+R+". Press Tab to accept.")}function T(){f.dismiss(),x()}function E(){if(h||p)return;const R=f.resolve(n.value);R&&I(R)}function P(){clearTimeout(v),!h&&(v=setTimeout(E,py))}function $(){const R=f.accept(n.value);return R===null?!1:(n.value=R,x(),b(),!0)}function O(R){p=R,e.classList.toggle("is-busy",R),i.classList.toggle("is-busy",R),i.setAttribute("aria-label",R?"Generating":"Generate"),n.readOnly=R,l.forEach(Z=>{Z.disabled=R}),u&&(u.disabled=R),c&&(c.disabled=R),b()}async function L(){if(Uu(n.value,p||g||m)){T(),O(!0);try{await t()}finally{O(!1)}}}function N(){g=!1,S&&(clearInterval(S),S=null),e.classList.remove("is-demo-typing"),b()}function G(){l.forEach(R=>{R.classList.remove("is-active"),R.setAttribute("aria-pressed","false")})}function V(){try{n.focus({preventScroll:!0}),n.setSelectionRange(n.value.length,n.value.length)}catch{}}function M(R){const Z=R.dataset.prompt||"";if(N(),clearTimeout(v),v=null,T(),l.forEach(oe=>{const ye=oe===R;oe.classList.toggle("is-active",ye),oe.setAttribute("aria-pressed",String(ye))}),d.matches||!Z){n.value=Z,_(),b(),V();return}n.value="",_(),g=!0,b(),e.classList.add("is-demo-typing");let Ce=0;S=setInterval(()=>{Ce+=1,n.value=Z.slice(0,Ce),_(),Ce>=Z.length?(N(),V()):b()},22)}return l.forEach(R=>{R.setAttribute("aria-pressed","false"),R.addEventListener("click",()=>M(R))}),n.addEventListener("keydown",R=>{if(g&&R.key==="Enter"&&!R.shiftKey&&!R.isComposing&&!h){R.preventDefault();return}N(),R.key==="Tab"&&!R.shiftKey&&f.active?(R.preventDefault(),$()):R.key==="Escape"?(clearTimeout(v),v=null,T()):R.key==="Enter"&&!R.shiftKey&&!R.isComposing&&!h&&(R.preventDefault(),L())}),n.addEventListener("input",()=>{N(),G(),T(),b(),P()}),n.addEventListener("compositionstart",()=>{h=!0}),n.addEventListener("compositionend",()=>{h=!1,T(),b(),P()}),n.addEventListener("scroll",()=>{r&&r.parentNode&&(r.parentNode.scrollTop=n.scrollTop)}),o&&o.addEventListener("click",()=>{$(),n.focus({preventScroll:!0})}),i.addEventListener("click",L),n.addEventListener("pointerdown",()=>{N(),G()}),_(),b(),{setAttachmentsPending(R){m=!!R,b()}}}const yy="https://ccc-ffai-runner-y5cyj3473a-uw.a.run.app/deployCustomClasses";const vt="https://4tgke4.buildship.run",vh={professional:"price_1T2ldCKszA2slvDXatdeCpbI",power:"price_1T2le9KszA2slvDXR4mPvw7M"},us="ccc_auth_session",Na="ccc_signin_return",wy=1800*1e3,Hu=new WeakSet;let q={email:null,sessionToken:null,isVerified:!1};function $n(t={}){return{tier:"free",status:"none",periodEnd:null,isLoading:!1,isResolved:!1,error:null,...t}}let ce=$n({isResolved:!0}),Oa=Promise.resolve();const by=`${vt}/service/runpipeline`,Ey="bs_user_id",Sy="bs_identity_token",xy=`${vt}/authUserCheck`;let ft={userId:null,token:null,status:null,resolved:!1};const ds=tv,fs="ccc_subscription",Wu=3,Iy=new Set(["active","trialing","paid"]),hs="google/gemini-3.7-flash",$r=["anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta","openrouter/free","openrouter/deepseek/deepseek-v4-pro"],ky={"google/gemini-3.7-flash":"Gemini 3.7 Flash","anthropic/claude-opus-5":"Claude Opus 5","openai/gpt-5.6-sol":"GPT-5.6 Sol","z-ai/glm-5.2":"GLM 5.2","moonshotai/kimi-k3":"Kimi K3","openrouter/auto-beta":"OpenRouter: Auto Router","openrouter/free":"OpenRouter: Free Models","openrouter/deepseek/deepseek-v4-pro":"DeepSeek v4 Pro"};function on(t){return ky[t]||t}const Cy=new Set(["google/gemini-3.7-flash","anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta"]);function Ay(t){return Cy.has(t)}const Ba=4,Ho=8*1024*1024,Py="https://4tgke4.buildship.run/service/runpipeline-image";let Ne=[];const hn=[],Fy=3e4;let _h=null;function Ry(t){return new Promise(e=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>e(null),n.readAsDataURL(t)})}async function Ty(t,e){const n=new FormData;return n.append("file",t),(await fetch(Py,{method:"POST",body:n,signal:e})).json()}function $y(t){if(Array.isArray(t)){const e=t[0];if(e&&typeof e=="object")for(const n of Object.keys(e)){if(n==="item"||n==="index")continue;const i=e[n];if(i&&typeof i=="object"){if(typeof i.file=="string")return i.file;if(typeof i.url=="string")return i.url}if(typeof i=="string")return i}return""}return typeof t=="string"?t:t&&typeof t=="object"&&(t.url||t.fileUrl||t.file_url||t.downloadUrl||t.imageUrl||t.image_url||t.file)||""}async function My(t,e,n){const i=await Ry(t);i&&Ne.includes(e)&&(e.dataUrl=i,ln());let r="";if(i)try{r=$y(await Ty(t,n))}catch{r=""}return Ne.includes(e)?!i||!r?(Ne.splice(Ne.indexOf(e),1),ln(),"failed"):(e.url=r,ln(),"added"):"dropped"}function yh(t){const e=hn.indexOf(t);e>=0&&hn.splice(e,1),bh()}function wh(t){t.controller.abort(),yh(t);const e=Ne.indexOf(t.slot);e>=0&&(Ne.splice(e,1),ln())}function bh(){_h?.setAttachmentsPending(hn.length>0)}async function Ly(t){const e=Array.from(t.target.files||[]);if(!e.length)return;if(t.target.value="",y.isRunning){Ee("Wait for the current generation to finish before attaching images.","info");return}const n=e.filter(u=>u.size>Ho);n.length&&Ee(`Skipped ${n.length} image(s) over the ${(Ho/1024/1024).toFixed(0)} MB limit.`,"warning");const i=e.filter(u=>u.size<=Ho);if(!i.length)return;const r=Ba-Ne.length,s=i.slice(0,r);if(i.length>r&&Ee(`You can attach up to ${Ba} images.`,"info"),!s.length)return;const o=s.map(u=>{const c={dataUrl:null,name:u.name,url:null};Ne.push(c);const d={slot:c,controller:new AbortController},f=setTimeout(()=>d.controller.abort(),Fy);return d.job=My(u,c,d.controller.signal),hn.push(d),d.job.finally(()=>{clearTimeout(f),yh(d)}),d.job});ln(),bh();const l=(await Promise.all(o)).filter(u=>u==="failed").length;l&&Ee(`${l} image(s) could not be uploaded and were not attached.`,"error")}function Ny(t){const e=Ne[t],n=hn.find(i=>i.slot===e);if(n){wh(n);return}Ne.splice(t,1),ln()}function ln(){const t=document.getElementById("prompt-image-thumbnails"),e=document.getElementById("prompt-image-btn-label");t&&(t.innerHTML="",Ne.forEach((n,i)=>{const r=document.createElement("div");r.className="prompt-img-thumb"+(n.url?"":" is-pending"),r.innerHTML=(n.dataUrl?`Prompt image`:"")+``,t.appendChild(r)}),e&&(e.textContent=Ne.length>=Ba?"Image limit reached":"Add images"))}function Eh(){const t=document.getElementById("prompt-image-upload");if(!t)return;const e=document.getElementById("code-generator-model"),n=Ay(e?.value);t.classList.toggle("hidden",!n),!n&&Ne.length&&(hn.slice().forEach(wh),Ne=[],ln())}const Pn="ccc_usage",Sh="google/gemini-3.7-flash",xh="google/gemini-3.7-flash",Sr="google/gemini-3.7-flash",Li={professional:11,power:49},Da={en_US:"USD",en_GB:"GBP",en_AU:"AUD",en_NZ:"NZD",en_CA:"CAD",en_IN:"INR",en_SG:"SGD",en_HK:"HKD",en_PH:"PHP",en_ZA:"ZAR",en:"USD",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR",pt_PT:"EUR",pt_BR:"BRL",pt:"BRL",ja:"JPY",ko:"KRW",zh_CN:"CNY",zh_TW:"TWD",zh:"CNY",th:"THB",vi:"VND",id:"IDR",ms_MY:"MYR",ms:"MYR",sv:"SEK",nb:"NOK",da:"DKK",pl:"PLN",cs:"CZK",hu:"HUF",ro:"RON",tr:"TRY",ar:"AED",he:"ILS",ru:"RUB",uk:"UAH"},Mr={AUD:1,USD:.65,EUR:.6,GBP:.52,CAD:.88,NZD:1.08,JPY:97,KRW:870,INR:54,SGD:.87,HKD:5.08,BRL:3.18,CNY:4.7,TWD:20.5,THB:22.5,VND:16200,IDR:10200,MYR:2.88,SEK:6.8,NOK:6.95,DKK:4.48,PLN:2.6,CZK:15.2,HUF:238,RON:2.98,TRY:20.9,AED:2.39,ILS:2.38,PHP:36.4,ZAR:11.8,RUB:58,UAH:26.8,CHF:.57,MXN:11.1,ARS:580,CLP:610,COP:2700,PEN:2.44};let Lr={...Mr};async function Oy(){const t=new AbortController,e=setTimeout(()=>t.abort(),5e3);try{const n=await fetch("https://open.er-api.com/v6/latest/AUD",{signal:t.signal});if(!n.ok)return;const i=await n.json();if(i.result!=="success"||!i.rates)return;const r=i.rates,s={AUD:1},o=new Set([...Object.keys(Mr),...Object.values(ja),...Object.values(Da)]);for(const a of o)a!=="AUD"&&(typeof r[a]=="number"&&r[a]>0?s[a]=r[a]:Mr[a]&&(s[a]=Mr[a]));Lr=s}catch{}finally{clearTimeout(e)}}const ja={"America/Sao_Paulo":"BRL","America/Fortaleza":"BRL","America/Recife":"BRL","America/Bahia":"BRL","America/Belem":"BRL","America/Manaus":"BRL","America/Cuiaba":"BRL","America/Campo_Grande":"BRL","America/Araguaina":"BRL","America/Noronha":"BRL","America/Rio_Branco":"BRL","America/Porto_Velho":"BRL","America/Boa_Vista":"BRL","America/Maceio":"BRL","America/Santarem":"BRL","America/Eirunepe":"BRL","Europe/London":"GBP","Europe/Paris":"EUR","Europe/Berlin":"EUR","Europe/Madrid":"EUR","Europe/Rome":"EUR","Europe/Amsterdam":"EUR","Europe/Brussels":"EUR","Europe/Vienna":"EUR","Europe/Lisbon":"EUR","Europe/Dublin":"EUR","Europe/Helsinki":"EUR","Europe/Athens":"EUR","Europe/Bucharest":"RON","Europe/Budapest":"HUF","Europe/Warsaw":"PLN","Europe/Prague":"CZK","Europe/Copenhagen":"DKK","Europe/Stockholm":"SEK","Europe/Oslo":"NOK","Europe/Zurich":"CHF","Europe/Istanbul":"TRY","Europe/Moscow":"RUB","Europe/Kiev":"UAH","Europe/Kyiv":"UAH","Asia/Tokyo":"JPY","Asia/Seoul":"KRW","Asia/Shanghai":"CNY","Asia/Taipei":"TWD","Asia/Hong_Kong":"HKD","Asia/Singapore":"SGD","Asia/Kolkata":"INR","Asia/Calcutta":"INR","Asia/Bangkok":"THB","Asia/Ho_Chi_Minh":"VND","Asia/Jakarta":"IDR","Asia/Kuala_Lumpur":"MYR","Asia/Dubai":"AED","Asia/Jerusalem":"ILS","Asia/Tel_Aviv":"ILS","Asia/Manila":"PHP","Pacific/Auckland":"NZD","Australia/Sydney":"AUD","Australia/Melbourne":"AUD","Australia/Brisbane":"AUD","Australia/Perth":"AUD","Australia/Adelaide":"AUD","Australia/Hobart":"AUD","Australia/Darwin":"AUD","Australia/Lord_Howe":"AUD","America/Toronto":"CAD","America/Vancouver":"CAD","America/Edmonton":"CAD","America/Winnipeg":"CAD","America/Halifax":"CAD","America/St_Johns":"CAD","America/Regina":"CAD","America/New_York":"USD","America/Chicago":"USD","America/Denver":"USD","America/Los_Angeles":"USD","America/Phoenix":"USD","America/Anchorage":"USD","Pacific/Honolulu":"USD","America/Mexico_City":"MXN","America/Cancun":"MXN","America/Tijuana":"MXN","America/Argentina/Buenos_Aires":"ARS","America/Santiago":"CLP","America/Bogota":"COP","America/Lima":"PEN","Africa/Johannesburg":"ZAR"};function kl(){try{const s=Intl.DateTimeFormat().resolvedOptions().timeZone;if(s&&ja[s])return ja[s]}catch{}const e=(navigator.language||"en-US").replace("-","_"),n=Da[e];if(n)return n;const i=e.split("_")[0],r=Da[i];return r||"USD"}function Ni(t,e){const n=Lr[e]??Lr.USD,i=t*n,r=Math.round(i*100)/100;try{return new Intl.NumberFormat("en-US",{style:"currency",currency:e,minimumFractionDigits:0,maximumFractionDigits:r>=100||r%1===0?0:2}).format(r)}catch{return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:2}).format(t*Lr.USD)}}const pt="ccc_api_key_",At="ccc_session_api_key_",Ft="ccc_encryption_key",er="ccc_encryption_key_scope",By="ccc_keystore",ps="keys",tr="ccc_encryption_key_version";let Ua=null,gs=null,nr=!1,ms=!1,zu=!1;class vs extends Error{constructor(){super("Secure browser key storage is unavailable."),this.name="CredentialStorageUnavailableError"}}function qu(){if(zu)return;zu=!0;const t="Secure browser key storage is unavailable. Existing credentials were left untouched; new credentials will be available only in this tab session.";console.warn(t),document.body&&Ee(t,"warning")}function Ih(){return localStorage.getItem(tr)||""}function Ha(){return crypto.randomUUID?.()||Ch(crypto.getRandomValues(new Uint8Array(16)))}function Dy(){const t=Ih();if(t)return t;const e=Ha();return localStorage.setItem(tr,e),e}function li(){Ua=null,gs=null,nr=!1,ms=!1}window.addEventListener("storage",t=>{t.key===tr&&li()});function jy(){return new Promise((t,e)=>{const n=indexedDB.open(By,1);n.onupgradeneeded=()=>{const i=n.result;i.objectStoreNames.contains(ps)||i.createObjectStore(ps)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}async function Cl(t,e){const n=await jy();return new Promise((i,r)=>{const s=n.transaction(ps,t);let o;try{o=e(s.objectStore(ps))}catch(l){n.close(),r(l);return}let a;o.onsuccess=()=>{a=o.result},o.onerror=()=>r(o.error),s.oncomplete=()=>{n.close(),i(a)},s.onerror=()=>{n.close(),r(s.error||new Error("Encryption key transaction failed."))},s.onabort=()=>{n.close(),r(s.error||new Error("Encryption key transaction aborted."))}})}function Uy(t){return t instanceof CryptoKey&&t.algorithm?.name==="AES-GCM"&&t.extractable===!1&&t.usages.includes("encrypt")&&t.usages.includes("decrypt")}async function Hy(){const t=await Cl("readonly",e=>e.get(Ft));return Uy(t)?t:null}async function kh(t){await Cl("readwrite",e=>e.put(t,Ft))}async function Wy(){li();try{await Cl("readwrite",t=>t.delete(Ft))}catch(t){console.warn("Could not delete the stored encryption key:",t)}}async function zy(){const t=sessionStorage.getItem(Ft);if(!t)return null;const e=await crypto.subtle.importKey("jwk",JSON.parse(t),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await kh(e),sessionStorage.removeItem(Ft),sessionStorage.removeItem(er),localStorage.removeItem(pt+"salt"),e}async function Vu(t){const e=sessionStorage.getItem(Ft);if(e)return ms=sessionStorage.getItem(er)!=="session",crypto.subtle.importKey("jwk",JSON.parse(e),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);if(!t)throw new vs;const n=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),i=await crypto.subtle.exportKey("jwk",n);return sessionStorage.setItem(Ft,JSON.stringify(i)),sessionStorage.setItem(er,"session"),ms=!1,crypto.subtle.importKey("jwk",i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function qy(t){if(sessionStorage.getItem(er)==="session"&&sessionStorage.getItem(Ft))return qu(),nr=!0,Vu(t);try{const e=await Hy();if(e)return e;const n=await zy();if(n)return n;const i=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await kh(i),i}catch(e){return console.warn("IndexedDB encryption-key storage failed:",e),qu(),nr=!0,Vu(t)}}async function Al(t={}){const{allowSessionFallbackCreation:e=!0}=t,n=Dy();gs!==n&&li();const i=Ua||qy(e);Ua=i,gs=n;try{return await i}catch(r){throw li(),r}}async function Vy(t){const e=await Al(),n=gs,i=new TextEncoder,r=crypto.getRandomValues(new Uint8Array(12)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:r},e,i.encode(t)),o=new Uint8Array(r.length+s.byteLength);return o.set(r),o.set(new Uint8Array(s),r.length),{ciphertext:Ch(o),keyVersion:n,sessionFallback:nr}}async function Gy(t,e={}){const{isSessionCredential:n=!1}=e;try{const i=await Al({allowSessionFallbackCreation:!1});if(nr&&!n&&!ms)throw new vs;const r=Ky(t),s=r.slice(0,12),o=r.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},i,o);return new TextDecoder().decode(a)}catch(i){if(i instanceof vs)throw i;return console.error("Decryption failed:",i),null}}function Ch(t){const e=new Uint8Array(t);let n="";for(let i=0;i0}let Mn="",ci="",Wi=null,Ku=0,tt="not-configured";async function Pl(){sessionStorage.getItem(Ft)&&await Al(),Mn=await Te("flutterflow"),ci=await Te("flutterflow_project_id"),e0(),tn(),Mn?$l():(tt="not-configured",mt())}let _s=!1;function Ah(){const t=document.getElementById("api-keys-modal");Ge(t),Tl(),Mn&&Ml(Mn)}function Fl(){_s=!1,Ah()}function Jy(){_s=!0;const t=document.getElementById("walkthrough-modal");t&&Ke(t),Ah()}function Ph(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("api-keys-modal");e&&Ke(e);const n=_s;if(_s=!1,n){const i=document.getElementById("walkthrough-modal");i&&(tt==="connected"&&Rl(),Ge(i))}}let Xt=1;function Fh(){const t=document.querySelector(".wt-steps");return t?Array.from(t.querySelectorAll(".wt-step-card")):[]}function Ls(){const t=Fh();t.length&&t.forEach((e,n)=>{const i=n+1;e.classList.remove("wt-current","wt-done","wt-pending");const r=e.querySelector(".wt-step-num");i===Xt?(e.classList.add("wt-current"),r&&(r.textContent=i)):i0&&Xt<=t&&(Xt++,Ls())}function Zy(){const t=document.getElementById("walkthrough-modal");t&&(Xt=1,Ls(),Ge(t))}function Xy(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("walkthrough-modal");e&&Ke(e);const n=document.getElementById("walkthrough-dont-show");n&&n.checked&&localStorage.setItem("hasSeenWalkthrough","true")}function Rh(){if(q.isVerified&&Rt()&&ce.tier!=="free")return;if(!localStorage.getItem("hasSeenWalkthrough")){const e=document.getElementById("walkthrough-modal");e&&(Xt=1,Ls(),Ge(e))}}async function Tl(){const t=document.getElementById("flutterflow-api-key-input");Mn?(t.value="",t.placeholder="Key saved (enter new to replace)"):t.placeholder="Enter your FlutterFlow API key",Qy()}function Qy(){Yu("flutterflow","flutterflow-key-status"),Yu("flutterflow_project_id","flutterflow-project-status")}function Yu(t,e){const n=document.getElementById(e);if(!n)return;const i=n.querySelector(".key-status-dot"),r=n.querySelector("span");kt(t)?(i.className="key-status-dot configured",r.className="text-green-600",r.textContent="User key configured"):(i.className="key-status-dot missing",r.className="text-gray-500",r.textContent="Not configured")}function tn(){const t=y.step2Result&&y.step2Result.length>0,e=document.getElementById("btn-deploy-to-ff");e&&e.classList.toggle("hidden",!t)}function e0(){const t=document.getElementById("api-keys-status");if(!t)return;const e=t.querySelectorAll(".key-status-dot"),n=["flutterflow"];e.forEach((i,r)=>{const s=n[r];s==="flutterflow"?kt("flutterflow")&&kt("flutterflow_project_id")?(i.className="key-status-dot configured",i.title="FlutterFlow (Fully configured)"):kt("flutterflow")||kt("flutterflow_project_id")?(i.className="key-status-dot env",i.title="FlutterFlow (Partially configured)"):(i.className="key-status-dot missing",i.title="FlutterFlow (Not configured)"):kt(s)?(i.className="key-status-dot configured",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (User key)"):(i.className="key-status-dot missing",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (Not configured)")}),tn()}async function t0(){const t=document.getElementById("flutterflow-api-key-input"),e=document.getElementById("flutterflow-projects-select"),n=t.value.trim();n&&await Gu("flutterflow",n);const i=e?.value.trim()||"";if(i){if(!Ns(i)){Ee("The selected FlutterFlow project has an unexpected ID format.","error"),e.focus();return}await Gu("flutterflow_project_id",i)}await Pl(),n&&await $l(),Tl();const r=document.querySelector("#api-keys-modal .bg-blue-500"),s=r.textContent;r.textContent="Saved!",r.classList.remove("bg-blue-500","hover:bg-blue-600"),r.classList.add("bg-green-500"),setTimeout(()=>{r.textContent=s,r.classList.remove("bg-green-500"),r.classList.add("bg-blue-500","hover:bg-blue-600"),Ph()},1e3)}async function n0(){if(!confirm("Are you sure you want to clear all stored API keys?"))return;localStorage.setItem(tr,Ha()),li(),localStorage.removeItem(pt+"flutterflow"),localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow"),sessionStorage.removeItem(At+"flutterflow_project_id"),sessionStorage.removeItem(Ft),sessionStorage.removeItem(er),localStorage.removeItem(pt+"salt"),await Wy(),localStorage.setItem(tr,Ha()),localStorage.removeItem(pt+"flutterflow"),localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow"),sessionStorage.removeItem(At+"flutterflow_project_id"),await Pl();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML=''),Tl()}function Ns(t){return!t||t.trim().length<5||t.includes(" ")?!1:/^[a-zA-Z0-9-]+$/.test(t)}function mt(){const t=document.getElementById("acct-ff-dot"),e=document.getElementById("acct-ff-status"),n=document.getElementById("acct-ff-endpoint"),i=document.getElementById("acct-ff-project");if(n){const o=_t();n.textContent=o.includes("staging")?"Staging":"Production"}if(i&&(i.textContent=ci||"—"),!e)return;let r,s;if(!kt("flutterflow"))r="Not connected — add your FlutterFlow API key",s="";else switch(tt){case"connected":r="Connected to FlutterFlow",s="ok";break;case"no-projects":r="Key accepted — no projects found",s="warn";break;case"unauthorized":r="API key rejected (401/403) — re-enter your key",s="bad";break;case"network-error":r="Could not reach FlutterFlow — check your network",s="bad";break;default:r="Checking connection…",s="warn";break}e.textContent=r,t&&(t.className=`acct-dot${s?" "+s:""}`)}async function $l(){const t=await Te("flutterflow");if(!t||!kt("flutterflow"))return tt="not-configured",mt(),null;tt="validating",mt();try{const n=await new fi(t,"","main",_t()).listProjects();return tt=n&&n.length>0?"connected":"no-projects",mt(),n}catch(e){const n=String(e&&e.message||"");return tt=/(401|403)|denied|unauthorized|scoped|list permission/i.test(n)?"unauthorized":"network-error",mt(),null}}function i0(){ci="",localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow_project_id")}function r0(){i0();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML='',t.value=""),kt("flutterflow")?(tt="validating",Ml(Mn)):tt="not-configured",mt()}function s0(t,e){const n=document.getElementById(t);n&&(n.value?e?n.style.borderColor="#22c55e":n.style.borderColor="#ef4444":n.style.borderColor="")}function o0(){const t=document.getElementById("flutterflow-api-key-input");t&&(t.addEventListener("input",e=>{const n=e.target.value.trim().length>0;s0("flutterflow-api-key-input",n)}),t.addEventListener("blur",a0(async e=>{const n=e.target.value.trim();n&&await Ml(n)},500)))}function a0(t,e){let n;return function(...r){const s=()=>{clearTimeout(n),t(...r)};clearTimeout(n),n=setTimeout(s,e)}}async function Ml(t){const e=document.getElementById("flutterflow-projects-select"),n=document.getElementById("flutterflow-projects-error");if(!e){console.error("Projects dropdown element not found");return}e.innerHTML='',n&&n.classList.add("hidden"),(kt("flutterflow")||t)&&(tt="validating"),mt();try{const r=await new fi(t,"","main",_t()).listProjects();if(!r||r.length===0){tt="no-projects",mt(),e.innerHTML='';return}tt="connected",mt(),e.innerHTML='',r.forEach(s=>{const o=document.createElement("option");o.value=s.id||s.projectId||"",o.textContent=s.name||s.projectName||`Project ${s.id}`,e.appendChild(o)}),ci&&(e.value=ci)}catch(i){console.error("Failed to fetch projects:",i);const r=String(i&&i.message||"");tt=/(401|403)|denied|unauthorized|scoped|list permission/i.test(r)?"unauthorized":"network-error",mt(),e.innerHTML='',n&&(n.textContent=`Failed to load projects: ${i.message}`,n.classList.remove("hidden"))}}function l0(t){const e=document.getElementById(t),i=e.nextElementSibling.querySelector("svg");e.type==="password"?(e.type="text",i.innerHTML=` - - `):(e.type="password",i.innerHTML=` - - - `)}let y={step1Result:null,step2Result:null,step3Result:null,bundleSpec:null,artifactBundle:null,bundleReview:null,selectedArtifactId:null,resultsViewMode:"summary",currentStep:0,isRunning:!1,runId:0,submittedPrompt:"",submittedImages:[]};function c0(){y.step1Result=null,y.step2Result=null,y.step3Result=null,y.bundleSpec=null,y.artifactBundle=null,y.bundleReview=null,y.selectedArtifactId=null,y.resultsViewMode="summary"}function u0(){y.bundleSpec=Xi(y.step1Result,{artifactType:"CustomWidget",artifactName:"GeneratedWidget"})}function Os(){const t=si(y.bundleSpec);y.artifactBundle=Xi(y.step2Result,{id:y.bundleSpec?.id,title:y.bundleSpec?.title,description:y.bundleSpec?.description,artifactType:t.artifactType,artifactName:t.artifactName,fileName:t.fileName,dependencies:t.dependencies,relationships:y.bundleSpec?.relationships,code:y.step2Result||""});const e=Nv(y.artifactBundle);y.artifactBundle={...y.artifactBundle,warnings:[...y.artifactBundle.warnings,...e.findings.map(n=>n.message)],metadata:{...y.artifactBundle.metadata,compatibility:e}},y.selectedArtifactId=si(y.artifactBundle).id}function Bs(){const t=Xi(y.step3Result,{id:y.artifactBundle?.id,title:y.artifactBundle?.title}),e=new Map(t.artifacts.map(i=>[i.id,i.review])),n=new Map(t.artifacts.filter(i=>{const r=i.review;return r&&typeof r.fixedSource=="string"&&r.fixedSource.trim()}).map(i=>[i.id,i.review.fixedSource.trim()]));y.bundleReview=Xi({id:y.artifactBundle?.id,title:y.artifactBundle?.title,artifacts:y.artifactBundle?.artifacts?.map(i=>{const r=n.get(i.id)||null;return{...i,review:e.get(i.id)||i.review||y.step3Result||null,...r?{fixedCode:r}:{}}})||[],relationships:y.artifactBundle?.relationships,warnings:y.artifactBundle?.warnings})}function Th(){const t=Ll();return{artifactType:t.artifactType||"CustomWidget",artifactName:t.artifactName||"GeneratedWidget",fileName:t.fileName||""}}function Ll(){const t=y.artifactBundle||y.bundleSpec||null;return(Array.isArray(t?.artifacts)?t.artifacts:[]).find(n=>n.id===y.selectedArtifactId)||si(t)}function Nl(){return Ll().code||y.step2Result||""}async function d0(){try{await Pl()}catch(t){return console.error("checkConnection: initializeApiKeys failed:",t),!1}return!0}const Nr={production:"https://api.flutterflow.io/v2/",staging:"https://api.flutterflow.io/v2-staging/"};function f0(t,e){const n=e?.trim()?` (${e.trim().slice(0,200)})`:"";return t===401?`Your FlutterFlow API key was rejected (401 Unauthorized)${n}. Re-enter a current key under API Keys settings, then try again.`:`Listing FlutterFlow projects was denied (403)${n}. The key may be scoped to sync a single project without list permission - verify the key's access in FlutterFlow, re-enter it under API Keys settings, then retry.`}class fi{constructor(e,n,i="main",r=Nr.production){this.apiKey=e,this.baseUrl=r,this._projectId=n,this._branchName=i,this._endpoint=r}get projectId(){return this._projectId}get branchName(){return this._branchName==="main"?"":this._branchName}async exportProjectZip(){console.log(`Exporting code from FlutterFlow project: ${this.projectId}, branch: ${this.branchName||"main"}`);const e=[{project:{path:`projects/${this.projectId}`},...this.branchName?{branch_name:this.branchName}:{},export_as_module:!1,include_assets_map:!1,format:!1,export_as_debug:!1},{project_id:this.projectId,branch_name:this.branchName,include_assets:!1,export_as_module:!1}];let n=null;for(const i of e)try{const r=await fetch(`${this.baseUrl}exportCode`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(i)});if(!r.ok){const a=await r.text();n=new Error(`Export failed: ${r.status} - ${a}`);continue}const s=await r.json(),o=s?.value?.project_zip||s?.project_zip;if(!o){n=new Error("Export response did not include project source.");continue}return o}catch(r){n=r}throw n||new Error("Export failed for an unknown reason.")}async fetchProjectSource(){const e=await this.exportProjectZip(),n=await JSZip.loadAsync(e,{base64:!0}),i=Object.keys(n.files).filter(a=>!n.files[a].dir&&(a==="pubspec.yaml"||a.endsWith("/pubspec.yaml"))).sort((a,l)=>a.split("/").length-l.split("/").length)[0];if(!i)throw new Error("Export did not contain a pubspec.yaml.");const r=i.slice(0,i.length-12),s=new Map,o=Object.keys(n.files).filter(a=>{if(n.files[a].dir||!a.startsWith(r))return!1;const l=a.slice(r.length);return l==="lib/flutter_flow/custom_functions.dart"||l.startsWith("lib/custom_code/")&&l.endsWith(".dart")});return await Promise.all(o.map(async a=>{s.set(a.slice(r.length),await n.files[a].async("string"))})),{pubspecYaml:await n.files[i].async("string"),files:s}}async pushCodeWithRetry(e,n=3){const i=[Nr.production,Nr.staging],r=Math.max(0,i.indexOf(this._endpoint));for(let s=0;ssetTimeout(d,1e3*(s+1)));continue}return l}catch(l){console.warn(`Push to ${a} failed: ${l.message}, trying next...`),await new Promise(u=>setTimeout(u,1e3*(s+1)))}}throw new Error("All API endpoints failed after retries")}async pushCode(e){return this.pushCodeWithRetry(e)}parseProjectsResponse(e){if(e?.success&&typeof e.value=="string")try{const i=JSON.parse(e.value);if(i&&Array.isArray(i.entries))return i.entries.map(r=>({id:r.id,name:r.project?.name||r.id}))}catch(i){console.error("Failed to parse stringified project value:",i)}const n=e?.projects||e?.items||e?.entries||(Array.isArray(e)?e:[]);return Array.isArray(n)?n:[]}async listProjects(){console.log("Listing projects for API key");const e=[`${this.baseUrl}listProjects`,"https://api.flutterflow.io/v2/l/listProjects"];let n=0,i="";for(const r of e){const s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({project_type:"ALL",deserialize_response:!0})});if(s.ok)return r!==e[0]&&console.log(`listProjects answered on legacy path ${r}`),this.parseProjectsResponse(await s.json());if(n=s.status,i=await s.text(),console.warn(`listProjects via ${r} returned ${n}: ${i}`),s.status===401||s.status===403)throw new Error(f0(s.status,i));if(s.status!==404)throw new Error(`List projects failed: ${s.status} - ${i}`)}throw new Error(`List projects failed: ${n} - ${i}`)}}async function Ol(t){const e=t.clone();let n;try{n=await t.json()}catch{const s=await e.text();if(!t.ok)return{success:!1,responseCode:t.status,errorMessage:s||`HTTP ${t.status}`,errorMap:new Map};throw new Error(`Invalid JSON response: ${s}`)}if(!t.ok){let r=n.message||`HTTP ${t.status}`,s=new Map;if(n.errors)s=new Map(Object.entries(n.errors));else if(!n.message&&typeof n=="object"){const o=Object.keys(n).filter(a=>a.endsWith(".dart")&&Array.isArray(n[a]));o.length>0&&(s=new Map(Object.entries(n)),r=o.flatMap(l=>n[l].map(u=>`${l}: ${u.errorMessage}`)).join(` -`)||`HTTP ${t.status}`)}return{success:!1,responseCode:t.status,errorMessage:r,errorMap:s}}let i={};if(n.value)try{i=typeof n.value=="string"?JSON.parse(n.value):n.value}catch(r){console.warn("Ignoring malformed push response value:",r)}return{success:!0,responseCode:t.status,errorMap:new Map(Object.entries(i))}}function Bl(t,e){return{401:"Authentication failed. Please check your FlutterFlow API key.",403:"Access denied. You may not have permission to modify this project.",404:"Project not found. Please check your Project ID.",409:"Conflict detected. The project may have been modified elsewhere.",422:"Validation failed: Invalid request format",429:"Rate limit exceeded. Please try again in a few minutes.",500:"FlutterFlow server error. Please try again later.",503:"FlutterFlow service temporarily unavailable."}[t]||`FlutterFlow API error: ${`HTTP ${t}`}`}const J={ACTION:"A",WIDGET:"W",FUNCTION:"F",CODE_FILE:"C",DEPENDENCIES:"D",OTHER:"O"},$h=/class\s+\w+\s+extends\s+(?:StatelessWidget|StatefulWidget)\b/,Mh=/extends\s+State<\w+>/;function h0(t,e=""){if(t==="pubspec.yaml")return J.DEPENDENCIES;if(!t.endsWith(".dart")||t.endsWith("index.dart"))return J.OTHER;if(t==="custom_functions.dart")return J.FUNCTION;if(e){const n=$h.test(e),i=Mh.test(e);if(n||i)return J.WIDGET;if(/^\s*Future(?:<[^>]+>)?\s+\w+\s*\(/m.test(e))return J.ACTION;if(e.match(/^\s*(String|int|double|bool|List|Map|dynamic|void)\s+\w+\s*\(/m))return J.FUNCTION}return J.CODE_FILE}function Lh(t,e){switch(e){case J.ACTION:return`lib/custom_code/actions/${t}`;case J.WIDGET:return`lib/custom_code/widgets/${t}`;case J.FUNCTION:return"lib/flutter_flow/custom_functions.dart";case J.CODE_FILE:return`lib/custom_code/${t}`;case J.DEPENDENCIES:return"pubspec.yaml";case J.OTHER:return`lib/custom_code/${t}`;default:return t}}async function Dl(t,e=new Map){return _v(t,e)}const Wa=new Map;function Nh(t){return`${t.baseUrl}|${t.projectId}|${t.branchName}`}function Ds(t){Wa.delete(Nh(t))}class ys extends Error{constructor(e){super(e),this.name="UnconfirmedDeployError",this.outcome=Xe.UNCONFIRMED}}function p0(t,e,n){return new Promise((i,r)=>{let s=!1;const o=(l,u,c)=>{s||(s=!0,c==="resolve"?i(u):r(u))},a=setTimeout(()=>{s||(s=!0,n(i,r))},e);t.then(l=>{clearTimeout(a),o(i,l,"resolve")},l=>{clearTimeout(a),o(r,l,"reject")})})}async function jl(t,e,n,i,r=""){const s=Jv(e,n);if(s.length===0)return{remoteFiles:n,syncFileMap:e,unverified:[],approximate:[]};const o=H_(s,r),a={...o.manifest,sources:o.sources},l=o.skipped.map(f=>f.reason);l.forEach(f=>console.warn(`[custom class deploy] ${f}`));const u=o.approximate;u.forEach(f=>console.warn(`[custom class deploy] ${f}`)),console.log(`Provisioning ${s.length} new FlutterFlow custom code file(s) before sync.`),Oe.set("provision");const c=await fetch(yy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.apiKey,projectId:t.projectId,baseUrl:t.baseUrl,commitMessage:i,customClasses:s,verification:a,stream:!0})}),d=await p0(q_(c,{onPhase:f=>Oe.setSubstatus(f),onLog:f=>console.log(`[custom class deploy] ${f}`)}),z_,(f,h)=>h(new ys("The deploy is still working on the FlutterFlow server, but this browser tab has stopped waiting. Your custom classes may or may not have been written — the outcome is not yet known. Open your FlutterFlow project to reconcile before retrying the deploy.")));if(!d.finalResultReceived)throw V_(d)===Xe.FAILED?new Error(d.error||`FlutterFlow custom class provisioning failed (HTTP ${d.httpStatus}).`):new ys("The connection to the FlutterFlow deploy runner dropped before it reported a result. The deploy may still be finishing on the server; open your FlutterFlow project to reconcile before retrying.");if(!d.success){const f=d.details?` ${d.details}`:"";throw new Error(`${d.error||"FlutterFlow custom class provisioning failed."}${f}`)}return Ds(t),d.verificationSkipped&&(console.warn(`[custom class deploy] ${d.verificationSkipped}`),l.push(d.verificationSkipped)),{remoteFiles:n,syncFileMap:Zv(e,s),unverified:l,approximate:u,provisionSucceeded:!0}}async function Ul(t,e={}){const n=Nh(t);let i=Wa.get(n);if(i===void 0){try{i=await t.fetchProjectSource()}catch(l){throw new Error(`Could not read your project's pubspec.yaml (${l.message}). Deploy was stopped so your existing package dependencies aren't overwritten. Check your FlutterFlow API key and project, then try again.`)}const a=dh(i.pubspecYaml);if(!a.valid)throw new Error(`Your project's pubspec.yaml could not be read reliably (${a.errors.join("; ")}). Deploy was stopped so your existing package dependencies aren't overwritten.`);Wa.set(n,i)}const r=await ly(i.pubspecYaml,e),s=O_(i.pubspecYaml,r.overrides),o=N_(s.yaml,r.additions);return r.warnings.forEach(a=>console.warn(`[pubspec] ${a}`)),o.added.length>0&&console.log("Adding dependencies:",o.added.map(a=>`${a}: ${r.additions[a]||"any"}`).join(", "),r.sdk.dartSdkFloor?`(resolved for Dart ${r.sdk.dartSdkFloor})`:""),r.kept.forEach(({name:a,constraint:l})=>console.log(`Keeping your existing ${a}: ${l||"(non-version source)"}`)),{...o,overridden:s.overridden,warnings:r.warnings,remoteFiles:i.files}}function g0(t){const e=[],n=[];t.content.length>5e4&&n.push("Code file is large (>50KB). This may take longer to commit."),t.content.length>1e5&&e.push("Code file is too large (>100KB). Consider splitting into smaller components.");const i=t.content.split(` -`).length;i>500&&n.push(`Code has ${i} lines. Consider breaking it into smaller widgets.`),t.content.includes("setState")&&t.codeType===J.ACTION&&n.push("Using setState in a Custom Action may not work as expected. Consider using a Custom Widget."),t.content.includes("dynamic")&&!t.content.includes("?")&&n.push('Code uses "dynamic" types. Consider adding explicit types for better null safety.'),t.content.match(/Color\(0xFF[0-9A-Fa-f]{6}\)/)&&n.push("Code contains hardcoded colors. Consider using FlutterFlowTheme.of(context) for theme consistency.");const r=t.content.match(/print\s*\(/g);r&&r.length>3&&n.push(`Code contains ${r.length} print statements. Consider removing debug prints before committing.`);const s=g_(t.content);if(s&&e.push(`FlutterFlow cannot format this code - ${s}. Fix or regenerate before committing.`),t.codeType===J.WIDGET){const o=nh(t.content),a=f_(t.fileName);if(o.length===0)e.push("No public widget class found (must extend StatelessWidget or StatefulWidget).");else if(!o.includes(a)){const l=`${ih(o[0])}`;e.push(`Widget class name "${o[0]}" does not match the file name "${t.fileName}". FlutterFlow derives the widget from the file name, so it will report "No widget ${a} found". Rename the file to "${l}" or the class to match before committing.`)}}return{canProceed:e.length===0,issues:e,warnings:n}}function Oh(t,e={}){const{artifactType:n="CustomWidget",artifactName:i="GeneratedCode",fileName:r}=e,s=u_(t);let o=r||i;if(n==="CustomFunction")o="custom_functions.dart";else if(n==="CustomWidget"){const u=nh(s)[0],c=u?ih(u):null;c&&o!==c?(console.warn(`Commit file name "${o}" does not match declared widget class "${u}"; renaming to "${c}" so FlutterFlow can find the widget.`),o=c):o.endsWith(".dart")||(o+=".dart")}else o.endsWith(".dart")||(o+=".dart");let a=J.CODE_FILE;switch(n){case"CustomAction":a=J.ACTION;break;case"CustomWidget":a=J.WIDGET;break;case"CustomFunction":a=J.FUNCTION;break;case"CustomClass":case"CodeFile":a=J.CODE_FILE;break}let l="";return a===J.WIDGET?l=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom widget code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:a===J.ACTION?l=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom action code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:a===J.FUNCTION&&(l=`// Automatic FlutterFlow imports -import 'dart:convert'; -import 'dart:math' as math; - -import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:intl/intl.dart'; -import 'package:timeago/timeago.dart' as timeago; -import '/flutter_flow/lat_lng.dart'; -import '/flutter_flow/place.dart'; -import '/flutter_flow/uploaded_file.dart'; - -`),{content:Dv(s,l),fileName:o,codeType:a,artifactType:n,artifactName:i}}function m0(t){const e={};for(const n of wl(t))e[n]="";return e}function v0(t,e={}){return{timestamp:new Date().toISOString(),artifactType:t.artifactType,artifactName:t.artifactName,codeType:t.codeType,fileName:t.fileName,generatedFrom:e.step1Result?"pipeline":"direct",model:e.selectedModel||"unknown",codeSize:t.content.length}}function _0(t,e,n,i=new Set,r=""){const s=[],o=$h.test(e),a=Mh.test(e);return n===J.WIDGET&&!o&&!a&&s.push("No widget class definition found (must extend StatelessWidget or StatefulWidget)"),{valid:s.length===0,errors:s}}function js(t){const e=[],n=[];if(!t||t.size===0)return e.push("No files to commit"),{valid:!1,errors:e,warnings:n};const i=new Set(Array.from(t.values()).flatMap(r=>Cs(r.content||"")));for(const[r,s]of t.entries()){if((!s.content||s.content.trim().length===0)&&e.push(`File ${r} is empty`),s.content&&s.content.length>1e5&&n.push(`File ${r} is very large (>100KB)`),r.endsWith(".dart")){const o=_0(r,s.content,s.type,i,s.artifactName);o.valid||e.push(...o.errors.map(a=>`${r}: ${a}`))}if(r==="pubspec.yaml"){const o=dh(s.content);o.valid||e.push(...o.errors)}}return{valid:e.length===0,errors:e,warnings:n}}const ee={IDLE:"IDLE",PREPARING:"PREPARING",VALIDATING:"VALIDATING",PUSHING:"PUSHING",SUCCESS:"SUCCESS",ERROR:"ERROR"},Y={currentState:ee.IDLE,startTime:null,endTime:null,error:null,result:null,filesProcessed:0,totalFiles:0,reset(){this.currentState=ee.IDLE,this.startTime=null,this.endTime=null,this.error=null,this.result=null,this.filesProcessed=0,this.totalFiles=0},setState(t){if(!Object.values(ee).includes(t)){console.error(`Invalid commit state: ${t}`);return}this.currentState=t,t===ee.PREPARING&&(this.startTime=Date.now()),(t===ee.SUCCESS||t===ee.ERROR)&&(this.endTime=Date.now()),typeof window<"u"&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("commitStateChange",{detail:{state:t,commitState:this}})),console.log(`Commit state changed to: ${t}`)},setError(t){this.error=t,this.setState(ee.ERROR)},setSuccess(t){this.result=t,this.setState(ee.SUCCESS)},setProgress(t,e){this.filesProcessed=t,this.totalFiles=e},getElapsedTime(){return this.startTime?(this.endTime||Date.now())-this.startTime:null},isInProgress(){return this.currentState===ee.PREPARING||this.currentState===ee.VALIDATING||this.currentState===ee.PUSHING}};async function y0(t,e,n={}){let{codeType:i="W"}=n;const{pubspecDeps:r={},artifactName:s=e}=n;i==="CustomWidget"&&(i=J.WIDGET),i==="CustomAction"&&(i=J.ACTION),i==="CustomFunction"&&(i=J.FUNCTION),i==="CustomClass"&&(i=J.CODE_FILE),i==="CodeFile"&&(i=J.CODE_FILE),Y.reset(),Y.setState(ee.PREPARING);try{const o=await Te("flutterflow"),a=await Te("flutterflow_project_id");if(!o||!a)throw new Error("FlutterFlow credentials not configured. Please set your API key and Project ID in the API Keys settings.");if(!Ns(a))throw new Error("Invalid FlutterFlow Project ID format.");const l=_t(),u=new fi(o,a,"main",l);Y.setState(ee.VALIDATING);const c=new Map,d=i||h0(e,t),f=Lh(e,d);c.set(e,{artifactName:s,content:t,type:d,path:f}),Y.setProgress(0,c.size);const h=js(c);if(!h.valid)throw new Error(`Validation failed: -${h.errors.join(` -`)}`);const p=await Ul(u,r),g=p.yaml,m=await jl(u,c,p.remoteFiles,`Provision ${s} custom class`,g),v=await Dl(m.syncFileMap,m.remoteFiles),S=new Map(m.syncFileMap);S.set("pubspec.yaml",{content:g,type:"D",path:"pubspec.yaml"}),Oe.set("package");const b=await Hl(S),_={project_id:a,zipped_custom_code:b,uid:`web_${Date.now()}`,branch_name:u.branchName,serialized_yaml:g,file_map:v.fileMapContents,functions_map:v.functionsMapContents};Y.setState(ee.PUSHING),Y.setProgress(1,c.size),Ds(u),Oe.set("push");const x=await u.pushCode(_),I=await Ol(x);if(I.success)Y.setSuccess({fileCount:c.size,projectId:a,warnings:I.errorMap&&I.errorMap.size>0?Array.from(I.errorMap.entries()):[]});else{const T=I.errorMessage||Bl(I.responseCode);throw new Error(T)}return{success:!0,message:`Successfully committed ${e} to FlutterFlow project ${a}`,addedDependencies:p.added,unverified:m.unverified,approximate:m.approximate,warnings:I.errorMap?Array.from(I.errorMap.entries()):[]}}catch(o){return console.error("Commit failed:",o),Y.setError(o),{success:!1,error:o.message,state:Y.currentState}}}async function Hl(t){const e=new JSZip;for(const[n,i]of t.entries())e.file(n,i.content);return e.generateAsync({type:"base64",compression:"DEFLATE",compressionOptions:{level:6}})}async function w0(t,e={}){const{artifactType:n,artifactName:i,fileName:r,pipelineResult:s}=e;console.log(`Starting commit for ${i} (${n})`);let o=!1;const a={projectId:null,endpoint:_t(),artifactType:n,artifactName:i,fileName:r};try{Y.setState(ee.PREPARING);const l=Oh(t,{artifactType:n,artifactName:i,fileName:r}),u=m0(l.content);console.log("Detected dependencies:",u),Y.setState(ee.VALIDATING);const c=await Te("flutterflow"),d=Wi||await Te("flutterflow_project_id");if(!c)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!d)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ns(d))throw new Error("Invalid FlutterFlow Project ID format.");const f=new Map;f.set(l.fileName,{artifactName:i,content:l.content,type:l.codeType,path:Lh(l.fileName,l.codeType),functionName:l.codeType===J.FUNCTION?i:void 0}),Y.setProgress(0,f.size);const h=js(f);if(!h.valid)throw new Error(`File validation failed: -${h.errors.join(` -`)}`);h.warnings.length>0&&console.warn("Validation warnings:",h.warnings),Y.setState(ee.PUSHING);const p=_t(),g=new fi(c,d,"main",p),m=await Ul(g,u),v=m.yaml,S=await jl(g,f,m.remoteFiles,`Provision ${i} custom class`,v);a.projectId=d,o=S.provisionSucceeded===!0;const b=await Dl(S.syncFileMap,S.remoteFiles),_=new Map(S.syncFileMap);_.set("pubspec.yaml",{content:v,type:J.DEPENDENCIES,path:"pubspec.yaml"}),Oe.set("package");const x=await Hl(_),I={project_id:d,zipped_custom_code:x,uid:`web_${Date.now()}`,branch_name:g.branchName,serialized_yaml:v,file_map:b.fileMapContents,functions_map:b.functionsMapContents};Y.setProgress(1,f.size),Ds(g),Oe.set("push");const T=await g.pushCode(I),E=await Ol(T);if(E.success){const P={...v0(l,s),projectId:d};return Y.setSuccess({...P,fileCount:f.size,warnings:E.errorMap?Array.from(E.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${l.fileName} to FlutterFlow`,metadata:P,targetIdentity:a,addedDependencies:m.added,unverified:S.unverified,approximate:S.approximate,warnings:E.errorMap?Array.from(E.errorMap.entries()):[],elapsedTime:Y.getElapsedTime()}}else{const P=E.errorMessage||Bl(E.responseCode),$=new Error(P);throw $.errorMap=E.errorMap,$}}catch(l){console.error("Commit execution failed:",l),Y.setError(l);let u=new Map;if(l.errorMap)u=l.errorMap;else if(l.message&&l.message.includes("{"))try{const c=l.message.match(/\{[\s\S]*\}/);if(c){const d=JSON.parse(c[0]);u=new Map(Object.entries(d))}}catch(c){console.warn("Failed to parse error map from commit response:",c)}return l instanceof ys?{success:!1,unconfirmed:!0,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:o?{success:!1,partial:!0,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:{success:!1,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}}}async function b0(t,e={}){const{pipelineResult:n}=e;let i=!1;const r={projectId:null,endpoint:_t(),artifactType:"Bundle",artifactName:t?.title,fileName:t?.fileEntries?`${t.fileEntries.length} artifacts`:"bundle"};try{if(Y.setState(ee.PREPARING),t.errors?.length>0)throw new Error(`Bundle validation failed: -${t.errors.join(` -`)}`);const s=new Map(t.fileEntries.map(I=>[I.fileName,{artifactId:I.artifactId,artifactName:I.artifactName,content:I.content,type:I.type,path:I.path,functionName:I.type===J.FUNCTION?I.artifactName:void 0}]));Y.setProgress(0,s.size);const o=js(s);if(!o.valid)throw new Error(`File validation failed: -${o.errors.join(` -`)}`);Y.setState(ee.VALIDATING);const a=await Te("flutterflow"),l=Wi||await Te("flutterflow_project_id");if(!a)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!l)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ns(l))throw new Error("Invalid FlutterFlow Project ID format.");Y.setState(ee.PUSHING);const u=_t(),c=new fi(a,l,"main",u),d=await Ul(c,t.dependencies),f=d.yaml,h=await jl(c,s,d.remoteFiles,`Provision ${t.title} custom classes`,f);r.projectId=l,i=h.provisionSucceeded===!0;const p=await Dl(h.syncFileMap,h.remoteFiles),g=new Map(h.syncFileMap);g.set("pubspec.yaml",{content:f,type:J.DEPENDENCIES,path:"pubspec.yaml"}),Oe.set("package");const m=await Hl(g),v={project_id:l,zipped_custom_code:m,uid:`web_${Date.now()}`,branch_name:c.branchName,serialized_yaml:f,file_map:p.fileMapContents,functions_map:p.functionsMapContents};Y.setProgress(1,s.size),Ds(c),Oe.set("push");const S=await c.pushCode(v),b=await Ol(S);if(b.success){const I={...n,artifactType:"Bundle",artifactName:t.title,fileName:`${t.fileEntries.length} artifacts`,codeSize:t.fileEntries.reduce((T,E)=>T+E.content.length,0),projectId:l};return Y.setSuccess({...I,fileCount:s.size,warnings:b.errorMap?Array.from(b.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${t.fileEntries.length} artifacts to FlutterFlow`,metadata:I,targetIdentity:r,addedDependencies:d.added,unverified:h.unverified,approximate:h.approximate,warnings:b.errorMap?Array.from(b.errorMap.entries()):[],elapsedTime:Y.getElapsedTime()}}const _=b.errorMessage||Bl(b.responseCode),x=new Error(_);throw x.errorMap=b.errorMap,x}catch(s){console.error("Bundle commit execution failed:",s),Y.setError(s);const o=s.errorMap||new Map;return s instanceof ys?{success:!1,unconfirmed:!0,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:i?{success:!1,partial:!0,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:{success:!1,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}}}async function E0(t,e=[]){const n=ml("architect");try{return await Es("architect",Sh,ov(t),n,e)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Prompt Architect failed: ${i.message}`)}}async function Us(t,e,n=[],i){const r=av(t),s=ml("generator",y.bundleSpec);try{return await Es("generator",e,r,s,n)}catch(o){if(o.isModelArmor||o.isUsageLimit||o.isPipelineCancel)throw o;if(e!==Sr){console.warn(`Code Generator failed with ${e}, retrying with fallback model:`,o.message),Cw(e,Sr,i);try{return await Es("generator",Sr,r,s,n)}catch(a){throw a.isModelArmor||a.isUsageLimit||a.isPipelineCancel?a:new Error(`Code Generator failed: primary (${e}): ${o.message} | fallback (${Sr}): ${a.message}`)}}throw new Error(`Code Generator failed: ${o.message}`)}}async function Hs(t,e=null){const n={...ml("review",y.artifactBundle||y.bundleSpec),architect_output:e};try{return await Es("review",xh,lv(t),n)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Code Review failed: ${i.message}`)}}function ws(t,e){const n=document.getElementById(`step${t}-item`),i=document.getElementById(`step${t}-status`);!n||!i||(n.classList.remove("active","completed","error"),i.classList.remove("running","completed","error"),e==="active"?(n.classList.add("active"),i.classList.add("running"),i.innerHTML=` - - `):e==="completed"?(n.classList.add("completed"),i.classList.add("completed"),i.innerHTML=` - - `):e==="error"?(n.classList.add("error"),i.classList.add("error"),i.innerHTML=` - - `):i.innerHTML=` - - `)}function Ae(t,e){const n=document.getElementById(`step${t}-loading`),i=document.getElementById(`step${t}-result`);e?(n.classList.remove("hidden"),i.classList.add("hidden"),ws(t,"active")):(n.classList.add("hidden"),i.classList.remove("hidden"),ws(t,"completed"))}function S0(t){const e=document.getElementById(`${t}-content`),n=document.getElementById(`${t}-chevron`);e.classList.contains("open")?(e.classList.remove("open"),n&&(n.style.transform="rotate(0deg)")):(e.classList.add("open"),n&&(n.style.transform="rotate(180deg)"))}function x0(t){nt(parseInt(t.replace("step","")))}function nt(t){for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-item`);a&&a.classList.remove("active")}const e=document.getElementById(`step${t}-item`);e&&e.classList.add("active"),Ln();const n=document.getElementById("ready-state");n&&n.classList.add("hidden");for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-content`);a&&a.classList.add("hidden")}const i=document.getElementById(`step${t}-content`);i&&i.classList.remove("hidden");const r=document.getElementById("stage-title"),s={1:"Prompt Architect",2:"Code Generator",3:"Code Review"};r&&(r.textContent=s[t]||"Active Workflow Stage")}function I0(t){const e=document.getElementById(t);if(!e)return;const n=e.dataset.raw||e.textContent;navigator.clipboard.writeText(n).then(()=>{const r=e.closest(".code-container")?.querySelector(".copy-btn");r&&(r.classList.add("copied"),r.innerHTML=' Copied!',setTimeout(()=>{r.classList.remove("copied"),r.innerHTML=' Copy'},2e3))}).catch(i=>{console.warn("Failed to copy to clipboard:",i)})}function za(t){const e=qa(t);console.log(`Step 1 (Prompt Architect): ${on(Sh)}`),console.log(e!==t?`Step 2 (Code Generator): ${on(t)} → ${on(e)} (Free Tier fallback)`:`Step 2 (Code Generator): ${on(t)}`),console.log(`Step 3 (Code Review): ${on(xh)}`)}function Bh(){return{step1Result:y.step1Result,step2Result:y.step2Result,step3Result:y.step3Result,artifactBundle:y.artifactBundle,bundleReview:y.bundleReview,selectedArtifactId:y.selectedArtifactId}}function k0(t){if(!t)return;Object.assign(y,t),new Set((y.artifactBundle?.artifacts||[]).map(n=>n.id)).has(y.selectedArtifactId)||(y.selectedArtifactId=si(y.artifactBundle)?.id||null)}const Dh="results-replacement-error";function C0(t,{stage:e=2,runId:n,retry:i}){if(!re(n))return;const r=document.getElementById(Dh);if(!r)return;const s=gh(t),o=document.getElementById("results-replacement-error-title"),a=document.getElementById("results-replacement-error-message"),l=document.getElementById("results-replacement-error-retry"),u=document.getElementById("results-replacement-error-upgrade");o&&(o.textContent=`${Vs[e]||"Regeneration"}: ${s.title}`),a&&(a.textContent=s.message),r.hidden=!1;let c=null;u&&(u.hidden=!s.canUpgrade,s.canUpgrade&&(u.textContent="View plans",u.onclick=()=>ui(),c=u)),l&&(l.hidden=s.canUpgrade,s.canUpgrade||(l.onclick=()=>{Wl(),typeof i=="function"&&i()},l.textContent="Retry",c=l)),(c||r).focus({preventScroll:!0})}function Wl(){const t=document.getElementById(Dh);t&&(t.hidden=!0)}function jh(t,{previous:e,stage:n,runId:i,retry:r}){re(i)&&(t.isUsageLimit&&cn(),k0(e),or(),en(!0),ar(),eo(),C0(t,{stage:n,runId:i,retry:r}),tn())}async function Uh(){if(console.log("runRefinement called"),y.isRunning)return;const t=document.getElementById("code-generator-model").value;y.isRunning=!0;const e=Gs();zl("standardRegenerate",y.step2Result,y.step1Result);const n=document.querySelectorAll(".btn-refine-action"),i=Bh();n.forEach(r=>{r.disabled=!0,r.innerHTML=` - - - Refining...`});try{Wl();const r=Ll(),s=r.id,o=cv({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,artifactId:r.id,userFeedback:"Fix the issues listed in the audit report."});Zs({runId:e}),Pt(2,e),nt(2),Ae(2,!0);const a=await Us(o,t,[],e);if(!re(e))return;y.step2Result=a,Os(),Qt(2,e);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,e),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(e))return;y.step3Result=c,Bs(),Qt(3,e),y.artifactBundle?.artifacts?.some(h=>h.id===s)?y.selectedArtifactId=s:y.selectedArtifactId=si(y.artifactBundle)?.id||null;const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f)}catch(r){if(console.error("Refinement failed:",r),!re(e))return;const s=$s(r,{architect:2,generator:2,review:3});jh(r,{previous:i,stage:s,runId:e,retry:Uh})}finally{n.forEach(r=>{r.disabled=!1,r.textContent="Refine & Regenerate"}),re(e)&&(y.isRunning=!1,tn())}}async function zl(t,e,n){const i=`${vt}/connectFeedback`,r={type:t,code:e,input:n};try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!s.ok){const a=await s.text();return console.error(`callEndpoint failed: ${s.status} ${s.statusText}`,a),{success:!1,status:s.status,error:a}}const o=await s.json();return console.log("Telemetry success:",o),o}catch(s){return console.error("callEndpoint failed:",s),{success:!1,error:s.message}}}function A0(){const t=document.getElementById("ff-error-paste-input");t&&(t.value="")}async function Hh(){const t=document.getElementById("ff-error-paste-input"),e=t?.value?.trim();if(!e){t?.focus(),t?.classList.add("ring-2","ring-red-400","border-red-300"),setTimeout(()=>t?.classList.remove("ring-2","ring-red-400","border-red-300"),2e3);return}if(!y.step2Result){Ee("No generated code found. Please run the full pipeline first.","warning");return}if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=Gs();zl("flutterflowError",y.step2Result,e);const r=document.getElementById("btn-fix-from-errors");r&&(r.disabled=!0,r.innerHTML=` - - Fixing…`);const s=Bh();try{Wl();const o=Zf({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:e});vp(),Zs({runId:i}),Pt(2,i),nt(2),Ae(2,!0);const a=await Us(o,n,[],i);if(!re(i))return;y.step2Result=a,Os(),Qt(2,i);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=c,Bs(),Qt(3,i);const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f),t&&(t.value="")}catch(o){if(console.error("Fix from errors failed:",o),!re(i))return;const a=$s(o,{architect:2,generator:2,review:3});jh(o,{previous:s,stage:a,runId:i,retry:Hh})}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),re(i)&&(y.isRunning=!1,tn())}}async function ir(){if(console.log("runThinkingPipeline called"),y.isRunning)return;localStorage.setItem("hasSeenWalkthrough","true");const t=document.getElementById("pipeline-input").value,e=document.getElementById("code-generator-model").value,n=Ne.slice();if(!t.trim()){Ee("Please describe your FlutterFlow widget first.","warning");return}y.isRunning=!0;const i=Gs();try{if(await Oa,!re(i)||(hn.length&&await Promise.allSettled(hn.map(v=>v.job)),!re(i))||!await X0()||!re(i)||(await V0(),!re(i)))return;const r=qa(e);t.length,c0(),y.submittedPrompt=t,y.submittedImages=n.filter(v=>v.url),Ka(!0),za(r),Ln();const s=document.getElementById("ready-state");s&&s.classList.add("hidden");const o=document.getElementById("paywall-exhausted");o&&o.classList.add("hidden"),Zs({prompt:t,runId:i}),Rw(),nt(1),Pt(1,i),Ae(1,!0);const a=y.submittedImages.map(v=>({url:v.url})),l=await E0(t,a);if(!re(i))return;y.step1Result=l,u0(),Qt(1,i);const u=document.getElementById("step1-output"),c=ai(y.step1Result);u.textContent=c,u.dataset.raw=c,Ae(1,!1),nt(2),Pt(2,i),Ae(2,!0);const d=await Us(y.step1Result,r,a,i);if(!re(i))return;y.step2Result=d,Os(),Qt(2,i);const f=document.getElementById("step2-output"),h=ai(y.step2Result);f.textContent=h,f.dataset.raw=h,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const p=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=p,Bs(),Qt(3,i);const g=document.getElementById("step3-output");g.textContent=y.step3Result,Ae(3,!1),or();const m=Ms(y.step3Result);Tw(),ar(h,m)}catch(r){if(r.isPipelineCancel||console.error("Pipeline failed:",r),!re(i))return;const s=$s(r,{architect:1,generator:2,review:3});r.isUsageLimit?cn():(r.message,qa(document.getElementById("code-generator-model").value),void 0),nt(s),Ae(s,!1),hp(r,{stage:s,runId:i}),ws(s,"error")}finally{re(i)&&(y.isRunning=!1,Ka(!1),tn())}}function P0(){const t=document.getElementById("code-generator-model").value,e=[hs,"anthropic/claude-opus-5","openai/gpt-5.6-sol"].filter(i=>i!==t),n=prompt(`Retry with different model? - -Current: ${t} - -Options: -1. ${e[0]} -2. ${e[1]} - -Enter 1 or 2:`);n==="1"?(document.getElementById("code-generator-model").value=e[0],ir()):n==="2"&&(document.getElementById("code-generator-model").value=e[1],ir())}async function F0(){const t=Nl();if(!t){Ee("No code to commit. Please run the pipeline first.","warning");return}const e=await Te("flutterflow"),n=await Te("flutterflow_project_id");if(!e||!n){Ee("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Fl();return}if(y.artifactBundle?.artifacts?.length>1){await R0();return}const{artifactType:i,artifactName:r,fileName:s}=Th(),o=Oh(t,{artifactType:i,artifactName:r,fileName:s}),a=g0(o);if(!a.canProceed){Ee(`Pre-commit checks failed: ${a.issues.join("; ")}`,"error");return}Gl(o,a,null,null)}async function R0(){const t=await Te("flutterflow"),e=await Te("flutterflow_project_id");if(!t||!e){Ee("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Fl();return}const n=Vv(y.artifactBundle);if(n.errors.length>0){Ee(`Bundle validation failed: ${n.errors.join("; ")}`,"error");return}const i=new Map(n.fileEntries.map(a=>[a.fileName,{content:a.content,type:a.type,path:a.path}])),r=js(i),s={canProceed:r.valid&&n.errors.length===0,issues:[...n.errors,...r.errors],warnings:[...n.warnings,...r.warnings]};if(!s.canProceed){Ee(`Bundle validation failed: ${s.issues.join("; ")}`,"error");return}const o={content:n.fileEntries.map(a=>`// ${a.fileName} -${a.content}`).join(` - -`),fileName:`${n.fileEntries.length} files`,codeType:"bundle",artifactType:"Bundle",artifactName:n.title};Gl(o,s,n.dependencies,n)}function T0(t){let e=t.errorMap||new Map;!(e instanceof Map)&&typeof e=="object"&&(e=new Map(Object.entries(e)));let n=`
-

FlutterFlow Commit Failed

-

${z(t.error)}

`;if(e&&e.size>0){n+=`
-

Errors:

-
    `;for(const[r,s]of e.entries()){const o=El(s);n+=`
  • - ${z(r)}: ${z(o)} -
  • `}n+="
"}n+="
",n+=`
- -
`;const i=document.getElementById("step3-output");i&&(i.innerHTML=n,document.getElementById("btn-regenerate-from-error")?.addEventListener("click",()=>{Wh(t.error,e)}))}async function Wh(t,e){if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=Gs(),r=document.getElementById("btn-regenerate-from-error");r&&(r.disabled=!0,r.innerHTML=` - - Fixing...`);try{let s=`The previous code had the following errors when committing to FlutterFlow: - -`;if(e&&e.size>0)for(const[h,p]of e.entries()){const g=El(p);s+=`File: ${h} -Error: ${g} - -`}else s+=`${t} -`;const o=Zf({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:s});Zs({runId:i}),Pt(2,i),nt(2),Ae(2,!0);const a=await Us(o,n,[],i);if(!re(i))return;y.step2Result=a,Os(),Qt(2,i);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=c,Bs(),Qt(3,i);const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f)}catch(s){if(console.error("Regeneration failed:",s),!re(i))return;const o=$s(s,{architect:2,generator:2,review:3});s.isUsageLimit&&cn(),nt(o),Ae(o,!1),hp(s,{stage:o,runId:i,retry:()=>Wh(t,e)}),ws(o,"error")}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),re(i)&&(y.isRunning=!1,tn())}}async function $0(){const t=document.getElementById("ff-status-dot"),e=document.getElementById("ff-status-text");if(!t||!e)return;const n=await Te("flutterflow"),i=await Te("flutterflow_project_id");n&&i?(t.className="w-2 h-2 rounded-full bg-green-500",e.textContent="FlutterFlow credentials configured",e.className="text-green-600"):n||i?(t.className="w-2 h-2 rounded-full bg-yellow-500",e.textContent="FlutterFlow credentials incomplete",e.className="text-yellow-600"):(t.className="w-2 h-2 rounded-full bg-red-500",e.textContent="FlutterFlow credentials not configured",e.className="text-red-600")}async function zh(t){try{const e=await fetch(`${vt}/auth/send-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t})});if(!e.ok)throw new Error(`Failed to send magic link: HTTP ${e.status}`);return e.json()}catch(e){throw console.error("sendMagicLink failed:",{email:t,message:e.message,stack:e.stack}),e}}async function M0(t){try{const n=await(await fetch(`${vt}/auth/verify-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t})})).json();if(n.error||!n.email||!n.sessionToken)throw new Error(n.error||"Invalid or expired link");return n}catch(e){throw console.error("verifyMagicLink failed:",{message:e.message,stack:e.stack}),e}}async function L0(t){try{const e=await fetch(`${vt}/auth/refresh-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:t})});if(!e.ok)return console.error("refreshSession: non-OK response",{url:`${vt}/auth/refresh-session`,status:e.status}),null;const n=await e.json();return n.error||!n.email||!n.sessionToken?(console.warn("refreshSession: validation failed",{error:n.error,hasEmail:!!n.email,hasToken:!!n.sessionToken}),null):n}catch(e){return console.error("refreshSession: fetch failed",{url:`${vt}/auth/refresh-session`,message:e.message,stack:e.stack}),null}}function Ju(t,e){const n=Vh(),i=(q.email||n.email)!==t;q.email=t,q.sessionToken=e,q.isVerified=!0,ce=$n({isLoading:!0}),localStorage.setItem(us,JSON.stringify({email:t,sessionToken:e})),i&&Xh()}function qh(){q.email=null,q.sessionToken=null,q.isVerified=!1,ce=$n({isResolved:!0}),localStorage.removeItem(us),localStorage.removeItem(fs)}function Vh(){try{const t=localStorage.getItem(us);if(!t)return{email:null,sessionToken:null};const e=JSON.parse(t);return!e.email||!e.sessionToken?{email:null,sessionToken:null}:e}catch(t){return console.warn("getStoredSession: failed to parse auth session:",t),localStorage.removeItem(us),{email:null,sessionToken:null}}}async function N0(){const e=new URLSearchParams(window.location.search).get("token");if(e){window.history.replaceState({},"",window.location.pathname+window.location.hash);try{const{email:n,sessionToken:i}=await M0(e);Ju(n,i),Gh();const r=Zu();r&&!window.location.hash&&(window.location.hash=r)}catch(n){Zu();const i=n.message||"Sign-in link invalid or expired.";Ee(i,"error"),Ws(),Yn(i,"error")}}else{const{email:n,sessionToken:i}=Vh();if(n&&i){const r=await L0(i);r?Ju(r.email,r.sessionToken):qh()}}ql()}function O0(){try{localStorage.setItem(Na,JSON.stringify({hash:window.location.hash||"#home",ts:Date.now()}))}catch(t){console.warn("rememberSignInReturnSurface: failed to persist return surface:",t)}}function Zu(){try{const t=localStorage.getItem(Na);if(localStorage.removeItem(Na),!t)return null;const{hash:e,ts:n}=JSON.parse(t);return!e||typeof n!="number"||Date.now()-n>wy?null:e}catch(t){return console.warn("consumeSignInReturnSurface: failed to read return surface:",t),null}}function Ws(){const t=document.getElementById("signin-modal");if(!t)return;O0(),document.getElementById("signin-email-input")?.removeAttribute("aria-invalid"),Yn(""),Ge(t)}function Gh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("signin-modal");e&&Ke(e)}function Yn(t,e){const n=document.getElementById("signin-message");n&&(n.textContent=t||"",n.classList.remove("signin-message-success","signin-message-error"),e&&n.classList.add(`signin-message-${e}`))}async function B0(){const t=document.getElementById("signin-email-input"),e=document.getElementById("signin-submit-btn"),n=Ps(t?.value);if(!n||!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(n)||n.length>254){t?.setAttribute("aria-invalid","true"),Yn("Please enter a valid email address.","error");return}t?.removeAttribute("aria-invalid"),e&&(e.disabled=!0,e.textContent="Sending…");const r=sh(n);r&&Yn(r,"error");try{const s=await zh(n),o=s?.code===rh;t&&!o&&(t.value=""),t?.setAttribute("aria-invalid",String(o)),Yn(oh(s,n),o?"error":"success"),e&&(e.disabled=!1,e.textContent=o?"Send Sign-in Link":"Sent!",o||setTimeout(()=>{e.textContent==="Sent!"&&(e.textContent="Send Sign-in Link")},2500))}catch(s){console.error("handleMagicLinkRequest: sendMagicLink failed",{email:n,err:s}),Yn("Something went wrong. Please try again.","error"),e&&(e.disabled=!1,e.textContent="Send Sign-in Link")}}function D0(){q.email=null,q.sessionToken=null,q.isVerified=!1,ce=$n({isResolved:!0}),P_({storage:window.localStorage,onIdentityChanged:ql,onPlanChanged:qs})}const j0=F_({sendLink:zh,getEmail:()=>q.email||"",onState:U0});function U0(t){const e=document.getElementById("send-new-link-btn"),n=document.getElementById("send-new-link-msg");if(!e||!n)return;if(t.status==="pending"){e.disabled=!0,e.textContent="Sending…",n.className="acct-access-msg",n.textContent="Sending a fresh sign-in link…";return}if(t.status==="sent"){e.disabled=!1,e.textContent="Send new link",n.className="acct-access-msg",n.textContent=oh(t.data,q.email||"")||"Link sent — check your email.";return}e.disabled=!1,e.textContent="Send new link",n.className="acct-access-msg error";const i=t.error?.message?`Couldn't send a link right now. ${t.error.message}`:"Couldn't send a link right now. Please try again.";n.textContent=i}async function H0(){await j0()}function W0(){const t=C_(window.localStorage),e=t.length?`Cleared disposable UI caches: ${t.join(", ")}.`:"Nothing disposable to clear.";Ee(`${e} Your run count, identity and stored keys are kept.`,"info")}function z0(){const t=document.getElementById("delete-unavailable-modal");t&&Ge(t,{trigger:document.activeElement})}function q0(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("delete-unavailable-modal");e&&Ke(e)}function ql(){const t=q.isVerified&&!!q.email,e=document.getElementById("auth-signedout"),n=document.getElementById("auth-signedin"),i=document.getElementById("auth-guest-usage");e&&e.classList.toggle("hidden",t),n&&n.classList.toggle("hidden",!t),i&&i.classList.toggle("hidden",t);const r=document.getElementById("auth-user-email");r&&(r.textContent=q.email||"");const s=document.getElementById("access-signed-email");s&&(s.textContent=q.email||""),tw(),qs()}async function Kh(){try{if(typeof FingerprintJS>"u"){console.warn("resolveIdentity: FingerprintJS not loaded, skipping");return}const e=await(await FingerprintJS.load()).get(),n=e.visitorId,i=await fetch(xy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fingerprint:e.visitorId,cookie_id:n})});if(!i.ok)throw new Error(`Identity check HTTP ${i.status}`);const r=await i.json();if(ft.userId=r.user_id,ft.token=r.identity_token||null,ft.status=r.status,ft.resolved=!0,sessionStorage.setItem(Ey,r.user_id),ft.token&&sessionStorage.setItem(Sy,ft.token),r.usage_count!==void 0){const s=pn(),a=(r.usage_month||s)===s?r.usage_count:0;localStorage.setItem(Pn,JSON.stringify({count:a,month:s})),cn()}console.log(`Identity resolved: ${r.status} (${r.user_id.slice(0,8)}...) usage: ${r.usage_count??"n/a"}`)}catch(t){console.error("resolveIdentity failed:",t)}}let Wo=null;function V0(t=5e3){return ft.resolved?Promise.resolve():(Wo||(Wo=Kh().catch(e=>{console.warn("ensureIdentityReady: identity resolution failed",e)})),Promise.race([Wo,new Promise(e=>setTimeout(e,t))]))}function Yh(){const t=pn();try{const e=localStorage.getItem(Pn);return e?JSON.parse(e):{count:0,month:t}}catch(e){return console.warn("getUsageData: failed to parse usage storage",{key:Pn,month:t,err:e}),localStorage.removeItem(Pn),{count:0,month:t}}}function pn(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function sr(){const t=Yh();return t.month!==pn()?{count:0,month:pn()}:t}function G0(){const e={count:sr().count+1,month:pn()};return localStorage.setItem(Pn,JSON.stringify(e)),e}function hi(){return!!ce.isLoading}function Rt(){return!!ce.isResolved}function K0(t){if(!t)return null;const e=String(t).toLowerCase().replace(/[^a-z0-9]+/g,"_");return e==="pro"||e==="professional_plan"?"professional":e==="power_developer"||e==="power_plan"?"power":Object.prototype.hasOwnProperty.call(ds,e)?e:null}function Y0(t){return t&&Object.entries(vh).find(([,e])=>e===t)?.[0]||null}function xr(...t){return t.find(e=>e!=null&&e!=="")}function J0(...t){return t.find(e=>e&&typeof e=="object")||{}}function Z0(t){const e=t.data&&typeof t.data=="object"?t.data:t,n=J0(e.subscription,e.stripeSubscription,e.currentSubscription,e.customer?.subscriptions?.data?.[0],e.subscriptions?.data?.[0],e.subscriptions?.[0]),i=e.metadata||n.metadata||e.customer?.metadata||{},r=xr(e.priceId,e.price_id,e.stripePriceId,e.stripe_price_id,n.priceId,n.price_id,n.plan?.id,n.price?.id,n.items?.data?.[0]?.price?.id,n.items?.[0]?.price?.id,n.lines?.data?.[0]?.price?.id),s=xr(e.status,e.subscriptionStatus,e.subscription_status,n.status,"none"),o=K0(xr(e.tier,e.plan,e.planId,e.plan_id,e.subscriptionTier,e.subscription_tier,e.product,e.productName,n.tier,n.plan,i.tier,i.plan)),a=Iy.has(String(s).toLowerCase()),l=e.active===!0||e.isSubscribed===!0||e.subscribed===!0||e.hasSubscription===!0,u=o||Y0(r)||(a||l?"professional":"free");return $n({tier:u,status:s,periodEnd:xr(e.periodEnd,e.currentPeriodEnd,e.current_period_end,n.current_period_end,n.periodEnd,null),isResolved:!0})}function zs(){return ds[ce.tier]??ds.free}async function X0(){if(q.isVerified&&(!Rt()||hi())&&(await Zh({force:!0}),qs()),q.isVerified&&!Rt())return Ee("Could not verify your subscription. Please refresh or try Manage billing.","error"),!1;const{count:t}=sr(),e=zs();if(t>=e)return Jh(t,e,{openModal:!0}),!1;const n=Math.floor(e*.8);if(t>=n){const i=e-t;Ee(`${i} run${i===1?"":"s"} remaining this month.`,"warning")}return!0}function Xu(){const t=document.getElementById("paywall-exhausted");t&&t.classList.add("hidden")}function Jh(t,e,n={}){en(!0);const i=document.getElementById("walkthrough-modal");i&&Ke(i,{restoreFocus:!1});const r=document.getElementById("ready-state");r&&r.classList.add("hidden");const s=document.getElementById("preview-frame-container");s&&(s.style.display="none");const o=document.getElementById("main-stage-container");o&&o.classList.add("visible");const a=document.getElementById("results-view");a&&a.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar");const l=document.getElementById("pipeline-progress");l&&l.classList.remove("visible");const u=document.getElementById("paywall-exhausted");if(!u){Ee(`You've used all ${e} runs for this month. Upgrade to continue.`,"error"),ui();return}const c=document.getElementById("paywall-exhausted-text");if(c){const f=ce.tier;f==="free"?c.textContent=`You've used all ${e} free generations this month. Upgrade to Pro for 50 generations/month and access to all AI models.`:c.textContent=`You've used all ${e} generations this month on your ${f} plan. Your limit resets next month.`}const d=document.getElementById("paywall-signin-btn");d&&d.classList.toggle("hidden",q.isVerified),u.classList.remove("hidden"),n.openModal&&ui()}function qa(t){return ce.tier==="free"&&$r.includes(t)?hs:t}function Q0(){const t=document.getElementById("code-options-content"),e=document.getElementById("code-generator-model");if(!t||!e)return;const n=ce.tier,r=!(q.isVerified&&!Rt())&&n==="free";Array.from(e.options).forEach(o=>{const a=on(o.value),l=$r.includes(o.value);o.textContent=l&&r?`${a} (PRO)`:a,o.disabled=!1}),r&&$r.includes(e.value)&&(e.value=hs),e.disabled=!1,Hu.has(e)||(e.addEventListener("change",()=>{Rt()&&ce.tier==="free"&&$r.includes(e.value)&&(e.value=hs,ui()),za(e.value),Eh()}),Hu.add(e));let s=document.getElementById("model-selector-free-notice");r?(s||(s=document.createElement("p"),s.id="model-selector-free-notice",s.className="text-xs text-gray-400 mt-1",t.appendChild(s)),s.innerHTML='Free plan — Gemini only. '):s&&s.remove(),za(e.value)}function Vl(){const t=q.isVerified&&!!q.email,e=t&&hi(),n=!t||Rt(),i=sr(),r=n?i.count:0,s=n?zs():0,o=Math.max(0,s-r),a=`${r} / ${s} runs this month`,l=gl,u=n?ce.tier||"free":null,c=document.getElementById("topbar-credits-count");c&&(e?c.textContent="…":n?c.textContent=String(o):c.textContent="—");const d=document.getElementById("credits-balance");d&&(e?d.textContent="Checking plan…":n?d.textContent=a:d.textContent="Plan check failed");const f=document.getElementById("usage-dialog-tier");f&&(e?f.textContent="Checking…":n?f.textContent=l[u]||"Free":f.textContent="Unavailable");const h=document.getElementById("usage-dialog-status");h&&(e?h.textContent="Verifying your subscription…":n?h.textContent="Runs reset at the start of each month.":h.textContent="Could not verify your subscription. Try again or sign out.");const p=document.getElementById("usage-counter");if(p)if(e&&t)p.textContent="Checking plan…",p.className="text-xs text-gray-500";else if(!n&&t)p.textContent="Plan check failed",p.className="text-xs text-red-600 font-medium";else{p.textContent=a;const g=s>0?r/s:0;p.className=g>=1?"text-xs text-red-600 font-medium":g>=.8?"text-xs text-yellow-600 font-medium":"text-xs text-gray-500"}if(!t){const g=document.getElementById("guest-usage-text");if(g){const m=Yh(),v=m.month===pn()?m.count??0:0;g.textContent=`${v} / ${ds.free} generations used`}}ew()}function ew(){if(!(q.isVerified&&!!q.email))return;const e=hi(),n=Rt(),i=sr(),r=n?i.count:0,s=n?zs():0,o=Math.max(0,s-r),a=n?ce.tier||"free":null,l={free:"Free",professional:"Pro",power:"Power"}[a]||"Free",u=q.email||"",c=u.split("@")[0]||u,d=document.getElementById("acct-avatar");d&&(d.textContent=(u[0]||"?").toUpperCase());const f=document.getElementById("acct-name");f&&(f.textContent=c||"—");const h=document.getElementById("acct-plan-tier"),p=document.getElementById("acct-plan-price"),g=document.getElementById("acct-plan-note"),m=document.getElementById("acct-renewal");if(h&&(h.textContent=e?"Checking…":n?l:"Plan unavailable"),p)if(e)p.textContent="—";else if(!n)p.textContent="—";else if(a==="free")p.textContent="$0 / month";else{const E=Ni(Li[a]??0,kl());p.textContent=`${E} / month`}if(g&&(e?g.textContent="Verifying your subscription…":n?a==="free"?g.textContent="No subscription. Upgrade for more generations.":g.textContent="billed monthly through Stripe":g.textContent="Could not verify your subscription. Check billing or sign out."),m){const E=Date.parse(ce.periodEnd||""),P=n&&a!=="free"&&!!ce.periodEnd&&!Number.isNaN(E);if(e)m.textContent="";else if(!n)m.textContent="";else if(a==="free")m.textContent="";else if(P){const $=new Date(E).toLocaleDateString(void 0,{year:"numeric",month:"long",day:"numeric"});m.textContent=`Renews ${$} · reset at the start of each month.`}else m.textContent="Renewal date is not available for this period."}const v=document.getElementById("acct-left-count"),S=document.getElementById("acct-left-limit"),b=document.getElementById("acct-reset-note");v&&(v.textContent=e?"…":n?String(o):"—"),S&&(S.textContent=e?"…":n?String(s):"—"),b&&(e?b.textContent="Checking plan…":n?b.textContent="Runs reset at the start of each month.":b.textContent="Plan check failed. Refresh or manage billing.");const _=document.getElementById("acct-used-count"),x=document.getElementById("acct-meter-fill"),I=document.getElementById("acct-meter-meta"),T=document.getElementById("acct-meter-track");if(_&&(_.textContent=e?"…":n?String(r):"—"),x){const E=n&&s>0?Math.min(100,Math.round(r/s*100)):0;x.style.width=`${E}%`}if(I)if(e)I.textContent="Checking…";else if(!n)I.textContent="Plan check failed";else if(s===0)I.textContent=`${r} of ${s}`;else{const E=Math.round(r/s*100);I.textContent=`${r} of ${s} · ${E}%`}T&&(e?T.setAttribute("aria-label","Checking usage…"):n?T.setAttribute("aria-label",`${r} of ${s} generations used`):T.setAttribute("aria-label","Usage unavailable")),mt()}function cn(){if(Vl(),q.isVerified&&(hi()||!Rt())){Xu();return}const{count:t}=sr(),e=zs();t>=e&&!y.isRunning?Jh(t,e):Xu()}function tw(){Vl()}async function Zh(t={}){const e=t.force===!0;if(!q.isVerified||!q.sessionToken){ce=$n({isResolved:!0});return}ce={...ce,isLoading:!0,error:null};const n=localStorage.getItem(fs);if(!e&&n)try{const{data:i,email:r,ts:s,version:o}=JSON.parse(n);if(o===Wu&&r===q.email&&Date.now()-s<300*1e3){ce={...i,isLoading:!1,isResolved:i.isResolved!==!1};return}}catch(i){console.warn("Failed to parse subscription cache:",i,"| raw value:",n)}try{const r=await(await fetch(`${vt}/stripe/get-subscription`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken,user_id:ft.userId})})).json();if(r.error){if(["unauthorized","invalid session","expired session"].some(o=>String(r.error).toLowerCase().includes(o))){qh(),ql();return}ce=$n({isResolved:!1,error:r.error});return}ce=Z0(r),localStorage.setItem(fs,JSON.stringify({version:Wu,data:ce,email:q.email,ts:Date.now()}))}catch(i){console.error("fetchSubscription failed:",i),ce={...ce,isLoading:!1,isResolved:!1,error:i.message}}}function Xh(){localStorage.removeItem(fs)}async function nw(t){if(!q.isVerified||!q.sessionToken){Qh(),Ws();return}if(!vh[t]){Ee("Invalid plan selected.","error");return}const e=document.getElementById(`checkout-btn-${t}`);e&&(e.disabled=!0,e.textContent="Redirecting…");try{const i=await(await fetch(`${vt}/stripe/create-checkout-session-intl`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tierId:t,sessionToken:q.sessionToken,currency:kl()})})).json();if(i.error||!i.url)throw new Error(i.error||"Failed to create checkout session");const{url:r}=i;window.location.href=r}catch(n){console.error("startCheckout failed:",n),e&&(e.disabled=!1,e.textContent="Subscribe"),Ee("Could not start checkout. Please try again.","error")}}async function iw(t){if(!q.isVerified||!q.sessionToken){Ws();return}const e=t||document.getElementById("manage-billing-btn"),n=e?e.textContent:"";e&&(e.disabled=!0,e.textContent="Loading…");try{const r=await(await fetch(`${vt}/stripe/create-portal-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken})})).json();if(r.error||!r.url)throw new Error(r.error||"Failed to open billing portal");const{url:s}=r;window.location.href=s}catch(i){console.error("openCustomerPortal failed:",i),e&&(e.disabled=!1,e.textContent=n),Ee("Could not open billing portal. Please try again.","error")}}const bs=new Set;function rw(){bs.forEach(t=>t.abort()),bs.clear()}async function Es(t,e,n,i={},r=[]){const o=new AbortController;bs.add(o);let a=!1;const l=setTimeout(()=>{a=!0,o.abort()},12e4);try{const u=await fetch(by,{method:"POST",headers:{"Content-Type":"application/json",...ft.token?{Authorization:`Bearer ${ft.token}`}:{}},signal:o.signal,body:JSON.stringify({user_id:ft.userId,step:t,model:e,prompt:n,images:r,context:i})}),c=await u.text();let d={};try{d=c?JSON.parse(c):{}}catch{d={}}if(u.status===429){d.serverCount!==void 0&&(localStorage.setItem(Pn,JSON.stringify({count:d.serverCount,month:pn()})),cn());const p=new Error(d.message||"Monthly usage limit reached. Upgrade to continue.");throw p.isUsageLimit=!0,p.pipelineStep=t,p}const f=mv(d,t);if(f)throw f;if(console.log(`[BuildShip] ${t} response keys:`,Object.keys(d),"content type:",typeof d.content),!u.ok)throw new Error(`${d.message||d.error||"BuildShip pipeline error"} (HTTP ${u.status})`);if(t==="generator")if(d.usage_status==="success"&&Number.isFinite(d.usage_count)){const p=pn();(d.usage_month||p)===p&&(localStorage.setItem(Pn,JSON.stringify({count:d.usage_count,month:p})),cn())}else G0(),cn();let h=d.output||d.content;if(!h){const p=c?` (body: ${c.slice(0,120)})`:"";throw new Error(`BuildShip returned no output for step "${t}"${p}`)}return Array.isArray(h)&&(h=h.map(p=>typeof p=="string"?p:p.text||"").join("")),typeof h!="string"&&(h=JSON.stringify(h)),h}catch(u){if(u.name==="AbortError"){if(a)throw new Error(`BuildShip ${t} timed out after ${12e4/1e3}s`);const c=new Error(`BuildShip ${t} request cancelled`);throw c.isPipelineCancel=!0,c}throw u instanceof TypeError?new Error(`BuildShip unreachable: ${u.message}`):u}finally{clearTimeout(l),bs.delete(o)}}let Va=!1;function sw(){const e=new URLSearchParams(window.location.search).get("checkout");return e==="success"?(window.history.replaceState({},"",window.location.pathname+window.location.hash),Xh(),Va=!0):e==="cancel"&&(window.history.replaceState({},"",window.location.pathname+window.location.hash),Ee("Checkout cancelled.","info")),e}function ow(){if(!Va)return;Va=!1;const t=ce.tier!=="free";Ee(t?"Subscription active! Your plan is live.":"Checkout complete — confirming your subscription. Check Manage billing if it does not update.",t?"success":"info")}function qs(){const t=q.isVerified&&!!q.email,e=ce.tier,n=t&&hi(),i=!t||Rt(),r=document.getElementById("subscription-tier-badge");if(r){const a=gl,l={free:"bg-gray-100 text-gray-600",professional:"bg-indigo-100 text-indigo-700",power:"bg-purple-100 text-purple-700",unresolved:"bg-red-50 text-red-600"};r.textContent=n?"Checking…":i?a[e]||"Free":"Plan unavailable",r.className=`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${i?l[e]||l.free:l.unresolved}`}const s=document.getElementById("upgrade-prompt");s&&s.classList.toggle("hidden",!t||n||!i||e!=="free");const o=document.getElementById("manage-billing-btn");o&&o.classList.toggle("hidden",!t||n||i&&e==="free"),aw(i?e:null),Q0(),Eh(),cn(),_p()}function aw(t){const e=["bg-gray-100","text-gray-500","cursor-default"];Object.entries({professional:{btnId:"checkout-btn-professional",defaultText:"Subscribe"},power:{btnId:"checkout-btn-power",defaultText:"Subscribe"}}).forEach(([r,{btnId:s,defaultText:o}])=>{const a=document.getElementById(s);a&&(r===t?(a.disabled=!0,a.textContent="Current plan",a.classList.add(...e)):(a.disabled=!1,a.textContent=o,a.classList.remove(...e)))});const i=document.getElementById("free-tier-current");i&&i.classList.toggle("hidden",t!=="free")}function lw(){document.querySelectorAll(".pm-card[data-tier]").forEach(t=>{const e=t.dataset.tier,n=iv[e];if(!n)return;const i=t.querySelector("ul.pm-features");if(i){i.innerHTML="";for(const r of n){const s=document.createElement("li");s.textContent=r,i.appendChild(s)}}})}function Ga(){const t=kl(),e=document.getElementById("pro-price"),n=document.getElementById("power-price"),i=document.getElementById("plans-pro-price"),r=document.getElementById("plans-power-price"),s=document.getElementById("pro-price-note"),o=document.getElementById("power-price-note"),a=document.getElementById("plans-pro-price-note"),l=document.getElementById("plans-power-price-note");e&&(e.textContent=Ni(Li.professional,t)),n&&(n.textContent=Ni(Li.power,t)),i&&(i.textContent=Ni(Li.professional,t)),r&&(r.textContent=Ni(Li.power,t));const u="billed monthly";s&&(s.textContent=u),o&&(o.textContent=u),a&&(a.textContent=u),l&&(l.textContent=u)}function ui(){Ga();const t=document.getElementById("pricing-modal");t&&Ge(t),Oy().then(()=>Ga())}function Qh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("pricing-modal");e&&Ke(e)}function Ee(t,e="info"){const n={success:"bg-green-600 text-white",error:"bg-red-600 text-white",warning:"bg-amber-500 text-white",info:"bg-gray-800 text-white"},i=document.createElement("div");i.className=`fixed bottom-6 left-1/2 -translate-x-1/2 px-5 py-3 rounded-lg text-sm font-medium shadow-lg z-50 transition-opacity duration-300 ${n[e]||n.info}`,i.textContent=t,document.body.appendChild(i),setTimeout(()=>{i.style.opacity="0",setTimeout(()=>i.remove(),300)},3500)}document.addEventListener("DOMContentLoaded",async()=>{ev(),hljs.configure({tabReplace:" ",classPrefix:"hljs-"}),cw(),window.__heroField=G_(),window.__pipelineLogo=Z_(),_h=_y({onSubmit:ir}),Oa=(async()=>{try{await N0(),sw(),await Zh()}catch(n){console.warn("Startup auth/subscription initialization failed:",n)}})(),await Oa,ow(),qs(),Ga(),lw(),await d0(),o0();const t=document.getElementById("flutterflow-endpoint-select");if(t){const n=_t();t.value=n}Rh(),Kh();const e=document.getElementById("pipeline-input");e&&(e.addEventListener("input",()=>{Xt===2&&e.value.trim().length>0&&(Rl(),Ls())}),e.addEventListener("blur",()=>{const n=document.getElementById("walkthrough-modal");Xt===2&&n&&Ge(n)}),e.addEventListener("keydown",n=>{if(n.key==="Tab"){const i=document.getElementById("walkthrough-modal");Xt===2&&i&&setTimeout(()=>{Ge(i)},100)}})),window.addEventListener("commitStateChange",n=>{const{state:i}=n.detail;i===ee.PREPARING||i===ee.VALIDATING||i===ee.PUSHING?(Oe.phaseId||op(),ed(i)):(i===ee.SUCCESS||i===ee.ERROR)&&(ed(i),setTimeout(Kl,1e3))}),tc()});function cw(){const t=document.getElementById("preview-frame-container");t&&(t.style.display="")}function uw(){const t=document.getElementById("welcome-video-player");t&&(t.addEventListener("click",Ln),document.addEventListener("keydown",Ln))}function Ln(){const t=document.getElementById("preview-frame-container"),e=document.getElementById("main-stage-container"),n=document.getElementById("ready-state");t&&(t.style.display="none"),e&&e.classList.add("visible"),n&&n.classList.remove("hidden");const i=document.getElementById("welcome-video-player");i&&i.removeEventListener("click",Ln),document.removeEventListener("keydown",Ln),Rh()}let zi=null;async function dw(){const t=document.getElementById("confirm-project-select");if(!t)return;const e=++Ku,n=()=>e===Ku,i=await Te("flutterflow"),r=await Te("flutterflow_project_id");if(n()){if(!i){t.innerHTML='',t.disabled=!0;return}t.disabled=!1,t.innerHTML='';try{const o=await new fi(i,"","main",_t()).listProjects();if(!n())return;if(!o||o.length===0){t.innerHTML='';return}t.innerHTML='',o.forEach(a=>{const l=document.createElement("option");l.value=a.id||a.projectId||"",l.textContent=a.name||a.projectName||`Project ${a.id}`,t.appendChild(l)}),r&&(t.value=r)}catch(s){if(!n())return;console.error("Failed to load projects for deploy:",s),t.innerHTML=''}}}function fw(){return document.getElementById("confirm-project-select")?.value?.trim()||null}function Gl(t,e,n,i=null){zi={codeInfo:t,checks:e,deps:n,bundlePlan:i},document.getElementById("confirm-file-name").textContent=t.fileName,document.getElementById("confirm-artifact-type").textContent=t.artifactType,document.getElementById("confirm-file-size").textContent=`${(t.content.length/1024).toFixed(1)} KB`,document.getElementById("confirm-line-count").textContent=i?`${i.fileEntries.length} files`:t.content.split(` -`).length,dw();const r=document.getElementById("confirm-deps-list"),s=document.getElementById("confirm-deps-section");n&&Object.keys(n).length>0?(r.innerHTML=Object.entries(n).map(([u,c])=>{const d=c?`at least ${Zt(c)}`:"version resolved from your project";return`
  • • ${Zt(u)}: ${d}
  • `}).join(""),s.classList.remove("hidden")):s.classList.add("hidden");const o=document.getElementById("confirm-warnings-list"),a=document.getElementById("confirm-warnings-section");e.warnings&&e.warnings.length>0?(o.innerHTML=e.warnings.map(u=>`
  • • ${Zt(u)}
  • `).join(""),a.classList.remove("hidden")):a.classList.add("hidden"),document.getElementById("confirm-code-preview").textContent=t.content,document.getElementById("code-preview-content").classList.add("hidden"),document.getElementById("code-preview-chevron").style.transform="rotate(0deg)";const l=document.getElementById("commit-confirm-modal");l&&Ge(l)}function ep(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-confirm-modal");e&&Ke(e),zi=null}function hw(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-success-modal");e&&Ke(e);const n=["success-message","success-project-id","success-file-name","success-artifact-type","success-time","success-size"];for(const s of n){const o=document.getElementById(s);o&&(o.textContent="")}const i=document.getElementById("success-warnings-section");i&&i.classList.add("hidden");const r=document.getElementById("success-warnings-list");r&&(r.innerHTML="")}function tp(t){const e=(m,v)=>{const S=document.getElementById(m);S&&(S.textContent=v||"")},n=t.metadata?.fileName||"",i=t.metadata?.projectId||"",r=t.metadata?.artifactType||"",s=t.elapsedTime?`${(t.elapsedTime/1e3).toFixed(1)}s`:"",o=t.metadata?.codeSize?`${(t.metadata.codeSize/1024).toFixed(1)} KB`:"";e("success-message",t.message||"Code committed successfully!"),e("success-project-id",i),e("success-file-name",n),e("success-artifact-type",r),e("success-time",s),e("success-size",o);const a=t.addedDependencies||[],l=document.getElementById("success-deps-row");l&&l.classList.toggle("hidden",a.length===0),e("success-deps",a.join(", "));const u=document.getElementById("success-open-ff-link");u&&i&&(u.href=`https://app.flutterflow.io/project/${i}`);const c=document.getElementById("success-warnings-section"),d=document.getElementById("success-warnings-list"),f=t.unverified||[],h=t.approximate||[],p=t.warnings||[];(p.length>0||f.length>0||h.length>0)&&c&&d&&(d.innerHTML=[...f.map(m=>`
  • Not verified before deploying: ${z(String(m))}
  • `),...h.map(m=>`
  • Verified approximately: ${z(String(m))}
  • `),...p.map(([m,v])=>`
  • ${z(m)}: ${z(String(v))}
  • `)].join(""),c.classList.remove("hidden"));const g=document.getElementById("commit-success-modal");g&&Ge(g)}function np(t){Kl(),T0(t)}function ip(t,{heading:e,title:n,guidance:i}){const r=t.targetIdentity||{},s=document.getElementById("commit-terminal-modal");if(!s)return!1;const o=(h,p)=>{const g=document.getElementById(h);g&&(g.textContent=p||"")};o("terminal-heading",e),o("terminal-title",n),o("terminal-message",t.error||t.message||"");const a=document.getElementById("terminal-identity-list");if(a){const h=[["Project",r.projectId||t.metadata?.projectId],["Endpoint",r.endpoint],["File",r.fileName||t.metadata?.fileName],["Artifact",r.artifactType||t.metadata?.artifactType]];a.innerHTML=h.map(([p,g])=>`
    ${z(p)}:${z(String(g??"—"))}
    `).join("")}const l=document.getElementById("terminal-file-outcomes");let u=t.errorMap;u&&!(u instanceof Map)&&(u=new Map(Object.entries(u))),l&&u&&u.size>0?(l.innerHTML=[...u.entries()].map(([h,p])=>`
  • ${z(h)}: ${z(El(p))}
  • `).join(""),l.classList.remove("hidden")):l&&l.classList.add("hidden");const c=document.getElementById("terminal-guidance");c&&(c.innerHTML=i);const d=document.getElementById("terminal-open-ff-link"),f=r.projectId||t.metadata?.projectId;return d&&(d.href=f?`https://app.flutterflow.io/project/${f}`:"https://app.flutterflow.io/"),Ge(s),!0}function rp(t){ip(t,{heading:"Deploy partially applied",title:"Some custom classes reached FlutterFlow, but the deploy did not fully complete.",guidance:"The custom classes the runner confirmed are already in your project and are not lost. Review the per-file errors above, fix them in FlutterFlow or regenerate, then deploy again. Open the project to see exactly what landed."})}function sp(t){ip(t,{heading:"Deploy outcome not yet known",title:"This browser stopped waiting before the FlutterFlow server reported a result.",guidance:"The deploy may still be finishing on the server — it was not cancelled. Open your FlutterFlow project and confirm whether the class landed before retrying, so you do not push a duplicate or build on top of an unknown state."})}function pw(t){t&&t.target!==t.currentTarget||Ke(document.getElementById("commit-terminal-modal"))}function gw(){const t=document.getElementById("code-preview-content"),e=document.getElementById("code-preview-chevron");t.classList.contains("hidden")?(t.classList.remove("hidden"),e.style.transform="rotate(90deg)"):(t.classList.add("hidden"),e.style.transform="rotate(0deg)")}const Qu={prepare:{message:"Preparing your code...",start:4,end:14},validate:{message:"Checking FlutterFlow credentials...",start:14,end:22},project:{message:"Reading your FlutterFlow project...",start:22,end:40},provision:{message:"Creating custom classes in FlutterFlow...",start:40,end:82},package:{message:"Packaging files for upload...",start:82,end:88},push:{message:"Pushing to FlutterFlow...",start:88,end:97},done:{message:"Complete!",start:100,end:100}},mw=[{after:0,text:"Starting a FlutterFlow build runner..."},{after:12,text:"Preparing the FlutterFlow AI workspace..."},{after:35,text:"Uploading your custom classes..."},{after:60,text:"FlutterFlow is applying the changes..."},{after:100,text:"Still working — this can take a couple of minutes..."}],Oe={sequence:[],phaseId:null,phaseStartedAt:null,timer:null,substatus:null,liveSubstatus:!1,start({withProvisioning:t=!1}={}){this.sequence=["prepare","validate","project"],t&&this.sequence.push("provision"),this.sequence.push("package","push","done");const e=document.getElementById("commit-progress-overlay");e&&(wu(e,!0,"Deploying to FlutterFlow"),Ge(e)),this.set("prepare")},set(t,e=null){if(!(!Qu[t]||t===this.phaseId)){if(!this.sequence.includes(t)){const n=this.sequence.indexOf("package");this.sequence.splice(n===-1?this.sequence.length:n,0,t)}this.phaseId=t,this.phaseStartedAt=Date.now(),this.substatus=e,this.liveSubstatus=!1,this.render(),this.timer&&clearInterval(this.timer),t!=="done"&&(this.timer=setInterval(()=>this.render(),500))}},setSubstatus(t){t&&(this.liveSubstatus=!0,this.substatus=t,this.render())},render(){const t=Qu[this.phaseId];if(!t)return;const e=(Date.now()-this.phaseStartedAt)/1e3,n=t.start+(t.end-t.start)*(1-Math.exp(-e/25));if(this.phaseId==="provision"&&!this.liveSubstatus){const o=mw.filter(a=>e>=a.after).pop();o&&(this.substatus=o.text)}const i=this.sequence.indexOf(this.phaseId),s=[`Step ${i===-1?1:i+1} of ${this.sequence.length}`];e>=5&&s.push(vw(e)),ap(this.phaseId==="done"?100:n,t.message,s.join(" · "),this.substatus)},stop(){this.timer&&clearInterval(this.timer),this.timer=null,this.phaseId=null;const t=document.getElementById("commit-progress-overlay");t&&(wu(t,!1),Ke(t,{force:!0,restoreFocus:!1}))}};function vw(t){const e=Math.floor(t);return e<60?`${e}s elapsed`:`${Math.floor(e/60)}m ${String(e%60).padStart(2,"0")}s elapsed`}function op(t){Oe.start(t)}function Kl(){Oe.stop()}function ap(t,e,n,i=null){const r=document.getElementById("commit-progress-bar"),s=document.getElementById("progress-message"),o=document.getElementById("progress-detail"),a=document.getElementById("progress-substatus");r&&(r.style.width=`${Math.round(t*10)/10}%`),s&&(s.textContent=e),o&&(o.textContent=n),a&&(a.textContent=i||"",a.classList.toggle("hidden",!i))}function ed(t){const e={[ee.PREPARING]:"prepare",[ee.VALIDATING]:"validate",[ee.PUSHING]:"project",[ee.SUCCESS]:"done"};if(t===ee.ERROR){Oe.timer&&clearInterval(Oe.timer),Oe.timer=null,ap(100,"Failed","Error occurred");return}const n=e[t];n&&Oe.set(n)}function _w(t){return t.bundlePlan?t.bundlePlan.fileEntries.some(e=>e.type===J.CODE_FILE):t.codeInfo?.codeType===J.CODE_FILE}let lp=!1;function cp(t){lp=t;const e=document.querySelector("#commit-confirm-modal button[data-deploy-confirm]");e&&(e.disabled=t),[...document.querySelectorAll("[data-deploy-start]"),...document.querySelectorAll("#btn-deploy-to-ff")].forEach(i=>{i.disabled=t})}function td(t){Kl(),cp(!1);const e=hh(t);e===Xe.COMMITTED?tp(t):e===Xe.PARTIAL?rp(t):e===Xe.UNCONFIRMED?sp(t):np(t)}async function yw(){if(!zi){console.error("No pending commit data");return}if(lp){console.warn("Deploy already in flight; ignoring duplicate confirm.");return}const t=zi;if(zi=null,Wi=fw(),ep(),cp(!0),op({withProvisioning:_w(t)}),t.bundlePlan){const o=await b0(t.bundlePlan,{pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});Wi=null,td(o);return}const{codeInfo:e}=t,{artifactType:n,artifactName:i,fileName:r}=Th(),s=await w0(e.content,{artifactType:n,artifactName:i,fileName:r,pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});Wi=null,td(s)}window.runThinkingPipeline=ir;window.toggleStep=x0;window.toggleSection=S0;window.selectWorkflowStep=nt;window.copyCode=I0;window.retryWithDifferentModel=P0;window.openApiKeysModal=Fl;window.closeApiKeysModal=Ph;window.walkthroughConnectAccount=Jy;window.closeWalkthroughModal=Xy;window.openWalkthroughModal=Zy;window.advanceWalkthrough=Rl;window.commitToFlutterFlow=y0;function ww(){const t=document.getElementById("pipeline-input");t&&t.focus()}function bw(){const t=document.getElementById("advanced-settings");t&&(t.open=!0);const e=document.getElementById("code-generator-model");e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),e.focus(),e.click())}window.focusPromptInput=ww;window.openModelSelector=bw;window.handlePromptImageSelect=Ly;window.removePromptImage=Ny;window.saveApiKeys=t0;window.validateFlutterFlowConnection=$l;window.clearAllApiKeys=n0;window.toggleKeyVisibility=l0;window.handleWelcomeVideoEnd=uw;window.dismissWelcomeVideo=Ln;window.initiateCommitToFlutterFlow=F0;window.updateFlutterFlowCredentialStatus=$0;window.openCommitConfirmModal=Gl;window.closeCommitConfirmModal=ep;window.closeCommitSuccessModal=hw;window.closeCommitTerminalModal=pw;window.showCommitPartialModal=rp;window.showCommitUnconfirmedModal=sp;window.showCommitSuccessModal=tp;window.showCommitFailureModal=np;window.toggleCodePreview=gw;window.confirmCommitToFlutterFlow=yw;window.runRefinement=Uh;window.regenerateFromPastedErrors=Hh;window.clearErrorInput=A0;window.setFlutterFlowEndpoint=Yy;window.getFlutterFlowEndpoint=_t;window.commitProgress=Oe;window.openSignInModal=Ws;window.closeSignInModal=Gh;window.handleMagicLinkRequest=B0;window.handleSignOut=D0;window.handleSendNewLink=H0;window.handleClearCache=W0;window.handleDeleteAccount=z0;window.closeDeleteUnavailableModal=q0;window.startCheckout=nw;window.openCustomerPortal=iw;window.openPricingModal=ui;window.closePricingModal=Qh;let Or=null,up=null,Nn={1:"pending",2:"pending",3:"pending"},Yl=1,Jl=null;const Vs={1:"Prompt Architect",2:"Code Generator",3:"Code Review"},Ew={1:"Understanding your prompt",2:"Generating Dart code",3:"Running the code audit"},Sw={1:"Prompt understood",2:"Dart code generated",3:"Code audit complete"};function Gs(){return y.runId+=1,y.runId}function re(t){return t===void 0||t===y.runId}function xw(){y.runId+=1}function Zl(t){return document.getElementById(`pdot-${t}`)}function Ka(t){const e=document.getElementById("btn-run-pipeline")||document.getElementById("hero-send");e&&(e.disabled=t,e.classList.toggle("is-busy",t),t?e.setAttribute("aria-busy","true"):e.removeAttribute("aria-busy"))}function Ks(t){const e=document.getElementById("pipeline-progress");e&&(e.dataset.runState=t)}function Fn(t,e){Nn[t]=e;const n=Zl(t);if(!n)return;n.dataset.state=e,n.disabled=e==="pending"||e==="skipped";const i=Vs[t],r={pending:"not started",active:"in progress",done:"complete",failed:"failed",skipped:"not run"};n.setAttribute("aria-label",`Step ${t} of 3, ${i}: ${r[e]||e}`),e==="active"?n.setAttribute("aria-current","step"):n.removeAttribute("aria-current")}function Iw(){return[1,2,3].filter(t=>Nn[t]==="done").length}function Ys(){const t=document.getElementById("pipeline-progress-fill");t&&(t.style.width=`${Iw()/3*100}%`);const e=document.getElementById("progress-stage-count");e&&(e.textContent=`Step ${Yl} of 3`)}function Js(t,{done:e=!1}={}){const n=document.getElementById("progress-title-text"),i=document.getElementById("progress-substep-text"),r=Nn[t],s=e||r==="done";if(n&&(n.textContent=s?Sw[t]:Ew[t]),i){const o=s?" — complete":r==="failed"?" — stopped":"";i.textContent=`Step ${t} of 3 — ${Vs[t]}${o}`}}function kw(t){Nn[t]==="pending"||Nn[t]==="skipped"||(Jl=t,[1,2,3].forEach(e=>{const n=Zl(e);n&&n.setAttribute("aria-pressed",String(e===t))}),Js(t))}function Xl(){Jl=null,[1,2,3].forEach(t=>{const e=Zl(t);e&&e.removeAttribute("aria-pressed")})}function dp(t){const e=document.getElementById("pipeline-note");e&&(e.textContent=t||"",e.hidden=!t)}function Cw(t,e,n){re(n)&&dp(`${on(t)} did not answer. Continuing on ${on(e)}.`)}function Ql(){const t=document.getElementById("pipeline-failure");if(!t)return;t.hidden=!0;const e=document.getElementById("pipeline-failure-actions");e&&e.replaceChildren()}const Aw=1120;function Pw(){const t=getComputedStyle(document.documentElement).getPropertyValue("--t-morph").trim(),e=Number.parseFloat(t);return Number.isFinite(e)&&e>0?e:Aw}let Xn=null,Br=null;function Fw(){return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}function un(){if(Br){try{Br.cancel()}catch{}Br=null}Xn&&(Xn.remove(),Xn=null),window.removeEventListener("resize",un)}function fp(t,e){if(un(),Fw()||!t||!e||!document.body||typeof Element.prototype.animate!="function")return;const n=t.getBoundingClientRect(),i=e.getBoundingClientRect();if(!n.width||!n.height||!i.width||!i.height)return;const r=document.createElement("div");r.className="composer-morph",r.setAttribute("aria-hidden","true"),r.style.cssText=`left:${i.left}px;top:${i.top}px;width:${i.width}px;height:${i.height}px;opacity:0;`,document.body.appendChild(r);const s=n.left+n.width/2-(i.left+i.width/2),o=n.top+n.height/2-(i.top+i.height/2),a=n.width/i.width,l=n.height/i.height,u=`translate(${s}px,${o}px) scale(${a},${l})`,c=r.animate([{transform:u,opacity:0,offset:0,easing:"cubic-bezier(.2,0,0,1)"},{transform:u,opacity:1,offset:.14,easing:"cubic-bezier(.4,0,.2,1)"},{transform:`translate(${s}px,${o}px) scale(${a*.93},${l*.93})`,opacity:1,offset:.28,easing:"cubic-bezier(.32,1.38,.5,1)"},{transform:"translate(0px,0px) scale(1,1)",opacity:1,offset:1}],{duration:Pw(),fill:"both"});Xn=r,Br=c,window.addEventListener("resize",un),c.onfinish=()=>{if(Xn!==r)return;const d=r.animate([{opacity:1},{opacity:0}],{duration:260,fill:"forwards"});d.onfinish=()=>{Xn===r&&un()}}}function Rw(){const e=document.getElementById("composer")?.getBoundingClientRect();e&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{fp({getBoundingClientRect:()=>e},document.getElementById("main-stage-container"))})})}function Tw(){fp(document.getElementById("pipeline-progress"),document.getElementById("main-stage-container"))}window.addEventListener("hashchange",un);window.addEventListener("popstate",un);function Zs(t={}){const{prompt:e=null,runId:n}=t;if(!re(n))return;Qs(),en(!0);const i=document.getElementById("pipeline-progress"),r=document.getElementById("results-view"),s=document.getElementById("ready-state");if(s&&s.classList.add("hidden"),r&&r.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),i&&i.classList.add("visible"),Ks("running"),e!==null){const a=document.getElementById("pipeline-submitted-prompt");a&&(a.textContent=e)}up=Date.now();const o=document.getElementById("progress-elapsed");o&&(o.textContent="0s"),Nn={1:"pending",2:"pending",3:"pending"},Xl(),Ql(),dp(""),[1,2,3].forEach(a=>Fn(a,"pending")),Pt(1,n),$w()}function Pt(t,e){re(e)&&(Yl=t,Xl(),[1,2,3].forEach(n=>{n===t?Fn(n,"active"):nt&&Fn(n,"pending")}),Js(t),Ys())}function Qt(t,e){re(e)&&(Fn(t,"done"),Jl===null&&Js(t,{done:!0}),Ys())}function hp(t,{stage:e=1,runId:n,retry:i=pp}={}){if(!re(n))return;Xs(),Qs(),un(),Ks("failed"),en(!0);const r=document.getElementById("pipeline-progress");r&&r.classList.add("visible");const s=document.getElementById("results-view");s&&s.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),Fn(e,"failed"),[1,2,3].forEach(p=>{p>e&&Fn(p,"pending")}),Yl=e,Xl(),Js(e),Ys();const o=gh(t),a=document.getElementById("pipeline-failure"),l=document.getElementById("pipeline-failure-title"),u=document.getElementById("pipeline-failure-message"),c=document.getElementById("pipeline-failure-hint"),d=document.getElementById("pipeline-failure-actions");if(!a||!l||!u||!d)return;if(a.dataset.kind=o.kind,l.textContent=`${Vs[e]}: ${o.title}`,u.textContent=o.message,c){const p=o.detail&&o.detail!==o.message?o.detail:"";c.textContent=p,c.hidden=!p}d.replaceChildren();const f=[o.canUpgrade&&{id:"upgrade",label:"View plans",variant:"primary",onClick:()=>ui()},o.canRetry&&{id:"retry",label:"Retry",variant:o.canUpgrade?"secondary":"primary",onClick:i},o.canEdit&&{id:"edit",label:"Edit prompt",variant:"secondary",onClick:Ya}].filter(Boolean);!o.canEdit&&!o.canRetry&&f.push({id:"edit",label:"Back to prompt",variant:"secondary",onClick:Ya}),f.forEach(p=>{const g=document.createElement("button");g.type="button",g.textContent=p.label,g.dataset.action=p.id,g.dataset.variant=p.variant,g.addEventListener("click",p.onClick),d.appendChild(g)}),a.hidden=!1;const h=d.querySelector("button");h&&h.focus({preventScroll:!0})}function Ya(){xw(),rw(),y.isRunning=!1,Ka(!1),tn(),Ks("settled"),un(),Xs(),Qs(),Ql();const t=document.getElementById("pipeline-progress");t&&t.classList.remove("visible"),en(!1);const e=document.getElementById("pipeline-input");e&&(y.submittedPrompt&&(e.value=y.submittedPrompt,e.dispatchEvent(new Event("input",{bubbles:!0}))),e.focus({preventScroll:!0}),e.setSelectionRange(e.value.length,e.value.length))}function pp(){const t=document.getElementById("pipeline-input");t&&y.submittedPrompt&&(t.value=y.submittedPrompt,t.dispatchEvent(new Event("input",{bubbles:!0}))),Ne=y.submittedImages.slice(),ln(),Ql(),ir()}function $w(){Xs(),Or=setInterval(()=>{const t=(Date.now()-up)/1e3,e=document.getElementById("progress-elapsed");e&&(e.textContent=`${Math.floor(t)}s`)},250)}function Xs(){Or&&(clearInterval(Or),Or=null)}let qi=null;function Qs(){qi&&(clearTimeout(qi),qi=null)}function or(){Xs(),Qs(),Ks("settled"),Ys();const t=document.getElementById("pipeline-progress-fill");qi=setTimeout(()=>{qi=null;const e=document.getElementById("pipeline-progress");e&&e.classList.remove("visible"),t&&(t.style.width="0%")},400)}function Rn(t,e=""){const n={pass:'',warning:'',fail:'',info:''};return``}function gp(t){return{pass:"Passed review",warning:"Needs attention",fail:"Blocking issues"}[t]||"Needs attention"}function Mw(){return l_({bundle:y.artifactBundle,reviewResult:y.step3Result})}function Lw(t){return` -
    - ${Rn(t.severity)} -
    -
    ${z(t.message)}
    - ${t.suggestion?`
    ${z(t.suggestion)}
    `:""} - ${z(t.source)} -
    -
    - `}function Nw(t){return` -
  • -
    - ${z(t.title)} - ${t.detail&&t.detail!==t.title?`

    ${z(t.detail)}

    `:""} -
    -
  • - `}function Ow(t){const e=document.getElementById("results-summary-detail"),n=document.getElementById("results-title");if(!e)return;n&&(n.textContent=t.title);const i=t.score,r=i==null?"neutral":i>=80?"pass":i>=60?"warning":"fail",s=i==null?"":i>=80?"Strong":i>=60?"Needs work":"High risk",o=t.findings.length?` -
      - ${t.findings.map(u=>` -
    • - ${Rn(u.severity)} - - ${z(u.message)} - ${u.suggestion?`${z(u.suggestion)}`:""} - -
    • - `).join("")} -
    - `:"",a=t.warnings.length?` -
    -

    ${Rn("warning")} Bundle

    -
      - ${t.warnings.map(u=>`
    • ${z(u)}
    • `).join("")} -
    -
    - `:"",l=t.manualSteps.length?` -
    -

    ${Rn("info")} Complete in FlutterFlow

    -

    For your information — these don't block the deploy. Finish them by hand in the FlutterFlow editor once the code is pushed.

    -
      - ${t.manualSteps.map(u=>` -
    • - ${z(u.title)} - ${u.detail&&u.detail!==u.title?`${z(u.detail)}`:""} -
    • - `).join("")} -
    -
    - `:"";e.innerHTML=` -
    -
    -

    ${z(t.summary)}

    - ${o} - ${a} - ${l} -
    -
    - -
    - Is the generated code correct? -
    - - -
    - -
    -
    -
    - `}function Bw(t){const e=t.artifacts.find(l=>l.id===y.selectedArtifactId)||t.artifacts[0];if(!e)return"";const n={pass:{icon:"pass",message:"No file-specific issues were found."},warning:{icon:"warning",message:"This file needs attention, but Code Review did not return a specific finding."},fail:{icon:"fail",message:"This file is blocked, but Code Review did not return a specific finding."}}[e.status],i=e.findings.length?e.findings.map(Lw).join(""):`
    ${Rn(n.icon)} ${z(n.message)}
    `,r=e.dependencies?.length?e.dependencies.map(l=>` -
  • ${z(l.name)}${l.version?` ${z(l.version)}`:""}${l.reason?`

    ${z(l.reason)}

    `:""}
  • - `).join(""):'
  • No external packages
  • ',s=e.imports?.length?e.imports.map(l=>`${z(l)}`).join(""):'No imports returned',o=e.publicApi?.length?e.publicApi.map(l=>`${z(l)}`).join(""):'No public API signature returned',a=e.relationships.length?e.relationships.map(l=>` -
  • ${z(l.from||"Bundle")} ${z(l.type)} ${z(l.to||"Bundle")}${l.description?`

    ${z(l.description)}

    `:""}
  • - `).join(""):'
  • No relationships for this file
  • ';return` -
    -
    - ${Rn(e.status)} ${z(gp(e.status))} -

    ${z(e.artifactName)}

    - ${e.description?`

    ${z(e.description)}

    `:""} -
    -
    - ${z(e.artifactType)} - ${z(e.fileName)} -
    -
    -
    -

    Code Review findings

    - ${i} -
    - ${e.manualSteps.length?` -
    -

    Manual FlutterFlow steps for this file

    -
      ${e.manualSteps.map(Nw).join("")}
    -
    - `:""} -
    - File details -
    -
    -

    Dependencies

    -
      ${r}
    -
    -
    -

    Deployment

    -
    -
    Status
    ${z(e.deployStatus||"pending")}
    -
    Order
    ${e.index+1} of ${t.artifacts.length}
    -
    Path hint
    ${z(e.pathHint||"Not returned")}
    -
    -
    -
    -
    -

    Public API

    -
    ${o}
    -
    -
    -

    Imports

    -
    ${s}
    -
    -
    -

    Relationships

    -
      ${a}
    -
    -
    - `}function Dw(t){const e=document.getElementById("bundle-strip"),n=document.getElementById("results-summary-tab"),i=document.getElementById("artifact-tabs"),r=document.getElementById("results-file-count");if(n){const s=y.resultsViewMode==="summary";n.classList.toggle("active",s),n.setAttribute("role","tab"),n.setAttribute("aria-selected",String(s)),n.setAttribute("aria-controls","results-summary-detail"),n.tabIndex=s?0:-1}if(i&&(i.setAttribute("role","tablist"),i.setAttribute("aria-label","Artifacts in this bundle")),!t.artifacts.length){r&&(r.textContent="0 files"),e&&e.classList.remove("visible"),i&&(i.innerHTML=""),nd();return}if(r){const s=t.artifacts.length;r.textContent=`${s} ${s===1?"file":"files"}`}i&&(i.innerHTML=t.artifacts.map(s=>{const o=y.resultsViewMode==="file"&&s.id===y.selectedArtifactId;return` - - `}).join(""),i.onclick=s=>{const o=s.target.closest(".artifact-tab");o?.dataset?.artifactId&&ec(o.dataset.artifactId)},nd()),e&&e.classList.add("visible")}function nd(){const t=document.getElementById("bundle-strip");!t||t.dataset.tabKeyboard==="bound"||(t.dataset.tabKeyboard="bound",t.addEventListener("keydown",e=>{if(e.defaultPrevented)return;const n=[document.getElementById("results-summary-tab"),...Array.from(document.querySelectorAll("#artifact-tabs .artifact-tab"))].filter(Boolean);if(!n.length||!n.includes(document.activeElement))return;let i=-1;const r=n.indexOf(document.activeElement);if(e.key==="ArrowRight")i=(r+1)%n.length;else if(e.key==="ArrowLeft")i=(r-1+n.length)%n.length;else if(e.key==="Home")i=0;else if(e.key==="End")i=n.length-1;else return;e.preventDefault();const s=n[i];if(!s)return;if(s.id==="results-summary-tab")mp();else{const a=s.dataset.artifactId;a&&ec(a)}const o=s.id==="results-summary-tab"?document.getElementById("results-summary-tab"):document.querySelector(`#artifact-tabs .artifact-tab[data-artifact-id="${s.dataset.artifactId}"]`);o&&o.focus()}))}function eo(){document.body.classList.add("results-fullscreen"),document.body.classList.add("results-with-sidebar");const t=document.getElementById("results-view"),e=document.getElementById("results-code-output"),n=document.getElementById("results-audit-output"),i=document.getElementById("results-summary-detail"),r=document.getElementById("artifact-results-split"),s=Mw(),o=Nl();if(i&&(i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby","results-summary-tab")),r){r.setAttribute("role","tabpanel");const a=s?.artifacts?.find(l=>l.id===y.selectedArtifactId);r.setAttribute("aria-labelledby",a?`artifact-tab-${a.id}`:"results-summary-tab")}if(Ow(s),Dw(s),e&&(e.textContent=""),e){const a=mh(o);e.innerHTML=a}n&&(n.innerHTML=Bw(s)),i&&i.classList.toggle("hidden",y.resultsViewMode!=="summary"),r&&r.classList.toggle("hidden",y.resultsViewMode!=="file"),t&&t.classList.add("visible")}function ar(t,e){en(!0),y.selectedArtifactId||(y.selectedArtifactId=si(y.artifactBundle).id),y.resultsViewMode="summary",document.body.classList.add("results-fullscreen");const n=document.getElementById("step3-output");n&&(n.textContent=""),eo(),tn(),jw()}function jw(){const t=document.getElementById("btn-feedback-up"),e=document.getElementById("btn-feedback-down"),n=document.getElementById("results-feedback-status");t&&(t.className="feedback-btn",t.setAttribute("aria-pressed","false"),t.disabled=!1,t.removeAttribute("aria-disabled")),e&&(e.className="feedback-btn",e.setAttribute("aria-pressed","false"),e.disabled=!1,e.removeAttribute("aria-disabled")),n&&(n.textContent=""),Ja=!1}function ec(t){y.selectedArtifactId=t,y.resultsViewMode="file",eo()}function mp(){y.resultsViewMode="summary",eo()}function Uw(){const t=document.getElementById("btn-copy-results"),e=document.getElementById("results-copy-status"),n=Nl(),i=(r,s)=>{e&&(e.textContent=r,e.classList.toggle("ok",!!s),e.classList.toggle("fail",!s))};if(!navigator.clipboard?.writeText){i("Copying isn't supported in this browser.",!1);return}navigator.clipboard.writeText(n).then(()=>{if(i("Copied to clipboard",!0),t){t.classList.add("copied");const r=t.querySelector("span");if(r){const s=r.textContent;r.textContent="Copied!",setTimeout(()=>{t.classList.remove("copied"),r.textContent=s},2e3)}}}).catch(()=>{i("Clipboard permission was denied. Select the code to copy it manually.",!1)})}let Ja=!1;async function Hw(t){const e=document.getElementById("btn-feedback-up"),n=document.getElementById("btn-feedback-down"),i=document.getElementById("results-feedback-status");if(!e||!n||Ja)return;const r=l=>{i&&(i.textContent="",i.offsetWidth,i.textContent=l)},s=l=>{Ja=l,[e,n].forEach(u=>{u.disabled=l,u.setAttribute("aria-disabled",String(l))})},o=t==="up"?"thumbsUp":"thumbsDown";s(!0),r("Submitting review feedback…");const a={type:o,code:y.step2Result,input:y.step1Result};try{const l=await zl(a.type,a.code,a.input);if(!l||l.success!==!0){s(!1),r("Review feedback could not be sent. Tap again to retry.");return}e.classList.toggle("active-up",t==="up"),n.classList.toggle("active-down",t==="down"),e.setAttribute("aria-pressed",String(t==="up")),n.setAttribute("aria-pressed",String(t==="down")),s(!1),r("Review feedback saved.")}catch{s(!1),r("Review feedback could not be sent. Tap again to retry.")}}function Ww(){const t=document.getElementById("error-input-panel");if(t){t.classList.remove("hidden"),t.style.display="flex";const e=document.getElementById("ff-error-paste-input");e&&setTimeout(()=>e.focus(),100)}}function vp(){const t=document.getElementById("error-input-panel");t&&(t.classList.add("hidden"),t.style.display="none")}function en(t){const e=document.getElementById("generation-stage");e&&(t?(e.hidden=!1,e.inert=!1,requestAnimationFrame(()=>e.classList.add("is-active"))):(e.classList.remove("is-active"),e.inert=!0,setTimeout(()=>{e.classList.contains("is-active")||(e.hidden=!0)},260)))}function _p(){const t=q.isVerified&&!!q.email,e=ce.tier||"free",n=t&&hi(),i=!t||Rt(),s=n?"Checking…":i?gl[e]||"Free":"—",o=document.getElementById("topbar-plan");o&&(o.textContent=s);const a=document.getElementById("topbar-avatar");a&&(a.textContent=(q.email||"?")[0].toUpperCase()),Vl();const l=document.getElementById("plans-free-current");l&&l.classList.toggle("hidden",e!=="free"||!i);const u=document.getElementById("plans-checkout-btn-professional");if(u){const d=e==="professional"&&i;u.disabled=d,u.textContent=d?"Current plan":"Subscribe"}const c=document.getElementById("plans-checkout-btn-power");if(c){const d=e==="power"&&i;c.disabled=d,c.textContent=d?"Current plan":"Subscribe"}}function zw(){_p();const t=document.getElementById("credits-modal");t&&Ge(t)}function qw(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("credits-modal");e&&Ke(e)}function yp(t,e=!0,n=!0){if(t=["home","account","plans"].includes(t)?t:"home",document.querySelectorAll(".view[data-view]").forEach(r=>{r.dataset.view===t?(r.hidden=!1,r.removeAttribute("inert"),requestAnimationFrame(()=>{r.classList.add("is-active"),n&&r.focus({preventScroll:!0})})):(r.classList.remove("is-active"),r.setAttribute("inert","true"),setTimeout(()=>{r.classList.contains("is-active")||(r.hidden=!0)},260))}),t!=="home")en(!1);else{const r=document.getElementById("main-stage-container");r&&r.classList.contains("visible")&&en(!0)}if(document.querySelectorAll(".nav-link[data-view]").forEach(r=>{const s=r.dataset.view===t;r.setAttribute("aria-current",s?"page":null),s||r.removeAttribute("aria-current")}),e){const r=t==="home"?"":`#${t}`;window.location.hash!==r&&window.history.pushState({view:t},"",r||"#")}}let id=!1;function tc(){const t=window.location.hash.replace(/^#/,"");yp(t||"home",!1,id),id=!0}window.addEventListener("popstate",t=>{tc()});window.addEventListener("hashchange",()=>{tc()});window.copyResultsCode=Uw;window.selectArtifact=ec;window.selectResultsSummary=mp;window.submitResultsFeedback=Hw;window.showErrorInputPanel=Ww;window.hideErrorInputPanel=vp;window.setGenerationStageVisible=en;window.switchView=yp;window.selectPipelineStage=kw;window.editPipelinePrompt=Ya;window.retryPipelineRun=pp;window.openCreditsModal=zw;window.closeCreditsModal=qw; diff --git a/dist/index.html b/dist/index.html index d8c11b3..320da8f 100644 --- a/dist/index.html +++ b/dist/index.html @@ -3313,7 +3313,7 @@ .send.is-busy .send-spin { animation: none; opacity: 0.6; } } - + @@ -3375,7 +3375,7 @@

    FlutterFlow custom code.
    - @@ -3945,6 +3932,58 @@

    API Keys

    + + + - @@ -3947,6 +3934,58 @@

    API Keys

    + + + @@ -3947,19 +3960,18 @@

    Generation settings

    - -
    - -
    + + +
    diff --git a/e2e/stu377-pipeline-progress.spec.js b/e2e/stu377-pipeline-progress.spec.js index 32b9f22..9317369 100644 --- a/e2e/stu377-pipeline-progress.spec.js +++ b/e2e/stu377-pipeline-progress.spec.js @@ -43,19 +43,6 @@ function stepOf(route) { } } -/** - * STU-385 moved model selection into the composer settings dialog the gear - * opens. Pick a model there, then close the dialog so the background is no - * longer inert before the generation is triggered. - */ -async function selectModelThroughSettings(page, value) { - await page.click('.tools [aria-label="Generation settings"]'); - await page - .locator("#composer-settings-modal #code-generator-model") - .selectOption(value); - await page.click("#composer-settings-modal [data-modal-initial-focus]"); -} - /** * Route the pipeline endpoint per stage. `hold` names the stages whose * response the test releases by hand; everything else answers immediately. @@ -282,7 +269,7 @@ test.describe("Recoverable failure states", () => { ); }); await openHome(page, { [ENDPOINTS.getSubscription]: professionalSubscription() }); - await selectModelThroughSettings(page, "anthropic/claude-opus-5"); + await page.locator("#code-generator-model").selectOption("anthropic/claude-opus-5"); let generatorCalls = 0; await page.route(ENDPOINTS.pipeline, async (route) => { const step = stepOf(route); @@ -333,7 +320,7 @@ test.describe("Recoverable failure states", () => { ); }); await openHome(page, { [ENDPOINTS.getSubscription]: professionalSubscription() }); - await selectModelThroughSettings(page, "anthropic/claude-opus-5"); + await page.locator("#code-generator-model").selectOption("anthropic/claude-opus-5"); let generatorCalls = 0; await page.route(ENDPOINTS.pipeline, async (route) => { const step = stepOf(route); diff --git a/e2e/stu385-composer-settings.spec.js b/e2e/stu385-composer-settings.spec.js index 8c90409..1a29ee2 100644 --- a/e2e/stu385-composer-settings.spec.js +++ b/e2e/stu385-composer-settings.spec.js @@ -22,7 +22,11 @@ import { const GEAR = '.tools [aria-label="Generation settings"]'; const SETTINGS = "#composer-settings-modal"; -const MODEL_SELECT = `${SETTINGS} #code-generator-model`; +// The dialog's model selector is a mirror of the canonical #code-generator-model +// that stays on the page; selections made here forward to it, so they reach the +// actual generation request unchanged. +const MODEL_SELECT = `${SETTINGS} #composer-settings-model`; +const FREE_NOTICE = `${SETTINGS} #composer-settings-free-notice`; const PRO_MODEL = "openai/gpt-5.6-sol"; const NON_VISION_PRO_MODEL = "openrouter/deepseek/deepseek-v4-pro"; @@ -87,9 +91,8 @@ test.describe("model availability by subscription tier", () => { // Pro models are labelled and the upgrade action is visible inside the dialog. const proOption = page.locator(`${MODEL_SELECT} option[value="${PRO_MODEL}"]`); await expect(proOption).toContainText("(PRO)"); - await expect( - page.locator(`${SETTINGS} #model-selector-free-notice`), - ).toContainText("Upgrade for all models"); + await expect(page.locator(FREE_NOTICE)).toBeVisible(); + await expect(page.locator(FREE_NOTICE)).toContainText("Upgrade for all models"); // Selecting a gated Pro model never silently grants it: it reverts to the // free model and surfaces the pricing action (the transparent upgrade). @@ -107,14 +110,17 @@ test.describe("model availability by subscription tier", () => { [ENDPOINTS.getSubscription]: professionalSubscription(), }); await page.goto("/"); + // Wait for the subscription to settle (canonical selector is re-labelled on + // resolve) before opening the dialog so its mirror syncs the settled state. + await expect( + page.locator('#code-generator-model option[value="' + PRO_MODEL + '"]'), + ).not.toContainText("(PRO)"); await openSettings(page); const proOption = page.locator(`${MODEL_SELECT} option[value="${PRO_MODEL}"]`); await expect(proOption).toBeEnabled(); await expect(proOption).not.toContainText("(PRO)"); - await expect( - page.locator(`${SETTINGS} #model-selector-free-notice`), - ).toHaveCount(0); + await expect(page.locator(FREE_NOTICE)).toBeHidden(); }); test("an unresolved plan never pretends to be a free-only tier", async ({ page }) => { @@ -124,15 +130,17 @@ test.describe("model availability by subscription tier", () => { [ENDPOINTS.getSubscription]: unresolvedSubscription(), }); await page.goto("/"); + // Let the unresolved contract settle (never labelled a free-only tier). + await expect( + page.locator('#code-generator-model option[value="' + PRO_MODEL + '"]'), + ).not.toContainText("(PRO)"); await openSettings(page); // While the plan can't be resolved, the dialog must not claim a free-only // limitation: no (PRO) gate, no free-only upgrade notice. const proOption = page.locator(`${MODEL_SELECT} option[value="${PRO_MODEL}"]`); await expect(proOption).not.toContainText("(PRO)"); - await expect( - page.locator(`${SETTINGS} #model-selector-free-notice`), - ).toHaveCount(0); + await expect(page.locator(FREE_NOTICE)).toBeHidden(); }); }); @@ -155,6 +163,9 @@ test.describe("the dialog stays wired to the generation request", () => { }); await page.goto("/"); + await expect( + page.locator('#code-generator-model option[value="' + PRO_MODEL + '"]'), + ).not.toContainText("(PRO)"); // await pro entitlement settlement await openSettings(page); await page.locator(MODEL_SELECT).selectOption("anthropic/claude-opus-5"); await closeSettings(page, { via: "done" }); @@ -173,6 +184,9 @@ test.describe("the dialog stays wired to the generation request", () => { [ENDPOINTS.getSubscription]: professionalSubscription(), }); await page.goto("/"); + await expect( + page.locator('#code-generator-model option[value="' + PRO_MODEL + '"]'), + ).not.toContainText("(PRO)"); // await pro entitlement settlement await openSettings(page); const capability = page.locator("#composer-image-capability"); diff --git a/index.html b/index.html index 9e9b0c1..8d0c8e4 100644 --- a/index.html +++ b/index.html @@ -3400,6 +3400,19 @@

    FlutterFlow custom code.
    +
    + + +

    @@ -3949,19 +3962,18 @@

    Generation settings

    - -
    - -
    + + +
    From b392fd8dddb994c3ed81328bf241b5e2f42bfb2a Mon Sep 17 00:00:00 2001 From: Stuart Date: Thu, 24 Sep 2026 04:06:33 +1000 Subject: [PATCH 3/4] STU-385: capture composer-settings dialog screenshots for review Free-tier and paid-tier dialog at 360x800, 1440x900. --- .../stu385-composer-settings-free-1440.png | Bin 0 -> 137545 bytes .../stu385-composer-settings-free-360.png | Bin 0 -> 69108 bytes .../stu385-composer-settings-paid-1440.png | Bin 0 -> 137888 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 screenshots/stu-385/stu385-composer-settings-free-1440.png create mode 100644 screenshots/stu-385/stu385-composer-settings-free-360.png create mode 100644 screenshots/stu-385/stu385-composer-settings-paid-1440.png diff --git a/screenshots/stu-385/stu385-composer-settings-free-1440.png b/screenshots/stu-385/stu385-composer-settings-free-1440.png new file mode 100644 index 0000000000000000000000000000000000000000..e46436aed40761ba25feebb6390511fc0c92aba6 GIT binary patch literal 137545 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 z

    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 literal 0 HcmV?d00001 diff --git a/screenshots/stu-385/stu385-composer-settings-paid-1440.png b/screenshots/stu-385/stu385-composer-settings-paid-1440.png new file mode 100644 index 0000000000000000000000000000000000000000..168ef44d2ca9bab1d4588f8773350c669b455540 GIT binary patch literal 137888 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%0D}MBq%?tf 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 literal 0 HcmV?d00001 From 5b896eda7bf3434cffe100e14b00425ddaccf09c Mon Sep 17 00:00:00 2001 From: Stuart Date: Thu, 24 Sep 2026 04:30:45 +1000 Subject: [PATCH 4/4] =?UTF-8?q?chore(STU-385):=20drop=20dist/=20from=20thi?= =?UTF-8?q?s=20PR=20=E2=80=94=20the=20committed=20artifact=20was=20broken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The branch regenerated dist/index.html and deleted dist/assets/index-oXwmwfKe.js without committing a replacement bundle, so dist/index.html referenced /assets/index-BdVVPYTYC.js while dist/assets held only a font and a CSS file — a built page whose entire application script 404s. dist/ is regenerated by CI (`npm run build`) and by the documented deploy path, and tracked build output is what caused a cross-PR merge conflict earlier today. Reverted to the integration branch's copy; no source change. --- dist/assets/index-oXwmwfKe.js | 318 ++++++++++++++++++++++++++++++++++ dist/index.html | 55 +----- 2 files changed, 320 insertions(+), 53 deletions(-) create mode 100644 dist/assets/index-oXwmwfKe.js diff --git a/dist/assets/index-oXwmwfKe.js b/dist/assets/index-oXwmwfKe.js new file mode 100644 index 0000000..08e6a65 --- /dev/null +++ b/dist/assets/index-oXwmwfKe.js @@ -0,0 +1,318 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();var w=typeof window<"u"?window:void 0,Le=typeof globalThis<"u"?globalThis:w,Ue=Le?.navigator,F=Le?.document,me=Le?.location,Za=Le?.fetch,zo=Le!=null&&Le.XMLHttpRequest&&"withCredentials"in new Le.XMLHttpRequest?Le.XMLHttpRequest:void 0,lc=Le?.AbortController,kp=Le?.CompressionStream,ze=Ue?.userAgent;function rd(){return!(!w||w.navigator.onLine===!1)}var mi=typeof globalThis<"u"?globalThis:w;mi&&typeof self>"u"&&(mi.self=mi),mi&&typeof File>"u"&&(mi.File=function(){});var B=w??{},ne={DEBUG:!1,LIB_VERSION:"0.5.0",LIB_NAME:"browser-common"};function cc(t,e,n,i,r,s,o){try{var a=t[s](o),l=a.value}catch(u){return void n(u)}a.done?e(l):Promise.resolve(l).then(i,r)}function se(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var s=t.apply(e,n);function o(l){cc(s,i,r,o,a,"next",l)}function a(l){cc(s,i,r,o,a,"throw",l)}o(void 0)}))}}function k(){return k=Object.assign?Object.assign.bind():function(t){for(var e=1;arguments.length>e;e++){var n=arguments[e];for(var i in n)({}).hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},k.apply(null,arguments)}function sd(t,e){if(t==null)return{};var n={};for(var i in t)if({}.hasOwnProperty.call(t,i)){if(e.indexOf(i)!==-1)continue;n[i]=t[i]}return n}var uc=t=>{if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}};function dc(t){return typeof t=="string"||t}function fc(t){return typeof t=="string"?t:void 0}var vi,Cp=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain","utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],jt=(function(t){return t.AnonymousId="anonymous_id",t.DistinctId="distinct_id",t.Props="props",t.EnablePersonProcessing="enable_person_processing",t.PersonMode="person_mode",t.FeatureFlagDetails="feature_flag_details",t.FeatureFlags="feature_flags",t.FeatureFlagPayloads="feature_flag_payloads",t.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",t.BootstrapFeatureFlags="bootstrap_feature_flags",t.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",t.OverrideFeatureFlags="override_feature_flags",t.Queue="queue",t.AiQueue="ai_queue",t.LogsQueue="logs_queue",t.OptedOut="opted_out",t.SessionId="session_id",t.SessionStartTimestamp="session_start_timestamp",t.SessionLastTimestamp="session_timestamp",t.PersonProperties="person_properties",t.GroupProperties="group_properties",t.InstalledAppBuild="installed_app_build",t.InstalledAppVersion="installed_app_version",t.SessionReplay="session_replay",t.PushRegistered="push_registered",t.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",t.SurveyLastSeenDate="survey_last_seen_date",t.SurveysSeen="surveys_seen",t.Surveys="surveys",t.RemoteConfig="remote_config",t.FlagsEndpointWasHit="flags_endpoint_was_hit",t.DeviceId="device_id",t})({}),hc=(function(t){return t.GZipJS="gzip-js",t.Base64="base64",t})({}),Ap=["$snapshot","$pageview","$pageleave","$set","survey dismissed","survey sent","survey shown","$identify","$groupidentify","$create_alias","$$client_ingestion_warning","$web_experiment_applied","$feature_enrollment_update","$feature_flag_called"],Pp=["token"],od="NativeGzipValidationError",qo=t=>t.length>=2&&t[0]===31&&t[1]===139,pc=(t,e)=>t===hc.GZipJS||e===hc.GZipJS||e==="gzip",gc=t=>!(!t||typeof t!="object")&&("name"in t?String(t.name):"")==="NotReadableError",dr=t=>{var e=new Error("Native gzip produced invalid output: "+t);throw e.name=od,e},Fp=(function(){var t=se((function*(e,n){18>e.size&&dr("too-short");var i=new Uint8Array(yield e.slice(0,10).arrayBuffer());qo(i)&&i[2]===8||dr("invalid-header");var r=new DataView(yield e.slice(e.size-8).arrayBuffer());r.getUint32(0,!0)!==(o=>{for(var a=(()=>{if(vi)return vi;vi=[];for(var c=0;256>c;c++){for(var d=c,f=0;8>f;f++)d=1&d?3988292384^d>>>1:d>>>1;vi[c]=d>>>0}return vi})(),l=4294967295,u=0;o.length>u;u++)l=a[255&(l^o[u])]^l>>>8;return(4294967295^l)>>>0})(n)&&dr("invalid-crc");var s=n.length>>>0;r.getUint32(4,!0)!==s&&dr("invalid-size")}));return function(e,n){return t.apply(this,arguments)}})();function Vo(){return Vo=se((function*(t,e,n){e===void 0&&(e=!0);try{var i=new TextEncoder().encode(t),r=new globalThis.CompressionStream("gzip"),s=r.writable.getWriter(),o=s.write(i).then((()=>s.close())).catch((function(){var u=se((function*(c){try{yield s.abort(c)}catch{}throw c}));return function(c){return u.apply(this,arguments)}})()),a=new Response(r.readable).blob(),l=(yield Promise.all([a,o]))[0];return yield Fp(l,i),l}catch(u){if(n!=null&&n.rethrow)throw u;return e&&console.error("Failed to gzip compress data",u),null}})),Vo.apply(this,arguments)}var Rp=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],mc=function(t,e){if(e===void 0&&(e=[]),!t)return!1;var n=t.toLowerCase();return Rp.concat(e).some((i=>{var r=i.toLowerCase();return n.indexOf(r)!==-1}))};function j(t,e){return t.indexOf(e)!==-1}var Ss=function(t){return t.trim()},Go=function(t){return t.replace(/^\$/,"")};function ad(t){var e,n=[];return(e=JSON.stringify(t,(function(i,r){if(typeof r=="bigint")return r.toString();if(typeof r!="function"&&typeof r!="symbol"){if(r instanceof Error)return{name:r.name,message:r.message,stack:r.stack};if(r&&typeof r=="object"){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.includes(r))return"[Circular]";n.push(r)}return r}})))!==null&&e!==void 0?e:"null"}var ld=Object.prototype,cd=ld.hasOwnProperty,xs=ld.toString,U=Array.isArray||function(t){return xs.call(t)==="[object Array]"},De=t=>typeof t=="function",he=t=>t===Object(t)&&!U(t),Vt=t=>{if(he(t)){for(var e in t)if(cd.call(t,e))return!1;return!0}return!1},C=t=>t===void 0,X=t=>xs.call(t)=="[object String]",Ko=t=>X(t)&&t.trim().length===0,Ve=t=>t===null,H=t=>C(t)||Ve(t),ke=t=>xs.call(t)=="[object Number]"&&t==t,Bt=t=>ke(t)&&t>0,gt=t=>xs.call(t)==="[object Boolean]",Tp=t=>t instanceof FormData,$p=t=>j(Ap,t),Mp=t=>j(Pp,t);function ud(t){return t===null||typeof t!="object"}function Dr(t,e){return{}.toString.call(t)==="[object "+e+"]"}function Xa(t){return typeof Event<"u"&&dd(t,Event)}function dd(t,e){try{return t instanceof e}catch{return!1}}var Lp=[!0,"true",1,"1","yes"],uo=t=>j(Lp,t),Np=[!1,"false",0,"0","no"];function Ct(t,e,n,i,r){return e>n&&(i.warn("min cannot be greater than max."),e=n),ke(t)?t>n?(i.warn(" cannot be greater than max: "+n+". Using max value instead."),n):e>t?(i.warn(" cannot be less than min: "+e+". Using min value instead."),e):t:(i.warn(" must be a number. using max or fallback. max: "+n+", fallback: "+r),Ct(r||n,e,n,i))}class Op{constructor(e){this.tt={},this.et=e.et,this.it=Ct(e.bucketSize,0,100,e.rt),this.nt=Ct(e.refillRate,0,this.it,e.rt),this.st=Ct(e.refillInterval,0,864e5,e.rt)}ot(e,n){var i=Math.floor((n-e.lastAccess)/this.st);i>0&&(e.tokens=Math.min(e.tokens+i*this.nt,this.it),e.lastAccess=e.lastAccess+i*this.st)}consumeRateLimit(e){var n,i=Date.now(),r=String(e),s=this.tt[r];return s?this.ot(s,i):this.tt[r]=s={tokens:this.it,lastAccess:i},s.tokens===0||(s.tokens--,s.tokens===0&&((n=this.et)==null||n.call(this,e)),s.tokens===0)}stop(){this.tt={}}}var it="Mobile",jr="iOS",Gt="Android",Qn="Tablet",fd=Gt+" "+Qn,hd="iPad",pd="Apple",gd=pd+" Watch",Oi="Safari",ei="BlackBerry",md="Samsung",vd=md+"Browser",_d=md+" Internet",An="Chrome",Bp=An+" OS",yd=An+" "+jr,Qa="Internet Explorer",wd=Qa+" "+it,el="Opera",Dp=el+" Mini",tl="Edge",bd="Microsoft "+tl,Jn="Firefox",Ed=Jn+" "+jr,Vi="Nintendo",Gi="PlayStation",Zn="Xbox",Sd=Gt+" "+it,xd=it+" "+Oi,Ai="Windows",Yo=Ai+" Phone",vc="Nokia",Jo="Ouya",Id="Generic",jp=Id+" "+it.toLowerCase(),kd=Id+" "+Qn.toLowerCase(),Zo="Konqueror",Cd="Oculus Browser",Ur="Vivaldi",Ad="Yandex",Hr="Whale",Xo="DuckDuckGo",Pd="Pale Moon",Wr="Waterfox",Bi="Brave",Fd="Google Search App",we="(\\d+(\\.\\d+)?)",fo=new RegExp("Version/"+we),Up=new RegExp(Zn,"i"),Hp=new RegExp(Gi+" \\w+","i"),Wp=new RegExp(Vi+" \\w+","i"),nl=new RegExp(ei+"|PlayBook|BB10","i"),zp={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},Rd=function(t,e,n,i){e=e||"";var r=(function(s){return s!=null&&s.brave?Bi:null})(n);return r||(i!=null&&i.detectGoogleSearchApp&&j(t,"GSA/")?Fd:j(t," OPR/")&&j(t,"Mini")?Dp:j(t," OPR/")?el:nl.test(t)?ei:j(t,"IE"+it)||j(t,"WPDesktop")?wd:j(t,"OculusBrowser")?Cd:j(t,vd)?_d:j(t,tl)||j(t,"Edg/")?bd:j(t,Ur+"/")?Ur:j(t,"YaBrowser/")?Ad:j(t,Hr+"/")?Hr:j(t,Xo+"/")||j(t,"Ddg/")?Xo:j(t,"FBIOS")?"Facebook "+it:j(t,"UCWEB")||j(t,"UCBrowser")?"UC Browser":j(t,"CriOS")?yd:j(t,"CrMo")||j(t,An)?An:j(t,Gt)&&j(t,Oi)?Sd:j(t,"FxiOS")?Ed:j(t.toLowerCase(),Zo.toLowerCase())?Zo:j(t,Bi+"/")?Bi:((s,o)=>o&&j(o,pd)||(function(a){return j(a,Oi)&&!j(a,An)&&!j(a,Gt)})(s))(t,e)?j(t,it)?xd:Oi:j(t,"PaleMoon/")?Pd:j(t,Wr+"/")?Wr:j(t,Jn)?Jn:j(t,"MSIE")||j(t,"Trident/")?Qa:j(t,"Gecko")?Jn:"")},qp={[wd]:[new RegExp("rv:"+we)],[bd]:[new RegExp(tl+"?\\/"+we)],[An]:[new RegExp("("+An+"|CrMo)\\/"+we)],[yd]:[new RegExp("CriOS\\/"+we)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+we)],[Oi]:[fo],[xd]:[fo],[el]:[new RegExp("(Opera|OPR)\\/"+we)],[Jn]:[new RegExp(Jn+"\\/"+we)],[Ed]:[new RegExp("FxiOS\\/"+we)],[Zo]:[new RegExp("Konqueror[:/]?"+we,"i")],[ei]:[new RegExp(ei+" "+we),fo],[Sd]:[new RegExp("android\\s"+we,"i")],[_d]:[new RegExp(vd+"\\/"+we)],[Cd]:[new RegExp("OculusBrowser\\/"+we)],[Ur]:[new RegExp(Ur+"\\/"+we)],[Ad]:[new RegExp("YaBrowser\\/"+we)],[Hr]:[new RegExp(Hr+"\\/"+we)],[Bi]:[new RegExp(Bi+"\\/"+we)],[Xo]:[new RegExp("(DuckDuckGo|Ddg)\\/"+we)],[Pd]:[new RegExp("PaleMoon\\/"+we)],[Wr]:[new RegExp(Wr+"\\/"+we)],[Fd]:[new RegExp("GSA\\/"+we)],[Qa]:[new RegExp("(rv:|MSIE )"+we)],Mozilla:[new RegExp("rv:"+we)]},Vp=function(t,e,n,i){var r=Rd(t,e,n,i),s=qp[r];if(C(s))return null;for(var o=0;s.length>o;o++){var a=t.match(s[o]);if(a)return parseFloat(a[a.length-2])}return null},_c=[[new RegExp(Zn+"; "+Zn+" (.*?)[);]","i"),t=>[Zn,t&&t[1]||""]],[new RegExp(Vi,"i"),[Vi,""]],[new RegExp(Gi,"i"),[Gi,""]],[nl,[ei,""]],[new RegExp(Ai,"i"),(t,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[Yo,""];if(new RegExp(it).test(e)&&!/IEMobile\b/.test(e))return[Ai+" "+it,""];var n=/Windows NT ([0-9.]+)/i.exec(e);if(n&&n[1]){var i=zp[n[1]]||"";return/arm/i.test(e)&&(i="RT"),[Ai,i]}return[Ai,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,t=>t&&t[3]?[jr,[t[3],t[4],t[5]||"0"].join(".")]:[jr,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,t=>{var e="";return t&&t.length>=3&&(e=C(t[2])?t[3]:t[2]),["watchOS",e]}],[new RegExp("("+Gt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Gt+")","i"),t=>t&&t[2]?[Gt,[t[2],t[3],t[4]||"0"].join(".")]:[Gt,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,t=>{var e=["Mac OS X",""];return t&&t[1]&&(e[1]=[t[1],t[2],t[3]||"0"].join(".")),e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Bp,""]],[/Linux|debian/i,["Linux",""]]],yc=function(t){return Wp.test(t)?Vi:Hp.test(t)?Gi:Up.test(t)?Zn:new RegExp(Jo,"i").test(t)?Jo:new RegExp("("+Yo+"|WPDesktop)","i").test(t)?Yo:/iPad/.test(t)?hd:/iPod/.test(t)?"iPod Touch":/iPhone/.test(t)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(t)?gd:nl.test(t)?ei:/(kobo)\s(ereader|touch)/i.test(t)?"Kobo":new RegExp(vc,"i").test(t)?vc:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(t)||/(kf[a-z]+)( bui|\)).+silk\//i.test(t)?"Kindle Fire":/(Android|ZTE)/i.test(t)?new RegExp(it).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?Gt:fd:new RegExp("(pda|"+it+")","i").test(t)?jp:new RegExp(Qn,"i").test(t)&&!new RegExp(Qn+" pc","i").test(t)?kd:""},Gp=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function wc(t,e){return typeof(n=t)=="string"&&Gp.test(n)?t:e();var n}function dn(t){return t&&t.split("#")[0]}function il(t,e){var n=setTimeout(t,e);return n?.unref&&n?.unref(),n}function bc(t,e,n){return Td.apply(this,arguments)}function Td(){return(Td=se((function*(t,e,n){var i;try{return yield Promise.race([t,new Promise(((r,s)=>{i=il((()=>{try{n?.(),r()}catch(o){s(o)}}),e)}))])}finally{clearTimeout(i)}}))).apply(this,arguments)}var Kp=t=>t instanceof Error,$d={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},Yp=$d.info;function Md(t){if(gt(t))return{boolValue:t};if(typeof t=="number")return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if(typeof t=="string")return{stringValue:t};if(U(t))return{arrayValue:{values:t.map((e=>Md(e)))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}function zr(t){var e=[];for(var n in t){var i=t[n];Ve(i)||C(i)||e.push({key:n,value:Md(i)})}return e}function Jp(t,e){var n=$d[t.level||"info"]||Yp,i=n.text,r=n.number,s=String(Date.now())+"000000",o={};e.distinctId&&(o.posthogDistinctId=e.distinctId),e.sessionId&&(o.sessionId=e.sessionId),e.windowId&&(o["window.id"]=e.windowId),H(e.sessionStartTimestamp)||(o.sessionStartTimestamp=String(e.sessionStartTimestamp)),H(e.lastActivityTimestamp)||(o.lastActivityTimestamp=String(e.lastActivityTimestamp)),e.currentUrl&&(o["url.full"]=e.currentUrl),e.screenName&&(o["screen.name"]=e.screenName),e.appState&&(o["app.state"]=e.appState),e.activeFeatureFlags&&e.activeFeatureFlags.length>0&&(o.feature_flags=e.activeFeatureFlags);var a=k({},o,t.attributes||{}),l={timeUnixNano:s,observedTimeUnixNano:s,severityNumber:r,severityText:i,body:{stringValue:t.body},attributes:zr(a)};return t.trace_id&&(l.traceId=t.trace_id),t.span_id&&(l.spanId=t.span_id),C(t.trace_flags)||(l.flags=t.trace_flags),l}function Ld(t,e,n){return k({},t.resourceAttributes,{"service.name":t.serviceName||"unknown_service"},t.environment&&{"deployment.environment":t.environment},t.serviceVersion&&{"service.version":t.serviceVersion},{"telemetry.sdk.name":e,"telemetry.sdk.version":n})}function Nd(t,e,n,i){return{resourceLogs:[{resource:{attributes:zr(e)},scopeLogs:[{scope:{name:n,version:i},logRecords:t}]}]}}let Zp=class{constructor(t,e,n,i,r,s,o){var a;s===void 0&&(s=()=>Promise.resolve()),this._instance=t,this.Ne=e,this.rt=n,this.ut=i,this.ht=r,this.dt=s,this.vt=o,this.ct=null,this.ft=0,this.yt=0,this.bt=0,this._t=0,this.wt=!1,this.kt=e.maxBufferSize,this.xt=Math.max((a=e.maxQueueSize)!==null&&a!==void 0?a:e.maxBufferSize,e.maxBufferSize),this.St=e.flushIntervalMs,this.Ct=e.maxBatchRecordsPerPost,this.Mt=e.rateCapWindowMs,this.Tt=e.maxLogsPerInterval}reset(){this.Et(),this.ct=null,this.bt=0,this._t=0,this.wt=!1,this.ft=0,this.yt=0,this.Ct=this.Ne.maxBatchRecordsPerPost}onReconnect(){this.yt=0,this.It()}captureLog(t){if(!this._instance.isDisabled&&!this._instance.optedOut&&t!=null&&t.body){var e=this.Pt(t);if(e!==null)if(e.body){if(this.Rt()){var n={record:Jp(e,this.ut())};this.ht((()=>this.At(n)))}}else this.rt.info("Log was rejected in beforeSend function")}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=U(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Log was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for log:",o),null}return i}Rt(){if(this.Tt===void 0)return!0;var t=Date.now(),e=t-this.bt;return this.Mt>e&&e>=0||(this.bt=t,this._t=0,this.wt=!1),this.Tt>this._t?(this._t++,!0):(this.wt||(this.rt.warn("captureLog dropping logs: exceeded "+this.Tt+" logs per "+this.Mt+"ms"),this.wt=!0),!1)}flush(){var t=this;return se((function*(){if(!t._instance.isDisabled)return t.ct||(t.ct=t.Ft().finally((()=>{t.ct=null}))),t.ct}))()}Ft(){var t=this;return se((function*(){var e;t.Et();var n=(e=t._instance.getPersistedProperty(jt.LogsQueue))!==null&&e!==void 0?e:[];if(n.length!==0)for(var i=n.length,r=0;n.length>0&&i>r;){var s,o;t.ft=0;var a=Math.min(n.length,t.Ct),l=n.slice(0,a),u=Nd(l.map((d=>d.record)),t.Lt(),(s=t.vt)!==null&&s!==void 0?s:t._instance.getLibraryId(),t._instance.getLibraryVersion()),c=yield t._instance.Ot(u);if(c.kind==="too-large"&&l.length>1)t.Ct=Math.max(1,Math.floor(l.length/2)),t.rt.warn("Received 413 when sending logs batch of size "+l.length+", reducing batch size to "+t.Ct);else if(c.kind==="retry-later"||(c.kind==="too-large"?t.rt.warn("Dropping a single log record after 413 with batch size 1 — the record is larger than the server cap and cannot be split further."):c.kind==="ok"&&t.Ne.maxBatchRecordsPerPost>t.Ct&&(t.Ct=Math.min(t.Ne.maxBatchRecordsPerPost,t.Ct+1)),yield t.Dt(l.length),n=(o=t._instance.getPersistedProperty(jt.LogsQueue))!==null&&o!==void 0?o:[],r+=l.length,c.kind==="fatal"))throw c.error}}))()}Dt(t){var e=this;return se((function*(){var n,i=Math.max(0,t-e.ft),r=(n=e._instance.getPersistedProperty(jt.LogsQueue))!==null&&n!==void 0?n:[];e._instance.setPersistedProperty(jt.LogsQueue,r.slice(i)),yield e.dt()}))()}Lt(){return Ld(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion())}At(t){var e;if(!this._instance.optedOut){var n=(e=this._instance.getPersistedProperty(jt.LogsQueue))!==null&&e!==void 0?e:[];this.xt>n.length||(n.shift(),this.ft++,this.rt.info("Logs queue is full, dropping oldest record.")),n.push(t),this._instance.setPersistedProperty(jt.LogsQueue,n),this.kt>n.length?this.$t():this.It()}}$t(t){t===void 0&&(t=this.St),this.Nt||(this.Nt=il((()=>{this.Nt=void 0,this.It()}),t))}qt(){var t=Math.min(Math.max(0,this.yt-1),6);return this.St*Math.pow(2,t)}jt(){var t=this._instance.getPersistedProperty(jt.LogsQueue);return!!t&&t.length>0}shutdown(t){var e=this;return se((function*(){e.Et();var n=e.flush().catch((()=>{}));t!==void 0?yield bc(n,t):yield n}))()}flushWithTimeout(t){var e=this;return se((function*(){var n=e.flush();yield bc(n,t,(()=>{n.catch((()=>{}))}))}))()}It(){this.flush().then((()=>{this.yt=0}),(t=>{this.yt++,this.rt.error("PostHog logs flush failed:",t)})).finally((()=>{!this._instance.isDisabled&&this.jt()&&this.$t(this.qt())}))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}};var ho=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function Ec(t){return String(t)+"000000"}function Sc(t,e,n,i){var r="";return i&&(r=Object.keys(i).sort().map((s=>JSON.stringify(s)+":"+JSON.stringify(i[s]))).join(",")),t+"\0"+e+"\0"+(n??"")+"\0"+r}let Xp=class{constructor(t,e,n){this._instance=t,this.Ne=e,this.rt=n,this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Wt=0}count(t,e,n){e===void 0&&(e=1),this.Vt({name:t,type:"count",value:e,unit:n?.unit,attributes:n?.attributes})}gauge(t,e,n){this.Vt({name:t,type:"gauge",value:e,unit:n?.unit,attributes:n?.attributes})}histogram(t,e,n){this.Vt({name:t,type:"histogram",value:e,unit:n?.unit,attributes:n?.attributes})}flush(){var t=this,e=this.ct,n=(function(){var r=se((function*(){e&&(yield e.catch((()=>{}))),yield t.Zt()}));return function(){return r.apply(this,arguments)}})(),i=n().finally((()=>{this.ct===i&&(this.ct=null)}));return this.ct=i,i}drainWindow(){if(this.Bt.size===0)return null;var t=this.Bt;return this.Bt=new Map,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Gt(t)}reset(){this.Wt++,this.Et(),this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set}Vt(t){if(!this._instance.isDisabled&&!this._instance.optedOut){var e=this.Pt(t);if(e!==null)if(e.name&&typeof e.name=="string")if(typeof e.value=="number"&&Number.isFinite(e.value))if(e.type==="count"&&0>e.value)this.rt.warn("Dropping count '"+e.name+"': counters are monotonic, value must be >= 0");else{var n,i;try{n=e.attributes?k({},e.attributes):void 0,i=Sc(e.type,e.name,e.unit,n)}catch(o){return void this.rt.warn("Dropping metric '"+e.name+"': attributes could not be serialized",o)}var r=this.Bt.get(i);if(!r){if(!this.Qt())return;r={name:e.name,type:e.type,unit:e.unit,attributes:n,windowStartMs:Date.now()},this.Bt.set(i,r)}var s=this.Ut.get(e.name);s===void 0?this.Ut.set(e.name,e.type):s===e.type||this.zt.has(e.name)||(this.zt.add(e.name),this.rt.warn("Metric name '"+e.name+"' is already used as a "+s+"; recording it as a "+e.type+" too will blend both series in charts. Use a distinct name.")),this.Kt(r,e.value),this.$t()}else this.rt.warn("Dropping metric '"+e.name+"': value must be a finite number");else this.rt.warn("Dropping metric with empty name")}}Qt(){return this.Ne.maxSeriesPerFlush>this.Bt.size||(this.Ht||(this.Ht=!0,this.rt.warn("Metric series cap reached ("+this.Ne.maxSeriesPerFlush+" per flush window); dropping new series until the next flush. Reduce attribute cardinality.")),!1)}Kt(t,e){var n;switch(t.type){case"count":t.total=((n=t.total)!==null&&n!==void 0?n:0)+e;break;case"gauge":t.last=e;break;case"histogram":t.hist||(t.hist={count:0,sum:0,min:e,max:e,bucketCounts:new Array(ho.length+1).fill(0)});var i=t.hist;i.count+=1,i.sum+=e,i.min=Math.min(i.min,e),i.max=Math.max(i.max,e),i.bucketCounts[(function(r,s){for(var o=0;s.length>o;o++)if(s[o]>=r)return o;return s.length})(e,ho)]+=1}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=U(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Metric was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for metric:",o),null}return i}$t(){this.Nt||(this.Nt=il((()=>{this.Nt=void 0,this.flush().catch((t=>{this.rt.error("Metrics flush failed:",t)}))}),this.Ne.flushIntervalMs))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}Zt(){var t=this;return se((function*(){if(t.Bt.size!==0){var e=t.Bt;t.Bt=new Map,t.Ht=!1,t.Ut=new Map,t.zt=new Set;var n=t.Wt,i=yield t._instance.Jt(t.Gt(e));if(n===t.Wt)switch(i.kind){case"ok":return;case"retry-later":return t.Yt(e),void t.$t();case"too-large":return void t.rt.warn("Metrics batch exceeded the server size limit and was dropped");case"fatal":return void t.rt.error("Failed to send metrics batch:",i.error)}}}))()}Gt(t){return e=this.Xt(t),n=(function(s,o,a){return k({},s.resourceAttributes,{"service.name":s.serviceName||"unknown_service"},s.environment&&{"deployment.environment":s.environment},s.serviceVersion&&{"service.version":s.serviceVersion},{"telemetry.sdk.name":o,"telemetry.sdk.version":a})})(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion()),i=this._instance.getLibraryId(),r=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:zr(n)},scopeMetrics:[{scope:{name:i,version:r},metrics:e}]}]};var e,n,i,r}Xt(t){var e=Ec(Date.now()),n=new Map;for(var i of t.values()){var r,s=Sc(i.type,i.name,i.unit,void 0),o=n.get(s);o||(o=k({name:i.name},i.unit&&{unit:i.unit}),i.type==="count"?o.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?o.gauge={dataPoints:[]}:o.histogram={aggregationTemporality:1,dataPoints:[]},n.set(s,o));var a=zr((r=i.attributes)!==null&&r!==void 0?r:{}),l=Ec(i.windowStartMs);if(i.type==="count"){var u,c={attributes:a,startTimeUnixNano:l,timeUnixNano:e,asDouble:(u=i.total)!==null&&u!==void 0?u:0};o.sum.dataPoints.push(c)}else if(i.type==="gauge"){var d,f={attributes:a,timeUnixNano:e,asDouble:(d=i.last)!==null&&d!==void 0?d:0};o.gauge.dataPoints.push(f)}else i.hist&&o.histogram.dataPoints.push({attributes:a,startTimeUnixNano:l,timeUnixNano:e,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:ho})}return Array.from(n.values())}Yt(t){var e,n;for(var i of t){var r=i[0],s=i[1],o=this.Bt.get(r);if(o)switch(o.windowStartMs=Math.min(o.windowStartMs,s.windowStartMs),o.type){case"count":o.total=((e=o.total)!==null&&e!==void 0?e:0)+((n=s.total)!==null&&n!==void 0?n:0);break;case"gauge":break;case"histogram":if(s.hist)if(o.hist){o.hist.count+=s.hist.count,o.hist.sum+=s.hist.sum,o.hist.min=Math.min(o.hist.min,s.hist.min),o.hist.max=Math.max(o.hist.max,s.hist.max);for(var a=0;o.hist.bucketCounts.length>a;a++)o.hist.bucketCounts[a]+=s.hist.bucketCounts[a]}else o.hist=s.hist}else this.Qt()&&this.Bt.set(r,s)}}};var fr,xc,po;function Qp(t){var e=globalThis._posthogChunkIds;if(e){var n=Object.keys(e);return po&&n.length===xc||(xc=n.length,po=n.reduce(((i,r)=>{fr||(fr={});var s=fr[r];if(s)i[s[0]]=s[1];else for(var o=t(r),a=o.length-1;a>=0;a--){var l=o[a],u=l?.filename,c=e[r];if(u&&c){i[u]=c,fr[r]=[u,c];break}}return i}),{})),po}}class eg{constructor(e,n,i){i===void 0&&(i=[]),this.coercers=e,this.stackParser=n,this.modifiers=i}buildFromUnknown(e,n){n===void 0&&(n={});var i=n&&n.mechanism||{handled:!0,type:"generic"},r=this.buildCoercingContext(i,n,0).apply(e),s=this.buildParsingContext(n),o=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(o,i),$exception_level:"error"}}modifyFrames(e){var n=this;return se((function*(){for(var i of e)i.stacktrace&&i.stacktrace.frames&&U(i.stacktrace.frames)&&(i.stacktrace.frames=yield n.applyModifiers(i.stacktrace.frames));return e}))()}coerceFallback(e){var n;return{type:"Error",value:"Unknown error",stack:(n=e.syntheticException)==null?void 0:n.stack,synthetic:!0}}parseStacktrace(e,n){var i,r;return e.cause!=null&&(i=this.parseStacktrace(e.cause,n)),e.stack!=""&&e.stack!=null&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?n.skipFirstLines:0),n.chunkIdMap)),k({},e,{cause:i,stack:r})}applyChunkIds(e,n){return e.map((i=>(i.filename&&n&&(i.chunk_id=n[i.filename]),i)))}applyCoercers(e,n){for(var i of this.coercers)if(i.match(e))return i.coerce(e,n);return this.coerceFallback(n)}applyModifiers(e){var n=this;return se((function*(){var i=e;for(var r of n.modifiers)i=yield r(i);return i}))()}convertToExceptionList(e,n){var i,r,s,o={type:e.type,value:e.value,mechanism:{type:(i=n.type)!==null&&i!==void 0?i:"generic",handled:(r=n.handled)===null||r===void 0||r,synthetic:(s=e.synthetic)!==null&&s!==void 0&&s}};e.stack&&(o.stacktrace={type:"raw",frames:e.stack});var a=[o];return e.cause!=null&&a.push(...this.convertToExceptionList(e.cause,k({},n,{handled:!0}))),a}buildParsingContext(e){var n;return{chunkIdMap:Qp(this.stackParser),skipFirstLines:(n=e.skipFirstLines)!==null&&n!==void 0?n:1}}buildCoercingContext(e,n,i){i===void 0&&(i=0);var r=(s,o)=>{if(4>=o){var a=this.buildCoercingContext(e,n,o);return this.applyCoercers(s,a)}};return k({},n,{syntheticException:i==0?n.syntheticException:void 0,mechanism:e,apply:s=>r(s,i),next:s=>r(s,i+1)})}}var ti="?";function Qo(t,e,n,i,r){var s={platform:t,filename:e,function:n===""?ti:n,in_app:!0};return C(i)||(s.lineno=i),C(r)||(s.colno=r),s}var Od=(t,e)=>{var n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:ti,n?"safari-extension:"+e:"safari-web-extension:"+e]:[t,e]},tg=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,ng=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ig=/\((\S*)(?::(\d+))(?::(\d+))\)/,rg=(t,e)=>{var n=tg.exec(t);if(n)return Qo(e,n[1],ti,+n[2],+n[3]);var i=ng.exec(t);if(i){if(i[2]&&i[2].indexOf("eval")===0){var r=ig.exec(i[2]);r&&(i[2]=r[1],i[3]=r[2],i[4]=r[3])}var s=Od(i[1]||ti,i[2]);return Qo(e,s[1],s[0],i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},sg=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,og=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ag=(t,e)=>{var n=sg.exec(t);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var i=og.exec(n[3]);i&&(n[1]=n[1]||"eval",n[3]=i[1],n[4]=i[2],n[5]="")}var r=n[3],s=n[1]||ti,o=Od(s,r);return Qo(e,r=o[1],s=o[0],n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}},Ic=/\(error: (.*)\)/;class lg{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,n){var i=X(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:i?e.stack:void 0,cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var n=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?n+": "+e.message:n}isDOMException(e){return Dr(e,"DOMException")}isDOMError(e){return Dr(e,"DOMError")}}class cg{match(e){return(function(n){switch({}.toString.call(n)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object DOMError]":case"[object WebAssembly.Exception]":return!0;default:return dd(n,Error)}})(e)}coerce(e,n){return{type:this.getType(e),value:this.getMessage(e,n),stack:this.getStack(e),cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,n){var i=e.message;return String(i.error&&typeof i.error.message=="string"?i.error.message:i)}getStack(e){return e.stacktrace||e.stack||void 0}}class ug{constructor(){}match(e){return!!Dr(e,"ErrorEvent")&&(e.error!=null||this.fe(e))}coerce(e,n){var i;if(e.error!=null)return n.apply(e.error);var r=n.apply(e.message);return k({},r,{stack:(i=this.pe(e))!==null&&i!==void 0?i:r.stack,synthetic:!0})}fe(e){return X(e.message)&&e.message.length>0}pe(e){var n=e;if(X(n.filename)&&n.filename.length>0){var i,r,s=(i=n.lineno)!==null&&i!==void 0?i:0,o=(r=n.colno)!==null&&r!==void 0?r:0;return`Error + at `+n.filename+":"+s+":"+o}}}var dg=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class fg{match(e){return typeof e=="string"}coerce(e,n){var i,r=this.getInfos(e),s=r[0],o=r[1];return{type:s??"Error",value:o??e,stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}getInfos(e){var n="Error",i=e,r=e.match(dg);return r&&(n=r[1],i=r[2]),[n,i]}}var hg=["fatal","error","warning","log","info","debug"];function Bd(t,e){e===void 0&&(e=40);var n=Object.keys(t);if(n.sort(),!n.length)return"[object has no keys]";for(var i=n.length;i>0;i--){var r=n.slice(0,i).join(", ");if(e>=r.length)return i===n.length?r:r.length>e?r.slice(0,e)+"...":r}return""}class pg{match(e){return typeof e=="object"&&e!==null}coerce(e,n){var i,r,s=this.getErrorPropertyFromObject(e);return s?n.apply(s):{type:this.getType(e),value:this.getValue(e),stack:(i=this.getStack(e))!==null&&i!==void 0?i:(r=n.syntheticException)==null?void 0:r.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return Xa(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var n="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(n+=" with message: '"+e.message+"'"),n}if("message"in e&&typeof e.message=="string")return e.message;var i=this.getObjectClassName(e);return(i&&i!=="Object"?"'"+i+"'":"Object")+" captured as exception with keys: "+Bd(e)}isSeverityLevel(e){return X(e)&&!Ko(e)&&hg.indexOf(e)>=0}getStack(e){try{return X(e.stacktrace)&&e.stacktrace.length>0?e.stacktrace:X(e.stack)&&e.stack.length>0?e.stack:void 0}catch{return}}getErrorPropertyFromObject(e){for(var n in e)if({}.hasOwnProperty.call(e,n)){var i=e[n];if(Kp(i))return i}}getObjectClassName(e){try{var n=Object.getPrototypeOf(e);return n?n.constructor.name:void 0}catch{return}}}class gg{match(e){return Xa(e)}coerce(e,n){var i,r=e.constructor.name;return{type:r,value:r+" captured as exception with keys: "+Bd(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class mg{match(e){return ud(e)}coerce(e,n){var i;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class vg{match(e){return Dr(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!Xa(e))return!1;try{var n=e.detail;return n!=null&&typeof n=="object"&&"reason"in n}catch{return!1}}coerce(e,n){var i,r=this.getUnhandledRejectionReason(e);return ud(r)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(r),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}:n.apply(r)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var qr="$message",Vr="$timestamp",_g=new Set([qr,Vr]),go={enabled:!0,max_bytes:32768};function Gr(t){var e;return t?{enabled:(e=t.enabled)!==null&&e!==void 0?e:go.enabled,max_bytes:wg(t.max_bytes,go.max_bytes)}:k({},go)}class yg{constructor(e){this.Ke=[],this.Je=0,this.Ne=Gr(e)}setConfig(e){this.Ne=Gr(e),this.Xe()}add(e){var n=(function(r){var s;try{s=ad(r)}catch{return}try{var o=JSON.parse(s);if(!he(o))return;var a=o,l=a[qr],u=a[Vr];return!X(l)||l.trim().length===0||!X(u)&&!ke(u)?void 0:{step:a,json:s}}catch{return}})(e);if(n){var i=(function(r){if(typeof TextEncoder<"u")return new TextEncoder().encode(r).length;for(var s=encodeURIComponent(r),o=0,a=0;s.length>a;a++)s[a]==="%"?(o+=1,a+=2):o+=1;return o})(n.json);i>this.Ne.max_bytes||(this.Ke.push({step:n.step,bytes:i}),this.Je+=i,this.Xe())}}getAttachable(){return this.Ke.map((e=>e.step))}clear(){this.Ke=[],this.Je=0}size(){return this.Ke.length}Xe(){for(;this.Je>this.Ne.max_bytes&&this.Ke.length>0;){var e=this.Ke.shift();e&&(this.Je-=e.bytes)}}}function wg(t,e){if(!ke(t)||t===1/0||t===-1/0)return e;var n=Math.floor(t);return 0>n?e:n}var Dd=function(t,e){var n=(e===void 0?{}:e).debugEnabled,i={k(r){if(w&&(ne.DEBUG||w.POSTHOG_DEBUG||n)&&!C(w.console)&&w.console){for(var s=("__rrweb_original__"in w.console[r])?w.console[r].__rrweb_original__:w.console[r],o=arguments.length,a=new Array(o>1?o-1:0),l=1;o>l;l++)a[l-1]=arguments[l];s(t,...a)}},debug(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("debug",...s)},info(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("log",...s)},warn(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("warn",...s)},error(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("error",...s)},critical(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];console.error(t,...s)},uninitializedWarning(r){i.error("You must initialize PostHog before calling "+r)},createLogger:(r,s)=>Dd(t+" "+r,s)};return i},A=Dd("[PostHog.js]"),pe=A.createLogger,bg=pe("[ExternalScriptsLoader]"),mo=(t,e,n)=>{if(t.config.disable_external_dependency_loading)return bg.warn(e+" was requested but loading of external scripts is disabled."),n("Loading of external scripts is disabled");var i=F?.querySelectorAll("script");if(i){for(var r,s=function(){if(i[o].src===e){var l=i[o];return l.__posthog_loading_callback_fired?{v:n()}:(l.addEventListener("load",(u=>{l.__posthog_loading_callback_fired=!0,n(void 0,u)})),l.onerror=u=>n(u),{v:void 0})}},o=0;i.length>o;o++)if(r=s())return r.v}var a=()=>{if(!F)return n("document not found");var l=F.createElement("script");if(l.type="text/javascript",l.crossOrigin="anonymous",l.src=e,l.onload=d=>{l.__posthog_loading_callback_fired=!0,n(void 0,d)},l.onerror=d=>n(d),t.config.prepare_external_dependency_script&&(l=t.config.prepare_external_dependency_script(l)),!l)return n("prepare_external_dependency_script returned null");if(t.config.external_scripts_inject_target==="head")F.head.appendChild(l);else{var u,c=F.querySelectorAll("body > script");c.length>0?(u=c[0].parentNode)==null||u.insertBefore(l,c[0]):F.body.appendChild(l)}};F!=null&&F.body?a():F?.addEventListener("DOMContentLoaded",a)};B.__PosthogExtensions__=B.__PosthogExtensions__||{},B.__PosthogExtensions__.loadExternalDependency=(t,e,n)=>{if(e!=="remote-config"){var i;if(t.config.strict_script_versioning)i=t.requestRouter.endpointFor("assets","/static/"+t.version+"/"+e+".js");else{var r="/static/"+e+".js?v="+t.version;if(e==="toolbar"){var s=3e5;r=r+"&t="+Math.floor(Date.now()/s)*s}i=t.requestRouter.endpointFor("assets",r)}mo(t,i,n)}else{var o=t.requestRouter.endpointFor("assets","/array/"+t.config.token+"/config.js");mo(t,o,n)}},B.__PosthogExtensions__.loadSiteApp=(t,e,n)=>{var i=t.requestRouter.endpointFor("api",e);mo(t,i,n)};ne.DEBUG=!1,ne.LIB_VERSION="1.415.7",ne.LIB_NAME="web";var jd="$people_distinct_id",Ki="$device_id",vo="$device_model",Pi="__alias",Fi="__timers",ea="$autocapture_disabled_server_side",ta="$heatmaps_enabled_server_side",na="$exception_capture_enabled_server_side",ia="$error_tracking_suppression_rules",ra="$error_tracking_capture_extension_exceptions",sa="$web_vitals_enabled_server_side",rl="$dead_clicks_enabled_server_side",sl="$product_tours_enabled_server_side",oa="$web_vitals_allowed_metrics",Cn="$session_recording_remote_config",Ud="$replay_sample_rate",Hd="$replay_override_sampling",Wd="$replay_override_linked_flag",zd="$replay_override_url_trigger",qd="$replay_override_event_trigger",Gn="$sesid",ol="$session_is_sampled",En="$enabled_feature_flags",Ri="$active_feature_flags",Ir="$early_access_features",aa="$feature_flag_details",Ti="$feature_flag_payloads",kr="$feature_flag_request_id",Kr="$minimal_flag_called_events",xt="$override_feature_flags",Sn="$override_feature_flag_payloads",Dt="$stored_person_properties",xn="$stored_group_properties",la="$surveys",Yr="$surveys_loaded_at",ca="$surveys_activated",Cr="$surveys_activated_session",Ar="$surveys_activated_timestamps",$i="ph_product_tours",kn="$flag_call_reported",Mi="$flag_call_reported_session_id",Pr="$feature_flag_errors",Di="$feature_flag_evaluated_at",ot="$user_state",ua="$client_session_props",da="$capture_rate_limit",fa="$initial_campaign_params",ha="$initial_referrer_info",Jr="$initial_person_info",Zr="$epp",hr="$posthog_cookieless",Vd="$cookieless_mode",Gd="$sdk_debug_extensions_init_method",Kd="$sdk_debug_extensions_init_time_ms",Yd="$sdk_debug_recording_script_not_loaded",al="PostHog loadExternalDependency extension not found.",In="on_reject",Ht="always",jn="anonymous",mn="identified",pa="identified_only",Xr="visibilitychange",Qr="beforeunload",qn="$pageview",_o="$pageleave",yo="$identify",kc="$groupidentify";function pr(t,e){U(t)&&t.forEach(e)}function ie(t,e){if(!H(t))if(U(t))t.forEach(e);else if(Tp(t))t.forEach(((i,r)=>e(i,r)));else for(var n in t)cd.call(t,n)&&e(t[n],n)}var fe=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;e>i;i++)n[i-1]=arguments[i];for(var r of n)for(var s in r)r[s]!==void 0&&(t[s]=r[s]);return t};function Fr(t){for(var e=Object.keys(t),n=e.length,i=new Array(n);n--;)i[n]=[e[n],t[e[n]]];return i}var Cc=function(t){try{return t()}catch{return}},Eg=function(t){return function(){try{for(var e=arguments.length,n=new Array(e),i=0;e>i;i++)n[i]=arguments[i];return t.apply(this,n)}catch(r){A.critical("Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A."),A.critical(r)}}},ll=function(t){var e={};return ie(t,(function(n,i){(X(n)&&n.length>0||ke(n))&&(e[i]=n)})),e},Sg=["herokuapp.com","vercel.app","netlify.app"];function xg(t){var e=t?.hostname;if(!X(e))return!1;var n=e.split(".").slice(-2).join(".");for(var i of Sg)if(n===i)return!1;return!0}function ve(t,e,n,i){var r=i??{},s=r.capture,o=r.passive;t?.addEventListener(e,n,{capture:s!==void 0&&s,passive:o===void 0||o})}function ga(t){return t.name==="ph_toolbar_internal"}var Jd=t=>{if(F){try{for(var e=t+"=",n=F.cookie.split(";").filter((s=>s.length)),i=0;n.length>i;i++){for(var r=n[i];r.charAt(0)==" ";)r=r.substring(1,r.length);if(r.indexOf(e)===0)return decodeURIComponent(r.substring(e.length,r.length))}}catch{}return null}};Math.trunc||(Math.trunc=function(t){return 0>t?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return ke(t)&&isFinite(t)&&Math.floor(t)===t});class es{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,n,i,r){if(!Number.isInteger(e)||!Number.isInteger(n)||!Number.isInteger(i)||!Number.isInteger(r)||0>e||0>n||0>i||0>r||e>0xffffffffffff||n>4095||i>1073741823||r>4294967295)throw new RangeError("invalid field value");var s=new Uint8Array(16);return s[0]=e/Math.pow(2,40),s[1]=e/Math.pow(2,32),s[2]=e/Math.pow(2,24),s[3]=e/Math.pow(2,16),s[4]=e/256,s[5]=e,s[6]=112|n>>>8,s[7]=n,s[8]=128|i>>>24,s[9]=i>>>16,s[10]=i>>>8,s[11]=i,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new es(s)}toString(){for(var e="",n=0;this.bytes.length>n;n++)e=e+(this.bytes[n]>>>4).toString(16)+(15&this.bytes[n]).toString(16),n!==3&&n!==5&&n!==7&&n!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new es(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var n=0;16>n;n++){var i=this.bytes[n]-e.bytes[n];if(i!==0)return Math.sign(i)}return 0}}class Ig{generate(){var e=this.generateOrAbort();if(!C(e))return e;this.S=0;var n=this.generateOrAbort();if(C(n))throw new Error("Could not generate UUID after timestamp reset");return n}generateOrAbort(){var e=Date.now();if(e>this.S)this.S=e,this.C();else{if(this.S>=e+1e4)return;this.I++,this.I>4398046511103&&(this.S++,this.C())}return es.fromFieldsV7(this.S,Math.trunc(this.I/Math.pow(2,30)),this.I&Math.pow(2,30)-1,this.A.nextUint32())}C(){this.I=1024*this.A.nextUint32()+(1023&this.A.nextUint32())}constructor(){this.S=0,this.I=0,this.A=new kg}}var Ac,Zd=t=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;t.length>e;e++)t[e]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};w&&!C(w.crypto)&&crypto.getRandomValues&&(Zd=t=>crypto.getRandomValues(t));class kg{nextUint32(){return this.R.length>this.O||(Zd(this.R),this.O=0),this.R[this.O++]}constructor(){this.R=new Uint32Array(8),this.O=1/0}}var Ut=()=>Cg().toString(),Cg=()=>(Ac||(Ac=new Ig)).generate(),_i="",Ag=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i,Wt={N:()=>!!F,j(t){A.error("cookieStore error: "+t)},P:Jd,H(t){var e;try{e=JSON.parse(Wt.P(t))||{}}catch{}return e},F(t,e,n,i,r){if(!F)return!1;try{var s="",o="",a=(function(c,d){if(d){var f=(function(p,g){if(g===void 0&&(g=F),_i)return _i;if(!g||["localhost","127.0.0.1"].includes(p))return"";for(var m=p.split("."),v=Math.min(m.length,8),S="dmn_chk_"+Ut();!_i&&v--;){var b=m.slice(v).join("."),_=S+"=1;domain=."+b+";path=/";g.cookie=_+";max-age=3",g.cookie.includes(S)&&(g.cookie=_+";max-age=0",_i=b)}return _i})(c);if(!f){var h=(p=>{var g=p.match(Ag);return g?g[0]:""})(c);h!==f&&A.info("Warning: cookie subdomain discovery mismatch",h,f),f=h}return f?"; domain=."+f:""}return""})(F.location.hostname,i);if(n){var l=new Date;l.setTime(l.getTime()+864e5*n),s="; expires="+l.toUTCString()}r&&(o="; secure");var u=t+"="+encodeURIComponent(JSON.stringify(e))+s+"; SameSite=Lax; path=/"+a+o;return u.length>3686.4&&A.warn("cookieStore warning: large cookie, len="+u.length),F.cookie=u,!0}catch{return!1}},q(t,e){if(F!=null&&F.cookie)try{Wt.F(t,"",-1,e)}catch{return}}},wo=null,le={N(){if(!Ve(wo))return wo;var t=!0;if(C(w))t=!1;else try{var e="__mplssupport__";le.F(e,"xyz"),le.P(e)!=='"xyz"'&&(t=!1),le.q(e)}catch{t=!1}return t||A.error("localStorage unsupported; falling back to cookie store"),wo=t,t},j(t){A.error("localStorage error: "+t)},P(t){try{return w?.localStorage.getItem(t)}catch(e){le.j(e)}return null},H(t){try{return JSON.parse(le.P(t))||{}}catch{}return null},F(t,e){try{return w?.localStorage.setItem(t,JSON.stringify(e)),!0}catch(n){le.j(n)}return!1},q(t){try{w?.localStorage.removeItem(t)}catch(e){le.j(e)}}},Pg=[Ki,"distinct_id",Gn,ol,Zr,Jr,ot],gr={},Fg={N:()=>!0,j(t){A.error("memoryStorage error: "+t)},P:t=>gr[t]||null,H:t=>gr[t]||null,F:(t,e)=>(gr[t]=e,!0),q(t){delete gr[t]}},vn=null,be={N(){if(!Ve(vn))return vn;if(vn=!0,C(w))vn=!1;else try{var t="__support__";be.F(t,"xyz"),be.P(t)!=='"xyz"'&&(vn=!1),be.q(t)}catch{vn=!1}return vn},j(t){A.error("sessionStorage error: ",t)},P(t){try{return w?.sessionStorage.getItem(t)}catch(e){be.j(e)}return null},H(t){try{return JSON.parse(be.P(t))||null}catch{}return null},F(t,e){try{return w?.sessionStorage.setItem(t,JSON.stringify(e)),!0}catch(n){be.j(n)}return!1},q(t){try{w?.sessionStorage.removeItem(t)}catch(e){be.j(e)}}};class Rg{constructor(e){this._instance=e}get Ne(){return this._instance.config}get consent(){return this.ti()?0:this.ei}isOptedOut(){return this.Ne.cookieless_mode===Ht||this.isRejected()||this.consent===-1&&this.Ne.cookieless_mode===In}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===0}isRejected(){return this.consent===0||this.consent===-1&&this.Ne.opt_out_capturing_by_default}optInOut(e){this.ii.F(this.ri,e?1:0,this.Ne.cookie_expiration,this.Ne.cross_subdomain_cookie,this.Ne.secure_cookie)}reset(){this.ii.q(this.ri,this.Ne.cross_subdomain_cookie)}get ri(){var e=this._instance.config,n=e.token,i=e.opt_out_capturing_cookie_prefix;return e.consent_persistence_name||(i?i+n:"__ph_opt_in_out_"+n)}get ei(){var e=this.ii.P(this.ri);return uo(e)?1:j(Np,e)?0:-1}get ii(){var e=this.Ne.opt_out_capturing_persistence_type,n=e==="localStorage"?le:Wt;if(!this.ni||this.ni!==n){this.ni=n;var i=e==="localStorage"?Wt:le;i.P(this.ri)&&(this.ni.P(this.ri)||this.optInOut(uo(i.P(this.ri))),i.q(this.ri,this.Ne.cross_subdomain_cookie))}return this.ni}ti(){return!!this.Ne.respect_dnt&&[Ue?.doNotTrack,Ue?.msDoNotTrack,B.doNotTrack].some((e=>uo(e)))}}function Xd(t,e){var n,i=t==null||(n=t.config)==null?void 0:n.get_current_url;if(!De(i))return e;try{var r=i(e);return X(r)&&r?r:e}catch(s){return A.error("Error in get_current_url, falling back to window.location.href",s),e}}var Qd="__POSTHOG_TOOLBAR__",Tg=1,$g=3,Mg=11;function Pc(t){return t instanceof Element&&(t.id===Qd||!(t.closest==null||!t.closest(".toolbar-global-fade-container")))}function fn(t){return!!t&&t.nodeType===Tg}function Qe(t,e){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===e.toLowerCase()}function ef(t){return!!t&&t.nodeType===$g}function tf(t){return!!t&&t.nodeType===Mg&&fn(t.host)}var nf=1e3;function cl(t){return t?Ss(t).split(/\s+/):[]}function Fc(t,e){var n=(function(i){var r,s=w==null||(r=w.location)==null?void 0:r.href;return C(s)?void 0:Xd(i,s)})(e);return!!(n&&t&&t.some((i=>n.match(i))))}function ts(t){var e="";switch(typeof t.className){case"string":e=t.className;break;case"object":e=(t.className&&"baseVal"in t.className?t.className.baseVal:null)||t.getAttribute("class")||"";break;default:e=""}return cl(e)}function rf(t){return H(t)?null:Ss(t).split(/(\s+)/).filter((e=>ji(e))).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function Yi(t){var e="";return va(t)&&!lf(t)&&t.childNodes&&t.childNodes.length&&ie(t.childNodes,(function(n){var i;ef(n)&&n.textContent&&(e+=(i=rf(n.textContent))!==null&&i!==void 0?i:"")})),Ss(e)}function bo(t){var e;return C(t.target)?t.srcElement||null:(e=t.target)!=null&&e.shadowRoot?t.composedPath()[0]||null:t.target||null}var ul=["a","button","form","input","select","textarea","label"];function ma(t,e){if(C(e))return!0;var n,i=function(s){if(e.some((o=>(function(a,l){var u=a.matches||a.matchesSelector||a.msMatchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.oMatchesSelector;try{return!!u&&u.call(a,l)}catch{return!1}})(s,o))))return{v:!0}};for(var r of t)if(n=i(r))return n.v;return!1}function sf(t){var e=t.parentNode;return!(!e||!fn(e))&&e}var Lg=[".ph-no-autocapture","[data-ph-no-autocapture]"],of=["next","previous","prev",">","<"],Ng=[...of,"+","-","−","–"],Rc=(t,e)=>/[a-z0-9]/i.test(e)?t.includes(e):t===e,Tc=[".ph-no-rageclick",".ph-no-capture"],Og=["","text","search","email","password","url","tel","number"];function $c(t,e){if(!w||dl(t))return!1;var n,i,r,s,o;if(gt(e)?(n=!!e&&Tc,i=void 0,r=!1):(n=(s=e?.css_selector_ignorelist)!==null&&s!==void 0?s:Tc,i=e?.content_ignorelist,r=(o=e?.ignore_text_selection)!==null&&o!==void 0&&o),n===!1||r&&(function(l){return!(!l||!fn(l))&&(!!Qe(l,"textarea")||(Qe(l,"input")?j(Og,(l.getAttribute("type")||"").toLowerCase()):(function(u){if(u.isContentEditable)return!0;var c=u.getAttribute==null?void 0:u.getAttribute("contenteditable");return c==="true"||c===""})(l)))})(t))return!1;var a=af(t,!1).targetElementList;return!(function(l,u){if(l===!1||C(l))return!1;var c;if(l===!0)c=of;else{if(!U(l))return!1;if(l.length>10)return A.error("[PostHog] content_ignorelist array cannot exceed 10 items. Use css_selector_ignorelist for more complex matching."),!1;c=l.map((d=>d.toLowerCase()))}return u.some((d=>{var f=d.safeText,h=d.ariaLabel;return c.some((p=>Rc(f,p)||Rc(h,p)))}))})(i,a.map((l=>{var u;return{safeText:Yi(l).toLowerCase(),ariaLabel:((u=l.getAttribute("aria-label"))==null?void 0:u.toLowerCase().trim())||""}})))&&!ma(a,n)}var dl=t=>!t||Qe(t,"html")||!fn(t),af=(t,e)=>{if(!w||dl(t))return{parentIsUsefulElement:!1,targetElementList:[]};for(var n=!1,i=[t],r=t;r.parentNode&&!Qe(r,"body");)if(tf(r.parentNode))i.push(r.parentNode.host),r=r.parentNode.host;else{var s=sf(r);if(!s)break;if(e||ul.indexOf(s.tagName.toLowerCase())>-1)n=!0;else try{var o=w.getComputedStyle(s);o&&o.getPropertyValue("cursor")==="pointer"&&(n=!0)}catch{}i.push(s),r=s}return{parentIsUsefulElement:n,targetElementList:i}};function va(t){for(var e=new Set,n=0,i=t;i.parentNode&&!Qe(i,"body");i=i.parentNode){if(n++>=nf||e.has(i))return!1;e.add(i);var r=ts(i);if(j(r,"ph-sensitive")||j(r,"ph-no-capture"))return!1}if(j(ts(t),"ph-include"))return!0;var s=t.type||"";if(X(s))switch(s.toLowerCase()){case"hidden":case"password":return!1}var o=t.name||t.id||"";return!X(o)||!/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(o.replace(/[^a-zA-Z0-9]/g,""))}function lf(t){return!!(Qe(t,"input")&&!["button","checkbox","submit","reset"].includes(t.type)||Qe(t,"select")||Qe(t,"textarea")||t.getAttribute("contenteditable")==="true")}var Mc=new RegExp("^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$"),Lc=/(^|[^0-9A-Za-z_])([0-9][0-9 -]*[0-9])(?=$|[^0-9A-Za-z_])/g,Bg=[16,15,14,13],Dg=new RegExp("^(\\d{3}-?\\d{2}-?\\d{4})$"),Nc=new RegExp("(^|[^0-9])((?!000|666)[0-9]{3}-?(?!00)[0-9]{2}-?(?!0000)[0-9]{4})(?=$|([^0-9]))","g"),Oc=/[0-9A-Za-z_]/;function jg(t){for(var e=0,n=!1,i=t.length-1;i>=0;i--){var r=t.charCodeAt(i)-48;n&&(r*=2)>9&&(r-=9),e+=r,n=!n}return e%10==0}function ji(t,e){if(e===void 0&&(e=!0),H(t))return!1;if(X(t)){t=Ss(t);var n=e?Mc.test((t||"").replace(/[- ]/g,"")):(function(r){var s;for(Lc.lastIndex=0;s=Lc.exec(r);){var o=s[2];if(o)for(var a=o.replace(/[- ]/g,""),l=0;a.length>l;l++)for(var u of Bg){var c=l+u;if(a.length>=c){var d=a.slice(l,c);if(Mc.test(d)&&jg(d))return!0}}}return!1})(t);if(n)return!1;var i=e?Dg.test(t):(function(r){var s;for(Nc.lastIndex=0;s=Nc.exec(r);){var o=s[1],a=s[3];if(!(o&&a&&Oc.test(o)&&Oc.test(a)))return!0}return!1})(t);if(i)return!1}return!0}function Bc(t){var e=Yi(t);return ji(e=(e+" "+cf(t)).trim())?e:""}function cf(t){var e="";return t&&t.childNodes&&t.childNodes.length&&ie(t.childNodes,(function(n){var i;if(n&&((i=n.tagName)==null?void 0:i.toLowerCase())==="span")try{var r=Yi(n);e=(e+" "+r).trim(),n.childNodes&&n.childNodes.length&&(e=(e+" "+cf(n)).trim())}catch(s){A.error("[AutoCapture]",s)}})),e}function Dc(t){return t.replace(/"|\\"/g,'\\"')}function Ug(t){var e=t.attr__class;if(e)return U(e)?e:cl(e)}var mr=pe("[Dead Clicks]"),Hg=()=>!0,Wg=t=>{var e,n=!((e=t.instance.persistence)==null||!e.get_property(rl)),i=t.instance.config.capture_dead_clicks;return gt(i)?i:!!he(i)||n};class jc{get lazyLoadedDeadClicksAutocapture(){return this.si}constructor(e,n,i){this.instance=e,this.isEnabled=n,this.onCapture=i,this.startIfEnabledOrStop()}onRemoteConfig(e){if(e.ok){var n=e.config;"captureDeadClicks"in n&&(this.instance.persistence&&this.instance.persistence.register({[rl]:n.captureDeadClicks}),this.startIfEnabledOrStop())}}startIfEnabledOrStop(){this.isEnabled(this)?this.ai((()=>{this.oi()})):this.stop()}ai(e){var n,i;(n=B.__PosthogExtensions__)!=null&&n.initDeadClicksAutocapture?e():(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this.instance,"dead-clicks-autocapture",(r=>{r?mr.error("failed to load script",r):e()}))}oi(){var e;if(F){if(!this.si&&(e=B.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var n=he(this.instance.config.capture_dead_clicks)?k({},this.instance.config.capture_dead_clicks):{};n.__onCapture=this.onCapture,this.onCapture&&(n.capture_dead_swipes=!1),this.si=B.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,n),this.si.start(F),mr.info("starting...")}}else mr.error("`document` not found. Cannot start.")}stop(){this.si&&(this.si.stop(),this.si=void 0,mr.info("stopping..."))}}var Eo=pe("[SegmentIntegration]"),uf="posthog-js";function df(t,e){var n=e===void 0?{}:e,i=n.organization,r=n.projectId,s=n.prefix,o=n.severityAllowList,a=o===void 0?["error"]:o,l=n.sendExceptionsToPostHog,u=l===void 0||l;return c=>{var d,f,h,p,g;if(a!=="*"&&!a.includes(c.level)||!t.__loaded)return c;c.tags||(c.tags={});var m=t.requestRouter.endpointFor("ui","/project/"+t.config.token+"/person/"+t.get_distinct_id());c.tags["PostHog Person URL"]=m,t.sessionRecordingStarted()&&(c.tags["PostHog Recording URL"]=t.get_session_replay_url({withTimestamp:!0}));var v,S=((d=c.exception)==null?void 0:d.values)||[],b=S.map((x=>k({},x,{stacktrace:x.stacktrace?k({},x.stacktrace,{type:"raw",frames:(x.stacktrace.frames||[]).map((I=>k({},I,{platform:"web:javascript"})))}):void 0}))),_={$exception_message:((f=S[0])==null?void 0:f.value)||c.message,$exception_type:(h=S[0])==null?void 0:h.type,$exception_level:c.level,$exception_list:b,$sentry_event_id:c.event_id,$sentry_exception:c.exception,$sentry_exception_message:((p=S[0])==null?void 0:p.value)||c.message,$sentry_exception_type:(g=S[0])==null?void 0:g.type,$sentry_tags:c.tags};return i&&r&&(_.$sentry_url=(s||"https://sentry.io/organizations/")+i+"/issues/?project="+r+"&query="+c.event_id),u&&((v=t.exceptions)==null||v.sendExceptionEvent(_)),c}}class zg{constructor(e,n,i,r,s,o){this.name=uf,this.setupOnce=function(a){a(df(e,{organization:n,projectId:i,prefix:r,severityAllowList:s,sendExceptionsToPostHog:o==null||o}))}}}class Uc{constructor(e){this.li=(n,i,r)=>{r&&(r.noSessionId||r.activityTimeout||r.sessionPastMaximumLength||r.crossTabAdoption)&&(A.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:n,changeReason:r}),this.ui=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.hi()}hi(){var e;this.di=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.li)}destroy(){var e;(e=this.di)==null||e.call(this),this.di=void 0}doPageView(e,n){var i,r=this.vi(e,n);return this.ui={pathname:(i=w?.location.pathname)!==null&&i!==void 0?i:"",pageViewId:n,timestamp:e},this._instance.scrollManager.resetContext(),r}doPageLeave(e){var n;return this.vi(e,(n=this.ui)==null?void 0:n.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.ui)==null?void 0:e.pageViewId}}vi(e,n){var i=this.ui;if(!i)return{$pageview_id:n};var r={$pageview_id:n,$prev_pageview_id:i.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var o=s.maxScrollHeight,a=s.lastScrollY,l=s.maxScrollY,u=s.maxContentHeight,c=s.lastContentY,d=s.maxContentY;if(!(C(o)||C(a)||C(l)||C(u)||C(c)||C(d))){o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),c=Math.ceil(c),d=Math.ceil(d);var f=o>1?Ct(a/o,0,1,A):1,h=o>1?Ct(l/o,0,1,A):1,p=u>1?Ct(c/u,0,1,A):1,g=u>1?Ct(d/u,0,1,A):1;r=fe(r,{$prev_pageview_last_scroll:a,$prev_pageview_last_scroll_percentage:f,$prev_pageview_max_scroll:l,$prev_pageview_max_scroll_percentage:h,$prev_pageview_last_content:c,$prev_pageview_last_content_percentage:p,$prev_pageview_max_content:d,$prev_pageview_max_content_percentage:g})}}return i.pathname&&(r.$prev_pageview_pathname=i.pathname),i.timestamp&&(r.$prev_pageview_duration=(e.getTime()-i.timestamp.getTime())/1e3),r}}var So=["flags","surveys"],qg={[jd]:{exposure:"hidden"},[Pi]:{exposure:"hidden"},__cmpns:{exposure:"hidden"},[Fi]:{exposure:"hidden"},[ea]:{exposure:"event"},[ta]:{exposure:"hidden"},[na]:{exposure:"event"},[ia]:{exposure:"hidden"},[ra]:{exposure:"event"},[sa]:{exposure:"event"},[rl]:{exposure:"event"},[sl]:{exposure:"hidden"},[oa]:{exposure:"event"},[Cn]:{exposure:"hidden"},$session_recording_enabled_server_side:{exposure:"hidden"},[Gn]:{exposure:"hidden"},[ol]:{exposure:"event"},[Ud]:{exposure:"event",shouldSkipFromEventProperties:t=>Ve(t)},$session_past_minimum_duration:{exposure:"event"},$session_recording_url_trigger_activated_session:{exposure:"event"},$session_recording_event_trigger_activated_session:{exposure:"event"},$debug_first_full_snapshot_timestamp:{exposure:"event"},$sess_rec_flush_size:{exposure:"hidden"},[En]:{exposure:"hidden",storageGroup:"flags"},[Ri]:{exposure:"hidden",storageGroup:"flags"},[Ir]:{exposure:"hidden"},[aa]:{exposure:"hidden",storageGroup:"flags"},[Ti]:{exposure:"hidden",storageGroup:"flags"},[kr]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[Kr]:{exposure:"hidden",storageGroup:"flags"},[xt]:{exposure:"hidden"},[Sn]:{exposure:"hidden"},[Dt]:{exposure:"hidden"},[xn]:{exposure:"hidden"},[la]:{exposure:"hidden",storageGroup:"surveys"},[Yr]:{exposure:"hidden",storageGroup:"surveys",volatile:!0},[ca]:{exposure:"event"},[Cr]:{exposure:"hidden"},[Ar]:{exposure:"hidden"},[$i]:{exposure:"hidden"},$product_tours_activated:{exposure:"hidden"},$product_tours_activated_session:{exposure:"hidden"},$conversations_widget_session_id:{exposure:"event"},$conversations_ticket_id:{exposure:"event"},$conversations_widget_state:{exposure:"event"},$conversations_user_traits:{exposure:"event"},[kn]:{exposure:"hidden"},[Mi]:{exposure:"hidden"},[Pr]:{exposure:"hidden"},[Di]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[ot]:{exposure:"hidden"},[ua]:{exposure:"hidden"},[da]:{exposure:"hidden"},[fa]:{exposure:"hidden"},[ha]:{exposure:"hidden"},[Jr]:{exposure:"hidden"},[Zr]:{exposure:"hidden"},[Hd]:{exposure:"event"},[Wd]:{exposure:"event"},[zd]:{exposure:"event"},[qd]:{exposure:"event"},[Gd]:{exposure:"event"},[Kd]:{exposure:"event"},[Yd]:{exposure:"event"},$sdk_debug_replay_event_trigger_status:{exposure:"event"},$sdk_debug_replay_linked_flag_trigger_status:{exposure:"event"},$sdk_debug_replay_matched_recording_trigger_groups:{exposure:"event"},$sdk_debug_replay_remote_trigger_matching_config:{exposure:"event"},$sdk_debug_replay_trigger_groups_count:{exposure:"event"},$sdk_debug_replay_url_trigger_status:{exposure:"event"},$session_recording_start_reason:{exposure:"event"}},Vg=[["$posthog_sr_group_event_trigger_",{exposure:"hidden"}],["$posthog_sr_group_url_trigger_",{exposure:"hidden"}],["$posthog_sr_group_sampling_",{exposure:"hidden"}]],_n=t=>{var e=qg[t];if(e)return e;for(var n of Vg){var i=n[1];if(t.indexOf(n[0])===0)return i}},Kn=(t,e)=>{try{return JSON.stringify(t,((n,i)=>typeof i=="bigint"?i.toString():i),e)}catch{return ad(t)}},ns=t=>{var e=F?.createElement("a");return C(e)?null:(e.href=t,e)},ni=function(t,e){for(var n,i=((t.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),r=0;i.length>r;r++){var s=i[r].split("=");if(s[0]===e){n=s;break}}if(!U(n)||2>n.length)return"";var o=n[1];try{o=decodeURIComponent(o)}catch{A.error("Skipping decoding for malformed query param: "+o)}return o.replace(/\+/g," ")},Ji=function(t,e,n){if(!t||!e||!e.length)return t;for(var i=t.split("#"),r=i[1],s=(i[0]||"").split("?"),o=s[1],a=s[0],l=(o||"").split("&"),u=[],c=0;l.length>c;c++){var d=l[c].split("=");U(d)&&(e.includes(d[0])?u.push(d[0]+"="+n):u.push(l[c]))}var f=a;return o!=null&&(f+="?"+u.join("&")),r!=null&&(f+="#"+r),f},is=function(t,e){var n=t.match(new RegExp(e+"=([^&]*)"));return n?n[1]:null},ff=(t,e)=>t>=e&&rd(),hf=(t,e,n,i)=>{if(t===0){if(rd()){var r=e+1;return r===n&&i(),r}return e}return 0},vr="https?://(.*)",ii=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],Gg=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...ii],Zi="",Kg=["li_fat_id"];function pf(t,e,n){if(!F)return{};var i,r=e?[...ii,...n||[]]:[],s=gf(Ji(F.URL,r,Zi),t),o=(i={},ie(Kg,(function(a){var l=Jd(a);i[a]=l||null})),i);return fe(o,s)}function gf(t,e){var n=Gg.concat(e||[]),i={};return ie(n,(function(r){var s=ni(t,r);i[r]=s||null})),i}function mf(t){var e=(function(s){return s?s.search(vr+"google.([^/?]*)")===0?"google":s.search(vr+"bing.com")===0?"bing":s.search(vr+"yahoo.com")===0?"yahoo":s.search(vr+"duckduckgo.com")===0?"duckduckgo":null:null})(t),n=e!="yahoo"?"q":"p",i={};if(!Ve(e)){i.$search_engine=e;var r=F?ni(F.referrer,n):"";r.length&&(i.ph_keyword=r)}return i}function Hc(){return navigator.language||navigator.userLanguage}var rs="$direct";function vf(){return F?.referrer||rs}function _f(t,e,n){n===void 0&&(n=!1);var i=t?[...ii,...e||[]]:[],r=n?dn(me?.href):me?.href,s=r?.substring(0,1e3);return{r:vf().substring(0,1e3),u:s?Ji(s,i,Zi):void 0}}function yf(t,e){var n;e===void 0&&(e=!1);var i=t.r,r=t.u,s=e?dn(r):r,o={$referrer:i,$referring_domain:i==null?void 0:i==rs?rs:(n=ns(i))==null?void 0:n.host};if(s){o.$current_url=s;var a=ns(s);o.$host=a?.host,o.$pathname=a?.pathname;var l=gf(s);fe(o,l)}if(i){var u=mf(i);fe(o,u)}return o}function wf(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function Yg(){try{return new Date().getTimezoneOffset()}catch{return}}var Jg={flags:Di,surveys:Yr},Zg=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"],Un="main";class xo{constructor(e,n,i){if(i===void 0&&(i=!0),this.ci={},this.fi=!1,this.pi=!1,this.Ne=e,this.gi=i,this.props={},this.mi=void 0,this.yi=(s=>{var o="";return s.token&&(o=s.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),s.persistence_name?"ph_"+s.persistence_name:"ph_"+o+"_posthog"})(e),this.ii=this.bi(e),this.pi=this.wi(e),this.load(),e.debug&&A.info("Persistence loaded",e.persistence,k({},this.props)),this.update_config(e,e,n),this.save(),w){var r=()=>this.flush();ve(w,"beforeunload",r,{capture:!1}),ve(w,"pagehide",r,{capture:!1})}}ki(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return ke(n)&&n>0?n:0}isDisabled(){return!!this.xi}bi(e){Zg.indexOf(e.persistence.toLowerCase())===-1&&(A.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var n,i=(function(o,a){o===void 0&&(o=[]),a===void 0&&(a=!1);var l=[...Pg,...o];return k({},le,{H(u){try{var c={};try{c=Wt.H(u)||{}}catch{}var d,f=JSON.parse(le.P(u)||"{}");if(a){var h={};for(var p in c){var g=c[p];Ve(g)||g===""||(h[p]=g)}d=fe(f,h)}else d=fe(c,f);return le.F(u,d),d}catch{}return null},F(u,c,d,f,h,p){var g=le.F(u,c,void 0,void 0,p);try{var m={};l.forEach((v=>{c[v]&&(m[v]=c[v])})),Object.keys(m).length&&Wt.F(u,m,d,f,h,p)}catch(v){le.j(v)}return g},q(u,c){try{w?.localStorage.removeItem(u),Wt.q(u,c)}catch(d){le.j(d)}}})})(e.cookie_persisted_properties||[],e.__preview_cookie_wins_on_conflict||!1),r=!1,s=e.persistence.toLowerCase();return s==="localstorage"&&le.N()?(n=le,r=!0):s==="localstorage+cookie"&&i.N()?(n=i,r=!0):s==="sessionstorage"&&be.N()?n=be:s==="memory"?n=Fg:s==="cookie"?n=Wt:i.N()?(n=i,r=!0):n=Wt,this.fi=r,n}Si(e){return this.yi+"__"+e}wi(e){return this.fi&&!!e.split_storage}properties(){var e={};return ie(this.props,((n,i)=>{var r=_n(i);if(!r||r.exposure==="event"){if(r!=null&&r.shouldSkipFromEventProperties!=null&&r.shouldSkipFromEventProperties(n))return;e[i]=n}})),e}load(){if(!this.xi){var e=this.ii.H(this.yi);e&&(this.props=fe({},e)),this.pi&&this.Ci()}}Ci(){for(var e of So){var n=le.H(this.Si(e));if(n&&!Vt(n)){var i=this.Mi(e);i.persisted=!0,this.Ti(e)||(i.fingerprint=this.Ei(n,e)),this.Ii(e,n)||fe(this.props,n)}}}Ti(e){return Object.keys(this.props).some((n=>{var i;return((i=_n(n))==null?void 0:i.storageGroup)===e}))}Ii(e,n){var i=Jg[e];if(!i)return!1;var r=n[i],s=this.props[i];return ke(r)&&ke(s)&&s>r}refreshKey(e){var n;if(!this.xi){var i=this.pi?(n=_n(e))==null?void 0:n.storageGroup:void 0,r=i?le.H(this.Si(i)):this.ii.H(this.yi);if(r&&e in r)this.Pi(e,r[e]);else{if(i){var s=this.ii.H(this.yi);if(s&&e in s)return void this.Pi(e,s[e])}this.Ri(e)}}}save(){if(!this.xi){var e=this.ki();e>0?C(this.Ai)&&(this.Ai=setTimeout((()=>{this.Ai=void 0,this.Fi()}),e)):this.Fi()}}flush(){C(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0,this.Fi())}Fi(){this.xi||(this.pi?this.Li():this.Oi(this.ii,this.yi,this.props,Un))}Li(){var e=this.Di(),n=e.main,i=e.groups;for(var r of(this.Oi(this.ii,this.yi,n,Un),So)){var s,o=i[r];(!Vt(o)||(s=this.ci[r])!=null&&s.persisted)&&this.Oi(le,this.Si(r),o,r)}}Di(){var e={},n={flags:{},surveys:{}};return ie(this.props,((i,r)=>{var s,o=(s=_n(r))==null?void 0:s.storageGroup;o?n[o][r]=i:e[r]=i})),{main:e,groups:n}}Ei(e,n){if(n===Un)return JSON.stringify(e)+"|"+this.$i+"|"+this.Ni+"|"+this.qi;var i={};return ie(e,((r,s)=>{var o;i[s]=(o=_n(s))!=null&&o.volatile?"__volatile__":r})),JSON.stringify(i)}Oi(e,n,i,r){var s=this.Mi(r);if(r===Un||s.dirty||C(s.fingerprint)){var o;try{if((o=this.Ei(i,r))===s.fingerprint)return void(s.dirty=!1)}catch{o=void 0}e.F(n,i,this.$i,this.Ni,this.qi,this.Ne.debug)?(s.dirty=!1,r!==Un&&(s.persisted=!0),C(o)||(s.fingerprint=o)):this.Ne.debug&&A.warn('failed to persist storage entry "'+n+'"; will retry on next save')}}remove(e){var n=(e===void 0?{}:e).keepGroupEntries,i=n!==void 0&&n;if(C(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0),this.ii.q(this.yi,!1),this.ii.q(this.yi,!0),!i&&this.gi)for(var r of So)le.q(this.Si(r));i?delete this.ci[Un]:this.ci={}}clear(){this.remove(),this.props={}}register_once(e,n,i){if(he(e)){C(n)&&(n="None"),this.$i=C(i)?this.ji:i;var r=!1;if(ie(e,((s,o)=>{this.props.hasOwnProperty(o)&&this.props[o]!==n||(this.Pi(o,s),r=!0)})),r)return this.save(),!0}return!1}register(e,n){if(he(e)){this.$i=C(n)?this.ji:n;var i=!1;if(ie(e,((r,s)=>{e.hasOwnProperty(s)&&(this.props[s]!==r||he(r)||U(r))&&(this.Pi(s,r),i=!0)})),i)return this.save(),!0}return!1}unregister(e){var n=typeof e=="string"?[e]:e,i=!1;for(var r of n)r in this.props&&(this.Ri(r),i=!0);i&&this.save()}update_campaign_params(){var e=F?.URL;if(e!==this.mi){var n=pf(this.Ne.custom_campaign_params,this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties);Vt(ll(n))||this.register(n),this.mi=e}}update_search_keyword(){var e;this.register((e=F?.referrer)?mf(e):{})}update_referrer_info(){var e;this.register_once({$referrer:vf(),$referring_domain:F!=null&&F.referrer&&((e=ns(F.referrer))==null?void 0:e.host)||rs},void 0)}set_initial_person_info(){this.props[fa]||this.props[ha]||this.register_once({[Jr]:_f(this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties,this.Ne.disable_capture_url_hashes)},void 0)}get_initial_props(){var e={};ie([ha,fa],(r=>{var s=this.props[r];s&&ie(s,(function(o,a){e["$initial_"+Go(a)]=o}))}));var n=this.props[Jr];if(n){var i=(function(r,s){s===void 0&&(s=!1);var o=yf(r,s),a={};return ie(o,(function(l,u){a["$initial_"+Go(u)]=l})),a})(n,this.Ne.disable_capture_url_hashes);fe(e,i)}return e}safe_merge(e){return ie(this.props,(function(n,i){i in e||(e[i]=n)})),e}update_config(e,n,i){this.ji=this.$i=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!i),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie);var r=e.persistence!==n.persistence||!((l,u)=>{if(l.length!==u.length)return!1;var c=[...l].sort(),d=[...u].sort();return c.every(((f,h)=>f===d[h]))})(e.cookie_persisted_properties||[],n.cookie_persisted_properties||[]),s=r?this.bi(e):this.ii,o=this.wi(e);if(r||o!==this.pi){var a=this.props;this.clear(),this.ii=s,this.pi=o,this.props=a,this.save()}}set_disabled(e){this.xi=e,this.xi?this.remove():this.save()}set_cross_subdomain(e){e!==this.Ni&&(this.Ni=e,this.remove({keepGroupEntries:!0}),this.save())}set_secure(e){e!==this.qi&&(this.qi=e,this.remove({keepGroupEntries:!0}),this.save())}set_event_timer(e,n){var i=this.props[Fi]||{};i[e]=n,this.Pi(Fi,i),this.save()}remove_event_timer(e){var n=this.props[Fi]||{},i=n[e];return C(i)||(delete n[e],this.Pi(Fi,n),this.save()),i}get_property(e){return this.props[e]}set_property(e,n){this.Pi(e,n),this.save()}Pi(e,n){var i;this.props[e]=n,(i=_n(e))!=null&&i.volatile||this.Bi(e)}Ri(e){delete this.props[e],this.Bi(e)}Bi(e){var n,i=(n=_n(e))==null?void 0:n.storageGroup;i&&(this.Mi(i).dirty=!0)}Mi(e){return this.ci[e]||(this.ci[e]={})}}function _r(t){var e=!0;return{dispose(){if(e){e=!1;var n=t();n&&De(n.then)&&n.then(void 0,(()=>{}))}}}}var je={GZipJS:"gzip-js",Base64:"base64"},yi={Activation:"events",Cancellation:"cancelEvents"},Io={Popover:"popover",API:"api",Widget:"widget"},zt={SHOWN:"survey shown",DISMISSED:"survey dismissed",SENT:"survey sent"},ko={SURVEY_ID:"$survey_id",SURVEY_ITERATION:"$survey_iteration",SURVEY_LAST_SEEN_DATE:"$survey_last_seen_date"},_a={Popover:"popover",Inline:"inline"},Xg={SHOWN:"product tour shown"},Wc={TOUR_LAST_SEEN_DATE:"$product_tour_last_seen_date",TOUR_TYPE:"$product_tour_type"},zc=pe("[RateLimiter]");class Qg{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=n=>{var i=n.text;if(i&&i.length)try{(JSON.parse(i).quota_limited||[]).forEach((r=>{zc.info((r||"events")+" is quota limited."),this.serverLimits[r]=new Date().getTime()+6e4}))}catch(r){return void zc.warn('could not rate limit - continuing. Error: "'+r?.message+'"',{text:i})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var n,i,r;e===void 0&&(e=!1);var s=this.captureEventsBurstLimit,o=this.captureEventsPerSecond,a=new Date().getTime(),l=(n=(i=this.instance.persistence)==null?void 0:i.get_property(da))!==null&&n!==void 0?n:{tokens:s,last:a};l.tokens+=(a-l.last)/1e3*o,l.last=a,l.tokens>s&&(l.tokens=s);var u=1>l.tokens;if(u||e||(l.tokens=Math.max(0,l.tokens-1)),u&&!e){var c=(ke(l.dropped)?l.dropped:0)+1;l.dropped=c,!this.lastEventRateLimited&&this.Hi(c)&&(l.dropped=0)}return this.lastEventRateLimited=u,(r=this.instance.persistence)==null||r.set_property(da,l),{isRateLimited:u,remainingTokens:l.tokens}}Ui(e){var n=this.instance.config.property_denylist;return!U(n)||!n.includes(e)}zi(){var e;if(this.Ui("$current_url")&&this.Ui("$pathname")&&me!=null&&me.pathname)return""+((e=me.origin)!==null&&e!==void 0?e:"")+me.pathname}Hi(e){var n,i,r=this.captureEventsBurstLimit,s=this.captureEventsPerSecond,o=this.zi(),a=this.Ui("$session_id")?(n=(i=this.instance).get_session_id)==null?void 0:n.call(i):void 0,l=[e+" event(s) dropped since the last warning",o?"triggered on "+o:void 0,a?"session "+a:void 0].filter(Boolean).join(", ");return!!this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited: "+l+". Config is set to "+s+" events per second and "+r+" events burst limit."},{skip_client_rate_limiting:!0})}isServerRateLimited(e){var n=this.serverLimits[e||"events"]||!1;return n!==!1&&new Date().getTime()e(this.remoteConfig))):e()}Vi(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback:e})}load(){try{if(this.remoteConfig)return sn.info("Using preloaded remote config",this.remoteConfig),this.Zi(this.remoteConfig),void this.Gi();if(this._instance.Qi())return void sn.warn("Remote config is disabled. Falling back to local config.");this.Wi((e=>{if(!e)return sn.info("No config found after loading remote JS config. Falling back to JSON."),void this.Vi((n=>{this.Zi(n.json,n),this.Gi()}));this.Zi(e),this.Gi()}))}catch(e){sn.error("Error loading remote config",e),this.Zi()}}stop(){this.Ki&&(clearInterval(this.Ki),this.Ki=void 0)}refresh(){!this._instance.Qi()&&F&&F.visibilityState!=="hidden"&&this._instance.reloadFeatureFlags()}Gi(){var e;if(!this.Ki){var n=(e=this._instance.config.remote_config_refresh_interval_ms)!==null&&e!==void 0?e:3e5;n!==0&&(this.Ki=setInterval((()=>{this.refresh()}),n))}}Zi(e,n){!e&&n&&(n.statusCode===0?n.error||sn.warn("Failed to fetch remote config from PostHog."):sn.error("Failed to fetch remote config from PostHog."));try{this._instance.Zi(e?{ok:!0,config:e}:{ok:!1})}catch(r){sn.error("Error applying remote config",r)}if(e?.hasFeatureFlags!==!1&&!this._instance.config.advanced_disable_feature_flags_on_first_load)try{var i;(i=this._instance.featureFlags)==null||i.ensureFlagsLoaded()}catch(r){sn.error("Error loading feature flags",r)}}}var lt=Uint8Array,qe=Uint16Array,ri=Uint32Array,fl=new lt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),hl=new lt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),qc=new lt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ef=function(t,e){for(var n=new qe(31),i=0;31>i;++i)n[i]=e+=1<i;++i)for(var s=n[i];n[i+1]>s;++s)r[s]=s-n[i]<<5|i;return[n,r]},Sf=Ef(fl,2),ya=Sf[1];Sf[0][28]=258,ya[258]=28;for(var Vc=Ef(hl,0)[1],xf=new qe(32768),_e=0;32768>_e;++_e){var Hn=(43690&_e)>>>1|(21845&_e)<<1;xf[_e]=((65280&(Hn=(61680&(Hn=(52428&Hn)>>>2|(13107&Hn)<<2))>>>4|(3855&Hn)<<4))>>>8|(255&Hn)<<8)>>>1}var Ui=function(t,e,n){for(var i=t.length,r=0,s=new qe(e);i>r;++r)++s[t[r]-1];var o,a=new qe(e);for(r=0;e>r;++r)a[r]=a[r-1]+s[r-1]<<1;for(o=new qe(i),r=0;i>r;++r)o[r]=xf[a[t[r]-1]++]>>>15-t[r];return o},Tn=new lt(288);for(_e=0;144>_e;++_e)Tn[_e]=8;for(_e=144;256>_e;++_e)Tn[_e]=9;for(_e=256;280>_e;++_e)Tn[_e]=7;for(_e=280;288>_e;++_e)Tn[_e]=8;var ss=new lt(32);for(_e=0;32>_e;++_e)ss[_e]=5;var em=Ui(Tn,9),tm=Ui(ss,5),If=function(t){return(t/8>>0)+(7&t&&1)},kf=function(t,e,n){(n==null||n>t.length)&&(n=t.length);var i=new(t instanceof qe?qe:t instanceof ri?ri:lt)(n-e);return i.set(t.subarray(e,n)),i},Nt=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8},wi=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8,t[i+2]|=n>>>16},Co=function(t,e){for(var n=[],i=0;t.length>i;++i)t[i]&&n.push({s:i,f:t[i]});var r=n.length,s=n.slice();if(!r)return[new lt(0),0];if(r==1){var o=new lt(n[0].s+1);return o[n[0].s]=1,[o,1]}n.sort((function(x,I){return x.f-I.f})),n.push({s:-1,f:25001});var a=n[0],l=n[1],u=0,c=1,d=2;for(n[0]={s:-1,f:a.f+l.f,l:a,r:l};c!=r-1;)a=n[n[d].f>n[u].f?u++:d++],l=n[u!=c&&n[d].f>n[u].f?u++:d++],n[c++]={s:-1,f:a.f+l.f,l:a,r:l};var f=s[0].s;for(i=1;r>i;++i)s[i].s>f&&(f=s[i].s);var h=new qe(f+1),p=wa(n[c-1],h,0);if(p>e){i=0;var g=0,m=p-e,v=1<i;++i){var S=s[i].s;if(e>=h[S])break;g+=v-(1<>>=m;g>0;){var b=s[i].s;e>h[b]?g-=1<=0&&g;--i){var _=s[i].s;h[_]==e&&(--h[_],++g)}p=e}return[new lt(h),p]},wa=function(t,e,n){return t.s==-1?Math.max(wa(t.l,e,n+1),wa(t.r,e,n+1)):e[t.s]=n},Gc=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new qe(++e),i=0,r=t[0],s=1,o=function(l){n[i++]=l},a=1;e>=a;++a)if(t[a]==r&&a!=e)++s;else{if(!r&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(r),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(r);s=1,r=t[a]}return[n.subarray(0,i),e]},bi=function(t,e){for(var n=0,i=0;e.length>i;++i)n+=t[i]*e[i];return n},ba=function(t,e,n){var i=n.length,r=If(e+2);t[r]=255&i,t[r+1]=i>>>8,t[r+2]=255^t[r],t[r+3]=255^t[r+1];for(var s=0;i>s;++s)t[r+s+4]=n[s];return 8*(r+4+i)},Kc=function(t,e,n,i,r,s,o,a,l,u,c){Nt(e,c++,n),++r[256];for(var d=Co(r,15),f=d[0],h=d[1],p=Co(s,15),g=p[0],m=p[1],v=Gc(f),S=v[0],b=v[1],_=Gc(g),x=_[0],I=_[1],T=new qe(19),E=0;S.length>E;++E)T[31&S[E]]++;for(E=0;x.length>E;++E)T[31&x[E]]++;for(var P=Co(T,7),$=P[0],O=P[1],L=19;L>4&&!$[qc[L-1]];--L);var N,G,V,M,R=u+5<<3,Z=bi(r,Tn)+bi(s,ss)+o,Ce=bi(r,f)+bi(s,g)+o+14+3*L+bi(T,$)+(2*T[16]+3*T[17]+7*T[18]);if(Z>=R&&Ce>=R)return ba(e,c,t.subarray(l,l+u));if(Nt(e,c,1+(Z>Ce)),c+=2,Z>Ce){N=Ui(f,h),G=f,V=Ui(g,m),M=g;var oe=Ui($,O);for(Nt(e,c,b-257),Nt(e,c+5,I-1),Nt(e,c+10,L-4),c+=14,E=0;L>E;++E)Nt(e,c+3*E,$[qc[E]]);c+=3*L;for(var ye=[S,x],$e=0;2>$e;++$e){var ae=ye[$e];for(E=0;ae.length>E;++E)Nt(e,c,oe[Ie=31&ae[E]]),c+=$[Ie],Ie>15&&(Nt(e,c,ae[E]>>>5&127),c+=ae[E]>>>12)}}else N=em,G=Tn,V=tm,M=ss;for(E=0;a>E;++E)if(i[E]>255){var Ie;wi(e,c,N[257+(Ie=i[E]>>>18&31)]),c+=G[Ie+257],Ie>7&&(Nt(e,c,i[E]>>>23&31),c+=fl[Ie]);var Se=31&i[E];wi(e,c,V[Se]),c+=M[Se],Se>3&&(wi(e,c,i[E]>>>5&8191),c+=hl[Se])}else wi(e,c,N[i[E]]),c+=G[i[E]];return wi(e,c,N[256]),c+G[256]},nm=new ri([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),im=(function(){for(var t=new ri(256),e=0;256>e;++e){for(var n=e,i=9;--i;)n=(1&n&&3988292384)^n>>>1;t[e]=n}return t})(),Ao=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8};function rm(t,e){e===void 0&&(e={});var n=(function(){var d=4294967295;return{p(f){for(var h=d,p=0;f.length>p;++p)h=im[255&h^f[p]]^h>>>8;d=h},d(){return 4294967295^d}}})(),i=t.length;n.p(t);var r,s,o,a,l,u=(a=10+((r=e).filename&&r.filename.length+1||0),l=8,(function(d,f,h,p,g,m){var v=d.length,S=new lt(p+v+5*(1+Math.floor(v/7e3))+g),b=S.subarray(p,S.length-g),_=0;if(!f||8>v)for(var x=0;v>=x;x+=65535){var I=x+65535;v>I?_=ba(b,_,d.subarray(x,I)):(b[x]=!0,_=ba(b,_,d.subarray(x,v)))}else{for(var T=nm[f-1],E=T>>>13,P=8191&T,$=(1<x;++x){var Ie=V(x),Se=32767&x,Be=L[Ie];if(O[Se]=Be,L[Ie]=Se,x>=$e){var yt=v-x;if((Ce>7e3||ye>24576)&&yt>423){_=Kc(d,b,0,M,R,Z,oe,ye,ae,x-ae,_),ye=Ce=oe=0,ae=x;for(var ge=0;286>ge;++ge)R[ge]=0;for(ge=0;30>ge;++ge)Z[ge]=0}var Ye=2,wt=0,gn=P,Re=Se-Be&32767;if(yt>2&&Ie==V(x-Re))for(var Pe=Math.min(E,yt)-1,Tt=Math.min(32767,x),On=Math.min(258,yt);Tt>=Re&&--gn&&Se!=Be;){if(d[x+Ye]==d[x+Ye-Re]){for(var He=0;On>He&&d[x+He]==d[x+He-Re];++He);if(He>Ye){if(Ye=He,wt=Re,He>Pe)break;var Bn=Math.min(Re,He-2),$t=0;for(ge=0;Bn>ge;++ge){var Mt=x-Re+ge+32768&32767,ct=Mt-O[Mt]+32768&32767;ct>$t&&($t=ct,Be=Mt)}}}Re+=(Se=Be)-(Be=O[Se])+32768&32767}if(wt){M[ye++]=268435456|ya[Ye]<<18|Vc[wt];var nn=31&ya[Ye],pi=31&Vc[wt];oe+=fl[nn]+hl[pi],++R[257+nn],++Z[pi],$e=x+Ye,++Ce}else M[ye++]=d[x],++R[d[x]]}}_=Kc(d,b,!0,M,R,Z,oe,ye,ae,x-ae,_)}return kf(S,0,p+If(_)+g)})(s=t,(o=e).level==null?6:o.level,o.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):12+o.mem,a,l)),c=u.length;return(function(d,f){var h=f.filename;if(d[0]=31,d[1]=139,d[2]=8,d[8]=2>f.level?4:f.level==9?2:0,d[9]=3,f.mtime!=0&&Ao(d,4,Math.floor(new Date(f.mtime||Date.now())/1e3)),h){d[3]=8;for(var p=0;h.length>=p;++p)d[p+10]=h.charCodeAt(p)}})(u,e),Ao(u,c-8,n.d()),Ao(u,c-4,i),u}var sm=!!zo||!!Za,Cf="text/plain",Rr=!1,Af=(t,e)=>{var n=t.split("#"),i=n[1],r=n[0].split("?"),s=r[0],o=r[1];if(!o)return t;var a=o.split("&").filter((l=>l.split("=")[0]!==e)).join("&");return s+(a?"?"+a:"")+(i?"#"+i:"")},Is=function(t,e,n){var i;n===void 0&&(n=!0);var r=t.split("?"),s=r[0],o=r[1],a=k({},e),l=(i=o?.split("&").map((c=>{var d,f=c.split("="),h=f[0],p=n&&(d=a[h])!==null&&d!==void 0?d:f[1];return delete a[h],h+"="+p})))!==null&&i!==void 0?i:[],u=(function(c,d){var f,h;d===void 0&&(d="&");var p=[];return ie(c,(function(g,m){C(g)||C(m)||m==="undefined"||(f=encodeURIComponent((v=>v instanceof File)(g)?g.name:g.toString()),h=encodeURIComponent(m),p[p.length]=h+"="+f)})),p.join(d)})(a);return u&&l.push(u),l.length>0?s+"?"+l.join("&"):s},Po=t=>{if(t.Ji)return t.Ji;var e=t.data,n=t.compression;if(e){if(n===je.GZipJS){var i=rm((function(a,l){var u=a.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(a);for(var c=new lt(a.length+(a.length>>>1)),d=0,f=function(m){c[d++]=m},h=0;u>h;++h){if(d+5>c.length){var p=new lt(d+8+(u-h<<1));p.set(c),c=p}var g=a.charCodeAt(h);128>g?f(g):2048>g?(f(192|g>>>6),f(128|63&g)):g>55295&&57344>g?(f(240|(g=65536+(1047552&g)|1023&a.charCodeAt(++h))>>>18),f(128|g>>>12&63),f(128|g>>>6&63),f(128|63&g)):(f(224|g>>>12),f(128|g>>>6&63),f(128|63&g))}return kf(c,0,d)})(Kn(e)),{mtime:0});return{contentType:Cf,body:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength),estimatedSize:i.byteLength}}if(n===je.Base64){var r=(function(a){return a&&btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,((l,u)=>String.fromCharCode(parseInt(u,16)))))})(Kn(e)),s=(a=>"data="+encodeURIComponent(typeof a=="string"?a:Kn(a)))(r);return{contentType:"application/x-www-form-urlencoded",body:s,estimatedSize:new Blob([s]).size}}var o=Kn(e);return{contentType:"application/json",body:o,estimatedSize:new Blob([o]).size}}},Pf=t=>{var e,n,i=()=>t.transport==="sendBeacon"?{url:Is(t.url,{compression:je.Base64}),encodedBody:Po(k({},t,{compression:je.Base64,Ji:void 0}))}:{url:Af(t.url,"compression"),encodedBody:Po(k({},t,{compression:void 0,Ji:void 0}))};try{e=Po(t)}catch(r){if(pc(t.compression,ni(t.url,"compression")))return A.error("Failed to gzip request body, sending uncompressed payload",r),i();throw r}return e&&pc(t.compression,ni(t.url,"compression"))&&!((n=e.body)instanceof ArrayBuffer?qo(new Uint8Array(n)):ArrayBuffer.isView(n)&&qo(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)))?(Rr=!0,i()):{url:t.url,encodedBody:e}},Ff=t=>{try{return Pf(t)}catch(e){return A.error(e),void(t.callback==null||t.callback({statusCode:0,error:e}))}},om=(function(){var t=se((function*(e){var n=Kn(e.data),i=yield(function(s,o,a){return Vo.apply(this,arguments)})(n,ne.DEBUG,{rethrow:!0});if(!i)return e;var r=yield i.arrayBuffer();return k({},e,{Ji:{contentType:Cf,body:r,estimatedSize:r.byteLength}})}));return function(e){return t.apply(this,arguments)}})(),am=/Failed to fetch|NetworkError|Load failed/i,Rf=t=>t?.name==="TypeError"&&am.test(t?.message||""),Tf=t=>{var e=Ff(t);if(e){var n=e.url,i=e.encodedBody,r=i??{},s=r.contentType,o=r.body,a=r.estimatedSize,l=new Headers;ie(t.headers,(function(p,g){l.append(g,p)})),s&&l.append("Content-Type",s);var u=null,c=!1;if(lc){var d=new lc;u={signal:d.signal,timeout:setTimeout((()=>{var p,g;c=!0,d.abort((p=t.timeout,(g=new Error("PostHog request timed out"+(p?" after "+p+"ms":""))).name="AbortError",g))}),t.timeout)}}var f=p=>{c&&p?.name==="AbortError"||Rf(p)?A.warn(p):A.error(p),t.callback==null||t.callback({statusCode:0,error:p})};try{var h;Za(n,k({method:t?.method||"GET",headers:l,keepalive:t.method==="POST"&&!t.Yi&&52428.8>(a||0),body:o,signal:(h=u)==null?void 0:h.signal},t.fetchOptions)).then((p=>p.text().then((g=>{var m={statusCode:p.status,text:g};if(p.status===200)try{m.json=JSON.parse(g)}catch(v){A.error(v)}t.callback==null||t.callback(m)})))).catch(f).finally((()=>u?clearTimeout(u.timeout):null))}catch(p){u&&clearTimeout(u.timeout),f(p)}}},Ea=t=>{try{var e,n=Pf(t),i=n.url,r=n.encodedBody,s=r??{},o=s.body,a=s.estimatedSize;if(!o)return;var l=o instanceof Blob?o:new Blob([o],{type:s.contentType});if(Ue.sendBeacon(i,l))return;var u=U(t.data)?t.data:(e=t.data)==null?void 0:e.batch;if(U(u)&&u.length>1&&(a??0)>16384){var c=Math.ceil(u.length/2),d=f=>U(t.data)?f:k({},t.data,{batch:f});return Ea(k({},t,{data:d(u.slice(0,c))})),void Ea(k({},t,{data:d(u.slice(c))}))}A.warn("Beacon of ~"+(a??0)+" bytes was rejected by the browser, falling back to fetch"),Tf(k({},t,{Yi:!0}))}catch(f){A.warn("Beacon send failed",f)}},Yc=(t,e,n,i)=>{var r=i==="query"?e==="POST"?"sent_at":"_":void 0;return Is(n===je.GZipJS?Af(t,"compression"):t,k({},r?{[r]:Date.now().toString()}:{},n===je.GZipJS?{}:{compression:n}))},Tr=[];Za&&Tr.push({transport:"fetch",method:Tf}),zo&&Tr.push({transport:"XHR",method(t){var e=Ff(t);if(e){var n=new zo,i=e.encodedBody;n.open(t.method||"GET",e.url,!0);var r=i??{},s=r.contentType,o=r.body;ie(t.headers,(function(a,l){n.setRequestHeader(l,a)})),s&&n.setRequestHeader("Content-Type",s),t.timeout&&(n.timeout=t.timeout),n.onreadystatechange=()=>{if(n.readyState===4){var a={statusCode:n.status,text:n.responseText};if(n.status===200)try{a.json=JSON.parse(n.responseText)}catch{}t.callback==null||t.callback(a)}},n.send(o)}}}),Ue!=null&&Ue.sendBeacon&&Tr.push({transport:"sendBeacon",method:Ea});var Sa=3e3;class lm{constructor(e,n){this.Xi=!0,this.tr=[],this.er=Ct(n?.flush_interval_ms||Sa,250,5e3,A.createLogger("flush interval"),Sa),this.ir=e}enqueue(e){this.tr.push(e),this.rr||this.nr()}unload(){this.sr();var e=this.tr.length>0?this.ar():{},n=Object.values(e);[...n.filter((i=>i.url.indexOf("/e")===0)),...n.filter((i=>i.url.indexOf("/e")!==0))].map((i=>{this.lr(k({},i,{transport:"sendBeacon"}))}))}enable(){this.Xi=!1,this.nr()}nr(){var e=this;this.Xi||(this.rr=setTimeout((()=>{if(this.sr(),this.tr.length>0){var n=this.ar(),i=function(){var s=n[r],o=new Date().getTime();s.data&&U(s.data)&&ie(s.data,(a=>{a.offset=Math.abs(a.timestamp-o),delete a.timestamp})),e.lr(s)};for(var r in n)i()}}),this.er))}lr(e){try{this.ir(e)}catch(n){A.error(n)}}sr(){clearTimeout(this.rr),this.rr=void 0}ar(){var e={};return ie(this.tr,(n=>{var i,r=n,s=(r?r.batchKey:null)||r.url;C(e[s])&&(e[s]=k({},r,{data:[]})),(i=e[s].data)==null||i.push(r.data)})),this.tr=[],e}}var cm=["retriesPerformedSoFar"];class um{constructor(e){this.ur=!1,this.hr=3e3,this.tr=[],this._instance=e,this.tr=[],this.dr=!0,!C(w)&&"onLine"in w.navigator&&(this.dr=w.navigator.onLine,this.vr=()=>{this.dr=!0,this.cr()},this.pr=()=>{this.dr=!1},ve(w,"online",this.vr),ve(w,"offline",this.pr))}get length(){return this.tr.length}retriableRequest(e){var n=e.retriesPerformedSoFar,i=sd(e,cm);Bt(n)&&(i.url=Is(i.url,{retry_count:n})),this._instance._send_request(k({},i,{callback:r=>{if(r.statusCode!==200&&(400>r.statusCode||r.statusCode>=500)){if((r.statusCode===0?3:10)>(n??0))return void this.At(k({retriesPerformedSoFar:n},i));r.statusCode===0&&A.warn("Request failed before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped retrying after "+(n??0)+" retries.")}i.callback==null||i.callback(r)}}))}At(e){var n=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=n+1;var i=(function(o){var a=3e3*Math.pow(2,o),l=a/2,u=Math.min(18e5,a),c=Math.random()-.5;return Math.ceil(u+c*(u-l))})(n),r=Date.now()+i;this.tr.push({retryAt:r,requestOptions:e});var s="Enqueued failed request for retry in "+i;navigator.onLine||(s+=" (Browser is offline)"),A.warn(s),this.ur||(this.ur=!0,this.gr())}gr(){if(this.mr&&clearTimeout(this.mr),this.tr.length===0)return this.ur=!1,void(this.mr=void 0);this.mr=setTimeout((()=>{this.dr&&this.tr.length>0&&this.cr(),this.gr()}),this.hr)}cr(){var e=Date.now(),n=[],i=this.tr.filter((s=>e>s.retryAt||(n.push(s),!1)));if(this.tr=n,i.length>0)for(var r of i)this.retriableRequest(r.requestOptions)}unload(){for(var e of(this.mr&&(clearTimeout(this.mr),this.mr=void 0),this.ur=!1,C(w)||(this.vr&&(w.removeEventListener("online",this.vr),this.vr=void 0),this.pr&&(w.removeEventListener("offline",this.pr),this.pr=void 0)),this.tr)){var n=e.requestOptions;try{this._instance._send_request(k({},n,{transport:"sendBeacon"}))}catch(i){A.error(i)}}this.tr=[]}}class dm{constructor(e){this.yr=()=>{var n,i,r,s;this.br||(this.br={});var o=this.scrollElement(),a=this.scrollY(),l=o?Math.max(0,o.scrollHeight-o.clientHeight):0,u=a+(o?.clientHeight||0),c=o?.scrollHeight||0;this.br.lastScrollY=Math.ceil(a),this.br.maxScrollY=Math.max(a,(n=this.br.maxScrollY)!==null&&n!==void 0?n:0),this.br.maxScrollHeight=Math.max(l,(i=this.br.maxScrollHeight)!==null&&i!==void 0?i:0),this.br.lastContentY=u,this.br.maxContentY=Math.max(u,(r=this.br.maxContentY)!==null&&r!==void 0?r:0),this.br.maxContentHeight=Math.max(c,(s=this.br.maxContentHeight)!==null&&s!==void 0?s:0)},this._instance=e}get _r(){return this._instance.config.scroll_root_selector}getContext(){return this.br}resetContext(){var e=this.br;return setTimeout(this.yr,0),e}startMeasuringScrollPosition(){ve(w,"scroll",this.yr,{capture:!0}),ve(w,"scrollend",this.yr,{capture:!0}),ve(w,"resize",this.yr)}scrollElement(){if(!this._r)return w?.document.documentElement;var e=U(this._r)?this._r:[this._r];for(var n of e){var i=w?.document.querySelector(n);if(i)return i}}wr(e){var n=e==="y"?"scrollTop":"scrollLeft";if(this._r){var i=this.scrollElement();return i&&i[n]||0}return w?e==="y"?w.scrollY||w.pageYOffset||w.document.documentElement.scrollTop||0:w.scrollX||w.pageXOffset||w.document.documentElement.scrollLeft||0:0}scrollY(){return this.wr("y")}scrollX(){return this.wr("x")}}var fm=t=>_f(t?.config.mask_personal_data_properties,t?.config.custom_personal_data_properties,t?.config.disable_capture_url_hashes);class Jc{constructor(e,n,i,r){this.kr=s=>{var o=this.Sr();if(!o||o.sessionId!==s){var a={sessionId:s,props:this.Cr(this._instance)};this.Mr.register({[ua]:a})}},this._instance=e,this.Tr=n,this.Mr=i,this.Cr=r||fm,this.Tr.onSessionId(this.kr)}Sr(){return this.Mr.props[ua]}getSetOnceProps(){var e,n=(e=this.Sr())==null?void 0:e.props;return n?"r"in n?yf(n,this._instance.config.disable_capture_url_hashes):{$referring_domain:n.referringDomain,$pathname:n.initialPathName,utm_source:n.utm_source,utm_campaign:n.utm_campaign,utm_medium:n.utm_medium,utm_content:n.utm_content,utm_term:n.utm_term}:{}}getSessionProps(){var e={};return ie(ll(this.getSetOnceProps()),((n,i)=>{i==="$current_url"&&(i="url"),e["$session_entry_"+Go(i)]=n})),e}}class pl{on(e,n){return this.Er[e]||(this.Er[e]=[]),this.Er[e].push(n),()=>{this.Er[e]=this.Er[e].filter((i=>i!==n))}}emit(e,n){for(var i of this.Er[e]||[])i(n);for(var r of this.Er["*"]||[])r(e,n)}constructor(){this.Er={}}}var Ei=pe("[SessionId]");class Zc{on(e,n){return this.Ir.on(e,n)}constructor(e,n,i){var r;if(this.Pr=null,this.Rr=[],this.Ar=void 0,this.Fr=!1,this.Ir=new pl,this.Lr=(u,c)=>!(!Bt(u)||!Bt(c))&&Math.abs(u-c)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode===Ht)throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.Ne=e.config,this.Mr=e.persistence,this.Or=void 0,this.Dr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.$r=n||Ut,this.Nr=i||Ut;var s=this.Ne.persistence_name||this.Ne.token;if(this._sessionTimeoutMs=1e3*Ct(this.Ne.session_idle_timeout_seconds||1800,60,36e3,Ei.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.qr(),this.jr="ph_"+s+"_window_id",this.Br="ph_"+s+"_primary_window_exists",this.Hr()){var o=be.H(this.jr),a=be.H(this.Br);o&&!a?this.Or=o:be.q(this.jr),be.F(this.Br,!0)}if((r=this.Ne.bootstrap)!=null&&r.sessionID)try{var l=(u=>{var c=this.Ne.bootstrap.sessionID.replace(/-/g,"");if(c.length!==32)throw new Error("Not a valid UUID");if(c[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(c.substring(0,12),16)})();this.Ur(this.Ne.bootstrap.sessionID,new Date().getTime(),l)}catch(u){Ei.error("Invalid sessionID in bootstrap",u)}this.zr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return C(this.Rr)&&(this.Rr=[]),this.Rr.push(e),this.Dr&&e(this.Dr,this.Or),()=>{this.Rr=this.Rr.filter((n=>n!==e))}}Hr(){return this.Ne.persistence!=="memory"&&!this.Mr.xi&&be.N()}Wr(e){e!==this.Or&&(this.Or=e,this.Hr()&&be.F(this.jr,e))}Vr(){return this.Or?this.Or:this.Hr()?be.H(this.jr):null}Zr(e){var n=this.Pr;return!Ve(n)&&!Ve(e)&&5e3>Math.abs(e-n)}Ur(e,n,i){var r=n!==this._sessionActivityTimestamp,s=!(e!==this.Dr||i!==this._sessionStartTimestamp);this._sessionStartTimestamp=i,this._sessionActivityTimestamp=n,this.Dr=e,s&&!r||s&&this.Zr(n)||(this.Pr=n,this.Mr.register({[Gn]:[n,e,i]}))}Gr(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return Bt(n)&&n>0}Qr(){this.Gr()?this.Mr.refreshKey(Gn):(this.Mr.flush(),this.Mr.load())}Kr(){var e;if(!Ve(this._sessionActivityTimestamp)&&this._sessionActivityTimestamp!==this.Pr){this.Qr();var n=this.Jr();n[1]===this.Dr&&n[2]===this._sessionStartTimestamp&&(this.Pr=this._sessionActivityTimestamp,this.Mr.register({[Gn]:[this._sessionActivityTimestamp,(e=this.Dr)!==null&&e!==void 0?e:null,this._sessionStartTimestamp]}),this.Mr.flush())}}Yr(){var e=this.Jr()[0],n=Bt(e)?e:0,i=Bt(this._sessionActivityTimestamp)?this._sessionActivityTimestamp:0;return Math.max(n,i)}Xr(e){return this.Qr(),this.Lr(e,this.Yr())}Jr(){var e=this.Mr.props[Gn];return U(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this.Pr=null,clearTimeout(this.tn),this.tn=void 0,this.Ur(null,null,null)}destroy(){this.Fr=!0,this.Kr(),clearTimeout(this.tn),this.tn=void 0,this.Ar&&w&&(w.removeEventListener(Qr,this.Ar,{capture:!1}),this.Ar=void 0),this.Rr=[]}zr(){this.Ar=()=>{this.Kr(),this.Hr()&&be.q(this.Br)},ve(w,Qr,this.Ar,{capture:!1})}checkAndGetSessionAndWindowId(e,n){if(e===void 0&&(e=!1),n===void 0&&(n=null),this.Ne.cookieless_mode===Ht)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var i=n||new Date().getTime(),r=this.Jr(),s=r[1],o=r[2],a=this.Yr(),l=this.Vr(),u=Bt(o)&&Math.abs(i-o)>864e5,c=!1,d=!1,f=!s,h=s,p=!f&&!e&&this.Lr(i,a);if(p){(p=this.Xr(i))||Ei.info("cross-tab refresh kept the session alive",{sessionId:s});var g=this.Jr();s=g[1],o=g[2]}f||p||u?(s=this.$r(),l=this.Nr(),Ei.info("new session ID generated",{sessionId:s,windowId:l,changeReason:{noSessionId:f,activityTimeout:p,sessionPastMaximumLength:u}}),o=i,c=!0):(l||(l=this.Nr(),c=!0),(d=s!==h)&&(Ei.info("adopted cross-tab session id",{sessionId:s,windowId:l}),c=!0));var m=Bt(a)&&e&&!u?a:i,v=Bt(o)?o:new Date().getTime();this.Wr(l),this.Ur(s,m,v),e||this.qr();var S={noSessionId:f,activityTimeout:p,sessionPastMaximumLength:u,crossTabAdoption:d};return c&&this.Rr.forEach((b=>b(s,l,S))),{sessionId:s,windowId:l,sessionStartTimestamp:v,changeReason:c?S:void 0,lastActivityTimestamp:a}}qr(){this.Fr||(clearTimeout(this.tn),this.tn=setTimeout((()=>{if(!this.Fr)if(this.Xr(new Date().getTime())){var e=this.Dr;this.resetSessionId(),this.Ir.emit("forcedIdleReset",{idleSessionId:e})}else this.qr()}),1.1*this.sessionTimeoutMs))}}var $f=function(t,e){if(!t)return!1;var n=t.userAgent;if(n&&mc(n,e))return!0;try{var i=t?.userAgentData;if(i!=null&&i.brands&&i.brands.some((r=>mc(r?.brand,e))))return!0}catch{}return!!t.webdriver};function Mf(){return(Mf=se((function*(){var t=Ue?.userAgentData;if(t!=null&&t.getHighEntropyValues)try{var e=yield t.getHighEntropyValues(["model"]),n=e?.model;return X(n)&&n.length>0?n:void 0}catch(i){return void A.info("Unable to resolve $device_model from userAgentData.getHighEntropyValues",i)}}))).apply(this,arguments)}var os=function(t,e){if(!(function(n){try{new RegExp(n)}catch{return!1}return!0})(e))return!1;try{return new RegExp(e).test(t)}catch{return!1}};function Fo(t,e,n){return Kn({distinct_id:t,userPropertiesToSet:e,userPropertiesToSetOnce:n})}var Lf={exact:(t,e)=>e.some((n=>t.some((i=>n===i)))),is_not:(t,e)=>e.every((n=>t.every((i=>n!==i)))),regex:(t,e)=>e.some((n=>t.some((i=>os(n,i))))),not_regex:(t,e)=>e.every((n=>t.every((i=>!os(n,i))))),icontains:(t,e)=>e.map(yr).some((n=>t.map(yr).some((i=>n.includes(i))))),not_icontains:(t,e)=>e.map(yr).every((n=>t.map(yr).every((i=>!n.includes(i))))),gt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>i>parseFloat(r)))})),lt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>it.toLowerCase();function Nf(t,e){return!t||Object.entries(t).every((n=>{var i=n[1],r=e?.[n[0]];if(C(r)||Ve(r))return!1;var s=[String(r)],o=Lf[i.operator];return!!o&&o(i.values,s)}))}var xa="custom",Xc="i.posthog.com",hm=/^\/static\//;class pm{constructor(e){this.en={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,n=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return n||(n=this.apiHost.replace("."+Xc,".posthog.com")),n==="https://app.posthog.com"?"https://us.posthog.com":n}get region(){return this.en[this.apiHost]||(this.en[this.apiHost]=/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"us":/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"eu":xa),this.en[this.apiHost]}rn(e){if(hm.test(e)){var n=this.instance.config.asset_host;if(typeof n=="string")return n.trim().replace(/\/$/,"")||void 0}}endpointFor(e,n){if(n===void 0&&(n=""),n&&(n=n[0]==="/"?n:"/"+n),e==="ui")return this.uiHost+n;if(e==="flags")return this.flagsApiHost+n;if(e==="assets"){var i=this.rn(n);if(i)return""+i+n}if(this.region===xa)return this.apiHost+n;var r=Xc+n;switch(e){case"assets":return"https://"+this.region+"-assets."+r;case"api":return"https://"+this.region+"."+r}}}function Of(t){var e;return!((e=t.conditions)==null||(e=e.events)==null||(e=e.values)==null||!e.length)}var Q=pe("[Surveys]"),Bf="seenSurvey_",Df=t=>{try{var e=(n=>((i,r)=>""+Bf+(function(s){return s.current_iteration&&s.current_iteration>0?s.id+"_"+s.current_iteration:s.id})(r))(0,n))(t);if(localStorage.getItem(e))return;localStorage.setItem(e,"true")}catch(n){Q.error("Failed to persist survey seen state",n)}},gm=[Io.Popover,Io.Widget,Io.API],mm={ignoreConditions:!1,ignoreDelay:!1,displayType:_a.Popover},vm=pe("[PostHog ExternalIntegrations]"),_m={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class ym{constructor(e){this._instance=e}ai(e,n){var i;(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,e,(r=>{if(r)return vm.error("failed to load script",r);n()}))}startIfEnabledOrStop(){var e=this,n=function(){var s,o,a,l=i[0],u=i[1];!u||(s=B.__PosthogExtensions__)!=null&&(s=s.integrations)!=null&&s[l]||e.ai(_m[l],(()=>{var c;(c=B.__PosthogExtensions__)==null||(c=c.integrations)==null||(c=c[l])==null||c.start(e._instance)})),!u&&(o=B.__PosthogExtensions__)!=null&&(o=o.integrations)!=null&&o[l]&&((a=B.__PosthogExtensions__)==null||(a=a.integrations)==null||(a=a[l])==null||a.stop())};for(var i of Object.entries((r=this._instance.config.integrations)!==null&&r!==void 0?r:{})){var r;n()}}}class wm{constructor(e,n){this.rt=e,this.nn=n,this.sn=new Map,this.an=!1}add(e){var n=this;return se((function*(){if(n.an)throw new Error("Cannot add an extension to a disposed ExtensionRuntime");if(n.sn.has(e.name))throw new Error('Browser extension "'+e.name+'" is already registered');n.sn.set(e.name,e);try{var i=e.setup(n.nn);i&&(yield i)}catch(s){var r=n.sn.get(e.name)===e;r&&n.sn.delete(e.name),n.rt.error('Failed to set up browser extension "'+e.name+'"',s),r&&n.ln(e)}}))()}dispose(){if(!this.an){this.an=!0;var e=Array.from(this.sn.values()).reverse();for(var n of(this.sn.clear(),e))this.ln(n)}}ln(e){try{var n=e.dispose==null?void 0:e.dispose();n&&De(n.then)&&n.then(void 0,(i=>{this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}))}catch(i){this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}}}class bm{constructor(e){this._instance=e}initialize(){}get(e){var n=this._instance.persistence;if(typeof e=="string")return n?.get_property(e);var i={};for(var r of e){var s=n?.get_property(r);C(s)||(i[r]=s)}return i}set(e,n){var i;(i=this._instance.persistence)==null||i.register(typeof e=="string"?{[e]:n}:e)}remove(e){var n;(n=this._instance.persistence)==null||n.unregister(e)}}var Qc="extensionsRemoteConfig";class Em{constructor(e){this.an=!1,this.instance=e,this.rt=A,this.un=e.hn,this.kv=new bm(e),this.onEvent=n=>_r(this.instance.on("eventCaptured",(i=>{try{n({event:i.event,properties:i.properties})}catch(r){this.rt.error("Browser extension event listener failed",r)}}))),this.onRemoteConfig=n=>{if(this.an)return _r((()=>{}));var i=s=>{try{n(s)}catch(o){this.rt.error("Browser extension remote config listener failed",o)}},r=this.instance.dn.on(Qc,i);return this.un&&i(this.un),_r(r)},this.vn=new wm(A.createLogger("[BrowserExtensions]"),this)}get logger(){return this.rt}get distinctId(){return this.instance.get_distinct_id()}get anonymousId(){var e;return(e=this.instance.get_property(Ki))!==null&&e!==void 0?e:this.distinctId}get deviceId(){var e=this.instance.get_property(Ki);return typeof e=="string"?e:void 0}get library(){return{name:ne.LIB_NAME,version:ne.LIB_VERSION}}get initialPersonProperties(){var e,n;return(e=(n=this.instance.persistence)==null?void 0:n.get_initial_props())!==null&&e!==void 0?e:{}}get groups(){return this.instance.getGroups()}get session(){try{var e,n,i,r,s=(e=this.instance.sessionManager)==null?void 0:e.checkAndGetSessionAndWindowId(!0);return{sessionId:(n=s?.sessionId)!==null&&n!==void 0?n:"",windowId:(i=s?.windowId)!==null&&i!==void 0?i:"",sessionStartTimestamp:(r=s?.sessionStartTimestamp)!==null&&r!==void 0?r:0}}catch{return{sessionId:"",windowId:"",sessionStartTimestamp:0}}}get projectToken(){return this.instance.config.token}add(e){return this.vn.add(e)}capture(e,n,i){var r=this;return se((function*(){i?r.instance.capture(e,n,{timestamp:i.timestamp,uuid:i.uuid,$set:i.set,$set_once:i.setOnce}):r.instance.capture(e,n)}))()}registerDynamicEventProperties(e){return _r(this.instance.cn(e))}handleRemoteConfig(e){this.an||(this.un=e,this.instance.dn.emit(Qc,e))}sendRequest(e,n){var i=this;return se((function*(){var r;n===void 0&&(n={});var s=i.instance.requestRouter.endpointFor((r=n.target)!==null&&r!==void 0?r:"api",e),o={method:n.method,url:n.query?Is(s,n.query):s,data:n.body,headers:n.headers,timeout:n.timeoutMs,fireCallbackOnDrop:!0,transport:n.transport,compression:n.compression,timestampMode:n.sentAt};return n.transport==="sendBeacon"?(i.instance._send_request(o),{statusCode:202}):new Promise((a=>{o.callback=a,i.instance._send_request(o)}))}))()}dispose(){this.an||(this.an=!0,this.vn.dispose())}}var Hi={},Ro=0,as=()=>{},eu='Consent opt in/out is not valid with cookieless_mode="always" and will be ignored',Si="Surveys module not available",tu="sanitize_properties is deprecated. Use before_send instead",jf="Invalid value for property_denylist config: ",Sm=["token","distinct_id",Vd],Vn="posthog",Uf=!sm&&ze?.indexOf("MSIE")===-1&&ze?.indexOf("Mozilla")===-1,To=t=>{var e;return k({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,asset_host:null,token:"",autocapture:!0,cross_subdomain_cookie:xg(F?.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:as,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:t??"unset",__preview_deferred_init_extensions:!1,__preview_external_dependency_versioned_paths:!1,__preview_cookie_wins_on_conflict:!1,debug:me&&X(me?.search)&&me.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disableDeviceModel:!1,disable_external_dependency_loading:!1,strict_script_versioning:!1,enable_recording_console_log:void 0,secure_cookie:(w==null||(e=w.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_feature_flags_dedup_per_session:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error(n){A.error("Bad HTTP status: "+n.statusCode+" "+n.text)},get_device_id:n=>n,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:pa,before_send:void 0,get_current_url:void 0,request_queue_config:{flush_interval_ms:Sa},error_tracking:{},_onCapture:as},(n=>({rageclick:n&&n>="2026-05-30"?{content_ignorelist:Ng,ignore_text_selection:!0}:!n||"2025-11-30">n||{content_ignorelist:!0},capture_pageview:!n||"2025-05-24">n||"history_change",session_recording:n&&n>="2026-06-25"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6},streamNetworkBody:!0}:n&&n>="2026-05-30"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6}}:n&&n>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:n&&n>="2026-01-30"?"head":"body",internal_or_test_user_hostname:n&&n>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0,persistence_save_debounce_ms:n&&n>="2026-05-30"?250:0,split_storage:!(!n||"2026-05-30">n),detect_google_search_app:!(!n||"2026-05-30">n),disable_capture_url_hashes:!(!n||"2026-06-25">n)}))(t))},xm=[["process_person","person_profiles"],["xhr_headers","request_headers"],["cookie_name","persistence_name"],["disable_cookie","disable_persistence"],["__preview_disable_beacon","disable_beacon"],["store_google","save_campaign_params"],["verbose","debug"]],nu=t=>{var e={};for(var n of xm){var i=n[0],r=n[1];C(t[i])||(e[r]=t[i])}var s=fe({},e,t),o=t.__preview_external_dependency_versioned_paths;return C(o)||(C(t.strict_script_versioning)&&(s.strict_script_versioning=!!o),X(o)&&C(t.asset_host)&&(s.asset_host=o)),U(t.property_blacklist)&&(C(t.property_denylist)?s.property_denylist=t.property_blacklist:U(t.property_denylist)?s.property_denylist=[...t.property_blacklist,...t.property_denylist]:A.error(jf+t.property_denylist)),s};class Im{constructor(){this.__forceAllowLocalhost=!1}get fn(){return this.__forceAllowLocalhost}set fn(e){A.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class Je{pn(e,n){if(e){var i=this.sn.indexOf(e);i!==-1&&this.sn.splice(i,1)}return this.sn.push(n),n.initialize==null||n.initialize(),n}gn(){return this.config.cookieless_mode===Ht||this.config.cookieless_mode===In&&this.consent.isRejected()}get decideEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){var e;this.webPerformance=new Im,this.mn=!1,this.version=ne.LIB_VERSION,this.yn=new Set,this.bn="",this.dn=new pl,this.sn=[],this._n=[],this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=To(),this.SentryIntegration=zg,this.sentryIntegration=i=>(function(r,s){var o=df(r,s);return{name:uf,processEvent:a=>o(a)}})(this,i),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.wn=!1,this.kn=null,this.xn=null,this.Sn=null,this.scrollManager=new dm(this),this.pageViewManager=new Uc(this),this.rateLimiter=new Qg(this),this.requestRouter=new pm(this),this.consent=new Rg(this),this.externalIntegrations=new ym(this);var n=(e=Je.__defaultExtensionClasses)!==null&&e!==void 0?e:{};this.featureFlags=n.featureFlags&&new n.featureFlags(this),this.toolbar=n.toolbar&&new n.toolbar(this),this.surveys=n.surveys&&new n.surveys(this),this.conversations=n.conversations&&new n.conversations(this),this.logs=n.logs&&new n.logs(this),this.metrics=n.metrics&&new n.metrics(this),this.experiments=n.experiments&&new n.experiments(this),this.exceptions=n.exceptions&&new n.exceptions(this),this.people={set:(i,r,s)=>{var o=X(i)?{[i]:r}:i;this.setPersonProperties(o),s?.({})},set_once:(i,r,s)=>{var o=X(i)?{[i]:r}:i;this.setPersonProperties(void 0,o),s?.({})}},this.on("eventCaptured",(i=>A.info('send "'+i?.event+'"',i)))}init(e,n,i){if(i&&i!==Vn){var r,s=(r=Hi[i])!==null&&r!==void 0?r:new Je;return s._init(e,n,i),Hi[i]=s,Hi[Vn][i]=s,s}return this._init(e,n,i)}_init(e,n,i){var r,s;n===void 0&&(n={});var o,a=X(e)?e.trim():"";if(!a)return A.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return a!==((o=this.config)==null?void 0:o.token)?console.warn("[PostHog.js]","You have already initialized PostHog with a different project token! Re-initializing is a no-op, so events will keep going to the project this instance was initialized with. To capture into a second project, load PostHog once, then initialize a named instance after the SDK has loaded, e.g. posthog.init('"+a+"', { ... }, 'project2')"):console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config=To(n.defaults),n.debug=this.Cn(n.debug),this.Mn=n,this.Tn=[],n.person_profiles?this.xn=n.person_profiles:n.process_person&&(this.xn=n.process_person);var l=To(n.defaults),u=nu(n),c=fe({},l,u,{name:i,token:a});he(l.rageclick)&&he(u.rageclick)&&(c.rageclick=fe({},l.rageclick,u.rageclick)),he(l.session_recording)&&he(u.session_recording)&&(c.session_recording=fe({},l.session_recording,u.session_recording)),this.set_config(c),this.config.on_xhr_error&&A.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=n.disable_compression?void 0:je.GZipJS;var d=this.En();if(this.persistence=new xo(this.config,d),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new xo(k({},this.config,{persistence:"sessionStorage"}),d,!1),this.bn="ph_"+(this.config.persistence_name||this.config.token)+"_session_registered_properties",this.config.persistence!=="memory"&&!d&&be.N()){var f=be.H(this.bn);U(f)&&f.forEach((I=>{X(I)&&this.yn.add(I)}))}else be.q(this.bn);var h=k({},this.persistence.props),p=k({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.In=new lm((I=>this.Pn(I)),this.config.request_queue_config),this.Rn=new um(this),this.__request_queue=[];var g=this.gn();if(g||(this.sessionManager=new Zc(this),this.sessionPropsManager=new Jc(this,this.sessionManager,this.persistence),this.sessionManager.onSessionId(((I,T,E)=>{(E!=null&&E.activityTimeout||E!=null&&E.sessionPastMaximumLength||E!=null&&E.crossTabAdoption)&&this.An()}))),this.Fn(),this.config.__preview_deferred_init_extensions?(A.info("Deferring extension initialization to improve startup performance"),setTimeout((()=>{this.Ln(g)}),0)):(A.info("Initializing extensions synchronously"),this.Ln(g)),ne.DEBUG=ne.DEBUG||this.config.debug,ne.DEBUG&&A.info("Starting in debug mode",{this:this,config:n,thisC:k({},this.config),p:h,s:p}),!this.config.identity_distinct_id||(r=n.bootstrap)!=null&&r.distinctID||(n.bootstrap=k({},n.bootstrap,{distinctID:this.config.identity_distinct_id,isIdentifiedID:!0})),((s=n.bootstrap)==null?void 0:s.distinctID)!==void 0){var m=n.bootstrap.distinctID,v=this.get_distinct_id(),S=this.persistence.get_property(ot);if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&S===jn)this.identify(m);else if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&S===mn)A.warn("Bootstrap distinctID differs from an already-identified user. The existing identity is preserved. Call reset() before reinitializing if you intend to switch users.");else{var b=this.config.get_device_id(Ut()),_=n.bootstrap.isIdentifiedID?b:m;this.persistence.set_property(ot,n.bootstrap.isIdentifiedID?mn:jn),this.register({distinct_id:m,$device_id:_})}}if(g)this.register_once({distinct_id:hr,$device_id:null},"");else if(!this.get_distinct_id()){var x=this.config.get_device_id(Ut());this.register_once({distinct_id:x,$device_id:x},""),this.persistence.set_property(ot,jn)}return ve(w,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),n.segment?(function(I,T){var E=I.config.segment;if(!E)return T();(function(P,$){var O=P.config.segment;if(!O)return $();var L=G=>{var V=()=>G.anonymousId()||Ut();P.config.get_device_id=V,G.id()&&(P.register({distinct_id:G.id(),$device_id:V()}),P.persistence.set_property(ot,mn)),$()},N=O.user();"then"in N&&De(N.then)?N.then(L):L(N)})(I,(()=>{E.register((P=>{typeof Promise<"u"&&Promise.resolve||Eo.warn("This browser does not have Promise support, and can not use the segment integration");var $=(O,L)=>{if(!L)return O;O.event.userId||O.event.anonymousId===P.get_distinct_id()||(Eo.info("No userId set, resetting PostHog"),P.reset()),O.event.userId&&O.event.userId!==P.get_distinct_id()&&(Eo.info("UserId set, identifying with PostHog"),P.identify(O.event.userId));var N=P.calculateEventProperties(L,O.event.properties);return O.event.properties=Object.assign({},N,O.event.properties),O};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:O=>$(O,O.event.event),page:O=>$(O,qn),identify:O=>$(O,yo),screen:O=>$(O,"$screen")}})(I)).then((()=>{T()}))}))})(this,(()=>this.On())):this.On(),De(this.config._onCapture)&&this.config._onCapture!==as&&(A.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",(I=>this.config._onCapture(I.event,I)))),this.config.ip&&A.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this.config.disableDeviceModel||(function(){return Mf.apply(this,arguments)})().then((I=>{I&&this.register({[vo]:I})})).catch(as),this}Fn(){var e,n,i,r,s,o,a=(e=(n=this.config.__extensionClasses)==null?void 0:n.featureFlags)!==null&&e!==void 0?e:(i=Je.__defaultExtensionClasses)==null?void 0:i.featureFlags;a&&(this.featureFlags&&this.featureFlags instanceof a||((r=this.Dn)==null||r.call(this),this.Dn=void 0,this.featureFlags=new a(this)),De(this.featureFlags.onReloading)&&De(this.featureFlags.setup)?this.Dn||(this.Dn=this.featureFlags.onReloading((()=>{this.dn.emit("featureFlagsReloading",!0)})),this.$n().add(this.featureFlags)):(s=(o=this.featureFlags).initialize)==null||s.call(o))}Ln(e){var n,i,r,s,o,a,l,u=performance.now(),c=k({},Je.__defaultExtensionClasses,this.config.__extensionClasses),d=[];c.exceptions&&this.sn.push(this.exceptions=(n=this.exceptions)!==null&&n!==void 0?n:new c.exceptions(this)),c.historyAutocapture&&this.sn.push(this.historyAutocapture=new c.historyAutocapture(this)),c.tracingHeaders&&this.sn.push(this.tracingHeaders=new c.tracingHeaders(this)),c.siteApps&&this.sn.push(this.siteApps=new c.siteApps(this)),c.sessionRecording&&!e&&this.sn.push(this.sessionRecording=new c.sessionRecording(this)),this.config.disable_scroll_properties||d.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),c.autocapture&&this.sn.push(this.autocapture=new c.autocapture(this)),c.surveys&&this.sn.push(this.surveys=(i=this.surveys)!==null&&i!==void 0?i:new c.surveys(this)),c.logs&&this.sn.push(this.logs=(r=this.logs)!==null&&r!==void 0?r:new c.logs(this)),c.metrics&&this.sn.push(this.metrics=(s=this.metrics)!==null&&s!==void 0?s:new c.metrics(this)),c.conversations&&this.sn.push(this.conversations=(o=this.conversations)!==null&&o!==void 0?o:new c.conversations(this)),c.productTours&&this.sn.push(this.productTours=new c.productTours(this)),c.heatmaps&&this.sn.push(this.heatmaps=new c.heatmaps(this)),c.webVitalsAutocapture&&this.sn.push(this.webVitalsAutocapture=new c.webVitalsAutocapture(this)),c.exceptionObserver&&this.sn.push(this.exceptionObserver=new c.exceptionObserver(this)),c.deadClicksAutocapture&&this.sn.push(this.deadClicksAutocapture=new c.deadClicksAutocapture(this,Wg)),c.toolbar&&this.sn.push(this.toolbar=(a=this.toolbar)!==null&&a!==void 0?a:new c.toolbar(this)),c.experiments&&this.sn.push(this.experiments=(l=this.experiments)!==null&&l!==void 0?l:new c.experiments(this)),this.sn.forEach((f=>{f.initialize&&d.push((()=>{f.initialize==null||f.initialize()}))})),d.push((()=>{if(this.Nn){var f=this.Nn;this.Nn=void 0,this.sn.forEach((h=>h.onRemoteConfig==null?void 0:h.onRemoteConfig(f)))}})),this.qn(d,u)}qn(e,n){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-n>=30&&e.length>0)return void setTimeout((()=>{this.qn(e,n)}),0);var i=e.shift();if(i)try{i()}catch(s){A.error("Error initializing extension:",s)}}var r=Math.round(performance.now()-n);this.register_for_session({[Gd]:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",[Kd]:r}),this.config.__preview_deferred_init_extensions&&A.info("PostHog extensions initialized ("+r+"ms)")}Zi(e){var n;if(!F||!F.body)return A.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((()=>{this.Zi(e)}),500);if(this.config.__preview_deferred_init_extensions&&(this.Nn=e),this.hn=e,this.compression=void 0,e.ok){var i,r=e.config;r.supportedCompression&&!this.config.disable_compression&&(this.compression=j(r.supportedCompression,je.GZipJS)?je.GZipJS:j(r.supportedCompression,je.Base64)?je.Base64:void 0),(i=r.analytics)!=null&&i.endpoint&&(this.analyticsDefaultEndpoint=r.analytics.endpoint)}this.set_config({person_profiles:this.xn?this.xn:pa}),(n=this.jn)==null||n.handleRemoteConfig(e),this.sn.forEach((s=>s.onRemoteConfig==null?void 0:s.onRemoteConfig(e)))}On(){try{this.config.loaded(this)}catch(i){A.critical("`loaded` function failed",i)}if(this.Bn(),this.config.internal_or_test_user_hostname&&me!=null&&me.hostname){var e=me.hostname,n=this.config.internal_or_test_user_hostname;(typeof n=="string"?e===n:n.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||this.gn())&&this.Hn()}),1),this.Un=new bf(this),this.Un.load()}Bn(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.In)==null||e.enable())}_dom_loaded(){this.is_capturing()&&pr(this.__request_queue,(e=>this.Pn(e))),this.__request_queue=[],this.Bn()}_handle_unload(){var e,n,i,r,s;(e=this.surveys)==null||e.handlePageUnload==null||e.handlePageUnload(),(n=this.metrics)==null||n.flush("sendBeacon"),this.config.request_batching?(this.zn()&&this.capture(_o),(i=this.logs)==null||i.flushLogs("sendBeacon"),(r=this.In)==null||r.unload(),(s=this.Rn)==null||s.unload()):this.zn()&&this.capture(_o,null,{transport:"sendBeacon"})}_send_request(e){this.__loaded?Uf?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)?e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:429})):(e.transport=e.transport||this.config.api_transport,e.headers=k({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,(C(this.config.disable_beacon)?this.config.__preview_disable_beacon:this.config.disable_beacon)&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(n=>{var i,r,s,o=k({},n);o.timeout=o.timeout||6e4;var a,l,u,c,d,f=(i=o.transport)!==null&&i!==void 0?i:"fetch";f==="sendBeacon"&&C(o.compression)&&o.data&&(o.compression=je.Base64),o.method==="POST"&&o.data&&(o.timestampMode==="capture-body"?o.data={api_key:(l=(d=(c=U(a=o.data)?a:[a])[0])==null||(u=d.properties)==null?void 0:u.token)!==null&&l!==void 0?l:d?.token,batch:c,sent_at:new Date().toISOString()}:o.timestampMode==="body"&&(o.data=(function(m,v){return v===void 0&&(v=new Date().toISOString()),U(m)?m.map((S=>k({},S,{sent_at:v}))):k({},m,{sent_at:v})})(o.data))),o.url=Yc(o.url,o.method,o.compression,o.timestampMode);var h=Tr.filter((m=>!o.disableTransport||!m.transport||!o.disableTransport.includes(m.transport))),p=(r=(s=(function(m,v){for(var S=0;m.length>S;S++)if(m[S].transport===f)return m[S]})(h))==null?void 0:s.method)!==null&&r!==void 0?r:h[0].method;if(!p)throw new Error("No available transport method");var g=m=>{try{p(m)}catch(v){Rf(v)?A.warn(v):A.error(v),o.callback==null||o.callback({statusCode:0,error:v})}};f!=="sendBeacon"&&o.data&&o.compression===je.GZipJS&&kp&&typeof Promise<"u"&&!Rr?om(o).then((m=>{g(m)})).catch((m=>{if(gc(m))return Rr=!0,void g(k({},o,{compression:void 0,url:Yc(n.url,n.method,void 0,n.timestampMode)}));(v=>{if(!v||typeof v!="object")return!1;var S="name"in v?String(v.name):"";return gc(v)||S===od})(m)&&(Rr=!0),g(o)})):p(o)})(k({},e,{callback:n=>{var i,r;this.rateLimiter.checkForLimiting(n),400>n.statusCode||(i=(r=this.config).on_request_error)==null||i.call(r,n),e.callback==null||e.callback(n)}}))):e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:0}))}Pn(e){this.Rn?this.Rn.retriableRequest(e):this._send_request(e)}_execute_array(e){Ro++;try{var n,i=[],r=[],s=[];pr(e,(a=>{if(a)if(U(n=a[0]))s.push(a);else if(De(a))try{a.call(this)}catch(l){A.error("Error executing queued PostHog call",a,l)}else U(a)&&n==="alias"?i.push(a):U(a)&&n.indexOf("capture")!==-1&&De(this[n])?s.push(a):r.push(a)}));var o=function(a,l){pr(a,(function(u){try{if(U(u[0])){var c=l;ie(u,(function(d){c=c[d[0]].apply(c,d.slice(1))}))}else l[u[0]].apply(l,u.slice(1))}catch(d){A.error("Error executing queued PostHog call",u,d)}}))};o(i,this),o(r,this),o(s,this)}finally{Ro--}}push(e){if(Ro>0&&U(e)&&X(e[0])){var n=Je.prototype[e[0]];De(n)&&n.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,n,i){var r,s,o,a,l;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.In){if(this.is_capturing())if(!C(e)&&X(e)){var u=!this.config.opt_out_useragent_filter&&this._is_bot();if(!u||this.config.__preview_capture_bot_pageviews){var c=i!=null&&i.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(c==null||!c.isRateLimited){n!=null&&n.$current_url&&!X(n?.$current_url)&&(A.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),n==null||delete n.$current_url),e!=="$exception"||i!=null&&i.Wn||A.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var d=new Date,f=i?.timestamp||d,h=wc(i?.uuid,Ut),p={uuid:h,event:e,properties:this.calculateEventProperties(e,n||{},f,h)};e===qn&&this.config.__preview_capture_bot_pageviews&&u&&(p.event="$bot_pageview",p.properties.$browser_type="bot"),c&&(p.properties.$lib_rate_limit_remaining_tokens=c.remainingTokens);var g=e==="$feature_flag_called"&&p.properties.$feature_flag_has_experiment===!1&&this.get_property(Kr)===!0;i?.$set&&!g&&(p.$set=i?.$set);var m=i?.$unset;m&&(p.$unset=m);var v,S,b,_=g?void 0:this.Vn(i?.$set_once,e!==kc,e===yo);if(_&&(p.$set_once=_),i!=null&&i._noTruncate||(s=this.config.properties_string_max_length,o=p,a=L=>X(L)?L.slice(0,s):L,l=new Set,p=(function L(N,G){if(N!==Object(N))return a?a(N):N;if(!l.has(N)){var V;if(l.add(N),U(N))V=[],pr(N,(R=>{V.push(L(R))}));else{var M={};ie(N,((R,Z)=>{l.has(R)||(M[Z]=L(R))})),V=M}return V}})(o)),p.timestamp=f,C(i?.timestamp)||(p.properties.$event_time_override_provided=!0,p.properties.$event_time_override_system_time=d),g&&(p.properties=(function(L,N){N===void 0&&(N=[]);var G={},V=M=>{L[M]!==void 0&&(G[M]=L[M])};return Cp.forEach(V),N.forEach(V),G})(p.properties,Sm)),e===zt.DISMISSED||e===zt.SENT){var x=n?.[ko.SURVEY_ID],I=n?.[ko.SURVEY_ITERATION];Df({id:x,current_iteration:I}),p.$set=k({},p.$set,{[(v={id:x,current_iteration:I},S=e===zt.SENT?"responded":"dismissed",b="$survey_"+S+"/"+v.id,v.current_iteration&&v.current_iteration>0&&(b="$survey_"+S+"/"+v.id+"/"+v.current_iteration),b)]:!0})}else e===zt.SHOWN&&(p.$set=k({},p.$set,{[ko.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));if(e===Xg.SHOWN){var T=n?.[Wc.TOUR_TYPE];T&&(p.$set=k({},p.$set,{[Wc.TOUR_LAST_SEEN_DATE+"/"+T]:new Date().toISOString()}))}var E=k({},p.properties.$set,p.$set);if(Vt(E)||this.setPersonPropertiesForFlags(E),!H(this.config.before_send)){var P=this.Pt(p);if(!P)return;(p=P).uuid=wc(p.uuid,Ut)}this.dn.emit("eventCaptured",p);var $=(r=i?._url)!==null&&r!==void 0?r:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),O={method:"POST",url:$,data:p,compression:"best-available",timestampMode:i?._batchKey==="recordings"||/\/s\/(?:\?|$)/.test($)?"body":"capture-body",batchKey:i?._batchKey,transport:i?.transport};return!this.config.request_batching||i&&(i==null||!i._batchKey)||i!=null&&i.send_instantly?this.Pn(O):this.In.enqueue(O),p}A.critical("This capture call is ignored due to client rate limiting.")}}else A.error("No event name provided to posthog.capture")}else A.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",(n=>e(n.event,n)))}$n(){var e;return(e=this.jn)!==null&&e!==void 0?e:this.jn=new Em(this)}cn(e){this._n.push(e);var n=!0;return()=>{if(n){n=!1;var i=this._n.indexOf(e);i!==-1&&this._n.splice(i,1)}}}calculateEventProperties(e,n,i,r,s){if(i=i||new Date,!this.persistence||!this.sessionPersistence)return n;var o=s?void 0:this.persistence.remove_event_timer(e),a=k({},n);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.gn()&&(a[Vd]=!0),e==="$snapshot"){var l=k({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!X(a.distinct_id)&&!ke(a.distinct_id)||Ko(a.distinct_id))&&A.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),a}var u,c=(function(x,I,T,E){var P,$,O,L;if(E===void 0&&(E=!1),!ze)return{};var N,G=x?[...ii,...I||[]]:[],V=(function(On){for(var He=0;_c.length>He;He++){var Bn=_c[He],$t=Bn[1],Mt=Bn[0].exec(On),ct=Mt&&(De($t)?$t(Mt,On):$t);if(ct)return ct}return["",""]})(ze),M=V[0],R=V[1],Z=(N=typeof navigator<"u"?navigator:void 0)!=null&&N.brave?{brave:!0}:{},Ce={};C(T)||(Ce.detectGoogleSearchApp=T);var oe={},ye=(P=navigator)==null||(P=P.userAgentData)==null?void 0:P.platform,$e=($=navigator)==null?void 0:$.maxTouchPoints,ae=w==null||(O=w.screen)==null?void 0:O.width,Ie=w==null||(L=w.screen)==null?void 0:L.height,Se=w?.devicePixelRatio;C(ye)||(oe.userAgentDataPlatform=ye),C($e)||(oe.maxTouchPoints=$e),C(ae)||(oe.screenWidth=ae),C(Ie)||(oe.screenHeight=Ie),C(Se)||(oe.devicePixelRatio=Se);var Be,yt,ge,Ye,wt,gn,Re,Pe,Tt=fe(ll({$os:M,$os_version:R,$browser:Rd(ze,navigator.vendor,Z,Ce),$device:yc(ze),$device_type:(yt=ze,ge=oe,Pe=yc(yt),Pe===hd||Pe===fd||Pe==="Kobo"||Pe==="Kindle Fire"||Pe===kd?Qn:Pe===Vi||Pe===Zn||Pe===Gi||Pe===Jo?"Console":Pe===gd?"Wearable":Pe?it:ge?.userAgentDataPlatform==="Android"&&((Ye=ge?.maxTouchPoints)!==null&&Ye!==void 0?Ye:0)>0?600>Math.min((wt=ge?.screenWidth)!==null&&wt!==void 0?wt:0,(gn=ge?.screenHeight)!==null&&gn!==void 0?gn:0)/((Re=ge?.devicePixelRatio)!==null&&Re!==void 0?Re:1)?it:Qn:"Desktop"),$timezone:wf(),$timezone_offset:Yg()}),{$current_url:Ji(E?dn(me?.href):me?.href,G,Zi),$host:me?.host,$pathname:me?.pathname,$raw_user_agent:ze.length>1e3?ze.substring(0,997)+"...":ze,$browser_version:Vp(ze,navigator.vendor,Z,Ce),$browser_language:Hc(),$browser_language_prefix:(Be=Hc(),typeof Be=="string"?Be.split("-")[0]:void 0),$screen_height:w?.screen.height,$screen_width:w?.screen.width,$viewport_height:w?.innerHeight,$viewport_width:w?.innerWidth,$lib:ne.LIB_NAME,$lib_version:ne.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return ne.SDK_DIST_CHANNEL&&(Tt.$sdk_dist_channel=ne.SDK_DIST_CHANNEL),Tt})(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties,this.config.detect_google_search_app,this.config.disable_capture_url_hashes);if(this.sessionManager){var d=this.sessionManager.checkAndGetSessionAndWindowId(s,i.getTime()),f=d.windowId;a.$session_id=d.sessionId,a.$window_id=f}this.sessionPropsManager&&fe(a,this.sessionPropsManager.getSessionProps());try{var h;this.sessionRecording&&fe(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=(h=this.Rn)==null?void 0:h.length}catch(x){a.$sdk_debug_error_capturing_properties=String(x)}if(this.requestRouter.region===xa&&(a.$lib_custom_api_host=this.config.api_host),u=e!==qn||s?e!==_o||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(i):this.pageViewManager.doPageView(i,r),a=fe(a,u),e===qn&&F&&(a.title=F.title),!C(o)){var p=i.getTime()-o;a.$duration=parseFloat((p/1e3).toFixed(3))}ze&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?"bot":"browser");var g=this.persistence.properties(),m=this.sessionPersistence.properties();ie(["$referrer","$referring_domain"],(x=>{x in g&&delete m[x]}));var v={};if(this._n.length>0)for(var S of this._n.slice())try{fe(v,S())}catch(x){A.error("Failed to produce browser extension event properties",x)}(a=fe({},c,g,m,k({},v,a))).$is_identified=this._isIdentified(),U(this.config.property_denylist)?ie(this.config.property_denylist,(function(x){delete a[x]})):A.error(jf+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var b=this.config.sanitize_properties;b&&(A.error(tu),a=b(a,e));var _=this.Zn();return a.$process_person_profile=_,_&&!s&&this.Gn("_calculate_event_properties"),a}Vn(e,n,i){var r;if(n===void 0&&(n=!0),i===void 0&&(i=!1),!this.persistence||!this.Zn()||this.mn&&!i)return e;var s=this.persistence.get_initial_props(),o=(r=this.sessionPropsManager)==null?void 0:r.getSetOnceProps(),a=fe({},s,o||{},e||{}),l=this.config.sanitize_properties;return l&&(A.error(tu),a=l(a,"$set_once")),n&&(this.mn=!0),Vt(a)?void 0:a}register(e,n){var i;(i=this.persistence)==null||i.register(e,n)}register_once(e,n,i){var r;(r=this.persistence)==null||r.register_once(e,n,i)}register_for_session(e){var n;(n=this.sessionPersistence)==null||n.register(e),Object.keys(e).forEach((i=>this.yn.add(i))),this.Qn()}unregister(e){var n;(n=this.persistence)==null||n.unregister(e)}unregister_for_session(e){var n;(n=this.sessionPersistence)==null||n.unregister(e),this.yn.delete(e),this.Qn()}Kn(e,n){this.register({[e]:n})}An(){this.yn.forEach((e=>{var n;(n=this.sessionPersistence)==null||n.unregister(e)})),this.yn.clear(),this.Qn()}Qn(){var e;if(this.bn)if(this.config.persistence==="memory"||(e=this.sessionPersistence)!=null&&e.xi||!be.N())be.q(this.bn);else{var n=[];this.yn.forEach((i=>n.push(i))),n.length>0?be.F(this.bn,n):be.q(this.bn)}}getFeatureFlag(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlag(e,n)}getFeatureFlagPayload(e){var n;return(n=this.featureFlags)==null?void 0:n.getFeatureFlagPayload(e)}getFeatureFlagResult(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlagResult(e,n)}getAllFeatureFlags(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.getAllFeatureFlags())!==null&&e!==void 0?e:[]}isFeatureEnabled(e,n){var i,r;return(i=(r=this.featureFlags)==null?void 0:r.isFeatureEnabled(e,n))!==null&&i!==void 0?i:n?.defaultValue}reloadFeatureFlags(){var e;(e=this.featureFlags)==null||e.reloadFeatureFlags()}updateFlags(e,n,i){var r;(r=this.featureFlags)==null||r.updateFlags(e,n,i)}updateEarlyAccessFeatureEnrollment(e,n,i){var r;(r=this.featureFlags)==null||r.updateEarlyAccessFeatureEnrollment(e,n,i)}getEarlyAccessFeatures(e,n,i){var r;return n===void 0&&(n=!1),(r=this.featureFlags)==null?void 0:r.getEarlyAccessFeatures(e,n,i)}on(e,n){return this.dn.on(e,n)}onFeatureFlags(e){return this.featureFlags?this.featureFlags.onFeatureFlags(e):(e([],{},{errorsLoading:!0}),()=>{})}onSurveysLoaded(e){return this.surveys?this.surveys.onSurveysLoaded(e):(e([],{isLoaded:!1,error:Si}),()=>{})}onSessionId(e){var n,i;return(n=(i=this.sessionManager)==null?void 0:i.onSessionId(e))!==null&&n!==void 0?n:()=>{}}getSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getSurveys(e,n):e([],{isLoaded:!1,error:Si})}getActiveMatchingSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getActiveMatchingSurveys(e,n):e([],{isLoaded:!1,error:Si})}renderSurvey(e,n){var i;(i=this.surveys)==null||i.renderSurvey(e,n)}displaySurvey(e,n){var i;n===void 0&&(n=mm),(i=this.surveys)==null||i.displaySurvey(e,n)}cancelPendingSurvey(e){var n;(n=this.surveys)==null||n.cancelPendingSurvey(e)}canRenderSurvey(e){var n,i;return(n=(i=this.surveys)==null?void 0:i.canRenderSurvey(e))!==null&&n!==void 0?n:{visible:!1,disabledReason:Si}}canRenderSurveyAsync(e,n){var i,r;return n===void 0&&(n=!1),(i=(r=this.surveys)==null?void 0:r.canRenderSurveyAsync(e,n))!==null&&i!==void 0?i:Promise.resolve({visible:!1,disabledReason:Si})}Jn(e){return!e||Ko(e)?(A.critical("Unique user id has not been set in posthog.identify"),!1):e===hr?(A.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.'),!1):!["distinct_id","distinctid"].includes(e.toLowerCase())&&!["undefined","null"].includes(e.toLowerCase())||(A.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'),!1)}identify(e,n,i){if(!this.__loaded||!this.persistence)return A.uninitializedWarning("posthog.identify");if(ke(e)&&(e=e.toString(),A.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),this.Jn(e)&&this.Gn("posthog.identify")){var r=this.get_distinct_id();this.register({$user_id:e}),this.get_property(Ki)||this.register_once({$had_persisted_distinct_id:!0,$device_id:r},""),e!==r&&e!==this.get_property(Pi)&&(this.unregister(Pi),this.register({distinct_id:e}));var s,o=(this.persistence.get_property(ot)||jn)===jn,a=e!==r,l=!a&&o;if(a&&o)this.persistence.set_property(ot,mn),this.setPersonPropertiesForFlags({$set:n||{},$set_once:i||{}},!1),this.capture(yo,{distinct_id:e,$anon_distinct_id:r},{$set:n||{},$set_once:i||{}}),this.Sn=Fo(e,n,i),(s=this.featureFlags)==null||s.setAnonymousDistinctId(r);else if(l){this.persistence.set_property(ot,mn);var u=n||{},c=i||{};this.setPersonPropertiesForFlags({$set:u,$set_once:c},!1),this.capture("$set",{$set:u,$set_once:c}),this.Sn=Fo(e,n,i)}else(n||i)&&this.setPersonProperties(n,i);a?(this.reloadFeatureFlags(),this.featureFlags?this.featureFlags.resetFlagCallReported():this.unregister(kn)):l&&(n||i)&&this.reloadFeatureFlags()}}setPersonProperties(e,n){if((e||n)&&this.Gn("posthog.setPersonProperties")){var i=Fo(this.get_distinct_id(),e,n);this.Sn!==i?(this.setPersonPropertiesForFlags({$set:e||{},$set_once:n||{}},!0),this.capture("$set",{$set:e||{},$set_once:n||{}}),this.Sn=i):A.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}unsetPersonProperties(e){var n,i=(U(e)?e:[e]).filter((r=>X(r)&&r.length>0));i.length!==0&&this.Gn("posthog.unsetPersonProperties")&&((n=this.featureFlags)==null||n.unsetPersonPropertiesForFlags(i,!0),this.capture("$set",{$unset:i}),this.Sn=null)}group(e,n,i){if(e&&n){var r=this.getGroups(),s=r[e]!==n;if(s&&this.resetGroupPropertiesForFlags(e),this.register({$groups:k({},r,{[e]:n})}),s||i){var o={$group_type:e,$group_key:n};i&&(o.$group_set=i),this.capture(kc,o)}i&&this.setGroupPropertiesForFlags({[e]:i}),s&&!i&&this.reloadFeatureFlags()}else A.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),(i=this.featureFlags)==null||i.setPersonPropertiesForFlags(e,n)}resetPersonPropertiesForFlags(e){var n;e===void 0&&(e=!0),(n=this.featureFlags)==null||n.resetPersonPropertiesForFlags(e)}setGroupPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),this.Gn("posthog.setGroupPropertiesForFlags")&&((i=this.featureFlags)==null||i.setGroupPropertiesForFlags(e,n))}resetGroupPropertiesForFlags(e){var n;(n=this.featureFlags)==null||n.resetGroupPropertiesForFlags(e)}reset(e){this.Yn(e)}Yn(e,n){var i,r,s,o,a,l,u,c,d,f;if(n===void 0&&(n=!1),A.info("reset"),!this.__loaded)return A.uninitializedWarning("posthog.reset");var h,p=this.get_property(Ki),g=this.get_property(vo),m=this.get_property(Cn),v=this.is_capturing();if(this.consent.reset(),n||!v||this.is_capturing()||console.warn("[PostHog.js]","reset() cleared the stored consent, and capturing is now off because of `opt_out_capturing_by_default`. Call opt_in_capturing() again, and prefer calling reset() before opting in rather than after."),(i=this.persistence)==null||i.clear(),(r=this.sessionPersistence)==null||r.clear(),this.yn.clear(),this.Qn(),C(m)||(h=this.persistence)==null||h.register({[Cn]:m}),(s=this.surveys)==null||s.reset(),(o=this.Un)==null||o.stop(),(a=this.featureFlags)==null||a.reset(),(l=this.conversations)==null||l.reset(),(u=this.logs)==null||u.reset(),(c=this.metrics)==null||c.reset(),(d=this.persistence)==null||d.set_property(ot,jn),(f=this.sessionManager)==null||f.resetSessionId(),this.Sn=null,this.config.cookieless_mode===Ht)this.register_once({distinct_id:hr,$device_id:null},"");else{var S=this.config.get_device_id(Ut());this.register_once({distinct_id:S,$device_id:e?S:p},""),e||C(g)||this.register({[vo]:g})}this.register({$last_posthog_reset:new Date().toISOString()},1),delete this.config.identity_distinct_id,delete this.config.identity_hash,this.reloadFeatureFlags()}shutdown(e){var n=this;return se((function*(){var i,r,s,o,a,l,u;if(n.__loaded){(i=n.Un)==null||i.stop(),(r=n.jn)==null||r.dispose(),(s=n.sessionRecording)==null||s.dispose(),(o=n.logs)==null||o.flushLogs("sendBeacon"),(a=n.metrics)==null||a.flush("sendBeacon"),(l=n.In)==null||l.unload(),(u=n.Rn)==null||u.unload();try{var c;(c=n.featureFlags)==null||c.destroy()}catch(d){A.error("Error while destroying feature flags",d)}}else A.uninitializedWarning("posthog.shutdown")}))()}setIdentity(e,n){var i;this.config.identity_distinct_id=e,this.config.identity_hash=n,this.alias(e),(i=this.conversations)==null||i.Xn()}clearIdentity(){var e;delete this.config.identity_distinct_id,delete this.config.identity_hash,(e=this.conversations)==null||e.ts()}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,n;return(e=(n=this.sessionManager)==null?void 0:n.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var n=this.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.sessionStartTimestamp,r=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+n.sessionId);if(e!=null&&e.withTimestamp&&i){var s,o=(s=e.timestampLookBack)!==null&&s!==void 0?s:10;if(!i)return r;r+="?t="+Math.max(Math.floor((new Date().getTime()-i)/1e3)-o,0)}return r}alias(e,n){return e===this.get_property(jd)?(A.critical("Attempting to create alias for existing People user - aborting."),-2):this.Gn("posthog.alias")?(C(n)&&(n=this.get_distinct_id()),e!==n?(this.Kn(Pi,e),this.capture("$create_alias",{alias:e,distinct_id:n})):(A.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var n=k({},this.config);if(he(e)){var i,r,s,o,a,l,u,c,d,f,h,p;fe(this.config,nu(e));var g=this.En();(i=this.persistence)==null||i.update_config(this.config,n,g),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new xo(k({},this.config,{persistence:"sessionStorage"}),g,!1);var m=this.Cn(this.config.debug);gt(m)&&(this.config.debug=m),gt(this.config.debug)&&(this.config.debug?(ne.DEBUG=!0,le.N()&&le.F("ph_debug",!0),A.info("set_config",{config:e,oldConfig:n,newConfig:k({},this.config)})):(ne.DEBUG=!1,le.N()&&le.q("ph_debug"))),(r=this.featureFlags)==null||r.updateConfig==null||r.updateConfig(this.config,this.Qi()),(s=this.exceptionObserver)==null||s.onConfigChange(),(o=this.exceptions)==null||o.onConfigChange(),(a=this.sessionRecording)==null||a.startIfEnabledOrStop(),(l=this.tracingHeaders)==null||l.startIfEnabledOrStop(),(u=this.autocapture)==null||u.startIfEnabled(),(c=this.heatmaps)==null||c.startIfEnabled(),(d=this.exceptionObserver)==null||d.startIfEnabledOrStop(),(f=this.deadClicksAutocapture)==null||f.startIfEnabledOrStop(),(h=this.surveys)==null||h.loadIfEnabled(),this.es(),(p=this.externalIntegrations)==null||p.startIfEnabledOrStop()}}_overrideSDKInfo(e,n){ne.LIB_NAME=e,ne.LIB_VERSION=n}startSessionRecording(e){var n,i,r,s,o,a=e===!0,l={sampling:a||!(e==null||!e.sampling),linked_flag:a||!(e==null||!e.linked_flag),url_trigger:a||!(e==null||!e.url_trigger),event_trigger:a||!(e==null||!e.event_trigger)};Object.values(l).some(Boolean)&&((n=this.sessionManager)==null||n.checkAndGetSessionAndWindowId(),l.sampling&&((i=this.sessionRecording)==null||i.overrideSampling()),l.linked_flag&&((r=this.sessionRecording)==null||r.overrideLinkedFlag()),l.url_trigger&&((s=this.sessionRecording)==null||s.overrideTrigger("url")),l.event_trigger&&((o=this.sessionRecording)==null||o.overrideTrigger("event"))),this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,n){if(this.exceptions){var i=new Error("PostHog syntheticException"),r=this.exceptions.buildProperties(e,{handled:!0,syntheticException:i});return this.exceptions.sendExceptionEvent(k({},r,n))}}addExceptionStep(e,n){var i;(i=this.exceptions)==null||i.addExceptionStep(e,n)}captureLog(e){var n;(n=this.logs)==null||n.captureLog(e)}get logger(){var e,n;return(e=(n=this.logs)==null?void 0:n.logger)!==null&&e!==void 0?e:Je.rs}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){var n,i;return(n=(i=this.toolbar)==null?void 0:i.loadToolbar(e))!==null&&n!==void 0&&n}get_property(e){var n;return(n=this.persistence)==null?void 0:n.props[e]}getSessionProperty(e){var n;return(n=this.sessionPersistence)==null?void 0:n.props[e]}toString(){var e,n=(e=this.config.name)!==null&&e!==void 0?e:Vn;return n!==Vn&&(n=Vn+"."+n),n}_isIdentified(){var e,n;return((e=this.persistence)==null?void 0:e.get_property(ot))===mn||((n=this.sessionPersistence)==null?void 0:n.get_property(ot))===mn}Zn(){var e,n;return!(this.config.person_profiles==="never"||this.config.person_profiles===pa&&!this._isIdentified()&&Vt(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[Pi])&&((n=this.persistence)==null||(n=n.props)==null||!n[Zr]))}zn(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.Zn()||this.Gn("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.Gn("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}Gn(e){return this.config.person_profiles==="never"?(A.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.Kn(Zr,!0),!0)}En(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut();return this.config.disable_persistence||e&&!(!this.config.opt_out_persistence_by_default&&this.config.cookieless_mode!==In)}es(){var e,n,i,r,s=this.En();return((e=this.persistence)==null?void 0:e.xi)!==s&&((i=this.persistence)==null||i.set_disabled(s)),((n=this.sessionPersistence)==null?void 0:n.xi)!==s&&((r=this.sessionPersistence)==null||r.set_disabled(s)),s&&(this.yn.clear(),this.Qn()),s}opt_in_capturing(e){var n;if(this.config.cookieless_mode!==Ht){if(this.gn()){var i,r,s,o,a;this.Yn(!0,!0),(i=this.sessionManager)==null||i.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=new Zc(this),this.pageViewManager=new Uc(this),this.persistence&&(this.sessionPropsManager=new Jc(this,this.sessionManager,this.persistence));var l,u=(s=(o=this.config.__extensionClasses)==null?void 0:o.sessionRecording)!==null&&s!==void 0?s:(a=Je.__defaultExtensionClasses)==null?void 0:a.sessionRecording;u&&(this.sessionRecording=this.pn(this.sessionRecording,new u(this)),this.hn&&((l=this.sessionRecording)==null||l.onRemoteConfig==null||l.onRemoteConfig(this.hn)))}var c,d;this.consent.optInOut(!0),this.es(),this.Bn(),(n=this.sessionRecording)==null||n.startIfEnabledOrStop(),this.config.cookieless_mode==In&&((c=this.surveys)==null||c.loadIfEnabled()),(C(e?.captureEventName)||e!=null&&e.captureEventName)&&this.capture((d=e?.captureEventName)!==null&&d!==void 0?d:"$opt_in",e?.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.Hn()}else A.warn(eu)}opt_out_capturing(){var e,n,i;this.config.cookieless_mode!==Ht?(this.config.cookieless_mode===In&&this.consent.isOptedIn()&&this.Yn(!0,!0),this.consent.optInOut(!1),this.es(),this.config.cookieless_mode===In&&(this.register({distinct_id:hr,$device_id:null}),(e=this.sessionRecording)==null||e.stopRecording(),this.sessionRecording=void 0,(n=this.sessionManager)==null||n.destroy(),(i=this.pageViewManager)==null||i.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,this.config.capture_pageview&&this.Hn(),this.Bn())):A.warn(eu)}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===1?"granted":e===0?"denied":"pending"}is_capturing(){return this.config.cookieless_mode===Ht||(this.config.cookieless_mode===In?this.consent.isRejected()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.es()}_is_bot(){return Ue?$f(Ue,this.config.custom_blocked_useragents):void 0}Hn(){F&&(F.visibilityState==="visible"?this.wn||(this.wn=!0,this.capture(qn,{title:F.title},{send_instantly:!0}),this.kn&&(F.removeEventListener(Xr,this.kn),this.kn=null)):this.kn||(this.kn=this.Hn.bind(this),ve(F,Xr,this.kn)))}debug(e){e===!1?(w?.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(w?.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}Qi(){var e=this.Mn||{};return"advanced_disable_flags"in e?!!e.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(A.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):(function(n,i,r,s,o){var a=i in n&&!H(n[i]),l=r in n&&!H(n[r]);return a?n[i]:!!l&&(o&&o.warn("Config field '"+r+"' is deprecated. Please use '"+i+"' instead. The old field will be removed in a future major version."),n[r])})(e,"advanced_disable_flags","advanced_disable_decide",0,A)}Pt(e){var n;if(H(this.config.before_send))return e;var i=Object.keys((n=e.properties)!==null&&n!==void 0?n:{}).filter(Mp),r=U(this.config.before_send)?this.config.before_send:[this.config.before_send],s=e;for(var o of r){if(s=o(s),H(s)){var a="Event '"+e.event+"' was rejected in beforeSend function";return $p(e.event)?A.warn(a+". This can cause unexpected behavior."):A.info(a),null}s.properties&&!Vt(s.properties)||A.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}for(var l of i)if(s.properties&&H(s.properties[l]))return A.warn("Event '"+e.event+"' had its '"+l+"' property removed in a beforeSend function. This property is required for ingestion, so the event will be dropped."),null;return s}getPageViewId(){var e;return(e=this.pageViewManager.ui)==null?void 0:e.pageViewId}captureTraceFeedback(e,n){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:n})}captureTraceMetric(e,n,i){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:n,$ai_metric_value:String(i)})}Cn(e){var n=gt(e)&&!e,i=le.N()&&le.P("ph_debug")==="true";return!n&&(!!i||e)}}Je.__defaultExtensionClasses={},Je.rs=(()=>{var t=()=>{};return{trace:t,debug:t,info:t,warn:t,error:t,fatal:t}})(),(function(t,e){for(var n=0;e.length>n;n++)t.prototype[e[n]]=Eg(t.prototype[e[n]])})(Je,["identify"]);class iu{constructor(e){this.disabled=e===!1;var n=he(e)?e:{};this.thresholdPx=n.threshold_px||30,this.timeoutMs=n.timeout_ms||1e3,this.clickCount=n.click_count||3,this.clicks=[]}isRageClick(e,n,i){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(e-r.x)+Math.abs(n-r.y)i-r.timestamp){if(this.clicks.push({x:e,y:n,timestamp:i}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:e,y:n,timestamp:i}];return!1}}var $o="$copy_autocapture",Mo=pe("[AutoCapture]");function Lo(t,e){return e.length>t?e.slice(0,t)+"...":e}function km(t){if(t.previousElementSibling)return t.previousElementSibling;var e=t;do e=e.previousSibling;while(e&&!fn(e));return e}function Cm(t,e){var n,i,r=e.e,s=e.maskAllElementAttributes,o=e.maskAllText,a=e.elementAttributeIgnoreList,l=e.elementsChainAsString,u=e.disableCaptureUrlHashes;if(!fn(t))return{props:{}};for(var c=[t],d=new Set([t]),f=t;f.parentNode&&!Qe(f,"body")&&nf>c.length;)if(tf(f.parentNode)){var h=f.parentNode.host;if(d.has(h))break;d.add(h),c.push(h),f=h}else{if(!fn(f.parentNode)||d.has(f.parentNode))break;d.add(f.parentNode),c.push(f.parentNode),f=f.parentNode}var p,g,m=[],v={},S=!1,b=!1;if(ie(c,(E=>{var P=va(E);if(Qe(E,"a")){var $=E.getAttribute("href");S=!!(P&&$&&ji($))&&(u?dn($):$)}j(ts(E),"ph-no-capture")&&(b=!0),m.push((function(L,N,G,V,M){M===void 0&&(M=!1);var R=L.tagName.toLowerCase(),Z={tag_name:R};ul.indexOf(R)>-1&&!G&&(Z.$el_text=R.toLowerCase()==="a"||R.toLowerCase()==="button"?Lo(1024,Bc(L)):Lo(1024,Yi(L)));var Ce=ts(L);Ce.length>0&&(Z.classes=Ce.filter((function(ae){return ae!==""}))),ie(L.attributes,(function(ae){var Ie;if((!lf(L)||["name","id","class","aria-label"].indexOf(ae.name)!==-1)&&(V==null||!V.includes(ae.name))&&!N&&ji(ae.value)&&(!X(Ie=ae.name)||Ie.substring(0,10)!=="_ngcontent"&&Ie.substring(0,7)!=="_nghost")){var Se=ae.value;ae.name==="class"&&(Se=cl(Se).join(" ")),Z["attr__"+ae.name]=Lo(1024,ae.name==="href"&&M?dn(Se):Se)}}));for(var oe=1,ye=1,$e=L;$e=km($e);)oe++,$e.tagName===L.tagName&&ye++;return Z.nth_child=oe,Z.nth_of_type=ye,Z})(E,s,o,a,u));var O=(function(L){if(!va(L))return{};var N={};return ie(L.attributes,(function(G){if(G.name&&G.name.indexOf("data-ph-capture-attribute")===0){var V=G.name.replace("data-ph-capture-attribute-",""),M=G.value;V&&M&&ji(M)&&(N[V]=M)}})),N})(E);fe(v,O)})),b)return{props:{},explicitNoCapture:b};if(o||(m[0].$el_text=Qe(t,"a")||Qe(t,"button")?Bc(t):Yi(t)),S){var _,x;m[0].attr__href=S;var I=(_=ns(S))==null?void 0:_.host,T=w==null||(x=w.location)==null?void 0:x.host;I&&T&&I!==T&&(p=S)}return{props:fe({$event_type:r.type,$ce_version:1},l?{}:{$elements:m},{$elements_chain:(g=m,(function(E){return E.map((P=>{var $,O,L="";if(P.tag_name&&(L+=P.tag_name),P.attr_class)for(var N of(P.attr_class.sort(),P.attr_class))L+="."+N.replace(/"/g,"");var G=k({},P.text?{text:P.text}:{},{"nth-child":($=P.nth_child)!==null&&$!==void 0?$:0,"nth-of-type":(O=P.nth_of_type)!==null&&O!==void 0?O:0},P.href?{href:P.href}:{},P.attr_id?{attr_id:P.attr_id}:{},P.attributes),V={};return Fr(G).sort(((M,R)=>M[0].localeCompare(R[0]))).forEach((M=>{var R=M[1];return V[Dc(M[0].toString())]=Dc(R.toString())})),(L+=":")+Fr(V).map((M=>M[0]+'="'+M[1]+'"')).join("")})).join(";")})((function(E){return E.map((P=>{var $,O,L={text:($=P.$el_text)==null?void 0:$.slice(0,400),tag_name:P.tag_name,href:(O=P.attr__href)==null?void 0:O.slice(0,2048),attr_class:Ug(P),attr_id:P.attr__id,nth_child:P.nth_child,nth_of_type:P.nth_of_type,attributes:{}};return Fr(P).filter((N=>N[0].indexOf("attr__")===0)).forEach((N=>L.attributes[N[0]]=N[1])),L}))})(g)))},(n=m[0])!=null&&n.$el_text?{$el_text:(i=m[0])==null?void 0:i.$el_text}:{},p&&r.type==="click"?{$external_click_url:p}:{},v)}}var xi=pe("[ExceptionAutocapture]"),ru=()=>{},Am=pe("[TracingHeaders]"),yn=pe("[Web Vitals]"),su=9e5,ou="disabled",au="lazy_loading",Ii="awaiting_config",wr="missing_config";pe("[SessionRecording]"),pe("[SessionRecording]");var Ia="[SessionRecording]",Ot=pe(Ia),Pm=pe("[Heatmaps]");function No(t){return he(t)&&"clientX"in t&&"clientY"in t&&ke(t.clientX)&&ke(t.clientY)}var br=pe("[Product Tours]"),Oo=t=>{var e;return!t.config.disable_product_tours&&!((e=t.persistence)==null||!e.get_property(sl))},Fm=["$set_once","$set"],bt=pe("[SiteApps]"),lu="Error while initializing PostHog app with config id ";function Wn(t,e,n){if(H(t))return!1;switch(n){case"exact":return t===e;case"contains":var i=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(i,"i").test(t);case"regex":try{return new RegExp(e).test(t)}catch{return!1}default:return!1}}class Rm{constructor(e){this.ns=new pl,this.ss=(n,i)=>this.os(n,i)&&this.ls(n,i)&&this.us(n,i)&&this.hs(n,i),this.os=(n,i)=>i==null||!i.event||n?.event===i?.event,this._instance=e,this.ds=new Set,this.vs=new Set}init(){var e,n;C((e=this._instance)==null?void 0:e._addCaptureHook)||(n=this._instance)==null||n._addCaptureHook(((i,r)=>{this.on(i,r)}))}register(e){var n,i;if(!C((n=this._instance)==null?void 0:n._addCaptureHook)&&(e.forEach((o=>{var a,l;(a=this.vs)==null||a.add(o),(l=o.steps)==null||l.forEach((u=>{var c;(c=this.ds)==null||c.add(u?.event||"")}))})),(i=this._instance)!=null&&i.autocapture)){var r,s=new Set;e.forEach((o=>{var a;(a=o.steps)==null||a.forEach((l=>{l!=null&&l.selector&&s.add(l?.selector)}))})),(r=this._instance)==null||r.autocapture.setElementSelectors(s)}}on(e,n){var i;n!=null&&e.length!=0&&(this.ds.has(e)||this.ds.has(n.event))&&this.vs&&((i=this.vs)==null?void 0:i.size)>0&&this.vs.forEach((r=>{this.cs(n,r)&&this.ns.emit("actionCaptured",r.name)}))}fs(e){this.onAction("actionCaptured",(n=>e(n)))}cs(e,n){if(n?.steps==null)return!1;for(var i of n.steps)if(this.ss(e,i))return!0;return!1}onAction(e,n){return this.ns.on(e,n)}ls(e,n){if(n!=null&&n.url){var i,r=e==null||(i=e.properties)==null?void 0:i.$current_url;if(!r||typeof r!="string"||!Wn(r,n.url,n.url_matching||"contains"))return!1}return!0}us(e,n){return!!this.ps(e,n)&&!!this.gs(e,n)&&!!this.ys(e,n)}ps(e,n){var i;if(n==null||!n.href)return!0;var r=this.bs(e);if(r.length>0)return r.some((a=>Wn(a.href,n.href,n.href_matching||"exact")));var s,o=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!o&&Wn((s=o.match(/(?::|")href="(.*?)"/))?s[1]:"",n.href,n.href_matching||"exact")}gs(e,n){var i;if(n==null||!n.text)return!0;var r=this.bs(e);if(r.length>0)return r.some((u=>Wn(u.text,n.text,n.text_matching||"exact")||Wn(u.$el_text,n.text,n.text_matching||"exact")));var s,o,a,l=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!l&&(s=(function(u){for(var c,d=[],f=/(?::|")text="(.*?)"/g;!H(c=f.exec(u));)d.includes(c[1])||d.push(c[1]);return d})(l),o=n.text,a=n.text_matching||"exact",s.some((u=>Wn(u,o,a))))}ys(e,n){var i,r;if(n==null||!n.selector)return!0;var s=e==null||(i=e.properties)==null?void 0:i.$element_selectors;if(s!=null&&s.includes(n.selector))return!0;var o=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";if(n.selector_regex&&o)try{return new RegExp(n.selector_regex).test(o)}catch{return!1}return!1}bs(e){var n;return(e==null||(n=e.properties)==null?void 0:n.$elements)==null?[]:e?.properties.$elements}hs(e,n){return n==null||!n.properties||n.properties.length===0||Nf(n.properties.reduce(((i,r)=>{var s=U(r.value)?r.value.map(String):r.value!=null?[String(r.value)]:[];return i[r.key]={values:s,operator:r.operator||"exact"},i}),{}),e?.properties)}}class Tm{constructor(e){var n;this._s=[],this._instance=e,this.ws=new Map,this.ks=new Map,this.xs=new Map,(n=this._instance)==null||n.onSessionId==null||n.onSessionId((i=>this.Ss(i)))}Cs(e){return!1}Ms(){return null}Ts(e){}Es(){}Is(e,n){return!!e&&Nf(e.propertyFilters,n?.properties)}Ps(e,n){var i=new Map;return e.forEach((r=>{var s;(s=r.conditions)==null||(s=s[n])==null||(s=s.values)==null||s.forEach((o=>{if(o!=null&&o.name){var a=i.get(o.name)||[];a.push(r.id),i.set(o.name,a)}}))})),i}Rs(e,n,i){var r=(i===yi.Activation?this.ws:this.ks).get(e),s=[];return this.As((o=>{s=o.filter((a=>r?.includes(a.id)))})),s.filter((o=>{var a,l=(a=o.conditions)==null||(a=a[i])==null||(a=a.values)==null?void 0:a.find((u=>u.name===e));return this.Is(l,n)}))}register(e){var n;C((n=this._instance)==null?void 0:n._addCaptureHook)||(this.Fs(e),this.Ls(e))}Ls(e){var n=e.filter((i=>{var r,s;return((r=i.conditions)==null?void 0:r.actions)&&((s=i.conditions)==null||(s=s.actions)==null||(s=s.values)==null?void 0:s.length)>0}));n.length!==0&&(this.Os==null&&(this.Os=new Rm(this._instance),this.Os.init(),this.Os.fs((i=>{this.onAction(i)}))),n.forEach((i=>{var r,s,o,a,l;i.conditions&&(r=i.conditions)!=null&&r.actions&&(s=i.conditions)!=null&&(s=s.actions)!=null&&s.values&&((o=i.conditions)==null||(o=o.actions)==null||(o=o.values)==null?void 0:o.length)>0&&((a=this.Os)==null||a.register(i.conditions.actions.values),(l=i.conditions)==null||(l=l.actions)==null||(l=l.values)==null||l.forEach((u=>{if(u&&u.name){var c=this.xs.get(u.name);c&&c.push(i.id),this.xs.set(u.name,c||[i.id])}})))})))}Fs(e){var n,i=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.events)&&((a=s.conditions)==null||(a=a.events)==null||(a=a.values)==null?void 0:a.length)>0})),r=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.cancelEvents)&&((a=s.conditions)==null||(a=a.cancelEvents)==null||(a=a.values)==null?void 0:a.length)>0}));i.length===0&&r.length===0||((n=this._instance)==null||n._addCaptureHook(((s,o)=>{this.onEvent(s,o)})),this.ws=this.Ps(e,yi.Activation),this.ks=this.Ps(e,yi.Cancellation))}onEvent(e,n){var i,r,s=this.Ds(),o=(n==null||(i=n.properties)==null?void 0:i.$survey_id)||(n==null||(r=n.properties)==null?void 0:r.$product_tour_id);if(o&&this.getActivatedIds().includes(o)){var a=this.$s(e,o);if(a==="consume")return s.info("event consumed activated item, removing it",{event:e,itemId:o}),void this.Ns([o]);if(a==="persist")return s.info("shown item promoted to persisted activation",{event:e,itemId:o}),this.qs(o),void this.js([o])}if(this.ks.has(e)){var l=this.Rs(e,n,yi.Cancellation);l.length>0&&(s.info("cancel event matched, cancelling items",{event:e,itemsToCancel:l.map((c=>c.id))}),this.Ns(l.map((c=>c.id))),l.forEach((c=>this.Bs(c.id))))}if(this.ws.has(e)){s.info("event name matched",{event:e,eventPayload:n,items:this.ws.get(e)});var u=this.Rs(e,n,yi.Activation);this.Hs(u.map((c=>c.id)))}}onAction(e){this.xs.has(e)&&this.Hs(this.xs.get(e)||[])}Hs(e){var n;if(e.length!==0){var i=!((n=this._instance)==null||n.get_session_id==null||!n.get_session_id()),r=[];for(var s of e)i&&this.Cs(s)?this.qs(s)&&this.Us(s):r.push(s);r.length>0&&(this._s=[...new Set([...this._s,...r])]),this.Ds().info("updating activated items",{activatedItems:this.getActivatedIds()})}}qs(e){this._s=this._s.filter((i=>i!==e));var n=this.zs();return!n.includes(e)&&(this.Ws([...n,e]),this.Vs(),!0)}Ns(e){var n=new Set(e);this._s=this._s.filter((s=>!n.has(s)));var i=this.Zs(),r=i.filter((s=>!n.has(s)));r.length!==i.length&&(this.Ws(r),r.length===0&&this.Gs()),this.js(e)}Qs(){var e,n=this.Ms();if(!n)return{};var i=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n];return i&&typeof i=="object"?i:{}}Us(e){if(this.Ms()){var n=this.Qs();this.Ts(k({},n,{[e]:Date.now()}))}}js(e){if(this.Ms()){var n=this.Qs(),i={},r=!1;for(var s of Object.entries(n)){var o=s[0],a=s[1];e.includes(o)?r=!0:i[o]=a}r&&(Vt(i)?this.Es():this.Ts(i))}}Ks(){this.Ms()&&this.Es()}getActivationTimestamp(e){if(this.zs().includes(e)){var n=this.Qs()[e];return ke(n)?n:void 0}}Zs(){var e,n=this.Js();return((e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n])||[]}zs(){var e,n,i=this.Zs();if(i.length===0)return[];var r=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[this.Ys()],s=(n=this._instance)==null||n.get_session_id==null?void 0:n.get_session_id();return s&&r===s?i:[]}Vs(){var e,n=(e=this._instance)==null||e.get_session_id==null?void 0:e.get_session_id();n&&this.Xs(n)}Gs(){this.ta()}Ss(e){var n,i=(n=this._instance)==null||(n=n.persistence)==null?void 0:n.props[this.Ys()];if(i&&i!==e){var r=this.Zs(),s=this.Qs();r.length>0&&(this.Ws([]),r.filter((o=>ke(s[o]))).forEach((o=>this.Bs(o)))),this.Gs(),this.Ks()}}getActivatedIds(){return[...new Set([...this.zs(),...this._s])].filter((e=>!this.ea(e)))}reset(){this._s=[],this.Zs().length>0&&this.Ws([]),this.Gs(),this.Ks()}getEventToItemsMap(){return this.ws}ia(){return this.Os}}class $m extends Tm{constructor(e){super(e)}Js(){return ca}Ys(){return Cr}Ms(){return Ar}Ts(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Ar]:e})}Es(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Ar)}Cs(e){var n,i;this.As((s=>{i=s.find((o=>o.id===e))}));var r=(n=i)==null||(n=n.appearance)==null?void 0:n.surveyPopupDelaySeconds;return ke(r)&&r>0}ra(){return zt.SHOWN}As(e){var n;(n=this._instance)==null||n.getSurveys(e)}Bs(e){var n;(n=this._instance)==null||n.cancelPendingSurvey(e)}Ds(){return Q}Ws(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[ca]:e})}Xs(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Cr]:e})}ta(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Cr)}ea(){return!1}$s(e,n){var i;this.As((s=>{i=s.find((o=>o.id===n))}));var r=!i||(function(s){var o;return Of(s)&&!((o=s.conditions)==null||(o=o.events)==null||!o.repeatedActivation)||s.schedule==="always"})(i);return r?e===zt.SHOWN?"consume":"ignore":e===zt.SHOWN?"persist":e===zt.DISMISSED||e===zt.SENT?"consume":"ignore"}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}var Er="SDK is not enabled or survey functionality is not yet loaded",cu="Disabled. Not loading surveys.",Mm=w!=null&&w.location?is(w.location.hash,"__posthog")||is(location.hash,"state"):null,uu="_postHogToolbarParams",du=pe("[Toolbar]"),fu=pe("[FeatureFlags]");class Lm{constructor(e,n){n===void 0&&(n=!1),this.na=!1,this.update(e,n)}update(e,n){this.sa=((i,r)=>{var s,o,a,l;return{bootstrap:{featureFlags:(s=i.bootstrap)==null?void 0:s.featureFlags,featureFlagPayloads:(o=i.bootstrap)==null?void 0:o.featureFlagPayloads},remoteRequestsDisabled:r,featureFlagsDisabled:!!i.advanced_disable_feature_flags,onlyEvaluateSurveyFeatureFlags:!!i.advanced_only_evaluate_survey_feature_flags,deduplicateCallsPerSession:!!i.advanced_feature_flags_dedup_per_session,cacheTtlMs:i.feature_flag_cache_ttl_ms,requestTimeoutMs:i.feature_flag_request_timeout_ms,compression:i.disable_compression?"none":"base64",evaluationContexts:(a=(l=i.evaluation_contexts)!==null&&l!==void 0?l:i.evaluation_environments)!==null&&a!==void 0?a:[],flagKeys:U(i.flag_keys)?i.flag_keys:void 0}})(e,n),!e.evaluation_environments||e.evaluation_contexts||this.na||(fu.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.na=!0),C(e.flag_keys)||U(e.flag_keys)||fu.error("Invalid flag_keys found:",e.flag_keys,"Expected array of non-empty strings")}get(){return this.sa}}var hu=pe("[FeatureFlags]"),wn=pe("[FeatureFlags]",{debugEnabled:!0}),Bo=`" failed. Feature flags didn't load in time.`,pu="connection_error",gu=t=>{for(var e={},n=0;t.length>n;n++)e[t[n]]=!0;return e},mu=t=>{var e={};for(var n of Fr(t||{})){var i=n[1];i&&(e[n[0]]=i)}return e},Et=pe("[Error tracking]"),vu="Refusing to render web experiment since the viewer is a likely bot",Nm={icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())>-1,not_icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())===-1,regex:(t,e)=>os(e,t),not_regex:(t,e)=>!os(e,t),exact:(t,e)=>e===t,is_not:(t,e)=>e!==t};class Me{get Ne(){return this._instance.config}constructor(e){var n=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(i){i===void 0&&(i=!1),n.getWebExperiments((r=>{Me.aa("retrieved web experiments from the server"),n.oa=new Map,r.forEach((s=>{if(s.feature_flag_key){var o;n.oa&&(Me.aa("setting flag key ",s.feature_flag_key," to web experiment ",s),(o=n.oa)==null||o.set(s.feature_flag_key,s));var a=n._instance.getFeatureFlag(s.feature_flag_key);X(a)&&s.variants[a]&&n.la(s.name,a,s.variants[a].transforms)}else if(s.variants)for(var l in s.variants){var u=s.variants[l];Me.ua(u,n._instance)&&n.la(s.name,l,u.transforms)}}))}),i)},this._instance=e,this._instance.onFeatureFlags((i=>{this.onFeatureFlags(i)}))}initialize(){}onFeatureFlags(e){if(this._is_bot())Me.aa(vu);else if(!this.Ne.disable_web_experiments){if(H(this.oa))return this.oa=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Me.aa("applying feature flags",e),e.forEach((n=>{var i;if(this.oa&&(i=this.oa)!=null&&i.has(n)){var r,s=this._instance.getFeatureFlag(n),o=(r=this.oa)==null?void 0:r.get(n);s&&o!=null&&o.variants[s]&&this.la(o.name,s,o.variants[s].transforms)}}))}}previewWebExperiment(){var e=Me.getWindowLocation();if(e!=null&&e.search){var n=ni(e?.search,"__experiment_id"),i=ni(e?.search,"__experiment_variant");n&&i&&(Me.aa("previewing web experiments "+n+" && "+i),this.getWebExperiments((r=>{this.ha(parseInt(n),i,r)}),!1,!0))}}loadIfEnabled(){this.Ne.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,n,i){if(this.Ne.disable_web_experiments&&!i)return e([]);var r=this._instance.get_property("$web_experiments");if(r&&!n)return e(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this.Ne.token),method:"GET",timestampMode:"query",callback:s=>e(s.statusCode===200&&s.json&&s.json.experiments||[])})}ha(e,n,i){var r=i.filter((s=>s.id===e));r&&r.length>0&&(Me.aa("Previewing web experiment ["+r[0].name+"] with variant ["+n+"]"),this.la(r[0].name,n,r[0].variants[n].transforms))}static ua(e,n){return!H(e.conditions)&&Me.da(e,n)&&Me.va(e)}static da(e,n){var i;if(H(e.conditions)||H((i=e.conditions)==null?void 0:i.url))return!0;var r=Me.getWindowLocation();if(r){var s,o,a,l=Xd(n,r.href);return(s=e.conditions)==null||!s.url||Nm[(o=(a=e.conditions)==null?void 0:a.urlMatchType)!==null&&o!==void 0?o:"icontains"](e.conditions.url,l)}return!1}static getWindowLocation(){return w?.location}static va(e){var n;if(H(e.conditions)||H((n=e.conditions)==null?void 0:n.utm))return!0;var i=pf();if(i.utm_source){var r,s,o,a,l,u,c,d,f=(r=e.conditions)==null||(r=r.utm)==null||!r.utm_campaign||((s=e.conditions)==null||(s=s.utm)==null?void 0:s.utm_campaign)==i.utm_campaign,h=(o=e.conditions)==null||(o=o.utm)==null||!o.utm_source||((a=e.conditions)==null||(a=a.utm)==null?void 0:a.utm_source)==i.utm_source,p=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_medium||((u=e.conditions)==null||(u=u.utm)==null?void 0:u.utm_medium)==i.utm_medium,g=(c=e.conditions)==null||(c=c.utm)==null||!c.utm_term||((d=e.conditions)==null||(d=d.utm)==null?void 0:d.utm_term)==i.utm_term;return f&&p&&g&&h}return!1}static aa(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;n>r;r++)i[r-1]=arguments[r];A.info("[WebExperiments] "+e,i)}la(e,n,i){this._is_bot()?Me.aa(vu):n!=="control"?i.forEach((r=>{if(r.selector){var s;Me.aa("applying transform of variant "+n+" for experiment "+e+" ",r);var o=(s=document)==null?void 0:s.querySelectorAll(r.selector);o?.forEach((a=>{var l=a;r.html&&(l.innerHTML=r.html),r.css&&l.setAttribute("style",r.css)}))}})):Me.aa("Control variants leave the page unmodified.")}_is_bot(){return Ue&&this._instance?$f(Ue,this.Ne.custom_blocked_useragents):void 0}}var st=pe("[Conversations]"),bn="Conversations not available yet.",_u="console",Hf="__posthogHandledLogsRequestError",Do=(t,e)=>{var n=t instanceof Error?t:new Error(e);return n[Hf]=!0,n},yu=t=>!!t&&typeof t=="object"&&t[Hf]===!0,ks={featureFlags:class{constructor(t){this.name="featureFlags",this.ca=!1,this.featureFlagEventHandlers=[],this.rt=hu,this.fa={},this.pa={},this.ga=[],this.ma=!1,this.ya=!1,this.ba=0,this._a=!1,this.wa=!1,this.ka=!1,this.xa=!1,this.Sa=0,this.Ca=()=>{var e=this.Ma();this.Sa=0,e&&this.reloadFeatureFlags()},"get"in t?this.Ta=t:(this.Ea=new Lm(t.config,t.Qi()),this.Ta=this.Ea)}updateConfig(t,e){var n;(n=this.Ea)==null||n.update(t,e)}setup(t){return this.Ia=t,this.rt=t.logger.createLogger("[FeatureFlags]"),n=()=>{this.Ia===t&&(this.Ia=void 0,this.nn=t,this.Pa(t))},(e=t.kv.initialize())!=null&&e.then?e.then(n):n();var e,n}Pa(t){if(this.nn===t)return w&&ve(w,"online",this.Ca),this.Ra=t.registerDynamicEventProperties((()=>this.Aa()?this.fa:this.pa)),this.Fa(),this.initialize()}destroy(){w?.removeEventListener("online",this.Ca)}dispose(){var t;this.ba++,this.wa=!1,this.Ia=void 0,this.nn&&(this.La(),(t=this.Ra)==null||t.dispose(),this.Ra=void 0,this.ga=[],w?.removeEventListener("online",this.Ca),this.nn=void 0)}get Ne(){return this.Ta.get()}Oa(t){var e;return(e=this.nn)==null?void 0:e.kv.get(t)}F(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.set(t)}))}q(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.remove(t)}))}Da(t){try{t()}catch(e){this.rt.error("Failed to update feature flag persistence",e)}}Fa(){var t={};for(var e of[Ri,Ti,kr,xt]){var n=this.Oa(e);C(n)||(t[e]=n)}this.fa=t;var i=k({},t),r=this.Oa(En);if(r)for(var s of Object.entries(r))i["$feature/"+s[0]]=s[1];this.pa=i}Aa(){var t=this.Ne.cacheTtlMs;if(!t||0>=t)return!1;var e=this.Oa(Di);return typeof e!="number"||Date.now()-e>t}$a(){return!!this.Aa()&&(this.xa||this.ya||(this.xa=!0,this.rt.warn("Feature flag cache is stale, triggering refresh..."),this.reloadFeatureFlags()),!0)}Na(){var t=this.Ne.evaluationContexts;return t!=null&&t.length?t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid evaluation context found:",e,"Expected non-empty string"),n})):[]}qa(){var t=this.Ne.flagKeys;if(!C(t))return t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid flag key found:",e,"Expected non-empty string"),n}))}initialize(){var t,e,n=this.Ne,i=(t=(e=n.bootstrap)==null?void 0:e.featureFlags)!==null&&t!==void 0?t:{};if(Object.keys(i).length){var r,s,o=(r=(s=n.bootstrap)==null?void 0:s.featureFlagPayloads)!==null&&r!==void 0?r:{},a=Object.keys(i).filter((u=>!!i[u])).reduce(((u,c)=>(u[c]=i[c]||!1,u)),{}),l=Object.keys(o).filter((u=>a[u])).reduce(((u,c)=>(o[c]&&(u[c]=o[c]),u)),{});return this.ja({featureFlags:a,featureFlagPayloads:l})}}updateFlags(t,e,n){var i,r,s=n!=null&&n.merge&&(i=this.Oa(En))!==null&&i!==void 0?i:{},o=n!=null&&n.merge&&(r=this.Oa(Ti))!==null&&r!==void 0?r:{},a=k({},s,t),l=k({},o,e),u={};for(var c of Object.entries(a)){var d=c[0],f=c[1];u[d]={key:d,enabled:dc(f),variant:fc(f),reason:void 0,metadata:C(l?.[d])?void 0:{id:0,version:void 0,description:void 0,payload:l[d]}}}this.ja({flags:u})}get hasLoadedFlags(){return this.ma}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this.Oa(aa),e=this.Oa(xt),n=this.Oa(Sn);if(!n&&!e)return t||{};var i=fe({},t||{}),r=[...new Set([...Object.keys(n||{}),...Object.keys(e||{})])];for(var s of r){var o,a,l=i[s],u=e?.[s],c=C(u)?(o=l?.enabled)!==null&&o!==void 0&&o:!!u,d=C(u)?l?.variant:typeof u=="string"?u:void 0,f=n?.[s],h=k({},l,{enabled:c,variant:c?d??l?.variant:void 0});c!==l?.enabled&&(h.original_enabled=l?.enabled),d!==l?.variant&&(h.original_variant=l?.variant),f&&(h.metadata=k({},l?.metadata,{payload:f,original_payload:l==null||(a=l.metadata)==null?void 0:a.payload})),i[s]=h}return this.ca||(this.rt.warn(" Overriding feature flag details!",{flagDetails:t,overriddenPayloads:n,finalDetails:i}),this.ca=!0),i}getAllFeatureFlags(){var t=this.getFlagVariants(),e=this.getFlagPayloads();return Object.keys(t).map((n=>{var i=t[n];return{key:n,enabled:dc(i),variant:fc(i),payload:uc(e[n])}}))}getFlagVariants(){var t=this.Oa(En),e=this.Oa(xt);if(!e)return t||{};for(var n=fe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flags!",{enabledFlags:t,overriddenFlags:e,finalFlags:n}),this.ca=!0),n}getFlagPayloads(){var t=this.Oa(Ti),e=this.Oa(Sn);if(!e)return t||{};for(var n=fe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flag payloads!",{flagPayloads:t,overriddenPayloads:e,finalPayloads:n}),this.ca=!0),n}reloadFeatureFlags(){this._a||this.Ne.featureFlagsDisabled||this.Ma()||this.Ba||(this.ga.slice().forEach((t=>{try{t()}catch(e){this.rt.error("Error while running feature flags reloading callback",e)}})),this.Ba=setTimeout((()=>{this.Ha()}),5))}La(){clearTimeout(this.Ba),this.Ba=void 0}onReloading(t){return this.ga.push(t),()=>{this.ga=this.ga.filter((e=>e!==t))}}ensureFlagsLoaded(){this.ma||this.ya||this.Ba||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this._a=t}resetFlagCallReported(){this.q(kn)}Ha(t){this.La();var e=this.nn;if(e&&!this.Ne.remoteRequestsDisabled&&!this.Ma())if(this.ya)this.wa=!0;else{var n={token:e.projectToken,distinct_id:e.distinctId,groups:e.groups,$anon_distinct_id:this.$anon_distinct_id,person_properties:k({},e.initialPersonProperties,this.Oa(Dt)||{},{$lib:e.library.name,$lib_version:e.library.version}),group_properties:this.Oa(xn),timezone:wf()};C(e.deviceId)||(n.$device_id=e.deviceId),(t!=null&&t.disableFlags||this.Ne.featureFlagsDisabled)&&(n.disable_flags=!0);var i=this.Na();i.length&&(n.evaluation_contexts=i);var r=this.qa();C(r)||(n.flag_keys=r);var s=this.Ne.onlyEvaluateSurveyFeatureFlags,o="/flags/?v=2"+(s?"&only_evaluate_survey_feature_flags=true":""),a=this.ba;this.ya=!0;var l=()=>{this.wa&&(this.wa=!1,this.Ha())},u=c=>{this.ya=!1,a===this.ba&&(this.F({[Pr]:[pu]}),this.rt.error("Feature flag request failed",c)),l()};try{e.sendRequest(o,{target:"flags",method:"POST",body:n,compression:this.Ne.compression==="base64"?je.Base64:void 0,sentAt:"body",timeoutMs:this.Ne.requestTimeoutMs}).then((c=>{var d,f,h=(d=c.json)!==null&&d!==void 0?d:{},p=c.statusCode!==200;if(this.ya=!1,a===this.ba){if(this.Ua(c.statusCode),p||this.wa||(this.$anon_distinct_id=void 0),!n.disable_flags||this.wa){this.ka=!p;var g=[];c.error?g.push(c.error instanceof Error&&c.error.name==="AbortError"?"timeout":c.error instanceof Error?pu:"unknown_error"):c.statusCode!==200&&g.push("api_error_"+c.statusCode),h.errorsWhileComputingFlags&&g.push("errors_while_computing_flags");var m=!((f=h.quotaLimited)==null||!f.includes("feature_flags"));m&&g.push("quota_limited"),this.F({[Pr]:g}),m?this.rt.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more."):n.disable_flags||this.ja(h,p,{partialResponse:s}),l()}}else l()})).catch(u)}catch(c){u(c)}}}Ma(){return ff(this.Sa,3)}Ua(t){this.Sa=hf(t,this.Sa,3,(()=>this.rt.warn("Feature flag requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped refreshing feature flags; will try again when connectivity changes.")))}getFeatureFlag(t,e){var n;if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var i=this.getFeatureFlagResult(t,e);return(n=i?.variant)!==null&&n!==void 0?n:i?.enabled}}else this.rt.warn('getFeatureFlag for key "'+t+Bo)}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){var e=this.getFeatureFlagResult(t,{send_event:!1});return e?.payload}getFeatureFlagResult(t,e){if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var n,i=this.getFlagVariants(),r=t in i,s=i[t],o=this.getFlagPayloads()[t],a=String(s),l=this.Oa(kr)||void 0,u=this.Oa(Di)||void 0,c=this.Oa(kn)||{};if(this.Ne.deduplicateCallsPerSession){var d,f=(d=this.nn)==null?void 0:d.session.sessionId,h=this.Oa(Mi);f&&f!==h&&(c={},n=f)}if(e.send_event||!("send_event"in e))if(t in c&&c[t].includes(a))n&&this.F({[kn]:c,[Mi]:n});else{var p,g,m,v,S,b,_,x,I,T;U(c[t])?c[t].push(a):c[t]=[a],this.F(k({[kn]:c},n?{[Mi]:n}:{}));var E=this.getFeatureFlagDetails(t),P=[...(p=this.Oa(Pr))!==null&&p!==void 0?p:[]];C(s)&&P.push("flag_missing");var $={$feature_flag:t,$feature_flag_response:s,$feature_flag_payload:o||null,$feature_flag_request_id:l,$feature_flag_evaluated_at:u,$feature_flag_bootstrapped_response:((g=this.Ne.bootstrap)==null||(g=g.featureFlags)==null?void 0:g[t])||null,$feature_flag_bootstrapped_payload:((m=this.Ne.bootstrap)==null||(m=m.featureFlagPayloads)==null?void 0:m[t])||null,$used_bootstrap_value:!this.ka};C(E==null||(v=E.metadata)==null?void 0:v.has_experiment)||($.$feature_flag_has_experiment=E.metadata.has_experiment),C(E==null||(S=E.metadata)==null?void 0:S.version)||($.$feature_flag_version=E.metadata.version);var O,L=(b=E==null||(_=E.reason)==null?void 0:_.description)!==null&&b!==void 0?b:E==null||(x=E.reason)==null?void 0:x.code;L&&($.$feature_flag_reason=L),E!=null&&(I=E.metadata)!=null&&I.id&&($.$feature_flag_id=E.metadata.id),C(E?.original_variant)&&C(E?.original_enabled)||($.$feature_flag_original_response=C(E.original_variant)?E.original_enabled:E.original_variant),E!=null&&(T=E.metadata)!=null&&T.original_payload&&($.$feature_flag_original_payload=E==null||(O=E.metadata)==null?void 0:O.original_payload),P.length&&($.$feature_flag_error=P.join(",")),this.za($)}else n&&this.F({[kn]:c,[Mi]:n});if(r)return{key:t,enabled:!!s,variant:typeof s=="string"?s:void 0,payload:uc(o)}}}else this.rt.warn('getFeatureFlagResult for key "'+t+Bo)}za(t){try{var e;(e=this.nn)==null||e.capture("$feature_flag_called",t).catch((n=>{this.rt.error("Failed to capture feature flag call",n)}))}catch(n){this.rt.error("Failed to capture feature flag call",n)}}getRemoteConfigPayload(t,e){this.Wa(t,e)}Wa(t,e){var n=this;return se((function*(){var i=n.nn;if(i){var r={distinct_id:i.distinctId,token:i.projectToken,person_properties:{$lib:i.library.name,$lib_version:i.library.version}},s=n.Na();s.length&&(r.evaluation_contexts=s);var o,a=n.qa();C(a)||(r.flag_keys=a);try{var l,u=(l=(yield i.sendRequest("/flags/?v=2",{target:"flags",method:"POST",body:r,compression:n.Ne.compression==="base64"?je.Base64:void 0,sentAt:"body",timeoutMs:n.Ne.requestTimeoutMs})).json)==null?void 0:l.featureFlagPayloads;o=u?.[t]||void 0}catch(c){return void n.rt.error("Remote config feature flag request failed",c)}try{e(o)}catch(c){n.rt.error("Remote config feature flag callback failed",c)}}}))()}isFeatureEnabled(t,e){if(e===void 0&&(e={}),e.fresh&&!this.ka)return e.defaultValue;if(!(this.ma||this.getFlags()&&this.getFlags().length>0))return this.rt.warn('isFeatureEnabled for key "'+t+Bo),e.defaultValue;var n=this.getFeatureFlag(t,e);return C(n)?e.defaultValue:!!n}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((e=>e!==t))}receivedFeatureFlags(t,e,n){this.ja(t,e,n)}ja(t,e,n){if(this.nn){this.ma=!0;var i=(function(r,s,o,a,l,u){s===void 0&&(s={}),o===void 0&&(o={}),a===void 0&&(a={}),u===void 0&&(u=hu);var c=((I,T)=>{var E=I.flags;return E?k({},I,{featureFlags:Object.fromEntries(Object.keys(E).map((P=>{var $;return[P,($=E[P].variant)!==null&&$!==void 0?$:E[P].enabled]}))),featureFlagPayloads:Object.fromEntries(Object.keys(E).filter((P=>E[P].enabled)).filter((P=>{var $;return($=E[P].metadata)==null?void 0:$.payload})).map((P=>{var $;return[P,($=E[P].metadata)==null?void 0:$.payload]})))}):(I.featureFlags&&T.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),I)})(r,u),d=c.flags,f=c.featureFlags,h=c.featureFlagPayloads;if(f){var p=r.requestId,g=r.evaluatedAt;if(U(f)){u.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var m={};if(f)for(var v=0;f.length>v;v++)m[f[v]]=!0;return{[Ri]:f,[En]:m,[Kr]:!1}}var S=f,b=h,_=d;if(l!=null&&l.partialResponse)S=k({},s,S),b=k({},o,b),_=k({},a,_);else if(r.errorsWhileComputingFlags)if(d){var x=new Set(Object.keys(d).filter((I=>{var T;return!((T=d[I])!=null&&T.failed)})));S=k({},s,Object.fromEntries(Object.entries(S).filter((I=>x.has(I[0]))))),b=k({},o,Object.fromEntries(Object.entries(b||{}).filter((I=>x.has(I[0]))))),_=k({},a,Object.fromEntries(Object.entries(_||{}).filter((I=>x.has(I[0])))))}else S=k({},s,S),b=k({},o,b),_=k({},a,_);return k({[Ri]:Object.keys(mu(S)),[En]:S||{},[Ti]:b||{},[aa]:_||{},[Kr]:r.minimalFlagCalledEvents===!0},p?{[kr]:p}:{},g?{[Di]:g}:{})}})(t,this.getFlagVariants(),this.getFlagPayloads(),this.getFlagsWithDetails(),n,this.rt);i&&this.F(i),e||(this.xa=!1),this.Va(e)}}override(t,e){e===void 0&&(e=!1),this.rt.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:t,suppressWarning:e})}overrideFeatureFlags(t){this.Za(t)}Za(t){if(this.nn){if(t===!1)return this.q([xt,Sn]),this.Va(),void wn.info("All overrides cleared");if(U(t))return this.F({[xt]:gu(t)}),this.Va(),void wn.info("Flag overrides set",{flags:t});if(t&&typeof t=="object"&&("flags"in t||"payloads"in t)){var e,n=t;this.ca=!!((e=n.suppressWarning)!==null&&e!==void 0&&e);var i={},r=n.flags,s=n.payloads;return r&&(i[xt]=U(r)?gu(r):r),s&&(i[Sn]=s),Object.keys(i).length&&this.F(i),r===!1&&s===!1?this.q([xt,Sn]):r===!1?this.q(xt):s===!1&&this.q(Sn),this.Va(),r===!1?wn.info("Flag overrides cleared"):r&&wn.info("Flag overrides set",{flags:r}),void(s===!1?wn.info("Payload overrides cleared"):s&&wn.info("Payload overrides set",{payloads:s}))}if(t&&typeof t=="object")return this.F({[xt]:t}),this.Va(),void wn.info("Flag overrides set",{flags:t});this.rt.warn("Invalid overrideOptions provided to overrideFeatureFlags",{overrideOptions:t})}else this.rt.warn("posthog.featureFlags.overrideFeatureFlags called before feature flags were ready")}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ma){var e=this.Ga(),n=e.flags,i=e.flagVariants;try{t(n,i)}catch(r){this.rt.error("Error while running feature flags callback",r)}}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,e,n){var i=(this.Oa(Ir)||[]).find((l=>l.flagKey===t)),r={["$feature_enrollment/"+t]:e},s={$feature_flag:t,$feature_enrollment:e,$set:r};i&&(s.$early_access_feature_name=i.name),n&&(s.$feature_enrollment_stage=n);var o=k({},this.getFlagVariants(),{[t]:e});this.F({[Ri]:Object.keys(mu(o)),[En]:o,[Dt]:k({},this.Oa(Dt)||{},r)}),this.Va();try{var a;(a=this.nn)==null||a.capture("$feature_enrollment_update",s).catch((l=>{this.rt.error("Failed to capture early access feature enrollment",l)}))}catch(l){this.rt.error("Failed to capture early access feature enrollment",l)}}getEarlyAccessFeatures(t,e,n){e===void 0&&(e=!1);var i=this.Oa(Ir);!i||e?this.Qa(t,n):t(i)}Qa(t,e){var n=this;return se((function*(){var i=n.nn;if(i){var r,s=e?"&"+e.map((a=>"stage="+a)).join("&"):"";try{var o=yield i.sendRequest("/api/early_access_features/?token="+i.projectToken+s,{target:"api",method:"GET",sentAt:"query"});if(!o.json)return;n.F({[Ir]:r=o.json.earlyAccessFeatures})}catch(a){return void n.rt.error("Early access feature request failed",a)}try{t(r)}catch(a){n.rt.error("Early access feature callback failed",a)}}}))()}Ga(){var t=this.getFlags(),e=this.getFlagVariants();return{flags:t.filter((n=>e[n])),flagVariants:Object.keys(e).filter((n=>e[n])).reduce(((n,i)=>(n[i]=e[i],n)),{})}}Va(t){this.Fa();var e=this.Ga(),n=e.flags,i=e.flagVariants;this.featureFlagEventHandlers.forEach((r=>{try{r(n,i,{errorsLoading:t})}catch(s){this.rt.error("Error while running feature flags callback",s)}}))}setPersonPropertiesForFlags(t,e){e===void 0&&(e=!0),this.Ka(t,e)}Ka(t,e){e===void 0&&(e=!0);var n=this.Oa(Dt)||{},i=t?.$set||(t!=null&&t.$set_once?{}:t),r=t?.$set_once,s={};if(r)for(var o in r)({}).hasOwnProperty.call(r,o)&&(o in n||(s[o]=r[o]));this.F({[Dt]:k({},n,s,i)}),e&&this.reloadFeatureFlags()}unsetPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=k({},this.Oa(Dt)||{});t.forEach((i=>{delete n[i]})),this.F({[Dt]:n}),e&&this.reloadFeatureFlags()}resetPersonPropertiesForFlags(t){t===void 0&&(t=!0),this.q(Dt),t&&this.reloadFeatureFlags()}setGroupPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=this.Oa(xn)||{},i=k({},n);for(var r of Object.keys(t))i[r]=k({},n[r],t[r]);this.F({[xn]:i}),e&&this.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var e=this.Oa(xn)||{};this.F({[xn]:k({},e,{[t]:{}})})}else this.q(xn)}reset(){this.ba++,this.wa=!1,this.Fa(),this.ma=!1,this._a=!1,this.ka=!1,this.$anon_distinct_id=void 0,this.La(),this.ca=!1,this.Sa=0}}},Om={sessionRecording:class{get Ne(){return this._instance.config}get Mr(){return this._instance.persistence}get started(){var t;return!((t=this.Ja)==null||!t.isStarted)}get status(){var t,e;return this.Ya===Ii||this.Ya===wr?this.Ya:(t=(e=this.Ja)==null?void 0:e.status)!==null&&t!==void 0?t:this.Ya}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Ya=ou,this.Xa=void 0,this.eo=!1,this.io=(()=>{var e;if(F==null||!F.visibilityState||F.visibilityState==="visible")return!0;var n=w==null||(e=w.performance)==null||e.getEntriesByType==null?void 0:e.getEntriesByType("visibility-state");return!(n!=null&&n.length)||n.some((i=>i.name==="visible"))})(),this.Ie=()=>{var e;F?.visibilityState==="visible"&&(this.io=!0,(e=this.Ja)==null||e.setDocumentWasEverVisible==null||e.setDocumentWasEverVisible(!0))},this._instance=t,!this._instance.sessionManager)throw Ot.error("started without valid sessionManager"),new Error(Ia+" started without valid sessionManager. This is a bug.");if(this.Ne.cookieless_mode===Ht)throw new Error(Ia+' cannot be used with cookieless_mode="always"');F!=null&&F.addEventListener&&ve(F,"visibilitychange",this.Ie)}initialize(){this.startIfEnabledOrStop()}dispose(){this.eo=!0,F==null||F.removeEventListener==null||F.removeEventListener("visibilitychange",this.Ie),this.stopRecording()}get ro(){var t,e=!((t=this._instance.get_property(Cn))==null||!t.enabled),n=!this.Ne.disable_session_recording,i=this.Ne.disable_session_recording||this._instance.consent.isOptedOut();return w&&e&&n&&!i}startIfEnabledOrStop(t){var e;if(!(this.eo||this.ro&&(e=this.Ja)!=null&&e.isStarted)){var n=!C(Object.assign)&&!C(Array.from);this.ro&&n?(this.no(t),Ot.info("starting")):(this.Ya=ou,this.stopRecording())}}no(t){var e,n,i;this.ro&&(this.Ya!==Ii&&this.Ya!==wr&&(this.Ya=au),B!=null&&(e=B.__PosthogExtensions__)!=null&&(e=e.rrweb)!=null&&e.record&&(n=B.__PosthogExtensions__)!=null&&n.initSessionRecording?this.so(t):(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,this.ao,(r=>{if(r)return Ot.error("could not load recorder",r);this.so(t)})))}stopRecording(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.stop()}oo(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.discard()}lo(){var t,e;(t=this.Mr)==null||t.unregister(ol),(e=this.Mr)==null||e.unregister(Ud)}uo(t,e){if(H(t))return null;var n,i=ke(t)?t:parseFloat(t);return typeof(n=i)!="number"||!Number.isFinite(n)||0>n||n>1?(Ot.warn(e+" must be between 0 and 1. Ignoring invalid value:",t),null):i}ho(t){if(this.Mr){var e,n,i=this.Mr,r=()=>{var s,o=t.sessionRecording===!1?void 0:t.sessionRecording,a=this.uo((s=this.Ne.session_recording)==null?void 0:s.sampleRate,"session_recording.sampleRate"),l=this.uo(o?.sampleRate,"remote config sampleRate"),u=a??l;H(u)&&this.lo();var c=o?.minimumDurationMilliseconds;i.register({[Cn]:k({cache_timestamp:Date.now(),enabled:!!o},o,{networkPayloadCapture:k({capturePerformance:t.capturePerformance},o?.networkPayloadCapture),canvasRecording:{enabled:o?.recordCanvas,fps:o?.canvasFps,quality:o?.canvasQuality},sampleRate:u,minimumDurationMilliseconds:C(c)?null:c,endpoint:o?.endpoint,triggerMatchType:o?.triggerMatchType,masking:o?.masking,urlTriggers:o?.urlTriggers,version:o?.version,triggerGroups:o?.triggerGroups})})};r(),(e=this.Xa)==null||e.call(this),this.Xa=(n=this._instance.sessionManager)==null?void 0:n.onSessionId(r)}}onRemoteConfig(t){var e=t.ok?t.config:void 0;return e&&"sessionRecording"in e?e.sessionRecording===!1?(this.ho(e),void this.oo()):(this.ho(e),void this.startIfEnabledOrStop()):(this.Ya===Ii&&(this.Ya=wr,Ot.warn("config refresh failed, recording will not start until page reload")),void this.startIfEnabledOrStop())}log(t,e){var n;e===void 0&&(e="log"),(n=this.Ja)!=null&&n.log?this.Ja.log(t,e):Ot.warn("log called before recorder was ready")}get ao(){var t,e,n=(t=this._instance)==null||(t=t.persistence)==null?void 0:t.get_property(Cn);return(n==null||(e=n.scriptConfig)==null?void 0:e.script)||"lazy-recorder"}do(){var t,e=this._instance.get_property(Cn);if(!e)return!1;try{t=typeof e=="object"?e:JSON.parse(e)}catch(n){return Ot.warn("persisted remote config for session recording is invalid and will be ignored",n),!1}return!H(t.cache_timestamp)&&36e5>=Date.now()-t.cache_timestamp}so(t){var e,n,i;if(!this.eo){if((e=B.__PosthogExtensions__)==null||!e.initSessionRecording)return Ot.warn("Called on script loaded before session recording is available. This can be caused by adblockers."),void this._instance.register_for_session({[Yd]:!0});var r;if(this.Ja||(this.Ja=(r=B.__PosthogExtensions__)==null?void 0:r.initSessionRecording(this._instance,this.io),this.Ja._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),!this.do())return this.Ya===wr||this.Ya===Ii?void 0:(this.Ya=Ii,Ot.info("persisted remote config is stale, requesting fresh config before starting"),void new bf(this._instance).load());this.Ya=au,(n=(i=this.Ja).setDocumentWasEverVisible)==null||n.call(i,this.io),this.Ja.start(t)}}onRRwebEmit(t){var e;(e=this.Ja)==null||e.onRRwebEmit==null||e.onRRwebEmit(t)}overrideLinkedFlag(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Wd]:!0}),(t=this.Ja)==null||t.overrideLinkedFlag()}overrideSampling(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Hd]:!0}),(t=this.Ja)==null||t.overrideSampling()}overrideTrigger(t){var e,n;this.Ja||(n=this.Mr)==null||n.register({[t==="url"?zd:qd]:!0}),(e=this.Ja)==null||e.overrideTrigger(t)}get sdkDebugProperties(){var t;return((t=this.Ja)==null?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,e){var n;return!((n=this.Ja)==null||!n.tryAddCustomEvent(t,e))}}},Bm={autocapture:class{constructor(t){this.vo=!1,this.co=null,this.fo=!1,this.po=!1,this.instance=t,this.rageclicks=new iu(t.config.rageclick),this.mo=null}initialize(){this.startIfEnabled()}get Ne(){var t,e,n=he(this.instance.config.autocapture)?this.instance.config.autocapture:{};return n.url_allowlist=(t=n.url_allowlist)==null?void 0:t.map((i=>new RegExp(i))),n.url_ignorelist=(e=n.url_ignorelist)==null?void 0:e.map((i=>new RegExp(i))),n}yo(){if(this.isBrowserSupported()){if(w&&F){var t=n=>{n=n||w?.event;try{this.bo(n)}catch(i){Mo.error("Failed to capture event",i)}};if(ve(F,"submit",t,{capture:!0}),ve(F,"change",t,{capture:!0}),ve(F,"click",t,{capture:!0}),this.Ne.capture_copied_text){var e=n=>{n=n||w?.event;try{this.bo(n,$o)}catch(i){Mo.error("Failed to capture copy/cut event",i)}};ve(F,"copy",e,{capture:!0}),ve(F,"cut",e,{capture:!0})}}}else Mo.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.vo&&(this.yo(),this.vo=!0)}onRemoteConfig(t){if(this.fo=!0,t.ok){var e=t.config;e.elementsChainAsString&&(this.po=e.elementsChainAsString);var n=e.autocapture_opt_out;gt(n)&&(this.instance.persistence&&this.instance.persistence.register({[ea]:n}),this.co=n),this.startIfEnabled()}else this.startIfEnabled()}setElementSelectors(t){this.mo=t}getElementSelectors(t){var e,n=[];return(e=this.mo)==null||e.forEach((i=>{var r=F?.querySelectorAll(i);r?.forEach((s=>{t===s&&n.push(i)}))})),n}get isEnabled(){var t,e,n=(t=this.instance.persistence)==null?void 0:t.props[ea],i=this.co,r=this.instance.Qi()&&!this.fo;if(Ve(i)&&!gt(n)&&!r)return!1;var s=(e=this.co)!==null&&e!==void 0?e:!!n;return!!this.instance.config.autocapture&&!s}bo(t,e){if(e===void 0&&(e="$autocapture"),this.isEnabled){var n,i=bo(t);ef(i)&&(i=i.parentNode||null),e==="$autocapture"&&t.type==="click"&&t instanceof MouseEvent&&this.instance.config.rageclick&&(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,t.timeStamp||new Date().getTime())&&$c(i,this.instance.config.rageclick)&&this.bo(t,"$rageclick");var r=e===$o;if(i&&(function(d,f,h,p,g,m){var v;if(!w||dl(d)||h!=null&&h.url_allowlist&&!Fc(h.url_allowlist,m)||h!=null&&h.url_ignorelist&&Fc(h.url_ignorelist,m))return!1;if(h!=null&&h.dom_event_allowlist){var S=h.dom_event_allowlist;if(S&&!S.some((E=>f.type===E)))return!1}var b=af(d,p),_=b.parentIsUsefulElement,x=b.targetElementList;if(!(function(E,P){var $=P?.element_allowlist;if(C($))return!0;var O,L=function(G){if($.some((V=>G.tagName.toLowerCase()===V)))return{v:!0}};for(var N of E)if(O=L(N))return O.v;return!1})(x,h)||!ma(x,h?.css_selector_allowlist)||ma(x,(v=h?.css_selector_ignorelist)!==null&&v!==void 0?v:Lg))return!1;try{var I=w.getComputedStyle(d);if(I&&I.getPropertyValue("cursor")==="pointer"&&f.type==="click")return!0}catch{}var T=d.tagName.toLowerCase();switch(T){case"html":return!1;case"form":return(g||["submit"]).indexOf(f.type)>=0;case"input":case"select":case"textarea":return(g||["change","click"]).indexOf(f.type)>=0;default:return _?(g||["click"]).indexOf(f.type)>=0:(g||["click"]).indexOf(f.type)>=0&&(ul.indexOf(T)>-1||d.getAttribute("contenteditable")==="true")}})(i,t,this.Ne,r,r?["copy","cut"]:void 0,this.instance)){var s=Cm(i,{e:t,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.Ne.element_attribute_ignorelist,elementsChainAsString:this.po,disableCaptureUrlHashes:this.instance.config.disable_capture_url_hashes}),o=s.props;if(s.explicitNoCapture)return!1;var a=this.getElementSelectors(i);if(a&&a.length>0&&(o.$element_selectors=a),e===$o){var l,u=rf(w==null||(l=w.getSelection())==null?void 0:l.toString()),c=t.type||"clipboard";if(!u)return!1;o.$selected_content=u,o.$copy_type=c}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return De(F?.querySelectorAll)}},historyAutocapture:class{constructor(t){var e;this._instance=t,this._o=(w==null||(e=w.location)==null?void 0:e.pathname)||""}initialize(){this.startIfEnabled()}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(A.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.wo&&this.wo(),this.wo=void 0,A.info("History API monitoring stopped")}monitorHistoryChanges(){w&&w.history&&(this.ko("pushState"),this.ko("replaceState"),this.xo())}ko(t){var e;if(w&&((e=w.history[t])==null||!e.__posthog_wrapped__)){var n=this;(function(i,r,s){try{if(!(r in i))return ru;var o={next:i[r]},a=s((function(){for(var l=arguments.length,u=new Array(l),c=0;l>c;c++)u[c]=arguments[c];return o.next.apply(this,u)}));return De(a)&&(a.prototype=a.prototype||{},Object.defineProperties(a,{__posthog_wrapped__:{enumerable:!1,value:!0},__posthog_layer__:{enumerable:!1,value:o}})),i[r]=a,()=>{if(i[r]!==a)for(var l=i[r];De(l)&&l.__posthog_layer__;){var u=l.__posthog_layer__;if(u.next===a)return void(u.next=o.next);l=u.next}else i[r]=o.next}}catch{return ru}})(w.history,t,(i=>function(r,s,o){i.call(this,r,s,o),n.So(t)}))}}So(t){try{var e,n=w==null||(e=w.location)==null?void 0:e.pathname;if(!n)return;n!==this._o&&this.isEnabled&&this._instance.capture(qn,{navigation_type:t}),this._o=n}catch(i){A.error("Error capturing "+t+" pageview",i)}}xo(){if(!this.wo){var t=()=>{this.So("popstate")};ve(w,"popstate",t),this.wo=()=>{w&&w.removeEventListener("popstate",t)}}}},heatmaps:class{get Ne(){return this.instance.config}constructor(t){var e;this.Co=!1,this.vo=!1,this.Mo=null,this.instance=t,this.Co=!((e=this.instance.persistence)==null||!e.props[ta]),this.rageclicks=new iu(t.config.rageclick)}initialize(){this.startIfEnabled()}get flushIntervalMilliseconds(){var t=5e3;return he(this.Ne.capture_heatmaps)&&this.Ne.capture_heatmaps.flush_interval_milliseconds&&(t=this.Ne.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return H(this.Ne.capture_heatmaps)?H(this.Ne.enable_heatmaps)?this.Co:this.Ne.enable_heatmaps:this.Ne.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.vo)return;Pm.info("starting..."),this.To(),this.Ie()}else{var t;clearInterval((t=this.Mo)!==null&&t!==void 0?t:void 0),this.Eo(),this.getAndClearBuffer()}}onRemoteConfig(t){if(t.ok){var e=t.config;if("heatmaps"in e){var n=!!e.heatmaps;this.instance.persistence&&this.instance.persistence.register({[ta]:n}),this.Co=n,this.startIfEnabled()}}}getAndClearBuffer(){var t=this.R;return this.R=void 0,t}Io(t){No(t.originalEvent)&&this.ke(t.originalEvent,"deadclick")}Ie(){this.Mo&&clearInterval(this.Mo),this.Mo=F?.visibilityState==="visible"?setInterval(this.cr.bind(this),this.flushIntervalMilliseconds):null}To(){w&&F&&(this.Po=this.cr.bind(this),ve(w,Qr,this.Po),this.Ro=t=>this.ke(t||w?.event),ve(F,"click",this.Ro,{capture:!0}),this.Ao=t=>this.Fo(t||w?.event),ve(F,"mousemove",this.Ao,{capture:!0}),this.Lo=new jc(this.instance,Hg,this.Io.bind(this)),this.Lo.startIfEnabledOrStop(),this.Oo=this.Ie.bind(this),ve(F,Xr,this.Oo),this.vo=!0)}Eo(){var t;w&&F&&(this.Po&&w.removeEventListener(Qr,this.Po),this.Ro&&F.removeEventListener("click",this.Ro,{capture:!0}),this.Ao&&F.removeEventListener("mousemove",this.Ao,{capture:!0}),this.Oo&&F.removeEventListener(Xr,this.Oo),clearTimeout(this.Do),(t=this.Lo)==null||t.stop(),this.vo=!1)}$o(t,e){var n=this.instance.scrollManager.scrollY(),i=this.instance.scrollManager.scrollX(),r=this.instance.scrollManager.scrollElement(),s=(function(o,a,l){for(var u=o;u&&fn(u)&&!Qe(u,"body");){if(u===l)return!1;var c=void 0;try{var d,f,h;c=(d=(f=(h=u.ownerDocument)==null?void 0:h.defaultView)!==null&&f!==void 0?f:w)==null?void 0:d.getComputedStyle(u).position}catch{return!1}if(j(a,c))return!0;u=sf(u)}return!1})(bo(t),["fixed","sticky"],r);return{x:t.clientX+(s?0:i),y:t.clientY+(s?0:n),target_fixed:s,type:e}}ke(t,e){var n;if(e===void 0&&(e="click"),!Pc(t.target)&&No(t)){var i=this.$o(t,e);(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,new Date().getTime())&&$c(bo(t),this.instance.config.rageclick)&&this.Vt(k({},i,{type:"rageclick"})),this.Vt(i)}}Fo(t){!Pc(t.target)&&No(t)&&(clearTimeout(this.Do),this.Do=setTimeout((()=>{this.Vt(this.$o(t,"mousemove"))}),500))}Vt(t){if(w){var e=this.Ne.disable_capture_url_hashes?dn(w.location.href):w.location.href,n=this.Ne.custom_personal_data_properties,i=this.Ne.mask_personal_data_properties?[...ii,...n||[]]:[],r=Ji(e,i,Zi);this.R=this.R||{},this.R[r]||(this.R[r]=[]),this.R[r].push(t)}}cr(){this.R&&!Vt(this.R)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}},deadClicksAutocapture:jc,webVitalsAutocapture:class{constructor(t){var e;this.Co=!1,this.vo=!1,this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},this.No=()=>{clearTimeout(this.qo),this.qo=void 0,this.R.metrics.length!==0&&(this._instance.capture("$web_vitals",k({$current_url:this.R.url},this.R.metrics.reduce(((n,i)=>k({},n,{["$web_vitals_"+i.name+"_event"]:k({},i),["$web_vitals_"+i.name+"_value"]:i.value})),{}))),this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.jo=n=>{var i;if(this.R=this.R||{navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},H(n?.name)||H(n?.value))yn.error("Invalid metric received",n);else{var r=typeof n.navigationURL=="string"?n.navigationURL:void 0,s=this.Bo(r);if(!C(s)){var o=ke(n.navigationId)||typeof n.navigationId=="string"?"navigation:"+n.navigationId:"url:"+s;if(!this.Ho||this.Ho>n.value){this.R.navigationKey!==o&&(this.No(),this.qo=setTimeout(this.No,this.flushToCaptureTimeoutMs)),C(this.R.navigationKey)&&(this.R.navigationKey=o,this.R.url=s),this.R.firstMetricTimestamp=C(this.R.firstMetricTimestamp)?Date.now():this.R.firstMetricTimestamp,n.attribution&&n.attribution.interactionTargetElement&&(n.attribution.interactionTargetElement=void 0);var a=(i=this._instance.sessionManager)==null?void 0:i.checkAndGetSessionAndWindowId(!0),l=k({},n,r?{navigationURL:s}:{},{$current_url:s,timestamp:Date.now()});C(a)||(l.$session_id=a.sessionId,l.$window_id=a.windowId),this.R.metrics.push(l),this.R.metrics.length===this.allowedMetrics.length&&this.No()}else yn.error("Ignoring metric with value >= "+this.Ho,n)}}},this.Uo=()=>{if(!this.vo){var n,i,r,s,o=B.__PosthogExtensions__,a=o?.postHogWebVitalsCallbacksByFlavor,l=a?.[this.zo]||(this.zo==="web-vitals"&&C(a)?o?.postHogWebVitalsCallbacks:void 0);if(C(l)||(n=l.onLCP,i=l.onCLS,r=l.onFCP,s=l.onINP),n&&i&&r&&s){var u={reportSoftNavs:this.useSoftNavs};this.allowedMetrics.indexOf("LCP")>-1&&n(this.jo.bind(this),u),this.allowedMetrics.indexOf("CLS")>-1&&i(this.jo.bind(this),u),this.allowedMetrics.indexOf("FCP")>-1&&r(this.jo.bind(this),u),this.allowedMetrics.indexOf("INP")>-1&&s(this.jo.bind(this),u),this.vo=!0}else yn.error("web vitals callbacks not loaded - not starting")}},this._instance=t,this.Co=!((e=this._instance.persistence)==null||!e.props[sa]),this.startIfEnabled()}get Wo(){return this._instance.config.capture_performance}get allowedMetrics(){var t,e,n=he(this.Wo)?(t=this.Wo)==null?void 0:t.web_vitals_allowed_metrics:void 0;return H(n)?((e=this._instance.persistence)==null?void 0:e.props[oa])||["CLS","FCP","INP","LCP"]:n}get flushToCaptureTimeoutMs(){return(he(this.Wo)?this.Wo.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=he(this.Wo)?this.Wo.web_vitals_attribution:void 0;return t!=null&&t}get useSoftNavs(){var t=he(this.Wo)?this.Wo.__preview_web_vitals_soft_navs:void 0;return t!=null&&t}get Ho(){var t=he(this.Wo)&&ke(this.Wo.__web_vitals_max_value)?this.Wo.__web_vitals_max_value:su;return t>0&&6e4>=t?su:t}get isEnabled(){var t=me?.protocol;if(t!=="http:"&&t!=="https:")return yn.info("Web Vitals are disabled on non-http/https protocols"),!1;var e=he(this.Wo)?this.Wo.web_vitals:gt(this.Wo)?this.Wo:void 0;return gt(e)?e:this.Co}startIfEnabled(){this.isEnabled&&!this.vo&&(yn.info("enabled, starting..."),this.ai(this.Uo))}onRemoteConfig(t){if(t.ok){var e=t.config;if("capturePerformance"in e){var n=he(e.capturePerformance)&&!!e.capturePerformance.web_vitals,i=he(e.capturePerformance)?e.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[sa]:n}),this._instance.persistence.register({[oa]:i})),this.Co=n,this.startIfEnabled()}}}get zo(){return this.useSoftNavs?this.useAttribution?"web-vitals-with-attribution-soft-navs":"web-vitals-soft-navs":this.useAttribution?"web-vitals-with-attribution":"web-vitals"}ai(t){var e=B.__PosthogExtensions__,n=this.zo,i=e?.postHogWebVitalsCallbacksByFlavor;i!=null&&i[n]||n==="web-vitals"&&C(i)&&e!=null&&e.postHogWebVitalsCallbacks?t():e==null||e.loadExternalDependency==null||e.loadExternalDependency(this._instance,n,(r=>{r?yn.error("failed to load script",r):t()}))}Bo(t){var e=t||w?.location.href;if(e){var n=this._instance.config.disable_capture_url_hashes?dn(e):e,i=this._instance.config.custom_personal_data_properties,r=this._instance.config.mask_personal_data_properties?[...ii,...i||[]]:[];return Ji(n,r,Zi)}yn.error("Could not determine current URL")}}},Dm={exceptionObserver:class{constructor(t){var e;this.Uo=()=>{var n;if(w&&this.isEnabled&&(n=B.__PosthogExtensions__)!=null&&n.errorWrappingFunctions){var i=B.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=B.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=B.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.Vo&&this.Ne.capture_unhandled_errors&&(this.Vo=i(this.captureException.bind(this))),!this.Zo&&this.Ne.capture_unhandled_rejections&&(this.Zo=r(this.captureException.bind(this))),!this.Go&&this.Ne.capture_console_errors&&(this.Go=s(this.captureException.bind(this)))}catch(o){xi.error("failed to start",o),this.Qo()}}},this._instance=t,this.Ko=!((e=this._instance.persistence)==null||!e.props[na]),this.Jo=new Op(k({},(function(n){var i,r,s,o;return n===void 0&&(n={}),{refillRate:(i=(r=n.exceptionRateLimiterRefillRate)!==null&&r!==void 0?r:n.__exceptionRateLimiterRefillRate)!==null&&i!==void 0?i:1,bucketSize:(s=(o=n.exceptionRateLimiterBucketSize)!==null&&o!==void 0?o:n.__exceptionRateLimiterBucketSize)!==null&&s!==void 0?s:10}})(this._instance.config.error_tracking),{refillInterval:1e4,rt:xi})),this.Ne=this.Yo(),this.startIfEnabledOrStop()}Yo(){var t=this._instance.config.capture_exceptions,e={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return he(t)?e=k({},e,t):(C(t)?this.Ko:t)&&(e=k({},e,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),e}get isEnabled(){return this.Ne.capture_console_errors||this.Ne.capture_unhandled_errors||this.Ne.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(xi.info("enabled"),this.Qo(),this.ai(this.Uo)):this.Qo()}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.errorWrappingFunctions?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"exception-autocapture",(i=>{if(i)return xi.error("failed to load script",i);t()}))}Qo(){var t,e,n;(t=this.Vo)==null||t.call(this),this.Vo=void 0,(e=this.Zo)==null||e.call(this),this.Zo=void 0,(n=this.Go)==null||n.call(this),this.Go=void 0}onRemoteConfig(t){if(t.ok){var e=t.config;"autocaptureExceptions"in e&&(this.Ko=!!e.autocaptureExceptions||!1,this._instance.persistence&&this._instance.persistence.register({[na]:this.Ko}),this.Ne=this.Yo(),this.startIfEnabledOrStop())}}onConfigChange(){this.Ne=this.Yo()}captureException(t){var e,n,i,r=(e=t==null||(n=t.$exception_list)==null||(n=n[0])==null?void 0:n.type)!==null&&e!==void 0?e:"Exception";this.Jo.consumeRateLimit(r)?xi.info("Skipping exception capture because of client rate limiting.",{exception:r}):(i=this._instance.exceptions)==null||i.sendExceptionEvent(t)}},exceptions:class{constructor(t){var e,n;this.Xo=[],this.tl=new eg([new lg,new vg,new ug,new cg,new gg,new pg,new fg,new mg],(function(i){for(var r=arguments.length,s=new Array(r>1?r-1:0),o=1;r>o;o++)s[o-1]=arguments[o];return function(a,l){l===void 0&&(l=0);for(var u=[],c=a.split(` +`),d=l;c.length>d;d++){var f=c[d];if(1024>=f.length){var h=Ic.test(f)?f.replace(Ic,"$1"):f;if(!h.match(/\S*Error: /)){for(var p of s){var g=p(h,i);if(g){u.push(g);break}}if(u.length>=50)break}}}return(function(m){if(!m.length)return[];var v=Array.from(m);return v.reverse(),v.slice(0,50).map((S=>{return k({},S,{filename:S.filename||(b=v,b[b.length-1]||{}).filename,function:S.function||ti});var b}))})(u)}})("web:javascript",rg,ag)),this._instance=t,this.Xo=(e=(n=this._instance.persistence)==null?void 0:n.get_property(ia))!==null&&e!==void 0?e:[],this.el=Gr(this.il()),this.rl=new yg(this.el)}onConfigChange(){this.el=Gr(this.il()),this.rl.setConfig(this.el)}onRemoteConfig(t){var e,n,i;if(t.ok){var r=t.config;if("errorTracking"in r){var s=(e=(n=r.errorTracking)==null?void 0:n.suppressionRules)!==null&&e!==void 0?e:[],o=(i=r.errorTracking)==null?void 0:i.captureExtensionExceptions;this.Xo=s,this._instance.persistence&&this._instance.persistence.register({[ia]:this.Xo,[ra]:o})}}}get nl(){var t,e=!!this._instance.get_property(ra),n=this._instance.config.error_tracking.captureExtensionExceptions;return(t=n??e)!==null&&t!==void 0&&t}buildProperties(t,e){return this.tl.buildFromUnknown(t,{syntheticException:e?.syntheticException,mechanism:{handled:e?.handled}})}addExceptionStep(t,e){if(this.el.enabled)try{if(!X(t)||t.trim().length===0)return void Et.warn("Ignoring exception step because message must be a non-empty string");var n=(function(s){if(!s)return{sanitizedProperties:{},droppedKeys:[]};var o=[];return{sanitizedProperties:Object.keys(s).reduce(((a,l)=>_g.has(l)?(o.push(l),a):(a[l]=s[l],a)),{}),droppedKeys:o}})(this.sl(e)),i=n.sanitizedProperties,r=n.droppedKeys;r.length>0&&Et.warn("Ignoring reserved exception step fields",{droppedKeys:r}),this.rl.add(k({[qr]:t,[Vr]:new Date().toISOString()},i))}catch(s){Et.error("Failed to add exception step. Ignoring breadcrumb.",s)}}sendExceptionEvent(t){try{var e=t.$exception_list;if(this.al(e)){if(this.ol(e))return this.ll("Exception dropped: matched a suppression rule"),void Et.info("Skipping exception capture because a suppression rule matched");if(!this.nl&&this.ul(e))return this.ll("Exception dropped: thrown by a browser extension"),void Et.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.hl(e))return this.ll("Exception dropped: thrown by the PostHog SDK"),void Et.info("Skipping exception capture because it was thrown by the PostHog SDK")}var n=this.el.enabled&&H(t.$exception_steps)?this.dl(t):t,i=typeof(s=globalThis._posthogReleaseId)=="string"&&s.length>0?s:void 0;i&&(n.$release_id=i);try{var r=this._instance.capture("$exception",n,{_noTruncate:!0,_batchKey:"exceptionEvent",Wn:!0});return r&&this.rl.clear(),r}catch(o){return Et.error("Failed to capture exception event. Dropping this exception.",o),void this.rl.clear()}}catch(o){return void Et.error("Failed to process exception event. Ignoring this exception.",o)}var s}dl(t){try{var e=this.rl.getAttachable();return e.length===0?t:k({},t,{$exception_steps:e})}catch(n){return Et.error("Failed to read buffered exception steps. Capturing exception without steps.",n),t}}ll(t){this.el.enabled&&this.rl.add({[qr]:t,[Vr]:new Date().toISOString()})}sl(t){return he(t)?k({},t):{}}il(){var t,e;return(t=(e=this._instance.config.error_tracking)==null?void 0:e.exception_steps)!==null&&t!==void 0?t:{}}ol(t){if(t.length===0)return!1;try{var e=t.reduce(((n,i)=>{var r=i.type,s=i.value;return X(r)&&r.length>0&&n.$exception_types.push(r),X(s)&&s.length>0&&n.$exception_values.push(s),n}),{$exception_types:[],$exception_values:[]});return this.Xo.some((n=>{var i=n.values.map((r=>{var s=Lf[r.operator],o=e[r.key];if(!s||!o)return!1;var a=U(r.value)?r.value:[r.value];return a.length>0&&s(a,o)}));return n.type==="OR"?i.some(Boolean):i.every(Boolean)}))}catch(n){return Et.warn("Failed to evaluate suppression rules. Capturing the exception.",n),!1}}ul(t){return t.flatMap((e=>{var n,i;return(n=(i=e.stacktrace)==null?void 0:i.frames)!==null&&n!==void 0?n:[]})).some((e=>e.filename&&e.filename.startsWith("chrome-extension://")))}hl(t){if(t.length>0){var e,n,i,r,s=(e=(n=t[0].stacktrace)==null?void 0:n.frames)!==null&&e!==void 0?e:[],o=s[s.length-1];return(i=o==null||(r=o.filename)==null?void 0:r.includes("posthog.com/static"))!==null&&i!==void 0&&i}return!1}al(t){return!H(t)&&U(t)}}},jm=k({productTours:class{get Mr(){return this._instance.persistence}constructor(t){this.vl=null,this.cl=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(t.ok){var e=t.config;if("productTours"in e){var n,i;if(this.Mr&&this.Mr.register({[sl]:!!e.productTours}),!Oo(this._instance))return!this.vl&&H((n=this.Mr)==null?void 0:n.props[$i])||br.info("product tours disabled; stopping and clearing cached tours"),(i=this.vl)==null||i.stop(),this.vl=null,void this.clearCache();this.loadIfEnabled()}}}loadIfEnabled(){!this.vl&&Oo(this._instance)&&this.ai((()=>this.fl()))}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.generateProductTours?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"product-tours",(i=>{i?br.error("Could not load product tours script",i):t()}))}fl(){var t;!this.vl&&(t=B.__PosthogExtensions__)!=null&&t.generateProductTours&&(this.vl=B.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,e){if(e===void 0&&(e=!1),!U(this.cl)||e){var n=this.Mr;if(n){var i=n.props[$i];if(U(i)&&!e)return this.cl=i,void t(i,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",timestampMode:"query",callback:r=>{if(Oo(this._instance)){var s=r.statusCode;if(s!==200||!r.json){var o="Product Tours API could not be loaded, status: "+s;return s===0?r.error||br.warn(o):br.error(o),void t([],{isLoaded:!1,error:o})}var a=U(r.json.product_tours)?r.json.product_tours:[];this.cl=a,n&&n.register({[$i]:a}),t(a,{isLoaded:!0})}else t([],{isLoaded:!0})}})}else t(this.cl,{isLoaded:!0})}getActiveProductTours(t){H(this.vl)?t([],{isLoaded:!1,error:"Product tours not loaded"}):this.vl.getActiveProductTours(t)}showProductTour(t){var e;(e=this.vl)==null||e.showTourById(t)}previewTour(t){this.vl?this.vl.previewTour(t):this.ai((()=>{var e;this.fl(),(e=this.vl)==null||e.previewTour(t)}))}dismissProductTour(){var t;(t=this.vl)==null||t.dismissTour("user_clicked_skip")}nextStep(){var t;(t=this.vl)==null||t.nextStep()}previousStep(){var t;(t=this.vl)==null||t.previousStep()}clearCache(){var t;this.cl=null,(t=this.Mr)==null||t.unregister($i)}resetTour(t){var e;(e=this.vl)==null||e.resetTour(t)}resetAllTours(){var t;(t=this.vl)==null||t.resetAllTours()}cancelPendingTour(t){var e;(e=this.vl)==null||e.cancelPendingTour(t)}}},ks),Um={siteApps:class{constructor(t){this.pl=0,this._instance=t,this.gl=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ml(t,e){if(e){var n=this.globalsForEvent(e);this.gl.push(n),this.gl.length>1e3&&(this.gl=this.gl.slice(10))}}get siteAppLoaders(){var t;return(t=B._POSTHOG_REMOTE_CONFIG)==null||(t=t[this._instance.config.token])==null?void 0:t.siteApps}initialize(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.ml.bind(this));this.yl=()=>{t(),this.gl=[],this.yl=void 0}}}globalsForEvent(t){var e,n,i,r,s,o,a;if(!t)throw new Error("Event payload is required");var l={},u=this._instance.get_property("$groups")||[],c=this._instance.get_property("$stored_group_properties")||{};for(var d of Object.entries(c)){var f=d[0];l[f]={id:u[f],type:f,properties:d[1]}}var h=t.$set_once,p=t.$set;return{event:k({},sd(t,Fm),{properties:k({},t.properties,p?{$set:k({},(e=(n=t.properties)==null?void 0:n.$set)!==null&&e!==void 0?e:{},p)}:{},h?{$set_once:k({},(i=(r=t.properties)==null?void 0:r.$set_once)!==null&&i!==void 0?i:{},h)}:{}),elements_chain:(s=(o=t.properties)==null?void 0:o.$elements_chain)!==null&&s!==void 0?s:"",distinct_id:(a=t.properties)==null?void 0:a.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:l}}bl(t){var e,n=(e=t.tagName)==null?void 0:e.toLowerCase();return n==="style"&&this._instance.config.prepare_external_dependency_stylesheet?this._instance.config.prepare_external_dependency_stylesheet(t)||(bt.error("prepare_external_dependency_stylesheet returned null"),null):n==="script"&&this._instance.config.prepare_external_dependency_script?this._instance.config.prepare_external_dependency_script(t)||(bt.error("prepare_external_dependency_script returned null"),null):t}_l(){var t,e,n,i,r,s,o,a;if(!this._instance.config.prepare_external_dependency_stylesheet&&!this._instance.config.prepare_external_dependency_script)return()=>{};var l=F?.defaultView,u=l==null||(t=l.Node)==null?void 0:t.prototype;if(!l||!u)return()=>{};if(this.pl++,this.wl)return this.kl();var c=[],d=this,f=new WeakSet,h=(m,v,S)=>{if(m!=null&&m[v]){var b=m[v];m[v]=S(b),c.push((()=>{m[v]=b}))}},p=m=>{if(f.has(m))return m;var v=d.bl(m);return v&&f.add(v),v},g=m=>m.map((v=>typeof v=="string"?v:p(v))).filter((v=>!Ve(v)));return h(u,"appendChild",(m=>function(v){var S=p(v);return S?m.call(this,S):v})),h(u,"insertBefore",(m=>function(v,S){var b=p(v);return b?m.call(this,b,S):v})),h(u,"replaceChild",(m=>function(v,S){var b=p(v);return b?m.call(this,b,S):S})),[(e=l.Element)==null?void 0:e.prototype,(n=l.Document)==null?void 0:n.prototype,(i=l.DocumentFragment)==null?void 0:i.prototype].forEach((m=>{h(m,"append",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"prepend",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))}))})),[(r=l.Element)==null?void 0:r.prototype,(s=l.CharacterData)==null?void 0:s.prototype,(o=l.DocumentType)==null?void 0:o.prototype].forEach((m=>{h(m,"before",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"after",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"replaceWith",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];var x=g(b);return b.length&&!x.length?void 0:v.apply(this,x)}))})),h((a=l.Element)==null?void 0:a.prototype,"insertAdjacentElement",(m=>function(v,S){var b=p(S);return b?m.call(this,v,b):null})),this.wl=()=>{c.forEach((m=>m())),this.wl=void 0},this.kl()}kl(){var t=!1;return()=>{var e;t||(t=!0,this.pl--,this.pl===0&&((e=this.wl)==null||e.call(this)))}}xl(t,e){e===void 0&&(e=!0);var n=this._l();try{var i=t(n);return e&&n(),i}catch(r){throw n(),r}}setupSiteApp(t){var e=this.apps[t.id],n=()=>{var o;!e.errored&&this.gl.length&&(bt.info("Processing "+this.gl.length+" events for site app with id "+t.id),this.gl.forEach((a=>this.xl((()=>e.processEvent==null?void 0:e.processEvent(a))))),e.processedBuffer=!0),Object.values(this.apps).every((a=>a.processedBuffer||a.errored))&&((o=this.yl)==null||o.call(this))},i=!1,r=o=>{e.errored=!o,e.loaded=!0,bt.info("Site app with id "+t.id+" "+(o?"loaded":"errored")),i&&n()};try{var s=this.xl((o=>t.init({posthog:this._instance,callback(a){o(),r(a)}})),!1).processEvent;s&&(e.processEvent=s),i=!0}catch(o){bt.error(lu+t.id,o),r(!1)}if(i&&e.loaded)try{n()}catch(o){bt.error("Error while processing buffered events PostHog app with config id "+t.id,o),e.errored=!0}}Sl(){var t=this.siteAppLoaders||[];for(var e of t)this.apps[e.id]={id:e.id,loaded:!1,errored:!1,processedBuffer:!1};for(var n of t)this.setupSiteApp(n)}Cl(t){var e=this;if(Object.keys(this.apps).length!==0){var n=this.globalsForEvent(t),i=function(s){try{e.xl((()=>s.processEvent==null?void 0:s.processEvent(n)))}catch(o){bt.error("Error while processing event "+t.event+" for site app "+s.id,o)}};for(var r of Object.values(this.apps))i(r)}}onRemoteConfig(t){var e,n,i,r=this;if((e=this.siteAppLoaders)!=null&&e.length)return this.isEnabled?(this.Sl(),void this._instance.on("eventCaptured",(l=>this.Cl(l)))):void bt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((n=this.yl)==null||n.call(this),t.ok){var s=t.config;if((i=s.siteApps)!=null&&i.length)if(this.isEnabled){var o=function(){var l,u=a.id,c=a.url;B["__$$ph_site_app_"+u]=r._instance,(l=B.__PosthogExtensions__)==null||l.loadSiteApp==null||l.loadSiteApp(r._instance,c,(d=>{if(d)return bt.error(lu+u,d)}))};for(var a of s.siteApps)o()}else bt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}}},Hm={tracingHeaders:class{constructor(t){this.Ml=void 0,this.Tl=void 0,this.El=void 0,this.Uo=()=>{var e,n,i=this.Il();i?(C(this.Ml)&&(this.Ml=(e=B.__PosthogExtensions__)==null||(e=e.tracingHeadersPatchFns)==null?void 0:e._patchXHR(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager)),C(this.Tl)&&(this.Tl=(n=B.__PosthogExtensions__)==null||(n=n.tracingHeadersPatchFns)==null?void 0:n._patchFetch(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager))):this.Qo()},this._instance=t}initialize(){this.startIfEnabledOrStop()}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.tracingHeadersPatchFns?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"tracing-headers",(i=>{if(i)return Am.error("failed to load script",i);t()}))}Pl(){var t,e;return(t=(e=this._instance.config.tracing_headers)!==null&&e!==void 0?e:this._instance.config.addTracingHeaders)!==null&&t!==void 0?t:this._instance.config.__add_tracing_headers}Il(){var t=this.Pl();return U(t)?(U(this.El)?this.El.splice(0,this.El.length,...t):this.El=[...t],t.length>0?this.El:void 0):(U(this.El)&&this.El.splice(0),this.El=t||void 0,this.El)}Qo(){var t,e;(t=this.Ml)==null||t.call(this),(e=this.Tl)==null||e.call(this),this.Ml=void 0,this.Tl=void 0}startIfEnabledOrStop(){this.Il()?this.ai(this.Uo):this.Qo()}}},Wm=k({surveys:class{get Ne(){return this._instance.config}constructor(t){this.Rl=void 0,this._surveyManager=null,this.Al=!1,this.Fl=[],this.Ll=null,this.Ol=null,this._instance=t,this._surveyEventReceiver=null}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this.Ne.disable_surveys){if(!t.ok)return Q.warn("Remote config unavailable. Not loading surveys.");var e=t.config.surveys;if(H(e))return Q.warn("Flags not loaded yet. Not loading surveys.");var n=U(e);this.Rl=n?e.length>0:e,Q.info("flags response received, isSurveysEnabled: "+this.Rl),this.loadIfEnabled()}}reset(){try{var t;(t=this._surveyEventReceiver)==null||t.reset(),localStorage.removeItem("lastSeenSurveyDate");for(var e=[],n=0;nlocalStorage.removeItem(r)))}catch{}}loadIfEnabled(){if(!this._surveyManager)if(this.Al)Q.info("Already initializing surveys, skipping...");else if(this.Ne.disable_surveys)Q.info(cu);else if(this.Ne.cookieless_mode&&this._instance.consent.isOptedOut())Q.info("Not loading surveys in cookieless mode without consent.");else{var t=B?.__PosthogExtensions__;if(t){if(!C(this.Rl)||this.Ne.advanced_enable_surveys){var e=this.Rl||this.Ne.advanced_enable_surveys;this.Al=!0;try{var n=t.generateSurveys;if(n)return void this.Dl(n,e);var i=t.loadExternalDependency;if(!i)return void this.$l(al);i(this._instance,"surveys",(r=>{r||!t.generateSurveys?this.$l("Could not load surveys script",r):this.Dl(t.generateSurveys,e)}))}catch(r){throw this.$l("Error initializing surveys",r),r}finally{this.Al=!1}}}else Q.error("PostHog Extensions not found.")}}Dl(t,e){this._surveyManager=t(this._instance,e),this._surveyEventReceiver=new $m(this._instance),Q.info("Surveys loaded successfully"),this.Nl({isLoaded:!0})}$l(t,e){Q.error(t,e),this.Nl({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.Fl.push(t),this._surveyManager&&this.Nl({isLoaded:!0}),()=>{this.Fl=this.Fl.filter((e=>e!==t))}}getSurveys(t,e){if(e===void 0&&(e=!1),this.Ne.disable_surveys)return Q.info(cu),t([]);var n,i=this._instance.get_property(la);if(i&&!e)return t(i,{isLoaded:!0}),void(this.ql()&&this.getSurveys((()=>{}),!0));typeof Promise<"u"&&this.Ll?this.Ll.then((r=>t(r.surveys,r.context))):(typeof Promise<"u"&&(this.Ll=new Promise((r=>{n=r}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this.Ne.token),method:"GET",timestampMode:"query",timeout:this.Ne.surveys_request_timeout_ms,callback:r=>{var s;this.Ll=null;var o=r.statusCode;if(o!==200||!r.json){var a="Surveys API could not be loaded, status: "+o;o!==0?Q.error(a):r.error||Q.warn(a),this.Ol=Date.now();var l={isLoaded:!1,error:a};return t([],l),void(n==null||n({surveys:[],context:l}))}this.Ol=null;var u,c=r.json.surveys||[],d=c.filter((h=>(function(p){return!(!p.start_date||p.end_date)})(h)&&(Of(h)||(function(p){var g;return!((g=p.conditions)==null||(g=g.actions)==null||(g=g.values)==null||!g.length)})(h))));d.length>0&&((u=this._surveyEventReceiver)==null||u.register(d)),(s=this._instance.persistence)==null||s.register({[la]:c,[Yr]:Date.now()});var f={isLoaded:!0};t(c,f),n?.({surveys:c,context:f})}}))}ql(){return this.jl()&&!this.Ll&&!this.Bl()}jl(){var t=this._instance.get_property(Yr);return ke(t)&&Date.now()-t>3e5}Bl(){return ke(this.Ol)&&3e5>Date.now()-this.Ol}markSurveyAsSeen(t,e){var n,i={id:t,current_iteration:(n=e?.iteration)!==null&&n!==void 0?n:null};Df(i);try{localStorage.setItem("lastSeenSurveyDate",new Date().toISOString())}catch{}}Nl(t){for(var e of this.Fl)try{if(!t.isLoaded)return e([],t);this.getSurveys(e)}catch(n){Q.error("Error in survey callback",n)}}getActiveMatchingSurveys(t,e){if(e===void 0&&(e=!1),!H(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,e);Q.warn("init was not called")}Hl(t){var e=null;return this.getSurveys((n=>{var i;e=(i=n.find((r=>r.id===t)))!==null&&i!==void 0?i:null})),e}Ul(t){if(H(this._surveyManager))return{eligible:!1,reason:Er};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyEligibility(e):{eligible:!1,reason:"Survey not found"}}zl(t){if(H(this._surveyManager))return{eligible:!1,reason:Er};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyRenderability(e):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(t){if(H(this._surveyManager))return Q.warn("init was not called"),{visible:!1,disabledReason:Er};var e=this.zl(t);return{visible:e.eligible,disabledReason:e.reason}}canRenderSurveyAsync(t,e){return H(this._surveyManager)?(Q.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:Er})):new Promise((n=>{this.getSurveys((i=>{var r,s=(r=i.find((a=>a.id===t)))!==null&&r!==void 0?r:null;if(s){var o=this.zl(s);n({visible:o.eligible,disabledReason:o.reason})}else n({visible:!1,disabledReason:"Survey not found"})}),e)}))}renderSurvey(t,e,n){var i;if(H(this._surveyManager))Q.warn("init was not called");else{var r=typeof t=="string"?this.Hl(t):t;if(r!=null&&r.id)if(gm.includes(r.type)){var s=F?.querySelector(e);if(s)return(i=r.appearance)!=null&&i.surveyPopupDelaySeconds?(Q.info("Rendering survey "+r.id+" with delay of "+r.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout((()=>{var o,a;Q.info("Rendering survey "+r.id+" with delay of "+((o=r.appearance)==null?void 0:o.surveyPopupDelaySeconds)+" seconds"),(a=this._surveyManager)==null||a.renderSurvey(r,s,n),Q.info("Survey "+r.id+" rendered")}),1e3*r.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(r,s,n);Q.warn("Survey element not found")}else Q.warn("Surveys of type "+r.type+" cannot be rendered in the app");else Q.warn("Survey not found")}}displaySurvey(t,e){var n;if(H(this._surveyManager))Q.warn("init was not called");else{var i=this.Hl(t);if(i){var r=i;if((n=i.appearance)!=null&&n.surveyPopupDelaySeconds&&e.ignoreDelay&&(r=k({},i,{appearance:k({},i.appearance,{surveyPopupDelaySeconds:0})})),e.displayType!==_a.Popover&&e.initialResponses&&Q.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),e.ignoreConditions===!1){var s=this.Ul(i);if(!s.eligible)return void Q.warn("Survey is not eligible to be displayed: ",s.reason)}e.displayType!==_a.Inline?this._surveyManager.handlePopoverSurvey(r,e):this.renderSurvey(r,e.selector,e.properties)}else Q.warn("Survey not found")}}cancelPendingSurvey(t){H(this._surveyManager)?Q.warn("init was not called"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;(t=this._surveyManager)==null||t.handlePageUnload==null||t.handlePageUnload()}}},ks),zm={toolbar:class{constructor(t){this.instance=t}Wl(t){B.ph_toolbar_state=t}Vl(){var t;return(t=B.ph_toolbar_state)!==null&&t!==void 0?t:0}initialize(){return this.maybeLoadToolbar()}maybeLoadToolbar(t,e,n){if(t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),ga(this.instance.config)||!w||!F)return!1;t=t??w.location,n=n??w.history;try{if(!e){try{w.localStorage.setItem("test","test"),w.localStorage.removeItem("test")}catch{return!1}e=w?.localStorage}var i,r=Mm||is(t.hash,"__posthog")||is(t.hash,"state"),s=r?Cc((()=>JSON.parse(atob(decodeURIComponent(r)))))||Cc((()=>JSON.parse(decodeURIComponent(r)))):null;return s&&s.action==="ph_authorize"?((i=s).source="url",i&&Object.keys(i).length>0&&(s.desiredHash?t.hash=s.desiredHash:n?n.replaceState(n.state,"",t.pathname+t.search):t.hash="")):((i=JSON.parse(e.getItem(uu)||"{}")).source="localstorage",delete i.userIntent),!(!i.token||this.instance.config.token!==i.token||(this.loadToolbar(i),0))}catch{return!1}}Zl(t){var e=B.ph_load_toolbar||B.ph_load_editor;!H(e)&&De(e)?e(t,this.instance):du.warn("No toolbar load function found")}loadToolbar(t){var e=!(F==null||!F.getElementById(Qd));if(!w||e)return!1;var n=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,i=k({token:this.instance.config.token},t,{apiURL:this.instance.requestRouter.endpointFor("ui")},n?{instrument:!1}:{});if(w.localStorage.setItem(uu,JSON.stringify(k({},i,{source:void 0}))),this.Vl()===2)this.Zl(i);else if(this.Vl()===0){var r;this.Wl(1),(r=B.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this.instance,"toolbar",(s=>{if(s)return du.error("[Toolbar] Failed to load",s),void this.Wl(0);this.Wl(2),this.Zl(i)})),ve(w,"turbolinks:load",(()=>{this.Wl(0),this.loadToolbar(i)}))}return!0}Gl(t){return this.loadToolbar(t)}maybeLoadEditor(t,e,n){return t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),this.maybeLoadToolbar(t,e,n)}}},qm=k({experiments:Me},ks),Vm={conversations:class{constructor(t){this.Ql=void 0,this._conversationsManager=null,this.Kl=!1,this.Jl=null,this.Yl=!1,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this._instance.config.disable_conversations&&(this.Xl=t.ok,t.ok)){var e=t.config.conversations;H(e)||(gt(e)?this.Ql=e:(this.Ql=e.enabled,this.Jl=e),this.loadIfEnabled())}}reset(){var t;(t=this._conversationsManager)==null||t.reset(),this._conversationsManager=null,this.Ql=void 0,this.Jl=null,this.Xl=void 0,this.Yl=!1}loadIfEnabled(){if(!(this._conversationsManager||this.Kl||this._instance.config.disable_conversations||ga(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=B?.__PosthogExtensions__;if(t&&!C(this.Ql)&&this.Ql)if(this.Jl&&this.Jl.token){this.Kl=!0;try{var e=t.initConversations;if(e)return this.tu(e),void(this.Kl=!1);var n=t.loadExternalDependency;if(!n)return void this.eu(al);n(this._instance,"conversations",(i=>{i||!t.initConversations?this.eu("Could not load conversations script",i):this.tu(t.initConversations),this.Kl=!1}))}catch(i){this.eu("Error initializing conversations",i),this.Kl=!1}}else st.error("Conversations enabled but missing token in remote config.")}}tu(t){if(this.Jl)try{this._conversationsManager=t(this.Jl,this._instance),this.Yl=!1,st.info("Conversations loaded successfully")}catch(e){this.eu("Error completing conversations initialization",e)}else st.error("Cannot complete initialization: remote config is null")}eu(t,e){st.error(t,e),this._conversationsManager=null,this.Kl=!1,this.Yl=!0}show(){this._conversationsManager?this._conversationsManager.show():st.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.Ql===!0&&!Ve(this._conversationsManager)}getUnavailableReason(){return this.isAvailable()?null:this._instance.config.disable_conversations?"disabled_by_config":ga(this._instance.config)?"disabled_for_toolbar":this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut()?"consent_opted_out":this.Xl===!1?"remote_config_failed":C(this.Ql)?this.Xl?"disabled_in_project":"remote_config_pending":this.Ql?H(this.Jl)||!this.Jl.token?"missing_token":B!=null&&B.__PosthogExtensions__?this.Kl?"initializing":this.Yl?"load_failed":"not_loaded":"extensions_unavailable":"disabled_in_project"}isVisible(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.isVisible())!==null&&t!==void 0&&t}sendMessage(t,e,n){var i=this;return se((function*(){return i._conversationsManager?i._conversationsManager.sendMessage(t,e,n):(st.warn(bn),null)}))()}getMessages(t,e){var n=this;return se((function*(){return n._conversationsManager?n._conversationsManager.getMessages(t,e):(st.warn(bn),null)}))()}markAsRead(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.markAsRead(t):(st.warn(bn),null)}))()}getTickets(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.getTickets(t):(st.warn(bn),null)}))()}requestRestoreLink(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.requestRestoreLink(t):(st.warn(bn),null)}))()}restoreFromToken(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.restoreFromToken(t):(st.warn(bn),null)}))()}restoreFromUrlToken(){var t=this;return se((function*(){return t._conversationsManager?t._conversationsManager.restoreFromUrlToken():(st.warn(bn),null)}))()}getCurrentTicketId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getCurrentTicketId())!==null&&t!==void 0?t:null}getWidgetSessionId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getWidgetSessionId())!==null&&t!==void 0?t:null}Xn(){var t;(t=this._conversationsManager)==null||t.setIdentity()}ts(){var t;(t=this._conversationsManager)==null||t.clearIdentity()}}},Gm={logs:class{constructor(t){var e,n=this;this.iu=!1,this.ru=!1,this.rt=pe("[logs]"),this.nu=k({},this.rt,{error(){for(var i=arguments.length,r=new Array(i),s=0;i>s;s++)r[s]=arguments[s];r.some(yu)||n.rt.error(...r)}}),this.tr=[],this.su=[],this.Sa=0,this.au=()=>{var i,r;this.Sa=0,(i=this.ou)==null||i.onReconnect(),(r=this.lu)==null||r.onReconnect()},this._instance=t,this._instance&&(e=this._instance.config.logs)!=null&&e.captureConsoleLogs&&(this.iu=!0),w&&ve(w,"online",this.au)}uu(t,e,n,i){var r,s=(function(o,a){var l,u,c,d,f,h,p,g=(l=o?.flushIntervalMs)!==null&&l!==void 0?l:3e3,m=(u=o?.maxBufferSize)!==null&&u!==void 0?u:100,v=a!=null&&a.consoleCapture?void 0:(c=o?.maxLogsPerInterval)!==null&&c!==void 0?c:1e3,S=C(v)?Math.max(m,2048):Math.max(m,v),b=o?.resourceAttributes;return{serviceName:(d=(f=b?.["service.name"])!==null&&f!==void 0?f:o?.serviceName)!==null&&d!==void 0?d:a?.serviceNameDefault,serviceVersion:(h=b?.["service.version"])!==null&&h!==void 0?h:o?.serviceVersion,environment:(p=b?.["deployment.environment"])!==null&&p!==void 0?p:o?.environment,resourceAttributes:b,beforeSend:o?.beforeSend,flushIntervalMs:g,maxBufferSize:m,maxQueueSize:S,maxBatchRecordsPerPost:100,rateCapWindowMs:g,maxLogsPerInterval:v,backgroundFlushBudgetMs:0,terminationFlushBudgetMs:0}})((r=this._instance)==null||(r=r.config)==null?void 0:r.logs,n);return[new Zp(this.hu(t,e),s,this.nu,(()=>this.du()),(o=>o()),void 0,i),s]}vu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.ou||this.cu!==e){var n;(n=this.ou)==null||n.reset(),this.cu=e;var i=this.uu((()=>this.tr),(r=>{this.tr=r}));this.ou=i[0],this.fu=i[1]}return this.ou}pu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.lu||this.gu!==e){var n;(n=this.lu)==null||n.reset(),this.gu=e;var i=this.uu((()=>this.su),(r=>{this.su=r}),{serviceNameDefault:"posthog-browser-logs",consoleCapture:!0},_u);this.lu=i[0],this.mu=i[1]}return this.lu}initialize(){this.loadIfEnabled()}onRemoteConfig(t){var e;if(t.ok){var n=(e=t.config.logs)==null?void 0:e.captureConsoleLogs;!H(n)&&n&&(this.iu=!0,this.loadIfEnabled())}}reset(){var t,e;this.tr=[],(t=this.ou)==null||t.reset(),this.su=[],(e=this.lu)==null||e.reset(),this.Sa=0}captureLog(t){this.vu().captureLog(t)}he(t){this.pu().captureLog(t)}get logger(){return this.yu||(this.yu={trace:(t,e)=>this.captureLog({body:t,level:"trace",attributes:e}),debug:(t,e)=>this.captureLog({body:t,level:"debug",attributes:e}),info:(t,e)=>this.captureLog({body:t,level:"info",attributes:e}),warn:(t,e)=>this.captureLog({body:t,level:"warn",attributes:e}),error:(t,e)=>this.captureLog({body:t,level:"error",attributes:e}),fatal:(t,e)=>this.captureLog({body:t,level:"fatal",attributes:e})}),this.yu}flushLogs(t){t?this.bu(t):(this.ou&&this.ou.flush().catch((e=>this._u(e))),this.lu&&this.lu.flush().catch((e=>this._u(e))))}_u(t){yu(t)||this.rt.error("PostHog logs flush failed:",t)}loadIfEnabled(){if(this.iu&&!this.ru){var t=B?.__PosthogExtensions__;if(t){var e=t.loadExternalDependency;e?e(this._instance,"logs",(n=>{var i;n||(i=t.logs)==null||!i.initializeLogs?this.rt.error("Could not load logs script",n):(t.logs.initializeLogs(this._instance),this.ru=!0)})):this.rt.error(al)}else this.rt.error("PostHog Extensions not found.")}}hu(t,e){var n=this._instance;return{get isDisabled(){return!1},get optedOut(){return!n.is_capturing()},getPersistedProperty:i=>i===jt.LogsQueue?t():void 0,setPersistedProperty(i,r){var s;i===jt.LogsQueue&&e((s=r)!==null&&s!==void 0?s:[])},Ot:i=>this.Ot(i),getLibraryId:()=>ne.LIB_NAME,getLibraryVersion:()=>ne.LIB_VERSION}}Ot(t){return new Promise((e=>{if(ff(this.Sa,3))e({kind:"fatal",error:Do(void 0,"logs endpoint is unreachable, dropping batch")});else{var n=!1,i=s=>{n||(n=!0,clearTimeout(r),e(s))},r=setTimeout((()=>{this.rt.warn("Logs request timed out before receiving a response"),i({kind:"retry-later",error:Do(void 0,"logs request timed out")})}),9e4);this._instance._send_request({method:"POST",url:this.wu(),data:t,compression:"best-available",batchKey:"logs",fireCallbackOnDrop:!0,callback:s=>{var o=s.statusCode;if(this.ku(o),o>=200&&300>o)i({kind:"ok"});else if(o===413)i({kind:"too-large"});else if(o!==0&&o!==429&&500>o)i({kind:"fatal",error:new Error("logs request failed with status "+o)});else{var a;o===0?(s.error||this.rt.warn("Logs request failed before receiving an HTTP response"),i({kind:"retry-later",error:Do(s.error,"logs request failed before receiving an HTTP response")})):i({kind:"retry-later",error:(a=s.error)!==null&&a!==void 0?a:new Error("logs request failed with status "+o)})}}})}}))}ku(t){(t!==0||this._instance.__loaded)&&(this.Sa=hf(t,this.Sa,3,(()=>this.rt.warn("Log requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped sending logs; will try again when connectivity changes."))))}bu(t){this.tr.length>0&&this.xu(t,this.tr,this.fu,ne.LIB_NAME,(e=>{this.tr=e})),this.su.length>0&&this.xu(t,this.su,this.mu,_u,(e=>{this.su=e}))}xu(t,e,n,i,r){if(e.length!==0){var s=e.map((a=>a.record));r([]);var o=Nd(s,Ld(n,ne.LIB_NAME,ne.LIB_VERSION),i,ne.LIB_VERSION);this._instance._send_request({method:"POST",url:this.wu(),data:o,compression:"best-available",batchKey:"logs",transport:t})}}wu(){return this._instance.requestRouter.endpointFor("api","/i/v1/logs")+"?token="+encodeURIComponent(this._instance.config.token)}du(){var t,e={};if(e.distinctId=this._instance.get_distinct_id(),this._instance.sessionManager){var n=this._instance.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.windowId,r=n.sessionStartTimestamp,s=n.lastActivityTimestamp;e.sessionId=n.sessionId,e.windowId=i,H(r)||(e.sessionStartTimestamp=r),H(s)||(e.lastActivityTimestamp=s)}if(B!=null&&(t=B.location)!=null&&t.href&&(e.currentUrl=this._instance.config.disable_capture_url_hashes?dn(B.location.href):B.location.href),this._instance.featureFlags){var o=this._instance.featureFlags.getFlags();o&&o.length>0&&(e.activeFeatureFlags=o)}return e}}},Km={metrics:class{constructor(t){this.rt=pe("[metrics]"),this._instance=t}initialize(){}vu(){var t,e,n=(t=this._instance)==null||(t=t.config)==null?void 0:t.metrics;return this.ou&&this.cu===n||((e=this.ou)==null||e.reset(),this.cu=n,this.ou=new Xp(this.hu(),(function(i){var r,s,o,a,l,u=i?.resourceAttributes;return{serviceName:(r=u?.["service.name"])!==null&&r!==void 0?r:i?.serviceName,serviceVersion:(s=u?.["service.version"])!==null&&s!==void 0?s:i?.serviceVersion,environment:(o=u?.["deployment.environment"])!==null&&o!==void 0?o:i?.environment,resourceAttributes:u,beforeSend:i?.beforeSend,flushIntervalMs:(a=i?.flushIntervalMs)!==null&&a!==void 0?a:1e4,maxSeriesPerFlush:(l=i?.maxSeriesPerFlush)!==null&&l!==void 0?l:1e3}})(n),this.rt)),this.ou}count(t,e,n){e===void 0&&(e=1),this.vu().count(t,e,n)}gauge(t,e,n){this.vu().gauge(t,e,n)}histogram(t,e,n){this.vu().histogram(t,e,n)}flush(t){if(!this.ou)return Promise.resolve();if(t){var e=this.ou.drainWindow();return e&&this.Jt(e,t),Promise.resolve()}return this.ou.flush().catch((n=>this.rt.error("PostHog metrics flush failed:",n)))}reset(){var t;(t=this.ou)==null||t.reset()}hu(){var t=this._instance,e=this;return{get isDisabled(){return!1},get optedOut(){return!t.is_capturing()},Jt:n=>e.Jt(n),getLibraryId:()=>ne.LIB_NAME,getLibraryVersion:()=>ne.LIB_VERSION}}Jt(t,e){return new Promise((n=>{var i=!1,r=o=>{i||(i=!0,clearTimeout(s),n(o))},s=setTimeout((()=>r({kind:"retry-later",error:new Error("metrics request timed out")})),9e4);this._instance._send_request(k({method:"POST",url:this.Su(),data:t,compression:"best-available",batchKey:"metrics"},e&&{transport:e},{fireCallbackOnDrop:!0,callback(o){var a=o.statusCode;if(a>=200&&300>a)r({kind:"ok"});else if(a===413)r({kind:"too-large"});else if(a!==0&&a!==429&&500>a)r({kind:"fatal",error:new Error("metrics request failed with status "+a)});else{var l;r({kind:"retry-later",error:(l=o.error)!==null&&l!==void 0?l:new Error("metrics request failed with status "+a)})}}}))}))}Su(){return this._instance.requestRouter.endpointFor("api","/i/v1/metrics")+"?token="+encodeURIComponent(this._instance.config.token)}}},Ym=k({},ks,Om,Bm,Dm,jm,Um,Wm,Hm,zm,qm,Vm,Gm,Km);Je.__defaultExtensionClasses=k({},Ym);(function(){ne.SDK_DIST_CHANNEL="npm";var t=Hi[Vn]=new Je;return(function(){function e(){e.done||(e.done=!0,Uf=!1,ie(Hi,(function(n){n._dom_loaded()})))}F!=null&&F.addEventListener?F.readyState==="complete"?e():ve(F,"DOMContentLoaded",e,{capture:!1}):w&&A.error("Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized")})(),t})();const Jm=["a[href]","button:not([disabled])","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])"].join(",");let ht=null,ka=null,Wf="";const Ca=new Map;function zf(t){return[...t.querySelectorAll(Jm)].filter(e=>!e.hidden&&e.getAttribute("aria-hidden")!=="true"&&e.getClientRects().length>0)}function Zm(t){for(const e of document.body.children)e===t||e.tagName==="SCRIPT"||(Ca.set(e,{inert:e.inert,ariaHidden:e.getAttribute("aria-hidden")}),e.inert=!0,e.setAttribute("aria-hidden","true"))}function Xm(){for(const[t,e]of Ca)t.inert=e.inert,e.ariaHidden===null?t.removeAttribute("aria-hidden"):t.setAttribute("aria-hidden",e.ariaHidden);Ca.clear()}function qf(t){return t?.dataset.modalDismissible!=="false"&&t?.getAttribute("aria-busy")!=="true"}function Ge(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n)return!1;ht&&ht!==n&&Ke(ht,{restoreFocus:!1,force:!0}),ka=e.trigger||document.activeElement,ht=n,Wf=document.body.style.overflow,Zm(n),document.body.style.overflow="hidden",n.classList.add("open"),n.setAttribute("aria-hidden","false");const i=n.querySelector(".modal-content");i&&(i.style.transform="scale(1) translateY(0)");const r=()=>{if(ht!==n)return;((e.initialFocus?n.querySelector(e.initialFocus):n.querySelector("[data-modal-initial-focus]"))||zf(n)[0]||n.querySelector(".modal-content")||n).focus({preventScroll:!0})};return requestAnimationFrame(r),setTimeout(r,260),!0}function Ke(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n||!e.force&&!qf(n))return!1;n.classList.remove("open"),n.setAttribute("aria-hidden","true"),Xm(),document.body.style.overflow=Wf,ht=null;const i=ka;return ka=null,e.restoreFocus!==!1&&i?.isConnected&&i.focus({preventScroll:!0}),!0}function wu(t,e,n="Operation in progress"){const i=typeof t=="string"?document.getElementById(t):t;i&&(i.dataset.modalDismissible=e?"false":"true",i.setAttribute("aria-busy",String(!!e)),e?i.setAttribute("aria-label",n):i.removeAttribute("aria-label"))}function Qm(t){if(!qf(t))return;const e=t.dataset.modalCloseHandler;e&&typeof window[e]=="function"?window[e]():Ke(t)}document.addEventListener("keydown",t=>{if(!ht)return;if(t.key==="Escape"){t.preventDefault(),t.stopImmediatePropagation(),Qm(ht);return}if(t.key!=="Tab"){t.stopPropagation();return}const e=zf(ht);if(!e.length){t.preventDefault(),(ht.querySelector(".modal-content")||ht).focus();return}const n=e[0],i=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),n.focus())},!0);function ev(){document.querySelectorAll(".modal-overlay").forEach(t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-hidden",t.classList.contains("open")?"false":"true");const e=t.querySelector(".modal-content");e&&!e.hasAttribute("tabindex")&&(e.tabIndex=-1);const n=t.querySelector("h1, h2, h3");n&&(n.id||(n.id=`${t.id}-title`),t.setAttribute("aria-labelledby",n.id)),t.querySelectorAll(".modal-close").forEach(i=>{i.getAttribute("aria-label")||i.setAttribute("aria-label","Close dialog")})})}const gl=Object.freeze({free:"Free",professional:"Pro",power:"Power"}),tv=Object.freeze({free:2,professional:50,power:2e3}),nv="(contact us)",iv=Object.freeze({free:Object.freeze(["2 generations/month","Gemini model only","Code Review"]),professional:Object.freeze(["50 generations/month","All models","Code Regeneration","Code Review"]),power:Object.freeze(["2000 generations/month","All models","Code Regeneration","Bring your own key (BYOK)","Code Review","All models + early access",`API & MCP access ${nv}`])}),Vf="CodeFile",Gf="GeneratedCode",rv={CustomAction:"A",CustomWidget:"W",CustomFunction:"F",CustomClass:"C",CodeFile:"C"};function an(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function Aa(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function sv(t={},e=0){const n=Aa(t.artifactType||t.type||Vf),i=Aa(t.artifactName||t.name||t.fileName||`${Gf}-${e+1}`);return`${n||"artifact"}-${i||e+1}`}function Kf(t={},e=0){const n=an(t),i=n.artifactType||n.type||Vf,r=n.artifactName||n.name||Gf;let s=n.fileName||r;return s.endsWith(".dart")||(s+=".dart"),{id:Aa(n.id)||sv({...n,artifactType:i,artifactName:r,fileName:s},e),artifactType:i,artifactName:r,fileName:s,deployPath:n.deployPath||"",description:n.description||"",code:n.code||n.content||"",dependencies:Yf(n.dependencies),imports:Array.isArray(n.imports)?n.imports:[],publicApi:Array.isArray(n.publicApi)?n.publicApi:[],relationships:Jf(n.relationships),deployStatus:n.deployStatus||"pending",review:n.review||null,metadata:an(n.metadata),codeType:n.codeType||rv[i]||"O"}}function Yf(t){return t?Array.isArray(t)?t.map(e=>{if(typeof e=="string")return{name:e,version:null,inferred:!1};const n=an(e),i=n.name||n.package;return i?{name:i,version:n.version||null,versionRequired:!!(n.versionRequired||n.required),inferred:!!n.inferred,...n.reason?{reason:n.reason}:{}}:null}).filter(Boolean):Object.entries(an(t)).map(([e,n])=>({name:e,version:n||null,inferred:!1})):[]}function Jf(t){return t?(Array.isArray(t)?t:[t]).map(e=>{const n=an(e);return!n.from&&!n.to?null:{from:n.from||null,to:n.to||null,type:n.type||"uses",description:n.description||""}}).filter(Boolean):[]}function Pa(t){if(typeof t!="string")return null;const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{const n=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(!n)return null;try{return JSON.parse(n[1].trim())}catch{return null}}}function Xi(t,e={}){const n=[],i=typeof t=="string"?Pa(t):t,s=an(i||{});!i&&typeof t=="string"&&n.push("Structured bundle parse failed; using legacy single-artifact fallback.");const o=Array.isArray(s.artifacts)?s.artifacts:[{artifactType:s.artifactType||e.artifactType,artifactName:s.artifactName||e.artifactName,fileName:s.fileName||e.fileName,description:s.description,code:s.code||e.code||(typeof t=="string"?t:""),dependencies:s.dependencies||e.dependencies,relationships:s.relationships||e.relationships}];o.forEach((d,f)=>{!d?.artifactType&&!d?.type&&n.push(`Artifact ${f+1} has no artifactType; it will deploy as a standalone code file under lib/custom_code/ root.`)});const a=o.map((d,f)=>Kf(d,f)),l=new Map(o.map((d,f)=>[an(d).id,a[f]?.id]).filter(([d,f])=>d&&f)),u=d=>l.get(d)||d,c=Jf(s.relationships||e.relationships).map(d=>({...d,from:d.from?u(d.from):d.from,to:d.to?u(d.to):d.to}));return{schemaVersion:s.schemaVersion||e.schemaVersion||null,id:s.id||e.id||"bundle-current",title:s.title||s.name||e.title||"Generated artifact bundle",description:s.description||e.description||"",artifacts:a,dependencies:Yf(s.dependencies||e.dependencies),relationships:c,deployOrder:Array.isArray(s.deployOrder)?s.deployOrder.map(u):a.map(d=>d.id),warnings:[...n,...Array.isArray(s.warnings)?s.warnings:[]],metadata:an(s.metadata)}}function si(t){return Xi(t).artifacts[0]||Kf()}function Yt(t){if(typeof t!="string")return t??"";const e=t.trim();if(!e)return"";try{return JSON.parse(e)}catch{return t}}function oi(t){return JSON.stringify(t,null,2)}function ov(t){return oi({task:"architect",userRequest:String(t??"")})}function av(t){const e=Yt(t);return e&&typeof e=="object"&&typeof e.task=="string"?oi(e):oi({task:"generate_bundle",bundleSpec:e})}function lv(t){return oi({task:"review_bundle",generatedBundle:Yt(t),outputRequirements:{bundleReview:["status","score","summary","manualActions","findings"],scoreRange:[0,100],eachArtifact:["id","review.status","review.findings"],manualActions:{definition:"Setup the developer must perform by hand in the FlutterFlow editor that FlutterFlow will NOT do for them.",exclude:["creating the Custom Action, Widget or Code File itself - deploying the code creates it","declaring parameters or return values FlutterFlow derives from the function signature","anything that resolves as a side effect of using the action or widget in the editor","generic advice such as testing, reviewing or rebuilding the app"],preferEmpty:"Return an empty array when nothing qualifies - an empty list is the expected result for most bundles."}}})}function ml(t,e=null){const n={stage:t};return e!=null&&(n.bundle=Yt(e)),n}function cv({bundleSpec:t,artifactBundle:e,bundleReview:n,artifactId:i,userFeedback:r}){return oi({task:"regenerate_artifact",artifactId:i,bundleSpec:Yt(t),artifactBundle:Yt(e),bundleReview:Yt(n),userFeedback:String(r)})}function Zf({bundleSpec:t,artifactBundle:e,bundleReview:n,userFeedback:i}){return oi({task:"regenerate_bundle",bundleSpec:Yt(t),artifactBundle:Yt(e),bundleReview:Yt(n),userFeedback:String(i??"")})}const bu={csam:"child-safety content",dangerous:"dangerous content",harassment:"harassment",hate_speech:"hate speech",maliciousUrls:"a potentially malicious URL",malicious_uris:"a potentially malicious URL",pi_and_jailbreak:"prompt-injection or jailbreak instructions",promptInjection:"prompt-injection or jailbreak instructions",rai:"restricted content",sdp:"sensitive personal data",sexually_explicit:"sexually explicit content",virus_scan:"potentially malicious file content"},uv=["sanitizationResult","modelArmor","modelArmorResult","data","result","error"];function et(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function dv(t){return et(t)?typeof t.filterMatchState=="string"||typeof t.invocationResult=="string"||Array.isArray(t.matchedFilters)||et(t.filterSummary)||et(t.filterResults):!1}function Xf(t,e=0){if(!et(t)||e>3)return null;if(dv(t))return t;for(const n of uv){const i=t[n];if(et(i)){const r=Xf(i,e+1);if(r)return r}}return null}function ls(t){return Array.isArray(t)?t.some(ls):et(t)?t.matched===!0||t.matchState==="MATCH_FOUND"?!0:Object.values(t).some(ls):!1}function Fa(t){return Array.isArray(t)?t.some(Fa):et(t)?typeof t.executionState=="string"&&t.executionState!=="EXECUTION_SUCCESS"?!0:Object.values(t).some(Fa):!1}function Qf(t){return{csamFilterFilterResult:"csam",maliciousUriFilterResult:"malicious_uris",piAndJailbreakFilterResult:"pi_and_jailbreak",raiFilterResult:"rai",sdpFilterResult:"sdp",virusScanFilterResult:"virus_scan"}[t]||t}function fv(t,e){if(et(t))for(const[n,i]of Object.entries(t)){if(!et(i))continue;const r=et(i.categories)?i.categories:{},s=Object.entries(r).filter(([,o])=>et(o)&&o.matched===!0).map(([o])=>o);s.length>0?s.forEach(o=>e.add(o)):i.matched===!0&&e.add(Qf(n))}}function hv(t,e){if(!t)return;const n=Array.isArray(t)?t.flatMap(i=>et(i)?Object.entries(i):[]):Object.entries(t);for(const[i,r]of n){if(!ls(r))continue;const s=Qf(i),o=r?.raiFilterResult?.raiFilterTypeResults||(s==="rai"?r?.raiFilterTypeResults:null),a=et(o)?Object.entries(o).filter(([,l])=>ls(l)).map(([l])=>l):[];a.length>0?a.forEach(l=>e.add(l)):e.add(s)}}function pv(t){return bu[t]?bu[t]:String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase()}function Eu(t){return t.length<=1?t[0]||"content that did not pass":t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(", ")}, and ${t.at(-1)}`}function gv(t){const e=Xf(t);if(!e)return null;const n=new Set(Array.isArray(e.matchedFilters)?e.matchedFilters:[]);fv(e.filterSummary,n),hv(e.filterResults,n);const i=e.blocked===!0||e.filterMatchState==="MATCH_FOUND"||n.size>0,r=e.invocationResult||null,s=Fa(e.filterSummary||e.filterResults);return!i&&!s&&!["PARTIAL","FAILURE"].includes(r)?null:{kind:i?"blocked":"unavailable",invocationResult:r,matchedFilters:[...n]}}function mv(t,e){const n=gv(t);if(!n)return null;const i=[...new Set(n.matchedFilters.map(pv))],r=n.kind==="blocked",s=new Error(r?`Safety screening blocked this pipeline step for ${Eu(i)}.`:"Safety screening could not be completed. Please try again.");return s.name="ModelArmorError",s.code=r?"MODEL_ARMOR_BLOCKED":"MODEL_ARMOR_UNAVAILABLE",s.isModelArmor=!0,s.pipelineStep=e,s.userTitle=r?"Request blocked for safety":"Safety check unavailable",s.userMessage=r?`The safety check detected ${Eu(i)}. Edit your request to remove or rephrase the flagged content, then run the pipeline again.`:"The safety service did not finish all of its checks. Please wait a moment and run the pipeline again.",s.retryExplanation=r?"Trying another model would not change this safety decision.":"A fallback model was not attempted because safety screening must complete first.",s.matchedFilters=n.matchedFilters,s}function vv(t){return String(t||"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"")}function Su(t){const e=/^(import|export|part|library|class|enum|extension|typedef|mixin|abstract|const|final|var|late)\b/,n=[];for(const i of vv(t).split(` +`)){if(!/^[A-Za-z_$]/.test(i)||e.test(i))continue;const r=i.match(/^[\w$<>,?\s[\]]+?\s([a-zA-Z_$][\w$]*)\s*\(/);r&&n.push(r[1])}return n}function vl(t,e){const n=t.replace(/\.dart$/,"");if(e==="W")return n.replace(/(^|_)(\w)/g,(i,r,s)=>s.toUpperCase());if(e==="A"){const i=n.replace(/(^|_)(\w)/g,(r,s,o)=>o.toUpperCase());return i.charAt(0).toLowerCase()+i.slice(1)}return e==="F"?"CustomFunctions":e==="C"?t.endsWith(".dart")?t:`${t}.dart`:n}async function xu(t){const e=new TextEncoder().encode(String(t||"")),n=await globalThis.crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n),i=>i.toString(16).padStart(2,"0")).join("")}async function _v(t,e=new Map){const n={},i=new Set;for(const[o,a]of t.entries()){if(a.type==="D"||a.type==="O")continue;const l=vl(o,a.type),u={old_identifier_name:l,new_identifier_name:l,type:a.type,is_deleted:!1,current_checksum:await xu(a.content)},c=e.get(a.path);if(c!==void 0&&(u.original_checksum=await xu(c)),n[o]=u,a.type==="F"){const d=Su(a.content);(d.length>0?d:[a.functionName].filter(Boolean)).forEach(h=>i.add(h))}}const r=new Set(Su(e.get("lib/flutter_flow/custom_functions.dart")||"")),s={functions_to_rename:[],functions_to_delete:[],functions_to_add:Array.from(i).filter(o=>!r.has(o))};return{fileMapContents:JSON.stringify(n),functionsMapContents:JSON.stringify(s)}}const yv=new Set(["CustomWidget","CustomAction","CustomFunction","CustomClass","CodeFile"]),Iu={CustomWidget:"custom_code/widgets/",CustomAction:"custom_code/actions/",CustomFunction:"flutter_flow/custom_functions.dart",CustomClass:"custom_code/",CodeFile:"custom_code/"},wv=new Set(["void","dynamic","String","int","double","num","bool","Color","DateTime","DateTimeRange","LatLng","FFPlace","FFUploadedFile","DocumentReference","List"]),bv=["Struct","Record"],Ev=[{id:"required-public-param",severity:"error",message:"CustomWidget constructor uses `required` on a parameter FlutterFlow can leave unset. FlutterFlow omits unset Define Parameters fields from the constructor call, so the widget will not compile when placed. Make the parameter optional and nullable (`this.value` with `final double? value`), or give it a constructor default (`this.value = 0.0`).",detect:t=>jo(t).some(e=>/\brequired\s+this\.\w+/.test(e)),pos:"class W extends StatefulWidget { const W({required this.value}); final double value; }",neg:`class _P { const _P({required this.t}); final double t; } +class W extends StatefulWidget { const W({this.value}); final double? value; }`},{id:"non-nullable-public-field",severity:"error",message:"CustomWidget declares a non-nullable field with no constructor default. FlutterFlow omits unset Define Parameters fields, so the emitted call cannot supply it. Make the field nullable (`final double? value`) or give the parameter a default (`this.value = 0.0`).",detect:t=>jo(t).some(e=>{const n=/^\s*final\s+(?:double|int|String|bool|Color|num)\s+(\w+)\s*;/gm;let i;for(;(i=n.exec(e))!==null;){const r=i[1];if(!(new RegExp(`this\\.${r}\\s*=(?!=)`).test(e)||new RegExp(`[:,]\\s*${r}\\s*=(?!=)`).test(e)))return!0}return!1}),pos:`class W extends StatefulWidget { + const W({required this.value}); + final double value; +}`,neg:`class _P { + const _P({required this.t}); + final double t; +} +class W extends StatefulWidget { + const W({this.value = 1.0}); + final double value; +}`},{id:"asset-without-anchor",severity:"warning",message:'CustomWidget calls Image.asset with a path arriving as a String parameter. An asset reaches the build only when a FlutterFlow widget NODE references it - a filename passed as a parameter does not count, so the image renders as a broken-image icon on device. "Download Unused Project Assets" does not fix it (FlutterFlow issues 522, 2271, 3799). Keep something in the UI referencing the file, or load it over the network instead.',detect:t=>/Image\.asset\s*\(/.test(t)&&/final\s+String\??\s+\w*[Pp]ath\b/.test(t),pos:`class W extends StatefulWidget { final String? imagePath; } +var x = Image.asset(widget.imagePath);`,neg:`class W extends StatefulWidget { final String? imagePath; } +var x = Image.network(widget.imagePath);`},{id:"unsupported-param-type",severity:"error",message:"CustomWidget exposes a Flutter data type FlutterFlow cannot express as a Define Parameter: TextStyle, BoxShadow, FontWeight, FontStyle, TextDirection, TextAlign, EdgeInsets, Offset, Alignment/AlignmentGeometry, Border, BorderRadius, BoxDecoration, BoxConstraints, BorderSide, Gradient, or ThemeData. FlutterFlow's supported data types (docs.flutterflow.io/resources/data-representation/data-types) are only int, double, bool, string, Color, Image, DateTime, Json, LatLng, and the FF objects, so this parameter cannot be configured in the editor and the widget will not place or compile. Expose primitives instead (color, fontSize as double?, fontWeight via a custom enum, doubles for spacing).",detect:t=>jo(t).some(e=>/final\s+(TextStyle|BoxShadow|FontWeight|FontStyle|TextDirection|TextAlign|EdgeInsets|Offset|Alignment(?:Geometry)?|Border(?:Radius|Side)?|BoxDecoration|BoxConstraints|Gradient|LinearGradient|RadialGradient|ThemeData)\??\s+\w+\s*;/.test(e)),pos:`class W extends StatefulWidget { + const W({this.textStyle}); + final TextStyle? textStyle; + @override _S createState() => _S(); +} +class _S extends State { @override Widget build(BuildContext c) => const SizedBox(); }`,neg:`class W extends StatefulWidget { + const W({this.width}); + final double? width; + @override _S createState() => _S(); +} +class _S extends State { @override Widget build(BuildContext c) => Padding(padding: const EdgeInsets.all(8), child: const SizedBox()); }`}];function St(t,e,n){return{artifactId:t.id,artifactName:t.artifactName,artifactType:t.artifactType,severity:e,message:n}}function Qi(t){let e="",n=0;for(;n"&&(n--,n===0))return{inner:t.slice(e+1,i),end:i+1};return null}function xv(t,e){const n=new RegExp(`class\\s+${e}\\b[^{]*\\{`).exec(t);if(!n)return null;let i=0;for(let r=n.index+n[0].length-1;rIv(t).usable);function Cv(t=""){const e=Qi(t);return kv.filter(n=>n.detect(e)).map(({id:n,severity:i,message:r})=>({id:n,severity:i,message:r}))}function Av(t){const e=[],n=t.matchAll(/\bFuture\b/g);for(const i of n){let r=i.index+6,s=null;const o=r;for(;ro;if(t[r]==="<"){const u=Sv(t,r);if(!u||(s=u.inner.replace(/\s+/g," ").trim(),r=u.end,!/\s/.test(t[r]||"")))continue;for(;rku(o.functionName)===i);if(r)return r;const s=o=>!o.functionName.startsWith("_");return n.find(s)||n[0]}function Cs(t=""){return Array.from(Qi(t).matchAll(/\b(?:class|enum)\s+([A-Za-z_]\w*)/g),e=>e[1])}function Pv(t="",e=""){return _l(t,e)?.returnType||null}function Cu(t){return String(t||"").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function Fv(t,e){const n=Cs(e);if(n.length===0)return null;const r=String(t||"").split("/").pop().replace(/\.dart$/,"");if(n.some(l=>Cu(l)===r)||n.length>1)return null;const[o]=n,a=`${Cu(o)}.dart`;return`File name "${t}" does not match declared class "${o}". FlutterFlow accepts this, but naming the file "${a}" keeps the Code File recognisable in the editor.`}function yl(t){return String(t||"").replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}function Rv(t,e,n=""){const i=_l(e,n)?.functionName;if(!i)return null;const r=String(t||"").split("/").pop(),s=vl(r,"A");if(s===i)return null;const o=`${yl(i)}.dart`;return`File name "${r}" does not match Action "${i}". FlutterFlow derives the action from the file name, so it looks for "${s}" and reports Action "${s}" declaration not found. Rename the file to "${o}" - FlutterFlow puts an underscore before every capital - or rename the function to "${s}".`}function Tv(t="",e=""){return _l(t,e)!==null}function $v(t,e=new Set){return(t?.match(/[A-Za-z_]\w*/g)||[]).filter(i=>wv.has(i)?!1:!bv.some(s=>i.endsWith(s))||e.has(i))}function Mv(t,{functionName:e="",declaredTypes:n=new Set}={}){const i=Pv(t,e),r=$v(i,n);if(r.length===0)return null;const[s]=r;let o;return n.has(s)?o=`uses Code File type "${s}", which FlutterFlow cannot process as an Action Return Value`:i===s?o="is not a FlutterFlow Action Return Value":o=`uses type "${s}", which is not a FlutterFlow Action Return Value`,`CustomAction return type "${i}" ${o}. Return JSON (Future) or an existing FlutterFlow Data Type (*Struct) instead.`}function Lv(t,e={}){const n=[],i=t.fileName||"",r=t.code||"";if(yv.has(t.artifactType)||n.push(St(t,"error",`Unsupported artifact type "${t.artifactType}".`)),i.endsWith(".dart")||n.push(St(t,"error","FlutterFlow custom code artifacts must use .dart files.")),!r.trim())return n.push(St(t,"warning","Generated artifact has no Dart code yet.")),n;if(t.artifactType==="CustomWidget"){/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)||n.push(St(t,"warning","CustomWidget code should declare a widget class extending StatelessWidget or StatefulWidget."));for(const s of Cv(r))n.push(St(t,s.severity,s.message))}if(t.artifactType==="CustomAction"&&!Tv(r,t.artifactName)&&n.push(St(t,"warning","CustomAction code should expose an async Future function callable from FlutterFlow.")),t.artifactType==="CustomAction"){const s=e.declaredTypes||new Set(Cs(r)),o=Mv(r,{functionName:t.artifactName,declaredTypes:s});o&&n.push(St(t,"error",o));const a=Rv(i,r,t.artifactName);a&&n.push(St(t,"error",a))}if(t.artifactType==="CustomFunction"&&/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)&&n.push(St(t,"warning","CustomFunction should be a callable function, not a widget class.")),t.artifactType==="CustomClass"||t.artifactType==="CodeFile"){const s=Fv(i,r);s&&n.push(St(t,"info",s))}return n}function Nv(t){const e=Array.isArray(t?.artifacts)?t.artifacts:[],n=new Set(e.flatMap(s=>Cs(s.code||""))),i=e.flatMap(s=>Lv(s,{declaredTypes:n})),r=e.map(s=>({artifactId:s.id,fileName:s.fileName,pathHint:Iu[s.artifactType]||Iu.CodeFile}));return{valid:i.every(s=>s.severity!=="error"),findings:i,deployHints:r}}const Au="// DO NOT REMOVE OR MODIFY THE CODE ABOVE!";function Pu(t){return(/^\s*import\s+['"]([^'"]+)['"]/.exec(t)||[])[1]||null}function Ov(t=""){const e=t.indexOf(Au);return e===-1?t:t.slice(e+Au.length).replace(/^\s*\n/,"")}const Bv=/^\s*import\s+['"][^'"]+['"]\s*;\s*(?:\/\/.*)?$/;function Dv(t="",e=""){const n=Ov(t),i=new Set((e.match(/^\s*import .*$/gm)||[]).map(Pu).filter(Boolean)),r=n.split(` +`).filter(s=>{const o=Pu(s);return o===null||!i.has(o)?!0:!Bv.test(s)}).join(` +`).replace(/^\s*\/\/ Automatic FlutterFlow imports\s*$/m,"").replace(/^\s*\n+/,"");return e+r}const jv=new Set(["flutter","flutter_test","flutter_driver","flutter_localizations"]);function eh(t){let e="",n=0;for(;n{const i=n.name||n.package;if(!i||i==="flutter")return e;const r=n.versionRequired||n.required;return e[i]=r&&n.version||"",e},{})}function qv(t){const e=new Map,n=new Map,i=[];for(const r of t)e.has(r.fileName)?i.push(`Duplicate deploy file name "${r.fileName}" for artifacts "${e.get(r.fileName)}" and "${r.artifactId}".`):e.set(r.fileName,r.artifactId),n.has(r.path)?i.push(`Duplicate deploy path "${r.path}" for artifacts "${n.get(r.path)}" and "${r.artifactId}".`):n.set(r.path,r.artifactId);return i}function Vv(t,e={}){const n=Array.isArray(t?.artifacts)?t.artifacts:[],r=(e.selectedArtifactIds||t?.deployOrder||n.map(h=>h.id)).map(h=>n.find(p=>p.id===h)).filter(Boolean),s=[...t?.warnings||[]];let o=[];r.forEach(h=>{const p=zv(h),g=h.fixedCode||h.code||"",m=h.codeType||Hv[h.artifactType]||Ze.OTHER;g.trim()||s.push(`${h.artifactName||h.id} has no generated code.`),o.push({artifactId:h.id,artifactName:h.artifactName,artifactType:h.artifactType,fileName:p,content:g,type:m,path:h.deployPath||Wv(p,m),deployPath:h.deployPath||"",deployMode:"customCodeSync"})});const a="lib/flutter_flow/custom_functions.dart",l=o.map((h,p)=>({entry:h,index:p})).filter(({entry:h})=>h.type===Ze.FUNCTION&&h.path===a);if(l.length>1){const h=l[0],p={...h.entry,artifactId:l.map(({entry:m})=>m.artifactId).join("+"),artifactName:h.entry.artifactName,content:l.map(({entry:m})=>`// ${m.artifactId} +${m.content}`).join(` + +`)},g=new Set(l.slice(1).map(({index:m})=>m));o=o.filter((m,v)=>!g.has(v)),o[h.index]=p}const u={...Fu(t?.dependencies),...r.reduce((h,p)=>({...h,...Fu(p.dependencies)}),{})},c={};r.forEach(h=>{wl(h.code||"").forEach(p=>{p in u||(c[p]="")})});const d={...c,...u},f=qv(o);return{bundleId:t?.id||"bundle-current",title:t?.title||"Generated artifact bundle",fileEntries:o,dependencies:d,relationships:t?.relationships||[],warnings:s,errors:f}}function Gv(t){return String(t||"").match(/\bclass\s+([A-Z][A-Za-z0-9_]*)\b/)?.[1]}function Kv(t){return String(t||"").split("/").pop().replace(/\.dart$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}function Yv(t,e){const i=[Kv(t),Gv(e.content),e.artifactName].find(r=>/^[A-Z][A-Za-z0-9_]*$/.test(String(r||"")));if(!i)throw new Error(`Cannot derive a FlutterFlow custom class name for ${t}.`);return i}function Jv(t,e=new Map){const n=[];for(const[i,r]of t.entries())r.type!=="C"||e.has(r.path)||n.push({artifactId:r.artifactId||i,className:Yv(i,r),content:r.content,fileName:i,path:r.path});return n}function Zv(t,e){const n=new Set(e.map(i=>i.path));return new Map(Array.from(t.entries()).filter(([,i])=>!n.has(i.path)))}const Ru={pass:0,warning:1,fail:2},Xv=["manualActions"];function rt(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function qt(...t){for(const e of t){if(typeof e=="string"&&e.trim())return e.trim();if(Array.isArray(e)&&e.length>0){const n=e.filter(i=>typeof i=="string").join(` +`);if(n)return n}}return""}function It(t){return t==null?[]:Array.isArray(t)?t:[t]}function Qv(t){const e=rt(t).value??t;if(e==null||typeof e=="string"&&e.trim()==="")return null;const n=Number(e);if(Number.isFinite(n))return Tu(n);const i=String(t||"").match(/\bscore\b[^\d]{0,12}(\d{1,3})(?:\s*\/\s*100)?/i);return i?Tu(Number(i[1])):null}function Tu(t){return t>=0&&t<=100?t:null}function at(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function bl(t){const e=String(t||"").toLowerCase();return/(fail|error|critical|block|reject|invalid)/.test(e)?"fail":/(warn|attention|manual|partial|incomplete|concern)/.test(e)?"warning":/(pass|success|ready|approve|valid|clean|info|notice)/.test(e)?"pass":null}function Ra(...t){return t.filter(Boolean).reduce((e,n)=>Ru[n]>Ru[e]?n:e,"pass")}function th(t,e="warning",n="review"){if(typeof t=="string")return{severity:e,message:t,suggestion:"",source:n};const i=rt(t),r=qt(i.message,i.title,i.issue,i.description,i.summary);return r?{severity:bl(i.severity||i.status||i.level)||e,message:r,suggestion:qt(i.suggestion,i.fix,i.recommendation,i.action),source:i.source||n}:null}function Ta(t,e="review"){const n=rt(t);return[["findings","warning"],["issues","warning"],["criticalIssues","fail"],["errors","fail"],["warnings","warning"],["recommendations","warning"],["requiredFixes","fail"],["suggestions","warning"]].flatMap(([r,s])=>It(n[r]).map(o=>th(o,s,e)).filter(Boolean))}function e_(t,e,n=null){if(typeof t=="string")return{id:`${n||"bundle"}-manual-${e+1}`,title:t,detail:"",location:"",timing:"unspecified",artifactId:n,source:"Code Review"};const i=rt(t),r=qt(i.title,i.action,i.step,i.message,i.name,i.description);return r?{id:i.id||`${n||"bundle"}-manual-${e+1}`,title:r,detail:qt(i.detail,i.instructions,i.description),location:qt(i.location,i.flutterFlowPath,i.path),timing:qt(i.timing,i.phase)||"unspecified",artifactId:n,source:qt(i.source)||"Code Review"}:null}function $a(t,e=null){const n=rt(t);return Xv.flatMap(i=>It(n[i])).map((i,r)=>e_(i,r,e)).filter(Boolean)}function t_(t){let e=typeof t=="string"?Pa(t):t;if(!e&&typeof t=="string")return{rawText:t,root:{}};const n=rt(e);typeof n.content=="string"&&(e=Pa(n.content)||e);const i=rt(e),r=rt(i.reviewResult||i.codeReview||i.result);return{rawText:"",root:Object.keys(r).length?r:i}}function n_(t,e){const n=[e.id,e.fileName,e.artifactName].map(at);return t.find(i=>{const r=rt(i);return[r.id,r.fileName,r.artifactName,r.name].map(at).some(s=>s&&n.includes(s))})||null}function i_(t,e){return It(t?.metadata?.compatibility?.deployHints).find(r=>at(r?.artifactId)===at(e.id)||at(r?.fileName)===at(e.fileName))?.pathHint||""}function r_(t,e){return It(t?.relationships).filter(n=>at(n?.from)===at(e.id)||at(n?.to)===at(e.id))}function s_(t,e){return It(t?.metadata?.compatibility?.findings).filter(n=>!n?.artifactId||at(n.artifactId)===at(e.id)).map(n=>th(n,"warning","Compatibility check")).filter(Boolean)}function o_(t,e,n,i){const r=n_(e,n),s=rt(r?.review||r||n.review),o=Object.keys(s).length>0,a=[...Ta(s),...s_(t,n)],l=$a(s,n.id),u=bl(s.status||s.verdict||s.outcome||s.result),c=a.length?Ra(...a.map(f=>f.severity)):null,d=Ra(u,c,o?null:"warning");return{...n,index:i,status:d,statusReason:o?qt(s.summary,s.overview,s.assessment,s.conclusion)||(a.length?`${a.length} review finding${a.length===1?"":"s"}`:"No file-level findings"):"No file-level verdict was returned",reviewComplete:o,findings:a,manualSteps:l,fixedSource:typeof s.fixedSource=="string"&&s.fixedSource.trim()?s.fixedSource.trim():null,pathHint:i_(t,n),relationships:r_(t,n)}}function a_({status:t,score:e,artifactPresentations:n,manualSteps:i}){const r=n.length;if(r===0&&i.length===0)return e==null?"Code review returned no overall summary and no score.":`Reviewed bundle with score ${e}/100.`;const s=n.reduce((a,l)=>(a[l.status]+=1,a),{pass:0,warning:0,fail:0}),o=[];return t&&o.push(`Overall verdict: ${t}.`),r&&o.push(`${r} artifact${r===1?"":"s"}: ${s.pass} pass, ${s.warning} warn, ${s.fail} fail.`),i.length&&o.push(`Do before deploy: ${i.map(a=>a.title).join("; ")}.`),e==null&&o.push("No numeric score (0-100) was returned."),o.join(" ")}function l_({bundle:t,reviewResult:e}){const n=rt(t),i=It(n.artifacts),{root:r,rawText:s}=t_(e),o=[r.bundleReview,r.overallReview,r.overall,r.bundleSummary,r.summaryReview,r.review].map(rt).find(b=>Object.keys(b).length)||{},a=It(r.artifacts||r.files||r.reviews),l=i.map((b,_)=>o_(n,a,b,_)),u=Ta(r),d=[...Ta(o),...u],f=[...$a(o),...$a(r),...l.flatMap(b=>b.manualSteps)].filter((b,_,x)=>x.findIndex(I=>I.title===b.title&&I.artifactId===b.artifactId)===_),h=bl(o.status||o.verdict||o.overallStatus||r.status||r.verdict||r.overallStatus||r.outcome),p=Ra(h,...d.map(b=>b.severity),...l.map(b=>b.status)),g=o.score??r.score??r.overallScore??s,m=Qv(g),v=qt(o.headline,o.summary,o.executiveSummary,o.overview,o.assessment,o.conclusion,r.overallSummary,r.headline,r.summary,r.executiveSummary,r.overview,r.assessment,r.conclusion,s)||a_({status:p,score:m,artifactPresentations:l,manualSteps:f}),S=l.reduce((b,_)=>(b[_.status]+=1,b),{pass:0,warning:0,fail:0});return{title:n.title||"Generated artifact bundle",description:n.description||"",status:p,score:m,summary:v,findings:d,manualSteps:f,artifacts:l,counts:S,reviewCoverage:{reviewed:l.filter(b=>b.reviewComplete).length,total:l.length},deployOrder:It(n.deployOrder),relationships:It(n.relationships),warnings:It(n.warnings),compatibility:rt(n.metadata?.compatibility)}}const c_=/^\uFEFF/;function ki(t){let e=0,n=t.length;for(;ee&&!t[n-1].trim();)n--;return t.slice(e,n).join(` +`)}function u_(t){const e=String(t??"").replace(c_,"");if(!e.trim())return"";const n=e.split(` +`),i=c=>{const d=c.trim();return/^`{3,}[A-Za-z0-9+#_.-]*$/.test(d)?c.length-c.trimStart().length:-1};let r=0,s=-1;const o=[];{let c=0;for(let d=0;d=0&&(r++,s<0&&(s=d),o.push(c+f)),c+=n[d].length+1}}if(r===0)return ki(n);{const c=Ma(e);if(!c.error&&o.every(f=>Mu(f,c.commentAndStringRanges)))return ki(n)}if(r===1){const c=ki(n.slice(0,s)),d=ki(n.slice(s+1));return d.length>=c.length?d:c}const a=[];let l=null;for(let c=0;cc.length>0);return u.length===0?"":u.join(` + +`)}function d_(t){return String(t??"").replace(/\/\*[\s\S]*?\*\//g," ").replace(/\/\/[^\n]*/g,"").replace(/'''[\s\S]*?'''/g,'""').replace(/"""[\s\S]*?"""/g,'""').replace(/'(?:\\.|[^'\\\n])*'/g,'""').replace(/"(?:\\.|[^"\\\n])*"/g,'""')}function nh(t){const e=d_(t);return Array.from(e.matchAll(/class\s+([A-Z]\w*)\s+extends\s+[A-Za-z_]\w*Widget\b/g),n=>n[1])}function ih(t){return`${yl(t)}.dart`}function f_(t){return vl(t,"W")}const $u={"(":")","[":"]","{":"}"},h_={")":"(","]":"[","}":"{"},p_=/[A-Za-z0-9_]/;function Ma(t){const e=[{kind:"code",opener:null,openedLine:0}],n=[];let i=1,r=0;const s=(c,d)=>{(c===` +`||c==="\r"&&d!==` +`)&&i++};let o=null;const a=()=>{for(const c of e)(c.kind==="string"||c.kind==="block-comment"||c.kind==="line-comment")&&n.push({start:c.startIndex,end:t.length})};for(;r0?t[r-1]:"",p=r>1?t[r-2]:"",g=(h==="r"||h==="R")&&!p_.test(p);e.push({kind:"string",quote:c,triple:f,raw:g,startIndex:r,openedLine:i}),r+=f?3:1;continue}if($u[c]){e.push({kind:"code",opener:c,openedLine:i}),r++;continue}if(h_[c]){if(d.interpolation&&c==="}"){e.pop(),r++;continue}if(d.opener&&$u[d.opener]===c){e.pop(),r++;continue}return d.opener?(a(),{error:o??`line ${i}: "${c}" closes nothing - "${d.opener}" opened on line ${d.openedLine} is still open`,commentAndStringRanges:n}):(a(),{error:o??`line ${i}: unexpected "${c}" with no matching opener`,commentAndStringRanges:n})}s(c,t[r+1]),r++}a();let l=e.length-1;for(;l>0&&e[l].kind==="line-comment";)l--;let u=o;if(!u){const c=e[l];if(!(c.kind==="code"&&!c.opener&&!c.interpolation))if(c.kind==="string")u=`unclosed ${c.triple?"triple-quoted ":""}string starting on line ${c.openedLine} was never closed`;else if(c.kind==="block-comment")u=`unterminated /* comment starting on line ${c.openedLine}`;else if(c.interpolation){const d=e.findLast(h=>h.opener);u=`unclosed "\${" expression${d?` opened on line ${d.openedLine}`:""} was never closed`}else u=`"${c.opener}" opened on line ${c.openedLine} is never closed`}return{error:u,commentAndStringRanges:n}}function g_(t){return Ma(String(t??"")).error}function Mu(t,e){return e.some(({start:n,end:i})=>t>=n&&ttypeof n=="string"?n:n?.errorMessage).filter(Boolean);return e.length>0?e.join("; "):JSON.stringify(t)}return t&&typeof t=="object"?t.errorMessage||JSON.stringify(t):String(t??"")}const m_=["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","msn.com"],v_="MAGIC_LINK_SENT",__="PLUS_ALIAS_REJECTED",y_="Please enter your primary email address. Plus aliases (such as {email}) are not allowed for {domain} accounts.",As={allowlistedDomains:m_,successCode:v_,validationCode:__,messageTemplate:y_},w_=new Set(As.allowlistedDomains),b_=As.successCode,rh=As.validationCode;function Ps(t){return typeof t=="string"?t.trim():""}function E_(t){const e=Ps(t),n=e.lastIndexOf("@");if(n<=0||n===e.length-1)return!1;const i=e.slice(0,n),r=e.slice(n+1).toLowerCase();return w_.has(r)?i.includes("+"):!1}function S_(t,e){return As.messageTemplate.replaceAll("{email}",t).replaceAll("{domain}",e)}function sh(t){if(!E_(t))return null;const e=Ps(t),n=e.lastIndexOf("@"),i=e.slice(n+1).toLowerCase();return S_(e,i)}function oh(t,e){return t?.code===rh?t.message||sh(e)||"Please enter your primary email address.":t?.code===b_||!t?.code?`Check your email — we sent a link to ${Ps(e)}`:t.message||"Something went wrong. Please try again."}const x_="ccc_auth_session",I_="ccc_subscription",k_=Object.freeze(["hasSeenWalkthrough"]);function C_(t){const e=[];for(const n of k_)t.getItem(n)!==null&&(t.removeItem(n),e.push(n));return e}function A_(){return[x_,I_]}function P_({storage:t,onIdentityChanged:e,onPlanChanged:n}){for(const i of A_())t.removeItem(i);typeof e=="function"&&e(),typeof n=="function"&&n()}function F_({sendLink:t,getEmail:e,onState:n}){let i=!1;return async function(){if(i)return{status:"busy"};i=!0;let s;try{n({status:"pending",error:null});const o=await t(e());return s={status:"sent",data:o},n({status:"sent",data:o}),s}catch(o){return s={status:"error",error:o},n({status:"error",error:o}),s}finally{i=!1}}}const R_=/^dependencies\s*:\s*(?:#.*)?$/,T_=/^(?:"([^"]+)"|'([^']+)'|([A-Za-z_][A-Za-z0-9_-]*))\s*:/;function Fs(t){const e=t.match(T_);return e?e[1]??e[2]??e[3]:null}function rr(t){const e=t.trim();return e===""||e.startsWith("#")}function di(t){const e=t.match(/^(\s*)/);return e?e[1].length:0}function Sl(t,e){const n=t.findIndex(s=>e.test(s));if(n===-1)return null;let i=n,r=null;for(let s=n+1;s=0.0.0"}`}function N_(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([u])=>u&&u!=="flutter");if(i.length===0)return{yaml:n,added:[],alreadyPresent:[]};const r=n.split(` +`),s=new Set(lh(n)),o=[],a=[];for(const[u,c]of i)s.has(u)?a.push(u):(o.push([u,c]),s.add(u));if(o.length===0)return{yaml:n,added:[],alreadyPresent:a};const l=xl(r);if(l){const u=o.map(([c,d])=>Lu(l.childIndent,c,d));r.splice(l.endIndex,0,...u)}else r.length>0&&r[r.length-1].trim()!==""&&r.push(""),r.push("dependencies:"),o.forEach(([u,c])=>{r.push(Lu(" ",u,c))});return{yaml:r.join(` +`),added:o.map(([u])=>u),alreadyPresent:a}}function O_(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([l])=>l&&l!=="flutter");if(i.length===0)return{yaml:n,overridden:[],skipped:[]};const r=n.split(` +`),s=Ts(n),o=[],a=[];for(const[l,u]of i){const c=s.get(l);if(!c||!c.isScalar||!String(u||"").trim()){a.push(l);continue}const d=" ".repeat(di(r[c.lineIndex]));r[c.lineIndex]=`${d}${l}: ${uh(String(u).trim())}${c.comment}`,o.push({name:l,from:c.constraint,to:u})}return{yaml:r.join(` +`),overridden:o,skipped:a}}function dh(t){const e=String(t||""),n=[];return e.trim()?(/^name:\s*\S+/m.test(e)||n.push("pubspec.yaml missing name field"),xl(e.split(` +`))||n.push("pubspec.yaml missing dependencies section"),lh(e).includes("flutter")||n.push("pubspec.yaml missing Flutter SDK dependency"),{valid:n.length===0,errors:n}):(n.push("pubspec.yaml is empty"),{valid:!1,errors:n})}const B_=">=3.0.0 <4.0.0";function La(t){const e=String(t||"").trim(),n=e[0];return n!=="'"&&n!=='"'||e[e.length-1]!==n?e:e.slice(1,-1).replaceAll(`${n}${n}`,n)}function D_(t=""){const e=Uv(t).filter(n=>!n.startsWith("dart:")&&!n.startsWith("package:"));return{selfContained:e.length===0,unresolvableImports:e}}function Nu(t,e,n){const i=[];for(const[r,s]of t){if(s.isScalar){e[r]=La(s.constraint);continue}if(s.sourceKey==="sdk"){n.add(r);continue}if(s.sourceKey===null&&s.version){e[r]=La(s.version);continue}i.push(r)}return i}function j_(t){const e=new Set,n={},i={},r=Nu(Ts(t),n,e);r.push(...Nu(M_(t,"dependency_overrides"),i,e));const s=new Set([...Object.keys(n),...e]),{sdk:o}=ch(t);return{sdkConstraint:La(o)||B_,dependencies:n,overrides:i,sdkPackages:[...e].sort(),availablePackages:s,unrepresentable:r}}function U_(t,e,n){return e.length>0?`${t} imports ${e.join(", ")}, which FlutterFlow only generates once the app is built, so it could not be compiled before the deploy.`:`${t} imports ${n.join(", ")}, which your project's pubspec.yaml does not declare with a version constraint, so it could not be compiled before the deploy.`}function H_(t,e){const{sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s,availablePackages:o,unrepresentable:a}=j_(e),l={sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s},u=[],c=[],d=a.map(f=>`Your project declares ${f} from a source that cannot be reproduced outside it, so the pre-deploy compile check runs against a scratch package graph that omits ${f}. Classes that do not import ${f} directly are still checked, but against that reduced graph, so their transitive package resolution may differ from your project's and the check is approximate for them.`);for(const f of t){const{className:h,content:p}=f,g=wl(p),m=g.filter(b=>a.includes(b));if(m.length>0){c.push({className:h,reason:`${h} was not compiled before deploying: it imports ${m.join(", ")}, which your project declares from a source that cannot be reproduced outside it, so package resolution could not be matched exactly.`});continue}const{unresolvableImports:v}=D_(p),S=g.filter(b=>!o.has(b));if(v.length>0||S.length>0){c.push({className:h,reason:U_(h,v,S)});continue}u.push({fileName:`${yl(h)}.dart`,content:p})}return{manifest:l,sources:u,skipped:c,approximate:d}}function Ou(t,e){const n=`${t}${e}`.split(` +`),i=n.pop()??"",r=[];for(const s of n){const o=fh(s);o&&r.push(o)}return{events:r,buffer:i}}function W_(t){const e=fh(t);return e?[e]:[]}function fh(t){const e=t.trim();if(!e)return null;try{const n=JSON.parse(e);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}const Xe=Object.freeze({COMMITTED:"committed",PARTIAL:"partial",FAILED:"failed",UNCONFIRMED:"unconfirmed"}),z_=12e4;function hh(t){return t?.unconfirmed===!0||t?.outcome===Xe.UNCONFIRMED?Xe.UNCONFIRMED:t?.partial===!0||t?.outcome===Xe.PARTIAL?Xe.PARTIAL:t?.success===!0?Xe.COMMITTED:Xe.FAILED}async function q_(t,e={}){const{onPhase:n,onLog:i}=e;let r=null,s="";const o=a=>{if(a.event==="phase"){a.message&&n&&n(a.message);return}if(a.event==="log"){a.message&&i&&i(a.message);return}r=a};if(t.body?.getReader){const a=t.body.getReader(),l=new TextDecoder;for(;;){const{done:u,value:c}=await a.read();if(u)break;const d=Ou(s,l.decode(c,{stream:!0}));s=d.buffer,d.events.forEach(o)}}else{const a=Ou("",await t.text());s=a.buffer,a.events.forEach(o)}return W_(s).forEach(o),r?{...r,success:r.success===!0||r.success===void 0&&t.ok,finalResultReceived:!0}:{success:!1,finalResultReceived:!1,httpRejected:!t.ok,httpStatus:t.status,error:t.ok?"The FlutterFlow deploy runner closed the connection before it finished.":`FlutterFlow custom class provisioning failed (HTTP ${t.status}).`}}function V_(t){return t?.finalResultReceived?hh(t):t?.httpRejected?Xe.FAILED:Xe.UNCONFIRMED}function G_(){let t=document.getElementById("fx-grid");if(!t)return null;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),n=window.matchMedia("(pointer: none)");let i=t.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,stencil:!1,premultipliedAlpha:!0,powerPreference:"low-power"}),r=i?null:t.getContext("2d");if(!i&&!r)return null;const s='',o=`#version 300 es +in vec2 p; void main(){ gl_Position = vec4(p, 0.0, 1.0); }`;function a(){return["#version 300 es","precision highp float;","out vec4 o;","uniform vec2 res;","uniform vec2 design;","uniform vec2 mouse;","uniform float energy;","uniform float parallax;","uniform float t;","uniform vec3 ink;","uniform sampler2D mark;","uniform vec2 rot;","const float WARP_A = 0.0032;","void main(){"," vec2 px = gl_FragCoord.xy * (design / res);"," vec2 p = vec2(px.x, design.y - px.y);"," vec2 off = vec2(0.0, -parallax) + vec2(sin(t * 0.11), cos(t * 0.09)) * 7.0;"," vec2 g = p + off;"," vec2 gm = mouse + off;"," float base = min(design.x, design.y);"," float spacing = clamp(base / 10.0, 64.0, 118.0);"," vec2 rel = g - gm;"," float rho = length(rel) + 1e-5;"," vec2 dir = rel / rho;"," vec2 pw = gm + dir * (rho + WARP_A * rho * rho);"," vec2 cell = floor(pw / spacing);"," vec2 cw = (cell + 0.5) * spacing - gm;"," float Rc = length(cw) + 1e-5;"," float rhoC = (-1.0 + sqrt(1.0 + 4.0 * WARP_A * Rc)) / (2.0 * WARP_A);"," vec2 c = gm + (cw / Rc) * rhoC;"," float cellSize = spacing / (1.0 + 2.0 * WARP_A * rhoC);"," float sigma = spacing * 2.9;"," float f = exp(-(rhoC * rhoC) / (2.0 * sigma * sigma));"," float scale = mix(0.32, 1.42, f);"," float weight = smoothstep(0.06, 0.80, f);"," float hs = cellSize * 0.26 * scale;"," vec2 uv = (g - c) / hs;"," vec2 ruv = mat2(rot.x, rot.y, -rot.y, rot.x) * uv;"," float cov = 0.0;"," if (abs(ruv.x) <= 1.0 && abs(ruv.y) <= 1.0) cov = texture(mark, ruv * 0.5 + 0.5).a;"," float s = cov * weight * energy * 0.26;"," o = vec4(ink * s, s);","}"].join(` +`)}let l=null,u,c,d,f,h,p,g,m,v;function S(K,W){if(!i)return null;const D=i.createShader(K);return i.shaderSource(D,W),i.compileShader(D),i.getShaderParameter(D,i.COMPILE_STATUS)?D:(window.console&&console.warn("fx-grid shader: "+i.getShaderInfoLog(D)),null)}if(i){const K=S(i.VERTEX_SHADER,o),W=S(i.FRAGMENT_SHADER,a());if(K&&W&&(l=i.createProgram(),i.attachShader(l,K),i.attachShader(l,W),i.linkProgram(l),i.getProgramParameter(l,i.LINK_STATUS)||(window.console&&console.warn("fx-grid link: "+i.getProgramInfoLog(l)),l=null)),l){i.useProgram(l),i.bindBuffer(i.ARRAY_BUFFER,i.createBuffer()),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),i.STATIC_DRAW);const D=i.getAttribLocation(l,"p");i.enableVertexAttribArray(D),i.vertexAttribPointer(D,2,i.FLOAT,!1,0,0),u=i.getUniformLocation(l,"res"),c=i.getUniformLocation(l,"design"),d=i.getUniformLocation(l,"mouse"),f=i.getUniformLocation(l,"energy"),h=i.getUniformLocation(l,"parallax"),p=i.getUniformLocation(l,"t"),g=i.getUniformLocation(l,"ink"),m=i.getUniformLocation(l,"mark"),v=i.getUniformLocation(l,"rot"),i.enable(i.BLEND),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.clearColor(0,0,0,0)}else{i=null;const D=t.cloneNode(!1);if(t.parentNode.replaceChild(D,t),t=D,r=t.getContext("2d"),!r)return null}}function b(K){if(!K)return null;const W=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(K);if(W){let D=W[1];return D.length===3&&(D=D[0]+D[0]+D[1]+D[1]+D[2]+D[2]),[parseInt(D.slice(0,2),16)/255,parseInt(D.slice(2,4),16)/255,parseInt(D.slice(4,6),16)/255]}try{const D=document.createElement("canvas");D.width=1,D.height=1;const ue=D.getContext("2d");ue.fillStyle="rgb(9, 8, 7)";const xe=String(ue.fillStyle);ue.fillStyle=K;const Fe=String(ue.fillStyle);if(Fe===xe)return null;const ut=/^#([0-9a-f]{6})$/i.exec(Fe);if(ut){const dt=ut[1];return[parseInt(dt.slice(0,2),16)/255,parseInt(dt.slice(2,4),16)/255,parseInt(dt.slice(4,6),16)/255]}const Lt=/rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/i.exec(Fe);if(Lt)return[Number(Lt[1])/255,Number(Lt[2])/255,Number(Lt[3])/255]}catch{}return null}function _(){let K="";try{const W=getComputedStyle(document.documentElement);K=(W.getPropertyValue("--fx-ink")||"").trim()||(W.getPropertyValue("--fg")||"").trim()}catch{}return b(K)||[.56,.68,.88]}const x=_();let I=1920,T=1080,E=960,P=540,$=960,O=540,L=.66,N=0,G=-1e9,V=!1,M=0,R=0,Z=null,Ce=!1,oe=!1,ye=!1;const $e=64,ae=15.2;let Ie=0,Se=0;const Be=.0032,yt=0,ge=.56,Ye=.26,wt=.32,gn=.16,Re=.349;let Pe=yt;function Tt(){const K=t.getBoundingClientRect(),W=t.clientWidth,D=t.clientHeight;if(!K.width||!W||!D)return;const ue=Math.min(window.devicePixelRatio||1,2),xe=Math.max(.2,Math.min(2,K.width/W*ue)),Fe=Math.max(2,Math.round(W*xe)),ut=Math.max(2,Math.round(D*xe));(Fe!==t.width||ut!==t.height)&&(t.width=Fe,t.height=ut,i&&i.viewport(0,0,Fe,ut)),I=W,T=D,V||(E=$=I/2,P=O=T/2,V=!0)}function On(K){!l||!Ce||!i||(i.uniform2f(u,t.width,t.height),i.uniform2f(c,I,T),i.uniform2f(d,E,P),i.uniform1f(f,L),i.uniform1f(h,N),i.uniform2f(v,Math.cos(Pe),Math.sin(Pe)),i.uniform1f(p,K),i.uniform3f(g,x[0],x[1],x[2]),i.clear(i.COLOR_BUFFER_BIT),i.drawArrays(i.TRIANGLES,0,3))}function He(K,W,D){const ue=Math.max(0,Math.min(1,(D-K)/(W-K)));return ue*ue*(3-2*ue)}function Bn(K){if(!Z||!r)return;const W=r;W.setTransform(1,0,0,1,0,0),W.clearRect(0,0,t.width,t.height);const D=t.width/I;W.setTransform(D,0,0,D,0,0),W.globalAlpha=1;const ue=Math.min(I,T),xe=Math.max(64,Math.min(118,ue/10)),Fe=xe*2.9,ut=2*Fe*Fe,Lt=Math.sin(K*.11)*7,dt=Math.cos(K*.09)*7-N,lr=E+Lt,cr=P+dt,no=Fe*Math.sqrt(2*Math.log(1/.06)),gi=no+Be*no*no+xe,bp=Math.floor((lr-gi)/xe)-1,Ep=Math.ceil((lr+gi)/xe)+1,Sp=Math.floor((cr-gi)/xe)-1,xp=Math.ceil((cr+gi)/xe)+1;for(let io=Sp;io<=xp;io++){const Ip=(io+.5)*xe;for(let ro=bp;ro<=Ep;ro++){const so=(ro+.5)*xe-lr,oo=Ip-cr,ao=Math.sqrt(so*so+oo*oo)+1e-5;if(ao>gi)continue;const ur=(-1+Math.sqrt(1+4*Be*ao))/(2*Be),sc=Math.exp(-(ur*ur)/ut),oc=He(.06,.8,sc)*L*.26;if(oc<.004)continue;const rn=xe/(1+2*Be*ur)*.26*(.32+1.1*sc),ac=ur/ao,lo=lr+so*ac,co=cr+oo*ac;lo<-rn*1.6||lo>I+rn*1.6||co<-rn*1.6||co>T+rn*1.6||(W.globalAlpha=oc,W.save(),W.translate(lo,co),W.rotate(Pe),W.drawImage(Z,-rn,-rn,rn*2,rn*2),W.restore())}}W.globalAlpha=1}function $t(K){if(!oe)return;const W=R?Math.min(.05,(K-R)/1e3):.016;R=K;const ue=K-G>2400?.6:1;L+=(ue-L)*Math.min(1,W*3.2);const xe=Math.min(.05,W);Ie+=(($-E)*$e-Ie*ae)*xe,Se+=((O-P)*$e-Se*ae)*xe,E+=Ie*xe,P+=Se*xe,N=(window.scrollY||window.pageYOffset||0)*.55;const Fe=K/1e3,ut=E/(I||1)-.5,Lt=P/(T||1)-.5;let dt=ut*(ut>=0?ge:Ye)+Lt*(Lt>=0?wt:gn);dt>Re?dt=Re:dt<-Re&&(dt=-Re),Pe=yt+dt-N*6e-4,Tt(),i?On(Fe):Bn(Fe),M=requestAnimationFrame($t)}function Mt(K){if(!oe)return;const W=t.getBoundingClientRect();!W.width||!I||!T||($=(K.clientX-W.left)/W.width*I,O=(K.clientY-W.top)/W.height*T,G=performance.now())}function ct(){oe||to||e.matches||n.matches||!ye||document.hidden||(oe=!0,R=0,M=requestAnimationFrame($t))}function nn(){oe=!1,M&&(cancelAnimationFrame(M),M=0),R=0}function pi(){e.matches?(nn(),t.classList.remove("is-ready")):ye&&ct()}function Dn(){n.matches?nn():ye&&ct()}function nc(){document.hidden?nn():ye&&ct()}const ic=new IntersectionObserver(K=>{ye=K[0]?.isIntersecting||!1,ye?ct():nn()},{threshold:0});ic.observe(t),window.addEventListener("pointermove",Mt,{passive:!0,capture:!0}),window.addEventListener("resize",Tt),e.addEventListener("change",pi),n.addEventListener("change",Dn),document.addEventListener("visibilitychange",nc);function wp(){const K=(s.match(/\sd="([^"]+)"/)||[])[1],W=document.createElement("canvas");W.width=256,W.height=256;const D=W.getContext("2d");if(K&&window.Path2D){const ue=Math.min(8.533333333333333,8.421052631578947);D.setTransform(ue,0,0,ue,ue+(256-30*ue)/2,-6.4*ue),D.fillStyle="rgb(255,255,255)",D.fill(new Path2D(K),"evenodd"),D.setTransform(1,0,0,1,0,0)}try{const ue=D.getImageData(0,0,256,256),xe=ue.data;for(let Fe=3;Feoe}}const K_=120;function Y_(t,e,n){return tn?n:t}function de(t,e,n){return Y_((t-e)/(n-e),0,1)}function J_(t){return t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2}function Uo(t){return 1-Math.pow(1-t,3)}function We(t,e){return e=e===void 0?1.7:e,1+(e+1)*Math.pow(t-1,3)+e*Math.pow(t-1,2)}function Bu(t){return 1-Math.pow(2,-9*t)*Math.cos(t*15)}function te(t,e){if(t<=e[0].t)return e[0].v;for(let n=1;n8.2&&_<9.4&&(s*=1-.07*Math.sin(de(_,8.2,9.4)*Math.PI))}else if(t<53){const _=t-42;g=te(_,[{t:0,v:1},{t:2,v:0},{t:4.2,v:0},{t:4.6,v:1},{t:6.8,v:1},{t:7.4,v:0},{t:9.4,v:0},{t:10.6,v:1}]),p=te(_,[{t:0,v:1},{t:2,v:.3},{t:4.6,v:1,e:We}]),d=te(_,[{t:0,v:0},{t:2,v:.3},{t:4.6,v:.16,e:We},{t:10.6,v:0}]),h=te(_,[{t:0,v:0},{t:2,v:-40},{t:4.6,v:0,e:We}]),o=te(_,[{t:0,v:0},{t:4.6,v:-.12},{t:10.6,v:0}])}else if(t<60){const _=t-53;c=te(_,[{t:0,v:1},{t:.35,v:0},{t:.45,v:0},{t:.7,v:1}]);const x=de(_,.45,2.2);a=x>0?-2.6*(1-Bu(x)):0,g=te(_,[{t:0,v:1},{t:.57,v:0},{t:.67,v:0},{t:.92,v:1}]);const I=de(_,.67,2.42);f=I>0?-2.6*(1-Bu(I)):0,s=1-.05*(Math.sin(de(_,1.9,2.5)*Math.PI)+Math.sin(de(_,2.5,3.1)*Math.PI))}else if(t<74){let x=function(P){return[te(P,[{t:0,v:0},{t:.25,v:1},{t:.5,v:1},{t:.72,v:.14},{t:.82,v:.14},{t:1,v:0}]),te(P,[{t:0,v:0},{t:.08,v:-.62},{t:.25,v:-.62},{t:.33,v:.62},{t:.7,v:.62},{t:.82,v:-.62},{t:1,v:-.62}])]};var b=x;const _=t-60,I=1-de(_,12,14),T=x(de(_,0,12)),E=x(de(_-.5,0,12));n=T[0]*I,i=(T[1]+.05*Math.sin(_*7))*I,o=(E[0]-T[0])*.6*I,a=(E[1]-T[1])*.6*I,h=(E[0]-T[0])*30*I,S=de(_,0,.4)*I}else if(t<85.4){const _=t-74,x=te(_,[{t:0,v:0},{t:4,v:1},{t:8,v:.24},{t:9.6,v:1,e:We},{t:11.4,v:0}]);o=x*.5,d=-x*.5,l=te(_,[{t:0,v:0},{t:4,v:6},{t:8,v:20},{t:9.6,v:38,e:We},{t:11.4,v:0}]),h=-l*.7,a=te(_,[{t:0,v:0},{t:8,v:0},{t:9.6,v:.4},{t:11.4,v:0}])}else if(t<96.4){const _=t-85.4,x=de(_,0,5.6),I=de(_,5.6,7.6),T=.72*Math.min(1,_/.6)*(1-I);d=Math.cos(x*Math.PI*2)*T,f=Math.sin(x*Math.PI*2)*T*.55,h=x*360*(1-I);const E=te(_,[{t:0,v:0},{t:7.6,v:0},{t:8.2,v:1,e:Uo},{t:8.6,v:.55},{t:9.4,v:0}]);o=-.16*E,d+=.16*E,l=-6*E,h+=6*E,s=1+.05*E,m=1+.9*E}else if(t<108.6){const _=t-96.4,x=de(_,9.6,12.2);n=te(_,[{t:0,v:0},{t:2.1,v:1},{t:4.8,v:.08},{t:7.5,v:1},{t:9.6,v:0}])*(1-x),i=-.35*Math.abs(Math.sin(de(_,0,9.6)*Math.PI*3))*(1-x);const I=Math.sin(_*6.2)*(1-x);u=1+.12*I,p=1-.12*I,l=I*8,h=-I*8,o=.06*I,d=-.06*I,S=de(_,0,.4)*(1-x)}else{const _=t-108.6,x=Math.sin(de(_,0,8)*Math.PI),I=1-de(_,8,11.4);s=1+.04*x*I,i=-.1*x*I,r=2*x*I,m=1+.5*Math.sin(de(_,0,6)*Math.PI),v=1+.1*Math.sin(de(_,0,6)*Math.PI)}return e.x=n,e.y=i,e.rot=r,e.scale=s,e.ax=o,e.ay=a,e.ar=l,e.asc=u,e.afade=c,e.bx=d,e.by=f,e.br=h,e.bsc=p,e.bfade=g,e.hfade=m,e.hsc=v,e.shd=S,e}function Z_(t={}){const e=t.arena||document.querySelector(".pipeline-glyph.logo-loop");if(!e)return null;const n=e.querySelector(".loop-mark"),i=e.querySelector(".loop-piece-a"),r=e.querySelector(".loop-piece-b"),s=e.querySelector(".loop-halo"),o=e.querySelector(".loop-shadow");if(!n||!i||!r||!s||!o)return null;const a=t.reducedMotion||window.matchMedia("(prefers-reduced-motion: reduce)"),l=K_;let u=34,c=0,d=0;function f(){u=n.offsetWidth||34,c=Math.max(0,e.offsetWidth-u-4),d=Math.max(0,(e.offsetHeight-u)/2-2),e.style.setProperty("--mark-c",u/2+"px")}function h(M){const R=Math.min(1,Math.max(0,M.x))*c,Z=M.y*d;n.style.transform="translate3d("+R.toFixed(2)+"px,"+Z.toFixed(2)+"px,0) rotate("+M.rot.toFixed(2)+"deg) scale("+M.scale.toFixed(3)+")",i.style.transform="translate3d("+(M.ax*u).toFixed(2)+"px,"+(M.ay*u).toFixed(2)+"px,0) rotate("+M.ar.toFixed(2)+"deg) scale("+M.asc.toFixed(3)+")",i.style.opacity=M.afade.toFixed(3),r.style.transform="translate3d("+(M.bx*u).toFixed(2)+"px,"+(M.by*u).toFixed(2)+"px,0) rotate("+M.br.toFixed(2)+"deg) scale("+M.bsc.toFixed(3)+")",r.style.opacity=M.bfade.toFixed(3),s.style.transform="scale("+M.hsc.toFixed(3)+")",s.style.opacity=(.09*M.hfade).toFixed(3),o.style.transform="translateX("+R.toFixed(2)+"px) scaleX("+(.75+.4*Math.abs(M.x)).toFixed(3)+")",o.style.opacity=(M.shd*.5).toFixed(3)}let p=0,g=0,m=0,v=!1,S=!1,b=!1,_=0;function x(){return b||a.matches||document.hidden||!e.offsetParent?!1:S}function I(M){if(!v)return;if(m=requestAnimationFrame(I),!x()){E();return}const R=g?(M-g)/1e3:0;g=M,p=(p+Math.min(R,.1))%l,_+=1,h(Ci(p))}function T(){v||b||x()&&(v=!0,g=0,m=requestAnimationFrame(I))}function E(){v=!1,m&&(cancelAnimationFrame(m),m=0),g=0}function P(){x()?T():E()}function $(){a.matches?(E(),h(Ci(0))):P()}function O(){f(),v&&h(Ci(p))}function L(){g=0,P()}const N=new IntersectionObserver(M=>{S=M[0]?M[0].isIntersecting:!1,P()},{threshold:0});N.observe(e),window.addEventListener("resize",O),a.addEventListener("change",$),document.addEventListener("visibilitychange",L);function G(){b||(b=!0,E(),N.disconnect(),window.removeEventListener("resize",O),a.removeEventListener("change",$),document.removeEventListener("visibilitychange",L))}window.addEventListener("pagehide",G);function V(M){p=(M%l+l)%l,h(Ci(p))}return f(),h(Ci(0)),P(),{isRunning:()=>v,currentTime:()=>p,frameCount:()=>_,seek:V,dispose:G}}const X_=/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function Jt(t){const e=String(t||"").trim().match(X_);return e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),prerelease:e[4]?e[4].split("."):[]}:null}function Q_(t,e){if(t.length===0&&e.length===0)return 0;if(t.length===0)return 1;if(e.length===0)return-1;for(let n=0;n0)}function ty(t){const e=Jt(t);return e?e.major>0?`${e.major+1}.0.0`:`0.${e.minor+1}.0`:null}function Il(t){let e=String(t??"").trim();if((e.startsWith("'")||e.startsWith('"'))&&(e=e.slice(1,-1).trim()),e===""||e==="any"||e==="*")return{min:null,minInclusive:!1,max:null,maxInclusive:!1};if(e.startsWith("^")){const o=e.slice(1).trim();return Jt(o)?{min:o,minInclusive:!0,max:ty(o),maxInclusive:!1}:null}if(Jt(e))return{min:e,minInclusive:!0,max:e,maxInclusive:!0};const n={min:null,minInclusive:!1,max:null,maxInclusive:!1},i=/(>=|<=|>|<)\s*([0-9][0-9A-Za-z.+-]*)/g;let r=!1,s;for(;(s=i.exec(e))!==null;){const[,o,a]=s;if(!Jt(a))return null;r=!0,o===">="||o===">"?(n.min=a,n.minInclusive=o===">="):(n.max=a,n.maxInclusive=o==="<=")}return r?n:null}function Du(t,e){const n=Il(t);if(!n||!Jt(e))return!1;if(n.min!==null){const i=cs(e,n.min);if(i<0||i===0&&!n.minInclusive)return!1}if(n.max!==null){const i=cs(e,n.max);if(i>0||i===0&&!n.maxInclusive)return!1}return!0}function ny(t,e){const n=Il(t);if(!n||!Jt(e))return!1;if(n.max===null)return!0;const i=cs(n.max,e);return i>0?!0:i===0&&n.maxInclusive}function zn(t){const e=Il(t);return e?e.min:null}const iy="https://pub.dev/api/packages/",ry=8e3;function sy(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null}=e,r=Array.isArray(t?.versions)?t.versions:[];let s=null;for(const o of r){const a=o?.version;if(!a||o.retracted||ey(a))continue;const l=o.pubspec?.environment||{};n&&l.sdk&&!Du(l.sdk,n)||i&&l.flutter&&!Du(l.flutter,i)||(!s||cs(a,s)>0)&&(s=a)}return s?{version:s,constraint:`^${s}`}:null}async function oy(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null,fetchImpl:r=fetch}=e;let s;try{const a=await r(`${iy}${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(ry)});if(!a.ok)return{name:t,constraint:null,version:null,error:a.status===404?`"${t}" was not found on pub.dev`:`pub.dev returned ${a.status} for "${t}"`};s=await a.json()}catch(a){return{name:t,constraint:null,version:null,error:`could not reach pub.dev for "${t}" (${a.message})`}}const o=sy(s,{dartSdkFloor:n,flutterSdkFloor:i});return o?{name:t,...o,error:null}:{name:t,constraint:null,version:null,error:n?`no published "${t}" release supports Dart ${n}`:`no published "${t}" release could be read`}}async function ay(t,e={}){const n=await Promise.all(t.map(i=>oy(i,e)));return new Map(n.map(({name:i,...r})=>[i,r]))}async function ly(t,e={},n={}){const{resolveVersions:i=ay}=n,r=Object.entries(e).filter(([c])=>c&&c!=="flutter"),s=ch(t),o={dartSdkFloor:zn(s.sdk),flutterSdkFloor:zn(s.flutter)},a={additions:{},overrides:{},kept:[],warnings:[],sdk:o};if(r.length===0)return a;const l=Ts(t),u=[];for(const[c,d]of r){const f=l.get(c);if(!f){u.push(c);continue}const h=zn(d);if(!h){a.kept.push({name:c,constraint:f.constraint});continue}if(!f.isScalar){a.warnings.push(`"${c}" is declared in your project from a git, path, or SDK source, but the generated code needs at least ${h}. Left as-is — update it yourself if the build fails.`),a.kept.push({name:c,constraint:f.constraint});continue}if(ny(f.constraint,h)){a.kept.push({name:c,constraint:f.constraint});continue}a.overrides[c]=`^${h}`,a.warnings.push(`"${c}" was pinned to ${f.constraint} in your project, which cannot resolve the ${h} the generated code needs. Raising it to ^${h} — this changes a dependency the rest of your app also uses.`)}if(u.length>0){const c=await i(u,o);for(const d of u){const f=c.get(d);if(f?.constraint){a.additions[d]=f.constraint;continue}const h=e[d]||"";if(zn(h)){a.additions[d]=`^${zn(h)}`,a.warnings.push(`Could not confirm "${d}" version on pub.dev (${f?.error||"lookup failed"}). Using ^${zn(h)} from the AI's recommendation — verify this is current.`);continue}a.additions[d]=">=0.0.0",a.warnings.push(`Could not determine a version for "${d}" (${f?.error||"lookup failed"}) and the AI supplied none. Added with a wide-open >=0.0.0 constraint — pin a concrete version in FlutterFlow before deploying.`)}}return a}const cy={"&":"&","<":"<",">":">",'"':""","'":"'"};function Zt(t){return String(t??"").replace(/[&<>"']/g,e=>cy[e])}function z(t){return t?Zt(t).replace(/\n/g,"
    "):""}function Kt(t){return Zt(t).replace(/\r?\n/g," ")}function $s(t,e={}){const n=t?.pipelineStep;if(n!=null&&e[n]!=null)return e[n];const i=t?.message||"";return i.includes("Code Generator")?2:i.includes("Code Review")?3:1}function gh(t){if(!t)return{kind:"generic",title:"Generation failed",message:"An unknown error occurred. Please try again.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1};if(t.isModelArmor){const n=t.code==="MODEL_ARMOR_BLOCKED";return{kind:"safety",title:t.userTitle||"Request blocked for safety",message:t.userMessage||t.message,detail:t.retryExplanation||"",canRetry:!n,canEdit:!0,canUpgrade:!1}}if(t.isUsageLimit)return{kind:"quota",title:"Monthly limit reached",message:t.message||"You've used all your generations for this period.",detail:"",canRetry:!1,canEdit:!1,canUpgrade:!0};const e=t.message||"";return/timed out after/i.test(e)?{kind:"timeout",title:"Request timed out",message:"The generation service took too long to respond.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:/unreachable|failed to fetch|load failed|cors/i.test(e)?{kind:"network",title:"Connection problem",message:"We couldn't reach the generation service. Check your connection and try again.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:{kind:"generic",title:"Generation failed",message:e||"An unexpected error occurred.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1}}function uy(t){const e={"Integration Audit Report":"📋","Critical Issues":"❌",Warnings:"⚠️",Recommendations:"✅","Overall Score":"📊"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📄"}function dy(t){const e={critical:"❌",warning:"⚠️",recommendation:"✅",score:"📊",issue:"🔍",fix:"🔧"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📝"}function fy(t){return t.includes("class ")&&t.includes("extends ")||t.includes("StatelessWidget")||t.includes("StatefulWidget")||t.includes("import 'package:flutter/")?"dart":t.includes("def ")||t.includes("import ")||t.includes("print(")?"python":t.includes("function ")||t.includes("const ")||t.includes("console.")?"javascript":"dart"}function ai(t){if(!t)return"";if(typeof t!="string")return String(t);const e=/```(?:\w+)?\n?([\s\S]*?)```/,n=t.match(e);return n?n[1].trim():t.trim()}function ju(t){return t=Zt(t),t=t.replace(/\*\*(.*?)\*\*/g,'$1'),t=t.replace(/\*(.*?)\*/g,'$1'),t=t.replace(/`(.*?)`/g,'$1'),t=t.replace(/\b(FAIL|ERROR|CRITICAL)\b/g,'$1'),t=t.replace(/\b(WARN|WARNING)\b/g,'$1'),t=t.replace(/\b(PASS|SUCCESS|OK)\b/g,'$1'),t}function mh(t,e="dart",n=globalThis.hljs){if(!t)return"";const i=ai(t);try{return n.highlight(i,{language:e}).value}catch(r){console.warn("Syntax highlighting failed:",r);try{return n.highlight(i,{language:"json"}).value}catch{return Zt(i)}}}function Ms(t,e={}){const{highlighter:n=globalThis.hljs}=e;let i='
    ';const r=String(t??"").split(` +`);let s=!1,o="";for(const a of r){if(a.startsWith("```")){if(s){const l=fy(o),u=mh(o.trim(),l,n);i+=`
    +
    ${u}
    +
    `,o="",s=!1}else s=!0;continue}if(s){o+=a+` +`;continue}if(a.startsWith("# ")){const l=a.substring(2).trim();i+=`
    +

    + ${uy(l)} + ${Zt(l)} +

    +
    `;continue}if(a.startsWith("## ")){const l=a.substring(3).trim();i+=`
    +

    + ${dy(l)} + ${Zt(l)} +

    +
    `;continue}if(/^[-*+]\s+/.test(a)||/^\d+\.\s+/.test(a)){const l=a.replace(/^([-*+]|\d+\.)\s+/,"").trim();i+=`
    + • + ${ju(l)} +
    `;continue}a.trim()!==""&&(i+=`

    ${ju(a)}

    `)}return i+="
    ",` +
    +
    +
    + Live Audit Report +
    + ${i} +
    + `}const hy=[[/gradient stroke\s*$/i," and an animated percentage label"],[/gauge\s*$/i," with a gradient stroke and animated fill"],[/rating\s*(bar|widget)?\s*$/i," with half-star support and haptic feedback"],[/list\s*$/i," with swipe-to-delete and an undo snackbar"],[/pad\s*$/i," that exports a transparent PNG"],[/carousel\s*$/i," with parallax cards and page indicators"],[/(button|cta)\s*$/i," with a loading spinner and success state"],[/(chart|graph)\s*$/i," that animates from a Firestore stream"],[/action\s*(that|to)?\s*$/i," uploads an image to Firebase Storage and returns the URL"],[/timer\s*$/i," with pause, resume and a completion callback"],[/map\s*$/i," with clustered markers and a custom info window"],[/^a\s+\w*$/i," widget that"],[/(picker|selector)\s*$/i," with search and multi-select"]],py=220,gy=6;function Uu(t,e){return!!(t&&t.trim())&&!e}function my(t,e=""){if(typeof t!="string"||!t||t===e||t.trim().lengthi.test(t));return n?n[1]:null}function vy(){let t="",e="";return{get active(){return t},resolve(n){return t=my(n,e)??"",t},dismiss(){t=""},accept(n){if(!t)return null;const i=n+t;return e=i,t="",i}}}function _y({onSubmit:t}){const e=document.getElementById("composer"),n=document.getElementById("pipeline-input"),i=document.getElementById("hero-send");if(!e||!n||!i||typeof t!="function")return;const r=e.querySelector(".ghost .typed"),s=e.querySelector(".ghost .suggest"),o=document.getElementById("tab-hint"),a=document.getElementById("suggest-status"),l=Array.from(document.querySelectorAll("#example-chips .chip")),u=document.getElementById("btn-add-images"),c=document.getElementById("prompt-image-input"),d=window.matchMedia("(prefers-reduced-motion: reduce)"),f=vy();let h=!1,p=!1,g=!1,m=!1,v=null,S=null;function b(){i.disabled=!Uu(n.value,p||g||m)}function _(){r&&(r.textContent=n.value)}function x(){s&&(s.textContent=""),_(),e.classList.remove("has-suggest"),o&&(o.hidden=!0,o.tabIndex=-1),a&&(a.textContent="")}function I(R){s&&(s.textContent=R),_(),e.classList.add("has-suggest"),o&&(o.hidden=!1,o.tabIndex=0,o.setAttribute("aria-label","Accept suggestion: "+R.trim())),a&&(a.textContent="Suggestion: "+R+". Press Tab to accept.")}function T(){f.dismiss(),x()}function E(){if(h||p)return;const R=f.resolve(n.value);R&&I(R)}function P(){clearTimeout(v),!h&&(v=setTimeout(E,py))}function $(){const R=f.accept(n.value);return R===null?!1:(n.value=R,x(),b(),!0)}function O(R){p=R,e.classList.toggle("is-busy",R),i.classList.toggle("is-busy",R),i.setAttribute("aria-label",R?"Generating":"Generate"),n.readOnly=R,l.forEach(Z=>{Z.disabled=R}),u&&(u.disabled=R),c&&(c.disabled=R),b()}async function L(){if(Uu(n.value,p||g||m)){T(),O(!0);try{await t()}finally{O(!1)}}}function N(){g=!1,S&&(clearInterval(S),S=null),e.classList.remove("is-demo-typing"),b()}function G(){l.forEach(R=>{R.classList.remove("is-active"),R.setAttribute("aria-pressed","false")})}function V(){try{n.focus({preventScroll:!0}),n.setSelectionRange(n.value.length,n.value.length)}catch{}}function M(R){const Z=R.dataset.prompt||"";if(N(),clearTimeout(v),v=null,T(),l.forEach(oe=>{const ye=oe===R;oe.classList.toggle("is-active",ye),oe.setAttribute("aria-pressed",String(ye))}),d.matches||!Z){n.value=Z,_(),b(),V();return}n.value="",_(),g=!0,b(),e.classList.add("is-demo-typing");let Ce=0;S=setInterval(()=>{Ce+=1,n.value=Z.slice(0,Ce),_(),Ce>=Z.length?(N(),V()):b()},22)}return l.forEach(R=>{R.setAttribute("aria-pressed","false"),R.addEventListener("click",()=>M(R))}),n.addEventListener("keydown",R=>{if(g&&R.key==="Enter"&&!R.shiftKey&&!R.isComposing&&!h){R.preventDefault();return}N(),R.key==="Tab"&&!R.shiftKey&&f.active?(R.preventDefault(),$()):R.key==="Escape"?(clearTimeout(v),v=null,T()):R.key==="Enter"&&!R.shiftKey&&!R.isComposing&&!h&&(R.preventDefault(),L())}),n.addEventListener("input",()=>{N(),G(),T(),b(),P()}),n.addEventListener("compositionstart",()=>{h=!0}),n.addEventListener("compositionend",()=>{h=!1,T(),b(),P()}),n.addEventListener("scroll",()=>{r&&r.parentNode&&(r.parentNode.scrollTop=n.scrollTop)}),o&&o.addEventListener("click",()=>{$(),n.focus({preventScroll:!0})}),i.addEventListener("click",L),n.addEventListener("pointerdown",()=>{N(),G()}),_(),b(),{setAttachmentsPending(R){m=!!R,b()}}}const yy="https://ccc-ffai-runner-y5cyj3473a-uw.a.run.app/deployCustomClasses";const vt="https://4tgke4.buildship.run",vh={professional:"price_1T2ldCKszA2slvDXatdeCpbI",power:"price_1T2le9KszA2slvDXR4mPvw7M"},us="ccc_auth_session",Na="ccc_signin_return",wy=1800*1e3,Hu=new WeakSet;let q={email:null,sessionToken:null,isVerified:!1};function $n(t={}){return{tier:"free",status:"none",periodEnd:null,isLoading:!1,isResolved:!1,error:null,...t}}let ce=$n({isResolved:!0}),Oa=Promise.resolve();const by=`${vt}/service/runpipeline`,Ey="bs_user_id",Sy="bs_identity_token",xy=`${vt}/authUserCheck`;let ft={userId:null,token:null,status:null,resolved:!1};const ds=tv,fs="ccc_subscription",Wu=3,Iy=new Set(["active","trialing","paid"]),hs="google/gemini-3.7-flash",$r=["anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta","openrouter/free","openrouter/deepseek/deepseek-v4-pro"],ky={"google/gemini-3.7-flash":"Gemini 3.7 Flash","anthropic/claude-opus-5":"Claude Opus 5","openai/gpt-5.6-sol":"GPT-5.6 Sol","z-ai/glm-5.2":"GLM 5.2","moonshotai/kimi-k3":"Kimi K3","openrouter/auto-beta":"OpenRouter: Auto Router","openrouter/free":"OpenRouter: Free Models","openrouter/deepseek/deepseek-v4-pro":"DeepSeek v4 Pro"};function on(t){return ky[t]||t}const Cy=new Set(["google/gemini-3.7-flash","anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta"]);function Ay(t){return Cy.has(t)}const Ba=4,Ho=8*1024*1024,Py="https://4tgke4.buildship.run/service/runpipeline-image";let Ne=[];const hn=[],Fy=3e4;let _h=null;function Ry(t){return new Promise(e=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>e(null),n.readAsDataURL(t)})}async function Ty(t,e){const n=new FormData;return n.append("file",t),(await fetch(Py,{method:"POST",body:n,signal:e})).json()}function $y(t){if(Array.isArray(t)){const e=t[0];if(e&&typeof e=="object")for(const n of Object.keys(e)){if(n==="item"||n==="index")continue;const i=e[n];if(i&&typeof i=="object"){if(typeof i.file=="string")return i.file;if(typeof i.url=="string")return i.url}if(typeof i=="string")return i}return""}return typeof t=="string"?t:t&&typeof t=="object"&&(t.url||t.fileUrl||t.file_url||t.downloadUrl||t.imageUrl||t.image_url||t.file)||""}async function My(t,e,n){const i=await Ry(t);i&&Ne.includes(e)&&(e.dataUrl=i,ln());let r="";if(i)try{r=$y(await Ty(t,n))}catch{r=""}return Ne.includes(e)?!i||!r?(Ne.splice(Ne.indexOf(e),1),ln(),"failed"):(e.url=r,ln(),"added"):"dropped"}function yh(t){const e=hn.indexOf(t);e>=0&&hn.splice(e,1),bh()}function wh(t){t.controller.abort(),yh(t);const e=Ne.indexOf(t.slot);e>=0&&(Ne.splice(e,1),ln())}function bh(){_h?.setAttachmentsPending(hn.length>0)}async function Ly(t){const e=Array.from(t.target.files||[]);if(!e.length)return;if(t.target.value="",y.isRunning){Ee("Wait for the current generation to finish before attaching images.","info");return}const n=e.filter(u=>u.size>Ho);n.length&&Ee(`Skipped ${n.length} image(s) over the ${(Ho/1024/1024).toFixed(0)} MB limit.`,"warning");const i=e.filter(u=>u.size<=Ho);if(!i.length)return;const r=Ba-Ne.length,s=i.slice(0,r);if(i.length>r&&Ee(`You can attach up to ${Ba} images.`,"info"),!s.length)return;const o=s.map(u=>{const c={dataUrl:null,name:u.name,url:null};Ne.push(c);const d={slot:c,controller:new AbortController},f=setTimeout(()=>d.controller.abort(),Fy);return d.job=My(u,c,d.controller.signal),hn.push(d),d.job.finally(()=>{clearTimeout(f),yh(d)}),d.job});ln(),bh();const l=(await Promise.all(o)).filter(u=>u==="failed").length;l&&Ee(`${l} image(s) could not be uploaded and were not attached.`,"error")}function Ny(t){const e=Ne[t],n=hn.find(i=>i.slot===e);if(n){wh(n);return}Ne.splice(t,1),ln()}function ln(){const t=document.getElementById("prompt-image-thumbnails"),e=document.getElementById("prompt-image-btn-label");t&&(t.innerHTML="",Ne.forEach((n,i)=>{const r=document.createElement("div");r.className="prompt-img-thumb"+(n.url?"":" is-pending"),r.innerHTML=(n.dataUrl?`Prompt image`:"")+``,t.appendChild(r)}),e&&(e.textContent=Ne.length>=Ba?"Image limit reached":"Add images"))}function Eh(){const t=document.getElementById("prompt-image-upload");if(!t)return;const e=document.getElementById("code-generator-model"),n=Ay(e?.value);t.classList.toggle("hidden",!n),!n&&Ne.length&&(hn.slice().forEach(wh),Ne=[],ln())}const Pn="ccc_usage",Sh="google/gemini-3.7-flash",xh="google/gemini-3.7-flash",Sr="google/gemini-3.7-flash",Li={professional:11,power:49},Da={en_US:"USD",en_GB:"GBP",en_AU:"AUD",en_NZ:"NZD",en_CA:"CAD",en_IN:"INR",en_SG:"SGD",en_HK:"HKD",en_PH:"PHP",en_ZA:"ZAR",en:"USD",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR",pt_PT:"EUR",pt_BR:"BRL",pt:"BRL",ja:"JPY",ko:"KRW",zh_CN:"CNY",zh_TW:"TWD",zh:"CNY",th:"THB",vi:"VND",id:"IDR",ms_MY:"MYR",ms:"MYR",sv:"SEK",nb:"NOK",da:"DKK",pl:"PLN",cs:"CZK",hu:"HUF",ro:"RON",tr:"TRY",ar:"AED",he:"ILS",ru:"RUB",uk:"UAH"},Mr={AUD:1,USD:.65,EUR:.6,GBP:.52,CAD:.88,NZD:1.08,JPY:97,KRW:870,INR:54,SGD:.87,HKD:5.08,BRL:3.18,CNY:4.7,TWD:20.5,THB:22.5,VND:16200,IDR:10200,MYR:2.88,SEK:6.8,NOK:6.95,DKK:4.48,PLN:2.6,CZK:15.2,HUF:238,RON:2.98,TRY:20.9,AED:2.39,ILS:2.38,PHP:36.4,ZAR:11.8,RUB:58,UAH:26.8,CHF:.57,MXN:11.1,ARS:580,CLP:610,COP:2700,PEN:2.44};let Lr={...Mr};async function Oy(){const t=new AbortController,e=setTimeout(()=>t.abort(),5e3);try{const n=await fetch("https://open.er-api.com/v6/latest/AUD",{signal:t.signal});if(!n.ok)return;const i=await n.json();if(i.result!=="success"||!i.rates)return;const r=i.rates,s={AUD:1},o=new Set([...Object.keys(Mr),...Object.values(ja),...Object.values(Da)]);for(const a of o)a!=="AUD"&&(typeof r[a]=="number"&&r[a]>0?s[a]=r[a]:Mr[a]&&(s[a]=Mr[a]));Lr=s}catch{}finally{clearTimeout(e)}}const ja={"America/Sao_Paulo":"BRL","America/Fortaleza":"BRL","America/Recife":"BRL","America/Bahia":"BRL","America/Belem":"BRL","America/Manaus":"BRL","America/Cuiaba":"BRL","America/Campo_Grande":"BRL","America/Araguaina":"BRL","America/Noronha":"BRL","America/Rio_Branco":"BRL","America/Porto_Velho":"BRL","America/Boa_Vista":"BRL","America/Maceio":"BRL","America/Santarem":"BRL","America/Eirunepe":"BRL","Europe/London":"GBP","Europe/Paris":"EUR","Europe/Berlin":"EUR","Europe/Madrid":"EUR","Europe/Rome":"EUR","Europe/Amsterdam":"EUR","Europe/Brussels":"EUR","Europe/Vienna":"EUR","Europe/Lisbon":"EUR","Europe/Dublin":"EUR","Europe/Helsinki":"EUR","Europe/Athens":"EUR","Europe/Bucharest":"RON","Europe/Budapest":"HUF","Europe/Warsaw":"PLN","Europe/Prague":"CZK","Europe/Copenhagen":"DKK","Europe/Stockholm":"SEK","Europe/Oslo":"NOK","Europe/Zurich":"CHF","Europe/Istanbul":"TRY","Europe/Moscow":"RUB","Europe/Kiev":"UAH","Europe/Kyiv":"UAH","Asia/Tokyo":"JPY","Asia/Seoul":"KRW","Asia/Shanghai":"CNY","Asia/Taipei":"TWD","Asia/Hong_Kong":"HKD","Asia/Singapore":"SGD","Asia/Kolkata":"INR","Asia/Calcutta":"INR","Asia/Bangkok":"THB","Asia/Ho_Chi_Minh":"VND","Asia/Jakarta":"IDR","Asia/Kuala_Lumpur":"MYR","Asia/Dubai":"AED","Asia/Jerusalem":"ILS","Asia/Tel_Aviv":"ILS","Asia/Manila":"PHP","Pacific/Auckland":"NZD","Australia/Sydney":"AUD","Australia/Melbourne":"AUD","Australia/Brisbane":"AUD","Australia/Perth":"AUD","Australia/Adelaide":"AUD","Australia/Hobart":"AUD","Australia/Darwin":"AUD","Australia/Lord_Howe":"AUD","America/Toronto":"CAD","America/Vancouver":"CAD","America/Edmonton":"CAD","America/Winnipeg":"CAD","America/Halifax":"CAD","America/St_Johns":"CAD","America/Regina":"CAD","America/New_York":"USD","America/Chicago":"USD","America/Denver":"USD","America/Los_Angeles":"USD","America/Phoenix":"USD","America/Anchorage":"USD","Pacific/Honolulu":"USD","America/Mexico_City":"MXN","America/Cancun":"MXN","America/Tijuana":"MXN","America/Argentina/Buenos_Aires":"ARS","America/Santiago":"CLP","America/Bogota":"COP","America/Lima":"PEN","Africa/Johannesburg":"ZAR"};function kl(){try{const s=Intl.DateTimeFormat().resolvedOptions().timeZone;if(s&&ja[s])return ja[s]}catch{}const e=(navigator.language||"en-US").replace("-","_"),n=Da[e];if(n)return n;const i=e.split("_")[0],r=Da[i];return r||"USD"}function Ni(t,e){const n=Lr[e]??Lr.USD,i=t*n,r=Math.round(i*100)/100;try{return new Intl.NumberFormat("en-US",{style:"currency",currency:e,minimumFractionDigits:0,maximumFractionDigits:r>=100||r%1===0?0:2}).format(r)}catch{return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:2}).format(t*Lr.USD)}}const pt="ccc_api_key_",At="ccc_session_api_key_",Ft="ccc_encryption_key",er="ccc_encryption_key_scope",By="ccc_keystore",ps="keys",tr="ccc_encryption_key_version";let Ua=null,gs=null,nr=!1,ms=!1,zu=!1;class vs extends Error{constructor(){super("Secure browser key storage is unavailable."),this.name="CredentialStorageUnavailableError"}}function qu(){if(zu)return;zu=!0;const t="Secure browser key storage is unavailable. Existing credentials were left untouched; new credentials will be available only in this tab session.";console.warn(t),document.body&&Ee(t,"warning")}function Ih(){return localStorage.getItem(tr)||""}function Ha(){return crypto.randomUUID?.()||Ch(crypto.getRandomValues(new Uint8Array(16)))}function Dy(){const t=Ih();if(t)return t;const e=Ha();return localStorage.setItem(tr,e),e}function li(){Ua=null,gs=null,nr=!1,ms=!1}window.addEventListener("storage",t=>{t.key===tr&&li()});function jy(){return new Promise((t,e)=>{const n=indexedDB.open(By,1);n.onupgradeneeded=()=>{const i=n.result;i.objectStoreNames.contains(ps)||i.createObjectStore(ps)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}async function Cl(t,e){const n=await jy();return new Promise((i,r)=>{const s=n.transaction(ps,t);let o;try{o=e(s.objectStore(ps))}catch(l){n.close(),r(l);return}let a;o.onsuccess=()=>{a=o.result},o.onerror=()=>r(o.error),s.oncomplete=()=>{n.close(),i(a)},s.onerror=()=>{n.close(),r(s.error||new Error("Encryption key transaction failed."))},s.onabort=()=>{n.close(),r(s.error||new Error("Encryption key transaction aborted."))}})}function Uy(t){return t instanceof CryptoKey&&t.algorithm?.name==="AES-GCM"&&t.extractable===!1&&t.usages.includes("encrypt")&&t.usages.includes("decrypt")}async function Hy(){const t=await Cl("readonly",e=>e.get(Ft));return Uy(t)?t:null}async function kh(t){await Cl("readwrite",e=>e.put(t,Ft))}async function Wy(){li();try{await Cl("readwrite",t=>t.delete(Ft))}catch(t){console.warn("Could not delete the stored encryption key:",t)}}async function zy(){const t=sessionStorage.getItem(Ft);if(!t)return null;const e=await crypto.subtle.importKey("jwk",JSON.parse(t),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await kh(e),sessionStorage.removeItem(Ft),sessionStorage.removeItem(er),localStorage.removeItem(pt+"salt"),e}async function Vu(t){const e=sessionStorage.getItem(Ft);if(e)return ms=sessionStorage.getItem(er)!=="session",crypto.subtle.importKey("jwk",JSON.parse(e),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);if(!t)throw new vs;const n=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),i=await crypto.subtle.exportKey("jwk",n);return sessionStorage.setItem(Ft,JSON.stringify(i)),sessionStorage.setItem(er,"session"),ms=!1,crypto.subtle.importKey("jwk",i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function qy(t){if(sessionStorage.getItem(er)==="session"&&sessionStorage.getItem(Ft))return qu(),nr=!0,Vu(t);try{const e=await Hy();if(e)return e;const n=await zy();if(n)return n;const i=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await kh(i),i}catch(e){return console.warn("IndexedDB encryption-key storage failed:",e),qu(),nr=!0,Vu(t)}}async function Al(t={}){const{allowSessionFallbackCreation:e=!0}=t,n=Dy();gs!==n&&li();const i=Ua||qy(e);Ua=i,gs=n;try{return await i}catch(r){throw li(),r}}async function Vy(t){const e=await Al(),n=gs,i=new TextEncoder,r=crypto.getRandomValues(new Uint8Array(12)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:r},e,i.encode(t)),o=new Uint8Array(r.length+s.byteLength);return o.set(r),o.set(new Uint8Array(s),r.length),{ciphertext:Ch(o),keyVersion:n,sessionFallback:nr}}async function Gy(t,e={}){const{isSessionCredential:n=!1}=e;try{const i=await Al({allowSessionFallbackCreation:!1});if(nr&&!n&&!ms)throw new vs;const r=Ky(t),s=r.slice(0,12),o=r.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},i,o);return new TextDecoder().decode(a)}catch(i){if(i instanceof vs)throw i;return console.error("Decryption failed:",i),null}}function Ch(t){const e=new Uint8Array(t);let n="";for(let i=0;i0}let Mn="",ci="",Wi=null,Ku=0,tt="not-configured";async function Pl(){sessionStorage.getItem(Ft)&&await Al(),Mn=await Te("flutterflow"),ci=await Te("flutterflow_project_id"),e0(),tn(),Mn?$l():(tt="not-configured",mt())}let _s=!1;function Ah(){const t=document.getElementById("api-keys-modal");Ge(t),Tl(),Mn&&Ml(Mn)}function Fl(){_s=!1,Ah()}function Jy(){_s=!0;const t=document.getElementById("walkthrough-modal");t&&Ke(t),Ah()}function Ph(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("api-keys-modal");e&&Ke(e);const n=_s;if(_s=!1,n){const i=document.getElementById("walkthrough-modal");i&&(tt==="connected"&&Rl(),Ge(i))}}let Xt=1;function Fh(){const t=document.querySelector(".wt-steps");return t?Array.from(t.querySelectorAll(".wt-step-card")):[]}function Ls(){const t=Fh();t.length&&t.forEach((e,n)=>{const i=n+1;e.classList.remove("wt-current","wt-done","wt-pending");const r=e.querySelector(".wt-step-num");i===Xt?(e.classList.add("wt-current"),r&&(r.textContent=i)):i0&&Xt<=t&&(Xt++,Ls())}function Zy(){const t=document.getElementById("walkthrough-modal");t&&(Xt=1,Ls(),Ge(t))}function Xy(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("walkthrough-modal");e&&Ke(e);const n=document.getElementById("walkthrough-dont-show");n&&n.checked&&localStorage.setItem("hasSeenWalkthrough","true")}function Rh(){if(q.isVerified&&Rt()&&ce.tier!=="free")return;if(!localStorage.getItem("hasSeenWalkthrough")){const e=document.getElementById("walkthrough-modal");e&&(Xt=1,Ls(),Ge(e))}}async function Tl(){const t=document.getElementById("flutterflow-api-key-input");Mn?(t.value="",t.placeholder="Key saved (enter new to replace)"):t.placeholder="Enter your FlutterFlow API key",Qy()}function Qy(){Yu("flutterflow","flutterflow-key-status"),Yu("flutterflow_project_id","flutterflow-project-status")}function Yu(t,e){const n=document.getElementById(e);if(!n)return;const i=n.querySelector(".key-status-dot"),r=n.querySelector("span");kt(t)?(i.className="key-status-dot configured",r.className="text-green-600",r.textContent="User key configured"):(i.className="key-status-dot missing",r.className="text-gray-500",r.textContent="Not configured")}function tn(){const t=y.step2Result&&y.step2Result.length>0,e=document.getElementById("btn-deploy-to-ff");e&&e.classList.toggle("hidden",!t)}function e0(){const t=document.getElementById("api-keys-status");if(!t)return;const e=t.querySelectorAll(".key-status-dot"),n=["flutterflow"];e.forEach((i,r)=>{const s=n[r];s==="flutterflow"?kt("flutterflow")&&kt("flutterflow_project_id")?(i.className="key-status-dot configured",i.title="FlutterFlow (Fully configured)"):kt("flutterflow")||kt("flutterflow_project_id")?(i.className="key-status-dot env",i.title="FlutterFlow (Partially configured)"):(i.className="key-status-dot missing",i.title="FlutterFlow (Not configured)"):kt(s)?(i.className="key-status-dot configured",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (User key)"):(i.className="key-status-dot missing",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (Not configured)")}),tn()}async function t0(){const t=document.getElementById("flutterflow-api-key-input"),e=document.getElementById("flutterflow-projects-select"),n=t.value.trim();n&&await Gu("flutterflow",n);const i=e?.value.trim()||"";if(i){if(!Ns(i)){Ee("The selected FlutterFlow project has an unexpected ID format.","error"),e.focus();return}await Gu("flutterflow_project_id",i)}await Pl(),n&&await $l(),Tl();const r=document.querySelector("#api-keys-modal .bg-blue-500"),s=r.textContent;r.textContent="Saved!",r.classList.remove("bg-blue-500","hover:bg-blue-600"),r.classList.add("bg-green-500"),setTimeout(()=>{r.textContent=s,r.classList.remove("bg-green-500"),r.classList.add("bg-blue-500","hover:bg-blue-600"),Ph()},1e3)}async function n0(){if(!confirm("Are you sure you want to clear all stored API keys?"))return;localStorage.setItem(tr,Ha()),li(),localStorage.removeItem(pt+"flutterflow"),localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow"),sessionStorage.removeItem(At+"flutterflow_project_id"),sessionStorage.removeItem(Ft),sessionStorage.removeItem(er),localStorage.removeItem(pt+"salt"),await Wy(),localStorage.setItem(tr,Ha()),localStorage.removeItem(pt+"flutterflow"),localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow"),sessionStorage.removeItem(At+"flutterflow_project_id"),await Pl();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML=''),Tl()}function Ns(t){return!t||t.trim().length<5||t.includes(" ")?!1:/^[a-zA-Z0-9-]+$/.test(t)}function mt(){const t=document.getElementById("acct-ff-dot"),e=document.getElementById("acct-ff-status"),n=document.getElementById("acct-ff-endpoint"),i=document.getElementById("acct-ff-project");if(n){const o=_t();n.textContent=o.includes("staging")?"Staging":"Production"}if(i&&(i.textContent=ci||"—"),!e)return;let r,s;if(!kt("flutterflow"))r="Not connected — add your FlutterFlow API key",s="";else switch(tt){case"connected":r="Connected to FlutterFlow",s="ok";break;case"no-projects":r="Key accepted — no projects found",s="warn";break;case"unauthorized":r="API key rejected (401/403) — re-enter your key",s="bad";break;case"network-error":r="Could not reach FlutterFlow — check your network",s="bad";break;default:r="Checking connection…",s="warn";break}e.textContent=r,t&&(t.className=`acct-dot${s?" "+s:""}`)}async function $l(){const t=await Te("flutterflow");if(!t||!kt("flutterflow"))return tt="not-configured",mt(),null;tt="validating",mt();try{const n=await new fi(t,"","main",_t()).listProjects();return tt=n&&n.length>0?"connected":"no-projects",mt(),n}catch(e){const n=String(e&&e.message||"");return tt=/(401|403)|denied|unauthorized|scoped|list permission/i.test(n)?"unauthorized":"network-error",mt(),null}}function i0(){ci="",localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow_project_id")}function r0(){i0();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML='',t.value=""),kt("flutterflow")?(tt="validating",Ml(Mn)):tt="not-configured",mt()}function s0(t,e){const n=document.getElementById(t);n&&(n.value?e?n.style.borderColor="#22c55e":n.style.borderColor="#ef4444":n.style.borderColor="")}function o0(){const t=document.getElementById("flutterflow-api-key-input");t&&(t.addEventListener("input",e=>{const n=e.target.value.trim().length>0;s0("flutterflow-api-key-input",n)}),t.addEventListener("blur",a0(async e=>{const n=e.target.value.trim();n&&await Ml(n)},500)))}function a0(t,e){let n;return function(...r){const s=()=>{clearTimeout(n),t(...r)};clearTimeout(n),n=setTimeout(s,e)}}async function Ml(t){const e=document.getElementById("flutterflow-projects-select"),n=document.getElementById("flutterflow-projects-error");if(!e){console.error("Projects dropdown element not found");return}e.innerHTML='',n&&n.classList.add("hidden"),(kt("flutterflow")||t)&&(tt="validating"),mt();try{const r=await new fi(t,"","main",_t()).listProjects();if(!r||r.length===0){tt="no-projects",mt(),e.innerHTML='';return}tt="connected",mt(),e.innerHTML='',r.forEach(s=>{const o=document.createElement("option");o.value=s.id||s.projectId||"",o.textContent=s.name||s.projectName||`Project ${s.id}`,e.appendChild(o)}),ci&&(e.value=ci)}catch(i){console.error("Failed to fetch projects:",i);const r=String(i&&i.message||"");tt=/(401|403)|denied|unauthorized|scoped|list permission/i.test(r)?"unauthorized":"network-error",mt(),e.innerHTML='',n&&(n.textContent=`Failed to load projects: ${i.message}`,n.classList.remove("hidden"))}}function l0(t){const e=document.getElementById(t),i=e.nextElementSibling.querySelector("svg");e.type==="password"?(e.type="text",i.innerHTML=` + + `):(e.type="password",i.innerHTML=` + + + `)}let y={step1Result:null,step2Result:null,step3Result:null,bundleSpec:null,artifactBundle:null,bundleReview:null,selectedArtifactId:null,resultsViewMode:"summary",currentStep:0,isRunning:!1,runId:0,submittedPrompt:"",submittedImages:[]};function c0(){y.step1Result=null,y.step2Result=null,y.step3Result=null,y.bundleSpec=null,y.artifactBundle=null,y.bundleReview=null,y.selectedArtifactId=null,y.resultsViewMode="summary"}function u0(){y.bundleSpec=Xi(y.step1Result,{artifactType:"CustomWidget",artifactName:"GeneratedWidget"})}function Os(){const t=si(y.bundleSpec);y.artifactBundle=Xi(y.step2Result,{id:y.bundleSpec?.id,title:y.bundleSpec?.title,description:y.bundleSpec?.description,artifactType:t.artifactType,artifactName:t.artifactName,fileName:t.fileName,dependencies:t.dependencies,relationships:y.bundleSpec?.relationships,code:y.step2Result||""});const e=Nv(y.artifactBundle);y.artifactBundle={...y.artifactBundle,warnings:[...y.artifactBundle.warnings,...e.findings.map(n=>n.message)],metadata:{...y.artifactBundle.metadata,compatibility:e}},y.selectedArtifactId=si(y.artifactBundle).id}function Bs(){const t=Xi(y.step3Result,{id:y.artifactBundle?.id,title:y.artifactBundle?.title}),e=new Map(t.artifacts.map(i=>[i.id,i.review])),n=new Map(t.artifacts.filter(i=>{const r=i.review;return r&&typeof r.fixedSource=="string"&&r.fixedSource.trim()}).map(i=>[i.id,i.review.fixedSource.trim()]));y.bundleReview=Xi({id:y.artifactBundle?.id,title:y.artifactBundle?.title,artifacts:y.artifactBundle?.artifacts?.map(i=>{const r=n.get(i.id)||null;return{...i,review:e.get(i.id)||i.review||y.step3Result||null,...r?{fixedCode:r}:{}}})||[],relationships:y.artifactBundle?.relationships,warnings:y.artifactBundle?.warnings})}function Th(){const t=Ll();return{artifactType:t.artifactType||"CustomWidget",artifactName:t.artifactName||"GeneratedWidget",fileName:t.fileName||""}}function Ll(){const t=y.artifactBundle||y.bundleSpec||null;return(Array.isArray(t?.artifacts)?t.artifacts:[]).find(n=>n.id===y.selectedArtifactId)||si(t)}function Nl(){return Ll().code||y.step2Result||""}async function d0(){try{await Pl()}catch(t){return console.error("checkConnection: initializeApiKeys failed:",t),!1}return!0}const Nr={production:"https://api.flutterflow.io/v2/",staging:"https://api.flutterflow.io/v2-staging/"};function f0(t,e){const n=e?.trim()?` (${e.trim().slice(0,200)})`:"";return t===401?`Your FlutterFlow API key was rejected (401 Unauthorized)${n}. Re-enter a current key under API Keys settings, then try again.`:`Listing FlutterFlow projects was denied (403)${n}. The key may be scoped to sync a single project without list permission - verify the key's access in FlutterFlow, re-enter it under API Keys settings, then retry.`}class fi{constructor(e,n,i="main",r=Nr.production){this.apiKey=e,this.baseUrl=r,this._projectId=n,this._branchName=i,this._endpoint=r}get projectId(){return this._projectId}get branchName(){return this._branchName==="main"?"":this._branchName}async exportProjectZip(){console.log(`Exporting code from FlutterFlow project: ${this.projectId}, branch: ${this.branchName||"main"}`);const e=[{project:{path:`projects/${this.projectId}`},...this.branchName?{branch_name:this.branchName}:{},export_as_module:!1,include_assets_map:!1,format:!1,export_as_debug:!1},{project_id:this.projectId,branch_name:this.branchName,include_assets:!1,export_as_module:!1}];let n=null;for(const i of e)try{const r=await fetch(`${this.baseUrl}exportCode`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(i)});if(!r.ok){const a=await r.text();n=new Error(`Export failed: ${r.status} - ${a}`);continue}const s=await r.json(),o=s?.value?.project_zip||s?.project_zip;if(!o){n=new Error("Export response did not include project source.");continue}return o}catch(r){n=r}throw n||new Error("Export failed for an unknown reason.")}async fetchProjectSource(){const e=await this.exportProjectZip(),n=await JSZip.loadAsync(e,{base64:!0}),i=Object.keys(n.files).filter(a=>!n.files[a].dir&&(a==="pubspec.yaml"||a.endsWith("/pubspec.yaml"))).sort((a,l)=>a.split("/").length-l.split("/").length)[0];if(!i)throw new Error("Export did not contain a pubspec.yaml.");const r=i.slice(0,i.length-12),s=new Map,o=Object.keys(n.files).filter(a=>{if(n.files[a].dir||!a.startsWith(r))return!1;const l=a.slice(r.length);return l==="lib/flutter_flow/custom_functions.dart"||l.startsWith("lib/custom_code/")&&l.endsWith(".dart")});return await Promise.all(o.map(async a=>{s.set(a.slice(r.length),await n.files[a].async("string"))})),{pubspecYaml:await n.files[i].async("string"),files:s}}async pushCodeWithRetry(e,n=3){const i=[Nr.production,Nr.staging],r=Math.max(0,i.indexOf(this._endpoint));for(let s=0;ssetTimeout(d,1e3*(s+1)));continue}return l}catch(l){console.warn(`Push to ${a} failed: ${l.message}, trying next...`),await new Promise(u=>setTimeout(u,1e3*(s+1)))}}throw new Error("All API endpoints failed after retries")}async pushCode(e){return this.pushCodeWithRetry(e)}parseProjectsResponse(e){if(e?.success&&typeof e.value=="string")try{const i=JSON.parse(e.value);if(i&&Array.isArray(i.entries))return i.entries.map(r=>({id:r.id,name:r.project?.name||r.id}))}catch(i){console.error("Failed to parse stringified project value:",i)}const n=e?.projects||e?.items||e?.entries||(Array.isArray(e)?e:[]);return Array.isArray(n)?n:[]}async listProjects(){console.log("Listing projects for API key");const e=[`${this.baseUrl}listProjects`,"https://api.flutterflow.io/v2/l/listProjects"];let n=0,i="";for(const r of e){const s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({project_type:"ALL",deserialize_response:!0})});if(s.ok)return r!==e[0]&&console.log(`listProjects answered on legacy path ${r}`),this.parseProjectsResponse(await s.json());if(n=s.status,i=await s.text(),console.warn(`listProjects via ${r} returned ${n}: ${i}`),s.status===401||s.status===403)throw new Error(f0(s.status,i));if(s.status!==404)throw new Error(`List projects failed: ${s.status} - ${i}`)}throw new Error(`List projects failed: ${n} - ${i}`)}}async function Ol(t){const e=t.clone();let n;try{n=await t.json()}catch{const s=await e.text();if(!t.ok)return{success:!1,responseCode:t.status,errorMessage:s||`HTTP ${t.status}`,errorMap:new Map};throw new Error(`Invalid JSON response: ${s}`)}if(!t.ok){let r=n.message||`HTTP ${t.status}`,s=new Map;if(n.errors)s=new Map(Object.entries(n.errors));else if(!n.message&&typeof n=="object"){const o=Object.keys(n).filter(a=>a.endsWith(".dart")&&Array.isArray(n[a]));o.length>0&&(s=new Map(Object.entries(n)),r=o.flatMap(l=>n[l].map(u=>`${l}: ${u.errorMessage}`)).join(` +`)||`HTTP ${t.status}`)}return{success:!1,responseCode:t.status,errorMessage:r,errorMap:s}}let i={};if(n.value)try{i=typeof n.value=="string"?JSON.parse(n.value):n.value}catch(r){console.warn("Ignoring malformed push response value:",r)}return{success:!0,responseCode:t.status,errorMap:new Map(Object.entries(i))}}function Bl(t,e){return{401:"Authentication failed. Please check your FlutterFlow API key.",403:"Access denied. You may not have permission to modify this project.",404:"Project not found. Please check your Project ID.",409:"Conflict detected. The project may have been modified elsewhere.",422:"Validation failed: Invalid request format",429:"Rate limit exceeded. Please try again in a few minutes.",500:"FlutterFlow server error. Please try again later.",503:"FlutterFlow service temporarily unavailable."}[t]||`FlutterFlow API error: ${`HTTP ${t}`}`}const J={ACTION:"A",WIDGET:"W",FUNCTION:"F",CODE_FILE:"C",DEPENDENCIES:"D",OTHER:"O"},$h=/class\s+\w+\s+extends\s+(?:StatelessWidget|StatefulWidget)\b/,Mh=/extends\s+State<\w+>/;function h0(t,e=""){if(t==="pubspec.yaml")return J.DEPENDENCIES;if(!t.endsWith(".dart")||t.endsWith("index.dart"))return J.OTHER;if(t==="custom_functions.dart")return J.FUNCTION;if(e){const n=$h.test(e),i=Mh.test(e);if(n||i)return J.WIDGET;if(/^\s*Future(?:<[^>]+>)?\s+\w+\s*\(/m.test(e))return J.ACTION;if(e.match(/^\s*(String|int|double|bool|List|Map|dynamic|void)\s+\w+\s*\(/m))return J.FUNCTION}return J.CODE_FILE}function Lh(t,e){switch(e){case J.ACTION:return`lib/custom_code/actions/${t}`;case J.WIDGET:return`lib/custom_code/widgets/${t}`;case J.FUNCTION:return"lib/flutter_flow/custom_functions.dart";case J.CODE_FILE:return`lib/custom_code/${t}`;case J.DEPENDENCIES:return"pubspec.yaml";case J.OTHER:return`lib/custom_code/${t}`;default:return t}}async function Dl(t,e=new Map){return _v(t,e)}const Wa=new Map;function Nh(t){return`${t.baseUrl}|${t.projectId}|${t.branchName}`}function Ds(t){Wa.delete(Nh(t))}class ys extends Error{constructor(e){super(e),this.name="UnconfirmedDeployError",this.outcome=Xe.UNCONFIRMED}}function p0(t,e,n){return new Promise((i,r)=>{let s=!1;const o=(l,u,c)=>{s||(s=!0,c==="resolve"?i(u):r(u))},a=setTimeout(()=>{s||(s=!0,n(i,r))},e);t.then(l=>{clearTimeout(a),o(i,l,"resolve")},l=>{clearTimeout(a),o(r,l,"reject")})})}async function jl(t,e,n,i,r=""){const s=Jv(e,n);if(s.length===0)return{remoteFiles:n,syncFileMap:e,unverified:[],approximate:[]};const o=H_(s,r),a={...o.manifest,sources:o.sources},l=o.skipped.map(f=>f.reason);l.forEach(f=>console.warn(`[custom class deploy] ${f}`));const u=o.approximate;u.forEach(f=>console.warn(`[custom class deploy] ${f}`)),console.log(`Provisioning ${s.length} new FlutterFlow custom code file(s) before sync.`),Oe.set("provision");const c=await fetch(yy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.apiKey,projectId:t.projectId,baseUrl:t.baseUrl,commitMessage:i,customClasses:s,verification:a,stream:!0})}),d=await p0(q_(c,{onPhase:f=>Oe.setSubstatus(f),onLog:f=>console.log(`[custom class deploy] ${f}`)}),z_,(f,h)=>h(new ys("The deploy is still working on the FlutterFlow server, but this browser tab has stopped waiting. Your custom classes may or may not have been written — the outcome is not yet known. Open your FlutterFlow project to reconcile before retrying the deploy.")));if(!d.finalResultReceived)throw V_(d)===Xe.FAILED?new Error(d.error||`FlutterFlow custom class provisioning failed (HTTP ${d.httpStatus}).`):new ys("The connection to the FlutterFlow deploy runner dropped before it reported a result. The deploy may still be finishing on the server; open your FlutterFlow project to reconcile before retrying.");if(!d.success){const f=d.details?` ${d.details}`:"";throw new Error(`${d.error||"FlutterFlow custom class provisioning failed."}${f}`)}return Ds(t),d.verificationSkipped&&(console.warn(`[custom class deploy] ${d.verificationSkipped}`),l.push(d.verificationSkipped)),{remoteFiles:n,syncFileMap:Zv(e,s),unverified:l,approximate:u,provisionSucceeded:!0}}async function Ul(t,e={}){const n=Nh(t);let i=Wa.get(n);if(i===void 0){try{i=await t.fetchProjectSource()}catch(l){throw new Error(`Could not read your project's pubspec.yaml (${l.message}). Deploy was stopped so your existing package dependencies aren't overwritten. Check your FlutterFlow API key and project, then try again.`)}const a=dh(i.pubspecYaml);if(!a.valid)throw new Error(`Your project's pubspec.yaml could not be read reliably (${a.errors.join("; ")}). Deploy was stopped so your existing package dependencies aren't overwritten.`);Wa.set(n,i)}const r=await ly(i.pubspecYaml,e),s=O_(i.pubspecYaml,r.overrides),o=N_(s.yaml,r.additions);return r.warnings.forEach(a=>console.warn(`[pubspec] ${a}`)),o.added.length>0&&console.log("Adding dependencies:",o.added.map(a=>`${a}: ${r.additions[a]||"any"}`).join(", "),r.sdk.dartSdkFloor?`(resolved for Dart ${r.sdk.dartSdkFloor})`:""),r.kept.forEach(({name:a,constraint:l})=>console.log(`Keeping your existing ${a}: ${l||"(non-version source)"}`)),{...o,overridden:s.overridden,warnings:r.warnings,remoteFiles:i.files}}function g0(t){const e=[],n=[];t.content.length>5e4&&n.push("Code file is large (>50KB). This may take longer to commit."),t.content.length>1e5&&e.push("Code file is too large (>100KB). Consider splitting into smaller components.");const i=t.content.split(` +`).length;i>500&&n.push(`Code has ${i} lines. Consider breaking it into smaller widgets.`),t.content.includes("setState")&&t.codeType===J.ACTION&&n.push("Using setState in a Custom Action may not work as expected. Consider using a Custom Widget."),t.content.includes("dynamic")&&!t.content.includes("?")&&n.push('Code uses "dynamic" types. Consider adding explicit types for better null safety.'),t.content.match(/Color\(0xFF[0-9A-Fa-f]{6}\)/)&&n.push("Code contains hardcoded colors. Consider using FlutterFlowTheme.of(context) for theme consistency.");const r=t.content.match(/print\s*\(/g);r&&r.length>3&&n.push(`Code contains ${r.length} print statements. Consider removing debug prints before committing.`);const s=g_(t.content);if(s&&e.push(`FlutterFlow cannot format this code - ${s}. Fix or regenerate before committing.`),t.codeType===J.WIDGET){const o=nh(t.content),a=f_(t.fileName);if(o.length===0)e.push("No public widget class found (must extend StatelessWidget or StatefulWidget).");else if(!o.includes(a)){const l=`${ih(o[0])}`;e.push(`Widget class name "${o[0]}" does not match the file name "${t.fileName}". FlutterFlow derives the widget from the file name, so it will report "No widget ${a} found". Rename the file to "${l}" or the class to match before committing.`)}}return{canProceed:e.length===0,issues:e,warnings:n}}function Oh(t,e={}){const{artifactType:n="CustomWidget",artifactName:i="GeneratedCode",fileName:r}=e,s=u_(t);let o=r||i;if(n==="CustomFunction")o="custom_functions.dart";else if(n==="CustomWidget"){const u=nh(s)[0],c=u?ih(u):null;c&&o!==c?(console.warn(`Commit file name "${o}" does not match declared widget class "${u}"; renaming to "${c}" so FlutterFlow can find the widget.`),o=c):o.endsWith(".dart")||(o+=".dart")}else o.endsWith(".dart")||(o+=".dart");let a=J.CODE_FILE;switch(n){case"CustomAction":a=J.ACTION;break;case"CustomWidget":a=J.WIDGET;break;case"CustomFunction":a=J.FUNCTION;break;case"CustomClass":case"CodeFile":a=J.CODE_FILE;break}let l="";return a===J.WIDGET?l=`// Automatic FlutterFlow imports +import '/flutter_flow/flutter_flow_theme.dart'; +import '/flutter_flow/flutter_flow_util.dart'; +import 'package:flutter/material.dart'; +// Begin custom widget code +// DO NOT REMOVE OR MODIFY THE CODE ABOVE! + +`:a===J.ACTION?l=`// Automatic FlutterFlow imports +import '/flutter_flow/flutter_flow_theme.dart'; +import '/flutter_flow/flutter_flow_util.dart'; +import 'package:flutter/material.dart'; +// Begin custom action code +// DO NOT REMOVE OR MODIFY THE CODE ABOVE! + +`:a===J.FUNCTION&&(l=`// Automatic FlutterFlow imports +import 'dart:convert'; +import 'dart:math' as math; + +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:intl/intl.dart'; +import 'package:timeago/timeago.dart' as timeago; +import '/flutter_flow/lat_lng.dart'; +import '/flutter_flow/place.dart'; +import '/flutter_flow/uploaded_file.dart'; + +`),{content:Dv(s,l),fileName:o,codeType:a,artifactType:n,artifactName:i}}function m0(t){const e={};for(const n of wl(t))e[n]="";return e}function v0(t,e={}){return{timestamp:new Date().toISOString(),artifactType:t.artifactType,artifactName:t.artifactName,codeType:t.codeType,fileName:t.fileName,generatedFrom:e.step1Result?"pipeline":"direct",model:e.selectedModel||"unknown",codeSize:t.content.length}}function _0(t,e,n,i=new Set,r=""){const s=[],o=$h.test(e),a=Mh.test(e);return n===J.WIDGET&&!o&&!a&&s.push("No widget class definition found (must extend StatelessWidget or StatefulWidget)"),{valid:s.length===0,errors:s}}function js(t){const e=[],n=[];if(!t||t.size===0)return e.push("No files to commit"),{valid:!1,errors:e,warnings:n};const i=new Set(Array.from(t.values()).flatMap(r=>Cs(r.content||"")));for(const[r,s]of t.entries()){if((!s.content||s.content.trim().length===0)&&e.push(`File ${r} is empty`),s.content&&s.content.length>1e5&&n.push(`File ${r} is very large (>100KB)`),r.endsWith(".dart")){const o=_0(r,s.content,s.type,i,s.artifactName);o.valid||e.push(...o.errors.map(a=>`${r}: ${a}`))}if(r==="pubspec.yaml"){const o=dh(s.content);o.valid||e.push(...o.errors)}}return{valid:e.length===0,errors:e,warnings:n}}const ee={IDLE:"IDLE",PREPARING:"PREPARING",VALIDATING:"VALIDATING",PUSHING:"PUSHING",SUCCESS:"SUCCESS",ERROR:"ERROR"},Y={currentState:ee.IDLE,startTime:null,endTime:null,error:null,result:null,filesProcessed:0,totalFiles:0,reset(){this.currentState=ee.IDLE,this.startTime=null,this.endTime=null,this.error=null,this.result=null,this.filesProcessed=0,this.totalFiles=0},setState(t){if(!Object.values(ee).includes(t)){console.error(`Invalid commit state: ${t}`);return}this.currentState=t,t===ee.PREPARING&&(this.startTime=Date.now()),(t===ee.SUCCESS||t===ee.ERROR)&&(this.endTime=Date.now()),typeof window<"u"&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("commitStateChange",{detail:{state:t,commitState:this}})),console.log(`Commit state changed to: ${t}`)},setError(t){this.error=t,this.setState(ee.ERROR)},setSuccess(t){this.result=t,this.setState(ee.SUCCESS)},setProgress(t,e){this.filesProcessed=t,this.totalFiles=e},getElapsedTime(){return this.startTime?(this.endTime||Date.now())-this.startTime:null},isInProgress(){return this.currentState===ee.PREPARING||this.currentState===ee.VALIDATING||this.currentState===ee.PUSHING}};async function y0(t,e,n={}){let{codeType:i="W"}=n;const{pubspecDeps:r={},artifactName:s=e}=n;i==="CustomWidget"&&(i=J.WIDGET),i==="CustomAction"&&(i=J.ACTION),i==="CustomFunction"&&(i=J.FUNCTION),i==="CustomClass"&&(i=J.CODE_FILE),i==="CodeFile"&&(i=J.CODE_FILE),Y.reset(),Y.setState(ee.PREPARING);try{const o=await Te("flutterflow"),a=await Te("flutterflow_project_id");if(!o||!a)throw new Error("FlutterFlow credentials not configured. Please set your API key and Project ID in the API Keys settings.");if(!Ns(a))throw new Error("Invalid FlutterFlow Project ID format.");const l=_t(),u=new fi(o,a,"main",l);Y.setState(ee.VALIDATING);const c=new Map,d=i||h0(e,t),f=Lh(e,d);c.set(e,{artifactName:s,content:t,type:d,path:f}),Y.setProgress(0,c.size);const h=js(c);if(!h.valid)throw new Error(`Validation failed: +${h.errors.join(` +`)}`);const p=await Ul(u,r),g=p.yaml,m=await jl(u,c,p.remoteFiles,`Provision ${s} custom class`,g),v=await Dl(m.syncFileMap,m.remoteFiles),S=new Map(m.syncFileMap);S.set("pubspec.yaml",{content:g,type:"D",path:"pubspec.yaml"}),Oe.set("package");const b=await Hl(S),_={project_id:a,zipped_custom_code:b,uid:`web_${Date.now()}`,branch_name:u.branchName,serialized_yaml:g,file_map:v.fileMapContents,functions_map:v.functionsMapContents};Y.setState(ee.PUSHING),Y.setProgress(1,c.size),Ds(u),Oe.set("push");const x=await u.pushCode(_),I=await Ol(x);if(I.success)Y.setSuccess({fileCount:c.size,projectId:a,warnings:I.errorMap&&I.errorMap.size>0?Array.from(I.errorMap.entries()):[]});else{const T=I.errorMessage||Bl(I.responseCode);throw new Error(T)}return{success:!0,message:`Successfully committed ${e} to FlutterFlow project ${a}`,addedDependencies:p.added,unverified:m.unverified,approximate:m.approximate,warnings:I.errorMap?Array.from(I.errorMap.entries()):[]}}catch(o){return console.error("Commit failed:",o),Y.setError(o),{success:!1,error:o.message,state:Y.currentState}}}async function Hl(t){const e=new JSZip;for(const[n,i]of t.entries())e.file(n,i.content);return e.generateAsync({type:"base64",compression:"DEFLATE",compressionOptions:{level:6}})}async function w0(t,e={}){const{artifactType:n,artifactName:i,fileName:r,pipelineResult:s}=e;console.log(`Starting commit for ${i} (${n})`);let o=!1;const a={projectId:null,endpoint:_t(),artifactType:n,artifactName:i,fileName:r};try{Y.setState(ee.PREPARING);const l=Oh(t,{artifactType:n,artifactName:i,fileName:r}),u=m0(l.content);console.log("Detected dependencies:",u),Y.setState(ee.VALIDATING);const c=await Te("flutterflow"),d=Wi||await Te("flutterflow_project_id");if(!c)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!d)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ns(d))throw new Error("Invalid FlutterFlow Project ID format.");const f=new Map;f.set(l.fileName,{artifactName:i,content:l.content,type:l.codeType,path:Lh(l.fileName,l.codeType),functionName:l.codeType===J.FUNCTION?i:void 0}),Y.setProgress(0,f.size);const h=js(f);if(!h.valid)throw new Error(`File validation failed: +${h.errors.join(` +`)}`);h.warnings.length>0&&console.warn("Validation warnings:",h.warnings),Y.setState(ee.PUSHING);const p=_t(),g=new fi(c,d,"main",p),m=await Ul(g,u),v=m.yaml,S=await jl(g,f,m.remoteFiles,`Provision ${i} custom class`,v);a.projectId=d,o=S.provisionSucceeded===!0;const b=await Dl(S.syncFileMap,S.remoteFiles),_=new Map(S.syncFileMap);_.set("pubspec.yaml",{content:v,type:J.DEPENDENCIES,path:"pubspec.yaml"}),Oe.set("package");const x=await Hl(_),I={project_id:d,zipped_custom_code:x,uid:`web_${Date.now()}`,branch_name:g.branchName,serialized_yaml:v,file_map:b.fileMapContents,functions_map:b.functionsMapContents};Y.setProgress(1,f.size),Ds(g),Oe.set("push");const T=await g.pushCode(I),E=await Ol(T);if(E.success){const P={...v0(l,s),projectId:d};return Y.setSuccess({...P,fileCount:f.size,warnings:E.errorMap?Array.from(E.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${l.fileName} to FlutterFlow`,metadata:P,targetIdentity:a,addedDependencies:m.added,unverified:S.unverified,approximate:S.approximate,warnings:E.errorMap?Array.from(E.errorMap.entries()):[],elapsedTime:Y.getElapsedTime()}}else{const P=E.errorMessage||Bl(E.responseCode),$=new Error(P);throw $.errorMap=E.errorMap,$}}catch(l){console.error("Commit execution failed:",l),Y.setError(l);let u=new Map;if(l.errorMap)u=l.errorMap;else if(l.message&&l.message.includes("{"))try{const c=l.message.match(/\{[\s\S]*\}/);if(c){const d=JSON.parse(c[0]);u=new Map(Object.entries(d))}}catch(c){console.warn("Failed to parse error map from commit response:",c)}return l instanceof ys?{success:!1,unconfirmed:!0,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:o?{success:!1,partial:!0,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:{success:!1,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}}}async function b0(t,e={}){const{pipelineResult:n}=e;let i=!1;const r={projectId:null,endpoint:_t(),artifactType:"Bundle",artifactName:t?.title,fileName:t?.fileEntries?`${t.fileEntries.length} artifacts`:"bundle"};try{if(Y.setState(ee.PREPARING),t.errors?.length>0)throw new Error(`Bundle validation failed: +${t.errors.join(` +`)}`);const s=new Map(t.fileEntries.map(I=>[I.fileName,{artifactId:I.artifactId,artifactName:I.artifactName,content:I.content,type:I.type,path:I.path,functionName:I.type===J.FUNCTION?I.artifactName:void 0}]));Y.setProgress(0,s.size);const o=js(s);if(!o.valid)throw new Error(`File validation failed: +${o.errors.join(` +`)}`);Y.setState(ee.VALIDATING);const a=await Te("flutterflow"),l=Wi||await Te("flutterflow_project_id");if(!a)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!l)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ns(l))throw new Error("Invalid FlutterFlow Project ID format.");Y.setState(ee.PUSHING);const u=_t(),c=new fi(a,l,"main",u),d=await Ul(c,t.dependencies),f=d.yaml,h=await jl(c,s,d.remoteFiles,`Provision ${t.title} custom classes`,f);r.projectId=l,i=h.provisionSucceeded===!0;const p=await Dl(h.syncFileMap,h.remoteFiles),g=new Map(h.syncFileMap);g.set("pubspec.yaml",{content:f,type:J.DEPENDENCIES,path:"pubspec.yaml"}),Oe.set("package");const m=await Hl(g),v={project_id:l,zipped_custom_code:m,uid:`web_${Date.now()}`,branch_name:c.branchName,serialized_yaml:f,file_map:p.fileMapContents,functions_map:p.functionsMapContents};Y.setProgress(1,s.size),Ds(c),Oe.set("push");const S=await c.pushCode(v),b=await Ol(S);if(b.success){const I={...n,artifactType:"Bundle",artifactName:t.title,fileName:`${t.fileEntries.length} artifacts`,codeSize:t.fileEntries.reduce((T,E)=>T+E.content.length,0),projectId:l};return Y.setSuccess({...I,fileCount:s.size,warnings:b.errorMap?Array.from(b.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${t.fileEntries.length} artifacts to FlutterFlow`,metadata:I,targetIdentity:r,addedDependencies:d.added,unverified:h.unverified,approximate:h.approximate,warnings:b.errorMap?Array.from(b.errorMap.entries()):[],elapsedTime:Y.getElapsedTime()}}const _=b.errorMessage||Bl(b.responseCode),x=new Error(_);throw x.errorMap=b.errorMap,x}catch(s){console.error("Bundle commit execution failed:",s),Y.setError(s);const o=s.errorMap||new Map;return s instanceof ys?{success:!1,unconfirmed:!0,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:i?{success:!1,partial:!0,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:{success:!1,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}}}async function E0(t,e=[]){const n=ml("architect");try{return await Es("architect",Sh,ov(t),n,e)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Prompt Architect failed: ${i.message}`)}}async function Us(t,e,n=[],i){const r=av(t),s=ml("generator",y.bundleSpec);try{return await Es("generator",e,r,s,n)}catch(o){if(o.isModelArmor||o.isUsageLimit||o.isPipelineCancel)throw o;if(e!==Sr){console.warn(`Code Generator failed with ${e}, retrying with fallback model:`,o.message),Cw(e,Sr,i);try{return await Es("generator",Sr,r,s,n)}catch(a){throw a.isModelArmor||a.isUsageLimit||a.isPipelineCancel?a:new Error(`Code Generator failed: primary (${e}): ${o.message} | fallback (${Sr}): ${a.message}`)}}throw new Error(`Code Generator failed: ${o.message}`)}}async function Hs(t,e=null){const n={...ml("review",y.artifactBundle||y.bundleSpec),architect_output:e};try{return await Es("review",xh,lv(t),n)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Code Review failed: ${i.message}`)}}function ws(t,e){const n=document.getElementById(`step${t}-item`),i=document.getElementById(`step${t}-status`);!n||!i||(n.classList.remove("active","completed","error"),i.classList.remove("running","completed","error"),e==="active"?(n.classList.add("active"),i.classList.add("running"),i.innerHTML=` + + `):e==="completed"?(n.classList.add("completed"),i.classList.add("completed"),i.innerHTML=` + + `):e==="error"?(n.classList.add("error"),i.classList.add("error"),i.innerHTML=` + + `):i.innerHTML=` + + `)}function Ae(t,e){const n=document.getElementById(`step${t}-loading`),i=document.getElementById(`step${t}-result`);e?(n.classList.remove("hidden"),i.classList.add("hidden"),ws(t,"active")):(n.classList.add("hidden"),i.classList.remove("hidden"),ws(t,"completed"))}function S0(t){const e=document.getElementById(`${t}-content`),n=document.getElementById(`${t}-chevron`);e.classList.contains("open")?(e.classList.remove("open"),n&&(n.style.transform="rotate(0deg)")):(e.classList.add("open"),n&&(n.style.transform="rotate(180deg)"))}function x0(t){nt(parseInt(t.replace("step","")))}function nt(t){for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-item`);a&&a.classList.remove("active")}const e=document.getElementById(`step${t}-item`);e&&e.classList.add("active"),Ln();const n=document.getElementById("ready-state");n&&n.classList.add("hidden");for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-content`);a&&a.classList.add("hidden")}const i=document.getElementById(`step${t}-content`);i&&i.classList.remove("hidden");const r=document.getElementById("stage-title"),s={1:"Prompt Architect",2:"Code Generator",3:"Code Review"};r&&(r.textContent=s[t]||"Active Workflow Stage")}function I0(t){const e=document.getElementById(t);if(!e)return;const n=e.dataset.raw||e.textContent;navigator.clipboard.writeText(n).then(()=>{const r=e.closest(".code-container")?.querySelector(".copy-btn");r&&(r.classList.add("copied"),r.innerHTML=' Copied!',setTimeout(()=>{r.classList.remove("copied"),r.innerHTML=' Copy'},2e3))}).catch(i=>{console.warn("Failed to copy to clipboard:",i)})}function za(t){const e=qa(t);console.log(`Step 1 (Prompt Architect): ${on(Sh)}`),console.log(e!==t?`Step 2 (Code Generator): ${on(t)} → ${on(e)} (Free Tier fallback)`:`Step 2 (Code Generator): ${on(t)}`),console.log(`Step 3 (Code Review): ${on(xh)}`)}function Bh(){return{step1Result:y.step1Result,step2Result:y.step2Result,step3Result:y.step3Result,artifactBundle:y.artifactBundle,bundleReview:y.bundleReview,selectedArtifactId:y.selectedArtifactId}}function k0(t){if(!t)return;Object.assign(y,t),new Set((y.artifactBundle?.artifacts||[]).map(n=>n.id)).has(y.selectedArtifactId)||(y.selectedArtifactId=si(y.artifactBundle)?.id||null)}const Dh="results-replacement-error";function C0(t,{stage:e=2,runId:n,retry:i}){if(!re(n))return;const r=document.getElementById(Dh);if(!r)return;const s=gh(t),o=document.getElementById("results-replacement-error-title"),a=document.getElementById("results-replacement-error-message"),l=document.getElementById("results-replacement-error-retry"),u=document.getElementById("results-replacement-error-upgrade");o&&(o.textContent=`${Vs[e]||"Regeneration"}: ${s.title}`),a&&(a.textContent=s.message),r.hidden=!1;let c=null;u&&(u.hidden=!s.canUpgrade,s.canUpgrade&&(u.textContent="View plans",u.onclick=()=>ui(),c=u)),l&&(l.hidden=s.canUpgrade,s.canUpgrade||(l.onclick=()=>{Wl(),typeof i=="function"&&i()},l.textContent="Retry",c=l)),(c||r).focus({preventScroll:!0})}function Wl(){const t=document.getElementById(Dh);t&&(t.hidden=!0)}function jh(t,{previous:e,stage:n,runId:i,retry:r}){re(i)&&(t.isUsageLimit&&cn(),k0(e),or(),en(!0),ar(),eo(),C0(t,{stage:n,runId:i,retry:r}),tn())}async function Uh(){if(console.log("runRefinement called"),y.isRunning)return;const t=document.getElementById("code-generator-model").value;y.isRunning=!0;const e=Gs();zl("standardRegenerate",y.step2Result,y.step1Result);const n=document.querySelectorAll(".btn-refine-action"),i=Bh();n.forEach(r=>{r.disabled=!0,r.innerHTML=` + + + Refining...`});try{Wl();const r=Ll(),s=r.id,o=cv({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,artifactId:r.id,userFeedback:"Fix the issues listed in the audit report."});Zs({runId:e}),Pt(2,e),nt(2),Ae(2,!0);const a=await Us(o,t,[],e);if(!re(e))return;y.step2Result=a,Os(),Qt(2,e);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,e),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(e))return;y.step3Result=c,Bs(),Qt(3,e),y.artifactBundle?.artifacts?.some(h=>h.id===s)?y.selectedArtifactId=s:y.selectedArtifactId=si(y.artifactBundle)?.id||null;const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f)}catch(r){if(console.error("Refinement failed:",r),!re(e))return;const s=$s(r,{architect:2,generator:2,review:3});jh(r,{previous:i,stage:s,runId:e,retry:Uh})}finally{n.forEach(r=>{r.disabled=!1,r.textContent="Refine & Regenerate"}),re(e)&&(y.isRunning=!1,tn())}}async function zl(t,e,n){const i=`${vt}/connectFeedback`,r={type:t,code:e,input:n};try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!s.ok){const a=await s.text();return console.error(`callEndpoint failed: ${s.status} ${s.statusText}`,a),{success:!1,status:s.status,error:a}}const o=await s.json();return console.log("Telemetry success:",o),o}catch(s){return console.error("callEndpoint failed:",s),{success:!1,error:s.message}}}function A0(){const t=document.getElementById("ff-error-paste-input");t&&(t.value="")}async function Hh(){const t=document.getElementById("ff-error-paste-input"),e=t?.value?.trim();if(!e){t?.focus(),t?.classList.add("ring-2","ring-red-400","border-red-300"),setTimeout(()=>t?.classList.remove("ring-2","ring-red-400","border-red-300"),2e3);return}if(!y.step2Result){Ee("No generated code found. Please run the full pipeline first.","warning");return}if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=Gs();zl("flutterflowError",y.step2Result,e);const r=document.getElementById("btn-fix-from-errors");r&&(r.disabled=!0,r.innerHTML=` + + Fixing…`);const s=Bh();try{Wl();const o=Zf({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:e});vp(),Zs({runId:i}),Pt(2,i),nt(2),Ae(2,!0);const a=await Us(o,n,[],i);if(!re(i))return;y.step2Result=a,Os(),Qt(2,i);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=c,Bs(),Qt(3,i);const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f),t&&(t.value="")}catch(o){if(console.error("Fix from errors failed:",o),!re(i))return;const a=$s(o,{architect:2,generator:2,review:3});jh(o,{previous:s,stage:a,runId:i,retry:Hh})}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),re(i)&&(y.isRunning=!1,tn())}}async function ir(){if(console.log("runThinkingPipeline called"),y.isRunning)return;localStorage.setItem("hasSeenWalkthrough","true");const t=document.getElementById("pipeline-input").value,e=document.getElementById("code-generator-model").value,n=Ne.slice();if(!t.trim()){Ee("Please describe your FlutterFlow widget first.","warning");return}y.isRunning=!0;const i=Gs();try{if(await Oa,!re(i)||(hn.length&&await Promise.allSettled(hn.map(v=>v.job)),!re(i))||!await X0()||!re(i)||(await V0(),!re(i)))return;const r=qa(e);t.length,c0(),y.submittedPrompt=t,y.submittedImages=n.filter(v=>v.url),Ka(!0),za(r),Ln();const s=document.getElementById("ready-state");s&&s.classList.add("hidden");const o=document.getElementById("paywall-exhausted");o&&o.classList.add("hidden"),Zs({prompt:t,runId:i}),Rw(),nt(1),Pt(1,i),Ae(1,!0);const a=y.submittedImages.map(v=>({url:v.url})),l=await E0(t,a);if(!re(i))return;y.step1Result=l,u0(),Qt(1,i);const u=document.getElementById("step1-output"),c=ai(y.step1Result);u.textContent=c,u.dataset.raw=c,Ae(1,!1),nt(2),Pt(2,i),Ae(2,!0);const d=await Us(y.step1Result,r,a,i);if(!re(i))return;y.step2Result=d,Os(),Qt(2,i);const f=document.getElementById("step2-output"),h=ai(y.step2Result);f.textContent=h,f.dataset.raw=h,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const p=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=p,Bs(),Qt(3,i);const g=document.getElementById("step3-output");g.textContent=y.step3Result,Ae(3,!1),or();const m=Ms(y.step3Result);Tw(),ar(h,m)}catch(r){if(r.isPipelineCancel||console.error("Pipeline failed:",r),!re(i))return;const s=$s(r,{architect:1,generator:2,review:3});r.isUsageLimit?cn():(r.message,qa(document.getElementById("code-generator-model").value),void 0),nt(s),Ae(s,!1),hp(r,{stage:s,runId:i}),ws(s,"error")}finally{re(i)&&(y.isRunning=!1,Ka(!1),tn())}}function P0(){const t=document.getElementById("code-generator-model").value,e=[hs,"anthropic/claude-opus-5","openai/gpt-5.6-sol"].filter(i=>i!==t),n=prompt(`Retry with different model? + +Current: ${t} + +Options: +1. ${e[0]} +2. ${e[1]} + +Enter 1 or 2:`);n==="1"?(document.getElementById("code-generator-model").value=e[0],ir()):n==="2"&&(document.getElementById("code-generator-model").value=e[1],ir())}async function F0(){const t=Nl();if(!t){Ee("No code to commit. Please run the pipeline first.","warning");return}const e=await Te("flutterflow"),n=await Te("flutterflow_project_id");if(!e||!n){Ee("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Fl();return}if(y.artifactBundle?.artifacts?.length>1){await R0();return}const{artifactType:i,artifactName:r,fileName:s}=Th(),o=Oh(t,{artifactType:i,artifactName:r,fileName:s}),a=g0(o);if(!a.canProceed){Ee(`Pre-commit checks failed: ${a.issues.join("; ")}`,"error");return}Gl(o,a,null,null)}async function R0(){const t=await Te("flutterflow"),e=await Te("flutterflow_project_id");if(!t||!e){Ee("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Fl();return}const n=Vv(y.artifactBundle);if(n.errors.length>0){Ee(`Bundle validation failed: ${n.errors.join("; ")}`,"error");return}const i=new Map(n.fileEntries.map(a=>[a.fileName,{content:a.content,type:a.type,path:a.path}])),r=js(i),s={canProceed:r.valid&&n.errors.length===0,issues:[...n.errors,...r.errors],warnings:[...n.warnings,...r.warnings]};if(!s.canProceed){Ee(`Bundle validation failed: ${s.issues.join("; ")}`,"error");return}const o={content:n.fileEntries.map(a=>`// ${a.fileName} +${a.content}`).join(` + +`),fileName:`${n.fileEntries.length} files`,codeType:"bundle",artifactType:"Bundle",artifactName:n.title};Gl(o,s,n.dependencies,n)}function T0(t){let e=t.errorMap||new Map;!(e instanceof Map)&&typeof e=="object"&&(e=new Map(Object.entries(e)));let n=`
    +

    FlutterFlow Commit Failed

    +

    ${z(t.error)}

    `;if(e&&e.size>0){n+=`
    +

    Errors:

    +
      `;for(const[r,s]of e.entries()){const o=El(s);n+=`
    • + ${z(r)}: ${z(o)} +
    • `}n+="
    "}n+="
    ",n+=`
    + +
    `;const i=document.getElementById("step3-output");i&&(i.innerHTML=n,document.getElementById("btn-regenerate-from-error")?.addEventListener("click",()=>{Wh(t.error,e)}))}async function Wh(t,e){if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=Gs(),r=document.getElementById("btn-regenerate-from-error");r&&(r.disabled=!0,r.innerHTML=` + + Fixing...`);try{let s=`The previous code had the following errors when committing to FlutterFlow: + +`;if(e&&e.size>0)for(const[h,p]of e.entries()){const g=El(p);s+=`File: ${h} +Error: ${g} + +`}else s+=`${t} +`;const o=Zf({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:s});Zs({runId:i}),Pt(2,i),nt(2),Ae(2,!0);const a=await Us(o,n,[],i);if(!re(i))return;y.step2Result=a,Os(),Qt(2,i);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=c,Bs(),Qt(3,i);const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f)}catch(s){if(console.error("Regeneration failed:",s),!re(i))return;const o=$s(s,{architect:2,generator:2,review:3});s.isUsageLimit&&cn(),nt(o),Ae(o,!1),hp(s,{stage:o,runId:i,retry:()=>Wh(t,e)}),ws(o,"error")}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),re(i)&&(y.isRunning=!1,tn())}}async function $0(){const t=document.getElementById("ff-status-dot"),e=document.getElementById("ff-status-text");if(!t||!e)return;const n=await Te("flutterflow"),i=await Te("flutterflow_project_id");n&&i?(t.className="w-2 h-2 rounded-full bg-green-500",e.textContent="FlutterFlow credentials configured",e.className="text-green-600"):n||i?(t.className="w-2 h-2 rounded-full bg-yellow-500",e.textContent="FlutterFlow credentials incomplete",e.className="text-yellow-600"):(t.className="w-2 h-2 rounded-full bg-red-500",e.textContent="FlutterFlow credentials not configured",e.className="text-red-600")}async function zh(t){try{const e=await fetch(`${vt}/auth/send-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t})});if(!e.ok)throw new Error(`Failed to send magic link: HTTP ${e.status}`);return e.json()}catch(e){throw console.error("sendMagicLink failed:",{email:t,message:e.message,stack:e.stack}),e}}async function M0(t){try{const n=await(await fetch(`${vt}/auth/verify-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t})})).json();if(n.error||!n.email||!n.sessionToken)throw new Error(n.error||"Invalid or expired link");return n}catch(e){throw console.error("verifyMagicLink failed:",{message:e.message,stack:e.stack}),e}}async function L0(t){try{const e=await fetch(`${vt}/auth/refresh-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:t})});if(!e.ok)return console.error("refreshSession: non-OK response",{url:`${vt}/auth/refresh-session`,status:e.status}),null;const n=await e.json();return n.error||!n.email||!n.sessionToken?(console.warn("refreshSession: validation failed",{error:n.error,hasEmail:!!n.email,hasToken:!!n.sessionToken}),null):n}catch(e){return console.error("refreshSession: fetch failed",{url:`${vt}/auth/refresh-session`,message:e.message,stack:e.stack}),null}}function Ju(t,e){const n=Vh(),i=(q.email||n.email)!==t;q.email=t,q.sessionToken=e,q.isVerified=!0,ce=$n({isLoading:!0}),localStorage.setItem(us,JSON.stringify({email:t,sessionToken:e})),i&&Xh()}function qh(){q.email=null,q.sessionToken=null,q.isVerified=!1,ce=$n({isResolved:!0}),localStorage.removeItem(us),localStorage.removeItem(fs)}function Vh(){try{const t=localStorage.getItem(us);if(!t)return{email:null,sessionToken:null};const e=JSON.parse(t);return!e.email||!e.sessionToken?{email:null,sessionToken:null}:e}catch(t){return console.warn("getStoredSession: failed to parse auth session:",t),localStorage.removeItem(us),{email:null,sessionToken:null}}}async function N0(){const e=new URLSearchParams(window.location.search).get("token");if(e){window.history.replaceState({},"",window.location.pathname+window.location.hash);try{const{email:n,sessionToken:i}=await M0(e);Ju(n,i),Gh();const r=Zu();r&&!window.location.hash&&(window.location.hash=r)}catch(n){Zu();const i=n.message||"Sign-in link invalid or expired.";Ee(i,"error"),Ws(),Yn(i,"error")}}else{const{email:n,sessionToken:i}=Vh();if(n&&i){const r=await L0(i);r?Ju(r.email,r.sessionToken):qh()}}ql()}function O0(){try{localStorage.setItem(Na,JSON.stringify({hash:window.location.hash||"#home",ts:Date.now()}))}catch(t){console.warn("rememberSignInReturnSurface: failed to persist return surface:",t)}}function Zu(){try{const t=localStorage.getItem(Na);if(localStorage.removeItem(Na),!t)return null;const{hash:e,ts:n}=JSON.parse(t);return!e||typeof n!="number"||Date.now()-n>wy?null:e}catch(t){return console.warn("consumeSignInReturnSurface: failed to read return surface:",t),null}}function Ws(){const t=document.getElementById("signin-modal");if(!t)return;O0(),document.getElementById("signin-email-input")?.removeAttribute("aria-invalid"),Yn(""),Ge(t)}function Gh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("signin-modal");e&&Ke(e)}function Yn(t,e){const n=document.getElementById("signin-message");n&&(n.textContent=t||"",n.classList.remove("signin-message-success","signin-message-error"),e&&n.classList.add(`signin-message-${e}`))}async function B0(){const t=document.getElementById("signin-email-input"),e=document.getElementById("signin-submit-btn"),n=Ps(t?.value);if(!n||!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(n)||n.length>254){t?.setAttribute("aria-invalid","true"),Yn("Please enter a valid email address.","error");return}t?.removeAttribute("aria-invalid"),e&&(e.disabled=!0,e.textContent="Sending…");const r=sh(n);r&&Yn(r,"error");try{const s=await zh(n),o=s?.code===rh;t&&!o&&(t.value=""),t?.setAttribute("aria-invalid",String(o)),Yn(oh(s,n),o?"error":"success"),e&&(e.disabled=!1,e.textContent=o?"Send Sign-in Link":"Sent!",o||setTimeout(()=>{e.textContent==="Sent!"&&(e.textContent="Send Sign-in Link")},2500))}catch(s){console.error("handleMagicLinkRequest: sendMagicLink failed",{email:n,err:s}),Yn("Something went wrong. Please try again.","error"),e&&(e.disabled=!1,e.textContent="Send Sign-in Link")}}function D0(){q.email=null,q.sessionToken=null,q.isVerified=!1,ce=$n({isResolved:!0}),P_({storage:window.localStorage,onIdentityChanged:ql,onPlanChanged:qs})}const j0=F_({sendLink:zh,getEmail:()=>q.email||"",onState:U0});function U0(t){const e=document.getElementById("send-new-link-btn"),n=document.getElementById("send-new-link-msg");if(!e||!n)return;if(t.status==="pending"){e.disabled=!0,e.textContent="Sending…",n.className="acct-access-msg",n.textContent="Sending a fresh sign-in link…";return}if(t.status==="sent"){e.disabled=!1,e.textContent="Send new link",n.className="acct-access-msg",n.textContent=oh(t.data,q.email||"")||"Link sent — check your email.";return}e.disabled=!1,e.textContent="Send new link",n.className="acct-access-msg error";const i=t.error?.message?`Couldn't send a link right now. ${t.error.message}`:"Couldn't send a link right now. Please try again.";n.textContent=i}async function H0(){await j0()}function W0(){const t=C_(window.localStorage),e=t.length?`Cleared disposable UI caches: ${t.join(", ")}.`:"Nothing disposable to clear.";Ee(`${e} Your run count, identity and stored keys are kept.`,"info")}function z0(){const t=document.getElementById("delete-unavailable-modal");t&&Ge(t,{trigger:document.activeElement})}function q0(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("delete-unavailable-modal");e&&Ke(e)}function ql(){const t=q.isVerified&&!!q.email,e=document.getElementById("auth-signedout"),n=document.getElementById("auth-signedin"),i=document.getElementById("auth-guest-usage");e&&e.classList.toggle("hidden",t),n&&n.classList.toggle("hidden",!t),i&&i.classList.toggle("hidden",t);const r=document.getElementById("auth-user-email");r&&(r.textContent=q.email||"");const s=document.getElementById("access-signed-email");s&&(s.textContent=q.email||""),tw(),qs()}async function Kh(){try{if(typeof FingerprintJS>"u"){console.warn("resolveIdentity: FingerprintJS not loaded, skipping");return}const e=await(await FingerprintJS.load()).get(),n=e.visitorId,i=await fetch(xy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fingerprint:e.visitorId,cookie_id:n})});if(!i.ok)throw new Error(`Identity check HTTP ${i.status}`);const r=await i.json();if(ft.userId=r.user_id,ft.token=r.identity_token||null,ft.status=r.status,ft.resolved=!0,sessionStorage.setItem(Ey,r.user_id),ft.token&&sessionStorage.setItem(Sy,ft.token),r.usage_count!==void 0){const s=pn(),a=(r.usage_month||s)===s?r.usage_count:0;localStorage.setItem(Pn,JSON.stringify({count:a,month:s})),cn()}console.log(`Identity resolved: ${r.status} (${r.user_id.slice(0,8)}...) usage: ${r.usage_count??"n/a"}`)}catch(t){console.error("resolveIdentity failed:",t)}}let Wo=null;function V0(t=5e3){return ft.resolved?Promise.resolve():(Wo||(Wo=Kh().catch(e=>{console.warn("ensureIdentityReady: identity resolution failed",e)})),Promise.race([Wo,new Promise(e=>setTimeout(e,t))]))}function Yh(){const t=pn();try{const e=localStorage.getItem(Pn);return e?JSON.parse(e):{count:0,month:t}}catch(e){return console.warn("getUsageData: failed to parse usage storage",{key:Pn,month:t,err:e}),localStorage.removeItem(Pn),{count:0,month:t}}}function pn(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function sr(){const t=Yh();return t.month!==pn()?{count:0,month:pn()}:t}function G0(){const e={count:sr().count+1,month:pn()};return localStorage.setItem(Pn,JSON.stringify(e)),e}function hi(){return!!ce.isLoading}function Rt(){return!!ce.isResolved}function K0(t){if(!t)return null;const e=String(t).toLowerCase().replace(/[^a-z0-9]+/g,"_");return e==="pro"||e==="professional_plan"?"professional":e==="power_developer"||e==="power_plan"?"power":Object.prototype.hasOwnProperty.call(ds,e)?e:null}function Y0(t){return t&&Object.entries(vh).find(([,e])=>e===t)?.[0]||null}function xr(...t){return t.find(e=>e!=null&&e!=="")}function J0(...t){return t.find(e=>e&&typeof e=="object")||{}}function Z0(t){const e=t.data&&typeof t.data=="object"?t.data:t,n=J0(e.subscription,e.stripeSubscription,e.currentSubscription,e.customer?.subscriptions?.data?.[0],e.subscriptions?.data?.[0],e.subscriptions?.[0]),i=e.metadata||n.metadata||e.customer?.metadata||{},r=xr(e.priceId,e.price_id,e.stripePriceId,e.stripe_price_id,n.priceId,n.price_id,n.plan?.id,n.price?.id,n.items?.data?.[0]?.price?.id,n.items?.[0]?.price?.id,n.lines?.data?.[0]?.price?.id),s=xr(e.status,e.subscriptionStatus,e.subscription_status,n.status,"none"),o=K0(xr(e.tier,e.plan,e.planId,e.plan_id,e.subscriptionTier,e.subscription_tier,e.product,e.productName,n.tier,n.plan,i.tier,i.plan)),a=Iy.has(String(s).toLowerCase()),l=e.active===!0||e.isSubscribed===!0||e.subscribed===!0||e.hasSubscription===!0,u=o||Y0(r)||(a||l?"professional":"free");return $n({tier:u,status:s,periodEnd:xr(e.periodEnd,e.currentPeriodEnd,e.current_period_end,n.current_period_end,n.periodEnd,null),isResolved:!0})}function zs(){return ds[ce.tier]??ds.free}async function X0(){if(q.isVerified&&(!Rt()||hi())&&(await Zh({force:!0}),qs()),q.isVerified&&!Rt())return Ee("Could not verify your subscription. Please refresh or try Manage billing.","error"),!1;const{count:t}=sr(),e=zs();if(t>=e)return Jh(t,e,{openModal:!0}),!1;const n=Math.floor(e*.8);if(t>=n){const i=e-t;Ee(`${i} run${i===1?"":"s"} remaining this month.`,"warning")}return!0}function Xu(){const t=document.getElementById("paywall-exhausted");t&&t.classList.add("hidden")}function Jh(t,e,n={}){en(!0);const i=document.getElementById("walkthrough-modal");i&&Ke(i,{restoreFocus:!1});const r=document.getElementById("ready-state");r&&r.classList.add("hidden");const s=document.getElementById("preview-frame-container");s&&(s.style.display="none");const o=document.getElementById("main-stage-container");o&&o.classList.add("visible");const a=document.getElementById("results-view");a&&a.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar");const l=document.getElementById("pipeline-progress");l&&l.classList.remove("visible");const u=document.getElementById("paywall-exhausted");if(!u){Ee(`You've used all ${e} runs for this month. Upgrade to continue.`,"error"),ui();return}const c=document.getElementById("paywall-exhausted-text");if(c){const f=ce.tier;f==="free"?c.textContent=`You've used all ${e} free generations this month. Upgrade to Pro for 50 generations/month and access to all AI models.`:c.textContent=`You've used all ${e} generations this month on your ${f} plan. Your limit resets next month.`}const d=document.getElementById("paywall-signin-btn");d&&d.classList.toggle("hidden",q.isVerified),u.classList.remove("hidden"),n.openModal&&ui()}function qa(t){return ce.tier==="free"&&$r.includes(t)?hs:t}function Q0(){const t=document.getElementById("code-options-content"),e=document.getElementById("code-generator-model");if(!t||!e)return;const n=ce.tier,r=!(q.isVerified&&!Rt())&&n==="free";Array.from(e.options).forEach(o=>{const a=on(o.value),l=$r.includes(o.value);o.textContent=l&&r?`${a} (PRO)`:a,o.disabled=!1}),r&&$r.includes(e.value)&&(e.value=hs),e.disabled=!1,Hu.has(e)||(e.addEventListener("change",()=>{Rt()&&ce.tier==="free"&&$r.includes(e.value)&&(e.value=hs,ui()),za(e.value),Eh()}),Hu.add(e));let s=document.getElementById("model-selector-free-notice");r?(s||(s=document.createElement("p"),s.id="model-selector-free-notice",s.className="text-xs text-gray-400 mt-1",t.appendChild(s)),s.innerHTML='Free plan — Gemini only. '):s&&s.remove(),za(e.value)}function Vl(){const t=q.isVerified&&!!q.email,e=t&&hi(),n=!t||Rt(),i=sr(),r=n?i.count:0,s=n?zs():0,o=Math.max(0,s-r),a=`${r} / ${s} runs this month`,l=gl,u=n?ce.tier||"free":null,c=document.getElementById("topbar-credits-count");c&&(e?c.textContent="…":n?c.textContent=String(o):c.textContent="—");const d=document.getElementById("credits-balance");d&&(e?d.textContent="Checking plan…":n?d.textContent=a:d.textContent="Plan check failed");const f=document.getElementById("usage-dialog-tier");f&&(e?f.textContent="Checking…":n?f.textContent=l[u]||"Free":f.textContent="Unavailable");const h=document.getElementById("usage-dialog-status");h&&(e?h.textContent="Verifying your subscription…":n?h.textContent="Runs reset at the start of each month.":h.textContent="Could not verify your subscription. Try again or sign out.");const p=document.getElementById("usage-counter");if(p)if(e&&t)p.textContent="Checking plan…",p.className="text-xs text-gray-500";else if(!n&&t)p.textContent="Plan check failed",p.className="text-xs text-red-600 font-medium";else{p.textContent=a;const g=s>0?r/s:0;p.className=g>=1?"text-xs text-red-600 font-medium":g>=.8?"text-xs text-yellow-600 font-medium":"text-xs text-gray-500"}if(!t){const g=document.getElementById("guest-usage-text");if(g){const m=Yh(),v=m.month===pn()?m.count??0:0;g.textContent=`${v} / ${ds.free} generations used`}}ew()}function ew(){if(!(q.isVerified&&!!q.email))return;const e=hi(),n=Rt(),i=sr(),r=n?i.count:0,s=n?zs():0,o=Math.max(0,s-r),a=n?ce.tier||"free":null,l={free:"Free",professional:"Pro",power:"Power"}[a]||"Free",u=q.email||"",c=u.split("@")[0]||u,d=document.getElementById("acct-avatar");d&&(d.textContent=(u[0]||"?").toUpperCase());const f=document.getElementById("acct-name");f&&(f.textContent=c||"—");const h=document.getElementById("acct-plan-tier"),p=document.getElementById("acct-plan-price"),g=document.getElementById("acct-plan-note"),m=document.getElementById("acct-renewal");if(h&&(h.textContent=e?"Checking…":n?l:"Plan unavailable"),p)if(e)p.textContent="—";else if(!n)p.textContent="—";else if(a==="free")p.textContent="$0 / month";else{const E=Ni(Li[a]??0,kl());p.textContent=`${E} / month`}if(g&&(e?g.textContent="Verifying your subscription…":n?a==="free"?g.textContent="No subscription. Upgrade for more generations.":g.textContent="billed monthly through Stripe":g.textContent="Could not verify your subscription. Check billing or sign out."),m){const E=Date.parse(ce.periodEnd||""),P=n&&a!=="free"&&!!ce.periodEnd&&!Number.isNaN(E);if(e)m.textContent="";else if(!n)m.textContent="";else if(a==="free")m.textContent="";else if(P){const $=new Date(E).toLocaleDateString(void 0,{year:"numeric",month:"long",day:"numeric"});m.textContent=`Renews ${$} · reset at the start of each month.`}else m.textContent="Renewal date is not available for this period."}const v=document.getElementById("acct-left-count"),S=document.getElementById("acct-left-limit"),b=document.getElementById("acct-reset-note");v&&(v.textContent=e?"…":n?String(o):"—"),S&&(S.textContent=e?"…":n?String(s):"—"),b&&(e?b.textContent="Checking plan…":n?b.textContent="Runs reset at the start of each month.":b.textContent="Plan check failed. Refresh or manage billing.");const _=document.getElementById("acct-used-count"),x=document.getElementById("acct-meter-fill"),I=document.getElementById("acct-meter-meta"),T=document.getElementById("acct-meter-track");if(_&&(_.textContent=e?"…":n?String(r):"—"),x){const E=n&&s>0?Math.min(100,Math.round(r/s*100)):0;x.style.width=`${E}%`}if(I)if(e)I.textContent="Checking…";else if(!n)I.textContent="Plan check failed";else if(s===0)I.textContent=`${r} of ${s}`;else{const E=Math.round(r/s*100);I.textContent=`${r} of ${s} · ${E}%`}T&&(e?T.setAttribute("aria-label","Checking usage…"):n?T.setAttribute("aria-label",`${r} of ${s} generations used`):T.setAttribute("aria-label","Usage unavailable")),mt()}function cn(){if(Vl(),q.isVerified&&(hi()||!Rt())){Xu();return}const{count:t}=sr(),e=zs();t>=e&&!y.isRunning?Jh(t,e):Xu()}function tw(){Vl()}async function Zh(t={}){const e=t.force===!0;if(!q.isVerified||!q.sessionToken){ce=$n({isResolved:!0});return}ce={...ce,isLoading:!0,error:null};const n=localStorage.getItem(fs);if(!e&&n)try{const{data:i,email:r,ts:s,version:o}=JSON.parse(n);if(o===Wu&&r===q.email&&Date.now()-s<300*1e3){ce={...i,isLoading:!1,isResolved:i.isResolved!==!1};return}}catch(i){console.warn("Failed to parse subscription cache:",i,"| raw value:",n)}try{const r=await(await fetch(`${vt}/stripe/get-subscription`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken,user_id:ft.userId})})).json();if(r.error){if(["unauthorized","invalid session","expired session"].some(o=>String(r.error).toLowerCase().includes(o))){qh(),ql();return}ce=$n({isResolved:!1,error:r.error});return}ce=Z0(r),localStorage.setItem(fs,JSON.stringify({version:Wu,data:ce,email:q.email,ts:Date.now()}))}catch(i){console.error("fetchSubscription failed:",i),ce={...ce,isLoading:!1,isResolved:!1,error:i.message}}}function Xh(){localStorage.removeItem(fs)}async function nw(t){if(!q.isVerified||!q.sessionToken){Qh(),Ws();return}if(!vh[t]){Ee("Invalid plan selected.","error");return}const e=document.getElementById(`checkout-btn-${t}`);e&&(e.disabled=!0,e.textContent="Redirecting…");try{const i=await(await fetch(`${vt}/stripe/create-checkout-session-intl`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tierId:t,sessionToken:q.sessionToken,currency:kl()})})).json();if(i.error||!i.url)throw new Error(i.error||"Failed to create checkout session");const{url:r}=i;window.location.href=r}catch(n){console.error("startCheckout failed:",n),e&&(e.disabled=!1,e.textContent="Subscribe"),Ee("Could not start checkout. Please try again.","error")}}async function iw(t){if(!q.isVerified||!q.sessionToken){Ws();return}const e=t||document.getElementById("manage-billing-btn"),n=e?e.textContent:"";e&&(e.disabled=!0,e.textContent="Loading…");try{const r=await(await fetch(`${vt}/stripe/create-portal-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken})})).json();if(r.error||!r.url)throw new Error(r.error||"Failed to open billing portal");const{url:s}=r;window.location.href=s}catch(i){console.error("openCustomerPortal failed:",i),e&&(e.disabled=!1,e.textContent=n),Ee("Could not open billing portal. Please try again.","error")}}const bs=new Set;function rw(){bs.forEach(t=>t.abort()),bs.clear()}async function Es(t,e,n,i={},r=[]){const o=new AbortController;bs.add(o);let a=!1;const l=setTimeout(()=>{a=!0,o.abort()},12e4);try{const u=await fetch(by,{method:"POST",headers:{"Content-Type":"application/json",...ft.token?{Authorization:`Bearer ${ft.token}`}:{}},signal:o.signal,body:JSON.stringify({user_id:ft.userId,step:t,model:e,prompt:n,images:r,context:i})}),c=await u.text();let d={};try{d=c?JSON.parse(c):{}}catch{d={}}if(u.status===429){d.serverCount!==void 0&&(localStorage.setItem(Pn,JSON.stringify({count:d.serverCount,month:pn()})),cn());const p=new Error(d.message||"Monthly usage limit reached. Upgrade to continue.");throw p.isUsageLimit=!0,p.pipelineStep=t,p}const f=mv(d,t);if(f)throw f;if(console.log(`[BuildShip] ${t} response keys:`,Object.keys(d),"content type:",typeof d.content),!u.ok)throw new Error(`${d.message||d.error||"BuildShip pipeline error"} (HTTP ${u.status})`);if(t==="generator")if(d.usage_status==="success"&&Number.isFinite(d.usage_count)){const p=pn();(d.usage_month||p)===p&&(localStorage.setItem(Pn,JSON.stringify({count:d.usage_count,month:p})),cn())}else G0(),cn();let h=d.output||d.content;if(!h){const p=c?` (body: ${c.slice(0,120)})`:"";throw new Error(`BuildShip returned no output for step "${t}"${p}`)}return Array.isArray(h)&&(h=h.map(p=>typeof p=="string"?p:p.text||"").join("")),typeof h!="string"&&(h=JSON.stringify(h)),h}catch(u){if(u.name==="AbortError"){if(a)throw new Error(`BuildShip ${t} timed out after ${12e4/1e3}s`);const c=new Error(`BuildShip ${t} request cancelled`);throw c.isPipelineCancel=!0,c}throw u instanceof TypeError?new Error(`BuildShip unreachable: ${u.message}`):u}finally{clearTimeout(l),bs.delete(o)}}let Va=!1;function sw(){const e=new URLSearchParams(window.location.search).get("checkout");return e==="success"?(window.history.replaceState({},"",window.location.pathname+window.location.hash),Xh(),Va=!0):e==="cancel"&&(window.history.replaceState({},"",window.location.pathname+window.location.hash),Ee("Checkout cancelled.","info")),e}function ow(){if(!Va)return;Va=!1;const t=ce.tier!=="free";Ee(t?"Subscription active! Your plan is live.":"Checkout complete — confirming your subscription. Check Manage billing if it does not update.",t?"success":"info")}function qs(){const t=q.isVerified&&!!q.email,e=ce.tier,n=t&&hi(),i=!t||Rt(),r=document.getElementById("subscription-tier-badge");if(r){const a=gl,l={free:"bg-gray-100 text-gray-600",professional:"bg-indigo-100 text-indigo-700",power:"bg-purple-100 text-purple-700",unresolved:"bg-red-50 text-red-600"};r.textContent=n?"Checking…":i?a[e]||"Free":"Plan unavailable",r.className=`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${i?l[e]||l.free:l.unresolved}`}const s=document.getElementById("upgrade-prompt");s&&s.classList.toggle("hidden",!t||n||!i||e!=="free");const o=document.getElementById("manage-billing-btn");o&&o.classList.toggle("hidden",!t||n||i&&e==="free"),aw(i?e:null),Q0(),Eh(),cn(),_p()}function aw(t){const e=["bg-gray-100","text-gray-500","cursor-default"];Object.entries({professional:{btnId:"checkout-btn-professional",defaultText:"Subscribe"},power:{btnId:"checkout-btn-power",defaultText:"Subscribe"}}).forEach(([r,{btnId:s,defaultText:o}])=>{const a=document.getElementById(s);a&&(r===t?(a.disabled=!0,a.textContent="Current plan",a.classList.add(...e)):(a.disabled=!1,a.textContent=o,a.classList.remove(...e)))});const i=document.getElementById("free-tier-current");i&&i.classList.toggle("hidden",t!=="free")}function lw(){document.querySelectorAll(".pm-card[data-tier]").forEach(t=>{const e=t.dataset.tier,n=iv[e];if(!n)return;const i=t.querySelector("ul.pm-features");if(i){i.innerHTML="";for(const r of n){const s=document.createElement("li");s.textContent=r,i.appendChild(s)}}})}function Ga(){const t=kl(),e=document.getElementById("pro-price"),n=document.getElementById("power-price"),i=document.getElementById("plans-pro-price"),r=document.getElementById("plans-power-price"),s=document.getElementById("pro-price-note"),o=document.getElementById("power-price-note"),a=document.getElementById("plans-pro-price-note"),l=document.getElementById("plans-power-price-note");e&&(e.textContent=Ni(Li.professional,t)),n&&(n.textContent=Ni(Li.power,t)),i&&(i.textContent=Ni(Li.professional,t)),r&&(r.textContent=Ni(Li.power,t));const u="billed monthly";s&&(s.textContent=u),o&&(o.textContent=u),a&&(a.textContent=u),l&&(l.textContent=u)}function ui(){Ga();const t=document.getElementById("pricing-modal");t&&Ge(t),Oy().then(()=>Ga())}function Qh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("pricing-modal");e&&Ke(e)}function Ee(t,e="info"){const n={success:"bg-green-600 text-white",error:"bg-red-600 text-white",warning:"bg-amber-500 text-white",info:"bg-gray-800 text-white"},i=document.createElement("div");i.className=`fixed bottom-6 left-1/2 -translate-x-1/2 px-5 py-3 rounded-lg text-sm font-medium shadow-lg z-50 transition-opacity duration-300 ${n[e]||n.info}`,i.textContent=t,document.body.appendChild(i),setTimeout(()=>{i.style.opacity="0",setTimeout(()=>i.remove(),300)},3500)}document.addEventListener("DOMContentLoaded",async()=>{ev(),hljs.configure({tabReplace:" ",classPrefix:"hljs-"}),cw(),window.__heroField=G_(),window.__pipelineLogo=Z_(),_h=_y({onSubmit:ir}),Oa=(async()=>{try{await N0(),sw(),await Zh()}catch(n){console.warn("Startup auth/subscription initialization failed:",n)}})(),await Oa,ow(),qs(),Ga(),lw(),await d0(),o0();const t=document.getElementById("flutterflow-endpoint-select");if(t){const n=_t();t.value=n}Rh(),Kh();const e=document.getElementById("pipeline-input");e&&(e.addEventListener("input",()=>{Xt===2&&e.value.trim().length>0&&(Rl(),Ls())}),e.addEventListener("blur",()=>{const n=document.getElementById("walkthrough-modal");Xt===2&&n&&Ge(n)}),e.addEventListener("keydown",n=>{if(n.key==="Tab"){const i=document.getElementById("walkthrough-modal");Xt===2&&i&&setTimeout(()=>{Ge(i)},100)}})),window.addEventListener("commitStateChange",n=>{const{state:i}=n.detail;i===ee.PREPARING||i===ee.VALIDATING||i===ee.PUSHING?(Oe.phaseId||op(),ed(i)):(i===ee.SUCCESS||i===ee.ERROR)&&(ed(i),setTimeout(Kl,1e3))}),tc()});function cw(){const t=document.getElementById("preview-frame-container");t&&(t.style.display="")}function uw(){const t=document.getElementById("welcome-video-player");t&&(t.addEventListener("click",Ln),document.addEventListener("keydown",Ln))}function Ln(){const t=document.getElementById("preview-frame-container"),e=document.getElementById("main-stage-container"),n=document.getElementById("ready-state");t&&(t.style.display="none"),e&&e.classList.add("visible"),n&&n.classList.remove("hidden");const i=document.getElementById("welcome-video-player");i&&i.removeEventListener("click",Ln),document.removeEventListener("keydown",Ln),Rh()}let zi=null;async function dw(){const t=document.getElementById("confirm-project-select");if(!t)return;const e=++Ku,n=()=>e===Ku,i=await Te("flutterflow"),r=await Te("flutterflow_project_id");if(n()){if(!i){t.innerHTML='',t.disabled=!0;return}t.disabled=!1,t.innerHTML='';try{const o=await new fi(i,"","main",_t()).listProjects();if(!n())return;if(!o||o.length===0){t.innerHTML='';return}t.innerHTML='',o.forEach(a=>{const l=document.createElement("option");l.value=a.id||a.projectId||"",l.textContent=a.name||a.projectName||`Project ${a.id}`,t.appendChild(l)}),r&&(t.value=r)}catch(s){if(!n())return;console.error("Failed to load projects for deploy:",s),t.innerHTML=''}}}function fw(){return document.getElementById("confirm-project-select")?.value?.trim()||null}function Gl(t,e,n,i=null){zi={codeInfo:t,checks:e,deps:n,bundlePlan:i},document.getElementById("confirm-file-name").textContent=t.fileName,document.getElementById("confirm-artifact-type").textContent=t.artifactType,document.getElementById("confirm-file-size").textContent=`${(t.content.length/1024).toFixed(1)} KB`,document.getElementById("confirm-line-count").textContent=i?`${i.fileEntries.length} files`:t.content.split(` +`).length,dw();const r=document.getElementById("confirm-deps-list"),s=document.getElementById("confirm-deps-section");n&&Object.keys(n).length>0?(r.innerHTML=Object.entries(n).map(([u,c])=>{const d=c?`at least ${Zt(c)}`:"version resolved from your project";return`
  • • ${Zt(u)}: ${d}
  • `}).join(""),s.classList.remove("hidden")):s.classList.add("hidden");const o=document.getElementById("confirm-warnings-list"),a=document.getElementById("confirm-warnings-section");e.warnings&&e.warnings.length>0?(o.innerHTML=e.warnings.map(u=>`
  • • ${Zt(u)}
  • `).join(""),a.classList.remove("hidden")):a.classList.add("hidden"),document.getElementById("confirm-code-preview").textContent=t.content,document.getElementById("code-preview-content").classList.add("hidden"),document.getElementById("code-preview-chevron").style.transform="rotate(0deg)";const l=document.getElementById("commit-confirm-modal");l&&Ge(l)}function ep(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-confirm-modal");e&&Ke(e),zi=null}function hw(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-success-modal");e&&Ke(e);const n=["success-message","success-project-id","success-file-name","success-artifact-type","success-time","success-size"];for(const s of n){const o=document.getElementById(s);o&&(o.textContent="")}const i=document.getElementById("success-warnings-section");i&&i.classList.add("hidden");const r=document.getElementById("success-warnings-list");r&&(r.innerHTML="")}function tp(t){const e=(m,v)=>{const S=document.getElementById(m);S&&(S.textContent=v||"")},n=t.metadata?.fileName||"",i=t.metadata?.projectId||"",r=t.metadata?.artifactType||"",s=t.elapsedTime?`${(t.elapsedTime/1e3).toFixed(1)}s`:"",o=t.metadata?.codeSize?`${(t.metadata.codeSize/1024).toFixed(1)} KB`:"";e("success-message",t.message||"Code committed successfully!"),e("success-project-id",i),e("success-file-name",n),e("success-artifact-type",r),e("success-time",s),e("success-size",o);const a=t.addedDependencies||[],l=document.getElementById("success-deps-row");l&&l.classList.toggle("hidden",a.length===0),e("success-deps",a.join(", "));const u=document.getElementById("success-open-ff-link");u&&i&&(u.href=`https://app.flutterflow.io/project/${i}`);const c=document.getElementById("success-warnings-section"),d=document.getElementById("success-warnings-list"),f=t.unverified||[],h=t.approximate||[],p=t.warnings||[];(p.length>0||f.length>0||h.length>0)&&c&&d&&(d.innerHTML=[...f.map(m=>`
  • Not verified before deploying: ${z(String(m))}
  • `),...h.map(m=>`
  • Verified approximately: ${z(String(m))}
  • `),...p.map(([m,v])=>`
  • ${z(m)}: ${z(String(v))}
  • `)].join(""),c.classList.remove("hidden"));const g=document.getElementById("commit-success-modal");g&&Ge(g)}function np(t){Kl(),T0(t)}function ip(t,{heading:e,title:n,guidance:i}){const r=t.targetIdentity||{},s=document.getElementById("commit-terminal-modal");if(!s)return!1;const o=(h,p)=>{const g=document.getElementById(h);g&&(g.textContent=p||"")};o("terminal-heading",e),o("terminal-title",n),o("terminal-message",t.error||t.message||"");const a=document.getElementById("terminal-identity-list");if(a){const h=[["Project",r.projectId||t.metadata?.projectId],["Endpoint",r.endpoint],["File",r.fileName||t.metadata?.fileName],["Artifact",r.artifactType||t.metadata?.artifactType]];a.innerHTML=h.map(([p,g])=>`
    ${z(p)}:${z(String(g??"—"))}
    `).join("")}const l=document.getElementById("terminal-file-outcomes");let u=t.errorMap;u&&!(u instanceof Map)&&(u=new Map(Object.entries(u))),l&&u&&u.size>0?(l.innerHTML=[...u.entries()].map(([h,p])=>`
  • ${z(h)}: ${z(El(p))}
  • `).join(""),l.classList.remove("hidden")):l&&l.classList.add("hidden");const c=document.getElementById("terminal-guidance");c&&(c.innerHTML=i);const d=document.getElementById("terminal-open-ff-link"),f=r.projectId||t.metadata?.projectId;return d&&(d.href=f?`https://app.flutterflow.io/project/${f}`:"https://app.flutterflow.io/"),Ge(s),!0}function rp(t){ip(t,{heading:"Deploy partially applied",title:"Some custom classes reached FlutterFlow, but the deploy did not fully complete.",guidance:"The custom classes the runner confirmed are already in your project and are not lost. Review the per-file errors above, fix them in FlutterFlow or regenerate, then deploy again. Open the project to see exactly what landed."})}function sp(t){ip(t,{heading:"Deploy outcome not yet known",title:"This browser stopped waiting before the FlutterFlow server reported a result.",guidance:"The deploy may still be finishing on the server — it was not cancelled. Open your FlutterFlow project and confirm whether the class landed before retrying, so you do not push a duplicate or build on top of an unknown state."})}function pw(t){t&&t.target!==t.currentTarget||Ke(document.getElementById("commit-terminal-modal"))}function gw(){const t=document.getElementById("code-preview-content"),e=document.getElementById("code-preview-chevron");t.classList.contains("hidden")?(t.classList.remove("hidden"),e.style.transform="rotate(90deg)"):(t.classList.add("hidden"),e.style.transform="rotate(0deg)")}const Qu={prepare:{message:"Preparing your code...",start:4,end:14},validate:{message:"Checking FlutterFlow credentials...",start:14,end:22},project:{message:"Reading your FlutterFlow project...",start:22,end:40},provision:{message:"Creating custom classes in FlutterFlow...",start:40,end:82},package:{message:"Packaging files for upload...",start:82,end:88},push:{message:"Pushing to FlutterFlow...",start:88,end:97},done:{message:"Complete!",start:100,end:100}},mw=[{after:0,text:"Starting a FlutterFlow build runner..."},{after:12,text:"Preparing the FlutterFlow AI workspace..."},{after:35,text:"Uploading your custom classes..."},{after:60,text:"FlutterFlow is applying the changes..."},{after:100,text:"Still working — this can take a couple of minutes..."}],Oe={sequence:[],phaseId:null,phaseStartedAt:null,timer:null,substatus:null,liveSubstatus:!1,start({withProvisioning:t=!1}={}){this.sequence=["prepare","validate","project"],t&&this.sequence.push("provision"),this.sequence.push("package","push","done");const e=document.getElementById("commit-progress-overlay");e&&(wu(e,!0,"Deploying to FlutterFlow"),Ge(e)),this.set("prepare")},set(t,e=null){if(!(!Qu[t]||t===this.phaseId)){if(!this.sequence.includes(t)){const n=this.sequence.indexOf("package");this.sequence.splice(n===-1?this.sequence.length:n,0,t)}this.phaseId=t,this.phaseStartedAt=Date.now(),this.substatus=e,this.liveSubstatus=!1,this.render(),this.timer&&clearInterval(this.timer),t!=="done"&&(this.timer=setInterval(()=>this.render(),500))}},setSubstatus(t){t&&(this.liveSubstatus=!0,this.substatus=t,this.render())},render(){const t=Qu[this.phaseId];if(!t)return;const e=(Date.now()-this.phaseStartedAt)/1e3,n=t.start+(t.end-t.start)*(1-Math.exp(-e/25));if(this.phaseId==="provision"&&!this.liveSubstatus){const o=mw.filter(a=>e>=a.after).pop();o&&(this.substatus=o.text)}const i=this.sequence.indexOf(this.phaseId),s=[`Step ${i===-1?1:i+1} of ${this.sequence.length}`];e>=5&&s.push(vw(e)),ap(this.phaseId==="done"?100:n,t.message,s.join(" · "),this.substatus)},stop(){this.timer&&clearInterval(this.timer),this.timer=null,this.phaseId=null;const t=document.getElementById("commit-progress-overlay");t&&(wu(t,!1),Ke(t,{force:!0,restoreFocus:!1}))}};function vw(t){const e=Math.floor(t);return e<60?`${e}s elapsed`:`${Math.floor(e/60)}m ${String(e%60).padStart(2,"0")}s elapsed`}function op(t){Oe.start(t)}function Kl(){Oe.stop()}function ap(t,e,n,i=null){const r=document.getElementById("commit-progress-bar"),s=document.getElementById("progress-message"),o=document.getElementById("progress-detail"),a=document.getElementById("progress-substatus");r&&(r.style.width=`${Math.round(t*10)/10}%`),s&&(s.textContent=e),o&&(o.textContent=n),a&&(a.textContent=i||"",a.classList.toggle("hidden",!i))}function ed(t){const e={[ee.PREPARING]:"prepare",[ee.VALIDATING]:"validate",[ee.PUSHING]:"project",[ee.SUCCESS]:"done"};if(t===ee.ERROR){Oe.timer&&clearInterval(Oe.timer),Oe.timer=null,ap(100,"Failed","Error occurred");return}const n=e[t];n&&Oe.set(n)}function _w(t){return t.bundlePlan?t.bundlePlan.fileEntries.some(e=>e.type===J.CODE_FILE):t.codeInfo?.codeType===J.CODE_FILE}let lp=!1;function cp(t){lp=t;const e=document.querySelector("#commit-confirm-modal button[data-deploy-confirm]");e&&(e.disabled=t),[...document.querySelectorAll("[data-deploy-start]"),...document.querySelectorAll("#btn-deploy-to-ff")].forEach(i=>{i.disabled=t})}function td(t){Kl(),cp(!1);const e=hh(t);e===Xe.COMMITTED?tp(t):e===Xe.PARTIAL?rp(t):e===Xe.UNCONFIRMED?sp(t):np(t)}async function yw(){if(!zi){console.error("No pending commit data");return}if(lp){console.warn("Deploy already in flight; ignoring duplicate confirm.");return}const t=zi;if(zi=null,Wi=fw(),ep(),cp(!0),op({withProvisioning:_w(t)}),t.bundlePlan){const o=await b0(t.bundlePlan,{pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});Wi=null,td(o);return}const{codeInfo:e}=t,{artifactType:n,artifactName:i,fileName:r}=Th(),s=await w0(e.content,{artifactType:n,artifactName:i,fileName:r,pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});Wi=null,td(s)}window.runThinkingPipeline=ir;window.toggleStep=x0;window.toggleSection=S0;window.selectWorkflowStep=nt;window.copyCode=I0;window.retryWithDifferentModel=P0;window.openApiKeysModal=Fl;window.closeApiKeysModal=Ph;window.walkthroughConnectAccount=Jy;window.closeWalkthroughModal=Xy;window.openWalkthroughModal=Zy;window.advanceWalkthrough=Rl;window.commitToFlutterFlow=y0;function ww(){const t=document.getElementById("pipeline-input");t&&t.focus()}function bw(){const t=document.getElementById("advanced-settings");t&&(t.open=!0);const e=document.getElementById("code-generator-model");e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),e.focus(),e.click())}window.focusPromptInput=ww;window.openModelSelector=bw;window.handlePromptImageSelect=Ly;window.removePromptImage=Ny;window.saveApiKeys=t0;window.validateFlutterFlowConnection=$l;window.clearAllApiKeys=n0;window.toggleKeyVisibility=l0;window.handleWelcomeVideoEnd=uw;window.dismissWelcomeVideo=Ln;window.initiateCommitToFlutterFlow=F0;window.updateFlutterFlowCredentialStatus=$0;window.openCommitConfirmModal=Gl;window.closeCommitConfirmModal=ep;window.closeCommitSuccessModal=hw;window.closeCommitTerminalModal=pw;window.showCommitPartialModal=rp;window.showCommitUnconfirmedModal=sp;window.showCommitSuccessModal=tp;window.showCommitFailureModal=np;window.toggleCodePreview=gw;window.confirmCommitToFlutterFlow=yw;window.runRefinement=Uh;window.regenerateFromPastedErrors=Hh;window.clearErrorInput=A0;window.setFlutterFlowEndpoint=Yy;window.getFlutterFlowEndpoint=_t;window.commitProgress=Oe;window.openSignInModal=Ws;window.closeSignInModal=Gh;window.handleMagicLinkRequest=B0;window.handleSignOut=D0;window.handleSendNewLink=H0;window.handleClearCache=W0;window.handleDeleteAccount=z0;window.closeDeleteUnavailableModal=q0;window.startCheckout=nw;window.openCustomerPortal=iw;window.openPricingModal=ui;window.closePricingModal=Qh;let Or=null,up=null,Nn={1:"pending",2:"pending",3:"pending"},Yl=1,Jl=null;const Vs={1:"Prompt Architect",2:"Code Generator",3:"Code Review"},Ew={1:"Understanding your prompt",2:"Generating Dart code",3:"Running the code audit"},Sw={1:"Prompt understood",2:"Dart code generated",3:"Code audit complete"};function Gs(){return y.runId+=1,y.runId}function re(t){return t===void 0||t===y.runId}function xw(){y.runId+=1}function Zl(t){return document.getElementById(`pdot-${t}`)}function Ka(t){const e=document.getElementById("btn-run-pipeline")||document.getElementById("hero-send");e&&(e.disabled=t,e.classList.toggle("is-busy",t),t?e.setAttribute("aria-busy","true"):e.removeAttribute("aria-busy"))}function Ks(t){const e=document.getElementById("pipeline-progress");e&&(e.dataset.runState=t)}function Fn(t,e){Nn[t]=e;const n=Zl(t);if(!n)return;n.dataset.state=e,n.disabled=e==="pending"||e==="skipped";const i=Vs[t],r={pending:"not started",active:"in progress",done:"complete",failed:"failed",skipped:"not run"};n.setAttribute("aria-label",`Step ${t} of 3, ${i}: ${r[e]||e}`),e==="active"?n.setAttribute("aria-current","step"):n.removeAttribute("aria-current")}function Iw(){return[1,2,3].filter(t=>Nn[t]==="done").length}function Ys(){const t=document.getElementById("pipeline-progress-fill");t&&(t.style.width=`${Iw()/3*100}%`);const e=document.getElementById("progress-stage-count");e&&(e.textContent=`Step ${Yl} of 3`)}function Js(t,{done:e=!1}={}){const n=document.getElementById("progress-title-text"),i=document.getElementById("progress-substep-text"),r=Nn[t],s=e||r==="done";if(n&&(n.textContent=s?Sw[t]:Ew[t]),i){const o=s?" — complete":r==="failed"?" — stopped":"";i.textContent=`Step ${t} of 3 — ${Vs[t]}${o}`}}function kw(t){Nn[t]==="pending"||Nn[t]==="skipped"||(Jl=t,[1,2,3].forEach(e=>{const n=Zl(e);n&&n.setAttribute("aria-pressed",String(e===t))}),Js(t))}function Xl(){Jl=null,[1,2,3].forEach(t=>{const e=Zl(t);e&&e.removeAttribute("aria-pressed")})}function dp(t){const e=document.getElementById("pipeline-note");e&&(e.textContent=t||"",e.hidden=!t)}function Cw(t,e,n){re(n)&&dp(`${on(t)} did not answer. Continuing on ${on(e)}.`)}function Ql(){const t=document.getElementById("pipeline-failure");if(!t)return;t.hidden=!0;const e=document.getElementById("pipeline-failure-actions");e&&e.replaceChildren()}const Aw=1120;function Pw(){const t=getComputedStyle(document.documentElement).getPropertyValue("--t-morph").trim(),e=Number.parseFloat(t);return Number.isFinite(e)&&e>0?e:Aw}let Xn=null,Br=null;function Fw(){return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}function un(){if(Br){try{Br.cancel()}catch{}Br=null}Xn&&(Xn.remove(),Xn=null),window.removeEventListener("resize",un)}function fp(t,e){if(un(),Fw()||!t||!e||!document.body||typeof Element.prototype.animate!="function")return;const n=t.getBoundingClientRect(),i=e.getBoundingClientRect();if(!n.width||!n.height||!i.width||!i.height)return;const r=document.createElement("div");r.className="composer-morph",r.setAttribute("aria-hidden","true"),r.style.cssText=`left:${i.left}px;top:${i.top}px;width:${i.width}px;height:${i.height}px;opacity:0;`,document.body.appendChild(r);const s=n.left+n.width/2-(i.left+i.width/2),o=n.top+n.height/2-(i.top+i.height/2),a=n.width/i.width,l=n.height/i.height,u=`translate(${s}px,${o}px) scale(${a},${l})`,c=r.animate([{transform:u,opacity:0,offset:0,easing:"cubic-bezier(.2,0,0,1)"},{transform:u,opacity:1,offset:.14,easing:"cubic-bezier(.4,0,.2,1)"},{transform:`translate(${s}px,${o}px) scale(${a*.93},${l*.93})`,opacity:1,offset:.28,easing:"cubic-bezier(.32,1.38,.5,1)"},{transform:"translate(0px,0px) scale(1,1)",opacity:1,offset:1}],{duration:Pw(),fill:"both"});Xn=r,Br=c,window.addEventListener("resize",un),c.onfinish=()=>{if(Xn!==r)return;const d=r.animate([{opacity:1},{opacity:0}],{duration:260,fill:"forwards"});d.onfinish=()=>{Xn===r&&un()}}}function Rw(){const e=document.getElementById("composer")?.getBoundingClientRect();e&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{fp({getBoundingClientRect:()=>e},document.getElementById("main-stage-container"))})})}function Tw(){fp(document.getElementById("pipeline-progress"),document.getElementById("main-stage-container"))}window.addEventListener("hashchange",un);window.addEventListener("popstate",un);function Zs(t={}){const{prompt:e=null,runId:n}=t;if(!re(n))return;Qs(),en(!0);const i=document.getElementById("pipeline-progress"),r=document.getElementById("results-view"),s=document.getElementById("ready-state");if(s&&s.classList.add("hidden"),r&&r.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),i&&i.classList.add("visible"),Ks("running"),e!==null){const a=document.getElementById("pipeline-submitted-prompt");a&&(a.textContent=e)}up=Date.now();const o=document.getElementById("progress-elapsed");o&&(o.textContent="0s"),Nn={1:"pending",2:"pending",3:"pending"},Xl(),Ql(),dp(""),[1,2,3].forEach(a=>Fn(a,"pending")),Pt(1,n),$w()}function Pt(t,e){re(e)&&(Yl=t,Xl(),[1,2,3].forEach(n=>{n===t?Fn(n,"active"):nt&&Fn(n,"pending")}),Js(t),Ys())}function Qt(t,e){re(e)&&(Fn(t,"done"),Jl===null&&Js(t,{done:!0}),Ys())}function hp(t,{stage:e=1,runId:n,retry:i=pp}={}){if(!re(n))return;Xs(),Qs(),un(),Ks("failed"),en(!0);const r=document.getElementById("pipeline-progress");r&&r.classList.add("visible");const s=document.getElementById("results-view");s&&s.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),Fn(e,"failed"),[1,2,3].forEach(p=>{p>e&&Fn(p,"pending")}),Yl=e,Xl(),Js(e),Ys();const o=gh(t),a=document.getElementById("pipeline-failure"),l=document.getElementById("pipeline-failure-title"),u=document.getElementById("pipeline-failure-message"),c=document.getElementById("pipeline-failure-hint"),d=document.getElementById("pipeline-failure-actions");if(!a||!l||!u||!d)return;if(a.dataset.kind=o.kind,l.textContent=`${Vs[e]}: ${o.title}`,u.textContent=o.message,c){const p=o.detail&&o.detail!==o.message?o.detail:"";c.textContent=p,c.hidden=!p}d.replaceChildren();const f=[o.canUpgrade&&{id:"upgrade",label:"View plans",variant:"primary",onClick:()=>ui()},o.canRetry&&{id:"retry",label:"Retry",variant:o.canUpgrade?"secondary":"primary",onClick:i},o.canEdit&&{id:"edit",label:"Edit prompt",variant:"secondary",onClick:Ya}].filter(Boolean);!o.canEdit&&!o.canRetry&&f.push({id:"edit",label:"Back to prompt",variant:"secondary",onClick:Ya}),f.forEach(p=>{const g=document.createElement("button");g.type="button",g.textContent=p.label,g.dataset.action=p.id,g.dataset.variant=p.variant,g.addEventListener("click",p.onClick),d.appendChild(g)}),a.hidden=!1;const h=d.querySelector("button");h&&h.focus({preventScroll:!0})}function Ya(){xw(),rw(),y.isRunning=!1,Ka(!1),tn(),Ks("settled"),un(),Xs(),Qs(),Ql();const t=document.getElementById("pipeline-progress");t&&t.classList.remove("visible"),en(!1);const e=document.getElementById("pipeline-input");e&&(y.submittedPrompt&&(e.value=y.submittedPrompt,e.dispatchEvent(new Event("input",{bubbles:!0}))),e.focus({preventScroll:!0}),e.setSelectionRange(e.value.length,e.value.length))}function pp(){const t=document.getElementById("pipeline-input");t&&y.submittedPrompt&&(t.value=y.submittedPrompt,t.dispatchEvent(new Event("input",{bubbles:!0}))),Ne=y.submittedImages.slice(),ln(),Ql(),ir()}function $w(){Xs(),Or=setInterval(()=>{const t=(Date.now()-up)/1e3,e=document.getElementById("progress-elapsed");e&&(e.textContent=`${Math.floor(t)}s`)},250)}function Xs(){Or&&(clearInterval(Or),Or=null)}let qi=null;function Qs(){qi&&(clearTimeout(qi),qi=null)}function or(){Xs(),Qs(),Ks("settled"),Ys();const t=document.getElementById("pipeline-progress-fill");qi=setTimeout(()=>{qi=null;const e=document.getElementById("pipeline-progress");e&&e.classList.remove("visible"),t&&(t.style.width="0%")},400)}function Rn(t,e=""){const n={pass:'',warning:'',fail:'',info:''};return``}function gp(t){return{pass:"Passed review",warning:"Needs attention",fail:"Blocking issues"}[t]||"Needs attention"}function Mw(){return l_({bundle:y.artifactBundle,reviewResult:y.step3Result})}function Lw(t){return` +
    + ${Rn(t.severity)} +
    +
    ${z(t.message)}
    + ${t.suggestion?`
    ${z(t.suggestion)}
    `:""} + ${z(t.source)} +
    +
    + `}function Nw(t){return` +
  • +
    + ${z(t.title)} + ${t.detail&&t.detail!==t.title?`

    ${z(t.detail)}

    `:""} +
    +
  • + `}function Ow(t){const e=document.getElementById("results-summary-detail"),n=document.getElementById("results-title");if(!e)return;n&&(n.textContent=t.title);const i=t.score,r=i==null?"neutral":i>=80?"pass":i>=60?"warning":"fail",s=i==null?"":i>=80?"Strong":i>=60?"Needs work":"High risk",o=t.findings.length?` +
      + ${t.findings.map(u=>` +
    • + ${Rn(u.severity)} + + ${z(u.message)} + ${u.suggestion?`${z(u.suggestion)}`:""} + +
    • + `).join("")} +
    + `:"",a=t.warnings.length?` +
    +

    ${Rn("warning")} Bundle

    +
      + ${t.warnings.map(u=>`
    • ${z(u)}
    • `).join("")} +
    +
    + `:"",l=t.manualSteps.length?` +
    +

    ${Rn("info")} Complete in FlutterFlow

    +

    For your information — these don't block the deploy. Finish them by hand in the FlutterFlow editor once the code is pushed.

    +
      + ${t.manualSteps.map(u=>` +
    • + ${z(u.title)} + ${u.detail&&u.detail!==u.title?`${z(u.detail)}`:""} +
    • + `).join("")} +
    +
    + `:"";e.innerHTML=` +
    +
    +

    ${z(t.summary)}

    + ${o} + ${a} + ${l} +
    +
    + +
    + Is the generated code correct? +
    + + +
    + +
    +
    +
    + `}function Bw(t){const e=t.artifacts.find(l=>l.id===y.selectedArtifactId)||t.artifacts[0];if(!e)return"";const n={pass:{icon:"pass",message:"No file-specific issues were found."},warning:{icon:"warning",message:"This file needs attention, but Code Review did not return a specific finding."},fail:{icon:"fail",message:"This file is blocked, but Code Review did not return a specific finding."}}[e.status],i=e.findings.length?e.findings.map(Lw).join(""):`
    ${Rn(n.icon)} ${z(n.message)}
    `,r=e.dependencies?.length?e.dependencies.map(l=>` +
  • ${z(l.name)}${l.version?` ${z(l.version)}`:""}${l.reason?`

    ${z(l.reason)}

    `:""}
  • + `).join(""):'
  • No external packages
  • ',s=e.imports?.length?e.imports.map(l=>`${z(l)}`).join(""):'No imports returned',o=e.publicApi?.length?e.publicApi.map(l=>`${z(l)}`).join(""):'No public API signature returned',a=e.relationships.length?e.relationships.map(l=>` +
  • ${z(l.from||"Bundle")} ${z(l.type)} ${z(l.to||"Bundle")}${l.description?`

    ${z(l.description)}

    `:""}
  • + `).join(""):'
  • No relationships for this file
  • ';return` +
    +
    + ${Rn(e.status)} ${z(gp(e.status))} +

    ${z(e.artifactName)}

    + ${e.description?`

    ${z(e.description)}

    `:""} +
    +
    + ${z(e.artifactType)} + ${z(e.fileName)} +
    +
    +
    +

    Code Review findings

    + ${i} +
    + ${e.manualSteps.length?` +
    +

    Manual FlutterFlow steps for this file

    +
      ${e.manualSteps.map(Nw).join("")}
    +
    + `:""} +
    + File details +
    +
    +

    Dependencies

    +
      ${r}
    +
    +
    +

    Deployment

    +
    +
    Status
    ${z(e.deployStatus||"pending")}
    +
    Order
    ${e.index+1} of ${t.artifacts.length}
    +
    Path hint
    ${z(e.pathHint||"Not returned")}
    +
    +
    +
    +
    +

    Public API

    +
    ${o}
    +
    +
    +

    Imports

    +
    ${s}
    +
    +
    +

    Relationships

    +
      ${a}
    +
    +
    + `}function Dw(t){const e=document.getElementById("bundle-strip"),n=document.getElementById("results-summary-tab"),i=document.getElementById("artifact-tabs"),r=document.getElementById("results-file-count");if(n){const s=y.resultsViewMode==="summary";n.classList.toggle("active",s),n.setAttribute("role","tab"),n.setAttribute("aria-selected",String(s)),n.setAttribute("aria-controls","results-summary-detail"),n.tabIndex=s?0:-1}if(i&&(i.setAttribute("role","tablist"),i.setAttribute("aria-label","Artifacts in this bundle")),!t.artifacts.length){r&&(r.textContent="0 files"),e&&e.classList.remove("visible"),i&&(i.innerHTML=""),nd();return}if(r){const s=t.artifacts.length;r.textContent=`${s} ${s===1?"file":"files"}`}i&&(i.innerHTML=t.artifacts.map(s=>{const o=y.resultsViewMode==="file"&&s.id===y.selectedArtifactId;return` + + `}).join(""),i.onclick=s=>{const o=s.target.closest(".artifact-tab");o?.dataset?.artifactId&&ec(o.dataset.artifactId)},nd()),e&&e.classList.add("visible")}function nd(){const t=document.getElementById("bundle-strip");!t||t.dataset.tabKeyboard==="bound"||(t.dataset.tabKeyboard="bound",t.addEventListener("keydown",e=>{if(e.defaultPrevented)return;const n=[document.getElementById("results-summary-tab"),...Array.from(document.querySelectorAll("#artifact-tabs .artifact-tab"))].filter(Boolean);if(!n.length||!n.includes(document.activeElement))return;let i=-1;const r=n.indexOf(document.activeElement);if(e.key==="ArrowRight")i=(r+1)%n.length;else if(e.key==="ArrowLeft")i=(r-1+n.length)%n.length;else if(e.key==="Home")i=0;else if(e.key==="End")i=n.length-1;else return;e.preventDefault();const s=n[i];if(!s)return;if(s.id==="results-summary-tab")mp();else{const a=s.dataset.artifactId;a&&ec(a)}const o=s.id==="results-summary-tab"?document.getElementById("results-summary-tab"):document.querySelector(`#artifact-tabs .artifact-tab[data-artifact-id="${s.dataset.artifactId}"]`);o&&o.focus()}))}function eo(){document.body.classList.add("results-fullscreen"),document.body.classList.add("results-with-sidebar");const t=document.getElementById("results-view"),e=document.getElementById("results-code-output"),n=document.getElementById("results-audit-output"),i=document.getElementById("results-summary-detail"),r=document.getElementById("artifact-results-split"),s=Mw(),o=Nl();if(i&&(i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby","results-summary-tab")),r){r.setAttribute("role","tabpanel");const a=s?.artifacts?.find(l=>l.id===y.selectedArtifactId);r.setAttribute("aria-labelledby",a?`artifact-tab-${a.id}`:"results-summary-tab")}if(Ow(s),Dw(s),e&&(e.textContent=""),e){const a=mh(o);e.innerHTML=a}n&&(n.innerHTML=Bw(s)),i&&i.classList.toggle("hidden",y.resultsViewMode!=="summary"),r&&r.classList.toggle("hidden",y.resultsViewMode!=="file"),t&&t.classList.add("visible")}function ar(t,e){en(!0),y.selectedArtifactId||(y.selectedArtifactId=si(y.artifactBundle).id),y.resultsViewMode="summary",document.body.classList.add("results-fullscreen");const n=document.getElementById("step3-output");n&&(n.textContent=""),eo(),tn(),jw()}function jw(){const t=document.getElementById("btn-feedback-up"),e=document.getElementById("btn-feedback-down"),n=document.getElementById("results-feedback-status");t&&(t.className="feedback-btn",t.setAttribute("aria-pressed","false"),t.disabled=!1,t.removeAttribute("aria-disabled")),e&&(e.className="feedback-btn",e.setAttribute("aria-pressed","false"),e.disabled=!1,e.removeAttribute("aria-disabled")),n&&(n.textContent=""),Ja=!1}function ec(t){y.selectedArtifactId=t,y.resultsViewMode="file",eo()}function mp(){y.resultsViewMode="summary",eo()}function Uw(){const t=document.getElementById("btn-copy-results"),e=document.getElementById("results-copy-status"),n=Nl(),i=(r,s)=>{e&&(e.textContent=r,e.classList.toggle("ok",!!s),e.classList.toggle("fail",!s))};if(!navigator.clipboard?.writeText){i("Copying isn't supported in this browser.",!1);return}navigator.clipboard.writeText(n).then(()=>{if(i("Copied to clipboard",!0),t){t.classList.add("copied");const r=t.querySelector("span");if(r){const s=r.textContent;r.textContent="Copied!",setTimeout(()=>{t.classList.remove("copied"),r.textContent=s},2e3)}}}).catch(()=>{i("Clipboard permission was denied. Select the code to copy it manually.",!1)})}let Ja=!1;async function Hw(t){const e=document.getElementById("btn-feedback-up"),n=document.getElementById("btn-feedback-down"),i=document.getElementById("results-feedback-status");if(!e||!n||Ja)return;const r=l=>{i&&(i.textContent="",i.offsetWidth,i.textContent=l)},s=l=>{Ja=l,[e,n].forEach(u=>{u.disabled=l,u.setAttribute("aria-disabled",String(l))})},o=t==="up"?"thumbsUp":"thumbsDown";s(!0),r("Submitting review feedback…");const a={type:o,code:y.step2Result,input:y.step1Result};try{const l=await zl(a.type,a.code,a.input);if(!l||l.success!==!0){s(!1),r("Review feedback could not be sent. Tap again to retry.");return}e.classList.toggle("active-up",t==="up"),n.classList.toggle("active-down",t==="down"),e.setAttribute("aria-pressed",String(t==="up")),n.setAttribute("aria-pressed",String(t==="down")),s(!1),r("Review feedback saved.")}catch{s(!1),r("Review feedback could not be sent. Tap again to retry.")}}function Ww(){const t=document.getElementById("error-input-panel");if(t){t.classList.remove("hidden"),t.style.display="flex";const e=document.getElementById("ff-error-paste-input");e&&setTimeout(()=>e.focus(),100)}}function vp(){const t=document.getElementById("error-input-panel");t&&(t.classList.add("hidden"),t.style.display="none")}function en(t){const e=document.getElementById("generation-stage");e&&(t?(e.hidden=!1,e.inert=!1,requestAnimationFrame(()=>e.classList.add("is-active"))):(e.classList.remove("is-active"),e.inert=!0,setTimeout(()=>{e.classList.contains("is-active")||(e.hidden=!0)},260)))}function _p(){const t=q.isVerified&&!!q.email,e=ce.tier||"free",n=t&&hi(),i=!t||Rt(),s=n?"Checking…":i?gl[e]||"Free":"—",o=document.getElementById("topbar-plan");o&&(o.textContent=s);const a=document.getElementById("topbar-avatar");a&&(a.textContent=(q.email||"?")[0].toUpperCase()),Vl();const l=document.getElementById("plans-free-current");l&&l.classList.toggle("hidden",e!=="free"||!i);const u=document.getElementById("plans-checkout-btn-professional");if(u){const d=e==="professional"&&i;u.disabled=d,u.textContent=d?"Current plan":"Subscribe"}const c=document.getElementById("plans-checkout-btn-power");if(c){const d=e==="power"&&i;c.disabled=d,c.textContent=d?"Current plan":"Subscribe"}}function zw(){_p();const t=document.getElementById("credits-modal");t&&Ge(t)}function qw(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("credits-modal");e&&Ke(e)}function yp(t,e=!0,n=!0){if(t=["home","account","plans"].includes(t)?t:"home",document.querySelectorAll(".view[data-view]").forEach(r=>{r.dataset.view===t?(r.hidden=!1,r.removeAttribute("inert"),requestAnimationFrame(()=>{r.classList.add("is-active"),n&&r.focus({preventScroll:!0})})):(r.classList.remove("is-active"),r.setAttribute("inert","true"),setTimeout(()=>{r.classList.contains("is-active")||(r.hidden=!0)},260))}),t!=="home")en(!1);else{const r=document.getElementById("main-stage-container");r&&r.classList.contains("visible")&&en(!0)}if(document.querySelectorAll(".nav-link[data-view]").forEach(r=>{const s=r.dataset.view===t;r.setAttribute("aria-current",s?"page":null),s||r.removeAttribute("aria-current")}),e){const r=t==="home"?"":`#${t}`;window.location.hash!==r&&window.history.pushState({view:t},"",r||"#")}}let id=!1;function tc(){const t=window.location.hash.replace(/^#/,"");yp(t||"home",!1,id),id=!0}window.addEventListener("popstate",t=>{tc()});window.addEventListener("hashchange",()=>{tc()});window.copyResultsCode=Uw;window.selectArtifact=ec;window.selectResultsSummary=mp;window.submitResultsFeedback=Hw;window.showErrorInputPanel=Ww;window.hideErrorInputPanel=vp;window.setGenerationStageVisible=en;window.switchView=yp;window.selectPipelineStage=kw;window.editPipelinePrompt=Ya;window.retryPipelineRun=pp;window.openCreditsModal=zw;window.closeCreditsModal=qw; diff --git a/dist/index.html b/dist/index.html index 6ff86ad..d8c11b3 100644 --- a/dist/index.html +++ b/dist/index.html @@ -3313,7 +3313,7 @@ .send.is-busy .send-spin { animation: none; opacity: 0.6; } } - + @@ -3375,7 +3375,7 @@

    FlutterFlow custom code.

    - - -
    -
    - - - -
    - -
    - Generation options -
    - Image input - — -
    -

    -
    - -
    - -
    -
    -
    - -
    - - -