UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

777 lines 562 kB
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.13.4`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`2fec0d46-2373-4923-81f7-fadf1dc84f94`,e._sentryDebugIdIdentifier=`sentry-dbid-2fec0d46-2373-4923-81f7-fadf1dc84f94`)})()}catch{}import{o as e,t}from"./chunk-DxpFCn6T.js";import{$ as n,$t as r,A as i,At as a,B as o,Bt as s,C as c,Ct as l,D as u,Dt as d,E as f,Et as p,Ft as m,Ht as h,I as g,K as _,Mt as v,N as y,Nt as b,P as x,Pt as S,Qt as C,R as w,Rt as T,S as E,Sn as D,T as O,Tt as k,U as A,Vt as j,W as M,Wt as N,X as P,Z as F,_ as I,_n as L,_t as R,at as z,bt as B,en as V,ft as H,gt as U,h as W,i as ee,in as te,it as ne,j as G,jt as re,lt as ie,m as ae,n as oe,o as se,ot as ce,p as le,pn as ue,q as de,qt as fe,rt as pe,sn as me,st as he,tt as ge,w as _e,wt as ve,y as ye,yn as be,yt as xe,z as Se}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{M as Ce,N as we,U as Te,_t as K,bt as Ee,gt as De,ht as Oe,st as ke,ut as Ae,x as je,z as Me}from"./_MapCache-CUJwh2qp.js";import{Ai as Ne,At as Pe,B as Fe,Bn as Ie,Ci as Le,Fn as Re,Gn as ze,Hn as Be,Ot as Ve,Rn as He,S as Ue,Si as We,Sn as Ge,Sr as Ke,Tn as qe,Tr as Je,Un as Ye,Vn as Xe,Wn as Ze,_n as Qe,_r as $e,_t as et,dr as tt,fr as nt,gi as rt,gn as it,gr as at,gt as ot,hn as st,hr as ct,in as lt,ji as ut,jn as dt,kn as ft,mr as pt,pr as mt,sn as ht,un as gt,ur as _t,v as vt,w as yt,xi as bt,yt as xt,zi as St}from"./src-wni2AGA3.js";import{$a as Ct,$c as wt,$s as Tt,A as Et,An as Dt,Ao as Ot,As as kt,Ba as At,Bc as jt,Bn as Mt,Bo as Nt,Bs as Pt,Cc as Ft,Ci as It,Cn as Lt,Co as Rt,Cr as zt,Cs as Bt,Ct as Vt,Dl as Ht,Dn as Ut,Dr as Wt,Ds as Gt,Dt as Kt,E as qt,En as Jt,Eo as Yt,Er as Xt,Es as Zt,F as Qt,Fs as $t,Go as en,Gs as tn,Gt as nn,H as rn,Hn as an,Ho as on,Hs as sn,I as cn,In as ln,Io as un,Is as dn,J as fn,Ji as pn,Js as mn,K as hn,Ka as gn,Ks as _n,Kt as vn,L as yn,Ln as bn,Ls as xn,Lt as Sn,Ma as Cn,Mo as wn,Mr as Tn,Ms as En,Na as Dn,Nl as On,No as kn,Ns as An,Oa as jn,Or as Mn,Os as Nn,P as Pn,Pi as Fn,Pl as In,Ps as Ln,Q as Rn,Qa as zn,Qc as Bn,Qi as Vn,Qs as Hn,Rc as Un,Rn as Wn,Rs as Gn,Rt as Kn,Sl as qn,Sn as Jn,Ss as Yn,Ti as Xn,Tn as Zn,Ts as Qn,Uc as $n,Un as er,Uo as tr,Us as nr,Vc as rr,Vs as ir,Vt as ar,Wi as or,Ws as sr,Xa as cr,Xn as lr,Xs as ur,Xt as dr,Ya as fr,Ys as pr,Zo as mr,Zs as hr,Zt as gr,_a as _r,_n as vr,_o as yr,_s as br,_t as xr,a as Sr,an as Cr,ar as wr,as as Tr,at as Er,ba as Dr,bl as Or,bn as kr,br as Ar,bs as jr,cn as Mr,cr as Nr,ct as Pr,da as Fr,ec as Ir,er as Lr,fa as Rr,fc as zr,fr as Br,fs as Vr,ga as Hr,gl as Ur,gn as Wr,go as Gr,gs as Kr,h as qr,ha as Jr,hl as Yr,hn as Xr,ho as q,hr as Zr,hs as Qr,i as $r,ii as ei,ir as ti,is as ni,jn as ri,jr as ii,js as ai,k as oi,ki as si,ko as ci,kr as li,ks as ui,lr as di,mo as fi,ms as pi,mt as mi,n as hi,nl as gi,nt as _i,o as vi,oa as yi,or as bi,pa as xi,pl as Si,po as Ci,pr as wi,ps as Ti,qa as Ei,qc as Di,qo as Oi,qs as ki,qt as Ai,r as ji,rc as Mi,rn as Ni,ro as Pi,sa as Fi,sn as Ii,sr as Li,st as Ri,t as zi,tc as Bi,tl as Vi,ua as Hi,uc as Ui,un as Wi,va as Gi,vn as Ki,vr as qi,vs as Ji,vt as Yi,w as Xi,wl as Zi,wo as Qi,wr as $i,ws as ea,xa as ta,xl as na,xs as ra,ya as ia,yr as aa,ys as oa,yt as sa,z as ca,zi as la,zo as ua,zs as da,zt as fa}from"./constants-CIP7tKq1.js";import{b as pa,n as ma,o as ha,r as ga,t as _a}from"./merge-BqvKZ38d.js";import{D as va,E as ya,M as ba,O as xa,T as Sa,_ as Ca,c as wa,d as J,f as Ta,h as Ea,j as Da,l as Oa,m as ka,p as Aa,r as Y,t as ja,u as Ma,v as Na}from"./_baseOrderBy-CaKruttV.js";import{t as Pa}from"./dateformat-CYfyw486.js";import{r as Fa,t as Ia}from"./useDebounce-CTeIt-cH.js";var La=(e,t,n)=>{let r={offsetX:0,offsetY:0},i=t=>{let n=t.clientX,i=t.clientY,{offsetX:a,offsetY:o}=r,s=e.value.getBoundingClientRect(),c=s.left,l=s.top,u=s.width,d=s.height,f=document.documentElement.clientWidth,p=document.documentElement.clientHeight,m=-c+a,h=-l+o,g=f-c-u+a,_=p-l-d+o,v=t=>{let s=Math.min(Math.max(a+t.clientX-n,m),g),c=Math.min(Math.max(o+t.clientY-i,h),_);r={offsetX:s,offsetY:c},e.value&&(e.value.style.transform=`translate(${nt(s)}, ${nt(c)})`)},y=()=>{document.removeEventListener(`mousemove`,v),document.removeEventListener(`mouseup`,y)};document.addEventListener(`mousemove`,v),document.addEventListener(`mouseup`,y)},a=()=>{t.value&&e.value&&t.value.addEventListener(`mousedown`,i)},o=()=>{t.value&&e.value&&t.value.removeEventListener(`mousedown`,i)};P(()=>{R(()=>{n.value?a():o()})}),de(()=>{o()})};d();var Ra=(e,t={})=>{a(e)||$e(`[useLockscreen]`,`You need to pass a ref param to this function`);let n=t.ns||qe(`popup`),r=l(()=>n.bm(`parent`,`hidden`));if(!bt||pt(document.body,r.value))return;let i=0,o=!1,s=`0`,c=()=>{setTimeout(()=>{typeof document>`u`||(ct(document==null?void 0:document.body,r.value),o&&document&&(document.body.style.width=s))},200)};U(e,e=>{if(!e){c();return}o=!pt(document.body,r.value),o&&(s=document.body.style.width),i=_t(n.namespace.value);let t=document.documentElement.clientHeight<document.body.scrollHeight,a=mt(document.body,`overflowY`);i>0&&(t||a===`scroll`)&&o&&(document.body.style.width=`calc(100% - ${i}px)`),tt(document.body,r.value)}),v(()=>c())};V();var za=e=>{if(!e)return{onClick:fe,onMousedown:fe,onMouseup:fe};let t=!1,n=!1;return{onClick:r=>{t&&n&&e(r),t=n=!1},onMousedown:e=>{t=e.target===e.currentTarget},onMouseup:e=>{n=e.target===e.currentTarget}}},Ba=`_trap-focus-children`,Va=[],Ha=e=>{if(Va.length===0)return;let t=Va[Va.length-1][Ba];if(t.length>0&&e.code===Re.tab){if(t.length===1){e.preventDefault(),document.activeElement!==t[0]&&t[0].focus();return}let n=e.shiftKey,r=e.target===t[0],i=e.target===t[t.length-1];r&&n&&(e.preventDefault(),t[t.length-1].focus()),i&&!n&&(e.preventDefault(),t[0].focus())}},Ua={beforeMount(e){e[Ba]=Le(e),Va.push(e),Va.length<=1&&document.addEventListener(`keydown`,Ha)},updated(e){M(()=>{e[Ba]=Le(e)})},unmounted(){Va.shift(),Va.length===0&&document.removeEventListener(`keydown`,Ha)}},Wa=Ze({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:ze([String,Array,Object])},zIndex:{type:ze([String,Number])}}),Ga={click:e=>e instanceof MouseEvent},Ka=`overlay`,qa=y({name:`ElOverlay`,props:Wa,emits:Ga,setup(e,{slots:t,emit:n}){let r=qe(Ka),{onClick:i,onMousedown:a,onMouseup:o}=za(e.customMaskEvent?void 0:e=>{n(`click`,e)});return()=>e.mask?G(`div`,{class:[r.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:i,onMousedown:a,onMouseup:o},[ne(t,`default`)],ft.STYLE|ft.CLASS|ft.PROPS,[`onClick`,`onMouseup`,`onMousedown`]):g(`div`,{class:e.overlayClass,style:{zIndex:e.zIndex,position:`fixed`,top:`0px`,right:`0px`,bottom:`0px`,left:`0px`}},[ne(t,`default`)])}});function Ja(e){let t,n=m(!1),r=b({...e,originalPosition:``,originalOverflow:``,visible:!1});function i(e){r.text=e}function a(){let e=r.parent,t=u.ns;if(!e.vLoadingAddClassList){let n=e.getAttribute(`loading-number`);n=Number.parseInt(n)-1,n?e.setAttribute(`loading-number`,n.toString()):(ct(e,t.bm(`parent`,`relative`)),e.removeAttribute(`loading-number`)),ct(e,t.bm(`parent`,`hidden`))}o(),l.unmount()}function o(){var e;(e=u.$el?.parentNode)==null||e.removeChild(u.$el)}function s(){var i;e.beforeClose&&!e.beforeClose()||(n.value=!0,clearTimeout(t),t=window.setTimeout(c,400),r.visible=!1,(i=e.closed)==null||i.call(e))}function c(){if(!n.value)return;let e=r.parent;n.value=!1,e.vLoadingAddClassList=void 0,a()}let l=ee(y({name:`ElLoading`,setup(e,{expose:t}){let{ns:n,zIndex:i}=Qe(`loading`);return t({ns:n,zIndex:i}),()=>{let e=r.spinner||r.svg,t=g(`svg`,{class:`circular`,viewBox:r.svgViewBox?r.svgViewBox:`0 0 50 50`,...e?{innerHTML:e}:{}},[g(`circle`,{class:`path`,cx:`25`,cy:`25`,r:`20`,fill:`none`})]),i=r.text?g(`p`,{class:n.b(`text`)},[r.text]):void 0;return g(oe,{name:n.b(`fade`),onAfterLeave:c},{default:xe(()=>[B(G(`div`,{style:{backgroundColor:r.background||``},class:[n.b(`mask`),r.customClass,r.fullscreen?`is-fullscreen`:``]},[g(`div`,{class:n.b(`spinner`)},[t,i])]),[[le,r.visible]])])})}}})),u=l.mount(document.createElement(`div`));return{...j(r),setText:i,removeElLoadingChild:o,close:s,handleAfterLeave:c,vm:u,get $el(){return u.$el}}}V();var Ya=void 0,Xa=function(e={}){if(!bt)return;let t=Za(e);if(t.fullscreen&&Ya)return Ya;let n=Ja({...t,closed:()=>{var e;(e=t.closed)==null||e.call(t),t.fullscreen&&(Ya=void 0)}});Qa(t,t.parent,n),$a(t,t.parent,n),t.parent.vLoadingAddClassList=()=>$a(t,t.parent,n);let r=t.parent.getAttribute(`loading-number`);return r=r?`${Number.parseInt(r)+1}`:`1`,t.parent.setAttribute(`loading-number`,r),t.parent.appendChild(n.$el),M(()=>n.visible.value=t.visible),t.fullscreen&&(Ya=n),n},Za=e=>{let t;return t=ue(e.target)?document.querySelector(e.target)??document.body:e.target||document.body,{parent:t===document.body||e.body?document.body:t,background:e.background||``,svg:e.svg||``,svgViewBox:e.svgViewBox||``,spinner:e.spinner||!1,text:e.text||``,fullscreen:t===document.body&&(e.fullscreen??!0),lock:e.lock??!1,customClass:e.customClass||``,visible:e.visible??!0,target:t}},Qa=async(e,t,n)=>{let{nextZIndex:r}=n.vm.zIndex||n.vm._.exposed.zIndex,i={};if(e.fullscreen)n.originalPosition.value=mt(document.body,`position`),n.originalOverflow.value=mt(document.body,`overflow`),i.zIndex=r();else if(e.parent===document.body){n.originalPosition.value=mt(document.body,`position`),await M();for(let t of[`top`,`left`]){let n=t===`top`?`scrollTop`:`scrollLeft`;i[t]=`${e.target.getBoundingClientRect()[t]+document.body[n]+document.documentElement[n]-Number.parseInt(mt(document.body,`margin-${t}`),10)}px`}for(let t of[`height`,`width`])i[t]=`${e.target.getBoundingClientRect()[t]}px`}else n.originalPosition.value=mt(t,`position`);for(let[e,t]of Object.entries(i))n.$el.style[e]=t},$a=(e,t,n)=>{let r=n.vm.ns||n.vm._.exposed.ns;[`absolute`,`fixed`,`sticky`].includes(n.originalPosition.value)?ct(t,r.bm(`parent`,`relative`)):tt(t,r.bm(`parent`,`relative`)),e.fullscreen&&e.lock?tt(t,r.bm(`parent`,`hidden`)):ct(t,r.bm(`parent`,`hidden`))};V();var eo=Symbol(`ElLoading`),to=(e,t)=>{let n=t.instance,i=e=>me(t.value)?t.value[e]:void 0,a=e=>{let t=ue(e)&&n?.[e]||e;return t&&m(t)},o=t=>a(i(t)||e.getAttribute(`element-loading-${r(t)}`)),s=i(`fullscreen`)??t.modifiers.fullscreen,c={text:o(`text`),svg:o(`svg`),svgViewBox:o(`svgViewBox`),spinner:o(`spinner`),background:o(`background`),customClass:o(`customClass`),fullscreen:s,target:i(`target`)??(s?void 0:e),body:i(`body`)??t.modifiers.body,lock:i(`lock`)??t.modifiers.lock};e[eo]={options:c,instance:Xa(c)}},no=(e,t)=>{for(let n of Object.keys(t))a(t[n])&&(t[n].value=e[n])},ro={mounted(e,t){t.value&&to(e,t)},updated(e,t){let n=e[eo];t.oldValue!==t.value&&(t.value&&!t.oldValue?to(e,t):t.value&&t.oldValue?me(t.value)&&no(t.value,n.options):n?.instance.close())},unmounted(e){var t;(t=e[eo])==null||t.instance.close()}},io={install(e){e.directive(`loading`,ro),e.config.globalProperties.$loading=Xa},directive:ro,service:Xa},ao=y({name:`ElMessageBox`,directives:{TrapFocus:Ua},components:{ElButton:lt,ElFocusTrap:ht,ElInput:gt,ElOverlay:qa,ElIcon:st,...Xe},inheritAttrs:!1,props:{buttonSize:{type:String,validator:dt},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,roundButton:{default:!1,type:Boolean},container:{type:String,default:`body`},boxType:{type:String,default:``}},emits:[`vanish`,`action`],setup(e,{emit:t}){let{locale:n,zIndex:r,ns:i,size:a}=Qe(`message-box`,E(()=>e.buttonSize)),{t:o}=n,{nextZIndex:s}=r,c=m(!1),l=b({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:``,cancelButtonClass:``,confirmButtonText:``,confirmButtonClass:``,customClass:``,customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:``,inputPattern:null,inputPlaceholder:``,inputType:`text`,inputValue:null,inputValidator:null,inputErrorMessage:``,message:null,modalFade:!0,modalClass:``,showCancelButton:!1,showConfirmButton:!0,type:``,title:void 0,showInput:!1,action:``,confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonDisabled:!1,editorErrorMessage:``,validateError:!1,zIndex:s()}),u=E(()=>{let e=l.type;return{[i.bm(`icon`,e)]:e&&Be[e]}}),d=Ge(),f=Ge(),p=E(()=>l.icon||Be[l.type]||``),h=E(()=>!!l.message),g=m(),_=m(),v=m(),y=m(),x=m(),S=E(()=>l.confirmButtonClass);U(()=>l.inputValue,async t=>{await M(),e.boxType===`prompt`&&t!==null&&k()},{immediate:!0}),U(()=>c.value,t=>{t&&(e.boxType!==`prompt`&&(l.autofocus?v.value=x.value?.$el??g.value:v.value=g.value),l.zIndex=s()),e.boxType===`prompt`&&(t?M().then(()=>{y.value&&y.value.$el&&(l.autofocus?v.value=A()??g.value:v.value=g.value)}):(l.editorErrorMessage=``,l.validateError=!1))}),La(g,_,E(()=>e.draggable)),P(async()=>{await M(),e.closeOnHashChange&&window.addEventListener(`hashchange`,C)}),de(()=>{e.closeOnHashChange&&window.removeEventListener(`hashchange`,C)});function C(){c.value&&(c.value=!1,M(()=>{l.action&&t(`action`,l.action)}))}let w=()=>{e.closeOnClickModal&&O(l.distinguishCancelAndClose?`close`:`cancel`)},T=za(w),D=e=>{if(l.inputType!==`textarea`)return e.preventDefault(),O(`confirm`)},O=t=>{var n;e.boxType===`prompt`&&t===`confirm`&&!k()||(l.action=t,l.beforeClose?(n=l.beforeClose)==null||n.call(l,t,l,C):C())},k=()=>{if(e.boxType===`prompt`){let e=l.inputPattern;if(e&&!e.test(l.inputValue||``))return l.editorErrorMessage=l.inputErrorMessage||o(`el.messagebox.error`),l.validateError=!0,!1;let t=l.inputValidator;if(typeof t==`function`){let e=t(l.inputValue);if(e===!1)return l.editorErrorMessage=l.inputErrorMessage||o(`el.messagebox.error`),l.validateError=!0,!1;if(typeof e==`string`)return l.editorErrorMessage=e,l.validateError=!0,!1}}return l.editorErrorMessage=``,l.validateError=!1,!0},A=()=>{let e=y.value.$refs;return e.input||e.textarea},N=()=>{O(`close`)},F=()=>{e.closeOnPressEscape&&N()};return e.lockScroll&&Ra(c),{...j(l),ns:i,overlayEvent:T,visible:c,hasMessage:h,typeClass:u,contentId:d,inputId:f,btnSize:a,iconComponent:p,confirmButtonClasses:S,rootRef:g,focusStartRef:v,headerRef:_,inputRef:y,confirmRef:x,doClose:C,handleClose:N,onCloseRequested:F,handleWrapperClick:w,handleInputEnter:D,handleAction:O,t:o}}}),oo=[`aria-label`,`aria-describedby`],so=[`aria-label`],co=[`id`];function lo(e,t,r,a,o,s){let l=z(`el-icon`),u=z(`close`),d=z(`el-input`),p=z(`el-button`),m=z(`el-focus-trap`),h=z(`el-overlay`);return n(),_e(oe,{name:`fade-in-linear`,onAfterLeave:t[11]||=t=>e.$emit(`vanish`),persisted:``},{default:xe(()=>[B(G(h,{"z-index":e.zIndex,"overlay-class":[e.ns.is(`message-box`),e.modalClass],mask:e.modal},{default:xe(()=>[c(`div`,{role:`dialog`,"aria-label":e.title,"aria-modal":`true`,"aria-describedby":e.showInput?void 0:e.contentId,class:L(`${e.ns.namespace.value}-overlay-message-box`),onClick:t[8]||=(...t)=>e.overlayEvent.onClick&&e.overlayEvent.onClick(...t),onMousedown:t[9]||=(...t)=>e.overlayEvent.onMousedown&&e.overlayEvent.onMousedown(...t),onMouseup:t[10]||=(...t)=>e.overlayEvent.onMouseup&&e.overlayEvent.onMouseup(...t)},[G(m,{loop:``,trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:xe(()=>[c(`div`,{ref:`rootRef`,class:L([e.ns.b(),e.customClass,e.ns.is(`draggable`,e.draggable),{[e.ns.m(`center`)]:e.center}]),style:be(e.customStyle),tabindex:`-1`,onClick:t[7]||=W(()=>{},[`stop`])},[e.title!==null&&e.title!==void 0?(n(),f(`div`,{key:0,ref:`headerRef`,class:L(e.ns.e(`header`))},[c(`div`,{class:L(e.ns.e(`title`))},[e.iconComponent&&e.center?(n(),_e(l,{key:0,class:L([e.ns.e(`status`),e.typeClass])},{default:xe(()=>[(n(),_e(he(e.iconComponent)))]),_:1},8,[`class`])):O(`v-if`,!0),c(`span`,null,D(e.title),1)],2),e.showClose?(n(),f(`button`,{key:0,type:`button`,class:L(e.ns.e(`headerbtn`)),"aria-label":e.t(`el.messagebox.close`),onClick:t[0]||=t=>e.handleAction(e.distinguishCancelAndClose?`close`:`cancel`),onKeydown:t[1]||=ae(W(t=>e.handleAction(e.distinguishCancelAndClose?`close`:`cancel`),[`prevent`]),[`enter`])},[G(l,{class:L(e.ns.e(`close`))},{default:xe(()=>[G(u)]),_:1},8,[`class`])],42,so)):O(`v-if`,!0)],2)):O(`v-if`,!0),c(`div`,{id:e.contentId,class:L(e.ns.e(`content`))},[c(`div`,{class:L(e.ns.e(`container`))},[e.iconComponent&&!e.center&&e.hasMessage?(n(),_e(l,{key:0,class:L([e.ns.e(`status`),e.typeClass])},{default:xe(()=>[(n(),_e(he(e.iconComponent)))]),_:1},8,[`class`])):O(`v-if`,!0),e.hasMessage?(n(),f(`div`,{key:1,class:L(e.ns.e(`message`))},[ne(e.$slots,`default`,{},()=>[e.dangerouslyUseHTMLString?(n(),_e(he(e.showInput?`label`:`p`),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,[`for`,`innerHTML`])):(n(),_e(he(e.showInput?`label`:`p`),{key:0,for:e.showInput?e.inputId:void 0},{default:xe(()=>[i(D(e.dangerouslyUseHTMLString?``:e.message),1)]),_:1},8,[`for`]))])],2)):O(`v-if`,!0)],2),B(c(`div`,{class:L(e.ns.e(`input`))},[G(d,{id:e.inputId,ref:`inputRef`,modelValue:e.inputValue,"onUpdate:modelValue":t[2]||=t=>e.inputValue=t,type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:L({invalid:e.validateError}),onKeydown:ae(e.handleInputEnter,[`enter`])},null,8,[`id`,`modelValue`,`type`,`placeholder`,`aria-invalid`,`class`,`onKeydown`]),c(`div`,{class:L(e.ns.e(`errormsg`)),style:be({visibility:e.editorErrorMessage?`visible`:`hidden`})},D(e.editorErrorMessage),7)],2),[[le,e.showInput]])],10,co),c(`div`,{class:L(e.ns.e(`btns`))},[e.showCancelButton?(n(),_e(p,{key:0,loading:e.cancelButtonLoading,class:L([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:t[3]||=t=>e.handleAction(`cancel`),onKeydown:t[4]||=ae(W(t=>e.handleAction(`cancel`),[`prevent`]),[`enter`])},{default:xe(()=>[i(D(e.cancelButtonText||e.t(`el.messagebox.cancel`)),1)]),_:1},8,[`loading`,`class`,`round`,`size`])):O(`v-if`,!0),B(G(p,{ref:`confirmRef`,type:`primary`,loading:e.confirmButtonLoading,class:L([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:t[5]||=t=>e.handleAction(`confirm`),onKeydown:t[6]||=ae(W(t=>e.handleAction(`confirm`),[`prevent`]),[`enter`])},{default:xe(()=>[i(D(e.confirmButtonText||e.t(`el.messagebox.confirm`)),1)]),_:1},8,[`loading`,`class`,`round`,`disabled`,`size`]),[[le,e.showConfirmButton]])],2)],6)]),_:3},8,[`trapped`,`focus-trap-el`,`focus-start-el`,`onReleaseRequested`])],42,oo)]),_:3},8,[`z-index`,`overlay-class`,`mask`]),[[le,e.visible]])]),_:3})}var uo=it(ao,[[`render`,lo],[`__file`,`/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue`]]);V();var fo=new Map,po=e=>{let t=document.body;return e.appendTo&&(ue(e.appendTo)&&(t=document.querySelector(e.appendTo)),Ke(e.appendTo)&&(t=e.appendTo),Ke(t)||(at(`ElMessageBox`,`the appendTo option is not an HTMLElement. Falling back to document.body.`),t=document.body)),t},mo=(e,t,n=null)=>{let r=G(uo,e,te(e.message)||o(e.message)?{default:te(e.message)?e.message:()=>e.message}:null);return r.appContext=n,se(r,t),po(e).appendChild(t.firstElementChild),r.component},ho=()=>document.createElement(`div`),go=(e,t)=>{let n=ho();e.onVanish=()=>{se(null,n),fo.delete(i)},e.onAction=t=>{let n=fo.get(i),a;a=e.showInput?{value:i.inputValue,action:t}:t,e.callback?e.callback(a,r.proxy):t===`cancel`||t===`close`?e.distinguishCancelAndClose&&t!==`cancel`?n.reject(`close`):n.reject(`cancel`):n.resolve(a)};let r=mo(e,n,t),i=r.proxy;for(let t in e)C(e,t)&&!C(i.$props,t)&&(i[t]=e[t]);return i.visible=!0,i};function _o(e,t=null){if(!bt)return Promise.reject();let n;return ue(e)||o(e)?e={message:e}:n=e.callback,new Promise((r,i)=>{let a=go(e,t??_o._context);fo.set(a,{options:e,callback:n,resolve:r,reject:i})})}var vo=[`alert`,`confirm`,`prompt`],yo={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};vo.forEach(e=>{_o[e]=bo(e)});function bo(e){return(t,n,r,i)=>{let a=``;return me(n)?(r=n,a=``):a=Je(n)?``:n,_o(Object.assign({title:a,message:t,type:``,...yo[e]},r,{boxType:e}),i)}}_o.close=()=>{fo.forEach((e,t)=>{t.doClose()}),fo.clear()},_o._context=null;var xo=_o;xo.install=e=>{xo._context=e._context,e.config.globalProperties.$msgbox=xo,e.config.globalProperties.$messageBox=xo,e.config.globalProperties.$alert=xo.alert,e.config.globalProperties.$confirm=xo.confirm,e.config.globalProperties.$prompt=xo.prompt};var So=xo,Co=[`success`,`info`,`warning`,`error`],wo=Ze({customClass:{type:String,default:``},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:4500},icon:{type:Ye},id:{type:String,default:``},message:{type:ze([String,Object]),default:``},offset:{type:Number,default:0},onClick:{type:ze(Function),default:()=>void 0},onClose:{type:ze(Function),required:!0},position:{type:String,values:[`top-right`,`top-left`,`bottom-right`,`bottom-left`],default:`top-right`},showClose:{type:Boolean,default:!0},title:{type:String,default:``},type:{type:String,values:[...Co,``],default:``},zIndex:Number}),To={destroy:()=>!0},Eo=[`id`],Do=[`textContent`],Oo={key:0},ko=[`innerHTML`],Ao=it(y({...y({name:`ElNotification`}),props:wo,emits:To,setup(e,{expose:t}){let r=e,{ns:i,zIndex:a}=Qe(`notification`),{nextZIndex:o,currentZIndex:s}=a,{Close:l}=Ie,u=m(!1),d,p=E(()=>{let e=r.type;return e&&Be[r.type]?i.m(e):``}),h=E(()=>r.type&&Be[r.type]||r.icon),g=E(()=>r.position.endsWith(`right`)?`right`:`left`),_=E(()=>r.position.startsWith(`top`)?`top`:`bottom`),v=E(()=>({[_.value]:`${r.offset}px`,zIndex:r.zIndex??s.value}));function y(){r.duration>0&&({stop:d}=We(()=>{u.value&&x()},r.duration))}function b(){d?.()}function x(){u.value=!1}function S({code:e}){e===Re.delete||e===Re.backspace?b():e===Re.esc?u.value&&x():y()}return P(()=>{y(),o(),u.value=!0}),rt(document,`keydown`,S),t({visible:u,close:x}),(e,t)=>(n(),_e(oe,{name:N(i).b(`fade`),onBeforeLeave:e.onClose,onAfterLeave:t[1]||=t=>e.$emit(`destroy`),persisted:``},{default:xe(()=>[B(c(`div`,{id:e.id,class:L([N(i).b(),e.customClass,N(g)]),style:be(N(v)),role:`alert`,onMouseenter:b,onMouseleave:y,onClick:t[0]||=(...t)=>e.onClick&&e.onClick(...t)},[N(h)?(n(),_e(N(st),{key:0,class:L([N(i).e(`icon`),N(p)])},{default:xe(()=>[(n(),_e(he(N(h))))]),_:1},8,[`class`])):O(`v-if`,!0),c(`div`,{class:L(N(i).e(`group`))},[c(`h2`,{class:L(N(i).e(`title`)),textContent:D(e.title)},null,10,Do),B(c(`div`,{class:L(N(i).e(`content`)),style:be(e.title?void 0:{margin:0})},[ne(e.$slots,`default`,{},()=>[e.dangerouslyUseHTMLString?(n(),f(I,{key:1},[O(` Caution here, message could've been compromised, never use user's input as message `),c(`p`,{innerHTML:e.message},null,8,ko)],2112)):(n(),f(`p`,Oo,D(e.message),1))])],6),[[le,e.message]]),e.showClose?(n(),_e(N(st),{key:0,class:L(N(i).e(`closeBtn`)),onClick:W(x,[`stop`])},{default:xe(()=>[G(N(l))]),_:1},8,[`class`,`onClick`])):O(`v-if`,!0)],2)],46,Eo),[[le,u.value]])]),_:3},8,[`name`,`onBeforeLeave`]))}}),[[`__file`,`/home/runner/work/element-plus/element-plus/packages/components/notification/src/notification.vue`]]);V();var jo={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},Mo=16,No=1,Po=function(e={},t=null){if(!bt)return{close:()=>void 0};(typeof e==`string`||o(e))&&(e={message:e});let n=e.position||`top-right`,r=e.offset||0;jo[n].forEach(({vm:e})=>{r+=(e.el?.offsetHeight||0)+Mo}),r+=Mo;let i=`notification_${No++}`,a=e.onClose,s={...e,offset:r,id:i,onClose:()=>{Fo(i,n,a)}},c=document.body;Ke(e.appendTo)?c=e.appendTo:ue(e.appendTo)&&(c=document.querySelector(e.appendTo)),Ke(c)||(at(`ElNotification`,`the appendTo option is not an HTMLElement. Falling back to document.body.`),c=document.body);let l=document.createElement(`div`),u=G(Ao,s,o(s.message)?{default:()=>s.message}:null);return u.appContext=t??Po._context,u.props.onDestroy=()=>{se(null,l)},se(u,l),jo[n].push({vm:u}),c.appendChild(l.firstElementChild),{close:()=>{u.component.exposed.visible.value=!1}}};Co.forEach(e=>{Po[e]=(t={})=>((typeof t==`string`||o(t))&&(t={message:t}),Po({...t,type:e}))});function Fo(e,t,n){let r=jo[t],i=r.findIndex(({vm:t})=>t.component?.props.id===e);if(i===-1)return;let{vm:a}=r[i];if(!a)return;n?.(a);let o=a.el.offsetHeight,s=t.split(`-`)[0];r.splice(i,1);let c=r.length;if(!(c<1))for(let e=i;e<c;e++){let{el:t,component:n}=r[e].vm,i=Number.parseInt(t.style[s],10)-o-Mo;n.props.offset=i}}function Io(){for(let e of Object.values(jo))e.forEach(({vm:e})=>{e.component.exposed.visible.value=!1})}Po.closeAll=Io,Po._context=null;var Lo=He(Po,`$notify`),Ro=e(Ve(),1);function zo(e){return(0,Ro.default)(e,{onTagAttr:(e,t,n)=>{if(e===`img`&&t===`src`){let e=n.split(`#`)[0].match(/\.(jpeg|jpg|gif|png|webp)$/)!==null&&n.startsWith(`/static/`);if(!n.startsWith(`https://`)&&!e)return``}if(oi.includes(t)||t.startsWith(`data-`))return t===`href`&&!n.match(/^https?:\/\//gm)&&!n.startsWith(`/`)?``:`${t}="${(0,Ro.escapeAttrValue)(n)}"`},onTag:e=>{if(!Et.includes(e))return``}})}const Bo=e=>typeof e==`string`?zo(e):e,Vo=e=>e.charAt(0).toUpperCase()+e.slice(1),Ho=async()=>await new Promise(e=>{setTimeout(()=>{e(document.getElementById(`banners`)?.clientHeight??0)},0)});function Uo(e){let t=document.getSelection();return!t?.anchorNode||!t.focusNode||!e?!1:!e.contains(t.anchorNode)&&!e.contains(t.focusNode)&&(t.anchorNode!==t.focusNode||t.anchorOffset!==t.focusOffset)}var Wo;function Go(){if(Wo!==void 0)return Wo;let e=document.createElement(`div`),t=document.createElement(`div`);return e.style.visibility=`hidden`,e.style.overflow=`scroll`,document.body.appendChild(e),e.appendChild(t),Wo=e.offsetWidth-t.offsetWidth,e.parentElement?.removeChild(e),Wo}function Ko(e,t){return!!(e instanceof Node&&h(t)?.contains(e))}var qo={COMMUNITY_NODES:`communityNodes`,ROOT:`root`,SETTINGS:`settings`,UI:`ui`,USERS:`users`,WORKFLOWS:`workflows`,WORKFLOWS_LIST:`workflowsList`,WORKFLOWS_V2:`workflowsV2`,WORKFLOWS_EE:`workflowsEE`,WORKFLOW_DOCUMENTS:`workflowDocuments`,EXECUTIONS:`executions`,NDV:`ndv`,TEMPLATES:`templates`,NODE_TYPES:`nodeTypes`,CREDENTIALS:`credentials`,TAGS:`tags`,ANNOTATION_TAGS:`annotationTags`,VERSIONS:`versions`,NODE_CREATOR:`nodeCreator`,WEBHOOKS:`webhooks`,HISTORY:`history`,CLOUD_PLAN:`cloudPlan`,RBAC:`rbac`,PUSH:`push`,COLLABORATION:`collaboration`,ASSISTANT:`assistant`,BUILDER:`builder`,CHAT_PANEL:`chatPanel`,CHAT_PANEL_STATE:`chatPanelState`,BECOME_TEMPLATE_CREATOR:`becomeTemplateCreator`,PROJECTS:`projects`,API_KEYS:`apiKeys`,EVALUATION:`evaluation`,FOLDERS:`folders`,MODULES:`modules`,FOCUS_PANEL:`focusPanel`,WORKFLOW_STATE:`workflowState`,AI_TEMPLATES_STARTER_COLLECTION:`aiTemplatesStarterCollection`,PERSONALIZED_TEMPLATES:`personalizedTemplates`,EXPERIMENT_READY_TO_RUN_WORKFLOWS:`readyToRunWorkflows`,EXPERIMENT_READY_TO_RUN_WORKFLOWS_V2:`readyToRunWorkflowsV2`,EXPERIMENT_TEMPLATE_RECO_V2:`templateRecoV2`,PERSONALIZED_TEMPLATES_V3:`personalizedTemplatesV3`,READY_TO_RUN:`readyToRun`,TEMPLATES_DATA_QUALITY:`templatesDataQuality`,BANNERS:`banners`,CONSENT:`consent`,CHAT_HUB:`chatHub`,CHAT_HUB_PANEL:`chatHubPanel`,EXPERIMENT_EMPTY_STATE_BUILDER_PROMPT:`emptyStateBuilderPrompt`,EXPERIMENT_CREDENTIALS_APP_SELECTION:`credentialsAppSelection`,SETUP_PANEL:`setupPanel`,FOCUSED_NODES:`focusedNodes`},Jo=t(((e,t)=>{(function(n,r){typeof e==`object`&&typeof t==`object`?t.exports=r():typeof define==`function`&&define.amd?define([],r):typeof e==`object`?e.bowser=r():n.bowser=r()})(e,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t||4&t&&typeof e==`object`&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,`default`,{enumerable:!0,value:e}),2&t&&typeof e!=`string`)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=90)}({17:function(e,t,n){t.__esModule=!0,t.default=void 0;var r=n(18);t.default=function(){function e(){}return e.getFirstMatch=function(e,t){var n=t.match(e);return n&&n.length>0&&n[1]||``},e.getSecondMatch=function(e,t){var n=t.match(e);return n&&n.length>1&&n[2]||``},e.matchAndReturnConst=function(e,t,n){if(e.test(t))return n},e.getWindowsVersionName=function(e){switch(e){case`NT`:return`NT`;case`XP`:return`XP`;case`NT 5.0`:return`2000`;case`NT 5.1`:return`XP`;case`NT 5.2`:return`2003`;case`NT 6.0`:return`Vista`;case`NT 6.1`:return`7`;case`NT 6.2`:return`8`;case`NT 6.3`:return`8.1`;case`NT 10.0`:return`10`;default:return}},e.getMacOSVersionName=function(e){var t=e.split(`.`).splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),t[0]===10)switch(t[1]){case 5:return`Leopard`;case 6:return`Snow Leopard`;case 7:return`Lion`;case 8:return`Mountain Lion`;case 9:return`Mavericks`;case 10:return`Yosemite`;case 11:return`El Capitan`;case 12:return`Sierra`;case 13:return`High Sierra`;case 14:return`Mojave`;case 15:return`Catalina`;default:return}},e.getAndroidVersionName=function(e){var t=e.split(`.`).splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(t[0]===1&&t[1]<5))return t[0]===1&&t[1]<6?`Cupcake`:t[0]===1&&t[1]>=6?`Donut`:t[0]===2&&t[1]<2?`Eclair`:t[0]===2&&t[1]===2?`Froyo`:t[0]===2&&t[1]>2?`Gingerbread`:t[0]===3?`Honeycomb`:t[0]===4&&t[1]<1?`Ice Cream Sandwich`:t[0]===4&&t[1]<4?`Jelly Bean`:t[0]===4&&t[1]>=4?`KitKat`:t[0]===5?`Lollipop`:t[0]===6?`Marshmallow`:t[0]===7?`Nougat`:t[0]===8?`Oreo`:t[0]===9?`Pie`:void 0},e.getVersionPrecision=function(e){return e.split(`.`).length},e.compareVersions=function(t,n,r){r===void 0&&(r=!1);var i=e.getVersionPrecision(t),a=e.getVersionPrecision(n),o=Math.max(i,a),s=0,c=e.map([t,n],(function(t){var n=o-e.getVersionPrecision(t),r=t+Array(n+1).join(`.0`);return e.map(r.split(`.`),(function(e){return Array(20-e.length).join(`0`)+e})).reverse()}));for(r&&(s=o-Math.min(i,a)),--o;o>=s;){if(c[0][o]>c[1][o])return 1;if(c[0][o]===c[1][o]){if(o===s)return 0;--o}else if(c[0][o]<c[1][o])return-1}},e.map=function(e,t){var n,r=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(n=0;n<e.length;n+=1)r.push(t(e[n]));return r},e.find=function(e,t){var n,r;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(n=0,r=e.length;n<r;n+=1){var i=e[n];if(t(i,n))return i}},e.assign=function(e){for(var t,n,r=e,i=arguments.length,a=Array(i>1?i-1:0),o=1;o<i;o++)a[o-1]=arguments[o];if(Object.assign)return Object.assign.apply(Object,[e].concat(a));var s=function(){var e=a[t];typeof e==`object`&&e&&Object.keys(e).forEach((function(t){r[t]=e[t]}))};for(t=0,n=a.length;t<n;t+=1)s();return e},e.getBrowserAlias=function(e){return r.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return r.BROWSER_MAP[e]||``},e}(),e.exports=t.default},18:function(e,t,n){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":`amazon_silk`,"Android Browser":`android`,Bada:`bada`,BlackBerry:`blackberry`,Chrome:`chrome`,Chromium:`chromium`,Electron:`electron`,Epiphany:`epiphany`,Firefox:`firefox`,Focus:`focus`,Generic:`generic`,"Google Search":`google_search`,Googlebot:`googlebot`,"Internet Explorer":`ie`,"K-Meleon":`k_meleon`,Maxthon:`maxthon`,"Microsoft Edge":`edge`,"MZ Browser":`mz`,"NAVER Whale Browser":`naver`,Opera:`opera`,"Opera Coast":`opera_coast`,PhantomJS:`phantomjs`,Puffin:`puffin`,QupZilla:`qupzilla`,QQ:`qq`,QQLite:`qqlite`,Safari:`safari`,Sailfish:`sailfish`,"Samsung Internet for Android":`samsung_internet`,SeaMonkey:`seamonkey`,Sleipnir:`sleipnir`,Swing:`swing`,Tizen:`tizen`,"UC Browser":`uc`,Vivaldi:`vivaldi`,"WebOS Browser":`webos`,WeChat:`wechat`,"Yandex Browser":`yandex`,Roku:`roku`},t.BROWSER_MAP={amazon_silk:`Amazon Silk`,android:`Android Browser`,bada:`Bada`,blackberry:`BlackBerry`,chrome:`Chrome`,chromium:`Chromium`,electron:`Electron`,epiphany:`Epiphany`,firefox:`Firefox`,focus:`Focus`,generic:`Generic`,googlebot:`Googlebot`,google_search:`Google Search`,ie:`Internet Explorer`,k_meleon:`K-Meleon`,maxthon:`Maxthon`,edge:`Microsoft Edge`,mz:`MZ Browser`,naver:`NAVER Whale Browser`,opera:`Opera`,opera_coast:`Opera Coast`,phantomjs:`PhantomJS`,puffin:`Puffin`,qupzilla:`QupZilla`,qq:`QQ Browser`,qqlite:`QQ Browser Lite`,safari:`Safari`,sailfish:`Sailfish`,samsung_internet:`Samsung Internet for Android`,seamonkey:`SeaMonkey`,sleipnir:`Sleipnir`,swing:`Swing`,tizen:`Tizen`,uc:`UC Browser`,vivaldi:`Vivaldi`,webos:`WebOS Browser`,wechat:`WeChat`,yandex:`Yandex Browser`},t.PLATFORMS_MAP={tablet:`tablet`,mobile:`mobile`,desktop:`desktop`,tv:`tv`},t.OS_MAP={WindowsPhone:`Windows Phone`,Windows:`Windows`,MacOS:`macOS`,iOS:`iOS`,Android:`Android`,WebOS:`WebOS`,BlackBerry:`BlackBerry`,Bada:`Bada`,Tizen:`Tizen`,Linux:`Linux`,ChromeOS:`Chrome OS`,PlayStation4:`PlayStation 4`,Roku:`Roku`},t.ENGINE_MAP={EdgeHTML:`EdgeHTML`,Blink:`Blink`,Trident:`Trident`,Presto:`Presto`,Gecko:`Gecko`,WebKit:`WebKit`}},90:function(e,t,n){t.__esModule=!0,t.default=void 0;var r,i=(r=n(91))&&r.__esModule?r:{default:r},a=n(18);function o(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}t.default=function(){function e(){}var t,n,r;return e.getParser=function(e,t){if(t===void 0&&(t=!1),typeof e!=`string`)throw Error(`UserAgent should be a string`);return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,r=[{key:`BROWSER_MAP`,get:function(){return a.BROWSER_MAP}},{key:`ENGINE_MAP`,get:function(){return a.ENGINE_MAP}},{key:`OS_MAP`,get:function(){return a.OS_MAP}},{key:`PLATFORMS_MAP`,get:function(){return a.PLATFORMS_MAP}}],(n=null)&&o(t.prototype,n),r&&o(t,r),e}(),e.exports=t.default},91:function(e,t,n){t.__esModule=!0,t.default=void 0;var r=c(n(92)),i=c(n(93)),a=c(n(94)),o=c(n(95)),s=c(n(17));function c(e){return e&&e.__esModule?e:{default:e}}t.default=function(){function e(e,t){if(t===void 0&&(t=!1),e==null||e===``)throw Error(`UserAgent parameter can't be empty`);this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=s.default.find(r.default,(function(t){if(typeof t.test==`function`)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw Error(`Browser's test function is not valid`)}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||``:this.getBrowser().name||``},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=s.default.find(i.default,(function(t){if(typeof t.test==`function`)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw Error(`Browser's test function is not valid`)}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||``:t||``},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){e===void 0&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||``:t||``},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=s.default.find(a.default,(function(t){if(typeof t.test==`function`)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw Error(`Browser's test function is not valid`)}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||``:this.getEngine().name||``},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=s.default.find(o.default,(function(t){if(typeof t.test==`function`)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw Error(`Browser's test function is not valid`)}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return s.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,n={},r=0,i={},a=0;if(Object.keys(e).forEach((function(t){var o=e[t];typeof o==`string`?(i[t]=o,a+=1):typeof o==`object`&&(n[t]=o,r+=1)})),r>0){var o=Object.keys(n),c=s.default.find(o,(function(e){return t.isOS(e)}));if(c){var l=this.satisfies(n[c]);if(l!==void 0)return l}var u=s.default.find(o,(function(e){return t.isPlatform(e)}));if(u){var d=this.satisfies(n[u]);if(d!==void 0)return d}}if(a>0){var f=Object.keys(i),p=s.default.find(f,(function(e){return t.isBrowser(e,!0)}));if(p!==void 0)return this.compareVersion(i[p])}},t.isBrowser=function(e,t){t===void 0&&(t=!1);var n=this.getBrowserName().toLowerCase(),r=e.toLowerCase(),i=s.default.getBrowserTypeByAlias(r);return t&&i&&(r=i.toLowerCase()),r===n},t.compareVersion=function(e){var t=[0],n=e,r=!1,i=this.getBrowserVersion();if(typeof i==`string`)return e[0]===`>`||e[0]===`<`?(n=e.substr(1),e[1]===`=`?(r=!0,n=e.substr(2)):t=[],e[0]===`>`?t.push(1):t.push(-1)):e[0]===`=`?n=e.substr(1):e[0]===`~`&&(r=!0,n=e.substr(1)),t.indexOf(s.default.compareVersions(i,n,r))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return t===void 0&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return e===void 0&&(e=[]),e.some((function(e){return t.is(e)}))},e}(),e.exports=t.default},92:function(e,t,n){t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=/version\/(\d+(\.?_?\d+)+)/i;t.default=[{test:[/googlebot/i],describe:function(e){var t={name:`Googlebot`},n=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/opera/i],describe:function(e){var t={name:`Opera`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:`Opera`},n=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:`Samsung Internet for Android`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe:function(e){var t={name:`NAVER Whale Browser`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:`MZ Browser`},n=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/focus/i],describe:function(e){var t={name:`Focus`},n=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/swing/i],describe:function(e){var t={name:`Swing`},n=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/coast/i],describe:function(e){var t={name:`Opera Coast`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:`Opera Touch`},n=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe:function(e){var t={name:`Yandex Browser`},n=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:`UC Browser`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:`Maxthon`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe:function(e){var t={name:`Epiphany`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe:function(e){var t={name:`Puffin`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe:function(e){var t={name:`Sleipnir`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe:function(e){var t={name:`K-Meleon`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe:function(e){var t={name:`WeChat`},n=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?`QQ Browser Lite`:`QQ Browser`},n=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe:function(e){var t={name:`Internet Explorer`},n=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe:function(e){var t={name:`Microsoft Edge`},n=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:`Microsoft Edge`},n=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe:function(e){var t={name:`Vivaldi`},n=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe:function(e){var t={name:`SeaMonkey`},n=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe:function(e){var t={name:`Sailfish`},n=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe:function(e){var t={name:`Amazon Silk`},n=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe:function(e){var t={name:`PhantomJS`},n=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe:function(e){var t={name:`SlimerJS`},n=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:`BlackBerry`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:`WebOS Browser`},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe:function(e){var t={name:`Bada`},n=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe:function(e){var t={name:`Tizen`},n=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe:function(e){var t={name:`QupZilla`},n=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:`Firefox`},n=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe:function(e){var t={name:`Electron`},n=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:`Miui`},n=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe:function(e){var t={name:`Chromium`},n=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:`Chrome`},n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe:function(e){var t={name:`Google Search`},n=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t={name:`Android Browser`},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe:function(e){var t={name:`PlayStation 4`},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:`Safari`},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/.*/i],describe:function(e){var t=e.search(`\\(`)===-1?/^(.*)\/(.*) /:/^(.*)\/(.*)[ \t]\((.*)/;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}],e.exports=t.default},93:function(e,t,n){t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18);t.default=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:a.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=i.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:a.OS_MAP.iOS},n=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,`.`),n=i.default.getMacOSVersionName(t),r={name:a.OS_MAP.MacOS,version:t};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,`.`);return{name:a.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=i.default.getAndroidVersionName(t),r={name:a.OS_MAP.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:a.OS_MAP.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}],e.exports=t.default},94:function(e,t,n){t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18);t.default=[{test:[/googlebot/i],describe:function(){return{type:`bot`,vendor:`Google`}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&`Nova`,n={type:a.PLATFORMS_MAP.mobile,vendor:`Huawei`};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Nexus`}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Apple`,model:`iPad`}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Apple`,model:`iPad`}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Amazon`,model:`Kindle Fire HD 7`}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:`Amazon`}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:`Apple`,model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:`Nexus`}}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return e.getBrowserName(!0)===`blackberry`},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:`BlackBerry`}}},{test:function(e){return e.getBrowserName(!0)===`bada`},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return e.getBrowserName()===`windows phone`},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:`Microsoft`}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(`.`)[0]);return e.getOSName(!0)===`android`&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return e.getOSName(!0)===`android`},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return e.getOSName(!0)===`macos`},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:`Apple`}}},{test:function(e){return e.getOSName(!0)===`windows`},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return e.getOSName(!0)===`linux`},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return e.getOSName(!0)===`playstation 4`},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return e.getOSName(!0)===`roku`},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}],e.exports=t.default},95:function(e,t,n){t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18);t.default=[{test:function(e){return e.getBrowserName(!0)===`microsoft edge`},describe:function(e){if(/\sedg\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},n=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},n=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},n=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},n=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}],e.exports=t.default}})}))}));async function Yo(e){return await J(e,`GET`,`/events/session-started`)}async function Xo(e){return await J(e,`GET`,`/settings`)}async function Zo(e){return await J(e,`GET`,`/module-settings`)}async function Qo(e,t){return await J(e,`POST`,`/ai/usage-settings`,t)}function $o(e){return e.join(`,`)}async function es(e){return await Oa(e,`/health`)}async function ts(e,t){return await Oa(e,`/templates/categories`,void 0,t)}async function ns(e,t,n){return await Oa(e,`/templates/collections`,{category:t.categories,search:t.search},n)}async function rs(e,t,n){let{apps:r,sort:i,combineWith:a,categories:o,nodes:s,...c}=t;return await Oa(e,`/templates/search`,{...c,category:$o(o),...r&&{apps:$o(r)},...s&&{nodes:$o(s)},...i&&{sort:i},...a&&{combineWith:a}},n)}async function is(e,t,n){return await Oa(e,`/templates/collections/${t}`,void 0,n)}async function as(e,t,n){return await Oa(e,`/templates/workflows/${t}`,void 0,n)}async function os(e,t,n){return await Oa(e,`/workflows/templates/${t}`,void 0,n)}let ss=function(e){return e.Email=`email`,e.Ldap=`ldap`,e.Saml=`saml`,e.Oidc=`oidc`,e}({});async function cs(e){return await J(e,`GET`,`/api-keys`)}async function ls(e){return await J(e,`GET`,`/api-keys/scopes`)}async function us(e,t){return await J(e,`POST`,`/api-keys`,t)}async function ds(e,t){return await J(e,`DELETE`,`/api-keys/${t}`)}async function fs(e,t,n){return await J(e,`PATCH`,`/api-keys/${t}`,n)}async function ps(e){return await Oa(e.baseUrl,`/admin/cloud-plan`)}async function ms(e){return await Oa(e.baseUrl,`/cloud/limits`)}async function hs(e){return await Oa(e.baseUrl,`/cloud/proxy/user/me`)}async function gs(e){return await Aa(e.baseUrl,`/cloud/proxy/user/resend-confirmation-email`)}async function _s(e){return await Oa(e.baseUrl,`/cloud/proxy/login/code`)}async function vs(e,t){return await Aa(e.baseUrl,`/cloud/proxy/user/event`,t)}async function ys(e){return(await Oa(e.baseUrl,`/community-packages`)).data||[]}async function bs(e,t,n,r){return await Aa(e.baseUrl,`/community-packages`,{name:t,verify:n,version:r})}async function xs(e,t){return await J(e,`DELETE`,`/community-packages`,{name:t})}async function Ss(e,t,n,r){return await J(e,`PATCH`,`/community-packages`,{name:t,version:n,checksum:r})}async function Cs(){return(await Oa(`https://api.npms.io/v2/`,`search?q=keywords:n8n-community-node-package`)).total||0}async function ws(e){return await J(e,`GET`,`/credential-resolvers`)}async function Ts(e){return await J(e,`GET`,`/credential-resolvers/types`)}async function Es(e,t){return await J(e,`GET`,`/credential-resolvers/${t}`)}async function Ds(e,t){return await J(e,`POST`,`/credential-resolvers`,t)}async function Os(e,t,n){return await J(e,`PATCH`,`/credential-resolvers/${t}`,n)}async function ks(e,t){return await J(e,`DELETE`,`/credential-resolvers/${t}`)}function As(e){return e.id!==void 0}async function js(e,t,n=[]){return await J(e,`POST`,`/eventbus/destination`,{...t,subscribedEvents:n})}async function Ms(e,t){return await J(e,`DELETE`,`/eventbus/destination?id=${t}`)}async function Ns(e,t){return await J(e,`GET`,`/eventbus/testmessage`,{...t})}async function Ps(e){return await J(e,`GET`,`/eventbus/eventnames`)}async function Fs(e){return await J(e,`GET`,`/eventbus/destination`)}var Is=async e=>await J(e,`GET`,`/external-secrets/secrets`),Ls=async e=>await J(e,`GET`,`/secret-providers/completions/secrets/global`),Rs=async(e,t)=>await J(e,`GET`,`/secret-providers/completions/secrets/global/${t}`),zs=async(e,t)=>await J(e,`GET`,`/secret-providers/completions/secrets/project/${t}`),Bs=async e=>await J(e,`GET`,`/external-secrets/providers`),Vs=async(e,t)=>await J(e,`GET`,`/external-secrets/providers/${t}`),Hs=async(e,t,n)=>await J(e,`POST`,`/external-secrets/providers/${t}/test`,n),Us=async(e,t,n)=>await J(e,`POST`,`/external-secrets/providers/${t}`,n),Ws=async(e,t)=>await J(e,`POST`,`/external-secrets/providers/${t}/update`),Gs=async(e,t,n)=>await J(e,`POST`,`/external-secrets/providers/${t}/connect`,{connected:n}),Ks=async(e,t)=>await J(e,`POST`,`/external-secrets/settings`,t),qs=async e=>await J(e,`GET`,`/secret-providers/types`),Js=async e=>await J(e,`GET`,`/secret-providers/connections`),Ys=async(e,t)=>await J(e,`GET`,`/secret-providers/connections/${t}`),Xs=async(e,t)=>await J(e,`POST`,`/secret-providers/connections`,t),Zs=async(e,t,n)=>await J(e,`PATCH`,`/secret-providers/connections/${t}`,n),Qs=async(e,t)=>await J(e,`PATCH`,`/secret-providers/connections/${t}`,{isEnabled:!0}),$s=async(e,t)=>await J(e,`POST`,`/secret-providers/connections/${t}/test`),ec=async(e,t)=>await J(e,`POST`,`/secret-providers/connections/${t}/reload`),tc=async(e,t)=>await J(e,`DELETE`,`/secret-providers/connections/${t}`),nc=async(e,t)=>await J(e,`GET`,`/secret-providers/projects/${t}/connections`),rc=async(e,t,n)=>await J(e,`GET`,`/secret-providers/projects/${t}/connections/${n}`),ic=async(e,t,n)=>await J(e,`POST`,`/secret-providers/projects/${t}/connections`,n),ac=async(e,t,n,r)=>await J(e,`PATCH`,`/secret-providers/projects/${t}/connections/${n}`,r),oc=async(e,t,n)=>await J(e,`POST`,`/secret-providers/projects/${t}/connections/${n}/test`),sc=async(e,t,n)=>await J(e,`DELETE`,`/secret-providers/projects/${t}/connections/${n}`);async function cc(e){return await J(e,`GET`,`/ldap/config`)}async function lc(e){return await J(e,`POST`,`/ldap/test-connection`)}async function uc(e,t){return await J(e,`PUT`,`/ldap/config`,t)}async function dc(e,t){return await J(e,`POST`,`/ldap/sync`,t)}async function fc(e,t){return await J(e,`GET`,`/ldap/sync`,t)}async function pc(e){return await J(e,`POST`,`/mfa/can-enable`)}async function mc(e){return await J(e,`GET`,`/mfa/qr`)}async function hc(e,t){return await J(e,`POST`,`/mfa/enable`,t)}async function gc(e,t){return await J(e,`POST`,`/mfa/verify`,t)}async function _c(e,t){return await J(e,`POST`,`/mfa/disable`,t)}async function vc(e,t){return await J(e,`POST`,`/mfa/enforce-mfa`,{enforce:t})}async function yc(e,t=5,n=500){for(let r=0;r<t;r++){let t=await Ca.get(e,{withCredentials:!0});if(typeof t.data==`object`&&t.data!==null)return t.data;await Pi(n*r)}throw Error(`Could not fetch node types`)}async function bc(e){return await yc(e+`types/nodes.json`)}async function xc(e){return await J(e,`GET`,`/community-node-types`)}async function Sc(e,t){return await J(e,`GET`,`/community-node-types/${encodeURIComponent(t)}`)}async function Cc(e){return await J(e,`GET`,`/node-translation-headers`)}async function wc(e,t){return await J(e,`POST`,`/node-types`,{nodeInfos:t})}async function Tc(e,t){return await J(e,`POST`,`/dynamic-node-parameters/options`,t)}async function Ec(e,t){return await J(e,`POST`,`/dynamic-node-parameters/resource-locator-results`,t)}async function Dc(e,t){return await J(e,`POST`,`/dynamic-node-parameters/resource-mapper-fields`,t)}async function Oc(e,t){return await J(e,`POST`,`/dynamic-node-parameters/local-resource-mapper-fields`,t)}async function kc(e,t){return await J(e,`POST`,`/dynamic-node-parameters/action-result`,t)}async function Ac(e,t){await J(e,`PATCH`,`/user-settings/nps-survey`,t)}var jc=`/orchestration/worker/status`,Mc=async e=>{await J(e,`POST`,jc)},Nc=async e=>await J(e,`GET`,`/sso/provisioning/config`),Pc=async(e,t)=>await J(e,`PATCH`,`/sso/provisioning/config`,t),Fc=async e=>await J(e,`GET`,`/roles?withUsageCount=true`),Ic=async(e,t)=>await J(e,`POST`,`/roles`,t),Lc=async(e,t)=>await J(e,`GET`,`/roles/${t.slug}?withUsageCount=true`),Rc=async(e,t,n)=>await J(e,`PATCH`,`/roles/${t}`,n),zc=async(e,t)=>await J(e,`DELETE`,`/roles/${t}`),Bc=async(e,t)=>await J(e,`GET`,`/roles/${t}/assignments`),Vc=async(e,t,n)=>await J(e,`GET`,`/roles/${t}/assignments/${n}/members`);async function Hc(e){return await J(e,`GET`,`/settings/security`)}async function Uc(e,t){return await J(e,`POST`,`/settings/security`,t)}var Wc=async(e,t=``)=>await J(e,`GET`,`/sso/saml/initsso?redirect=${t}`),Gc=async e=>await J(e,`GET`,`/sso/saml/metadata`),Kc=async e=>await J(e,`GET`,`/sso/saml/config`),qc=async(e,t)=>await J(e,`POST`,`/sso/saml/config`,t),Jc=async(e,t)=>await J(e,`POST`,`/sso/saml/config/test`,t),Yc=async e=>await J(e,`GET`,`/sso/oidc/config`),Xc=async(e,t)=>await J(e,`POST`,`/sso/oidc/config`,t);async function Zc(e){return await ka({method:`GET`,baseURL:e.baseUrl,endpoint:`/third-party-licenses`})}async function Qc(e,t){return await J(e,`POST`,`/owner/dismiss-banner`,{banner:t.bannerName})}var $c=async e=>await J(e,`GET`,`/license`),el=async(e,t)=>await J(e,`POST`,`/license/activate`,t),tl=async e=>await J(e,`POST`,`/license/renew`),nl=async e=>await J(e,`POST`,`/license/enterprise/request_trial`),rl=async(e,t)=>await J(e,`POST`,`/license/enterprise/community-registered`,t);async function il(e){return await J(e,`GET`,`/login`)}async function al(e,t){return await J(e,`POST`,`/login`,t)}async function ol(e){await J(e,`POST`,`/logout`)}async function sl(e,t){return await J(e,`POST`,`/owner/setup`,t)}async function cl(e,t){return await J(e,`GET`,`/resolve-signup-token`,t)}async function ll(e,t){await J(e,`POST`,`/forgot-password`,t)}async function ul(e,t){await J(e,`GET`,`/resolve-password-token`,t)}async function dl(e,t){await J(e,`POST`,`/change-password`,t)}async function fl(e,t){return await J(e,`PATCH`,`/me`,t)}async function pl(e,t){return await J(e,`PATCH`,`/me/settings`,t)}async function ml(e,t,n){return await J(e,`PATCH`,`/users/${t}/settings`,n)}async function hl(e,t){return await J(e,`PATCH`,`/me/password`,t)}async function gl(e,{id:t,transferId:n}){await J(e,`DELETE`,`/users/${t}`,n?{transferId:n}:{})}async function _l(e,t){return await J(e,`GET`,`/users`,t)}async function vl(e,{id:t}){return await J(e,`POST`,`/users/${t}/invite-link`)}async function yl(e,{id:t}){return await J(e,`GET`,`/users/${t}/password-reset-link`)}async function bl(e,t){await J(e,`POST`,`/me/survey`,t)}async function xl(e,{id:t,newRoleName:n}){return await J(e,`PATCH`,`/users/${t}/role`,{newRoleName:n})}async function Sl(e,t,n){return await Oa(e,t,{},{[Sa]:n})}async function Cl(e,t,n){return await Oa(e,``,{},{[Sa]:n,[ya]:t})}var wl=async(e,t)=>await J(e,`POST`,`/webhooks/find`,t),Tl=async(e,t,n)=>{let{data:r}=await Oa(e.baseUrl,`/workflow-history/workflow/${t}`,n);return r},El=async(e,t,n)=>{let{data:r}=await Oa(e.baseUrl,`/workflow-history/workflow/${t}/version/${n}`);return r},Dl=async(e,t,n)=>{let{data:r}=await Aa(e.baseUrl,`/workflow-history/workflow/${t}/versions`,{versionIds:n});return r},Ol=async(e,t,n,r)=>{await Ta(e.baseUrl,`/workflow-history/workflow/${t}/versions/${n}`,r)},kl=e(Jo(),1);const Al=Da(qo.SETTINGS,()=>{let e=m(!1),t=m({}),n=m({}),r=m({quota:-1,showSetupOnFirstLoad:!1,smtpSetup:!1,authenticationMethod:ss.Email}),i=m(!1),a=m({enabled:!1,latestVersion:0,path:`/`,swaggerUi:{enabled:!1}}),o=m({enabled:!1}),s=m({enabled:!1}),c=m(`all`),l=m(`all`),u=m(!1),d=m(!1),f=m(!1),p=E(()=>t.value?.isDocker??!1),h=E(()=>t.value?.databaseType),g=E(()=>t.value?.license.planName??`Community`),_=E(()=>t.value?.license.consumerId),v=E(()=>t.value?.binaryDataMode),y=E(()=>t.value?.pruning),b=E(()=>({blockFileAccessToN8nFiles:t.value.security.blockFileAccessToN8nFiles,secureCookie:t.value.authCookie.secure})),x=E(()=>t.value.enterprise??{}),S=E(()=>t.value.nodeJsVersion),C=E(()=>t.value.nodeEnv),w=E(()=>t.value.concurrency),T=E(()=>w.value!==-1),D=E(()=>a.value.enabled),O=E(()=>a.value.swaggerUi.enabled),k=E(()=>t.value.previewMode),A=E(()=>a.value.latestVersion),j=E(()=>a.value.path),M=E(()=>t.value.aiAssistant?.enabled&&t.value.aiAssistant?.setup),N=E(()=>t.value.askAi?.enabled),P=E(()=>t.value.aiBuilder?.enabled&&t.value.aiBuilder?.setup),F=E(()=>M.value||P.value),I=E(()=>r.value.showSetupOnFirstLoad),L=E(()=>t.value.deployment?.type||`default`),R=E(()=>t.value.deployment?.type===`cloud`),z=E(()=>t.value.activeModules),B=e=>z.value?.includes(e),V=E(()=>t.value.aiCredits?.enabled&&t.value.aiCredits?.setup),H=E(()=>t.value.aiCredits?.credits),U=E(()=>t.value.ai?.allowSendingParameterValues??!0),W=E(()=>r.value.smtpSetup),ee=E(()=>t.value.telemetry?.enabled&&t.value.personalizationSurveyEnabled),te=E(()=>t.value.telemetry),ne=E(()=>t.value.logLevel),G=E(()=>t.value.telemetry&&t.value.telemetry.enabled),re=E(()=>t.value.enterprise?.mfaEnforcement??!1),ie=E(()=>o.value.enabled),ae=E(()=>s.value.enabled),oe=E(()=>B(`data-table`)),se=E(()=>B(`chat-hub`)),ce=E(()=>t.value.enterprise?.customRoles??!1),le=E(()=>t.value.workflowTagsDisabled===void 0?!0:!t.value.workflowTagsDisabled),ue=E(()=>t.value.hiringBannerEnabled),de=E(()=>!!t.value.templates?.enabled),fe=E(()=>i.value),pe=E(()=>t.value.templates?.host??``),me=E(()=>t.value.pushBackend),he=E(()=>t.value.communityNodesEnabled),ge=E(()=>t.value.unverifiedCommunityNodesEnabled),_e=E(()=>t.value.allowedModules),ve=E(()=>t.value.executionMode===`queue`),ye=E(()=>t.value.isMultiMain),be=E(()=>!!t.value.enterprise?.workerView),xe=E(()=>t.value.workflowCallerPolicyDefaultOption),Se=E(()=>t.value.banners?.dismissed??[]),Ce=E(()=>g.value.toLowerCase()===`community`),we=E(()=>t.value.releaseChannel===`dev`),Te=E(()=>t.value.endpointHealth),K=e=>{if(t.value=e,r.value=e.userManagement,r.value&&(r.value.showSetupOnFirstLoad=!!t.value.userManagement.showSetupOnFirstLoad),t.value.publicApi&&(a.value=t.value.publicApi),o.value.enabled=t.value.mfa?.enabled,s.value.enabled=t.value.folders?.enabled,t.value.versionCli&&Y().setVersionCli(t.value.versionCli),t.value.authCookie.secure){let{browser:e}=kl.default.parse(navigator.userAgent);if(location.protocol===`http:`&&(![`localhost`,`127.0.0.1`].includes(location.hostname)||e.name===`Safari`)){document.write(rn);return}}},Ee=e=>{t.value.allowedModules=e},De=e=>{c.value=e},Oe=e=>{l.value=e},ke=e=>{u.value=e},Ae=e=>{d.value=e},je=async()=>{let e=Y(),n=await Xo(e.restApiContext);K(n),e.setDefaultLocale(n.defaultLocale),f.value=t.value.mfa?.enforced??!1,n.settingsMode!==`public`&&(t.value.communityNodesEnabled=n.communityNodesEnabled,t.value.unverifiedCommunityNodesEnabled=n.unverifiedCommunityNodesEnabled,Ee(n.allowedModules),De(n.saveDataErrorExecution),Oe(n.saveDataSuccessExecution),Ae(n.saveExecutionProgress),ke(n.saveManualExecutions),e.setUrlBaseWebhook(n.urlBaseWebhook),e.setUrlBaseEditor(n.urlBaseEditor),e.setEndpointForm(n.endpointForm),e.setEndpointFormTest(n.endpointFormTest),e.setEndpointFormWaiting(n.endpointFormWaiting),e.setEndpointWebhook(n.endpointWebhook),e.setEndpointWebhookTest(n.endpointWebhookTest),e.setEndpointWebhookWaiting(n.endpointWebhookWaiting),e.setEndpointMcp(n.endpointMcp),e.setEndpointMcpTest(n.endpointMcpTest),e.setTimezone(n.timezone),e.setExecutionTimeout(n.executionTimeout),e.setMaxExecutionTimeout(n.maxExecutionTimeout),e.setInstanceId(n.instanceId),e.setOauthCallbackUrls(n.oauthCallbackUrls),e.setN8nMetadata(n.n8nMetadata||{}),e.setBinaryDataMode(n.binaryDataMode),n.telemetry.enabled&&Yo(e.restApiContext))};return{settings:t,userManagement:r,templatesEndpointHealthy:i,api:a,mfa:o,isDocker:p,isDevRelease:we,endpointHealth:Te,isEnterpriseFeatureEnabled:x,databaseType:h,planName:g,consumerId:_,binaryDataMode:v,pruning:y,security:b,nodeJsVersion:S,nodeEnv:C,concurrency:w,isConcurrencyEnabled:T,isPublicApiEnabled:D,isSwaggerUIEnabled:O,isPreviewMode:k,publicApiLatestVersion:A,publicApiPath:j,showSetupPage:I,deploymentType:L,isCloudDeployment:R,isSmtpSetup:W,isPersonalizationSurveyEnabled:ee,telemetry:te,logLevel:ne,isTelemetryEnabled:G,isMfaFeatureEnabled:ie,isFoldersFeatureEnabled:ae,isAiAssistantEnabled:M,isCustomRolesFeatureEnabled:ce,areTagsEnabled:le,isHiringBannerEnabled:ue,isTemplatesEnabled:de,isTemplatesEndpointReachable:fe,templatesHost:pe,pushBackend:me,isCommunityNodesFeatureEnabled:he,isUnverifiedPackagesEnabled:ge,allowedModules:_e,isQueueModeEnabled:ve,isMultiMain:ye,isWorkerViewAvailable:be,workflowCallerPolicyDefaultOption:xe,permanentlyDismissedBanners:Se,saveDataErrorExecution:c,saveDataSuccessExecution:l,saveManualExecutions:u,saveDataProgressExecution:d,isCommunityPlan:Ce,isAskAiEnabled:N,isAiBuilderEnabled:P,isAiAssistantOrBuilderEnabled:F,isAiCreditsEnabled:V,aiCreditsQuota:H,isAiDataSharingEnabled:U,reset:()=>{t.value={}},getTimezones:async()=>await J(Y().restApiContext,`GET`,`/options/timezones`),testTemplatesEndpoint:async()=>{let e=new Promise((e,t)=>setTimeout(()=>t(),2e3));await Promise.race([es(pe.value),e]),i.value=!0},disableTemplates:()=>{t.value={...t.value,templates:{...t.value.templates,enabled:!1}}},stopShowingSetupPage:()=>{r.value.showSetupOnFirstLoad=!1},getSettings:je,setSettings:K,initialize:async()=>{e.value||=(await je(),!0)},getModuleSettings:async()=>{n.value=await Zo(Y().restApiContext)},moduleSettings:n,updateAiDataSharingSettings:async e=>{await Qo(Y().restApiContext,{allowSendingParameterValues:e}),t.value.ai&&(t.value.ai.allowSendingParameterValues=e)},isMFAEnforcementLicensed:re,isMFAEnforced:f,activeModules:z,isModuleActive:B,isDataTableFeatureEnabled:oe,isChatFeatureEnabled:se}}),jl=`deleteUser`,Ml=`inviteUser`,Nl=`personalization`,Pl=`companyType`,Fl=`saas`,Il=`ecommerce`,Ll=`education`,Rl=`digital-agency`,zl=`systems-integrator`,Bl=`other`,Vl=`personal`,Hl=`companyIndustryExtended`,Ul=`otherCompanyIndustryExtended`,Wl=`physical-retail-or-services`,Gl=`real-estate-or-construction`,Kl=`government`,ql=`legal-industry`,Jl=`marketing-industry`,Yl=`media-industry`,Xl=`manufacturing-industry`,Zl=`msp`,Ql=`healthcare`,$l=`finance-insurance-industry`,eu=`it-industry`,tu=`security-industry`,nu=`telecoms`,ru=`other`,iu=`companySize`,au=`<20`,ou=`20-99`,su=`100-499`,cu=`500-999`,lu=`1000+`,uu=`personalUser`,du=`automationGoalSm`,fu=`lead-generation`,pu=`customer-communication`,mu=`actions`,hu=`ad-campaign`,gu=`reporting`,_u=`data-syncing`,vu=`other`,yu=`automationGoalSmOther`,bu=`codingSkill`,xu=`automationBeneficiary`,Su=`myself`,Cu=`my-team`,wu=`other-teams`,Tu=`reportedSource`,Eu=`reportedSourceOther`,Du=`google`,Ou=`twitter`,ku=`linkedin`,Au=`youtube`,ju=`friend`,Mu=`llm`,Nu=`podcast`,Pu=`event`,Fu=`other`,Iu=`automationGoalDevops`,Lu=`automationGoalDevopsOther`,Ru=`other`,zu=`ci-cd`,Bu=`cloud-infrastructure-orchestration`,Vu=`data-syncing`,Hu=`incident-response`,Uu=`monitoring-alerting`,Wu=`reporting`,Gu=`ticketing-systems-integrations`,Ku=`customer-integrations`,qu=`customer-support`,Ju=`finance-accounting`,Yu=`product`,Xu=`sales-marketing`,Zu=`security`,Qu=`other`,$u=`role`,ed=`roleOther`,td=`business-owner`,nd=`customer-support`,rd=`data-science`,id=`devops`,ad=`it`,od=`engineering`,sd=`sales-and-marketing`,cd=`security`,ld=`other`;function ud(e){return`version`in e}function dd(e){return e?ud(e)?fd(e):pd(e):[]}function fd(e){let t=[],{version:n,...r}=e;if(Object.keys(r).length===0)return[];let i=e[iu],a=e[Pl],o=`automationGoal`in e?e.automationGoal:void 0,s=null;if(`codingSkill`in e&&e.codingSkill&&(s=parseInt(e[bu],10),s=isNaN(s)?0:s),t=a===`ecommerce`?t.concat(Xt):a===`msp`?t.concat(Ut):(a===`personal`||o===`other`||o===`not-sure-yet`)&&s!==null&&s>=4?t.concat($i):(a===`personal`||o===`other`||o===`not-sure-yet`)&&s!==null&&s<3?t.concat(wr):o===`customer-integrations`?t.concat($i):o===`customer-support`||o===`finance-accounting`?t.concat(Tn):o===`sales-marketing`?t.concat(Jn):o===`hr`?t.concat(Wt):o===`operations`?t.concat(wr):o===`product`?t.concat(er):o===`security`?t.concat(Ar):t.concat($i),t=s!==null&&s>=4?t.concat(Ai):t.concat(Zn),t=s!==null&&s<3?t.concat(Lt):t.concat(qi),i===`500-999`||i===`1000+`)switch(o){case Ku:t=t.concat(kr);break;case qu:t=t.concat(ii);break;case Xu:t=t.concat(ti);break;case`hr`:t=t.concat(Li);break;case Yu:t=t.concat(Jt);break;case Ju:t=t.concat(Zr);break;case Zu:t=t.concat(Cr);break;default:t=t.concat(Br)}else switch(o){case Ku:t=t.concat(kr);break;case qu:t=t.concat(ii);break;case Ju:t=t.concat(Lr);break;case`hr`:t=t.concat(fa);break;case Yu:t=t.concat(Jt);break;case Xu:t=t.concat(Ki);break;case Zu:t=t.concat(Cr);break;default:t=t.concat(Br)}return t=t.concat(Nr),t}function pd(e){let t=e[iu],n=e.workArea;function r(e){return Array.isArray(n)?n.includes(e):n===e}let i=!n||n.length===0;if(t===null&&i&&e.codingSkill===null)return[];let a=null;e.codingSkill&&(a=parseInt(e[bu],10),a=isNaN(a)?0:a);let o=[];return o=r(`IT-Engineering`)?o.concat($i):o.concat(wr),o=a!==null&&a>=4?o.concat(Ai):o.concat(Zn),o=a!==null&&a<3?o.concat(Lt):o.concat(qi),o=t===`500-999`||t===`1000+`?r(`sales-businessDevelopment`)?o.concat(ti):r(`security`)?o.concat([Cr,kr]):r(`product`)?o.concat([Ut,bi]):r(`IT-Engineering`)?o.concat([vr,kr]):o.concat([ln,bn]):r(`sales-businessDevelopment`)?o.concat(vn):r(`security`)?o.concat([lr,kr]):r(`product`)?o.concat([Ut,ar]):r(`IT-Engineering`)?o.concat([Wi,kr]):r(`finance`)?o.concat([li,Lr,Zr]):o.concat([Ii,Br]),o=o.concat(Nr),o}const md=24,hd=`tagsManager`,gd=`annotationTagsManager`,_d=`debugPaywall`,vd=`communityPlusEnrollment`,yd=`https://docs.n8n.io/hosting/community-edition-features/#registered-community-edition`,bd=`variableModal`,xd=`editCredential`,Sd=`selectCredential`,Cd=[`[`,`]`,`^`,`\\`,`/`,`:`,`*`,`?`,`"`,`<`,`>`,`|`],wd=RegExp(`[${Cd.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(``)}]`),Td=/^\.+$/,Ed=128,Dd=`deleteFolder`,Od=`moveFolder`,kd={OPEN:`open`,CREATE:`create`,CREATE_WORKFLOW:`create_workflow`,RENAME:`rename`,MOVE:`move`,CHOWN:`change_owner`,TAGS:`manage_tags`,DELETE:`delete`},Ad=`sourceControlPush`,jd=`sourceControlPull`,Md=`sourceControlPullResult`,Nd=`projectMoveResourceModal`,Pd=`communityPackageInstall`,Fd=`communityPackageManageConfirm`,Id=`https://${qr}/integrations/community-nodes/installation/gui-install/`,Ld=`https://${qr}/integrations/community-nodes/risks/`;`${qr}`;const Rd=`https://www.npmjs.com/search?q=keywords%3An8n-community-node-package`,zd={UNINSTALL:`uninstall`,UPDATE:`update`,VIEW_DOCS:`view-documentation`},Bd=`createOrEditApiKey`;async function Vd(e,t){let n=await J(e,`GET`,`/workflows/new`,t);return{name:n.name,settings:n.defaultSettings}}async function Hd(e,t){return await J(e,`GET`,`/workflows/${t}`)}async function Ud(e,t){return await J(e,`GET`,`/workflows/${t}/exists`)}async function Wd(e,t,n,r){return await Ma(e,`GET`,`/workflows`,{includeScopes:!0,...t?{filter:t}:{},...n||{},...r?{select:JSON.stringify(r)}:{}})}async function Gd(e,t){return await Ma(e,`POST`,`/workflows/with-node-types`,{nodeTypes:t})}async function Kd(e,t,n,r,i){return await Ma(e,`GET`,`/workflows`,{includeScopes:!0,includeFolders:r,onlySharedWithMe:i,...t?{filter:t}:{},...n||{}})}async function qd(e){return await J(e,`GET`,`/active-workflows`)}async function Jd(e,t){return await J(e,`GET`,`/executions/${t}`)}async function Yd(e,t){return await J(e,`GET`,`/workflows/${t}/executions/last-successful`)}async function Xd(e,t){return await J(e,`GET`,`/workflows/${t}/collaboration/write-lock`)}function Zd(e){return e instanceof Date}function Qd(e){return typeof e==`object`&&!!e&&!Zd(e)}function $d(e){return Qd(e)&&!Array.isArray(e)}const ef=(e,t)=>(Array.isArray(e)?e:Object.entries(e)).some(e=>Qd(e)?ef(e,t):e?.toString().toLowerCase().includes(t.toLowerCase())),tf=e=>{if(e==null)return 0;if(typeof e==`object`&&Object.keys(e).length===0||Array.isArray(e)&&e.length===0)return Number((2/1024).toFixed(2));try{let t=JSON.stringify(e),n=new TextEncoder().encode(t).length/1024;return Number(n.toFixed(2))}catch(e){throw Error(`Failed to calculate object size: ${e instanceof Error?e.message:`Unknown error`}`)}};function nf(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))}var rf=e(Pa(),1),af=[``,`k`,`M`,`G`,`T`,`P`,`E`];const of=(e,{[e]:t,...n})=>n;function sf(e){return $d(e)?Object.keys(e).includes(`json`):!1}const cf=e=>!e&&e!==0?!0:Array.isArray(e)?!e.length||e.every(cf):typeof e==`object`?!Object.keys(e).length||Object.values(e).every(cf):!1;function lf(e){let t=Math.log10(Math.abs(e))/3|0;if(t===0)return e;let n=af[t],r=e/10**(t*3);return Number(r.toFixed(1))+n}function uf(e){return(0,rf.default)(e,`yyyy-mm-dd HH:MM:ss`)}function df(e){return(0,rf.default)(e,`d mmmm, yyyy @ HH:MM Z`)}function ff(e){return e===void 0?0:new Blob([typeof e==`string`?e:JSON.stringify(e)]).size}function pf(e,t=2){let n=e/1024/1024;return parseFloat(n.toFixed(t))}function mf(e,t,n){return e.length<=t?e:`${e.slice(0,t-n)}...${e.slice(e.length-n,e.length)}`}const hf=e=>{let t=`*___~#^#~___*`,n=e.match(/\[(.*?)]/g)??[];n=n.map(e=>e.slice(1,-1)).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?e.slice(1,-1):e);let r=e.replace(/\[(.*?)]/g,t).split(`.`),i=[];return r.forEach(e=>{let r=e.indexOf(t);for(;r!==-1;)r===0?(i.push(n.shift()??``),e=e.substr(13)):(i.push(e.substr(0,r)),e=e.substr(r)),r=e.indexOf(t);e!==``&&i.push(e)}),`["`+i.join(`"]["`)+`"]`},gf=e=>{let t=typeof e==`string`?Ct(e):e;return Array.isArray(t)?t.map(e=>sf(e)?e.json:e):t},_f=e=>isNaN(+e)?e:+e;function vf(e){return e!=null}function yf(e){return typeof e==`object`&&!!e&&`focus`in e&&typeof e.focus==`function`}function bf(e){return typeof e==`object`&&!!e&&`blur`in e&&typeof e.blur==`function`}function xf(e){return typeof e==`object`&&!!e&&`select`in e&&typeof e.select==`function`}function Sf(e){return typeof e==`object`&&!!e&&`focusOnInput`in e&&typeof e.focusOnInput==`function`}var Cf={"data-test-id":`sanitized-error-message`},wf=[`data-action-parameter-node`],Tf=y({__name:`NodeExecutionErrorMessage`,props:{nodeName:{},errorMessage:{}},setup(e){let t=Ee();return(r,i)=>{let a=ce(`n8n-html`);return n(),f(`div`,null,[B(c(`span`,Cf,null,512),[[a,e.errorMessage]]),i[0]||=c(`br`,null,null,-1),c(`a`,{"data-action":`openNodeDetail`,"data-action-parameter-node":e.nodeName},D(N(t).baseText(`node.executionError.openNode`)),9,wf)])}}}),{parse:Ef,stringify:Df}=JSON,{keys:Of}=Object,kf=String,Af=`string`,jf={},Mf=`object`,Nf=(e,t)=>t,Pf=e=>e instanceof kf?kf(e):e,Ff=(e,t)=>typeof t===Af?new kf(t):t,If=(e,t,n,r)=>{let i=[];for(let a=Of(n),{length:o}=a,s=0;s<o;s++){let o=a[s],c=n[o];if(c instanceof kf){let a=e[c];typeof a===Mf&&!t.has(a)?(t.add(a),n[o]=jf,i.push({k:o,a:[e,t,a,r]})):n[o]=r.call(n,o,a)}else n[o]!==jf&&(n[o]=r.call(n,o,c))}for(let{length:e}=i,t=0;t<e;t++){let{k:e,a}=i[t];n[e]=r.call(n,e,If.apply(null,a))}return n};const Lf=(e,t)=>{let n=Ef(e,Ff).map(Pf),r=n[0],i=t||Nf,a=typeof r===Mf&&r?If(n,new Set,r,i):r;return i.call({"":a},``,a)};async function Rf(e,t=5,n=500){for(let r=0;r<t;r++){let t=await Ca.get(e,{withCredentials:!0});if(typeof t.data==`object`&&t.data!==null&&Array.isArray(t.data))return t.data;await Pi(n*r)}throw Error(`Could not fetch credential types`)}async function zf(e){return await Rf(e+`types/credentials.json`)}async function Bf(e,t){return await J(e,`GET`,`/credentials/new`,t?{name:t}:{})}async function Vf(e,t={}){let{filter:n,includeScopes:r,onlySharedWithMe:i,includeGlobal:a,externalSecretsStore:o}=t;return await J(e,`GET`,`/credentials`,{...r?{includeScopes:r}:{},includeData:!0,...n?{filter:n}:{},...i?{onlySharedWithMe:i}:{},...typeof a==`boolean`?{includeGlobal:a}:{},...o?{externalSecretsStore:o}:{}})}async function Hf(e,t){return await J(e,`GET`,`/credentials/for-workflow`,{...t})}async function Uf(e,t){return await J(e,`POST`,`/credentials`,t)}async function Wf(e,t){return await J(e,`DELETE`,`/credentials/${t}`)}async function Gf(e,t,n){return await J(e,`PATCH`,`/credentials/${t}`,n)}async function Kf(e,t){return await J(e,`GET`,`/credentials/${t}`,{includeData:!0})}async function qf(e,t){return await J(e,`GET`,`/oauth1-credential/auth`,t)}async function Jf(e,t){return await J(e,`GET`,`/oauth2-credential/auth`,t)}async function Yf(e,t){return await J(e,`POST`,`/credentials/test`,t)}async function Xf(e,t,n){return await J(e,`PUT`,`/credentials/${t}/share`,n)}async function Zf(e,t,n){return await J(e,`PUT`,`/credentials/${t}/transfer`,{destinationProjectId:n})}const Qf={ADD:`add`,UPDATE:`update`,DELETE:`delete`};function $f(){let e=m(null),t=m(null),n=E(()=>e.value!==null),r=Te();function i(n,i=Qf.UPDATE){e.value=n.activeVersionId,t.value=n.activeVersion,r.trigger({action:i,payload:n})}function a(e){i(e)}return{active:n,activeVersionId:S(e),activeVersion:S(t),setActiveState:a,onActiveChange:r.on}}function ep(){let e=m(null),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:n})}function r(e){n(e)}return{homeProject:S(e),setHomeProject:r,onHomeProjectChange:t.on}}function tp(){let e=m(``),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{checksum:n}})}function r(e){n(e)}return{checksum:S(e),setChecksum:r,onChecksumChange:t.on}}function np(){let e=m(),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{meta:n}})}function r(e){n(e)}function i(t){n({...e.value,...t})}return{meta:S(e),setMeta:r,addToMeta:i,onMetaChange:t.on}}function rp(e){return Array.isArray(e)||(e=[e]),e.map(e=>{if(sf(e)){let{json:t,binary:n,pairedItem:r}=e;return{json:t,...n&&{binary:n},...r!==void 0&&{pairedItem:r}}}return{json:e}})}function ip(e){return Object.keys(e).reduce((t,n)=>(t[n]=e[n].map(e=>sf(e)?e:{json:e}),t),{})}function ap(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.map(e=>e.json)]))}function op(e={}){return Object.values(e).reduce((e,t)=>e+ff(t),0)}function sp(){let e=m({}),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{pinData:n}})}function r(n,r){let i=e.value[n]?Qf.UPDATE:Qf.ADD;e.value={...e.value,[n]:r},t.trigger({action:i,payload:{nodeName:n,data:r}})}function i(n){let{[n]:r,...i}=e.value;e.value=i,t.trigger({action:Qf.DELETE,payload:{nodeName:n,data:void 0}})}function a(n,r){if(e.value[n]){let{[n]:t,...i}=e.value;e.value={...i,[r]:t}}Object.values(e.value).flatMap(e=>e.flatMap(e=>Array.isArray(e.pairedItem)?e.pairedItem:[e.pairedItem])).forEach(e=>{typeof e==`number`||e?.sourceOverwrite?.previousNode!==n||(e.sourceOverwrite.previousNode=r)}),t.trigger({action:Qf.UPDATE,payload:{nodeName:r,data:e.value[r]}})}function o(e){n(ip(e))}function s(e,t){r(e,rp(t))}function c(e){i(e)}function l(e,t){a(e,t)}function u(){return{...e.value}}function d(t){return e.value[t]}return{pinData:S(e),setPinData:o,pinNodeData:s,unpinNodeData:c,renamePinDataNode:l,getPinDataSnapshot:u,getNodePinData:d,onPinnedDataChange:t.on}}function cp(){let e=m([]),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{scopes:n}})}function r(e){n(e)}return{scopes:S(e),setScopes:r,onScopesChange:t.on}}const lp={executionOrder:`v1`,binaryMode:Qi};function up(){let e=m({...lp}),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{settings:n}})}function r(e){n({...lp,...e})}function i(t){n({...e.value,...t})}function a(){return cr(e.value)}return{settings:S(e),setSettings:r,mergeSettings:i,getSettingsSnapshot:a,onSettingsChange:t.on}}function dp(){let e=m([]),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{tags:n}})}function r(n){e.value=e.value.filter(e=>e!==n),t.trigger({action:Qf.DELETE,payload:{tags:e.value}})}function i(e){n(e)}function a(t){let r=new Set([...e.value,...t]);n(Array.from(r),Qf.ADD)}function o(e){r(e)}return{tags:S(e),setTags:i,addTags:a,removeTag:o,onTagsChange:t.on}}function fp(){let e=m(!1),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{isArchived:n}})}function r(e){n(e)}return{isArchived:S(e),setIsArchived:r,onIsArchivedChange:t.on}}function pp(){let e=m(-1),t=m(-1),n=Te(),r=Te();function i(t,r=Qf.UPDATE){e.value=t,n.trigger({action:r,payload:{createdAt:t}})}function a(e,n=Qf.UPDATE){t.value=e,r.trigger({action:n,payload:{updatedAt:e}})}function o(e){i(e)}function s(e){a(e)}return{createdAt:S(e),updatedAt:S(t),setCreatedAt:o,setUpdatedAt:s,onCreatedAtChange:n.on,onUpdatedAtChange:r.on}}function mp(){let e=m(null),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:n})}function r(e){n(e)}return{parentFolder:S(e),setParentFolder:r,onParentFolderChange:t.on}}function hp(){let e=m({}),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{usedCredentials:n}})}function r(e){n(e.reduce((e,t)=>(e[t.id]=t,e),{}))}return{usedCredentials:S(e),setUsedCredentials:r,onUsedCredentialsChange:t.on}}var gp=t(((e,t)=>{var n=la(),r=pa(),i=Oi();function a(e){return function(t,a,o){var s=Object(t);if(!r(t)){var c=n(a,3);t=i(t),a=function(e){return c(s[e],e,s)}}var l=e(t,a,o);return l>-1?s[c?t[l]:l]:void 0}}t.exports=a})),_p=t(((e,t)=>{var n=Fa(),r=1/0,i=17976931348623157e292;function a(e){return e?(e=n(e),e===r||e===-r?(e<0?-1:1)*i:e===e?e:0):e===0?e:0}t.exports=a})),vp=t(((e,t)=>{var n=_p();function r(e){var t=n(e),r=t%1;return t===t?r?t-r:t:0}t.exports=r})),yp=t(((e,t)=>{var n=Vn(),r=la(),i=vp(),a=Math.max,o=Math.min;function s(e,t,s){var c=e==null?0:e.length;if(!c)return-1;var l=c-1;return s!==void 0&&(l=i(s),l=s<0?a(c+l,0):o(l,c-1)),n(e,r(t,3),l,!0)}t.exports=s})),bp=t(((e,t)=>{t.exports=gp()(yp())})),xp=e(It(),1),Sp=e(en(),1),Cp=e(bp(),1);function wp(e){let t=TN(),n=Te(),r=Te();function i(e,n){if(e===-1)return!1;let r=t.workflow.nodes[e],i=!(0,Sp.default)((0,xp.default)(r,Object.keys(n)),n);return i&&(Object.assign(r,n),t.workflow.nodes[e]=r,t.workflowObject.setNodes(t.workflow.nodes)),i}function a(e){t.setNodes(e)}function o(e){t.addNode(e),n.trigger({action:Qf.ADD,payload:{node:e}}),r.trigger()}function s(e){t.removeNode(e),n.trigger({action:Qf.DELETE,payload:{name:e.name,id:e.id}}),r.trigger()}function c(e){let i=t.getNodeById(e);t.removeNodeById(e),n.trigger({action:Qf.DELETE,payload:{name:i?.name??``,id:e}}),r.trigger()}let l=E(()=>t.allNodes),u=E(()=>t.nodesByName),d=E(()=>new Set(t.allNodes.map(e=>e.name)));function f(e){return t.getNodeById(e)}function p(e){return t.getNodeByName(e)}function m(){return t.getNodes()}function h(e){return t.findNodeByPartialId(e)}function g(e){return t.getNodesByIds(e)}function _(e){a(e)}function v(e){o(e)}function y(e){s(e)}function b(e){c(e)}function x(e,n){let a=t.workflow.nodes.findIndex(t=>t.name===e.name);if(a===-1)throw Error(`Node with the name "${e.name}" could not be found to set parameter.`);let{name:o,parameters:s}=t.workflow.nodes[a];i(a,{parameters:n&&$d(e.value)?{...s,...e.value}:e.value})&&(r.trigger(),t.nodeMetadata[o].parametersLastUpdatedAt=Date.now())}function S(n){let r=(0,Cp.default)(t.workflow.nodes,e=>e.type===n.key);if(!r)return;let i=e.getNodeType(r.type);i&&x({value:ia(i.properties,n.value,!0,!1,r,i),name:r.name},!0)}function C(e){let n=t.workflow.nodes.findIndex(t=>t.name===e.name);if(n===-1||!e.key)throw Error(`Node with the name "${e.name}" could not be found to set parameter.`);let a=i(n,{[e.key]:e.value});a&&r.trigger(),a&&![`position`,`notes`,`notesInFlow`].includes(e.key)&&(t.nodeMetadata[t.workflow.nodes[n].name].parametersLastUpdatedAt=Date.now())}function w(e,n){let r=t.workflow.nodes.find(t=>t.id===e);r&&C({name:r.name,key:`position`,value:n})}function T(e,n){let r=t.workflow.nodes.findIndex(t=>t.id===e);return r===-1?!1:i(r,n)}function D(e){let n=t.workflow.nodes.findIndex(t=>t.name===e.name);if(n!==-1)for(let t of Object.keys(e.properties)){let a=t,o=e.properties[a];i(n,{[t]:o})&&r.trigger()}}function O(e){let n=t.workflow.nodes.findIndex(t=>t.name===e.node);if(n===-1)return;let r=t.workflow.nodes[n];if(e.value===null){if(r.issues?.[e.type]===void 0)return;let{[e.type]:t,...a}=r.issues;i(n,{issues:a})}else i(n,{issues:{...r.issues,[e.type]:e.value}})}function k(){t.workflow.nodes.splice(0,t.workflow.nodes.length),t.workflowObject.setNodes(t.workflow.nodes),t.nodeMetadata={}}function A(){return t.workflow.nodes.forEach(e=>{e.issues=void 0}),!0}function j(e){t.nodeMetadata[e]||(t.nodeMetadata[e]={pristine:!0}),t.nodeMetadata[e].parametersLastUpdatedAt=Date.now()}return{allNodes:l,nodesByName:u,canvasNames:d,getNodeById:f,getNodeByName:p,getNodes:m,findNodeByPartialId:h,getNodesByIds:g,setNodes:_,addNode:v,removeNode:y,removeNodeById:b,setNodeParameters:x,setNodeValue:C,setNodePositionById:w,updateNodeProperties:D,updateNodeById:T,setNodeIssue:O,removeAllNodes:k,resetAllNodesIssues:A,setLastNodeParameters:S,resetParametersLastUpdatedAt:j,onNodesChange:n.on,onStateDirty:r.on}}function Tp(){let e=m(null),t=Te();function n(n,r=Qf.UPDATE){e.value=n,t.trigger({action:r,payload:{viewport:n}})}function r(e){n(e)}return{viewport:S(e),setViewport:r,onViewportChange:t.on}}function X(e,t=`latest`){return`${e}@${t}`}function Ep(e){return`${qo.WORKFLOW_DOCUMENTS}/${e}`}function Z(e){return Da(Ep(e),()=>{let[t,n]=e.split(`@`),r=$f(),i=ep(),a=tp(),o=np(),s=dp(),c=fp(),l=sp(),u=cp(),d=pp(),f=up(),p=mp(),m=hp(),h=Tp(),g=JM(),{onStateDirty:_,...v}=wp({getNodeType:(e,t)=>g.getNodeType(e,t)});_(()=>RN().markStateDirty());function y(){v.removeAllNodes(),l.setPinData({})}return{workflowId:t,workflowVersion:n,...r,...i,...a,...c,...o,...f,...s,...l,...u,...d,...p,...m,...h,...v,removeAllNodes:y}})()}function Dp(e){let t=ba();if(!t)return;let n=Ep(e);if(t.state.value[n]){let e=t._s.get(n);e&&e.$dispose(),delete t.state.value[n]}}function Op(){return w(Un,null)}var kp=[`API`,`OAuth1`,`OAuth2`],Ap=[`Trigger`],jp=/value\["(.+?)"\]/s;function Mp(e){return e.split(` `).filter(e=>!kp.includes(e)).join(` `)}function Np(e){return e.split(` `).filter(e=>!Ap.includes(e)).join(` `)}function Pp(e){return e.displayName.replace(/ trigger/i,``)}function Fp(e){return e.filter(e=>!e.disabled&&!an.includes(e.type))}function Ip(e){let t=e.filter(e=>!(e.categories||[]).some(e=>e.name===Yi));return(t.length>0?t:e).filter(e=>!qt.includes(e.name))}function Lp(e){return typeof e==`string`&&!!ca.find(t=>e.includes(t))}function Rp(e,t){return e.noDataExpression===!0?!1:!!(typeof t==`string`&&t.charAt(0)===`=`||gn(t)&&t.value&&t.value.toString().charAt(0)===`=`)}const zp=e=>e.reduce((e,t)=>(sf(t)&&e.push(t.json),e),[]),Bp=e=>e.modes!==void 0&&e.modes.length===1&&e.modes[0].name===`list`,Vp=(e,t)=>{if(!t.displayOptions?.show)return!0;let n=Hp(e);return n?n.name in t.displayOptions.show:!1},Hp=e=>{if(!e)return null;let t=Yp(e),n=t.find(e=>e.name===`authentication`&&!e.options?.find(e=>`value`in e&&e.value===`none`))??null??Up(e,t),r=n?Qp(e,n):!1;return n&&r?n:null};var Up=(e,t)=>{let n={};return e.credentials?.forEach(e=>{if(e.displayOptions?.show)for(let t in e.displayOptions.show)n[t]=(n[t]||[]).concat((e.displayOptions.show[t]??[]).map(e=>e?e.toString():``))}),t.find(e=>{let t=!0;return e.options?.forEach(r=>{`value`in r&&typeof r.value==`string`&&!n[e.name].includes(r.value)&&(t=!1)}),t})||null};const Wp=(e,t)=>{if(!e)return[];let n=K.baseText(`credentialEdit.credentialConfig.recommendedAuthTypeSuffix`),r=[],i=Hp(e);return Yp(e,t).filter(e=>e.name===i?.name).forEach(t=>{t.options&&(r=r.concat(t.options.map(r=>{let i=`value`in r?`${r.value}`:``,a=!1,o=Kp(e,i);return o&&(a=VA().getCredentialTypeByName(o.name)?.__overwrittenProperties!==void 0),{name:a&&!r.name.endsWith(n)?`${r.name} ${n}`:r.name,value:i,displayOptions:t.displayOptions}})||[]))}),r.forEach((e,t)=>{e.name.includes(n)&&(r.splice(t,1),r.unshift(e))}),r},Gp=(e,t)=>e?e.credentials?.filter(e=>e.displayOptions?.show&&t in(e.displayOptions.show||{}))??[]:[],Kp=(e,t)=>{let n=Hp(e),r=n?n.name:``;return e.credentials?.find(e=>e.displayOptions?.show?.[r]?.includes(t))||null},qp=(e,t)=>{if(e&&t){let n=Hp(e),r=n?n.name:``;return Wp(e).find(e=>t.displayOptions?.show?.[r]?.includes(e.value))||null}return null},Jp=(e,t)=>{let n=!1;return e.forEach(e=>{if(e.displayOptions?.show&&t.name in e.displayOptions.show){n=!0;return}}),n},Yp=(e,t)=>{let n=[];return e?.credentials&&e.credentials.length>0&&e.credentials.forEach(r=>{r.displayOptions?.show&&Object.keys(r.displayOptions.show).forEach(r=>{let i=e.properties.filter(e=>e.name===r);i&&i.forEach(e=>{!n.includes(e)&&Xp(e,t)&&n.push(e)})})}),n},Xp=(e,t)=>t&&e.displayOptions?.show?.[`@version`]?e.displayOptions.show[`@version`]?.includes(t):!0,Zp=(e,t,n)=>{if(!t||!e)return;let r=JM().getNodeType(t.type,t.typeVersion);if(r){let i=Hp(r);if(i){let r={name:t.name,properties:{parameters:{...t.parameters,[i.name]:n}}};Z(X(e)).updateNodeProperties(r)}}},Qp=(e,t)=>(t.displayOptions?.show&&Object.keys(t.displayOptions.show).forEach(t=>{let n=e.properties.find(e=>{e.name});return!(n&&!Qp(e,n))}),!0),$p=e=>{let t=e.match(jp);return t?t.pop():e},em=(e,t,n=``,r=[])=>{let i=`id`in e?e.id:e.name;return n===`add`&&e.required===!0||nm(i,r,t)},tm=(e,t)=>{if(e.length!==t.length)return!0;let n=new Map(t.map(e=>[e.id,e]));for(let t of e){let e=n.get(t.id);if(!e||t.displayName!==e.displayName||t.required!==e.required||t.defaultMatch!==e.defaultMatch||t.display!==e.display||t.canBeUsedToMatch!==e.canBeUsedToMatch||t.type!==e.type)return!0}return!1},nm=(e,t,n)=>{let r=$p(e);return r?n&&(t||[]).includes(r):!1},rm=(e,t=`light`)=>e?typeof e==`string`?e:e[t]:null,im=(e=``)=>{let[,t,n]=e.match(/^(.*?)(?:\s*<([^>]+)>)?$/)??[];return{name:t.trim()||void 0,email:n}},am=25,om=e=>{let{name:t,email:n}=im(e??``);return St(t??n??``,25)};let sm=function(e){return e.Credential=`credential`,e.Workflow=`workflow`,e.DataTable=`dataTable`,e}({}),cm=function(e){return e.MOVE_NODE=`moveNode`,e.ADD_NODE=`addNode`,e.REMOVE_NODE=`removeNode`,e.ADD_CONNECTION=`addConnection`,e.REMOVE_CONNECTION=`removeConnection`,e.ENABLE_NODE_TOGGLE=`enableNodeToggle`,e.RENAME_NODE=`renameNode`,e.REPLACE_NODE_PARAMETERS=`replaceNodeParameters`,e}({});var lm=10;const um=Pe();var dm=class{},fm=class extends dm{name;timestamp;constructor(e,t){super(),this.name=e,this.timestamp=t}getTimestamp(){return this.timestamp}},pm=class extends dm{commands;constructor(e){super(),this.commands=e}getTimestamp(){return Math.max(0,...this.commands.map(e=>e.timestamp))}},mm=class e extends fm{nodeName;oldPosition;newPosition;constructor(e,t,n,r){super(cm.MOVE_NODE,r),this.nodeName=e,this.newPosition=n,this.oldPosition=t}getReverseCommand(t){return new e(this.nodeName,this.newPosition,this.oldPosition,t)}isEqualTo(t){return t instanceof e&&t.nodeName===this.nodeName&&t.oldPosition[0]===this.oldPosition[0]&&t.oldPosition[1]===this.oldPosition[1]&&t.newPosition[0]===this.newPosition[0]&&t.newPosition[1]===this.newPosition[1]}async revert(){return await new Promise(e=>{um.emit(`nodeMove`,{nodeName:this.nodeName,position:this.oldPosition}),e()})}},hm=class e extends fm{node;constructor(e,t){super(cm.ADD_NODE,t),this.node=e}getReverseCommand(e){return new gm(this.node,e)}isEqualTo(t){return t instanceof e&&t.node.name===this.node.name}async revert(){return await new Promise(e=>{um.emit(`revertAddNode`,{node:this.node}),e()})}},gm=class extends fm{node;constructor(e,t){super(cm.REMOVE_NODE,t),this.node=e}getReverseCommand(e){return new hm(this.node,e)}isEqualTo(e){return e instanceof hm&&e.node.name===this.node.name}async revert(){return await new Promise(e=>{um.emit(`revertRemoveNode`,{node:this.node}),e()})}},_m=class e extends fm{connectionData;constructor(e,t){super(cm.ADD_CONNECTION,t),this.connectionData=e}getReverseCommand(e){return new vm(this.connectionData,e)}isEqualTo(t){return t instanceof e&&t.connectionData[0].node===this.connectionData[0].node&&t.connectionData[1].node===this.connectionData[1].node&&t.connectionData[0].index===this.connectionData[0].index&&t.connectionData[1].index===this.connectionData[1].index}async revert(){return await new Promise(e=>{um.emit(`revertAddConnection`,{connection:this.connectionData}),e()})}},vm=class e extends fm{connectionData;constructor(e,t){super(cm.REMOVE_CONNECTION,t),this.connectionData=e}getReverseCommand(e){return new _m(this.connectionData,e)}isEqualTo(t){return t instanceof e&&t.connectionData[0].node===this.connectionData[0].node&&t.connectionData[1].node===this.connectionData[1].node&&t.connectionData[0].index===this.connectionData[0].index&&t.connectionData[1].index===this.connectionData[1].index}async revert(){return await new Promise(e=>{setTimeout(()=>{um.emit(`revertRemoveConnection`,{connection:this.connectionData}),e()},lm)})}},ym=class e extends fm{nodeName;oldState;newState;constructor(e,t,n,r){super(cm.ENABLE_NODE_TOGGLE,r),this.nodeName=e,this.newState=n,this.oldState=t}getReverseCommand(t){return new e(this.nodeName,this.newState,this.oldState,t)}isEqualTo(t){return t instanceof e&&t.nodeName===this.nodeName}async revert(){return await new Promise(e=>{um.emit(`enableNodeToggle`,{nodeName:this.nodeName,isDisabled:this.oldState}),e()})}},bm=class e extends fm{currentName;newName;constructor(e,t,n){super(cm.RENAME_NODE,n),this.currentName=e,this.newName=t}getReverseCommand(t){return new e(this.newName,this.currentName,t)}isEqualTo(t){return t instanceof e&&t.currentName===this.currentName&&t.newName===this.newName}async revert(){return await new Promise(e=>{um.emit(`revertRenameNode`,{currentName:this.currentName,newName:this.newName}),e()})}},xm=class e extends fm{constructor(e,t,n,r){super(cm.REPLACE_NODE_PARAMETERS,r),this.nodeId=e,this.currentParameters=t,this.newParameters=n}getReverseCommand(t){return new e(this.nodeId,this.newParameters,this.currentParameters,t)}isEqualTo(t){return t instanceof e&&t.nodeId===this.nodeId&&t.currentParameters===this.currentParameters&&t.newParameters===this.newParameters}async revert(){return await new Promise(e=>{um.emit(`revertReplaceNodeParameters`,{nodeId:this.nodeId,currentProperties:this.currentParameters,newProperties:this.newParameters}),e()})}},Sm=100;const Cm=Da(qo.HISTORY,{state:()=>({undoStack:[],redoStack:[],currentBulkAction:null,bulkInProgress:!1}),actions:{popUndoableToUndo(){if(this.undoStack.length>0)return this.undoStack.pop()},pushCommandToUndo(e,t=!0){this.bulkInProgress||(this.currentBulkAction?this.currentBulkAction.commands.find(t=>t.isEqualTo(e))===void 0&&this.currentBulkAction.commands.push(e):this.undoStack.push(e),this.checkUndoStackLimit(),t&&this.clearRedoStack())},pushBulkCommandToUndo(e,t=!0){this.undoStack.push(e),this.checkUndoStackLimit(),t&&this.clearRedoStack()},checkUndoStackLimit(){this.undoStack.length>Sm&&this.undoStack.shift()},checkRedoStackLimit(){this.redoStack.length>Sm&&this.redoStack.shift()},clearUndoStack(){this.undoStack=[]},clearRedoStack(){this.redoStack=[]},reset(){this.clearRedoStack(),this.clearUndoStack()},popUndoableToRedo(){if(this.redoStack.length>0)return this.redoStack.pop()},pushUndoableToRedo(e){this.redoStack.push(e),this.checkRedoStackLimit()},startRecordingUndo(){this.currentBulkAction=new pm([])},stopRecordingUndo(){this.currentBulkAction&&this.currentBulkAction.commands.length>0&&(this.undoStack.push(this.currentBulkAction),this.checkUndoStackLimit()),this.currentBulkAction=null}}});let wm=function(e){return e.Input=`inputs`,e.Output=`outputs`,e}({});const Tm=[wm.Input,wm.Output];let Em=function(e){return e.Default=`default`,e.StickyNote=`n8n-nodes-base.stickyNote`,e.AddNodes=`n8n-nodes-internal.addNodes`,e.ChoicePrompt=`n8n-nodes-internal.choicePrompt`,e}({});const Dm={PARAMETERS_UPDATED:`parameters-updated`,INCOMING_CONNECTIONS_UPDATED:`incoming-connections-updated`,PINNED_DATA_UPDATED:`pinned-data-updated`,UPSTREAM_DIRTY:`upstream-dirty`};function Om(e){return e!==null}function km(e){return typeof e==`object`&&!!e&&`id`in e}const Am=e=>!!e&&Object.getPrototypeOf(e)===Object.prototype,jm=e=>Am(e)&&`mimeType`in e&&`data`in e;function Mm(e){return typeof e==`string`}const Nm=e=>typeof e==`object`&&!!e&&`showAuthSelector`in e,Pm=e=>[`string`,`number`,`boolean`].includes(typeof e);function Fm(e){return!!e&&Object.prototype.toString.call(e)===`[object Date]`&&!isNaN(e)}function Im(e){return Gr.includes(e)}function Lm(e){return Tm.includes(e)}function Rm(e){return`source`in e&&`target`in e&&`sourceHandle`in e&&`targetHandle`in e}function zm(e){return e!==void 0&&typeof e==`object`&&!!e}function Bm(e){return!!e&&`status`in e}function Vm(e){return typeof e==`string`||typeof e==`object`&&!!e&&(`name`in e||`path`in e)}function Hm(e){return typeof e==`object`&&!!e&&`$props`in e}function Um(e){return e.resourceType===`workflow`}function Wm(e){return e.resourceType===`folder`}function Gm(e){return e.resourceType===`variable`}function Km(e){return e.resourceType===`credential`}function qm(e){return Um(e)||Wm(e)||Km(e)}function Jm(e){return Um(e)||Wm(e)||Km(e)}function Ym(e){let t=Ee();try{return t.baseText(e),!0}catch{return!1}}function Xm(e){return e.startsWith(`project:`)}const Zm=e=>`resource`in e?e.resource!==`folder`:!0;function Qm(e){return typeof e==`function`&&`cancel`in e&&typeof e.cancel==`function`}function $m(e){let t=Me(e,null,void 0,{writeDefaults:!1});return t.value===`undefined`&&(t.value=null),t}const eh=`N8N_NDV_PANEL_WIDTH`,th=Da(qo.WORKFLOWS_LIST,()=>{let e=Y(),t=m(0),n=m({}),r=m([]),i=E(()=>Object.values(n.value).sort((e,t)=>e.name.localeCompare(t.name)));function a(e){return n.value[e]}function o(e){n.value=e.reduce((e,t)=>(t.id&&(e[t.id]=t),e),{})}function s(e){n.value={...n.value,[e.id]:{...n.value[e.id],...cr(e)}}}function c(e){let{[e]:t,...r}=n.value;n.value=r}function l(e,t){n.value[e]&&(n.value[e]={...n.value[e],...t})}function u(e,t){r.value.indexOf(e)===-1&&r.value.push(e);let i=n.value[e];i&&(i.active=!0,i.activeVersionId=t.versionId,i.activeVersion=t)}function d(e){let t=r.value.indexOf(e);t!==-1&&r.value.splice(t,1);let i=n.value[e];i&&(i.active=!1,i.activeVersionId=null,i.activeVersion=null)}async function f(n,r=1,i=50,a,o={},c=!1,l=!1){let u={...o,projectId:n},d={skip:(r-1)*i,take:i,sortBy:a},{count:f,data:p}=await Kd(e.restApiContext,Object.keys(u).length?u:void 0,Object.keys(d).length?d:void 0,c||void 0,l||void 0);return t.value=f,p.filter(e=>e.resource!==`folder`).forEach(e=>{s({...e,nodes:[],connections:{},versionId:``})}),p}async function p({projectId:t,query:n,nodeTypes:r,tags:i,select:a,isArchived:o,triggerNodeTypes:s}){let c={projectId:t,query:n,nodeTypes:r,tags:i,isArchived:o,triggerNodeTypes:s},l=Object.values(c).some(e=>vf(e)&&(Array.isArray(e)?e.length>0:e!==``)),{data:u}=await Wd(e.restApiContext,l?c:void 0,void 0,a);return u}async function h(e){let t=await p({projectId:e});return o(t),t}async function g(t){let n=await Hd(e.restApiContext,t);return s(n),n}async function _(t){return await Gd(e.restApiContext,t)}async function v(){let t=await qd(e.restApiContext);return r.value=t,t}async function y(t){return(await Ud(e.restApiContext,t)).exists}async function b(t){await J(e.restApiContext,`DELETE`,`/workflows/${t}`),c(t)}async function x(t,r){let i=await J(e.restApiContext,`POST`,`/workflows/${t}/archive`,{expectedChecksum:r});if(!i.checksum)throw Error(`Failed to archive workflow`);return n.value[t]&&(n.value[t].isArchived=!0,n.value[t].versionId=i.versionId),d(t),i}async function S(t){let r=await J(e.restApiContext,`POST`,`/workflows/${t}/unarchive`);if(!r.checksum)throw Error(`Failed to unarchive workflow`);return n.value[t]&&(n.value[t].isArchived=!1,n.value[t].versionId=r.versionId),r}return{totalWorkflowCount:t,workflowsById:n,activeWorkflows:r,allWorkflows:i,getWorkflowById:a,setWorkflows:o,addWorkflow:s,removeWorkflow:c,updateWorkflowInCache:l,setWorkflowActiveInCache:u,setWorkflowInactiveInCache:d,fetchWorkflowsPage:f,searchWorkflows:p,fetchAllWorkflows:h,fetchWorkflow:g,fetchWorkflowsWithNodesIncluded:_,fetchActiveWorkflows:v,checkWorkflowExists:y,deleteWorkflow:b,archiveWorkflowInList:x,unarchiveWorkflowInList:S}}),nh=[...Vr,pi.EXECUTION_PREVIEW,pi.WORKFLOWS,pi.CREDENTIALS,pi.PROJECTS_CREDENTIALS,pi.PROJECTS_WORKFLOWS,pi.PROJECT_SETTINGS,pi.TEMPLATE_SETUP],rh=[...Vr];var ih={IS_PART_OF_EXPERIMENT:`User is part of experiment`};const ah=Da(`posthog`,()=>{let e=YN(),t=Al(),n=IO(),r=Y(),{debounce:i}=Ia(),a=m(null),o=m({}),s=m({}),c=()=>{window.posthog?.reset?.(),a.value=null,o.value={}},l=e=>s.value[e]??a.value?.[e],u=(e,t)=>l(e)===t,d=e=>l(e)===!0;if(!window.featureFlags){let e=$m(Ui).value;if(e)try{console.log(`Overriding feature flags`,e),typeof JSON.parse(e)==`object`&&(s.value=JSON.parse(e))}catch(e){console.log(`Could not override experiment`,e)}window.featureFlags={override:(e,t)=>{s.value[e]=t;try{$m(Ui).value=JSON.stringify(s.value)}catch{}},getVariant:l,getAll:()=>a.value??{}}}let f=()=>{let t=r.instanceId,n=e.currentUser,i={instance_id:t,version_cli:r.versionCli};n&&typeof n.createdAt==`string`&&(i.created_at_timestamp=new Date(n.createdAt).getTime());let a=n?`${t}#${n.id}`:t;window.posthog?.identify?.(a,i)},p=(e,t)=>{let r=e[t];!r||o.value[t]===r||(n.track(ih.IS_PART_OF_EXPERIMENT,{name:t,variant:r}),o.value[t]=r)},h=i(e=>{Bn.forEach(t=>p(e,t))},{debounceTime:2e3});return{init:n=>{if(!window.posthog)return;let i=t.settings.posthog;if(!i.enabled)return;let o=e.currentUserId;if(!o)return;let s=`${r.instanceId}#${o}`,c={api_host:t.settings.posthog.proxy,autocapture:i.autocapture,disable_session_recording:i.disableSessionRecording,debug:!1,session_recording:{maskAllInputs:!1}};window.posthog?.init(i.apiKey,c),f(),n&&Object.keys(n).length?(a.value=n,c.bootstrap={distinctId:s,featureFlags:n},h(a.value)):window.posthog?.onFeatureFlags?.((e,t)=>{a.value=t,h(a.value)})},isFeatureEnabled:d,isVariantEnabled:u,getVariant:l,reset:c,identify:f,setMetadata:(e,t)=>{typeof window.posthog?.people?.set==`function`&&typeof window.posthog?.register==`function`&&(t===`user`?window.posthog?.people?.set(e):t===`events`&&window.posthog?.register(e))},capture:(e,t)=>{typeof window.posthog?.capture==`function`&&window.posthog.capture(e,t)},overrides:s}});function oh(e){return e.type===`custom`&&`customType`in e&&e.customType===`questions`}function sh(e){return e.type===`custom`&&`customType`in e&&e.customType===`plan`}function ch(e){return e.type===`custom`&&e.role===`user`&&`customType`in e&&e.customType===`user_answers`}function lh(e){return`type`in e&&e.type===`message`&&`text`in e}function uh(e){return lh(e)&&typeof e.revertVersionId==`string`}function dh(e){return`type`in e&&e.type===`summary`&&`title`in e&&`content`in e}function fh(e){return`type`in e&&e.type===`agent-suggestion`&&`title`in e&&`text`in e}function ph(e){return`type`in e&&e.type===`code-diff`&&`codeDiff`in e}function mh(e){return`type`in e&&e.type===`workflow-updated`&&`codeSnippet`in e}function hh(e){return`type`in e&&e.type===`tool`&&`toolName`in e&&`status`in e}function gh(e){return`type`in e&&e.type===`questions`&&`questions`in e}function _h(e){return`type`in e&&e.type===`plan`&&`plan`in e}function vh(e){return`type`in e&&e.type===`user_answers`&&`answers`in e}function yh(e){return`type`in e&&e.type===`web_fetch_approval`&&`requestId`in e&&`url`in e&&`domain`in e}function bh(e){return e.type===`custom`&&`customType`in e&&e.customType===`web_fetch_approval`}function xh(e){return`type`in e&&e.type===`messages-compacted`}function Sh(e,t,n,r){if(e.length===0)return[];let i=new Map(t.map(e=>[e.id,e]));return e.map(e=>{let t=i.get(e.nodeId);if(!t)return{name:e.nodeName,incomingConnections:[],outgoingConnections:[]};let a=[],o=n[t.name];if(o?.main){for(let e of o.main)if(e)for(let t of e)t.node&&!a.includes(t.node)&&a.push(t.node)}let s=[],c=r[t.name];if(c?.main){for(let e of c.main)if(e)for(let t of e)t.node&&!s.includes(t.node)&&s.push(t.node)}let l;if(t.issues){l={};let e=t.issues;if(e.parameters)for(let[t,n]of Object.entries(e.parameters))Array.isArray(n)&&(l[t]=n);if(e.credentials)for(let[t,n]of Object.entries(e.credentials))Array.isArray(n)&&(l[`credential:${t}`]=n);Object.keys(l).length===0&&(l=void 0)}return{name:t.name,issues:l,incomingConnections:a,outgoingConnections:s}})}const Ch=Da(qo.CHAT_PANEL_STATE,()=>({isOpen:m(!1),width:m(400),activeMode:m(`builder`),showCoachmark:m(!1),focusRequested:m(0)}));var wh=7,Th=50;const Eh=Da(qo.FOCUSED_NODES,()=>{let e=TN(),t=ah(),n=IO(),r=Ch(),i=NO(),a=E(()=>t.isVariantEnabled(Vi.name,Vi.variant)),o=m({}),s=m(new Set),c=E(()=>Object.values(o.value).filter(e=>e.state===`confirmed`)),l=E(()=>Object.values(o.value).filter(e=>e.state===`unconfirmed`)),u=E(()=>{let t=e.allNodes.length-c.value.length;return c.value.length>0&&t>0&&l.value.length>=t?[]:l.value}),d=E(()=>[...c.value,...u.value]),f=E(()=>c.value.length>=wh),p=E(()=>c.value.map(e=>e.nodeId)),h=E(()=>d.value.length>0),g=E(()=>u.value.length>Th);function _(e){return s.value.has(e)}function v(t){let n=e.allNodes.find(e=>e.id===t);return n?{name:n.name,type:n.type}:null}function y(e,t,r){let i=[];for(let t of e){let e=o.value[t];if(e)o.value[t]={...e,state:`confirmed`},i.push(e.nodeType);else{let e=v(t);e&&(o.value[t]={nodeId:t,nodeName:e.name,nodeType:e.type,state:`confirmed`},i.push(e.type))}}i.length>0&&n.track(`ai.focusedNodes.added`,{source:t,node_count:i.length,node_types:i,...t===`mention`&&r?.mentionQueryLength!==void 0?{mention_query_length:r.mentionQueryLength}:{}})}let b=ke(e=>{let t=new Set(p.value),n={};for(let e of c.value)n[e.nodeId]=e;for(let r of e)if(!t.has(r)){let e=o.value[r];if(e&&e.state===`unconfirmed`)n[r]=e;else{let e=v(r);e&&(n[r]={nodeId:r,nodeName:e.name,nodeType:e.type,state:`unconfirmed`})}}o.value=n},Zi(Ur.INPUT.VALIDATION));function x(e){s.value=new Set(e),b(e)}function S(e,t){let n=o.value[e];n&&(n.state===`unconfirmed`?y([e],`canvas_selection`):n.state===`confirmed`&&(t?o.value[e]={...n,state:`unconfirmed`}:C(e)))}function C(e,t=`badge_click`){let r=o.value[e];if(!r)return;let i=r.state===`confirmed`;delete o.value[e],o.value={...o.value},i&&n.track(`ai.focusedNodes.removed`,{method:t,removed_count:1,remaining_count:c.value.length})}function w(){let e=c.value.length;o.value={},e>0&&n.track(`ai.focusedNodes.removed`,{method:`clear_all`,removed_count:e,remaining_count:0})}function T(e){o.value[e]&&(delete o.value[e],o.value={...o.value})}function D(e,t){let n=o.value[e];n&&(o.value[e]={...n,nodeName:t})}function O(e,t){let n=o.value[e];n&&(o.value[e]={...n,state:t})}function k(){let e=l.value.map(e=>e.nodeId);e.length>0&&y(e,`canvas_selection`)}function A(){let e=c.value.length,t=c.value.map(e=>e.nodeId);for(let e of t)if(s.value.has(e)){let t=o.value[e];t&&(o.value[e]={...t,state:`unconfirmed`})}else delete o.value[e];o.value={...o.value},e>0&&n.track(`ai.focusedNodes.removed`,{method:`clear_all`,removed_count:e,remaining_count:c.value.length})}U(()=>e.workflowId,(e,t)=>{let r=c.value.length;o.value={},r>0&&t!==void 0&&n.track(`ai.focusedNodes.removed`,{method:`workflow_changed`,removed_count:r,remaining_count:0})}),U(()=>e.allNodes,e=>{let t=new Set(e.map(e=>e.id)),r=Object.keys(o.value),i=0;for(let e of r)t.has(e)||(o.value[e]?.state===`confirmed`&&i++,delete o.value[e]);i>0&&(o.value={...o.value},n.track(`ai.focusedNodes.removed`,{method:`node_deleted`,removed_count:i,remaining_count:c.value.length}))},{deep:!0}),U(()=>e.allNodes.map(e=>({id:e.id,name:e.name})),e=>{for(let{id:t,name:n}of e){let e=o.value[t];e&&e.nodeName!==n&&(o.value[t]={...e,nodeName:n})}},{deep:!0}),U(()=>i.activeNode,e=>{!a.value||!r.isOpen||e&&!o.value[e.id]&&x([e.id])});function j(){return a.value?Sh(c.value,e.allNodes,e.connectionsByDestinationNode,e.connectionsBySourceNode):[]}return{focusedNodesMap:o,canvasSelectedNodeIds:s,isFeatureEnabled:a,confirmedNodes:c,unconfirmedNodes:l,filteredUnconfirmedNodes:u,allVisibleNodes:d,shouldCollapseChips:f,confirmedNodeIds:p,hasVisibleNodes:h,tooManyUnconfirmed:g,confirmNodes:y,setUnconfirmedFromCanvasSelection:x,toggleNode:S,removeNode:C,clearAll:w,handleNodeDeleted:T,handleNodeRenamed:D,setState:O,isNodeSelectedOnCanvas:_,buildContextPayload:j,confirmAllUnconfirmed:k,removeAllConfirmed:A}});function Dh(){return Math.random().toString(36).substring(2,11)}function Oh(){return`${Date.now()}-${Dh()}`}async function kh(e,t,n){let r=OA(),i=ah(),a=Eh(),o={},s=n.allowSendingParameterValues===!1;n.workflow&&(o.currentWorkflow={...await r.simplifyWorkflowForAssistant(n.workflow,{excludeParameterValues:s}),id:n.workflow.id}),n.executionData&&(o.executionData=r.simplifyResultData(n.executionData,{compact:!0,removeParameterValues:s}),n.workflow&&!s&&(o.expressionValues=await r.extractExpressionsFromWorkflow(n.workflow,n.executionData)));let c=a.buildContextPayload();c.length>0&&(o.selectedNodes=c);let l=i.getVariant(Di.name),u=l===Di.codeNoPinData||l===Di.codePinData,d=l===Di.codePinData,f={templateExamples:i.getVariant($n.name)===$n.variant,codeBuilder:u,pinData:d,planMode:n.isPlanModeEnabled??!1,mergeAskBuild:i.isFeatureEnabled(gi.name)};if(n.nodesForSchema?.length){let{schemas:e,pinnedNodeNames:t}=r.getNodesSchemas(n.workflowId,n.nodesForSchema,s);o.executionSchema=e,o.valuesExcluded=s,t.length>0&&(o.pinnedNodes=t)}return{role:`user`,type:`message`,id:t,text:e,quickReplyType:n.quickReplyType,workflowContext:o,featureFlags:f,mode:n.mode}}function Ah(e){return e.filter(uh).map(e=>e.revertVersionId)}async function jh(e,t,n){if(n.length===0)return new Map;try{let r=await Dl(e,t,n);return new Map(r.versions.map(e=>[e.versionId,e.createdAt]))}catch{return new Map}}function Mh(e){let{revertVersionId:t,...n}=e;return n}function Nh(e,t){return e.map(e=>{if(!uh(e))return e;let n=t.get(e.revertVersionId);return n?{...e,revertVersion:{id:e.revertVersionId,createdAt:n}}:Mh(e)})}function Ph(e,t,n){return{id:e,role:`assistant`,type:`custom`,customType:`questions`,data:{questions:t,introMessage:n},read:!1}}function Fh(e,t){return{id:e,role:`assistant`,type:`custom`,customType:`plan`,data:{plan:t},read:!1}}function Ih(e,t){return{id:e,role:`assistant`,type:`custom`,customType:`web_fetch_approval`,data:t,read:!1}}function Lh(e,t){return{id:e,role:`user`,type:`custom`,customType:`user_answers`,data:{answers:t}}}function Rh(){let e=Ee();function t(e){return e.map(e=>{if(e.type===`text`&&`showRating`in e){let{showRating:t,ratingStyle:n,...r}=e;return r}return e})}function n(e){let{hasAnyRunningTools:n,isStillThinking:r}=s(e);if(n||r)return t(e);let i=-1;for(let t=e.length-1;t>=0;t--)if(e[t].type===`workflow-updated`){i=t;break}if(i===-1)return e;let a=-1;for(let t=e.length-1;t>=0;t--)if(e[t].type===`text`&&e[t].role===`assistant`&&t>i){a=t;break}return e.map((e,t)=>{if(e.type===`text`&&e.role===`assistant`&&t===a)return{...e,showRating:!0,ratingStyle:`minimal`};if(e.type===`text`&&`showRating`in e){let{showRating:t,ratingStyle:n,...r}=e;return r}return e})}function r(e,t,n){let r=t.toolCallId?e.findIndex(e=>e.type===`tool`&&e.toolCallId===t.toolCallId):-1;if(r!==-1){let i=e[r];e[r]={...i,id:`${n}-${t.toolCallId}`,status:t.status,customDisplayTitle:t.customDisplayTitle??i.customDisplayTitle,updates:[...i.updates||[],...t.updates||[]]}}else{let r={id:`${n}-${t.toolCallId}`,role:`assistant`,type:`tool`,toolName:t.toolName,toolCallId:t.toolCallId,displayTitle:t.displayTitle,customDisplayTitle:t.customDisplayTitle,status:t.status,updates:t.updates||[],read:!1};e.push(r)}}function i(e,t,n,i){let a=!1;if(dh(t))e.push({id:n,role:`assistant`,type:`block`,title:t.title,content:t.content,read:!1}),a=!0;else if(fh(t))e.push({id:n,role:`assistant`,type:`block`,title:t.title,content:t.text,read:!1}),a=!0;else if(lh(t))e.push({id:n,role:`assistant`,type:`text`,content:t.text,codeSnippet:t.codeSnippet,read:!1}),a=!0;else if(ph(t))e.push({id:n,role:`assistant`,type:`code-diff`,description:t.description,codeDiff:t.codeDiff,suggestionId:t.suggestionId,sdkSessionId:t.sdkSessionId,nodeName:t.nodeName,quickReplies:t.quickReplies,read:!1}),a=!0;else if(gh(t)){let r=e.findIndex(e=>e.type===`custom`&&`customType`in e&&e.customType===`questions`),i=r!==-1&&e.slice(r+1).some(e=>e.role===`user`);(r===-1||i)&&e.push(Ph(n,t.questions,t.introMessage)),a=!0}else if(_h(t)){let r=e.findLastIndex(e=>e.type===`custom`&&`customType`in e&&e.customType===`plan`),i=r!==-1&&e.slice(r+1).some(e=>e.role===`user`);(r===-1||i)&&e.push(Fh(n,t.plan)),a=!0}else vh(t)?(e.push(Lh(n,t.answers)),a=!0):yh(t)?(e.push(Ih(n,{requestId:t.requestId,url:t.url,domain:t.domain})),a=!0):mh(t)?e.push({...t,id:n,read:!1}):hh(t)?r(e,t,n):`type`in t&&t.type===`error`&&`content`in t&&(e.push({id:n,role:`assistant`,type:`error`,content:t.content,read:!1,retry:i}),a=!0);return a}function a(e){return e.filter(e=>e.type===`tool`)}function o(e){return a(e).filter(e=>e.status===`running`)}function s(e){if(o(e).length>0)return{hasAnyRunningTools:!0,isStillThinking:!1};let t=e=>e===`completed`||e===`error`,n=a(e).some(e=>t(e.status)),r=-1;for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.type===`tool`&&t(i.status)){r=n;break}}let i=!1;if(r!==-1)for(let t=r+1;t<e.length;t++){let n=e[t];if(n.type===`text`||n.type===`custom`||n.type===`code-diff`||n.type===`block`){i=!0;break}}return{hasAnyRunningTools:!1,isStillThinking:n&&!i}}function c(t){let{hasAnyRunningTools:n,isStillThinking:r}=s(t);if(n){let n=o(t),r=n[n.length-1];if(r){let e=r.customDisplayTitle||r.displayTitle;if(e)return e}return e.baseText(`aiAssistant.thinkingSteps.thinking`)}if(!n&&r)return e.baseText(`aiAssistant.thinkingSteps.thinking`)}function l(t,n,r,a){let o=[...t],s=!1,l=n.some(xh);l&&(o.length=0);let d=Dh();n.forEach((e,t)=>{let n=i(o,e,`${r}--${d}--${t}`,a);s||=n});let f=l?e.baseText(`aiAssistant.thinkingSteps.compacting`):c(o);return{messages:u(o),thinkingMessage:f,shouldClearThinking:s&&o.length>t.length}}function u(e){return e.map((t,n)=>{if(t.type===`error`&&t.retry&&n!==e.length-1){let{retry:e,...n}=t;return n}return t})}function d(e,t,n,r){return{id:t,role:`user`,type:`text`,content:e,revertVersion:n,...r&&r.length>0?{focusedNodeNames:r}:{},read:!0}}function f(e,t){return{id:t,role:`user`,type:`custom`,customType:`user_answers`,data:{answers:e}}}function p(e,t,n){return n?.aborted?{id:t,role:`assistant`,type:`text`,content:e,read:!0,aborted:!0}:{id:t,role:`assistant`,type:`text`,content:e,read:!0}}function m(e,t,n){return{id:t,role:`assistant`,type:`error`,content:e,retry:n,read:!1}}function h(){return[]}function g(e,t){return[...e,...t]}function _(t,n){return dh(t)?{id:n,role:`assistant`,type:`block`,title:t.title,content:t.content,read:!1}:fh(t)?{id:n,role:`assistant`,type:`block`,title:t.title,content:t.text,read:!1}:lh(t)?{id:n,role:t.role??`assistant`,type:`text`,content:t.text,codeSnippet:t.codeSnippet,revertVersion:t.revertVersion,read:!1}:ph(t)?{id:n,role:`assistant`,type:`code-diff`,description:t.description,codeDiff:t.codeDiff,suggestionId:t.suggestionId,sdkSessionId:t.sdkSessionId,nodeName:t.nodeName,quickReplies:t.quickReplies,read:!1}:gh(t)?Ph(n,t.questions,t.introMessage):_h(t)?Fh(n,t.plan):vh(t)?Lh(n,t.answers):yh(t)?Ih(n,{requestId:t.requestId,url:t.url,domain:t.domain}):mh(t)?{...t,id:n,read:!1}:hh(t)?{id:n,role:`assistant`,type:`tool`,toolName:t.toolName,toolCallId:t.toolCallId,displayTitle:t.displayTitle,customDisplayTitle:t.customDisplayTitle,status:t.status,updates:t.updates||[],read:!1}:`type`in t&&t.type===`event`?{...t,id:n,read:!1}:{id:n,role:`assistant`,type:`text`,content:e.baseText(`aiAssistant.thinkingSteps.thinking`),read:!1}}return{processAssistantMessages:l,createUserMessage:d,createUserAnswersMessage:f,createAssistantMessage:p,createErrorMessage:m,clearMessages:h,addMessages:g,mapAssistantMessageToUI:_,applyRatingLogic:n,clearRatingLogic:t,getRunningTools:o}}var zh=/<__PLACEHOLDER.*?__>/g;function Bh(e){let t=e.slice(14,-3);return t.startsWith(`_VALUE__`)?t=t.slice(8):t.startsWith(`__:`)?t=t.slice(3):t.startsWith(`__`)&&(t=t.slice(2)),t.trim()}function Vh(e){if(typeof e!=`string`)return[];let t=[],n=new RegExp(zh.source,`g`),r;for(;(r=n.exec(e))!==null;){let e=Bh(r[0]);e.length>0&&t.push(e)}return t}function Hh(e,t=[]){return typeof e==`string`?Vh(e).map(e=>({path:t,label:e})):Array.isArray(e)?e.flatMap((e,n)=>Hh(e,[...t,`[${n}]`])):typeof e==`object`&&e?Object.entries(e).flatMap(([e,n])=>Hh(n,[...t,e])):[]}function Uh(e){return e.length===0?`parameters`:e.map((e,t)=>e.startsWith(`[`)||t===0?e:`.${e}`).join(``)}function Wh(e){return typeof e==`string`?!!e.match(zh):!1}function Gh(){let e=TN(),t=Ee(),n=E(()=>e.workflowId?Z(X(e.workflowId)):void 0);function r(t,i=new Set){if(i.has(t))return!1;if(i.add(t),n.value?.getNodeByName(t)?.disabled===!0)return!0;let a=e.outgoingConnectionsByNodeName(t);for(let e of Object.keys(a)){if(e===`main`)continue;let t=a[e];if(t){for(let e of t)if(e){for(let t of e)if(r(t.node,i))return!0}}}return!1}function i(t,r=new Set){if(r.has(t))return!1;if(r.add(t),(n.value?.pinData)?.[t]?.length)return!0;let a=e.outgoingConnectionsByNodeName(t);for(let e of Object.keys(a)){if(e===`main`)continue;let t=a[e];if(t){for(let e of t)if(e){for(let t of e)if(i(t.node,r))return!0}}}return!1}let a=E(()=>(n.value?.pinData,n.value?.allNodes,e.workflowValidationIssues.filter(e=>[`credentials`,`parameters`].includes(e.type)&&!i(e.node)&&!r(e.node)))),o=E(()=>{n.value?.pinData;let e=[],a=new Set;for(let o of n.value?.allNodes??[]){if(!o?.parameters||i(o.name)||r(o.name))continue;let n=Hh(o.parameters);if(n.length===0)continue;let s=o.issues?.parameters??{};for(let r of n){let n=Uh(r.path),i=t.baseText(`aiAssistant.builder.executeMessage.fillParameter`,{interpolate:{label:r.label}}),c=s[n];if((c?Array.isArray(c)?c:[c]:[]).includes(i))continue;let l=`${o.name}|${n}|${r.label}`;a.has(l)||(a.add(l),e.push({node:o.name,type:`parameters`,value:i}))}}return e}),s=E(()=>[...a.value,...o.value]),c=E(()=>{if(s.value.length>0)return!1;let t=n.value?.pinData;if(!t||Object.keys(t).length===0)return!1;if(e.workflowValidationIssues.some(e=>[`credentials`,`parameters`].includes(e.type)&&i(e.node)&&!r(e.node)))return!0;for(let e of n.value?.allNodes??[])if(e?.parameters&&i(e.name)&&!r(e.name)&&Hh(e.parameters).length>0)return!0;return!1});function l(){return{credentials_todo_count:e.workflowValidationIssues.filter(e=>e.type===`credentials`).length,placeholders_todo_count:o.value.length,todos:s.value.map(e=>({type:e.type,node_type:n.value?.getNodeByName(e.node)?.type,label:e.value}))}}return{workflowTodos:s,placeholderIssues:o,getTodosToTrack:l,hasTodosHiddenByPinnedData:c}}var Kh=t(((e,t)=>{(function(t,n){typeof define==`function`&&define.amd?define([],n):e===void 0?(n(),t.FileSaver={exports:{}}.exports):n()})(e,function(){function e(e,t){return t===void 0?t={autoBom:!1}:typeof t!=`object`&&(console.warn(`Deprecated: Expected third argument to be a object`),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function n(e,t,n){var r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){s(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function r(e){var t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function i(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{var t=document.createEvent(`MouseEvents`);t.initMouseEvent(`click`,!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var a=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:void 0,o=a.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=a.saveAs||(typeof window!=`object`||window!==a?function(){}:`download`in HTMLAnchorElement.prototype&&!o?function(e,t,o){var s=a.URL||a.webkitURL,c=document.createElement(`a`);t=t||e.name||`download`,c.download=t,c.rel=`noopener`,typeof e==`string`?(c.href=e,c.origin===location.origin?i(c):r(c.href)?n(e,t,o):i(c,c.target=`_blank`)):(c.href=s.createObjectURL(e),setTimeout(function(){s.revokeObjectURL(c.href)},4e4),setTimeout(function(){i(c)},0))}:`msSaveOrOpenBlob`in navigator?function(t,a,o){if(a=a||t.name||`download`,typeof t!=`string`)navigator.msSaveOrOpenBlob(e(t,o),a);else if(r(t))n(t,a,o);else{var s=document.createElement(`a`);s.href=t,s.target=`_blank`,setTimeout(function(){i(s)})}}:function(e,t,r,i){if(i||=open(``,`_blank`),i&&(i.document.title=i.document.body.innerText=`downloading...`),typeof e==`string`)return n(e,t,r);var s=e.type===`application/octet-stream`,c=/constructor/i.test(a.HTMLElement)||a.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||s&&c||o)&&typeof FileReader<`u`){var u=new FileReader;u.onloadend=function(){var e=u.result;e=l?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),i?i.location.href=e:location=e,i=null},u.readAsDataURL(e)}else{var d=a.URL||a.webkitURL,f=d.createObjectURL(e);i?i.location=f:location.href=f,i=null,setTimeout(function(){d.revokeObjectURL(f)},4e4)}});a.saveAs=s.saveAs=s,t!==void 0&&(t.exports=s)})})),qh=Kh();const Jh=Da(`workflowHistory`,()=>{let e=Y(),t=Al(),n=TN(),r=th(),i=E(()=>t.settings.workflowHistory?.licensePruneTime),a=E(()=>t.settings.workflowHistory?.pruneTime),o=E(()=>i.value!==-1&&i.value===a.value),s=async(t,n)=>await Tl(e.restApiContext,t,n),c=async(t,n)=>await El(e.restApiContext,t,n);return{getWorkflowHistory:s,getWorkflowVersion:c,downloadVersion:async(e,t,n)=>{let[i,a]=await Promise.all([r.fetchWorkflow(e),c(e,t)]),{connections:o,nodes:s}=a;(0,qh.saveAs)(new Blob([JSON.stringify({...i,nodes:s,connections:o},null,2)],{type:`application/json;charset=utf-8`}),`${i.name}(${n.formattedCreatedAt}).json`)},cloneIntoNewWorkflow:async(t,i,a)=>{let[o,s]=await Promise.all([r.fetchWorkflow(t),c(t,i)]),{connections:l,nodes:u}=s,{name:d}=o,f={nodes:u,connections:l,name:(await Vd(e.restApiContext,{name:`${d} (${a.formattedCreatedAt})`})).name};return await n.createNewWorkflow(f)},restoreWorkflow:async(e,t)=>{let{connections:i,nodes:a}=await c(e,t),o={connections:i,nodes:a};return await n.updateWorkflow(e,o,!0).catch(async t=>{if(t.httpStatusCode===400&&typeof t.message==`string`&&t.message.includes(`can not be activated`))return await r.fetchWorkflow(e);throw Error(t)})},updateWorkflowHistoryVersion:async(t,n,r)=>{await Ol(e.restApiContext,t,n,r)},evaluatedPruneTime:a,shouldUpgrade:o}}),Yh=Da(`npsSurvey`,()=>{let e=Y(),t=RN(),n=Al(),r=m(!1),i=m(),a=m();function o(e,t){a.value=e,t&&s(t)}function s(e){if(!n.isTelemetryEnabled){r.value=!1;return}i.value=e.npsSurvey;let t=!!e.userActivated,a=e.userActivatedAt,o=i.value?.lastShownAt;if(!t||!a||Date.now()-a<qn)return;if(!i.value||!o){r.value=!0;return}let s=Date.now()-o;`responded`in i.value&&s<na||`waitingForResponse`in i.value&&s<Or||(r.value=!0)}function c(){r.value=!1}async function l(){if(!r.value)return;t.openModal(dn),r.value=!1;let n={waitingForResponse:!0,lastShownAt:Date.now(),ignoredCount:i.value&&`ignoredCount`in i.value?i.value.ignoredCount:0};await Ac(e.restApiContext,n),i.value=n}async function u(){Na(i.value);let t={responded:!0,lastShownAt:i.value.lastShownAt};await Ac(e.restApiContext,t),i.value=t}async function d(){Na(i.value);let t=i.value,n=`ignoredCount`in t?t.ignoredCount:0;if(n+1>=3){await u();return}let r={waitingForResponse:!0,lastShownAt:i.value.lastShownAt,ignoredCount:n+1};await Ac(e.restApiContext,r),i.value=r}return{resetNpsSurveyOnLogOut:c,showNpsSurveyIfPossible:l,ignoreNpsSurvey:d,respondNpsSurvey:u,setupNpsSurveyOnLogin:o}});function Xh(){let e=e=>{if(e instanceof Error)throw e;return e},t=e=>{if(e instanceof Error)throw e;return{value:``,action:e}};async function n(t,n,r){let i={...r??(typeof n==`object`?n:{}),cancelButtonClass:`btn--cancel`,confirmButtonClass:`btn--confirm`,dangerouslyUseHTMLString:!0};return typeof n==`string`?await So.alert(Bo(t),n,i).catch(e):await So.alert(Bo(t),i).catch(e)}async function r(t,n,r){let i=Bo(t),a=!0,{confirmationCheckboxMessage:o,...s}=r??{},c={cancelButtonClass:`btn--cancel`,confirmButtonClass:`btn--confirm`,distinguishCancelAndClose:!0,showClose:r?.showClose??!1,closeOnClickModal:!1,dangerouslyUseHTMLString:!0,beforeClose:(e,t,n)=>{(e!==`confirm`||a)&&n()},...r?s:typeof n==`object`?n:{}};return o&&(a=!1,c.customClass=[c.customClass,`with-confirmation-checkbox`].join(` `),i=g(`div`,[g(`div`,{class:`el-message-box__message__structured`},i),g(xt,{"onUpdate:modelValue":e=>{a=e},required:!0},{label:()=>g(`span`,Bo(o))})])),typeof n==`string`?await So.confirm(i,Bo(n),c).catch(e):await So.confirm(i,c).catch(e)}async function i(e,n,r){let i={...r??(typeof n==`object`?n:{}),cancelButtonClass:`btn--cancel`,confirmButtonClass:`btn--confirm`,dangerouslyUseHTMLString:!0};return typeof n==`string`?await So.prompt(Bo(e),Bo(n),i).catch(t):await So.prompt(Bo(e),i).catch(t)}return{alert:n,confirm:r,prompt:i,message:So}}var Zh=`/source-control`,Qh=e=>async(t,n)=>await J(t,e,`${Zh}/preferences`,n);const $h=async(e,t)=>await J(e,`POST`,`${Zh}/push-workfolder`,t),eg=async(e,t)=>await J(e,`POST`,`${Zh}/pull-workfolder`,t),tg=async e=>await J(e,`GET`,`${Zh}/get-branches`),ng=Qh(`POST`),rg=Qh(`PATCH`),ig=async e=>await J(e,`GET`,`${Zh}/preferences`),ag=async e=>await J(e,`GET`,`${Zh}/status`),og=async(e,t)=>await J(e,`GET`,`${Zh}/remote-content/workflow/${t}`),sg=async(e,t={direction:`push`,preferLocalVersion:!0,verbose:!1})=>await J(e,`GET`,`${Zh}/get-status`,t),cg=async(e,t)=>await J(e,`POST`,`${Zh}/disconnect`,{keepKeyPair:t}),lg=async(e,t)=>await J(e,`POST`,`${Zh}/generate-key-pair`,{keyGeneratorType:t}),ug=Da(`sourceControl`,()=>{let e=Y(),t=Al(),n=E(()=>t.isEnterpriseFeatureEnabled[Si.SourceControl]),r=b([`ed25519`,`rsa`].map(e=>({value:e,label:e.toUpperCase()}))),i=b({branchName:``,branches:[],repositoryUrl:``,branchReadOnly:!1,branchColor:`#5296D6`,connected:!1,publicKey:``,keyGeneratorType:`ed25519`,connectionType:`ssh`}),a=b({commitMessage:`commit message`}),o=async t=>(a.commitMessage=t.commitMessage,await $h(e.restApiContext,{force:t.force,commitMessage:t.commitMessage,fileNames:t.fileNames})),s=async(t,n)=>await eg(e.restApiContext,{force:t,autoPublish:n}),c=e=>{Object.assign(i,e)},l=t=>async n=>{c(await t(e.restApiContext,n))};return{isEnterpriseSourceControlEnabled:n,state:a,preferences:i,pushWorkfolder:o,pullWorkfolder:s,getPreferences:async()=>{c(await ig(e.restApiContext))},setPreferences:c,generateKeyPair:async t=>{await lg(e.restApiContext,t);let n=await ig(e.restApiContext);return i.publicKey=n.publicKey,{publicKey:n.publicKey}},getBranches:async()=>{c(await tg(e.restApiContext))},savePreferences:l(ng),updatePreferences:l(rg),disconnect:async t=>{await cg(e.restApiContext,t),c({connected:!1,branches:[]})},getStatus:async()=>await ag(e.restApiContext),getAggregatedStatus:async t=>await sg(e.restApiContext,t),getRemoteWorkflow:async t=>await og(e.restApiContext,t),sshKeyTypesWithLabel:r}});function dg(){let e=Ee(),t=m(null);function n(n){t.value===null&&(t.value=io.service({lock:!0,text:n||e.baseText(`genericHelpers.loading`),background:`var(--dialog--overlay--color--background)`}))}function r(e){t.value&&(t.value.text=e)}function i(){t.value&&=(t.value.close(),null)}return{loadingService:t,isLoading:E(()=>t.value!==null),startLoading:n,setLoadingText:r,stopLoading:i}}const fg=Da(`canvas`,()=>{let e=TN(),t=dg(),n=m(null),r=E(()=>e.allNodes),i=E(()=>r.value.filter(e=>e.type.includes(`langchain`)||e.type===`n8n-nodes-base.evaluation`&&e.parameters?.operation===`setMetrics`)),a=m(!1);function o(e){a.value=e}return{newNodeInsertPosition:n,isLoading:t.isLoading,aiNodes:i,hasRangeSelection:E(()=>a.value),startLoading:t.startLoading,setLoadingText:t.setLoadingText,stopLoading:t.stopLoading,setHasRangeSelection:o}}),pg=Da(qo.WEBHOOKS,()=>({...Y(),...TN(),...RN(),...YN(),...NO(),...Al()}));async function mg(e,t){if(!window.n8nExternalHooks)return;let n=pg(),[r,i]=e.split(`.`),a=window.n8nExternalHooks[r];if(a?.[i]){let e=a[i];for(let r of e)await r(n,t)}}function hg(){return{run:mg}}var gg={CONTEXT_MENU:10,APP_HEADER:99,SELECT_BOX:100,CANVAS_ADD_BUTTON:101,APP_SIDEBAR:999,CANVAS_SELECT_BOX:100,TOP_BANNERS:999,NODE_CREATOR:1700,ASK_ASSISTANT_CHAT:1750,NDV:1800,COMMAND_BAR:1900,DIALOGS:1950,MODALS:2e3,TOASTS:2100,ASK_ASSISTANT_FLOATING_BUTTON:3e3,ASK_ASSISTANT_FLOATING_BUTTON_TOOLTIP:3e3,CODEMIRROR_TOOLTIP:3e3,FLOATING_UI:3e3,DRAGGABLE:9999999,ACTIVE_STICKY:9999999,WORKFLOW_PREVIEW_NDV:9999999,NPS_SURVEY_MODAL:3001},_g=()=>{Object.keys(gg).forEach(e=>{let t=`--${e.toLowerCase().replaceAll(`_`,`-`)}--z`,n=gg[e];document.documentElement.style.setProperty(t,`${n}`)})};const vg=()=>({APP_Z_INDEXES:gg,setAppZIndexes:_g});var yg=[];function bg(){let e=IO(),t=TN(),n=RN(),r=hg(),i=Ee(),{APP_Z_INDEXES:a}=vg();function o(n,r=!0){let i={dangerouslyUseHTMLString:!0,position:`bottom-right`,zIndex:a.TOASTS,appendTo:`#n8n-app`,customClass:`content-toast`},{message:o,title:s}=n,c={...i,...n};typeof o==`string`&&(c.message=zo(o)),typeof s==`string`&&(c.title=zo(s));let l=Lo(c);if(c.duration===0&&yg.push(l),c.type===`error`&&r){let n;if(typeof c.message==`string`)n=c.message;else if(c.message&&typeof c.message==`object`&&`props`in c.message&&c.message.props){let e=c.message.props,t=typeof e==`object`&&!!e&&`errorMessage`in e,r=typeof e==`object`&&!!e&&`message`in e;n=t?String(e.errorMessage):r?String(e.message):`Unknown error`}else n=`Unknown error`;e.track(`Instance FE emitted error`,{error_title:c.title,error_message:n,caused_by_credential:u(n),workflow_id:t.workflowId})}return l}function s(e){let t;if(e.closeOnClick){let n=e.onClick;e.onClick=()=>{t&&t.close(),n&&n()}}return t=o({title:e.title,message:e.message,onClick:e.onClick,onClose:e.onClose,duration:e.duration,customClass:e.customClass,type:e.type}),t}function c({description:e,node:t}){if(!e)return``;let n=e.length>500?`${e.slice(0,500)}...`:e;return`
				<br>
				<br>
				<details>
					<summary
						style="color: #ff6d5a; font-weight: bold; cursor: pointer;"
					>
						${i.baseText(`showMessage.showDetails`)}
					</summary>
					<p>${t.name}: ${n}</p>
				</details>
			`}function l(n,i,a){let s=n;o({title:i,message:`
					${a?`${a}<br/>`:``}
					<i>${s.message}</i>
					${c(s)}`,type:`error`,duration:0},!1),r.run(`showMessage.showError`,{title:i,message:a,errorMessage:s.message}),e.track(`Instance FE emitted error`,{error_title:i,error_description:a,error_message:s.message,caused_by_credential:u(s.message),workflow_id:t.workflowId})}function u(e){return!e||typeof e!=`string`?!1:e.includes(`Credentials for`)&&e.includes(`are not set`)}function d(){yg.forEach(e=>{e&&e.close()}),yg.length=0}function f(e){let t=[];e.forEach(e=>{t.push(...n.pendingNotificationsForViews[e]??[])}),t.length&&(t.forEach(async e=>{setTimeout(()=>{o(e)},5)}),n.setNotificationsForView(pi.WORKFLOW,[]))}return{showMessage:o,showToast:s,showError:l,clearAllStickyNotifications:d,showNotificationForViews:f}}const xg=e=>{let t=YN().currentUser;if(t&&e){let n=t.isDefaultUser?ei.Default:t.role;return e.includes(n)}return!1},Sg=Da(qo.RBAC,()=>{let e=m([]),t=m({}),n=m([]),r=m({}),i=m({aiAssistant:{},workflow:{},tag:{},annotationTag:{},user:{},credential:{},variable:{},projectVariable:{},sourceControl:{},externalSecretsProvider:{},externalSecret:{},project:{},orchestration:{},workersView:{},eventBusDestination:{},auditLogs:{},banner:{},community:{},communityPackage:{},ldap:{},license:{},logStreaming:{},saml:{},oidc:{},provisioning:{},securityAudit:{},folder:{},insights:{},dataTable:{},execution:{},workflowTags:{},role:{},mcp:{},mcpApiKey:{},chatHub:{},chatHubAgent:{},breakingChanges:{},apiKey:{},credentialResolver:{},securitySettings:{}});function a(t){e.value.includes(t)||e.value.push(t)}function o(t){return e.value.includes(t)}function s(e){n.value.includes(e)||n.value.push(e)}function c(e){n.value=e}function l(e,t){r.value[t.projectId]||(r.value[t.projectId]=[]),r.value[t.projectId].includes(e)||r.value[t.projectId].push(e)}function u(e,t){let n=i.value[t.resourceType];n[t.resourceId]||(n[t.resourceId]=[]),n[t.resourceId].includes(e)||n[t.resourceId].push(e)}function d(e,t,a){return Tr(e,{global:n.value,project:t?.projectId?r.value[t.projectId]:[],resource:t?.resourceType&&t?.resourceId?i.value[t.resourceType][t.resourceId]:[]},void 0,a)}return{globalRoles:e,rolesByProjectId:t,globalScopes:n,scopesByProjectId:r,scopesByResourceId:i,addGlobalRole:a,hasRole:o,addGlobalScope:s,setGlobalScopes:c,addProjectScope:l,addResourceScope:u,hasScope:d}}),Cg=e=>{if(!e?.scope)return!0;let{projectId:t,resourceType:n,resourceId:r,scope:i,options:a}=e;return Sg().hasScope(i,{projectId:t,resourceType:n,resourceId:r},a)},wg=e=>e?.bypass?.()?!0:!!YN().currentUser,Tg=()=>{let e=YN().currentUser?.mfaAuthenticated??!1,t=Al().isMFAEnforced;return!e&&t},Eg=()=>{let e=YN().currentUser;return e?e.isDefaultUser:!1},Dg=()=>YN().isInstanceOwner,Og=e=>{if(!e?.feature)return!0;let t=Array.isArray(e.feature)?e.feature:[e.feature],n=Al();return(e.mode??`allOf`)===`allOf`?t.every(e=>n.isEnterpriseFeatureEnabled[e]):t.some(e=>n.isEnterpriseFeatureEnabled[e])},kg=()=>!YN().currentUser,Ag={authenticated:wg,custom:e=>e?e():!1,defaultUser:Eg,instanceOwner:Dg,enterprise:Og,guest:kg,rbac:Cg,role:xg};function jg(e,t){let n=!0;for(let r of e){let e=t?.[r]??{},i=Ag[r];n&&=i(e)}return n}var Mg={initialized:!1,data:null,usage:null,loadingPlan:!1};const Ng=Da(qo.CLOUD_PLAN,()=>{let e=Y(),t=Al(),n=b(Mg),r=m(null),i=m(Date.now()),a=()=>{r.value=null,n.data=null,n.usage=null},o=E(()=>n.data?.userIsTrialing??!1),s=E(()=>n.data?.bannerConfig),c=E(()=>s.value?.forceShow===!0),l=E(()=>{let e=t.permanentlyDismissedBanners;return e.includes(`TRIAL`)||e.includes(`TRIAL_OVER`)}),u=E(()=>s.value?g.value?c.value||!l.value:!0:!1),d=E(()=>({show:!!s.value?.timeLeft,text:s.value?.timeLeft?.text})),f=E(()=>s.value?.showExecutions===!0),p=E(()=>({text:s.value?.cta?.text??`Upgrade Now`,icon:s.value?.cta?.icon??`zap`,size:s.value?.cta?.size??`small`,style:s.value?.cta?.style??`success`,variant:s.value?.cta?.variant,href:s.value?.cta?.href})),h=E(()=>s.value?.icon),g=E(()=>s.value?.dismissible??!0),_=E(()=>n.data),v=E(()=>n.usage),y=E(()=>r.value?.selectedApps),x=E(()=>{let e=r.value?.information;return!e||!(`which_of_these_do_you_feel_comfortable_doing`in e&&e.which_of_these_do_you_feel_comfortable_doing&&Array.isArray(e.which_of_these_do_you_feel_comfortable_doing))?0:e.which_of_these_do_you_feel_comfortable_doing.length}),S=E(()=>n.data?.userIsTrialing&&fi.now().toMillis()>=fi.fromISO(n.data?.expirationDate).toMillis()),C=E(()=>!n.usage?.executions||!n.data?.monthlyExecutionsLimit?!1:n.usage?.executions>=n.data?.monthlyExecutionsLimit),w=E(()=>{let e=t.settings.n8nMetadata?.userId;return jg([`instanceOwner`])&&t.isCloudDeployment&&!!e}),T=async()=>{if(!w.value)throw Error(`User does not have a cloud plan`);let t=null;try{t=await hs(e.restApiContext),r.value=t}catch(e){throw Error(e.message)}},D=async()=>await _s(e.restApiContext),O=async()=>{if(!w.value)throw Error(`User does not have a cloud plan`);n.loadingPlan=!0;let t;try{t=await ps(e.restApiContext),n.data=t,n.loadingPlan=!1}catch(e){throw n.loadingPlan=!1,Error(e)}return t},k=async()=>{let t=await ms({baseUrl:e.baseUrl,pushRef:``});return n.usage=t,t},A=E(()=>!n.data||!n.usage?{workflowsLeft:-1,executionsLeft:-1}:{workflowsLeft:n.data.activeWorkflowsLimit-n.usage.activeWorkflows,executionsLeft:n.data.monthlyExecutionsLimit-n.usage.executions}),j=E(()=>{if(!n.data?.expirationDate)return-1;let e=new Date().valueOf()-new Date(n.data.expirationDate).valueOf(),t=Math.floor(e/(1e3*60*60*24));return Math.ceil(t)}),M=E(()=>{if(!n.data?.expirationDate)return{count:0,unit:`days`};let e=new Date(n.data.expirationDate).valueOf()-i.value;if(e<=0)return{count:0,unit:`minutes`};let t=e/(1e3*60*60);return t<1?{count:Math.ceil(e/(1e3*60)),unit:`minutes`}:t<24?{count:Math.ceil(t),unit:`hours`}:{count:Math.ceil(t/24),unit:`days`}}),N=()=>{let e=setInterval(async()=>{i.value=Date.now();try{if(await k(),S.value||C.value){clearInterval(e);return}}catch{}},Yr)},P=async()=>{try{if(await O(),!o.value)return;await k(),N()}catch(e){throw Error(e.message)}},F=async()=>{try{await T()}catch(e){throw Error(e.message)}};return{state:n,usageLeft:A,trialDaysLeft:j,trialTimeLeft:M,userIsTrialing:o,currentPlanData:_,currentUsageData:v,trialExpired:S,allExecutionsUsed:C,hasCloudPlan:w,currentUserCloudInfo:r,generateCloudDashboardAutoLoginLink:async e=>{let t=new URLSearchParams,n=new URL(window.location.href).host.split(`.`).slice(1).join(`.`),{code:r}=await D(),i=`https://${n}/login`;return t.set(`code`,r),t.set(`returnPath`,e.redirectionPath),`${i}?${t.toString()}`},initialize:async()=>{if(!n.initialized){try{await P()}catch(e){console.warn(`Error checking for cloud plan data:`,e)}try{await F()}catch(e){console.warn(`Error fetching user cloud account:`,e)}n.initialized=!0}},getOwnerCurrentPlan:O,getInstanceCurrentUsage:k,reset:a,checkForCloudPlanData:P,fetchUserCloudAccount:F,getAutoLoginCode:D,selectedApps:y,codingSkill:x,shouldShowBanner:u,bannerConfig:s,bannerForceShow:c,isBannerDismissed:l,bannerTimeLeft:d,showExecutions:f,bannerCta:p,bannerIcon:h,bannerDismissible:g}}),Pg=()=>ah().getVariant(wt.name)===wt.variant&&Ng().userIsTrialing;let Fg=function(e){return e.emptyWorkflowLink=`empty_workflow_link`,e.emptyInstanceCard=`empty_instance_card`,e.sidebarButton=`sidebar_button`,e.emptyStateBuilderPrompt=`empty_state_builder_prompt`,e}({});const Ig=e=>{if(!e)return``;switch(e){case`Executive/Owner`:case`Product & Design`:return`categories/ai/`;case`Support`:return`categories/support/`;case`Sales`:return`categories/sales/`;case`IT`:case`Engineering`:return`categories/it-ops/`;case`Marketing`:return`categories/marketing/`;case`Other`:return`categories/other/`;default:return``}},Lg=e=>{IO().track(`User clicked on templates`,{role:Ng().currentUserCloudInfo?.role,active_workflow_count:th().activeWorkflows.length,source:e})};function Rg(e){return p()?(v(e),!0):!1}function zg(e){return typeof e==`function`?e():N(e)}var Bg=typeof window<`u`&&typeof document<`u`,Vg=e=>e!==void 0,Hg=Object.prototype.toString,Ug=e=>Hg.call(e)===`[object Object]`,Wg=()=>{};function Gg(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}var Kg=e=>e();function qg(e=Kg){let t=m(!0);function n(){t.value=!1}function r(){t.value=!0}return{isActive:S(t),pause:n,resume:r,eventFilter:(...n)=>{t.value&&e(...n)}}}function Jg(e,t=!1,n=`Timeout`){return new Promise((r,i)=>{t?setTimeout(()=>i(n),e):setTimeout(r,e)})}function Yg(e,t,n={}){let{eventFilter:r=Kg,...i}=n;return U(e,Gg(r,t),i)}function Xg(e,t,n={}){let{eventFilter:r,...i}=n,{eventFilter:a,pause:o,resume:s,isActive:c}=qg(r);return{stop:Yg(e,t,{...i,eventFilter:a}),pause:o,resume:s,isActive:c}}function Zg(e,t={}){if(!a(e))return j(e);let n=Array.isArray(e.value)?Array.from({length:e.value.length}):{};for(let r in e.value)n[r]=ve(()=>({get(){return e.value[r]},set(n){if(zg(t.replaceRef)??!0)if(Array.isArray(e.value)){let t=[...e.value];t[r]=n,e.value=t}else{let t={...e.value,[r]:n};Object.setPrototypeOf(t,Object.getPrototypeOf(e.value)),e.value=t}else e.value[r]=n}}));return n}function Qg(e,t=!1){function n(n,{flush:r=`sync`,deep:i=!1,timeout:a,throwOnTimeout:o}={}){let s=null,c=[new Promise(a=>{s=U(e,e=>{n(e)!==t&&(s?.(),a(e))},{flush:r,deep:i,immediate:!0})})];return a!=null&&c.push(Jg(a,o).then(()=>zg(e)).finally(()=>s?.())),Promise.race(c)}function r(r,i){if(!a(r))return n(e=>e===r,i);let{flush:o=`sync`,deep:s=!1,timeout:c,throwOnTimeout:l}=i??{},u=null,d=[new Promise(n=>{u=U([e,r],([e,r])=>{t!==(e===r)&&(u?.(),n(e))},{flush:o,deep:s,immediate:!0})})];return c!=null&&d.push(Jg(c,l).then(()=>zg(e)).finally(()=>(u?.(),zg(e)))),Promise.race(d)}function i(e){return n(e=>!!e,e)}function o(e){return r(null,e)}function s(e){return r(void 0,e)}function c(e){return n(Number.isNaN,e)}function l(e,t){return n(t=>{let n=Array.from(t);return n.includes(e)||n.includes(zg(e))},t)}function u(e){return d(1,e)}function d(e=1,t){let r=-1;return n(()=>(r+=1,r>=e),t)}return Array.isArray(zg(e))?{toMatch:n,toContains:l,changed:u,changedTimes:d,get not(){return Qg(e,!t)}}:{toMatch:n,toBe:r,toBeTruthy:i,toBeNull:o,toBeNaN:c,toBeUndefined:s,changed:u,changedTimes:d,get not(){return Qg(e,!t)}}}function $g(e){return Qg(e)}function e_(e){let t=zg(e);return t?.$el??t}var t_=Bg?window:void 0;function n_(...e){let t,n,r,i;if(typeof e[0]==`string`||Array.isArray(e[0])?([n,r,i]=e,t=t_):[t,n,r,i]=e,!t)return Wg;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);let a=[],o=()=>{a.forEach(e=>e()),a.length=0},s=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),c=U(()=>[e_(t),zg(i)],([e,t])=>{if(o(),!e)return;let i=Ug(t)?{...t}:t;a.push(...n.flatMap(t=>r.map(n=>s(e,t,n,i))))},{immediate:!0,flush:`post`}),l=()=>{c(),o()};return Rg(l),l}function r_(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function i_(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=t_,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=r_(t);return n_(i,a,e=>{e.repeat&&zg(s)||c(e)&&n(e)},o)}function a_(e){return JSON.parse(JSON.stringify(e))}function o_(e,t,n,r={}){let{clone:i=!1,passive:a=!1,eventName:o,deep:s=!1,defaultValue:c,shouldEmit:l}=r,u=x(),d=n||u?.emit||(u?.$emit)?.bind(u)||(u?.proxy?.$emit)?.bind(u?.proxy),f=o;t||=`modelValue`,f||=`update:${t.toString()}`;let p=e=>i?typeof i==`function`?i(e):a_(e):e,h=()=>Vg(e[t])?p(e[t]):c,g=e=>{l?l(e)&&d(f,e):d(f,e)};if(a){let n=m(h()),r=!1;return U(()=>e[t],e=>{r||(r=!0,n.value=p(e),M(()=>r=!1))}),U(n,n=>{!r&&(n!==e[t]||s)&&g(n)},{deep:s}),n}else return E({get(){return h()},set(e){g(e)}})}var s_={value:()=>{}};function c_(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new l_(n)}function l_(e){this._=e}function u_(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}l_.prototype=c_.prototype={constructor:l_,on:function(e,t){var n=this._,r=u_(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=d_(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=f_(n[i],e.name,t);else if(t==null)for(i in n)n[i]=f_(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new l_(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function d_(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function f_(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=s_,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var p_=`http://www.w3.org/1999/xhtml`,m_={svg:`http://www.w3.org/2000/svg`,xhtml:p_,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function h_(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),m_.hasOwnProperty(t)?{space:m_[t],local:e}:e}function g_(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===p_&&t.documentElement.namespaceURI===p_?t.createElement(e):t.createElementNS(n,e)}}function __(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function v_(e){var t=h_(e);return(t.local?__:g_)(t)}function y_(){}function b_(e){return e==null?y_:function(){return this.querySelector(e)}}function x_(e){typeof e!=`function`&&(e=b_(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new ly(r,this._parents)}function S_(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function C_(){return[]}function w_(e){return e==null?C_:function(){return this.querySelectorAll(e)}}function T_(e){return function(){return S_(e.apply(this,arguments))}}function E_(e){e=typeof e==`function`?T_(e):w_(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new ly(r,i)}function D_(e){return function(){return this.matches(e)}}function O_(e){return function(t){return t.matches(e)}}var k_=Array.prototype.find;function A_(e){return function(){return k_.call(this.children,e)}}function j_(){return this.firstElementChild}function M_(e){return this.select(e==null?j_:A_(typeof e==`function`?e:O_(e)))}var N_=Array.prototype.filter;function P_(){return Array.from(this.children)}function F_(e){return function(){return N_.call(this.children,e)}}function I_(e){return this.selectAll(e==null?P_:F_(typeof e==`function`?e:O_(e)))}function L_(e){typeof e!=`function`&&(e=D_(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new ly(r,this._parents)}function R_(e){return Array(e.length)}function z_(){return new ly(this._enter||this._groups.map(R_),this._parents)}function B_(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}B_.prototype={constructor:B_,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function V_(e){return function(){return e}}function H_(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new B_(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function U_(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new B_(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function W_(e){return e.__data__}function G_(e,t){if(!arguments.length)return Array.from(this,W_);var n=t?U_:H_,r=this._parents,i=this._groups;typeof e!=`function`&&(e=V_(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=K_(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new ly(o,r),o._enter=s,o._exit=c,o}function K_(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function q_(){return new ly(this._exit||this._groups.map(R_),this._parents)}function J_(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function Y_(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new ly(s,this._parents)}function X_(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Z_(e){e||=Q_;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new ly(i,this._parents).order()}function Q_(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function $_(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ev(){return Array.from(this)}function tv(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function nv(){let e=0;for(let t of this)++e;return e}function rv(){return!this.node()}function iv(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function av(e){return function(){this.removeAttribute(e)}}function ov(e){return function(){this.removeAttributeNS(e.space,e.local)}}function sv(e,t){return function(){this.setAttribute(e,t)}}function cv(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function lv(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function uv(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function dv(e,t){var n=h_(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?ov:av:typeof t==`function`?n.local?uv:lv:n.local?cv:sv)(n,t))}function fv(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function pv(e){return function(){this.style.removeProperty(e)}}function mv(e,t,n){return function(){this.style.setProperty(e,t,n)}}function hv(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function gv(e,t,n){return arguments.length>1?this.each((t==null?pv:typeof t==`function`?hv:mv)(e,t,n??``)):_v(this.node(),e)}function _v(e,t){return e.style.getPropertyValue(t)||fv(e).getComputedStyle(e,null).getPropertyValue(t)}function vv(e){return function(){delete this[e]}}function yv(e,t){return function(){this[e]=t}}function bv(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function xv(e,t){return arguments.length>1?this.each((t==null?vv:typeof t==`function`?bv:yv)(e,t)):this.node()[e]}function Sv(e){return e.trim().split(/^|\s+/)}function Cv(e){return e.classList||new wv(e)}function wv(e){this._node=e,this._names=Sv(e.getAttribute(`class`)||``)}wv.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Tv(e,t){for(var n=Cv(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function Ev(e,t){for(var n=Cv(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function Dv(e){return function(){Tv(this,e)}}function Ov(e){return function(){Ev(this,e)}}function kv(e,t){return function(){(t.apply(this,arguments)?Tv:Ev)(this,e)}}function Av(e,t){var n=Sv(e+``);if(arguments.length<2){for(var r=Cv(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?kv:t?Dv:Ov)(n,t))}function jv(){this.textContent=``}function Mv(e){return function(){this.textContent=e}}function Nv(e){return function(){this.textContent=e.apply(this,arguments)??``}}function Pv(e){return arguments.length?this.each(e==null?jv:(typeof e==`function`?Nv:Mv)(e)):this.node().textContent}function Fv(){this.innerHTML=``}function Iv(e){return function(){this.innerHTML=e}}function Lv(e){return function(){this.innerHTML=e.apply(this,arguments)??``}}function Rv(e){return arguments.length?this.each(e==null?Fv:(typeof e==`function`?Lv:Iv)(e)):this.node().innerHTML}function zv(){this.nextSibling&&this.parentNode.appendChild(this)}function Bv(){return this.each(zv)}function Vv(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Hv(){return this.each(Vv)}function Uv(e){var t=typeof e==`function`?e:v_(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function Wv(){return null}function Gv(e,t){var n=typeof e==`function`?e:v_(e),r=t==null?Wv:typeof t==`function`?t:b_(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Kv(){var e=this.parentNode;e&&e.removeChild(this)}function qv(){return this.each(Kv)}function Jv(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Yv(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Xv(e){return this.select(e?Yv:Jv)}function Zv(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Qv(e){return function(t){e.call(this,t,this.__data__)}}function $v(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function ey(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function ty(e,t,n){return function(){var r=this.__on,i,a=Qv(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function ny(e,t,n){var r=$v(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?ty:ey,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function ry(e,t,n){var r=fv(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function iy(e,t){return function(){return ry(this,e,t)}}function ay(e,t){return function(){return ry(this,e,t.apply(this,arguments))}}function oy(e,t){return this.each((typeof t==`function`?ay:iy)(e,t))}function*sy(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var cy=[null];function ly(e,t){this._groups=e,this._parents=t}function uy(){return new ly([[document.documentElement]],cy)}function dy(){return this}ly.prototype=uy.prototype={constructor:ly,select:x_,selectAll:E_,selectChild:M_,selectChildren:I_,filter:L_,data:G_,enter:z_,exit:q_,join:J_,merge:Y_,selection:dy,order:X_,sort:Z_,call:$_,nodes:ev,node:tv,size:nv,empty:rv,each:iv,attr:dv,style:gv,property:xv,classed:Av,text:Pv,html:Rv,raise:Bv,lower:Hv,append:Uv,insert:Gv,remove:qv,clone:Xv,datum:Zv,on:ny,dispatch:oy,[Symbol.iterator]:sy};function fy(e){return typeof e==`string`?new ly([[document.querySelector(e)]],[document.documentElement]):new ly([[e]],cy)}function py(e){let t;for(;t=e.sourceEvent;)e=t;return e}function my(e,t){if(e=py(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var hy={passive:!1},gy={capture:!0,passive:!1};function _y(e){e.stopImmediatePropagation()}function vy(e){e.preventDefault(),e.stopImmediatePropagation()}function yy(e){var t=e.document.documentElement,n=fy(e).on(`dragstart.drag`,vy,gy);`onselectstart`in t?n.on(`selectstart.drag`,vy,gy):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function by(e,t){var n=e.document.documentElement,r=fy(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,vy,gy),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var xy=e=>()=>e;function Sy(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}Sy.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Cy(e){return!e.ctrlKey&&!e.button}function wy(){return this.parentNode}function Ty(e,t){return t??{x:e.x,y:e.y}}function Ey(){return navigator.maxTouchPoints||`ontouchstart`in this}function Dy(){var e=Cy,t=wy,n=Ty,r=Ey,i={},a=c_(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,hy).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(fy(n.view).on(`mousemove.drag`,m,gy).on(`mouseup.drag`,h,gy),yy(n.view),_y(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(vy(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){fy(e.view).on(`mousemove.drag mouseup.drag`,null),by(e.view,l),vy(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(_y(n),c(`start`,n,i[s]))}}function _(e){var t=e.changedTouches,n=t.length,r,a;for(r=0;r<n;++r)(a=i[t[r].identifier])&&(vy(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(_y(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=my(l||r,t),p,m,h;if((h=n.call(e,new Sy(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=my(l||a,t),_=o;break}u.call(r,e,new Sy(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:xy(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:xy(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:xy(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:xy(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function Oy(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function ky(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Ay(){}var jy=.7,My=1/jy,Ny=`\\s*([+-]?\\d+)\\s*`,Py=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,Fy=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,Iy=/^#([0-9a-f]{3,8})$/,Ly=RegExp(`^rgb\\(${Ny},${Ny},${Ny}\\)$`),Ry=RegExp(`^rgb\\(${Fy},${Fy},${Fy}\\)$`),zy=RegExp(`^rgba\\(${Ny},${Ny},${Ny},${Py}\\)$`),By=RegExp(`^rgba\\(${Fy},${Fy},${Fy},${Py}\\)$`),Vy=RegExp(`^hsl\\(${Py},${Fy},${Fy}\\)$`),Hy=RegExp(`^hsla\\(${Py},${Fy},${Fy},${Py}\\)$`),Uy={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Oy(Ay,Jy,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Wy,formatHex:Wy,formatHex8:Gy,formatHsl:Ky,formatRgb:qy,toString:qy});function Wy(){return this.rgb().formatHex()}function Gy(){return this.rgb().formatHex8()}function Ky(){return sb(this).formatHsl()}function qy(){return this.rgb().formatRgb()}function Jy(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=Iy.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Yy(t):n===3?new $y(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Xy(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Xy(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Ly.exec(e))?new $y(t[1],t[2],t[3],1):(t=Ry.exec(e))?new $y(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=zy.exec(e))?Xy(t[1],t[2],t[3],t[4]):(t=By.exec(e))?Xy(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Vy.exec(e))?ob(t[1],t[2]/100,t[3]/100,1):(t=Hy.exec(e))?ob(t[1],t[2]/100,t[3]/100,t[4]):Uy.hasOwnProperty(e)?Yy(Uy[e]):e===`transparent`?new $y(NaN,NaN,NaN,0):null}function Yy(e){return new $y(e>>16&255,e>>8&255,e&255,1)}function Xy(e,t,n,r){return r<=0&&(e=t=n=NaN),new $y(e,t,n,r)}function Zy(e){return e instanceof Ay||(e=Jy(e)),e?(e=e.rgb(),new $y(e.r,e.g,e.b,e.opacity)):new $y}function Qy(e,t,n,r){return arguments.length===1?Zy(e):new $y(e,t,n,r??1)}function $y(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Oy($y,Qy,ky(Ay,{brighter(e){return e=e==null?My:My**+e,new $y(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?jy:jy**+e,new $y(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new $y(ib(this.r),ib(this.g),ib(this.b),rb(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:eb,formatHex:eb,formatHex8:tb,formatRgb:nb,toString:nb}));function eb(){return`#${ab(this.r)}${ab(this.g)}${ab(this.b)}`}function tb(){return`#${ab(this.r)}${ab(this.g)}${ab(this.b)}${ab((isNaN(this.opacity)?1:this.opacity)*255)}`}function nb(){let e=rb(this.opacity);return`${e===1?`rgb(`:`rgba(`}${ib(this.r)}, ${ib(this.g)}, ${ib(this.b)}${e===1?`)`:`, ${e})`}`}function rb(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ib(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ab(e){return e=ib(e),(e<16?`0`:``)+e.toString(16)}function ob(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new lb(e,t,n,r)}function sb(e){if(e instanceof lb)return new lb(e.h,e.s,e.l,e.opacity);if(e instanceof Ay||(e=Jy(e)),!e)return new lb;if(e instanceof lb)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new lb(o,s,c,e.opacity)}function cb(e,t,n,r){return arguments.length===1?sb(e):new lb(e,t,n,r??1)}function lb(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Oy(lb,cb,ky(Ay,{brighter(e){return e=e==null?My:My**+e,new lb(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?jy:jy**+e,new lb(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new $y(fb(e>=240?e-240:e+120,i,r),fb(e,i,r),fb(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new lb(ub(this.h),db(this.s),db(this.l),rb(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=rb(this.opacity);return`${e===1?`hsl(`:`hsla(`}${ub(this.h)}, ${db(this.s)*100}%, ${db(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function ub(e){return e=(e||0)%360,e<0?e+360:e}function db(e){return Math.max(0,Math.min(1,e||0))}function fb(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var pb=e=>()=>e;function mb(e,t){return function(n){return e+n*t}}function hb(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function gb(e){return(e=+e)==1?_b:function(t,n){return n-t?hb(t,n,e):pb(isNaN(t)?n:t)}}function _b(e,t){var n=t-e;return n?mb(e,n):pb(isNaN(e)?t:e)}var vb=function e(t){var n=gb(t);function r(e,t){var r=n((e=Qy(e)).r,(t=Qy(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=_b(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r}(1);function yb(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function bb(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function xb(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=Ab(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Sb(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Cb(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function wb(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=Ab(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var Tb=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Eb=new RegExp(Tb.source,`g`);function Db(e){return function(){return e}}function Ob(e){return function(t){return e(t)+``}}function kb(e,t){var n=Tb.lastIndex=Eb.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=Tb.exec(e))&&(i=Eb.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Cb(r,i)})),n=Eb.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?Ob(c[0].x):Db(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function Ab(e,t){var n=typeof t,r;return t==null||n===`boolean`?pb(t):(n===`number`?Cb:n===`string`?(r=Jy(t))?(t=r,vb):kb:t instanceof Jy?vb:t instanceof Date?Sb:bb(t)?yb:Array.isArray(t)?xb:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?wb:Cb)(e,t)}var jb=180/Math.PI,Mb={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Nb(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*jb,skewX:Math.atan(c)*jb,scaleX:o,scaleY:s}}var Pb;function Fb(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?Mb:Nb(t.a,t.b,t.c,t.d,t.e,t.f)}function Ib(e){return e==null||(Pb||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Pb.setAttribute(`transform`,e),!(e=Pb.transform.baseVal.consolidate()))?Mb:(e=e.matrix,Nb(e.a,e.b,e.c,e.d,e.e,e.f))}function Lb(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Cb(e,i)},{i:c-2,x:Cb(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Cb(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Cb(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Cb(e,n)},{i:s-2,x:Cb(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var Rb=Lb(Fb,`px, `,`px)`,`deg)`),zb=Lb(Ib,`, `,`)`,`)`),Bb=1e-12;function Vb(e){return((e=Math.exp(e))+1/e)/2}function Hb(e){return((e=Math.exp(e))-1/e)/2}function Ub(e){return((e=Math.exp(2*e))-1)/(e+1)}var Wb=function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<Bb)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=Vb(y),c=s/(n*g)*(i*Ub(t*r+y)-Hb(y));return[a+c*d,o+c*f,s*i/Vb(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i}(Math.SQRT2,2,4),Gb=0,Kb=0,qb=0,Jb=1e3,Yb,Xb,Zb=0,Qb=0,$b=0,ex=typeof performance==`object`&&performance.now?performance:Date,tx=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function nx(){return Qb||=(tx(rx),ex.now()+$b)}function rx(){Qb=0}function ix(){this._call=this._time=this._next=null}ix.prototype=ax.prototype={constructor:ix,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?nx():+n)+(t==null?0:+t),!this._next&&Xb!==this&&(Xb?Xb._next=this:Yb=this,Xb=this),this._call=e,this._time=n,ux()},stop:function(){this._call&&(this._call=null,this._time=1/0,ux())}};function ax(e,t,n){var r=new ix;return r.restart(e,t,n),r}function ox(){nx(),++Gb;for(var e=Yb,t;e;)(t=Qb-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Gb}function sx(){Qb=(Zb=ex.now())+$b,Gb=Kb=0;try{ox()}finally{Gb=0,lx(),Qb=0}}function cx(){var e=ex.now(),t=e-Zb;t>Jb&&($b-=t,Zb=e)}function lx(){for(var e,t=Yb,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Yb=n);Xb=e,ux(r)}function ux(e){Gb||(Kb&&=clearTimeout(Kb),e-Qb>24?(e<1/0&&(Kb=setTimeout(sx,e-ex.now()-$b)),qb&&=clearInterval(qb)):(qb||=(Zb=ex.now(),setInterval(cx,Jb)),Gb=1,tx(sx)))}function dx(e,t,n){var r=new ix;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var fx=c_(`start`,`end`,`cancel`,`interrupt`),px=[],mx=0,hx=1,gx=2,_x=3,vx=4,yx=5,bx=6;function xx(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Tx(e,n,{name:t,index:r,group:i,on:fx,tween:px,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:mx})}function Sx(e,t){var n=wx(e,t);if(n.state>mx)throw Error(`too late; already scheduled`);return n}function Cx(e,t){var n=wx(e,t);if(n.state>_x)throw Error(`too late; already running`);return n}function wx(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Tx(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=ax(a,0,n.time);function a(e){n.state=hx,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==hx)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===_x)return dx(o);f.state===vx?(f.state=bx,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=bx,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(dx(function(){n.state===_x&&(n.state=vx,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=gx,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===gx){for(n.state=_x,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=yx,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===yx&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=bx,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function Ex(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>gx&&r.state<yx,r.state=bx,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Dx(e){return this.each(function(){Ex(this,e)})}function Ox(e,t){var n,r;return function(){var i=Cx(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function kx(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Cx(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function Ax(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=wx(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?Ox:kx)(n,e,t))}function jx(e,t,n){var r=e._id;return e.each(function(){var e=Cx(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return wx(e,r).value[t]}}function Mx(e,t){var n;return(typeof t==`number`?Cb:t instanceof Jy?vb:(n=Jy(t))?(t=n,vb):kb)(e,t)}function Nx(e){return function(){this.removeAttribute(e)}}function Px(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Fx(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function Ix(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function Lx(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function Rx(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function zx(e,t){var n=h_(e),r=n===`transform`?zb:Mx;return this.attrTween(e,typeof t==`function`?(n.local?Rx:Lx)(n,r,jx(this,`attr.`+e,t)):t==null?(n.local?Px:Nx)(n):(n.local?Ix:Fx)(n,r,t))}function Bx(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function Vx(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function Hx(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Vx(e,i)),n}return i._value=t,i}function Ux(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Bx(e,i)),n}return i._value=t,i}function Wx(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=h_(e);return this.tween(n,(r.local?Hx:Ux)(r,t))}function Gx(e,t){return function(){Sx(this,e).delay=+t.apply(this,arguments)}}function Kx(e,t){return t=+t,function(){Sx(this,e).delay=t}}function qx(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?Gx:Kx)(t,e)):wx(this.node(),t).delay}function Jx(e,t){return function(){Cx(this,e).duration=+t.apply(this,arguments)}}function Yx(e,t){return t=+t,function(){Cx(this,e).duration=t}}function Xx(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?Jx:Yx)(t,e)):wx(this.node(),t).duration}function Zx(e,t){if(typeof t!=`function`)throw Error();return function(){Cx(this,e).ease=t}}function Qx(e){var t=this._id;return arguments.length?this.each(Zx(t,e)):wx(this.node(),t).ease}function $x(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Cx(this,e).ease=n}}function eS(e){if(typeof e!=`function`)throw Error();return this.each($x(this._id,e))}function tS(e){typeof e!=`function`&&(e=D_(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new AS(r,this._parents,this._name,this._id)}function nS(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new AS(o,this._parents,this._name,this._id)}function rS(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function iS(e,t,n){var r,i,a=rS(t)?Sx:Cx;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function aS(e,t){var n=this._id;return arguments.length<2?wx(this.node(),n).on.on(e):this.each(iS(n,e,t))}function oS(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function sS(){return this.on(`end.remove`,oS(this._id))}function cS(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=b_(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,xx(l[f],t,n,f,l,wx(u,n)));return new AS(a,this._parents,t,n)}function lS(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=w_(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=wx(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&xx(p,t,n,h,f,m);a.push(f),o.push(u)}return new AS(a,o,t,n)}var uS=uy.prototype.constructor;function dS(){return new uS(this._groups,this._parents)}function fS(e,t){var n,r,i;return function(){var a=_v(this,e),o=(this.style.removeProperty(e),_v(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function pS(e){return function(){this.style.removeProperty(e)}}function mS(e,t,n){var r,i=n+``,a;return function(){var o=_v(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function hS(e,t,n){var r,i,a;return function(){var o=_v(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),_v(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function gS(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Cx(this,e),l=c.on,u=c.value[a]==null?s||=pS(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function _S(e,t,n){var r=(e+=``)==`transform`?Rb:Mx;return t==null?this.styleTween(e,fS(e,r)).on(`end.style.`+e,pS(e)):typeof t==`function`?this.styleTween(e,hS(e,r,jx(this,`style.`+e,t))).each(gS(this._id,e)):this.styleTween(e,mS(e,r,t),n).on(`end.style.`+e,null)}function vS(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function yS(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&vS(e,a,n)),r}return a._value=t,a}function bS(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,yS(e,t,n??``))}function xS(e){return function(){this.textContent=e}}function SS(e){return function(){this.textContent=e(this)??``}}function CS(e){return this.tween(`text`,typeof e==`function`?SS(jx(this,`text`,e)):xS(e==null?``:e+``))}function wS(e){return function(t){this.textContent=e.call(this,t)}}function TS(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&wS(r)),t}return r._value=e,r}function ES(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,TS(e))}function DS(){for(var e=this._name,t=this._id,n=jS(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=wx(c,t);xx(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new AS(r,this._parents,e,n)}function OS(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=Cx(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var kS=0;function AS(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function jS(){return++kS}var MS=uy.prototype;AS.prototype={constructor:AS,select:cS,selectAll:lS,selectChild:MS.selectChild,selectChildren:MS.selectChildren,filter:tS,merge:nS,selection:dS,transition:DS,call:MS.call,nodes:MS.nodes,node:MS.node,size:MS.size,empty:MS.empty,each:MS.each,on:aS,attr:zx,attrTween:Wx,style:_S,styleTween:bS,text:CS,textTween:ES,remove:sS,tween:Ax,delay:qx,duration:Xx,ease:Qx,easeVarying:eS,end:OS,[Symbol.iterator]:MS[Symbol.iterator]};function NS(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var PS={time:null,delay:0,duration:250,ease:NS};function FS(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function IS(e){var t,n;e instanceof AS?(t=e._id,e=e._name):(t=jS(),(n=PS).time=nx(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&xx(c,e,t,l,o,n||FS(c,t));return new AS(r,this._parents,e,t)}uy.prototype.interrupt=Dx,uy.prototype.transition=IS;var LS=e=>()=>e;function RS(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function zS(e,t,n){this.k=e,this.x=t,this.y=n}zS.prototype={constructor:zS,scale:function(e){return e===1?this:new zS(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new zS(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var BS=new zS(1,0,0);zS.prototype;function VS(e){e.stopImmediatePropagation()}function HS(e){e.preventDefault(),e.stopImmediatePropagation()}function US(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function WS(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function GS(){return this.__zoom||BS}function KS(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function qS(){return navigator.maxTouchPoints||`ontouchstart`in this}function JS(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function YS(){var e=US,t=WS,n=JS,r=KS,i=qS,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Wb,l=c_(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,GS).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,GS),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(BS.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new zS(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new zS(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new zS(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=fy(this.that).datum();l.call(e,this.that,new RS(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=my(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],Ex(this),s.start();HS(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=fy(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=my(t,i),l=t.clientX,u=t.clientY;yy(t.view),VS(t),a.mouse=[c,this.__zoom.invert(c)],Ex(this),a.start();function d(e){if(HS(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=my(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),by(e.view,a.moved),HS(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=my(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);HS(r),s>0?fy(this).transition().duration(s).call(x,d,c,r):fy(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(VS(t),s=0;s<i;++s)c=r[s],l=my(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),Ex(this),a.start())}}function O(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(HS(e),s=0;s<a;++s)c=i[s],l=my(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function k(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(VS(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=my(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=fy(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:LS(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:LS(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:LS(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:LS([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var Q=(e=>(e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`,e))(Q||{}),XS=(e=>(e.Partial=`partial`,e.Full=`full`,e))(XS||{}),ZS=(e=>(e.Bezier=`default`,e.SimpleBezier=`simple-bezier`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e))(ZS||{}),QS=(e=>(e.Strict=`strict`,e.Loose=`loose`,e))(QS||{}),$S=(e=>(e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`,e))($S||{}),eC=(e=>(e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`,e))(eC||{}),tC=(e=>(e.TopLeft=`top-left`,e.TopCenter=`top-center`,e.TopRight=`top-right`,e.BottomLeft=`bottom-left`,e.BottomCenter=`bottom-center`,e.BottomRight=`bottom-right`,e))(tC||{}),nC=[`INPUT`,`SELECT`,`TEXTAREA`],rC=typeof document<`u`?document:null;function iC(e){let t=e.composedPath?.call(e)?.[0]||e.target,n=typeof t?.hasAttribute==`function`?t.hasAttribute(`contenteditable`):!1,r=typeof t?.closest==`function`?t.closest(`.nokey`):null;return nC.includes(t?.nodeName)||n||!!r}function aC(e){return e.ctrlKey||e.metaKey||e.shiftKey||e.altKey}function oC(e,t,n,r){let i=t.replace(`+`,`
`).replace(`

`,`
+`).split(`
`).map(e=>e.trim().toLowerCase());if(i.length===1)return e.toLowerCase()===t.toLowerCase();r||n.add(e.toLowerCase());let a=i.every((e,t)=>n.has(e)&&Array.from(n.values())[t]===i[t]);return r&&n.delete(e.toLowerCase()),a}function sC(e,t){return n=>{if(!n.code&&!n.key)return!1;let r=cC(n.code,e);return Array.isArray(e)?e.some(e=>oC(n[r],e,t,n.type===`keyup`)):oC(n[r],e,t,n.type===`keyup`)}}function cC(e,t){return t.includes(e)?`code`:`key`}function lC(e,t){let n=E(()=>h(t?.target)??rC),r=T(h(e)===!0),i=!1,a=new Set,o=c(h(e));U(()=>h(e),(e,t)=>{typeof t==`boolean`&&typeof e!=`boolean`&&s(),o=c(e)},{immediate:!0}),n_([`blur`,`contextmenu`],s),i_((...e)=>o(...e),e=>{let n=h(t?.actInsideInputWithModifier)??!0,a=h(t?.preventDefault)??!1;if(i=aC(e),(!i||i&&!n)&&iC(e))return;let o=e.composedPath?.call(e)?.[0]||e.target,s=o?.nodeName===`BUTTON`||o?.nodeName===`A`;!a&&(i||!s)&&e.preventDefault(),r.value=!0},{eventName:`keydown`,target:n}),i_((...e)=>o(...e),e=>{let n=h(t?.actInsideInputWithModifier)??!0;if(r.value){if((!i||i&&!n)&&iC(e))return;i=!1,r.value=!1}},{eventName:`keyup`,target:n});function s(){i=!1,a.clear(),r.value=h(e)===!0}function c(e){return e===null?(s(),()=>!1):typeof e==`boolean`?(s(),r.value=e,()=>!1):Array.isArray(e)||typeof e==`string`?sC(e,a):e}return r}var uC=`vue-flow__node-desc`,dC=`vue-flow__edge-desc`,fC=`vue-flow__aria-live`,pC=[`Enter`,` `,`Escape`],mC={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};function hC(e){return{...e.computedPosition||{x:0,y:0},width:e.dimensions.width||0,height:e.dimensions.height||0}}function gC(e,t){let n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)}function _C(e){return{width:e.offsetWidth,height:e.offsetHeight}}function vC(e,t=0,n=1){return Math.min(Math.max(e,t),n)}function yC(e,t){return{x:vC(e.x,t[0][0],t[1][0]),y:vC(e.y,t[0][1],t[1][1])}}function bC(e){let t=e.getRootNode();return`elementFromPoint`in t?t:window.document}function xC(e){return e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e}function SC(e){return e&&typeof e==`object`&&`id`in e&&`position`in e&&!xC(e)}function CC(e){return SC(e)&&`computedPosition`in e}function wC(e){return!Number.isNaN(e)&&Number.isFinite(e)}function TC(e){return wC(e.width)&&wC(e.height)&&wC(e.x)&&wC(e.y)}function EC(e,t,n){let r={id:e.id.toString(),type:e.type??`default`,dimensions:re({width:0,height:0}),computedPosition:re({z:0,...e.position}),handleBounds:{source:[],target:[]},draggable:void 0,selectable:void 0,connectable:void 0,focusable:void 0,selected:!1,dragging:!1,resizing:!1,initialized:!1,isParent:!1,position:{x:0,y:0},data:Uw(e.data)?e.data:{},events:re(Uw(e.events)?e.events:{})};return Object.assign(t??r,e,{id:e.id.toString(),parentNode:n})}function DC(e,t,n){let r={id:e.id.toString(),type:e.type??t?.type??`default`,source:e.source.toString(),target:e.target.toString(),sourceHandle:e.sourceHandle?.toString(),targetHandle:e.targetHandle?.toString(),updatable:e.updatable??n?.updatable,selectable:e.selectable??n?.selectable,focusable:e.focusable??n?.focusable,data:Uw(e.data)?e.data:{},events:re(Uw(e.events)?e.events:{}),label:e.label??``,interactionWidth:e.interactionWidth??n?.interactionWidth,...n??{}};return Object.assign(t??r,e,{id:e.id.toString()})}function OC(e,t,n,r){let i=typeof e==`string`?e:e.id,a=new Set,o=r===`source`?`target`:`source`;for(let e of n)e[o]===i&&a.add(e[r]);return t.filter(e=>a.has(e.id))}function kC(...e){if(e.length===3){let[t,n,r]=e;return OC(t,n,r,`target`)}let[t,n]=e,r=typeof t==`string`?t:t.id;return n.filter(e=>xC(e)&&e.source===r).map(e=>n.find(t=>SC(t)&&t.id===e.target))}function AC(...e){if(e.length===3){let[t,n,r]=e;return OC(t,n,r,`source`)}let[t,n]=e,r=typeof t==`string`?t:t.id;return n.filter(e=>xC(e)&&e.target===r).map(e=>n.find(t=>SC(t)&&t.id===e.source))}function jC({source:e,sourceHandle:t,target:n,targetHandle:r}){return`vueflow__edge-${e}${t??``}-${n}${r??``}`}function MC(e,t){return t.some(t=>xC(t)&&t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle))}function NC({x:e,y:t},{x:n,y:r,zoom:i}){return{x:e*i+n,y:t*i+r}}function PC({x:e,y:t},{x:n,y:r,zoom:i},a=!1,o=[1,1]){let s={x:(e-n)/i,y:(t-r)/i};return a?Ew(s,o):s}function FC(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}}function IC({x:e,y:t,width:n,height:r}){return{x:e,y:t,x2:e+n,y2:t+r}}function LC({x:e,y:t,x2:n,y2:r}){return{x:e,y:t,width:n-e,height:r-t}}function RC(e,t){return LC(FC(IC(e),IC(t)))}function zC(e){let t={x:1/0,y:1/0,x2:-1/0,y2:-1/0};for(let n=0;n<e.length;n++){let r=e[n];t=FC(t,IC({...r.computedPosition,...r.dimensions}))}return LC(t)}function BC(e,t,n={x:0,y:0,zoom:1},r=!1,i=!1){let a={...PC(t,n),width:t.width/n.zoom,height:t.height/n.zoom},o=[];for(let t of e){let{dimensions:e,selectable:n=!0,hidden:s=!1}=t,c=e.width??t.width??null,l=e.height??t.height??null;if(i&&!n||s)continue;let u=gC(a,hC(t)),d=c===null||l===null,f=r&&u>0,p=(c??0)*(l??0);(d||f||u>=p||t.dragging)&&o.push(t)}return o}function VC(e,t){let n=new Set;if(typeof e==`string`)n.add(e);else if(e.length>=1)for(let t of e)n.add(t.id);return t.filter(e=>n.has(e.source)||n.has(e.target))}function HC(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=Number.parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=Number.parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return zw(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function UC(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=HC(e,n),i=HC(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=HC(e.top??e.y??0,n),i=HC(e.bottom??e.y??0,n),a=HC(e.left??e.x??0,t),o=HC(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function WC(e,t,n,r,i,a){let{x:o,y:s}=NC(e,{x:t,y:n,zoom:r}),{x:c,y:l}=NC({x:e.x+e.width,y:e.y+e.height},{x:t,y:n,zoom:r}),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}function GC(e,t,n,r,i,a=.1){let o=UC(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=vC(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=WC(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}}function KC(e,t){return{x:t.x+e.x,y:t.y+e.y,z:(e.z>t.z?e.z:t.z)+1}}function qC(e,t){if(!e.parentNode)return!1;let n=t.get(e.parentNode);return n?n.selected?!0:qC(n,t):!1}function JC(e,t){return e===void 0?``:typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`}function YC(e){let t=e.ctrlKey&&ww()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t}function XC(e,t,n){return e<t?vC(Math.abs(e-t),1,t)/t:e>n?-vC(Math.abs(e-n),1,t)/t:0}function ZC(e,t,n=15,r=40){return[XC(e.x,r,t.width-r)*n,XC(e.y,r,t.height-r)*n]}function QC(e,t){if(t){let n=e.position.x+e.dimensions.width-t.dimensions.width,r=e.position.y+e.dimensions.height-t.dimensions.height;if(n>0||r>0||e.position.x<0||e.position.y<0){let i={};if(typeof t.style==`function`?i={...t.style(t)}:t.style&&(i={...t.style}),i.width=i.width??`${t.dimensions.width}px`,i.height=i.height??`${t.dimensions.height}px`,n>0)if(typeof i.width==`string`){let e=Number(i.width.replace(`px`,``));i.width=`${e+n}px`}else i.width+=n;if(r>0)if(typeof i.height==`string`){let e=Number(i.height.replace(`px`,``));i.height=`${e+r}px`}else i.height+=r;if(e.position.x<0){let n=Math.abs(e.position.x);if(t.position.x=t.position.x-n,typeof i.width==`string`){let e=Number(i.width.replace(`px`,``));i.width=`${e+n}px`}else i.width+=n;e.position.x=0}if(e.position.y<0){let n=Math.abs(e.position.y);if(t.position.y=t.position.y-n,typeof i.height==`string`){let e=Number(i.height.replace(`px`,``));i.height=`${e+n}px`}else i.height+=n;e.position.y=0}t.dimensions.width=Number(i.width.toString().replace(`px`,``)),t.dimensions.height=Number(i.height.toString().replace(`px`,``)),typeof t.style==`function`?t.style=e=>{let n=t.style;return{...n(e),...i}}:t.style={...t.style,...i}}}}function $C(e,t){let n=e.filter(e=>e.type===`add`||e.type===`remove`);for(let e of n)if(e.type===`add`)t.findIndex(t=>t.id===e.item.id)===-1&&t.push(e.item);else if(e.type===`remove`){let n=t.findIndex(t=>t.id===e.id);n!==-1&&t.splice(n,1)}let r=t.map(e=>e.id);for(let n of t)for(let i of e)if(i.id===n.id)switch(i.type){case`select`:n.selected=i.selected;break;case`position`:if(CC(n)&&(i.position!==void 0&&(n.position=i.position),i.dragging!==void 0&&(n.dragging=i.dragging),n.expandParent&&n.parentNode)){let e=t[r.indexOf(n.parentNode)];e&&CC(e)&&QC(n,e)}break;case`dimensions`:if(CC(n)&&(i.dimensions!==void 0&&(n.dimensions=i.dimensions),i.updateStyle!==void 0&&i.updateStyle&&(n.style={...n.style||{},width:`${i.dimensions?.width}px`,height:`${i.dimensions?.height}px`}),i.resizing!==void 0&&(n.resizing=i.resizing),n.expandParent&&n.parentNode)){let e=t[r.indexOf(n.parentNode)];e&&CC(e)&&(e.dimensions.width&&e.dimensions.height?QC(n,e):M(()=>{QC(n,e)}))}break}return t}function ew(e,t){return{id:e,type:`select`,selected:t}}function tw(e){return{item:e,type:`add`}}function nw(e){return{id:e,type:`remove`}}function rw(e,t,n,r,i){return{id:e,source:t,target:n,sourceHandle:r||null,targetHandle:i||null,type:`remove`}}function iw(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(ew(a.id,e)))}return r}var aw=()=>{};function $(e){let t=new Set,n=aw,r=()=>!1,i=()=>t.size>0||r(),a=e=>{n=e},o=()=>{n=aw},s=e=>{r=e},c=()=>{r=()=>!1},l=e=>{t.delete(e)};return{on:e=>{t.add(e);let n=()=>l(e);return Rg(n),{off:n}},off:l,trigger:r=>{let a=[n];return i()?a.push(...t):e&&a.push(e),Promise.allSettled(a.map(e=>e(r)))},hasListeners:i,listeners:t,setEmitter:a,removeEmitter:o,setHasEmitListeners:s,removeHasEmitListeners:c}}function ow(e,t,n){let r=e;do{if(r&&r.matches(t))return!0;if(r===n)return!1;r=r.parentElement}while(r);return!1}function sw(e,t,n,r){let i=new Map;for(let[a,o]of e)(o.selected||o.id===r)&&(!o.parentNode||!qC(o,e))&&(o.draggable||t&&o.draggable===void 0)&&e.get(a)&&i.set(a,{id:o.id,position:o.position||{x:0,y:0},distance:{x:n.x-o.computedPosition?.x||0,y:n.y-o.computedPosition?.y||0},from:{x:o.computedPosition.x,y:o.computedPosition.y},extent:o.extent,parentNode:o.parentNode,dimensions:{...o.dimensions},expandParent:o.expandParent});return Array.from(i.values())}function cw({id:e,dragItems:t,findNode:n}){let r=[];for(let e of t){let t=n(e.id);t&&r.push(t)}return[e?r.find(t=>t.id===e):r[0],r]}function lw(e){if(Array.isArray(e))switch(e.length){case 1:return[e[0],e[0],e[0],e[0]];case 2:return[e[0],e[1],e[0],e[1]];case 3:return[e[0],e[1],e[2],e[1]];case 4:return e;default:return[0,0,0,0]}return[e,e,e,e]}function uw(e,t,n){let[r,i,a,o]=typeof e==`string`?[0,0,0,0]:lw(e.padding);return n&&n.computedPosition.x!==void 0&&n.computedPosition.y!==void 0&&n.dimensions.width!==void 0&&n.dimensions.height!==void 0?[[n.computedPosition.x+o,n.computedPosition.y+r],[n.computedPosition.x+n.dimensions.width-i,n.computedPosition.y+n.dimensions.height-a]]:!1}function dw(e,t,n,r){let i=e.extent||n;if((i===`parent`||!Array.isArray(i)&&i?.range===`parent`)&&!e.expandParent)if(e.parentNode&&r&&e.dimensions.width&&e.dimensions.height){let t=uw(i,e,r);t&&(i=t)}else t(new bw(vw.NODE_EXTENT_INVALID,e.id)),i=n;else if(Array.isArray(i)){let e=r?.computedPosition.x||0,t=r?.computedPosition.y||0;i=[[i[0][0]+e,i[0][1]+t],[i[1][0]+e,i[1][1]+t]]}else if(i!==`parent`&&i?.range&&Array.isArray(i.range)){let[e,t,n,a]=lw(i.padding),o=r?.computedPosition.x||0,s=r?.computedPosition.y||0;i=[[i.range[0][0]+o+a,i.range[0][1]+s+e],[i.range[1][0]+o-t,i.range[1][1]+s-n]]}return i===`parent`?[[-1/0,-1/0],[1/0,1/0]]:i}function fw({width:e,height:t},n){return[n[0],[n[1][0]-(e||0),n[1][1]-(t||0)]]}function pw(e,t,n,r,i){let a=yC(t,fw(e.dimensions,dw(e,n,r,i)));return{position:{x:a.x-(i?.computedPosition.x||0),y:a.y-(i?.computedPosition.y||0)},computedPosition:a}}function mw(e,t,n=Q.Left,r=!1){let i=(t?.x??0)+e.computedPosition.x,a=(t?.y??0)+e.computedPosition.y,{width:o,height:s}=t??Tw(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case Q.Top:return{x:i+o/2,y:a};case Q.Right:return{x:i+o,y:a+s/2};case Q.Bottom:return{x:i+o/2,y:a+s};case Q.Left:return{x:i,y:a+s/2}}}function hw(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function gw({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,targetWidth:i,targetHeight:a,width:o,height:s,viewport:c}){let l={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+i),y2:Math.max(e.y+r,t.y+a)};l.x===l.x2&&(l.x2+=1),l.y===l.y2&&(l.y2+=1);let u=IC({x:(0-c.x)/c.zoom,y:(0-c.y)/c.zoom,width:o/c.zoom,height:s/c.zoom}),d=Math.max(0,Math.min(u.x2,l.x2)-Math.max(u.x,l.x)),f=Math.max(0,Math.min(u.y2,l.y2)-Math.max(u.y,l.y));return Math.ceil(d*f)>0}function _w(e,t,n=!1){let r=typeof e.zIndex==`number`,i=r?e.zIndex:0,a=t(e.source),o=t(e.target);return!a||!o?0:(n&&(i=r?e.zIndex:Math.max(a.computedPosition.z||0,o.computedPosition.z||0)),i)}var vw=(e=>(e.MISSING_STYLES=`MISSING_STYLES`,e.MISSING_VIEWPORT_DIMENSIONS=`MISSING_VIEWPORT_DIMENSIONS`,e.NODE_INVALID=`NODE_INVALID`,e.NODE_NOT_FOUND=`NODE_NOT_FOUND`,e.NODE_MISSING_PARENT=`NODE_MISSING_PARENT`,e.NODE_TYPE_MISSING=`NODE_TYPE_MISSING`,e.NODE_EXTENT_INVALID=`NODE_EXTENT_INVALID`,e.EDGE_INVALID=`EDGE_INVALID`,e.EDGE_NOT_FOUND=`EDGE_NOT_FOUND`,e.EDGE_SOURCE_MISSING=`EDGE_SOURCE_MISSING`,e.EDGE_TARGET_MISSING=`EDGE_TARGET_MISSING`,e.EDGE_TYPE_MISSING=`EDGE_TYPE_MISSING`,e.EDGE_SOURCE_TARGET_SAME=`EDGE_SOURCE_TARGET_SAME`,e.EDGE_SOURCE_TARGET_MISSING=`EDGE_SOURCE_TARGET_MISSING`,e.EDGE_ORPHANED=`EDGE_ORPHANED`,e.USEVUEFLOW_OPTIONS=`USEVUEFLOW_OPTIONS`,e))(vw||{}),yw={MISSING_STYLES:()=>`It seems that you haven't loaded the necessary styles. Please import '@vue-flow/core/dist/style.css' to ensure that the graph is rendered correctly`,MISSING_VIEWPORT_DIMENSIONS:()=>`The Vue Flow parent container needs a width and a height to render the graph`,NODE_INVALID:e=>`Node is invalid
Node: ${e}`,NODE_NOT_FOUND:e=>`Node not found
Node: ${e}`,NODE_MISSING_PARENT:(e,t)=>`Node is missing a parent
Node: ${e}
Parent: ${t}`,NODE_TYPE_MISSING:e=>`Node type is missing
Type: ${e}`,NODE_EXTENT_INVALID:e=>`Only child nodes can use a parent extent
Node: ${e}`,EDGE_INVALID:e=>`An edge needs a source and a target
Edge: ${e}`,EDGE_SOURCE_MISSING:(e,t)=>`Edge source is missing
Edge: ${e} 
Source: ${t}`,EDGE_TARGET_MISSING:(e,t)=>`Edge target is missing
Edge: ${e} 
Target: ${t}`,EDGE_TYPE_MISSING:e=>`Edge type is missing
Type: ${e}`,EDGE_SOURCE_TARGET_SAME:(e,t,n)=>`Edge source and target are the same
Edge: ${e} 
Source: ${t} 
Target: ${n}`,EDGE_SOURCE_TARGET_MISSING:(e,t,n)=>`Edge source or target is missing
Edge: ${e} 
Source: ${t} 
Target: ${n}`,EDGE_ORPHANED:e=>`Edge was orphaned (suddenly missing source or target) and has been removed
Edge: ${e}`,EDGE_NOT_FOUND:e=>`Edge not found
Edge: ${e}`,USEVUEFLOW_OPTIONS:()=>`The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead`},bw=class extends Error{constructor(e,...t){super(yw[e]?.call(yw,...t)),this.name=`VueFlowError`,this.code=e,this.args=t}};function xw(e){return`clientX`in e}function Sw(e){return`sourceEvent`in e}function Cw(e,t){let n=xw(e),r,i;return n?(r=e.clientX,i=e.clientY):`touches`in e&&e.touches.length>0?(r=e.touches[0].clientX,i=e.touches[0].clientY):`changedTouches`in e&&e.changedTouches.length>0?(r=e.changedTouches[0].clientX,i=e.changedTouches[0].clientY):(r=0,i=0),{x:r-(t?.left??0),y:i-(t?.top??0)}}var ww=()=>typeof navigator<`u`&&(navigator==null?void 0:navigator.userAgent)?.indexOf(`Mac`)>=0;function Tw(e){return{width:e.dimensions?.width??e.width??0,height:e.dimensions?.height??e.height??0}}function Ew(e,t=[1,1]){return{x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}}var Dw=()=>!0;function Ow(e){e?.classList.remove(`valid`,`connecting`,`vue-flow__handle-valid`,`vue-flow__handle-connecting`)}function kw(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())gC(i,hC(e))>0&&r.push(e);return r}var Aw=250;function jw(e,t,n,r){let i=[],a=1/0,o=kw(e,n,t+Aw);for(let n of o){let o=[...n.handleBounds?.source??[],...n.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=mw(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l<a?(i=[{...s,x:o,y:c}],a=l):l===a&&i.push({...s,x:o,y:c}))}}if(!i.length)return null;if(i.length>1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function Mw(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=Dw},u,d,f,p){let m=a===`target`,h=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:g,y:_}=Cw(e),v=o.elementFromPoint(g,_),y=v?.classList.contains(`${s}-flow__handle`)?v:h,b={handleDomNode:y,isValid:!1,connection:null,toHandle:null};if(y){let e=Nw(void 0,y),t=y.getAttribute(`data-nodeid`),a=y.getAttribute(`data-handleid`),o=y.classList.contains(`connectable`),s=y.classList.contains(`connectableend`);if(!t||!e)return b;let c={source:m?t:r,sourceHandle:m?a:i,target:m?r:t,targetHandle:m?i:a};b.connection=c,b.isValid=o&&s&&(n===QS.Strict?m&&e===`source`||!m&&e===`target`:t!==r||a!==i)&&l(c,{nodes:d,edges:u,sourceNode:f(c.source),targetNode:f(c.target)}),b.toHandle=Iw(t,e,a,p,n,!0)}return b}function Nw(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function Pw(e,t){let n=null;return t?n=`valid`:e&&!t&&(n=`invalid`),n}function Fw(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}function Iw(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===QS.Strict?o.handleBounds?.[t]:[...o.handleBounds?.source??[],...o.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...mw(o,c,c.position,!0)}:c}var Lw={[Q.Left]:Q.Right,[Q.Right]:Q.Left,[Q.Top]:Q.Bottom,[Q.Bottom]:Q.Top},Rw=[`production`,`prod`];function zw(e,...t){Bw()&&console.warn(`[Vue Flow]: ${e}`,...t)}function Bw(){return!Rw.includes(`production`)}function Vw(e,t,n,r,i){let a=t.querySelectorAll(`.vue-flow__handle.${e}`);return a?.length?Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,..._C(t)}}):null}function Hw(e,t,n,r,i,a=!1,o){i.value=!1,e.selected?(a||e.selected&&t)&&(r([e]),M(()=>{o.blur()})):n([e])}function Uw(e){return N(e)!==void 0}function Ww(e,t,n,r){if(!e||!e.source||!e.target)return n(new bw(vw.EDGE_INVALID,e?.id??`[ID UNKNOWN]`)),!1;let i;return i=xC(e)?e:{...e,id:jC(e)},i=DC(i,void 0,r),MC(i,t)?!1:i}function Gw(e,t,n,r,i){if(!t.source||!t.target)return i(new bw(vw.EDGE_INVALID,e.id)),!1;if(!n)return i(new bw(vw.EDGE_NOT_FOUND,e.id)),!1;let{id:a,...o}=e;return{...o,id:r?jC(t):a,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle}}function Kw(e,t,n){let r={},i=[];for(let a=0;a<e.length;++a){let o=e[a];if(!SC(o)){n(new bw(vw.NODE_INVALID,o?.id));continue}let s=EC(o,t(o.id),o.parentNode);o.parentNode&&(r[o.parentNode]=!0),i[a]=s}for(let e of i){let a=t(e.parentNode)||i.find(t=>t.id===e.parentNode);e.parentNode&&!a&&n(new bw(vw.NODE_MISSING_PARENT,e.id,e.parentNode)),(e.parentNode||r[e.id])&&(r[e.id]&&(e.isParent=!0),a&&(a.isParent=!0))}return i}function qw(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function Jw(e,t,n){e.clear();for(let t of n){let{source:n,target:r,sourceHandle:i=null,targetHandle:a=null}=t,o={edgeId:t.id,source:n,target:r,sourceHandle:i,targetHandle:a},s=`${n}-${i}--${r}-${a}`;qw(`source`,o,`${r}-${a}--${n}-${i}`,e,n,i),qw(`target`,o,s,e,r,a)}}function Yw(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Xw(e,t,n,r,i,a,o,s){let c=[];for(let l of e){let e=xC(l)?l:Ww(l,s,i,a);if(!e)continue;let u=n(e.source),d=n(e.target);if(!u||!d){i(new bw(vw.EDGE_SOURCE_TARGET_MISSING,e.id,e.source,e.target));continue}if(!u){i(new bw(vw.EDGE_SOURCE_MISSING,e.id,e.source));continue}if(!d){i(new bw(vw.EDGE_TARGET_MISSING,e.id,e.target));continue}if(t&&!t(e,{edges:s,nodes:o,sourceNode:u,targetNode:d})){i(new bw(vw.EDGE_INVALID,e.id));continue}let f=r(e.id);c.push({...DC(e,f,a),sourceNode:u,targetNode:d})}return c}var Zw=Symbol(`vueFlow`),Qw=Symbol(`nodeId`),$w=Symbol(`nodeRef`),eT=Symbol(`edgeId`),tT=Symbol(`edgeRef`),nT=Symbol(`slots`);function rT(e){let{vueFlowRef:t,snapToGrid:n,snapGrid:r,noDragClassName:i,nodeLookup:a,nodeExtent:o,nodeDragThreshold:s,viewport:c,autoPanOnNodeDrag:l,autoPanSpeed:u,nodesDraggable:d,panBy:f,findNode:p,multiSelectionActive:m,nodesSelectionActive:g,selectNodesOnDrag:_,removeSelectedElements:v,addSelectedNodes:y,updateNodePositions:b,emits:x}=dE(),{onStart:S,onDrag:C,onStop:w,onClick:E,el:D,disabled:O,id:k,selectable:A,dragHandle:j}=e,M=T(!1),N=[],P,F=null,I={x:void 0,y:void 0},L={x:0,y:0},R=null,z=!1,B=!1,V=0,H=!1,W=oT(),ee=({x:e,y:t})=>{I={x:e,y:t};let i=!1;if(N=N.map(a=>{let s={x:e-a.distance.x,y:t-a.distance.y},{computedPosition:c}=pw(a,n.value?Ew(s,r.value):s,x.error,o.value,a.parentNode?p(a.parentNode):void 0);return i=i||a.position.x!==c.x||a.position.y!==c.y,a.position=c,a}),B||=i,i&&(b(N,!0,!0),M.value=!0,R)){let[e,t]=cw({id:k,dragItems:N,findNode:p});C({event:R,node:e,nodes:t})}},te=()=>{if(!F)return;let[e,t]=ZC(L,F,u.value);if(e!==0||t!==0){let n={x:(I.x??0)-e/c.value.zoom,y:(I.y??0)-t/c.value.zoom};f({x:e,y:t})&&ee(n)}V=requestAnimationFrame(te)},ne=(e,t)=>{z=!0;let n=p(k);!_.value&&!m.value&&n&&(n.selected||v()),n&&h(A)&&_.value&&Hw(n,m.value,y,v,g,!1,t);let r=W(e.sourceEvent);if(I=r,N=sw(a.value,d.value,r,k),N.length){let[t,n]=cw({id:k,dragItems:N,findNode:p});S({event:e.sourceEvent,node:t,nodes:n})}},G=(e,n)=>{e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||(B=!1,s.value===0&&ne(e,n),I=W(e.sourceEvent),F=t.value?.getBoundingClientRect()||null,L=Cw(e.sourceEvent,F))},re=(e,t)=>{let n=W(e.sourceEvent);if(!H&&z&&l.value&&(H=!0,te()),!z){let r=n.xSnapped-(I.x??0),i=n.ySnapped-(I.y??0);Math.sqrt(r*r+i*i)>s.value&&ne(e,t)}(I.x!==n.xSnapped||I.y!==n.ySnapped)&&N.length&&z&&(R=e.sourceEvent,L=Cw(e.sourceEvent,F),ee(n))},ie=e=>{let t=!1;if(!z&&!M.value&&!m.value){let n=e.sourceEvent,r=W(n),i=r.xSnapped-(I.x??0),a=r.ySnapped-(I.y??0),o=Math.sqrt(i*i+a*a);o!==0&&o<=s.value&&(E?.(n),t=!0)}if(N.length&&!t){B&&=(b(N,!1,!1),!1);let[t,n]=cw({id:k,dragItems:N,findNode:p});w({event:e.sourceEvent,node:t,nodes:n})}N=[],M.value=!1,H=!1,z=!1,I={x:void 0,y:void 0},cancelAnimationFrame(V)};return U([()=>h(O),D],([e,t],n,r)=>{if(t){let n=fy(t);e||(P=Dy().on(`start`,e=>G(e,t)).on(`drag`,e=>re(e,t)).on(`end`,e=>ie(e)).filter(e=>{let n=e.target,r=h(j);return!e.button&&(!i.value||!ow(n,`.${i.value}`,t)&&(!r||ow(n,r,t)))}),n.call(P)),r(()=>{n.on(`.drag`,null),P&&(P.on(`start`,null),P.on(`drag`,null),P.on(`end`,null))})}}),M}function iT(){return{doubleClick:$(),click:$(),mouseEnter:$(),mouseMove:$(),mouseLeave:$(),contextMenu:$(),updateStart:$(),update:$(),updateEnd:$()}}function aT(e,t){let n=iT();return n.doubleClick.on(n=>{var r,i;t.edgeDoubleClick(n),(i=(r=e.events)?.doubleClick)==null||i.call(r,n)}),n.click.on(n=>{var r,i;t.edgeClick(n),(i=(r=e.events)?.click)==null||i.call(r,n)}),n.mouseEnter.on(n=>{var r,i;t.edgeMouseEnter(n),(i=(r=e.events)?.mouseEnter)==null||i.call(r,n)}),n.mouseMove.on(n=>{var r,i;t.edgeMouseMove(n),(i=(r=e.events)?.mouseMove)==null||i.call(r,n)}),n.mouseLeave.on(n=>{var r,i;t.edgeMouseLeave(n),(i=(r=e.events)?.mouseLeave)==null||i.call(r,n)}),n.contextMenu.on(n=>{var r,i;t.edgeContextMenu(n),(i=(r=e.events)?.contextMenu)==null||i.call(r,n)}),n.updateStart.on(n=>{var r,i;t.edgeUpdateStart(n),(i=(r=e.events)?.updateStart)==null||i.call(r,n)}),n.update.on(n=>{var r,i;t.edgeUpdate(n),(i=(r=e.events)?.update)==null||i.call(r,n)}),n.updateEnd.on(n=>{var r,i;t.edgeUpdateEnd(n),(i=(r=e.events)?.updateEnd)==null||i.call(r,n)}),Object.entries(n).reduce((e,[t,n])=>(e.emit[t]=n.trigger,e.on[t]=n.on,e),{emit:{},on:{}})}function oT(){let{viewport:e,snapGrid:t,snapToGrid:n,vueFlowRef:r}=dE();return i=>{let a=r.value?.getBoundingClientRect()??{left:0,top:0},{x:o,y:s}=Cw(Sw(i)?i.sourceEvent:i,a),c=PC({x:o,y:s},e.value),{x:l,y:u}=n.value?Ew(c,t.value):c;return{xSnapped:l,ySnapped:u,...c}}}function sT(){return!0}function cT({handleId:e,nodeId:t,type:n,isValidConnection:r,edgeUpdaterType:i,onEdgeUpdate:a,onEdgeUpdateEnd:o}){let{id:s,vueFlowRef:c,connectionMode:l,connectionRadius:u,connectOnClick:d,connectionClickStartHandle:f,nodesConnectable:p,autoPanOnConnect:m,autoPanSpeed:g,findNode:_,panBy:v,startConnection:y,updateConnection:b,endConnection:x,emits:S,viewport:C,edges:w,nodes:T,isValidConnection:E,nodeLookup:D}=dE(),O=null,k=!1,A=null;function j(d){let f=h(n)===`target`,p=xw(d),j=bC(d.target),M=d.currentTarget;if(M&&(p&&d.button===0||!p)){let n=function(n){U=Cw(n,B),F=jw(PC(U,C.value,!1,[1,1]),u.value,D.value,te),W||=(ee(),!0);let r=Mw(n,{handle:F,connectionMode:l.value,fromNodeId:h(t),fromHandleId:h(e),fromType:f?`target`:`source`,isValidConnection:P,doc:j,lib:`vue`,flowId:s,nodeLookup:D.value},w.value,T.value,_,D.value);A=r.handleDomNode,O=r.connection,k=Fw(!!F,r.isValid);let i={...re,isValid:k,to:r.toHandle&&k?NC({x:r.toHandle.x,y:r.toHandle.y},C.value):U,toHandle:r.toHandle,toPosition:k&&r.toHandle?r.toHandle.position:Lw[te.position],toNode:r.toHandle?D.value.get(r.toHandle.nodeId):null};if(k&&F&&re?.toHandle&&i.toHandle&&re.toHandle.type===i.toHandle.type&&re.toHandle.nodeId===i.toHandle.nodeId&&re.toHandle.id===i.toHandle.id&&re.to.x===i.to.x&&re.to.y===i.to.y)return;let a=F??r.toHandle;if(b(a&&k?NC({x:a.x,y:a.y},C.value):U,r.toHandle,Pw(!!a,k)),re=i,!F&&!k&&!A)return Ow(H);O&&O.source!==O.target&&A&&(Ow(H),H=A,A.classList.add(`connecting`,`vue-flow__handle-connecting`),A.classList.toggle(`valid`,!!k),A.classList.toggle(`vue-flow__handle-valid`,!!k))},p=function(e){`touches`in e&&e.touches.length>0||((F||A)&&O&&k&&(a?a(e,O):S.connect(O)),S.connectEnd(e),i&&o?.(e),Ow(H),cancelAnimationFrame(I),x(e),W=!1,k=!1,O=null,A=null,j.removeEventListener(`mousemove`,n),j.removeEventListener(`mouseup`,p),j.removeEventListener(`touchmove`,n),j.removeEventListener(`touchend`,p))},N=_(h(t)),P=h(r)||E.value||sT;!P&&N&&(P=(f?N.isValidSourcePos:N.isValidTargetPos)||sT);let F,I=0,{x:L,y:R}=Cw(d),z=Nw(h(i),M),B=c.value?.getBoundingClientRect();if(!B||!z)return;let V=Iw(h(t),z,h(e),D.value,l.value);if(!V)return;let H,U=Cw(d,B),W=!1,ee=()=>{if(!m.value)return;let[e,t]=ZC(U,B,g.value);v({x:e,y:t}),I=requestAnimationFrame(ee)},te={...V,nodeId:h(t),type:z,position:V.position},ne=D.value.get(h(t)),G={inProgress:!0,isValid:null,from:mw(ne,te,Q.Left,!0),fromHandle:te,fromPosition:te.position,fromNode:ne,to:U,toHandle:null,toPosition:Lw[te.position],toNode:null};y({nodeId:h(t),id:h(e),type:z,position:M?.getAttribute(`data-handlepos`)||Q.Top,...U},{x:L-B.left,y:R-B.top}),S.connectStart({event:d,nodeId:h(t),handleId:h(e),handleType:z});let re=G;j.addEventListener(`mousemove`,n),j.addEventListener(`mouseup`,p),j.addEventListener(`touchmove`,n),j.addEventListener(`touchend`,p)}}function M(i){if(!d.value)return;let a=h(n)===`target`;if(!f.value){S.clickConnectStart({event:i,nodeId:h(t),handleId:h(e)}),y({nodeId:h(t),type:h(n),id:h(e),position:Q.Top,...Cw(i)},void 0,!0);return}let o=h(r)||E.value||sT,c=_(h(t));if(!o&&c&&(o=(a?c.isValidSourcePos:c.isValidTargetPos)||sT),c&&(c.connectable===void 0?p.value:c.connectable)===!1)return;let u=bC(i.target),m=Mw(i,{handle:{nodeId:h(t),id:h(e),type:h(n),position:Q.Top,...Cw(i)},connectionMode:l.value,fromNodeId:f.value.nodeId,fromHandleId:f.value.id??null,fromType:f.value.type,isValidConnection:o,doc:u,lib:`vue`,flowId:s,nodeLookup:D.value},w.value,T.value,_,D.value),g=m.connection?.source===m.connection?.target;m.isValid&&m.connection&&!g&&S.connect(m.connection),S.clickConnectEnd(i),x(i,!0)}return{handlePointerDown:j,handleClick:M}}function lT(){return w(Qw,``)}function uT(e){let t=e??lT()??``,n=w($w,m(null)),{findNode:r,edges:i,emits:a}=dE(),o=r(t);return o||a.error(new bw(vw.NODE_NOT_FOUND,t)),{id:t,nodeEl:n,node:o,parentNode:E(()=>r(o.parentNode)),connectedEdges:E(()=>VC([o],i.value))}}function dT(){return{doubleClick:$(),click:$(),mouseEnter:$(),mouseMove:$(),mouseLeave:$(),contextMenu:$(),dragStart:$(),drag:$(),dragStop:$()}}function fT(e,t){let n=dT();return n.doubleClick.on(n=>{var r,i;t.nodeDoubleClick(n),(i=(r=e.events)?.doubleClick)==null||i.call(r,n)}),n.click.on(n=>{var r,i;t.nodeClick(n),(i=(r=e.events)?.click)==null||i.call(r,n)}),n.mouseEnter.on(n=>{var r,i;t.nodeMouseEnter(n),(i=(r=e.events)?.mouseEnter)==null||i.call(r,n)}),n.mouseMove.on(n=>{var r,i;t.nodeMouseMove(n),(i=(r=e.events)?.mouseMove)==null||i.call(r,n)}),n.mouseLeave.on(n=>{var r,i;t.nodeMouseLeave(n),(i=(r=e.events)?.mouseLeave)==null||i.call(r,n)}),n.contextMenu.on(n=>{var r,i;t.nodeContextMenu(n),(i=(r=e.events)?.contextMenu)==null||i.call(r,n)}),n.dragStart.on(n=>{var r,i;t.nodeDragStart(n),(i=(r=e.events)?.dragStart)==null||i.call(r,n)}),n.drag.on(n=>{var r,i;t.nodeDrag(n),(i=(r=e.events)?.drag)==null||i.call(r,n)}),n.dragStop.on(n=>{var r,i;t.nodeDragStop(n),(i=(r=e.events)?.dragStop)==null||i.call(r,n)}),Object.entries(n).reduce((e,[t,n])=>(e.emit[t]=n.trigger,e.on[t]=n.on,e),{emit:{},on:{}})}function pT(){let{getSelectedNodes:e,nodeExtent:t,updateNodePositions:n,findNode:r,snapGrid:i,snapToGrid:a,nodesDraggable:o,emits:s}=dE();return(c,l=!1)=>{let u=a.value?i.value[0]:5,d=a.value?i.value[1]:5,f=l?4:1,p=c.x*u*f,m=c.y*d*f,h=[];for(let n of e.value)if(n.draggable||o&&n.draggable===void 0){let{position:e}=pw(n,{x:n.computedPosition.x+p,y:n.computedPosition.y+m},s.error,t.value,n.parentNode?r(n.parentNode):void 0);h.push({id:n.id,position:e,from:n.position,distance:{x:c.x,y:c.y},dimensions:n.dimensions})}n(h,!0,!1)}}var mT=.1,hT=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2;function gT(){return zw(`Viewport not initialized yet.`),Promise.resolve(!1)}var _T={zoomIn:gT,zoomOut:gT,zoomTo:gT,fitView:gT,setCenter:gT,fitBounds:gT,project:e=>e,screenToFlowCoordinate:e=>e,flowToScreenCoordinate:e=>e,setViewport:gT,setTransform:gT,getViewport:()=>({x:0,y:0,zoom:1}),getTransform:()=>({x:0,y:0,zoom:1}),viewportInitialized:!1};function vT(e){function t(t,n){return new Promise(r=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate(n?.interpolate===`linear`?Ab:Wb).scaleBy(yT(e.d3Selection,n?.duration,n?.ease,()=>{r(!0)}),t):r(!1)})}function n(t,n,r,i){return new Promise(a=>{var o;let{x:s,y:c}=yC({x:-t,y:-n},e.translateExtent),l=BS.translate(-s,-c).scale(r);e.d3Selection&&e.d3Zoom?(o=e.d3Zoom)==null||o.interpolate(i?.interpolate===`linear`?Ab:Wb).transform(yT(e.d3Selection,i?.duration,i?.ease,()=>{a(!0)}),l):a(!1)})}return E(()=>e.d3Zoom&&e.d3Selection&&e.dimensions.width&&e.dimensions.height?{viewportInitialized:!0,zoomIn:e=>t(1.2,e),zoomOut:e=>t(1/1.2,e),zoomTo:(t,n)=>new Promise(r=>{e.d3Selection&&e.d3Zoom?e.d3Zoom.interpolate(n?.interpolate===`linear`?Ab:Wb).scaleTo(yT(e.d3Selection,n?.duration,n?.ease,()=>{r(!0)}),t):r(!1)}),setViewport:(e,t)=>n(e.x,e.y,e.zoom,t),setTransform:(e,t)=>n(e.x,e.y,e.zoom,t),getViewport:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),getTransform:()=>({x:e.viewport.x,y:e.viewport.y,zoom:e.viewport.zoom}),fitView:(t={padding:mT,includeHiddenNodes:!1,duration:0})=>{let r=[];for(let n of e.nodes)n.dimensions.width&&n.dimensions.height&&(t?.includeHiddenNodes||!n.hidden)&&(!t.nodes?.length||t.nodes?.length&&t.nodes.includes(n.id))&&r.push(n);if(!r.length)return Promise.resolve(!1);let{x:i,y:a,zoom:o}=GC(zC(r),e.dimensions.width,e.dimensions.height,t.minZoom??e.minZoom,t.maxZoom??e.maxZoom,t.padding??mT);return n(i,a,o,t)},setCenter:(t,r,i)=>{let a=i?.zoom===void 0?e.maxZoom:i.zoom;return n(e.dimensions.width/2-t*a,e.dimensions.height/2-r*a,a,i)},fitBounds:(t,r={padding:mT})=>{let{x:i,y:a,zoom:o}=GC(t,e.dimensions.width,e.dimensions.height,e.minZoom,e.maxZoom,r.padding??mT);return n(i,a,o,r)},project:t=>PC(t,e.viewport,e.snapToGrid,e.snapGrid),screenToFlowCoordinate:t=>{if(e.vueFlowRef){let{x:n,y:r}=e.vueFlowRef.getBoundingClientRect();return PC({x:t.x-n,y:t.y-r},e.viewport,e.snapToGrid,e.snapGrid)}return{x:0,y:0}},flowToScreenCoordinate:t=>{if(e.vueFlowRef){let{x:n,y:r}=e.vueFlowRef.getBoundingClientRect();return NC({x:t.x+n,y:t.y+r},e.viewport)}return{x:0,y:0}}}:_T)}function yT(e,t=0,n=hT,r=()=>{}){let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e}function bT(e,t,n){let r=k(!0);return r.run(()=>{r.run(()=>{let t,r,i=!!(n.nodes.value.length||n.edges.value.length);t=Xg([e.modelValue,()=>e.modelValue?.value?.length],([e])=>{e&&Array.isArray(e)&&(r?.pause(),n.setElements(e),!r&&!i&&e.length?i=!0:r?.resume())}),r=Xg([n.nodes,n.edges,()=>n.edges.value.length,()=>n.nodes.value.length],([n,r])=>{e.modelValue?.value&&Array.isArray(e.modelValue.value)&&(t?.pause(),e.modelValue.value=[...n,...r],M(()=>{t?.resume()}))},{immediate:i}),v(()=>{t?.stop(),r?.stop()})}),r.run(()=>{let t,r,i=!!n.nodes.value.length;t=Xg([e.nodes,()=>e.nodes?.value?.length],([e])=>{e&&Array.isArray(e)&&(r?.pause(),n.setNodes(e),!r&&!i&&e.length?i=!0:r?.resume())}),r=Xg([n.nodes,()=>n.nodes.value.length],([n])=>{e.nodes?.value&&Array.isArray(e.nodes.value)&&(t?.pause(),e.nodes.value=[...n],M(()=>{t?.resume()}))},{immediate:i}),v(()=>{t?.stop(),r?.stop()})}),r.run(()=>{let t,r,i=!!n.edges.value.length;t=Xg([e.edges,()=>e.edges?.value?.length],([e])=>{e&&Array.isArray(e)&&(r?.pause(),n.setEdges(e),!r&&!i&&e.length?i=!0:r?.resume())}),r=Xg([n.edges,()=>n.edges.value.length],([n])=>{e.edges?.value&&Array.isArray(e.edges.value)&&(t?.pause(),e.edges.value=[...n],M(()=>{t?.resume()}))},{immediate:i}),v(()=>{t?.stop(),r?.stop()})}),r.run(()=>{U(()=>t.minZoom,()=>{t.minZoom&&Uw(t.minZoom)&&n.setMinZoom(t.minZoom)},{immediate:!0})}),r.run(()=>{U(()=>t.maxZoom,()=>{t.maxZoom&&Uw(t.maxZoom)&&n.setMaxZoom(t.maxZoom)},{immediate:!0})}),r.run(()=>{U(()=>t.translateExtent,()=>{t.translateExtent&&Uw(t.translateExtent)&&n.setTranslateExtent(t.translateExtent)},{immediate:!0})}),r.run(()=>{U(()=>t.nodeExtent,()=>{t.nodeExtent&&Uw(t.nodeExtent)&&n.setNodeExtent(t.nodeExtent)},{immediate:!0})}),r.run(()=>{U(()=>t.applyDefault,()=>{Uw(t.applyDefault)&&(n.applyDefault.value=t.applyDefault)},{immediate:!0})}),r.run(()=>{let e=async e=>{let r=e;typeof t.autoConnect==`function`&&(r=await t.autoConnect(e)),r!==!1&&n.addEdges([r])};U(()=>t.autoConnect,()=>{Uw(t.autoConnect)&&(n.autoConnect.value=t.autoConnect)},{immediate:!0}),U(n.autoConnect,(t,r,i)=>{t?n.onConnect(e):n.hooks.value.connect.off(e),i(()=>{n.hooks.value.connect.off(e)})},{immediate:!0})}),(()=>{let e=[`id`,`modelValue`,`translateExtent`,`nodeExtent`,`edges`,`nodes`,`maxZoom`,`minZoom`,`applyDefault`,`autoConnect`];for(let i of Object.keys(t)){let o=i;if(!e.includes(o)){let e=s(()=>t[o]),i=n[o];a(i)&&r.run(()=>{U(e,e=>{Uw(e)&&(i.value=e)},{immediate:!0})})}}})()}),()=>r.stop()}function xT(){return{edgesChange:$(),nodesChange:$(),nodeDoubleClick:$(),nodeClick:$(),nodeMouseEnter:$(),nodeMouseMove:$(),nodeMouseLeave:$(),nodeContextMenu:$(),nodeDragStart:$(),nodeDrag:$(),nodeDragStop:$(),nodesInitialized:$(),miniMapNodeClick:$(),miniMapNodeDoubleClick:$(),miniMapNodeMouseEnter:$(),miniMapNodeMouseMove:$(),miniMapNodeMouseLeave:$(),connect:$(),connectStart:$(),connectEnd:$(),clickConnectStart:$(),clickConnectEnd:$(),paneReady:$(),init:$(),move:$(),moveStart:$(),moveEnd:$(),selectionDragStart:$(),selectionDrag:$(),selectionDragStop:$(),selectionContextMenu:$(),selectionStart:$(),selectionEnd:$(),viewportChangeStart:$(),viewportChange:$(),viewportChangeEnd:$(),paneScroll:$(),paneClick:$(),paneContextMenu:$(),paneMouseEnter:$(),paneMouseMove:$(),paneMouseLeave:$(),edgeContextMenu:$(),edgeMouseEnter:$(),edgeMouseMove:$(),edgeMouseLeave:$(),edgeDoubleClick:$(),edgeClick:$(),edgeUpdateStart:$(),edgeUpdate:$(),edgeUpdateEnd:$(),updateNodeInternals:$(),error:$(e=>zw(e.message))}}function ST(e,t){let n=x();_(()=>{for(let[n,i]of Object.entries(t.value))i.setEmitter(t=>{e(n,t)}),Rg(i.removeEmitter),i.setHasEmitListeners(()=>r(n)),Rg(i.removeHasEmitListeners)});function r(e){let t=CT(e);return!!n?.vnode.props?.[t]}}function CT(e){let[t,...n]=e.split(`:`);return`on${t.replace(/(?:^|-)(\w)/g,(e,t)=>t.toUpperCase())}${n.length?`:${n.join(`:`)}`:``}`}function wT(){return{vueFlowRef:null,viewportRef:null,nodes:[],edges:[],connectionLookup:new Map,nodeTypes:{},edgeTypes:{},initialized:!1,dimensions:{width:0,height:0},viewport:{x:0,y:0,zoom:1},d3Zoom:null,d3Selection:null,d3ZoomHandler:null,minZoom:.5,maxZoom:2,translateExtent:[[-1/0,-1/0],[1/0,1/0]],nodeExtent:[[-1/0,-1/0],[1/0,1/0]],selectionMode:XS.Full,paneDragging:!1,preventScrolling:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,panOnScroll:!1,panOnScrollSpeed:.5,panOnScrollMode:eC.Free,paneClickDistance:0,panOnDrag:!0,edgeUpdaterRadius:10,onlyRenderVisibleElements:!1,defaultViewport:{x:0,y:0,zoom:1},nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,defaultMarkerColor:`#b1b1b7`,connectionLineStyle:{},connectionLineType:null,connectionLineOptions:{type:ZS.Bezier,style:{}},connectionMode:QS.Loose,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectionPosition:{x:NaN,y:NaN},connectionRadius:20,connectOnClick:!0,connectionStatus:null,isValidConnection:null,snapGrid:[15,15],snapToGrid:!1,edgesUpdatable:!1,edgesFocusable:!0,nodesFocusable:!0,nodesConnectable:!0,nodesDraggable:!0,nodeDragThreshold:1,elementsSelectable:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,selectionKeyCode:`Shift`,multiSelectionKeyCode:ww()?`Meta`:`Control`,zoomActivationKeyCode:ww()?`Meta`:`Control`,deleteKeyCode:`Backspace`,panActivationKeyCode:`Space`,hooks:xT(),applyDefault:!0,autoConnect:!1,fitViewOnInit:!1,fitViewOnInitDone:!1,noDragClassName:`nodrag`,noWheelClassName:`nowheel`,noPanClassName:`nopan`,defaultEdgeOptions:void 0,elevateEdgesOnSelect:!1,elevateNodesOnSelect:!0,autoPanOnNodeDrag:!0,autoPanOnConnect:!0,autoPanSpeed:15,disableKeyboardA11y:!1,ariaLiveMessage:``}}var TT=[`id`,`vueFlowRef`,`viewportRef`,`initialized`,`modelValue`,`nodes`,`edges`,`maxZoom`,`minZoom`,`translateExtent`,`hooks`,`defaultEdgeOptions`];function ET(e,t,n){let r=vT(e),i=t=>{let n=t??[];e.hooks.updateNodeInternals.trigger(n)},a=t=>AC(t,e.nodes,e.edges),o=t=>kC(t,e.nodes,e.edges),s=t=>VC(t,e.edges),c=({id:t,type:n,nodeId:r})=>{let i=t?`-${n}-${t}`:`-${n}`;return Array.from(e.connectionLookup.get(`${r}${i}`)?.values()??[])},l=e=>{if(e)return t.value.get(e)},u=e=>{if(e)return n.value.get(e)},d=(t,n,r)=>{let i=[];for(let e of t){let t={id:e.id,type:`position`,dragging:r,from:e.from};if(n&&(t.position=e.position,e.parentNode)){let n=l(e.parentNode);t.position={x:t.position.x-(n?.computedPosition?.x??0),y:t.position.y-(n?.computedPosition?.y??0)}}i.push(t)}i?.length&&e.hooks.nodesChange.trigger(i)},f=t=>{if(!e.vueFlowRef)return;let n=e.vueFlowRef.querySelector(`.vue-flow__transformationpane`);if(!n)return;let i=window.getComputedStyle(n),{m22:a}=new window.DOMMatrixReadOnly(i.transform),o=[];for(let e of t){let t=e,n=l(t.id);if(n){let e=_C(t.nodeElement);if(e.width&&e.height&&(n.dimensions.width!==e.width||n.dimensions.height!==e.height||t.forceUpdate)){let r=t.nodeElement.getBoundingClientRect();n.dimensions=e,n.handleBounds.source=Vw(`source`,t.nodeElement,r,a,n.id),n.handleBounds.target=Vw(`target`,t.nodeElement,r,a,n.id),o.push({id:n.id,type:`dimensions`,dimensions:e})}}}!e.fitViewOnInitDone&&e.fitViewOnInit&&r.value.fitView().then(()=>{e.fitViewOnInitDone=!0}),o.length&&e.hooks.nodesChange.trigger(o)},p=(r,i)=>{let a=new Set,o=new Set;for(let e of r)SC(e)?a.add(e.id):xC(e)&&o.add(e.id);let s=iw(t.value,a,!0),c=iw(n.value,o);if(e.multiSelectionActive){for(let e of a)s.push(ew(e,i));for(let e of o)c.push(ew(e,i))}s.length&&e.hooks.nodesChange.trigger(s),c.length&&e.hooks.edgesChange.trigger(c)},m=r=>{if(e.multiSelectionActive){let t=r.map(e=>ew(e.id,!0));e.hooks.nodesChange.trigger(t);return}e.hooks.nodesChange.trigger(iw(t.value,new Set(r.map(e=>e.id)),!0)),e.hooks.edgesChange.trigger(iw(n.value))},h=r=>{if(e.multiSelectionActive){let t=r.map(e=>ew(e.id,!0));e.hooks.edgesChange.trigger(t);return}e.hooks.edgesChange.trigger(iw(n.value,new Set(r.map(e=>e.id)))),e.hooks.nodesChange.trigger(iw(t.value,new Set,!0))},g=e=>{p(e,!0)},_=t=>{let n=(t||e.nodes).map(e=>(e.selected=!1,ew(e.id,!1)));e.hooks.nodesChange.trigger(n)},v=t=>{let n=(t||e.edges).map(e=>(e.selected=!1,ew(e.id,!1)));e.hooks.edgesChange.trigger(n)},y=t=>{if(!t||!t.length)return p([],!1);let n=t.reduce((e,t)=>{let n=ew(t.id,!1);return SC(t)?e.nodes.push(n):e.edges.push(n),e},{nodes:[],edges:[]});n.nodes.length&&e.hooks.nodesChange.trigger(n.nodes),n.edges.length&&e.hooks.edgesChange.trigger(n.edges)},b=t=>{var n;(n=e.d3Zoom)==null||n.scaleExtent([t,e.maxZoom]),e.minZoom=t},x=t=>{var n;(n=e.d3Zoom)==null||n.scaleExtent([e.minZoom,t]),e.maxZoom=t},S=t=>{var n;(n=e.d3Zoom)==null||n.translateExtent(t),e.translateExtent=t},C=t=>{e.nodeExtent=t,i()},w=t=>{var n;(n=e.d3Zoom)==null||n.clickDistance(t)},T=t=>{e.nodesDraggable=t,e.nodesConnectable=t,e.elementsSelectable=t},E=t=>{let n=t instanceof Function?t(e.nodes):t;!e.initialized&&!n.length||(e.nodes=Kw(n,l,e.hooks.error.trigger))},D=t=>{let r=t instanceof Function?t(e.edges):t;if(!e.initialized&&!r.length)return;let i=Xw(r,e.isValidConnection,l,u,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);Jw(e.connectionLookup,n.value,i),e.edges=i},O=t=>{let n=t instanceof Function?t([...e.nodes,...e.edges]):t;!e.initialized&&!n.length||(E(n.filter(SC)),D(n.filter(xC)))},k=t=>{let n=t instanceof Function?t(e.nodes):t;n=Array.isArray(n)?n:[n];let r=Kw(n,l,e.hooks.error.trigger),i=[];for(let e of r)i.push(tw(e));i.length&&e.hooks.nodesChange.trigger(i)},A=t=>{let n=t instanceof Function?t(e.edges):t;n=Array.isArray(n)?n:[n];let r=Xw(n,e.isValidConnection,l,u,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges),i=[];for(let e of r)i.push(tw(e));i.length&&e.hooks.edgesChange.trigger(i)},j=(t,n=!0,r=!1)=>{let i=t instanceof Function?t(e.nodes):t,a=Array.isArray(i)?i:[i],o=[],c=[];function u(e){let t=s(e);for(let e of t)(!Uw(e.deletable)||e.deletable)&&c.push(rw(e.id,e.source,e.target,e.sourceHandle,e.targetHandle))}function d(t){let r=[];for(let n of e.nodes)n.parentNode===t&&r.push(n);if(r.length){for(let e of r)o.push(nw(e.id));n&&u(r);for(let e of r)d(e.id)}}for(let e of a){let t=typeof e==`string`?l(e):e;t&&(Uw(t.deletable)&&!t.deletable||(o.push(nw(t.id)),n&&u([t]),r&&d(t.id)))}c.length&&e.hooks.edgesChange.trigger(c),o.length&&e.hooks.nodesChange.trigger(o)},M=t=>{let n=t instanceof Function?t(e.edges):t,r=Array.isArray(n)?n:[n],i=[];for(let e of r){let t=typeof e==`string`?u(e):e;t&&(Uw(t.deletable)&&!t.deletable||i.push(rw(typeof e==`string`?e:e.id,t.source,t.target,t.sourceHandle,t.targetHandle)))}e.hooks.edgesChange.trigger(i)},N=(t,r,i=!0)=>{let a=u(t.id);if(!a)return!1;let o=e.edges.indexOf(a),s=Gw(t,r,a,i,e.hooks.error.trigger);if(s){let[t]=Xw([s],e.isValidConnection,l,u,e.hooks.error.trigger,e.defaultEdgeOptions,e.nodes,e.edges);return e.edges=e.edges.map((e,n)=>n===o?t:e),Jw(e.connectionLookup,n.value,[t]),t}return!1},P=(e,t,n={replace:!1})=>{let r=u(e);if(!r)return;let i=typeof t==`function`?t(r):t;r.data=n.replace?i:{...r.data,...i}},F=t=>$C(t,e.nodes),I=t=>{let r=$C(t,e.edges);return Jw(e.connectionLookup,n.value,r),r},L=(t,n,r={replace:!1})=>{let i=l(t);if(!i)return;let a=typeof n==`function`?n(i):n;r.replace?e.nodes.splice(e.nodes.indexOf(i),1,a):Object.assign(i,a)},R=(e,t,n={replace:!1})=>{let r=l(e);if(!r)return;let i=typeof t==`function`?t(r):t;r.data=n.replace?i:{...r.data,...i}},z=(t,n,r=!1)=>{r?e.connectionClickStartHandle=t:e.connectionStartHandle=t,e.connectionEndHandle=null,e.connectionStatus=null,n&&(e.connectionPosition=n)},B=(t,n=null,r=null)=>{e.connectionStartHandle&&(e.connectionPosition=t,e.connectionEndHandle=n,e.connectionStatus=r)},V=(t,n)=>{e.connectionPosition={x:NaN,y:NaN},e.connectionEndHandle=null,e.connectionStatus=null,n?e.connectionClickStartHandle=null:e.connectionStartHandle=null},H=e=>{let t=TC(e),n=t?null:CC(e)?e:l(e.id);return!t&&!n?[null,null,t]:[t?e:hC(n),n,t]},U=(t,n=!0,r=e.nodes)=>{let[i,a,o]=H(t);if(!i)return[];let s=[];for(let t of r||e.nodes){if(!o&&(t.id===a.id||!t.computedPosition))continue;let e=hC(t),r=gC(e,i);(n&&r>0||r>=e.width*e.height||r>=Number(i.width)*Number(i.height))&&s.push(t)}return s},W=(e,t,n=!0)=>{let[r]=H(e);if(!r)return!1;let i=gC(r,t);return n&&i>0||i>=Number(r.width)*Number(r.height)},ee=t=>{let{viewport:n,dimensions:r,d3Zoom:i,d3Selection:a,translateExtent:o}=e;if(!i||!a||!t.x&&!t.y)return!1;let s=BS.translate(n.x+t.x,n.y+t.y).scale(n.zoom),c=[[0,0],[r.width,r.height]],l=i.constrain()(s,c,o),u=e.viewport.x!==l.x||e.viewport.y!==l.y||e.viewport.zoom!==l.k;return i.transform(a,l),u},te=t=>{let n=t instanceof Function?t(e):t,r=[`d3Zoom`,`d3Selection`,`d3ZoomHandler`,`viewportRef`,`vueFlowRef`,`dimensions`,`hooks`];Uw(n.defaultEdgeOptions)&&(e.defaultEdgeOptions=n.defaultEdgeOptions);let i=n.modelValue||n.nodes||n.edges?[]:void 0;i&&(n.modelValue&&i.push(...n.modelValue),n.nodes&&i.push(...n.nodes),n.edges&&i.push(...n.edges),O(i));let a=()=>{Uw(n.maxZoom)&&x(n.maxZoom),Uw(n.minZoom)&&b(n.minZoom),Uw(n.translateExtent)&&S(n.translateExtent)};for(let t of Object.keys(n)){let i=t,a=n[i];![...TT,...r].includes(i)&&Uw(a)&&(e[i]=a)}$g(()=>e.d3Zoom).not.toBeNull().then(a),e.initialized||=!0};return{updateNodePositions:d,updateNodeDimensions:f,setElements:O,setNodes:E,setEdges:D,addNodes:k,addEdges:A,removeNodes:j,removeEdges:M,findNode:l,findEdge:u,updateEdge:N,updateEdgeData:P,updateNode:L,updateNodeData:R,applyEdgeChanges:I,applyNodeChanges:F,addSelectedElements:g,addSelectedNodes:m,addSelectedEdges:h,setMinZoom:b,setMaxZoom:x,setTranslateExtent:S,setNodeExtent:C,setPaneClickDistance:w,removeSelectedElements:y,removeSelectedNodes:_,removeSelectedEdges:v,startConnection:z,updateConnection:B,endConnection:V,setInteractive:T,setState:te,getIntersectingNodes:U,getIncomers:a,getOutgoers:o,getConnectedEdges:s,getHandleConnections:c,isNodeIntersecting:W,panBy:ee,fitView:e=>r.value.fitView(e),zoomIn:e=>r.value.zoomIn(e),zoomOut:e=>r.value.zoomOut(e),zoomTo:(e,t)=>r.value.zoomTo(e,t),setViewport:(e,t)=>r.value.setViewport(e,t),setTransform:(e,t)=>r.value.setTransform(e,t),getViewport:()=>r.value.getViewport(),getTransform:()=>r.value.getTransform(),setCenter:(e,t,n)=>r.value.setCenter(e,t,n),fitBounds:(e,t)=>r.value.fitBounds(e,t),project:e=>r.value.project(e),screenToFlowCoordinate:e=>r.value.screenToFlowCoordinate(e),flowToScreenCoordinate:e=>r.value.flowToScreenCoordinate(e),toObject:()=>{let t=[],n=[];for(let n of e.nodes){let{computedPosition:e,handleBounds:r,selected:i,dimensions:a,isParent:o,resizing:s,dragging:c,events:l,...u}=n;t.push(u)}for(let t of e.edges){let{selected:e,sourceNode:r,targetNode:i,events:a,...o}=t;n.push(o)}return JSON.parse(JSON.stringify({nodes:t,edges:n,position:[e.viewport.x,e.viewport.y],zoom:e.viewport.zoom,viewport:e.viewport}))},fromObject:t=>new Promise(n=>{let{nodes:i,edges:a,position:o,zoom:s,viewport:c}=t;i&&E(i),a&&D(a);let[l,u]=c?.x&&c?.y?[c.x,c.y]:o??[null,null];if(l&&u){let t=c?.zoom||s||e.viewport.zoom;return $g(()=>r.value.viewportInitialized).toBe(!0).then(()=>{r.value.setViewport({x:l,y:u,zoom:t}).then(()=>{n(!0)})})}else n(!0)}),updateNodeInternals:i,viewportHelper:r,$reset:()=>{let t=wT();if(e.edges=[],e.nodes=[],e.d3Zoom&&e.d3Selection){let n=BS.translate(t.defaultViewport.x??0,t.defaultViewport.y??0).scale(vC(t.defaultViewport.zoom??1,t.minZoom,t.maxZoom)),r=e.viewportRef.getBoundingClientRect(),i=[[0,0],[r.width,r.height]],a=e.d3Zoom.constrain()(n,i,t.translateExtent);e.d3Zoom.transform(e.d3Selection,a)}te(t)},$destroy:()=>{}}}var DT=[`data-id`,`data-handleid`,`data-nodeid`,`data-handlepos`],OT=y({name:`Handle`,compatConfig:{MODE:3},props:{id:{default:null},type:{},position:{default:()=>Q.Top},isValidConnection:{type:Function},connectable:{type:[Boolean,Number,String,Function],default:void 0},connectableStart:{type:Boolean,default:!0},connectableEnd:{type:Boolean,default:!0}},setup(e,{expose:t}){let r=u(e,[`position`,`connectable`,`connectableStart`,`connectableEnd`,`id`]),i=s(()=>r.type??`source`),a=s(()=>r.isValidConnection??null),{id:o,connectionStartHandle:c,connectionClickStartHandle:l,connectionEndHandle:d,vueFlowRef:p,nodesConnectable:h,noDragClassName:g,noPanClassName:_}=dE(),{id:v,node:y,nodeEl:b,connectedEdges:x}=uT(),S=m(),C=s(()=>e.connectableStart===void 0?!0:e.connectableStart),w=s(()=>e.connectableEnd===void 0?!0:e.connectableEnd),T=s(()=>c.value?.nodeId===v&&c.value?.id===e.id&&c.value?.type===i.value||d.value?.nodeId===v&&d.value?.id===e.id&&d.value?.type===i.value),D=s(()=>l.value?.nodeId===v&&l.value?.id===e.id&&l.value?.type===i.value),{handlePointerDown:O,handleClick:k}=cT({nodeId:v,handleId:e.id,isValidConnection:a,type:i}),A=E(()=>typeof e.connectable==`string`&&e.connectable===`single`?!x.value.some(t=>{let n=t[`${i.value}Handle`];return t[i.value]===v?n?n===e.id:!0:!1}):typeof e.connectable==`number`?x.value.filter(t=>{let n=t[`${i.value}Handle`];return t[i.value]===v?n?n===e.id:!0:!1}).length<e.connectable:typeof e.connectable==`function`?e.connectable(y,x.value):Uw(e.connectable)?e.connectable:h.value);P(()=>{if(!y.dimensions.width||!y.dimensions.height)return;let t=y.handleBounds[i.value]?.find(t=>t.id===e.id);if(!p.value||t)return;let n=p.value.querySelector(`.vue-flow__transformationpane`);if(!b.value||!S.value||!n||!e.id)return;let r=b.value.getBoundingClientRect(),a=S.value.getBoundingClientRect(),o=window.getComputedStyle(n),{m22:s}=new window.DOMMatrixReadOnly(o.transform),c={id:e.id,position:e.position,x:(a.left-r.left)/s,y:(a.top-r.top)/s,type:i.value,nodeId:v,..._C(S.value)};y.handleBounds[i.value]=[...y.handleBounds[i.value]??[],c]});function j(e){let t=xw(e);A.value&&C.value&&(t&&e.button===0||!t)&&O(e)}function M(e){!v||!l.value&&!C.value||A.value&&k(e)}return t({handleClick:k,handlePointerDown:O,onClick:M,onPointerDown:j}),(t,r)=>(n(),f(`div`,{ref_key:`handle`,ref:S,"data-id":`${N(o)}-${N(v)}-${e.id}-${i.value}`,"data-handleid":e.id,"data-nodeid":N(v),"data-handlepos":t.position,class:L([`vue-flow__handle`,[`vue-flow__handle-${t.position}`,`vue-flow__handle-${e.id}`,N(g),N(_),i.value,{connectable:A.value,connecting:D.value,connectablestart:C.value,connectableend:w.value,connectionindicator:A.value&&(C.value&&!T.value||w.value&&T.value)}]]),onMousedown:j,onTouchstartPassive:j,onClick:M},[ne(t.$slots,`default`,{id:t.id})],42,DT))}}),kT=function({sourcePosition:e=Q.Bottom,targetPosition:t=Q.Top,label:n,connectable:r=!0,isValidTargetPos:i,isValidSourcePos:a,data:o}){let s=o.label??n;return[g(OT,{type:`target`,position:t,connectable:r,isValidConnection:i}),typeof s!=`string`&&s?g(s):g(I,[s]),g(OT,{type:`source`,position:e,connectable:r,isValidConnection:a})]};kT.props=[`sourcePosition`,`targetPosition`,`label`,`isValidTargetPos`,`isValidSourcePos`,`connectable`,`data`],kT.inheritAttrs=!1,kT.compatConfig={MODE:3};var AT=kT,jT=function({targetPosition:e=Q.Top,label:t,connectable:n=!0,isValidTargetPos:r,data:i}){let a=i.label??t;return[g(OT,{type:`target`,position:e,connectable:n,isValidConnection:r}),typeof a!=`string`&&a?g(a):g(I,[a])]};jT.props=[`targetPosition`,`label`,`isValidTargetPos`,`connectable`,`data`],jT.inheritAttrs=!1,jT.compatConfig={MODE:3};var MT=jT,NT=function({sourcePosition:e=Q.Bottom,label:t,connectable:n=!0,isValidSourcePos:r,data:i}){let a=i.label??t;return[typeof a!=`string`&&a?g(a):g(I,[a]),g(OT,{type:`source`,position:e,connectable:n,isValidConnection:r})]};NT.props=[`sourcePosition`,`label`,`isValidSourcePos`,`connectable`,`data`],NT.inheritAttrs=!1,NT.compatConfig={MODE:3};var PT=NT,FT=[`transform`],IT=[`width`,`height`,`x`,`y`,`rx`,`ry`],LT=[`y`],RT=y({name:`EdgeText`,compatConfig:{MODE:3},props:{x:{},y:{},label:{},labelStyle:{default:()=>({})},labelShowBg:{type:Boolean,default:!0},labelBgStyle:{default:()=>({})},labelBgPadding:{default:()=>[2,4]},labelBgBorderRadius:{default:2}},setup(e){let t=m({x:0,y:0,width:0,height:0}),r=m(null),a=E(()=>`translate(${e.x-t.value.width/2} ${e.y-t.value.height/2})`);P(o),U([()=>e.x,()=>e.y,r,()=>e.label],o);function o(){if(!r.value)return;let e=r.value.getBBox();(e.width!==t.value.width||e.height!==t.value.height)&&(t.value=e)}return(e,o)=>(n(),f(`g`,{transform:a.value,class:`vue-flow__edge-textwrapper`},[e.labelShowBg?(n(),f(`rect`,{key:0,class:`vue-flow__edge-textbg`,width:`${t.value.width+2*e.labelBgPadding[0]}px`,height:`${t.value.height+2*e.labelBgPadding[1]}px`,x:-e.labelBgPadding[0],y:-e.labelBgPadding[1],style:be(e.labelBgStyle),rx:e.labelBgBorderRadius,ry:e.labelBgBorderRadius},null,12,IT)):O(``,!0),c(`text`,A(e.$attrs,{ref_key:`el`,ref:r,class:`vue-flow__edge-text`,y:t.value.height/2,dy:`0.3em`,style:e.labelStyle}),[ne(e.$slots,`default`,{},()=>[typeof e.label==`string`?(n(),f(I,{key:1},[i(D(e.label),1)],64)):(n(),_e(he(e.label),{key:0}))])],16,LT)],8,FT))}}),zT=[`id`,`d`,`marker-end`,`marker-start`],BT=[`d`,`stroke-width`],VT=y({name:`BaseEdge`,inheritAttrs:!1,compatConfig:{MODE:3},props:{id:{},labelX:{},labelY:{},path:{},label:{},markerStart:{},markerEnd:{},interactionWidth:{default:20},labelStyle:{},labelShowBg:{type:Boolean},labelBgStyle:{},labelBgPadding:{},labelBgBorderRadius:{}},setup(e,{expose:t}){let r=m(null),i=m(null),a=m(null),o=ie();return t({pathEl:r,interactionEl:i,labelEl:a}),(e,t)=>(n(),f(I,null,[c(`path`,A(N(o),{id:e.id,ref_key:`pathEl`,ref:r,d:e.path,class:`vue-flow__edge-path`,"marker-end":e.markerEnd,"marker-start":e.markerStart}),null,16,zT),e.interactionWidth?(n(),f(`path`,{key:0,ref_key:`interactionEl`,ref:i,fill:`none`,d:e.path,"stroke-width":e.interactionWidth,"stroke-opacity":0,class:`vue-flow__edge-interaction`},null,8,BT)):O(``,!0),e.label&&e.labelX&&e.labelY?(n(),_e(RT,{key:1,ref_key:`labelEl`,ref:a,x:e.labelX,y:e.labelY,label:e.label,"label-show-bg":e.labelShowBg,"label-bg-style":e.labelBgStyle,"label-bg-padding":e.labelBgPadding,"label-bg-border-radius":e.labelBgBorderRadius,"label-style":e.labelStyle},null,8,[`x`,`y`,`label`,`label-show-bg`,`label-bg-style`,`label-bg-padding`,`label-bg-border-radius`,`label-style`])):O(``,!0)],64))}});function HT({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n<e?n+i:n-i,o=Math.abs(r-t)/2;return[a,r<t?r+o:r-o,i,o]}function UT({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function WT(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function GT({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){let o,s;switch(e){case Q.Left:o=t-WT(t-r,a),s=n;break;case Q.Right:o=t+WT(r-t,a),s=n;break;case Q.Top:o=t,s=n-WT(n-i,a);break;case Q.Bottom:o=t,s=n+WT(i-n,a);break}return[o,s]}function KT(e){let{sourceX:t,sourceY:n,sourcePosition:r=Q.Bottom,targetX:i,targetY:a,targetPosition:o=Q.Top,curvature:s=.25}=e,[c,l]=GT({pos:r,x1:t,y1:n,x2:i,y2:a,c:s}),[u,d]=GT({pos:o,x1:i,y1:a,x2:t,y2:n,c:s}),[f,p,m,h]=UT({sourceX:t,sourceY:n,targetX:i,targetY:a,sourceControlX:c,sourceControlY:l,targetControlX:u,targetControlY:d});return[`M${t},${n} C${c},${l} ${u},${d} ${i},${a}`,f,p,m,h]}function qT({pos:e,x1:t,y1:n,x2:r,y2:i}){let a,o;switch(e){case Q.Left:case Q.Right:a=.5*(t+r),o=n;break;case Q.Top:case Q.Bottom:a=t,o=.5*(n+i);break}return[a,o]}function JT(e){let{sourceX:t,sourceY:n,sourcePosition:r=Q.Bottom,targetX:i,targetY:a,targetPosition:o=Q.Top}=e,[s,c]=qT({pos:r,x1:t,y1:n,x2:i,y2:a}),[l,u]=qT({pos:o,x1:i,y1:a,x2:t,y2:n}),[d,f,p,m]=UT({sourceX:t,sourceY:n,targetX:i,targetY:a,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${t},${n} C${s},${c} ${l},${u} ${i},${a}`,d,f,p,m]}var YT={[Q.Left]:{x:-1,y:0},[Q.Right]:{x:1,y:0},[Q.Top]:{x:0,y:-1},[Q.Bottom]:{x:0,y:1}};function XT({source:e,sourcePosition:t=Q.Bottom,target:n}){return t===Q.Left||t===Q.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1}}function ZT(e,t){return Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2)}function QT({source:e,sourcePosition:t=Q.Bottom,target:n,targetPosition:r=Q.Top,center:i,offset:a}){let o=YT[t],s=YT[r],c={x:e.x+o.x*a,y:e.y+o.y*a},l={x:n.x+s.x*a,y:n.y+s.y*a},u=XT({source:c,sourcePosition:t,target:l}),d=u.x===0?`y`:`x`,f=u[d],p,m,h,g={x:0,y:0},_={x:0,y:0},[v,y,b,x]=HT({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(o[d]*s[d]===-1){m=i.x??v,h=i.y??y;let e=[{x:m,y:c.y},{x:m,y:l.y}],t=[{x:c.x,y:h},{x:l.x,y:h}];p=o[d]===f?d===`x`?e:t:d===`x`?t:e}else{let i=[{x:c.x,y:l.y}],u=[{x:l.x,y:c.y}];if(p=d===`x`?o.x===f?u:i:o.y===f?i:u,t===r){let t=Math.abs(e[d]-n[d]);if(t<=a){let r=Math.min(a-1,a-t);o[d]===f?g[d]=(c[d]>e[d]?-1:1)*r:_[d]=(l[d]>n[d]?-1:1)*r}}if(t!==r){let e=d===`x`?`y`:`x`,t=o[d]===s[e],n=c[e]>l[e],r=c[e]<l[e];(o[d]===1&&(!t&&n||t&&r)||o[d]!==1&&(!t&&r||t&&n))&&(p=d===`x`?i:u)}let v={x:c.x+g.x,y:c.y+g.y},y={x:l.x+_.x,y:l.y+_.y};Math.max(Math.abs(v.x-p[0].x),Math.abs(y.x-p[0].x))>=Math.max(Math.abs(v.y-p[0].y),Math.abs(y.y-p[0].y))?(m=(v.x+y.x)/2,h=p[0].y):(m=p[0].x,h=(v.y+y.y)/2)}return[[e,{x:c.x+g.x,y:c.y+g.y},...p,{x:l.x+_.x,y:l.y+_.y},n],m,h,b,x]}function $T(e,t,n,r){let i=Math.min(ZT(e,t)/2,ZT(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.x<n.x?-1:1,r=e.y<n.y?1:-1;return`L ${a+i*t},${o}Q ${a},${o} ${a},${o+i*r}`}let s=e.x<n.x?1:-1;return`L ${a},${o+i*(e.y<n.y?-1:1)}Q ${a},${o} ${a+i*s},${o}`}function eE(e){let{sourceX:t,sourceY:n,sourcePosition:r=Q.Bottom,targetX:i,targetY:a,targetPosition:o=Q.Top,borderRadius:s=5,centerX:c,centerY:l,offset:u=20}=e,[d,f,p,m,h]=QT({source:{x:t,y:n},sourcePosition:r,target:{x:i,y:a},targetPosition:o,center:{x:c,y:l},offset:u});return[d.reduce((e,t,n)=>{let r;return r=n>0&&n<d.length-1?$T(d[n-1],t,d[n+1],s):`${n===0?`M`:`L`}${t.x} ${t.y}`,e+=r,e},``),f,p,m,h]}function tE(e){let{sourceX:t,sourceY:n,targetX:r,targetY:i}=e,[a,o,s,c]=HT({sourceX:t,sourceY:n,targetX:r,targetY:i});return[`M ${t},${n}L ${r},${i}`,a,o,s,c]}var nE=y({name:`StraightEdge`,props:[`label`,`labelStyle`,`labelShowBg`,`labelBgStyle`,`labelBgPadding`,`labelBgBorderRadius`,`sourceY`,`sourceX`,`targetX`,`targetY`,`markerEnd`,`markerStart`,`interactionWidth`],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{let[n,r,i]=tE(e);return g(VT,{path:n,labelX:r,labelY:i,...t,...e})}}}),rE=y({name:`SmoothStepEdge`,props:[`sourcePosition`,`targetPosition`,`label`,`labelStyle`,`labelShowBg`,`labelBgStyle`,`labelBgPadding`,`labelBgBorderRadius`,`sourceY`,`sourceX`,`targetX`,`targetY`,`borderRadius`,`markerEnd`,`markerStart`,`interactionWidth`,`offset`],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{let[n,r,i]=eE({...e,sourcePosition:e.sourcePosition??Q.Bottom,targetPosition:e.targetPosition??Q.Top});return g(VT,{path:n,labelX:r,labelY:i,...t,...e})}}}),iE=y({name:`StepEdge`,props:[`sourcePosition`,`targetPosition`,`label`,`labelStyle`,`labelShowBg`,`labelBgStyle`,`labelBgPadding`,`labelBgBorderRadius`,`sourceY`,`sourceX`,`targetX`,`targetY`,`markerEnd`,`markerStart`,`interactionWidth`],setup(e,{attrs:t}){return()=>g(rE,{...e,...t,borderRadius:0})}}),aE=y({name:`BezierEdge`,props:[`sourcePosition`,`targetPosition`,`label`,`labelStyle`,`labelShowBg`,`labelBgStyle`,`labelBgPadding`,`labelBgBorderRadius`,`sourceY`,`sourceX`,`targetX`,`targetY`,`curvature`,`markerEnd`,`markerStart`,`interactionWidth`],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{let[n,r,i]=KT({...e,sourcePosition:e.sourcePosition??Q.Bottom,targetPosition:e.targetPosition??Q.Top});return g(VT,{path:n,labelX:r,labelY:i,...t,...e})}}}),oE=y({name:`SimpleBezierEdge`,props:[`sourcePosition`,`targetPosition`,`label`,`labelStyle`,`labelShowBg`,`labelBgStyle`,`labelBgPadding`,`labelBgBorderRadius`,`sourceY`,`sourceX`,`targetX`,`targetY`,`markerEnd`,`markerStart`,`interactionWidth`],compatConfig:{MODE:3},setup(e,{attrs:t}){return()=>{let[n,r,i]=JT({...e,sourcePosition:e.sourcePosition??Q.Bottom,targetPosition:e.targetPosition??Q.Top});return g(VT,{path:n,labelX:r,labelY:i,...t,...e})}}}),sE={input:PT,default:AT,output:MT},cE={default:aE,straight:nE,step:iE,smoothstep:rE,simplebezier:oE};function lE(e,t,n){let r=E(()=>e=>t.value.get(e)),i=E(()=>e=>n.value.get(e)),a=E(()=>{let t={...cE,...e.edgeTypes},n=Object.keys(t);for(let r of e.edges)r.type&&!n.includes(r.type)&&(t[r.type]=r.type);return t}),o=E(()=>{let t={...sE,...e.nodeTypes},n=Object.keys(t);for(let r of e.nodes)r.type&&!n.includes(r.type)&&(t[r.type]=r.type);return t}),s=E(()=>e.onlyRenderVisibleElements?BC(e.nodes,{x:0,y:0,width:e.dimensions.width,height:e.dimensions.height},e.viewport,!0):e.nodes),c=E(()=>{if(e.onlyRenderVisibleElements){let n=[];for(let r of e.edges){let i=t.value.get(r.source),a=t.value.get(r.target);gw({sourcePos:i.computedPosition||{x:0,y:0},targetPos:a.computedPosition||{x:0,y:0},sourceWidth:i.dimensions.width,sourceHeight:i.dimensions.height,targetWidth:a.dimensions.width,targetHeight:a.dimensions.height,width:e.dimensions.width,height:e.dimensions.height,viewport:e.viewport})&&n.push(r)}return n}return e.edges}),l=E(()=>[...s.value,...c.value]),u=E(()=>{let t=[];for(let n of e.nodes)n.selected&&t.push(n);return t}),d=E(()=>{let t=[];for(let n of e.edges)n.selected&&t.push(n);return t}),f=E(()=>[...u.value,...d.value]),p=E(()=>{let t=[];for(let n of e.nodes)n.dimensions.width&&n.dimensions.height&&n.handleBounds!==void 0&&t.push(n);return t});return{getNode:r,getEdge:i,getElements:l,getEdgeTypes:a,getNodeTypes:o,getEdges:c,getNodes:s,getSelectedElements:f,getSelectedNodes:u,getSelectedEdges:d,getNodesInitialized:p,areNodesInitialized:E(()=>s.value.length>0&&p.value.length===s.value.length)}}var uE=class e{constructor(){this.currentId=0,this.flows=new Map}static getInstance(){let t=x()?.appContext.app;return e.instance=t?.config.globalProperties.$vueFlowStorage??e.instance??new e,t&&(t.config.globalProperties.$vueFlowStorage=e.instance),e.instance}set(e,t){return this.flows.set(e,t)}get(e){return this.flows.get(e)}remove(e){return this.flows.delete(e)}create(e,t){let n=b(wT()),r={};for(let[e,t]of Object.entries(n.hooks)){let n=`on${e.charAt(0).toUpperCase()+e.slice(1)}`;r[n]=t.on}let i={};for(let[e,t]of Object.entries(n.hooks))i[e]=t.trigger;let a=E(()=>{let e=new Map;for(let t of n.nodes)e.set(t.id,t);return e}),o=E(()=>{let e=new Map;for(let t of n.edges)e.set(t.id,t);return e}),s=lE(n,a,o),c=ET(n,a,o);c.setState({...n,...t});let l={...r,...s,...c,...Zg(n),nodeLookup:a,edgeLookup:o,emits:i,id:e,vueFlowVersion:`1.48.0`,$destroy:()=>{this.remove(e)}};return this.set(e,l),l}getId(){return`vue-flow-${this.currentId++}`}};function dE(e){let t=uE.getInstance(),n=p(),r=typeof e==`object`,i=r?e:{id:e},a=i.id,o=a??n?.vueFlowId,s;if(n){let e=w(Zw,null);e!=null&&(!o||e.id===o)&&(s=e)}if(s||o&&(s=t.get(o)),!s||o&&s.id!==o){let e=a??t.getId(),r=t.create(e,i);s=r,(n??k(!0)).run(()=>{U(r.applyDefault,(e,t,n)=>{let i=e=>{r.applyNodeChanges(e)},a=e=>{r.applyEdgeChanges(e)};e?(r.onNodesChange(i),r.onEdgesChange(a)):(r.hooks.value.nodesChange.off(i),r.hooks.value.edgesChange.off(a)),n(()=>{r.hooks.value.nodesChange.off(i),r.hooks.value.edgesChange.off(a)})},{immediate:!0}),Rg(()=>{if(s){let e=t.get(s.id);e?e.$destroy():zw(`No store instance found for id ${s.id} in storage.`)}})})}else r&&s.setState(i);return n&&(ge(Zw,s),n.vueFlowId=s.id),r&&x()?.type.name!==`VueFlow`&&s.emits.error(new bw(vw.USEVUEFLOW_OPTIONS)),s}function fE(e){let{emits:t,dimensions:n}=dE(),r;P(()=>{let i=()=>{var r;if(!e.value||!((r=e.value).checkVisibility?.call(r)??!0))return;let i=_C(e.value);(i.width===0||i.height===0)&&t.error(new bw(vw.MISSING_VIEWPORT_DIMENSIONS)),n.value={width:i.width||500,height:i.height||500}};i(),window.addEventListener(`resize`,i),e.value&&(r=new ResizeObserver(()=>i()),r.observe(e.value)),de(()=>{window.removeEventListener(`resize`,i),r&&e.value&&r.unobserve(e.value)})})}var pE=y({name:`UserSelection`,compatConfig:{MODE:3},props:{userSelectionRect:{}},setup(e){return(e,t)=>(n(),f(`div`,{class:`vue-flow__selection vue-flow__container`,style:be({width:`${e.userSelectionRect.width}px`,height:`${e.userSelectionRect.height}px`,transform:`translate(${e.userSelectionRect.x}px, ${e.userSelectionRect.y}px)`})},null,4))}}),mE=[`tabIndex`],hE=y({name:`NodesSelection`,compatConfig:{MODE:3},setup(e){let{emits:t,viewport:r,getSelectedNodes:i,noPanClassName:a,disableKeyboardA11y:o,userSelectionActive:s}=dE(),l=pT(),u=m(null),d=rT({el:u,onStart(e){t.selectionDragStart(e),t.nodeDragStart(e)},onDrag(e){t.selectionDrag(e),t.nodeDrag(e)},onStop(e){t.selectionDragStop(e),t.nodeDragStop(e)}});P(()=>{var e;o.value||(e=u.value)==null||e.focus({preventScroll:!0})});let p=E(()=>zC(i.value)),h=E(()=>({width:`${p.value.width}px`,height:`${p.value.height}px`,top:`${p.value.y}px`,left:`${p.value.x}px`}));function g(e){t.selectionContextMenu({event:e,nodes:i.value})}function _(e){o.value||mC[e.key]&&(e.preventDefault(),l({x:mC[e.key].x,y:mC[e.key].y},e.shiftKey))}return(e,t)=>!N(s)&&p.value.width&&p.value.height?(n(),f(`div`,{key:0,class:L([`vue-flow__nodesselection vue-flow__container`,N(a)]),style:be({transform:`translate(${N(r).x}px,${N(r).y}px) scale(${N(r).zoom})`})},[c(`div`,{ref_key:`el`,ref:u,class:L([{dragging:N(d)},`vue-flow__nodesselection-rect`]),style:be(h.value),tabIndex:N(o)?void 0:-1,onContextmenu:g,onKeydown:_},null,46,mE)],6)):O(``,!0)}});function gE(e,t){return{x:e.clientX-t.left,y:e.clientY-t.top}}var _E=y({name:`Pane`,compatConfig:{MODE:3},props:{isSelecting:{type:Boolean},selectionKeyPressed:{type:Boolean}},setup(e){let{vueFlowRef:t,nodes:r,viewport:i,emits:a,userSelectionActive:o,removeSelectedElements:c,userSelectionRect:l,elementsSelectable:u,nodesSelectionActive:d,getSelectedEdges:p,getSelectedNodes:h,removeNodes:g,removeEdges:_,selectionMode:v,deleteKeyCode:y,multiSelectionKeyCode:b,multiSelectionActive:x,edgeLookup:S,nodeLookup:C,connectionLookup:w,defaultEdgeOptions:T,connectionStartHandle:E}=dE(),D=m(null),k=m(new Set),A=m(new Set),j=m(),M=s(()=>u.value&&(e.isSelecting||o.value)),P=s(()=>E.value!==null),F=!1,I=!1,R=lC(y,{actInsideInputWithModifier:!1}),z=lC(b);U(R,e=>{e&&(g(h.value),_(p.value),d.value=!1)}),U(z,e=>{x.value=e});function B(e,t){return n=>{n.target===t&&e?.(n)}}function V(e){if(F||P.value){F=!1;return}a.paneClick(e),c(),d.value=!1}function H(e){e.preventDefault(),e.stopPropagation(),a.paneContextMenu(e)}function W(e){a.paneScroll(e)}function ee(n){var r,i;if(j.value=t.value?.getBoundingClientRect(),!u.value||!e.isSelecting||n.button!==0||n.target!==D.value||!j.value)return;(i=(r=n.target)?.setPointerCapture)==null||i.call(r,n.pointerId);let{x:o,y:s}=gE(n,j.value);I=!0,F=!1,c(),l.value={width:0,height:0,startX:o,startY:s,x:o,y:s},a.selectionStart(n)}function te(e){if(!j.value||!l.value)return;F=!0;let{x:t,y:n}=Cw(e,j.value),{startX:s=0,startY:c=0}=l.value,u={startX:s,startY:c,x:t<s?t:s,y:n<c?n:c,width:Math.abs(t-s),height:Math.abs(n-c)},f=k.value,p=A.value;k.value=new Set(BC(r.value,u,i.value,v.value===XS.Partial,!0).map(e=>e.id)),A.value=new Set;let m=T.value?.selectable??!0;for(let e of k.value){let t=w.value.get(e);if(t)for(let{edgeId:e}of t.values()){let t=S.value.get(e);t&&(t.selectable??m)&&A.value.add(e)}}if(!Yw(f,k.value)){let e=iw(C.value,k.value,!0);a.nodesChange(e)}if(!Yw(p,A.value)){let e=iw(S.value,A.value);a.edgesChange(e)}l.value=u,o.value=!0,d.value=!1}function G(t){var n;t.button!==0||!I||((n=t.target)==null||n.releasePointerCapture(t.pointerId),!o.value&&l.value&&t.target===D.value&&V(t),o.value=!1,l.value=null,d.value=k.value.size>0,a.selectionEnd(t),e.selectionKeyPressed&&(F=!1),I=!1)}return(e,t)=>(n(),f(`div`,{ref_key:`container`,ref:D,class:L([`vue-flow__pane vue-flow__container`,{selection:e.isSelecting}]),onClick:t[0]||=e=>M.value?void 0:B(V,D.value)(e),onContextmenu:t[1]||=e=>B(H,D.value)(e),onWheelPassive:t[2]||=e=>B(W,D.value)(e),onPointerenter:t[3]||=e=>M.value?void 0:N(a).paneMouseEnter(e),onPointerdown:t[4]||=e=>M.value?ee(e):N(a).paneMouseMove(e),onPointermove:t[5]||=e=>M.value?te(e):N(a).paneMouseMove(e),onPointerup:t[6]||=e=>M.value?G(e):void 0,onPointerleave:t[7]||=e=>N(a).paneMouseLeave(e)},[ne(e.$slots,`default`),N(o)&&N(l)?(n(),_e(pE,{key:0,"user-selection-rect":N(l)},null,8,[`user-selection-rect`])):O(``,!0),N(d)&&N(h).length?(n(),_e(hE,{key:1})):O(``,!0)],34))}}),vE=y({name:`Transform`,compatConfig:{MODE:3},setup(e){let{viewport:t,fitViewOnInit:r,fitViewOnInitDone:i}=dE(),a=E(()=>r.value?!i.value:!1),o=E(()=>`translate(${t.value.x}px,${t.value.y}px) scale(${t.value.zoom})`);return(e,t)=>(n(),f(`div`,{class:`vue-flow__transformationpane vue-flow__container`,style:be({transform:o.value,opacity:a.value?0:void 0})},[ne(e.$slots,`default`)],4))}}),yE=y({name:`Viewport`,compatConfig:{MODE:3},setup(e){let{minZoom:t,maxZoom:r,defaultViewport:i,translateExtent:a,zoomActivationKeyCode:o,selectionKeyCode:c,panActivationKeyCode:l,panOnScroll:u,panOnScrollMode:d,panOnScrollSpeed:p,panOnDrag:m,zoomOnDoubleClick:h,zoomOnPinch:g,zoomOnScroll:_,preventScrolling:v,noWheelClassName:y,noPanClassName:b,emits:x,connectionStartHandle:S,userSelectionActive:C,paneDragging:w,d3Zoom:E,d3Selection:D,d3ZoomHandler:O,viewport:k,viewportRef:A,paneClickDistance:j}=dE();fE(A);let M=T(!1),F=T(!1),I=null,R=!1,z=0,B={x:0,y:0,zoom:0},V=lC(l),H=lC(c),W=lC(o),ee=s(()=>(!H.value||H.value&&c.value===!0)&&(V.value||m.value)),te=s(()=>V.value||u.value),re=s(()=>H.value||c.value===!0&&ee.value!==!0),ie=s(()=>S.value!==null);P(()=>{if(!A.value){zw(`Viewport element is missing`);return}let e=A.value,n=e.getBoundingClientRect(),o=YS().clickDistance(j.value).scaleExtent([t.value,r.value]).translateExtent(a.value),s=fy(e).call(o),l=s.on(`wheel.zoom`),f=BS.translate(i.value.x??0,i.value.y??0).scale(vC(i.value.zoom??1,t.value,r.value)),S=[[0,0],[n.width,n.height]],T=o.constrain()(f,S,a.value);o.transform(s,T),o.wheelDelta(YC),E.value=o,D.value=s,O.value=l,k.value={x:T.x,y:T.y,zoom:T.k},o.on(`start`,e=>{if(!e.sourceEvent)return null;z=e.sourceEvent.button,M.value=!0;let t=se(e.transform);e.sourceEvent?.type===`mousedown`&&(w.value=!0),B=t,x.viewportChangeStart(t),x.moveStart({event:e,flowTransform:t})}),o.on(`end`,e=>{if(!e.sourceEvent)return null;if(M.value=!1,w.value=!1,ae(ee.value,z??0)&&!R&&x.paneContextMenu(e.sourceEvent),R=!1,oe(B,e.transform)){let t=se(e.transform);B=t,x.viewportChangeEnd(t),x.moveEnd({event:e,flowTransform:t})}}),o.filter(e=>{let t=W.value||_.value,n=g.value&&e.ctrlKey,r=e.button,i=e.type===`wheel`;if(r===1&&e.type===`mousedown`&&(ce(e,`vue-flow__node`)||ce(e,`vue-flow__edge`)))return!0;if(!ee.value&&!t&&!te.value&&!h.value&&!g.value||C.value||ie.value&&!i||!h.value&&e.type===`dblclick`||ce(e,y.value)&&i||ce(e,b.value)&&(!i||te.value&&i&&!W.value)||!g.value&&e.ctrlKey&&i||!t&&!te.value&&!n&&i)return!1;if(!g&&e.type===`touchstart`&&e.touches?.length>1)return e.preventDefault(),!1;if(!ee.value&&(e.type===`mousedown`||e.type===`touchstart`)||c.value===!0&&Array.isArray(m.value)&&m.value.includes(0)&&r===0||Array.isArray(m.value)&&!m.value.includes(r)&&(e.type===`mousedown`||e.type===`touchstart`))return!1;let a=Array.isArray(m.value)&&m.value.includes(r)||c.value===!0&&Array.isArray(m.value)&&!m.value.includes(0)||!r||r<=1;return(!e.ctrlKey||V.value||i)&&a}),U([C,ee],()=>{C.value&&!M.value?o.on(`zoom`,null):C.value||o.on(`zoom`,e=>{k.value={x:e.transform.x,y:e.transform.y,zoom:e.transform.k};let t=se(e.transform);R=ae(ee.value,z??0),x.viewportChange(t),x.move({event:e,flowTransform:t})})},{immediate:!0}),U([C,te,d,W,g,v,y],()=>{te.value&&!W.value&&!C.value?s.on(`wheel.zoom`,e=>{if(ce(e,y.value))return!1;let t=W.value||_.value,n=g.value&&e.ctrlKey;if(!(!v.value||te.value||t||n))return!1;e.preventDefault(),e.stopImmediatePropagation();let r=s.property(`__zoom`).k||1,i=ww();if(!V.value&&e.ctrlKey&&g.value&&i){let t=my(e),n=r*2**YC(e);o.scaleTo(s,n,t,e);return}let a=e.deltaMode===1?20:1,c=d.value===eC.Vertical?0:e.deltaX*a,l=d.value===eC.Horizontal?0:e.deltaY*a;!i&&e.shiftKey&&d.value!==eC.Vertical&&!c&&l&&(c=l,l=0),o.translateBy(s,-(c/r)*p.value,-(l/r)*p.value);let u=se(s.property(`__zoom`));I&&clearTimeout(I),F.value?(x.move({event:e,flowTransform:u}),x.viewportChange(u),I=setTimeout(()=>{x.moveEnd({event:e,flowTransform:u}),x.viewportChangeEnd(u),F.value=!1},150)):(F.value=!0,x.moveStart({event:e,flowTransform:u}),x.viewportChangeStart(u))},{passive:!1}):l!==void 0&&s.on(`wheel.zoom`,function(e,t){let n=!v.value&&e.type===`wheel`&&!e.ctrlKey,r=W.value||_.value,i=g.value&&e.ctrlKey;if(!r&&!u.value&&!i&&e.type===`wheel`||n||ce(e,y.value))return null;e.preventDefault(),l.call(this,e,t)},{passive:!1})},{immediate:!0})});function ae(e,t){return t===2&&Array.isArray(e)&&e.includes(2)}function oe(e,t){return e.x!==t.x&&!Number.isNaN(t.x)||e.y!==t.y&&!Number.isNaN(t.y)||e.zoom!==t.k&&!Number.isNaN(t.k)}function se(e){return{x:e.x,y:e.y,zoom:e.k}}function ce(e,t){return e.target.closest(`.${t}`)}return(e,t)=>(n(),f(`div`,{ref_key:`viewportRef`,ref:A,class:`vue-flow__viewport vue-flow__container`},[G(_E,{"is-selecting":re.value,"selection-key-pressed":N(H),class:L({connecting:ie.value,dragging:N(w),draggable:N(m)===!0||Array.isArray(N(m))&&N(m).includes(0)})},{default:xe(()=>[G(vE,null,{default:xe(()=>[ne(e.$slots,`default`)]),_:3})]),_:3},8,[`is-selecting`,`selection-key-pressed`,`class`])],512))}}),bE=[`id`],xE=[`id`],SE=[`id`],CE=y({name:`A11yDescriptions`,compatConfig:{MODE:3},setup(e){let{id:t,disableKeyboardA11y:r,ariaLiveMessage:i}=dE();return(e,a)=>(n(),f(I,null,[c(`div`,{id:`${N(uC)}-${N(t)}`,style:{display:`none`}},` Press enter or space to select a node. `+D(N(r)?``:`You can then use the arrow keys to move the node around.`)+` You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. `,9,bE),c(`div`,{id:`${N(dC)}-${N(t)}`,style:{display:`none`}},` Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. `,8,xE),N(r)?O(``,!0):(n(),f(`div`,{key:0,id:`${N(fC)}-${N(t)}`,"aria-live":`assertive`,"aria-atomic":`true`,style:{position:`absolute`,width:`1px`,height:`1px`,margin:`-1px`,border:`0`,padding:`0`,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,"clip-path":`inset(100%)`}},D(N(i)),9,SE))],64))}});function wE(){let e=dE();U(()=>e.viewportHelper.value.viewportInitialized,t=>{t&&setTimeout(()=>{e.emits.init(e),e.emits.paneReady(e)},1)})}function TE(e,t,n){return n===Q.Left?e-t:n===Q.Right?e+t:e}function EE(e,t,n){return n===Q.Top?e-t:n===Q.Bottom?e+t:e}var DE=function({radius:e=10,centerX:t=0,centerY:n=0,position:r=Q.Top,type:i}){return g(`circle`,{class:`vue-flow__edgeupdater vue-flow__edgeupdater-${i}`,cx:TE(t,e,r),cy:EE(n,e,r),r:e,stroke:`transparent`,fill:`transparent`})};DE.props=[`radius`,`centerX`,`centerY`,`position`,`type`],DE.compatConfig={MODE:3};var OE=DE,kE=y({name:`Edge`,compatConfig:{MODE:3},props:[`id`],setup(e){let{id:t,addSelectedEdges:n,connectionMode:r,edgeUpdaterRadius:i,emits:a,nodesSelectionActive:o,noPanClassName:c,getEdgeTypes:l,removeSelectedEdges:u,findEdge:d,findNode:f,isValidConnection:p,multiSelectionActive:h,disableKeyboardA11y:_,elementsSelectable:v,edgesUpdatable:y,edgesFocusable:b,hooks:S}=dE(),C=E(()=>d(e.id)),{emit:T,on:D}=aT(C.value,a),O=w(nT),k=x(),A=m(!1),j=m(!1),M=m(``),N=m(null),P=m(`source`),F=m(null),I=s(()=>C.value.selectable===void 0?v.value:C.value.selectable),L=s(()=>C.value.updatable===void 0?y.value:C.value.updatable),R=s(()=>C.value.focusable===void 0?b.value:C.value.focusable);ge(eT,e.id),ge(tT,F);let B=E(()=>C.value.class instanceof Function?C.value.class(C.value):C.value.class),V=E(()=>C.value.style instanceof Function?C.value.style(C.value):C.value.style),H=E(()=>{let e=C.value.type||`default`,t=O?.[`edge-${e}`];if(t)return t;let n=C.value.template??l.value[e];if(typeof n==`string`&&k){let t=Object.keys(k.appContext.components);t&&t.includes(e)&&(n=z(e,!1))}return n&&typeof n!=`string`?n:(a.error(new bw(vw.EDGE_TYPE_MISSING,n)),!1)}),{handlePointerDown:U}=cT({nodeId:M,handleId:N,type:P,isValidConnection:p,edgeUpdaterType:P,onEdgeUpdate:te,onEdgeUpdateEnd:ne});return()=>{let n=f(C.value.source),o=f(C.value.target),s=`pathOptions`in C.value?C.value.pathOptions:{};if(!n&&!o)return a.error(new bw(vw.EDGE_SOURCE_TARGET_MISSING,C.value.id,C.value.source,C.value.target)),null;if(!n)return a.error(new bw(vw.EDGE_SOURCE_MISSING,C.value.id,C.value.source)),null;if(!o)return a.error(new bw(vw.EDGE_TARGET_MISSING,C.value.id,C.value.target)),null;if(!C.value||C.value.hidden||n.hidden||o.hidden)return null;let u;u=r.value===QS.Strict?n.handleBounds.source:[...n.handleBounds.source||[],...n.handleBounds.target||[]];let d=hw(u,C.value.sourceHandle),p;p=r.value===QS.Strict?o.handleBounds.target:[...o.handleBounds.target||[],...o.handleBounds.source||[]];let m=hw(p,C.value.targetHandle),h=d?.position||Q.Bottom,_=m?.position||Q.Top,{x:v,y}=mw(n,d,h),{x:b,y:x}=mw(o,m,_);return C.value.sourceX=v,C.value.sourceY=y,C.value.targetX=b,C.value.targetY=x,g(`g`,{ref:F,key:e.id,"data-id":e.id,class:[`vue-flow__edge`,`vue-flow__edge-${H.value===!1?`default`:C.value.type||`default`}`,c.value,B.value,{updating:A.value,selected:C.value.selected,animated:C.value.animated,inactive:!I.value&&!S.value.edgeClick.hasListeners()}],tabIndex:R.value?0:void 0,"aria-label":C.value.ariaLabel===null?void 0:C.value.ariaLabel??`Edge from ${C.value.source} to ${C.value.target}`,"aria-describedby":R.value?`${dC}-${t}`:void 0,"aria-roledescription":`edge`,role:R.value?`group`:`img`,...C.value.domAttributes,onClick:re,onContextmenu:ie,onDblclick:ae,onMouseenter:oe,onMousemove:se,onMouseleave:ce,onKeyDown:R.value?de:void 0},[j.value?null:g(H.value===!1?l.value.default:H.value,{id:e.id,sourceNode:n,targetNode:o,source:C.value.source,target:C.value.target,type:C.value.type,updatable:L.value,selected:C.value.selected,animated:C.value.animated,label:C.value.label,labelStyle:C.value.labelStyle,labelShowBg:C.value.labelShowBg,labelBgStyle:C.value.labelBgStyle,labelBgPadding:C.value.labelBgPadding,labelBgBorderRadius:C.value.labelBgBorderRadius,data:C.value.data,events:{...C.value.events,...D},style:V.value,markerStart:`url('#${JC(C.value.markerStart,t)}')`,markerEnd:`url('#${JC(C.value.markerEnd,t)}')`,sourcePosition:h,targetPosition:_,sourceX:v,sourceY:y,targetX:b,targetY:x,sourceHandleId:C.value.sourceHandle,targetHandleId:C.value.targetHandle,interactionWidth:C.value.interactionWidth,...s}),[L.value===`source`||L.value===!0?[g(`g`,{onMousedown:le,onMouseenter:W,onMouseout:ee},g(OE,{position:h,centerX:v,centerY:y,radius:i.value,type:`source`,"data-type":`source`}))]:null,L.value===`target`||L.value===!0?[g(`g`,{onMousedown:ue,onMouseenter:W,onMouseout:ee},g(OE,{position:_,centerX:b,centerY:x,radius:i.value,type:`target`,"data-type":`target`}))]:null]])};function W(){A.value=!0}function ee(){A.value=!1}function te(e,t){T.update({event:e,edge:C.value,connection:t})}function ne(e){T.updateEnd({event:e,edge:C.value}),j.value=!1}function G(e,t){e.button===0&&(j.value=!0,M.value=t?C.value.target:C.value.source,N.value=(t?C.value.targetHandle:C.value.sourceHandle)??null,P.value=t?`target`:`source`,T.updateStart({event:e,edge:C.value}),U(e))}function re(e){var t;let r={event:e,edge:C.value};I.value&&(o.value=!1,C.value.selected&&h.value?(u([C.value]),(t=F.value)==null||t.blur()):n([C.value])),T.click(r)}function ie(e){T.contextMenu({event:e,edge:C.value})}function ae(e){T.doubleClick({event:e,edge:C.value})}function oe(e){T.mouseEnter({event:e,edge:C.value})}function se(e){T.mouseMove({event:e,edge:C.value})}function ce(e){T.mouseLeave({event:e,edge:C.value})}function le(e){G(e,!0)}function ue(e){G(e,!1)}function de(t){var r;!_.value&&pC.includes(t.key)&&I.value&&(t.key===`Escape`?((r=F.value)==null||r.blur(),u([d(e.id)])):n([d(e.id)]))}}}),AE=y({name:`ConnectionLine`,compatConfig:{MODE:3},setup(){let{id:e,connectionMode:t,connectionStartHandle:n,connectionEndHandle:r,connectionPosition:i,connectionLineType:a,connectionLineStyle:o,connectionLineOptions:s,connectionStatus:c,viewport:l,findNode:u}=dE(),d=w(nT)?.[`connection-line`],f=E(()=>u(n.value?.nodeId)),p=E(()=>u(r.value?.nodeId)??null),m=E(()=>({x:(i.value.x-l.value.x)/l.value.zoom,y:(i.value.y-l.value.y)/l.value.zoom})),h=E(()=>s.value.markerStart?`url(#${JC(s.value.markerStart,e)})`:``),_=E(()=>s.value.markerEnd?`url(#${JC(s.value.markerEnd,e)})`:``);return()=>{if(!f.value||!n.value)return null;let e=n.value.id,i=n.value.type,l=f.value.handleBounds,u=l?.[i]??[];if(t.value===QS.Loose){let e=l?.[i===`source`?`target`:`source`]??[];u=[...u,...e]}if(!u)return null;let v=(e?u.find(t=>t.id===e):u[0])??null,y=v?.position??Q.Top,{x:b,y:x}=mw(f.value,v,y),S=null;p.value&&(S=t.value===QS.Strict?p.value.handleBounds[i===`source`?`target`:`source`]?.find(e=>e.id===r.value?.id)||null:[...p.value.handleBounds.source??[],...p.value.handleBounds.target??[]]?.find(e=>e.id===r.value?.id)||null);let C=r.value?.position??(y?Lw[y]:null);if(!y||!C)return null;let w=a.value??s.value.type??ZS.Bezier,T=``,E={sourceX:b,sourceY:x,sourcePosition:y,targetX:m.value.x,targetY:m.value.y,targetPosition:C};return w===ZS.Bezier?[T]=KT(E):w===ZS.Step?[T]=eE({...E,borderRadius:0}):w===ZS.SmoothStep?[T]=eE(E):w===ZS.SimpleBezier?[T]=JT(E):T=`M${b},${x} ${m.value.x},${m.value.y}`,g(`svg`,{class:`vue-flow__edges vue-flow__connectionline vue-flow__container`},g(`g`,{class:`vue-flow__connection`},d?g(d,{sourceX:b,sourceY:x,sourcePosition:y,targetX:m.value.x,targetY:m.value.y,targetPosition:C,sourceNode:f.value,sourceHandle:v,targetNode:p.value,targetHandle:S,markerEnd:_.value,markerStart:h.value,connectionStatus:c.value}):g(`path`,{d:T,class:[s.value.class,c.value,`vue-flow__connection-path`],style:{...o.value,...s.value.style},"marker-end":_.value,"marker-start":h.value})))}}}),jE=[`id`,`markerWidth`,`markerHeight`,`markerUnits`,`orient`],ME=y({name:`MarkerType`,compatConfig:{MODE:3},props:{id:{},type:{},color:{default:`none`},width:{default:12.5},height:{default:12.5},markerUnits:{default:`strokeWidth`},orient:{default:`auto-start-reverse`},strokeWidth:{default:1}},setup(e){return(e,t)=>(n(),f(`marker`,{id:e.id,class:`vue-flow__arrowhead`,viewBox:`-10 -10 20 20`,refX:`0`,refY:`0`,markerWidth:`${e.width}`,markerHeight:`${e.height}`,markerUnits:e.markerUnits,orient:e.orient},[e.type===N($S).ArrowClosed?(n(),f(`polyline`,{key:0,style:be({stroke:e.color,fill:e.color,strokeWidth:e.strokeWidth}),"stroke-linecap":`round`,"stroke-linejoin":`round`,points:`-5,-4 0,0 -5,4 -5,-4`},null,4)):O(``,!0),e.type===N($S).Arrow?(n(),f(`polyline`,{key:1,style:be({stroke:e.color,strokeWidth:e.strokeWidth}),"stroke-linecap":`round`,"stroke-linejoin":`round`,fill:`none`,points:`-5,-4 0,0 -5,4`},null,4)):O(``,!0)],8,jE))}}),NE={class:`vue-flow__marker vue-flow__container`,"aria-hidden":`true`},PE=y({name:`MarkerDefinitions`,compatConfig:{MODE:3},setup(e){let{id:t,edges:r,connectionLineOptions:i,defaultMarkerColor:a}=dE(),o=E(()=>{let e=new Set,n=[],o=r=>{if(r){let i=JC(r,t);e.has(i)||(typeof r==`object`?n.push({...r,id:i,color:r.color||a.value}):n.push({id:i,color:a.value,type:r}),e.add(i))}};for(let e of[i.value.markerEnd,i.value.markerStart])o(e);for(let e of r.value)for(let t of[e.markerStart,e.markerEnd])o(t);return n.sort((e,t)=>e.id.localeCompare(t.id))});return(e,t)=>(n(),f(`svg`,NE,[c(`defs`,null,[(n(!0),f(I,null,pe(o.value,e=>(n(),_e(ME,{id:e.id,key:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,"stroke-width":e.strokeWidth,orient:e.orient},null,8,[`id`,`type`,`color`,`width`,`height`,`markerUnits`,`stroke-width`,`orient`]))),128))])]))}}),FE=y({name:`Edges`,compatConfig:{MODE:3},setup(e){let{findNode:t,getEdges:r,elevateEdgesOnSelect:i}=dE();return(e,a)=>(n(),f(I,null,[G(PE),(n(!0),f(I,null,pe(N(r),e=>(n(),f(`svg`,{key:e.id,class:`vue-flow__edges vue-flow__container`,style:be({zIndex:N(_w)(e,N(t),N(i))})},[G(N(kE),{id:e.id},null,8,[`id`])],4))),128)),G(N(AE))],64))}}),IE=y({name:`Node`,compatConfig:{MODE:3},props:[`id`,`resizeObserver`],setup(e){let{id:t,noPanClassName:n,selectNodesOnDrag:r,nodesSelectionActive:i,multiSelectionActive:a,emits:o,removeSelectedNodes:c,addSelectedNodes:l,updateNodeDimensions:u,onUpdateNodeInternals:d,getNodeTypes:f,nodeExtent:p,elevateNodesOnSelect:h,disableKeyboardA11y:_,ariaLiveMessage:v,snapToGrid:y,snapGrid:b,nodeDragThreshold:S,nodesDraggable:C,elementsSelectable:T,nodesConnectable:D,nodesFocusable:O,hooks:k}=dE(),A=m(null);ge($w,A),ge(Qw,e.id);let j=w(nT),N=x(),F=pT(),{node:I,parentNode:L}=uT(e.id),{emit:R,on:B}=fT(I,o),V=s(()=>I.draggable===void 0?C.value:I.draggable),H=s(()=>I.selectable===void 0?T.value:I.selectable),W=s(()=>I.connectable===void 0?D.value:I.connectable),ee=s(()=>I.focusable===void 0?O.value:I.focusable),te=E(()=>H.value||V.value||k.value.nodeClick.hasListeners()||k.value.nodeDoubleClick.hasListeners()||k.value.nodeMouseEnter.hasListeners()||k.value.nodeMouseMove.hasListeners()||k.value.nodeMouseLeave.hasListeners()),ne=s(()=>!!I.dimensions.width&&!!I.dimensions.height),G=E(()=>{let e=I.type||`default`,t=j?.[`node-${e}`];if(t)return t;let n=I.template||f.value[e];if(typeof n==`string`&&N){let t=Object.keys(N.appContext.components);t&&t.includes(e)&&(n=z(e,!1))}return n&&typeof n!=`string`?n:(o.error(new bw(vw.NODE_TYPE_MISSING,n)),!1)}),re=rT({id:e.id,el:A,disabled:()=>!V.value,selectable:H,dragHandle:()=>I.dragHandle,onStart(e){R.dragStart(e)},onDrag(e){R.drag(e)},onStop(e){R.dragStop(e)},onClick(e){me(e)}}),ie=E(()=>I.class instanceof Function?I.class(I):I.class),ae=E(()=>{let e=(I.style instanceof Function?I.style(I):I.style)||{},t=I.width instanceof Function?I.width(I):I.width,n=I.height instanceof Function?I.height(I):I.height;return!e.width&&t&&(e.width=typeof t==`string`?t:`${t}px`),!e.height&&n&&(e.height=typeof n==`string`?n:`${n}px`),e}),oe=s(()=>Number(I.zIndex??ae.value.zIndex??0));return d(t=>{(t.includes(e.id)||!t.length)&&ce()}),P(()=>{U(()=>I.hidden,(t=!1,n,r)=>{!t&&A.value&&(e.resizeObserver.observe(A.value),r(()=>{A.value&&e.resizeObserver.unobserve(A.value)}))},{immediate:!0,flush:`post`})}),U([()=>I.type,()=>I.sourcePosition,()=>I.targetPosition],()=>{M(()=>{u([{id:e.id,nodeElement:A.value,forceUpdate:!0}])})}),U([()=>I.position.x,()=>I.position.y,()=>L.value?.computedPosition.x,()=>L.value?.computedPosition.y,()=>L.value?.computedPosition.z,oe,()=>I.selected,()=>I.dimensions.height,()=>I.dimensions.width,()=>L.value?.dimensions.height,()=>L.value?.dimensions.width],([e,t,n,r,i,a])=>{let o={x:e,y:t,z:a+(h.value&&I.selected?1e3:0)};n!==void 0&&r!==void 0?I.computedPosition=KC({x:n,y:r,z:i},o):I.computedPosition=o},{flush:`post`,immediate:!0}),U([()=>I.extent,p],([e,t],[n,r])=>{(e!==n||t!==r)&&se()}),I.extent===`parent`||typeof I.extent==`object`&&`range`in I.extent&&I.extent.range===`parent`?$g(()=>ne).toBe(!0).then(se):se(),()=>I.hidden?null:g(`div`,{ref:A,"data-id":I.id,class:[`vue-flow__node`,`vue-flow__node-${G.value===!1?`default`:I.type||`default`}`,{[n.value]:V.value,dragging:re?.value,draggable:V.value,selected:I.selected,selectable:H.value,parent:I.isParent},ie.value],style:{visibility:ne.value?`visible`:`hidden`,zIndex:I.computedPosition.z??oe.value,transform:`translate(${I.computedPosition.x}px,${I.computedPosition.y}px)`,pointerEvents:te.value?`all`:`none`,...ae.value},tabIndex:ee.value?0:void 0,role:ee.value?`group`:void 0,"aria-describedby":_.value?void 0:`${uC}-${t}`,"aria-label":I.ariaLabel,"aria-roledescription":`node`,...I.domAttributes,onMouseenter:le,onMousemove:ue,onMouseleave:de,onContextmenu:fe,onClick:me,onDblclick:pe,onKeydown:he},[g(G.value===!1?f.value.default:G.value,{id:I.id,type:I.type,data:I.data,events:{...I.events,...B},selected:I.selected,resizing:I.resizing,dragging:re.value,connectable:W.value,position:I.computedPosition,dimensions:I.dimensions,isValidTargetPos:I.isValidTargetPos,isValidSourcePos:I.isValidSourcePos,parent:I.parentNode,parentNodeId:I.parentNode,zIndex:I.computedPosition.z??oe.value,targetPosition:I.targetPosition,sourcePosition:I.sourcePosition,label:I.label,dragHandle:I.dragHandle,onUpdateNodeInternals:ce})]);function se(){let e=I.computedPosition,{computedPosition:t,position:n}=pw(I,y.value?Ew(e,b.value):e,o.error,p.value,L.value);(I.computedPosition.x!==t.x||I.computedPosition.y!==t.y)&&(I.computedPosition={...I.computedPosition,...t}),(I.position.x!==n.x||I.position.y!==n.y)&&(I.position=n)}function ce(){A.value&&u([{id:e.id,nodeElement:A.value,forceUpdate:!0}])}function le(e){re?.value||R.mouseEnter({event:e,node:I})}function ue(e){re?.value||R.mouseMove({event:e,node:I})}function de(e){re?.value||R.mouseLeave({event:e,node:I})}function fe(e){return R.contextMenu({event:e,node:I})}function pe(e){return R.doubleClick({event:e,node:I})}function me(e){H.value&&(!r.value||!V.value||S.value>0)&&Hw(I,a.value,l,c,i,!1,A.value),R.click({event:e,node:I})}function he(e){if(!(iC(e)||_.value))if(pC.includes(e.key)&&H.value){let t=e.key===`Escape`;Hw(I,a.value,l,c,i,t,A.value)}else V.value&&I.selected&&mC[e.key]&&(e.preventDefault(),v.value=`Moved selected node ${e.key.replace(`Arrow`,``).toLowerCase()}. New position, x: ${~~I.position.x}, y: ${~~I.position.y}`,F({x:mC[e.key].x,y:mC[e.key].y},e.shiftKey))}}}),LE={height:`0`,width:`0`},RE=y({name:`EdgeLabelRenderer`,compatConfig:{MODE:3},setup(e){let{viewportRef:t}=dE(),r=s(()=>t.value?.getElementsByClassName(`vue-flow__edge-labels`)[0]);return(e,t)=>(n(),f(`svg`,null,[(n(),f(`foreignObject`,LE,[(n(),_e(ye,{to:r.value,disabled:!r.value},[ne(e.$slots,`default`)],8,[`to`,`disabled`]))]))]))}});function zE(e={includeHiddenNodes:!1}){let{nodes:t}=dE();return E(()=>{if(t.value.length===0)return!1;for(let n of t.value)if((e.includeHiddenNodes||!n.hidden)&&(n?.handleBounds===void 0||n.dimensions.width===0||n.dimensions.height===0))return!1;return!0})}var BE={class:`vue-flow__nodes vue-flow__container`},VE=y({name:`Nodes`,compatConfig:{MODE:3},setup(e){let{getNodes:t,updateNodeDimensions:r,emits:i}=dE(),a=zE(),o=m();return U(a,e=>{e&&M(()=>{i.nodesInitialized(t.value)})},{immediate:!0}),P(()=>{o.value=new ResizeObserver(e=>{let t=e.map(e=>({id:e.target.getAttribute(`data-id`),nodeElement:e.target,forceUpdate:!0}));M(()=>r(t))})}),de(()=>o.value?.disconnect()),(e,r)=>(n(),f(`div`,BE,[o.value?(n(!0),f(I,{key:0},pe(N(t),(e,t,r,i)=>{let a=[e.id];if(i&&i.key===e.id&&Se(i,a))return i;let s=(n(),_e(N(IE),{id:e.id,key:e.id,"resize-observer":o.value},null,8,[`id`,`resize-observer`]));return s.memo=a,s},r,0),128)):O(``,!0)]))}});function HE(){let{emits:e}=dE();P(()=>{if(Bw()){let t=document.querySelector(`.vue-flow__pane`);t&&window.getComputedStyle(t).zIndex!==`1`&&e.error(new bw(vw.MISSING_STYLES))}})}var UE=c(`div`,{class:`vue-flow__edge-labels`},null,-1),WE=y({name:`VueFlow`,compatConfig:{MODE:3},props:{id:{},modelValue:{},nodes:{},edges:{},edgeTypes:{},nodeTypes:{},connectionMode:{},connectionLineType:{},connectionLineStyle:{default:void 0},connectionLineOptions:{default:void 0},connectionRadius:{},isValidConnection:{type:[Function,null],default:void 0},deleteKeyCode:{default:void 0},selectionKeyCode:{type:[Boolean,null],default:void 0},multiSelectionKeyCode:{default:void 0},zoomActivationKeyCode:{default:void 0},panActivationKeyCode:{default:void 0},snapToGrid:{type:Boolean,default:void 0},snapGrid:{},onlyRenderVisibleElements:{type:Boolean,default:void 0},edgesUpdatable:{type:[Boolean,String],default:void 0},nodesDraggable:{type:Boolean,default:void 0},nodesConnectable:{type:Boolean,default:void 0},nodeDragThreshold:{},elementsSelectable:{type:Boolean,default:void 0},selectNodesOnDrag:{type:Boolean,default:void 0},panOnDrag:{type:[Boolean,Array],default:void 0},minZoom:{},maxZoom:{},defaultViewport:{},translateExtent:{},nodeExtent:{},defaultMarkerColor:{},zoomOnScroll:{type:Boolean,default:void 0},zoomOnPinch:{type:Boolean,default:void 0},panOnScroll:{type:Boolean,default:void 0},panOnScrollSpeed:{},panOnScrollMode:{},paneClickDistance:{},zoomOnDoubleClick:{type:Boolean,default:void 0},preventScrolling:{type:Boolean,default:void 0},selectionMode:{},edgeUpdaterRadius:{},fitViewOnInit:{type:Boolean,default:void 0},connectOnClick:{type:Boolean,default:void 0},applyDefault:{type:Boolean,default:void 0},autoConnect:{type:[Boolean,Function],default:void 0},noDragClassName:{},noWheelClassName:{},noPanClassName:{},defaultEdgeOptions:{},elevateEdgesOnSelect:{type:Boolean,default:void 0},elevateNodesOnSelect:{type:Boolean,default:void 0},disableKeyboardA11y:{type:Boolean,default:void 0},edgesFocusable:{type:Boolean,default:void 0},nodesFocusable:{type:Boolean,default:void 0},autoPanOnConnect:{type:Boolean,default:void 0},autoPanOnNodeDrag:{type:Boolean,default:void 0},autoPanSpeed:{}},emits:`nodesChange.edgesChange.nodesInitialized.paneReady.init.updateNodeInternals.error.connect.connectStart.connectEnd.clickConnectStart.clickConnectEnd.moveStart.move.moveEnd.selectionDragStart.selectionDrag.selectionDragStop.selectionContextMenu.selectionStart.selectionEnd.viewportChangeStart.viewportChange.viewportChangeEnd.paneScroll.paneClick.paneContextMenu.paneMouseEnter.paneMouseMove.paneMouseLeave.edgeUpdate.edgeContextMenu.edgeMouseEnter.edgeMouseMove.edgeMouseLeave.edgeDoubleClick.edgeClick.edgeUpdateStart.edgeUpdateEnd.nodeContextMenu.nodeMouseEnter.nodeMouseMove.nodeMouseLeave.nodeDoubleClick.nodeClick.nodeDragStart.nodeDrag.nodeDragStop.miniMapNodeClick.miniMapNodeDoubleClick.miniMapNodeMouseEnter.miniMapNodeMouseMove.miniMapNodeMouseLeave.update:modelValue.update:nodes.update:edges`.split(`.`),setup(e,{expose:t,emit:r}){let i=e,a=H(),o=o_(i,`modelValue`,r),s=o_(i,`nodes`,r),c=o_(i,`edges`,r),l=dE(i),u=bT({modelValue:o,nodes:s,edges:c},i,l);return ST(r,l.hooks),wE(),HE(),ge(nT,a),F(u),t(l),(e,t)=>(n(),f(`div`,{ref:N(l).vueFlowRef,class:`vue-flow`},[G(yE,null,{default:xe(()=>[G(FE),UE,G(VE),ne(e.$slots,`zoom-pane`)]),_:3}),ne(e.$slots,`default`),G(CE)],512))}}),GE=y({name:`Panel`,compatConfig:{MODE:3},props:{position:{}},setup(e){let t=e,{userSelectionActive:r}=dE(),i=E(()=>`${t.position}`.split(`-`));return(e,t)=>(n(),f(`div`,{class:L([`vue-flow__panel`,i.value]),style:be({pointerEvents:N(r)?`none`:`all`})},[ne(e.$slots,`default`)],6))}});const KE=16,qE=[96,96],JE=80/2,YE=[80,80],XE=[256,96],ZE=qE[0]*2+16,QE={xMin:-1/0,yMin:-1/0,xMax:1/0,yMax:1/0},$E=e=>e.reduce((e,t)=>t.position[0]>e.position[0]||t.position[1]>e.position[1]?e:t,e[0]),eD=e=>e.reduce((e,t)=>t.position[0]<e.position[0]?t:e,e[0]),tD=e=>e.reduce((e,t)=>t.position[1]<e.position[1]?t:e,e[0]),nD=e=>e.reduce((e,t)=>t.position[0]>e.position[0]?t:e,e[0]),rD=e=>e.reduce((e,t)=>t.position[1]>e.position[1]?t:e,e[0]),iD=e=>{let t=eD(e),n=tD(e),r=nD(e),i=rD(e);return[Math.abs(r.position[0]-t.position[0])+qE[0],Math.abs(i.position[1]-n.position[1])+qE[1]]},aD=(e,t,n=qE)=>!(Math.abs(e[0]-t[0])<=n[0]&&Math.abs(e[1]-t[1])<=n[1]),oD=(e,t)=>!(e.x+e.width<=t.x||t.x+t.width<=e.x||e.y+e.height<=t.y||t.y+t.height<=e.y);var sD=(e,t)=>{let n=Math.ceil(e/t),r=t*n,i=e*t>0?t*(n+1):t*(n-1);return Math.abs(e-r)<Math.abs(e-i)?r:i};function cD(e){return[sD(e[0],16),sD(e[1],16)]}const lD=(e,t,{offset:n=[qE[0]/2,qE[1]/2],size:r=qE,viewport:i=QE,normalize:a=!0}={})=>{let o=cD(n),s=cD(t);if(a){let t=!1,n,a;do{for(t=!1,n=0;n<e.length;n++)if(a=e[n],!(!a||Mt.includes(a.type))&&!aD(a.position,s,r)){t=!0;break}t&&(s[0]+=o[0],s[1]+=o[1])}while(t);s[0]<i.xMin+o[0]&&(s[0]=i.xMin+o[0]),s[1]<i.yMin+o[1]&&(s[1]=i.yMin+o[1]),s[0]>i.xMax-o[0]&&(s[0]=i.xMax-r[0]-o[0]),s[1]>i.yMax-o[1]&&(s[1]=i.yMax-r[1]-o[1])}return s},uD=e=>[(e&&`clientX`in e?e.clientX:e?.touches?.[0]?.clientX)??0,(e&&`clientY`in e?e.clientY:e?.touches?.[0]?.clientY)??0],dD=(e,t,n,r)=>[(e-r[0])/n,(t-r[1])/n];var fD=()=>{let e=window.innerWidth,t=window.innerHeight,n=document.getElementById(`node-view-root`);if(n){let r=n.getBoundingClientRect();e=r.width,t=r.height}return{editorWidth:e,editorHeight:t}};const pD=(e,t)=>{let{editorWidth:n,editorHeight:r}=fD();return dD(n/2,(r-65)/2,e,t)},mD=e=>{let t=[...e];if(t.length){let e=$E(t),n=176-e.position[0],r=240-e.position[1];t.forEach(e=>{e.position[0]+=n+qE[0]*2,e.position[1]+=r})}return t};function hD({workflowNode:e,node:t,nodeType:n,nodeOutputData:r,hasMultipleInputItems:i,nodes:a,connections:o,hasNodeRun:s}){let c=[];if(t?.type.toLocaleLowerCase().includes(`tool`)&&t?.type!==`@n8n/n8n-nodes-langchain.mcpClientTool`&&s&&(JSON.stringify(e.parameters).includes(`$fromAI`)||c.push({message:`No parameters are set up to be filled by AI. Click on the ✨ button next to a parameter to allow AI to set its value.`,location:`outputPane`,whenToDisplay:`afterExecution`})),s&&e.parameters.limit&&r.length===e.parameters.limit&&c.push({message:`Limit of ${e.parameters.limit} items reached. There may be more items that aren't being returned. Tweak the 'Return All' or 'Limit' parameters to access more items.`,location:`outputPane`,whenToDisplay:`afterExecution`}),i&&Dt.includes(e.parameters.operation||``)&&(Fr(a,t.name)?.executeOnce||c.push({message:`This node runs multiple times, once for each input item. Use ‘Execute Once’ in the node settings if you want to run it only once.`,location:`outputPane`})),i&&e.parameters.operation===`sendAndWait`&&(Fr(a,t.name)?.executeOnce||c.push({message:`This action will run only once, for the first input item`,location:`outputPane`})),t.type===`n8n-nodes-base.set`&&t.parameters.mode===`manual`){let e=(ia(n.properties,t.parameters,!0,!1,t,n)?.assignments||{})?.assignments||[],r=[];for(let[t,n]of e.entries())n.name.startsWith(`=`)&&r.push(t+1);r.length>0&&c.push({message:`An expression is used in 'Fields to Set' in ${r.length===1?`field`:`fields`} ${r.join(`, `)}, did you mean to use it in the value instead?`,whenToDisplay:`beforeExecution`,location:`outputPane`})}if(t.type===`n8n-nodes-base.splitInBatches`){let e=Hi(o)[t.name]?.main[1]||[];if(!e.length)c.push({message:`No nodes connected to the 'loop' output of this node`,whenToDisplay:`beforeExecution`,location:`outputPane`});else for(let n of e||[])(Rr(o,n.node)||[]).includes(t.name)||c.push({message:`The last node in the branch of the 'loop' output must be connected back to the input of this node to loop correctly`,whenToDisplay:`beforeExecution`,location:`outputPane`})}return c}function gD(e,t,n){let r=[],i=Math.floor(e/2),a=e%2==1;if(e===0)return[];for(let e=-i;e<=i;e++)if(e===0)a&&r.push(0);else{let i=e*t+Math.sign(e)*(Math.abs(e)-(a?0:1))*n;r.push(i)}return r}const _D=e=>e.meta?.nodeView?Ti.WORKFLOW:[pi.WORKFLOW_EXECUTIONS,pi.EXECUTION_PREVIEW,pi.EXECUTION_HOME].map(String).includes(String(e.name))?Ti.EXECUTIONS:null;function vD({x:e,y:t,zoom:n},{width:r,height:i}){return{xMin:-e/n,yMin:-t/n,xMax:(r-e)/n,yMax:(i-t)/n}}function yD({x:e,y:t,width:n,height:r},i){return{x:e-i,y:t-i,width:n+i*2,height:r+i*2}}function bD(e,t,n,r){function i(e,t,n,r){return e>=n&&t<=r?0:e<n?t>r?0:n-e:r-t}if(n.length===0)return e;let a=e.zoom,o=yD(zC(n),r/a),{xMax:s,xMin:c,yMax:l,yMin:u}=vD(e,t),d=i(o.x,o.x+o.width,c,s),f=i(o.y,o.y+o.height,u,l);return{x:e.x+d*a,y:e.y+f*a,zoom:a}}function xD(e,t,n,r,i,a){let o=Math.max(n,r,1),s=qE[1]+Math.max(0,o-2)*16*2,c=a?1.5:1;return t?{width:(80+16*((e?1:0)+(Math.max(4,i)-1)*3))*c,height:e?YE[1]:s}:e?{width:YE[0]*c,height:YE[1]}:{width:qE[0]*c,height:s}}var SD=20;function CD(e){return JSON.stringify([e.search||``,[...e.categories].sort()])}const wD=Da(qo.TEMPLATES,()=>{let e=m([]),t=m({}),n=m({}),r=m({}),i=m({}),a=m(``),o=m(``),s=m(`${window.location.protocol}//${window.location.host}${window.BASE_PATH}`),c=Al(),l=Y(),u=YN(),d=Ng(),f=th(),p=E(()=>e.value.sort((e,t)=>e.name>t.name?1:-1)),h=E(()=>e=>n.value[e]),g=E(()=>e=>{let t=n.value[e];return t&&`full`in t&&t.full?t:null}),_=E(()=>t.value),v=E(()=>t=>e.value[t]),y=E(()=>e=>{let n=CD(e),r=i.value[n];return r?r.collectionIds.map(e=>t.value[e]):null}),b=E(()=>e=>{let t=CD(e),i=r.value[t];return i?i.workflowIds.map(e=>n.value[e]):null}),x=E(()=>e=>{let t=CD(e),n=r.value[t];return n?n.totalWorkflows:0}),S=E(()=>e=>{let t=CD(e);return!!r.value[t]?.loadingMore}),C=E(()=>e=>{let t=CD(e),n=r.value[t];return!!(n&&!n.loadingMore&&n.totalWorkflows===n.workflowIds.length)}),w=E(()=>c.templatesHost!==Xi.DEFAULT_API_HOST),T=E(()=>d.currentUserCloudInfo?.role??(u.currentUser?.personalizationAnswers&&`role`in u.currentUser.personalizationAnswers?u.currentUser.personalizationAnswers.role:void 0)),D=E(()=>{let e={...Xi.UTM_QUERY,utm_instance:s.value,utm_n8n_version:l.versionCli,utm_awc:String(f.activeWorkflows.length)};return T.value&&(e.utm_user_role=T.value),new URLSearchParams({...e})}),O=E(()=>`${Xi.BASE_WEBSITE_URL}${Ig(T.value)}?${D.value.toString()}`),k=(e,t)=>`${t?`${Xi.BASE_WEBSITE_URL}${t}`:Xi.BASE_WEBSITE_URL}?${e.toString()}`,A=t=>{e.value=t},j=e=>{e.forEach(e=>{let n=(e.workflows||[]).map(e=>({id:e.id})),r=t.value[e.id]||{};t.value[e.id]={...r,...e,workflows:n}})},M=e=>{e.forEach(e=>{let t=n.value[e.id]||{};n.value[e.id.toString()]={...t,...e}})},N=e=>{let t=e._collections.map(e=>String(e.id)),n=CD(e.query);i.value[n]={collectionIds:t}},P=t=>{let n=t.workflows.map(e=>e.id),i=CD(t.query),a=r.value[i];if(!a){r.value[i]={workflowIds:n,totalWorkflows:t.totalWorkflows,categories:e.value};return}r.value[i]={workflowIds:[...a.workflowIds,...n],totalWorkflows:t.totalWorkflows,categories:e.value}},F=e=>{let t=CD(e);r.value[t]&&(r.value[t]={...r.value[t],loadingMore:!0})},I=e=>{let t=CD(e);r.value[t]&&(r.value[t]={...r.value[t],loadingMore:!1})},L=()=>{o.value=a.value,a.value=``},R=()=>{a.value||=`templates-${Date.now()}`},z=async e=>{let t=c.templatesHost,n=l.versionCli,r={...(await as(t,e,{"n8n-version":n})).workflow,full:!0};return M([r]),r},B=async e=>{let t=c.templatesHost,n=l.versionCli,r=await is(t,e,{"n8n-version":n});return j([{...r.collection,full:!0}]),M(r.collection.workflows),_.value[e]},V=async()=>{let e=p.value;if(e.length)return e;let t=c.templatesHost,n=l.versionCli,r=(await ts(t,{"n8n-version":n})).categories;return A(r),r},H=async e=>{let t=y.value(e);if(t)return t;let n=c.templatesHost,r=l.versionCli,i=(await ns(n,e,{"n8n-version":r})).collections;return j(i),N({query:e,_collections:i}),i.forEach(e=>M(e.workflows)),i},U=async t=>{let n=b.value(t);if(n)return e.value=r.value[CD(t)].categories??[],n;let i=c.templatesHost,a=l.versionCli,o=await rs(i,{...t,page:1,limit:SD},{"n8n-version":a});return M(o.workflows),P({...o,query:t}),b.value(t)||[]},W=async e=>{if(S.value(e)&&!C.value(e))return[];let t=b.value(e)||[],n=c.templatesHost;F(e);try{let r=await rs(n,{...e,page:t.length/SD+1,limit:SD});return I(e),M(r.workflows),P({...r,query:e}),b.value(e)||[]}catch(t){throw I(e),t}},ee=async e=>{let t=c.templatesHost,n=l.versionCli;return await os(t,e,{"n8n-version":n})};return{categories:e,collections:t,workflows:n,workflowSearches:r,collectionSearches:i,currentSessionId:a,previousSessionId:o,currentN8nPath:s,allCategories:p,getTemplatesById:h,getFullTemplateById:g,getCollectionById:_,getCategoryById:v,getSearchedCollections:y,getSearchedWorkflows:b,getSearchedWorkflowsTotal:x,isSearchLoadingMore:S,isSearchFinished:C,hasCustomTemplatesHost:w,websiteTemplateRepositoryURL:O,constructTemplateRepositoryURL:k,websiteTemplateRepositoryParameters:D,addCategories:A,addCollections:j,addWorkflows:M,addCollectionsSearch:N,addWorkflowsSearch:P,setWorkflowSearchLoading:F,setWorkflowSearchLoaded:I,resetSessionId:L,setSessionId:R,fetchTemplateById:z,fetchCollectionById:B,getCategories:V,getCollections:H,getWorkflows:U,getMoreWorkflows:W,getWorkflowTemplate:ee,getFixedWorkflowTemplate:async e=>{let t=await ee(e);return t?.workflow?.nodes&&(t.workflow.nodes=mD(t.workflow.nodes),t.workflow.nodes?.forEach(e=>{e.credentials&&delete e.credentials})),t}}});function TD(e){return e=e.replace(/[^a-zA-Z0-9\-]/g,`_`),e.length>=64&&(e=e.slice(0,63)),e}var ED=[`@n8n/n8n-nodes-langchain.toolCode`,`@n8n/n8n-nodes-langchain.toolHttpRequest`,`@n8n/n8n-nodes-langchain.mcpClientTool`,[`@n8n/n8n-nodes-langchain.toolWorkflow`,1.2]],DD=[`parameters.name`,`parameters.toolName`,`parameters.description`,`parameters.toolDescription`],OD=[`options`,`credentialsSelect`];const kD={description:{initialValue:``,type:`string`,typeOptions:{rows:2},tooltip:K.baseText(`parameterOverride.descriptionTooltip`)}};function AD(e,t){return e.hasOwnProperty(t)}function jD(e,t){let{extraProps:n,extraPropValues:r}=e,i=LD(t);if(i)for(let[e,t]of Object.entries(i))AD(n,e)&&(n[e].initialValue===t?delete r[e]:r[e]=t)}function MD(e){switch(e){case`boolean`:case`number`:case`json`:return e;default:return`string`}}function ND(e){return e.startsWith(`={{ ${kn} $fromAI(`)}function PD(e){return e.includes(`
`)||!e.includes("`")?"`":e.includes(`"`)?`'`:`"`}function FD(e){let t=e.path.split(`.`).filter(e=>/\[\d+\]/i.test(e)).map(e=>e.replaceAll(/[\[\]]/gi,``)),n=[...t,e.parameter.displayName].join(`_`);return n=t.length>1?n.slice(-63):n.slice(0,63),n}function ID(e,t,n){let{extraPropValues:r,extraProps:i}=e,a=n?`${kn} `:``,o=TD(FD(t)),s=r?.description?.toString()??i.description.initialValue,c=PD(s);return`={{ ${a}$fromAI('${o}', ${c}${s.replaceAll(/\\/g,`\\\\`).replaceAll(c,`\\${c}`)}${c}, '${MD(t.parameter.type)}') }}`}function LD(e){try{let t=or(e.replace(/\\[^`]/g,`\\\\`));if(t.length===1)return{description:t[0].description}}catch{}return null}function RD(e,t){if(typeof e==`string`)return t.type===e;{let[n,r]=e;return t.type===n&&t.typeVersion<=r}}function zD(e,t){if(ED.some(e=>RD(e,t))||DD.includes(e.path)||OD.includes(e.parameter.type))return!1;let n=JM().getNodeType(t.type,t?.typeVersion)?.codex;return!n?.categories?.includes(`AI`)||!n?.subcategories?.AI?.includes(`Tools`)||n?.subcategories?.AI?.includes(`Vector Stores`)?!1:!e.parameter.noDataExpression}function BD(e,t){if(!t)return null;if(zD(e,t)){let t={type:`fromAI`,extraProps:kD,extraPropValues:{}};return jD(t,e.value?.toString()??``),t}return null}var VD=e(vt(),1),HD=500,UD={isActive:!1,parameters:[]};const WD=Da(qo.FOCUS_PANEL,()=>{let e=TN(),t=E(()=>e.workflowId?Z(X(e.workflowId)):void 0),n=$m(zr),r=E(()=>{let t={[e.workflowId]:UD};return n.value?Ct(n.value,{fallbackValue:t}):t}),i=E(()=>r.value[e.workflowId]??UD),a=m(0),o=m(`setup`),s=E(()=>i.value.isActive),c=E(()=>i.value.width??HD),l=E(()=>i.value.parameters),u=E(()=>l.value.map(e=>{let n=t.value?.getNodeById(e.nodeId);if(!n)return e;let r=(0,VD.default)(n?.parameters??{},e.parameterPath.replace(/parameters\./,``));return typeof r==`string`&&ND(r)?e:{...e,node:n,value:r}})),d=E(()=>u.value[0]&&x(u.value[0])?u.value[0]:void 0);function f({parameters:t,isActive:i,wid:o=e.workflowId,width:u=void 0,removeEmpty:d=!1}){let f=r.value;d&&``in f&&delete f[``],n.value=JSON.stringify({...r.value,[o]:{isActive:i??s.value,parameters:t??l.value,width:u??c.value}}),i&&(a.value=Date.now())}function p(e){if(!i.value||!(``in r.value))return;let t=r.value[``];f({wid:e,parameters:t.parameters,isActive:t.isActive,removeEmpty:!0})}function h(e){f({parameters:[e],isActive:!0})}function g(){f({isActive:!0})}function _(){f({isActive:!1})}function v(){f({parameters:[]})}function y(){f({isActive:!s.value})}function b(e){f({width:e})}function x(e){return`value`in e&&`node`in e}function S(e){o.value=e}let C=E(()=>u.value.map(e=>({parameterPath:e.parameterPath,nodeType:x(e)?e.node.type:`unresolved`,nodeId:e.nodeId})));Ae(()=>i.value,e=>{e.isActive&&e.parameters.length>0&&(a.value=Date.now())}),U(()=>{let e=d.value;return e?`${e.nodeId}:${e.parameterPath}`:null},(e,t)=>{e&&e!==t&&(o.value=`focus`)});function w(e){f({isActive:!0,wid:e})}return{focusPanelActive:s,focusedNodeParameters:u,focusedNodeParametersInTelemetryFormat:C,lastFocusTimestamp:a,focusPanelWidth:c,resolvedParameter:d,selectedTab:o,openWithFocusedNodeParameter:h,isRichParameter:x,openFocusPanel:g,openFocusPanelForWorkflow:w,closeFocusPanel:_,toggleFocusPanel:y,onNewWorkflowSave:p,updateWidth:b,unsetParameters:v,setSelectedTab:S}}),GD=2e3;function KD(e,t=GD,n=32e3){return Math.min(t*2**(e-1),n)}const qD=Da(`workflowSave`,()=>{let e=m(zi.Idle),t=m(null),n=m(0),r=m(GD),i=m(!1),a=m(null),o=m(!1);function s(t){e.value=t}function c(e){t.value=e}function l(){n.value++,r.value=KD(n.value)}function u(){return r.value}function d(e){i.value=e}function f(e){a.value=e}function p(e){o.value=e}function h(){n.value=0,r.value=GD,i.value=!1,a.value=null,o.value=!1}function g(){e.value=zi.Idle,t.value=null,h()}return{autoSaveState:e,pendingSave:t,retryCount:n,retryDelay:r,isRetrying:i,lastError:a,conflictModalShown:o,setAutoSaveState:s,setPendingSave:c,incrementRetry:l,getRetryDelay:u,setRetrying:d,setLastError:f,setConflictModalShown:p,resetRetry:h,reset:g}}),JD=Da(`backendConnection`,()=>{let e=m(!0);function t(t){e.value=t}return{isOnline:S(e),setOnline:t}});function YD({router:e,workflowState:t,onSaved:n}){let r=RN(),i=Yh(),a=Xh(),o=Ee(),s=TN(),c=th(),l=t??jO(),u=WD(),d=bg(),f=IO(),p=LO(),m=wD(),h=hO(),{getWorkflowDataToSave:g,checkConflictingWebhooks:_,getWorkflowProjectRole:v}=Uk(),y=qD(),b=JD();async function x(e,{confirm:t=async()=>!0,cancel:n=async()=>{}}={}){let c=s.workflowId?Z(X(s.workflowId)):void 0;if(!r.stateIsDirty||c?.isArchived||!ni(c?.scopes??[]).workflow.update){e();return}switch(await a.confirm(o.baseText(`generic.unsavedWork.confirmMessage.message`),{title:o.baseText(`generic.unsavedWork.confirmMessage.headline`),type:`warning`,confirmButtonText:o.baseText(`generic.unsavedWork.confirmMessage.confirmButtonText`),cancelButtonText:o.baseText(`generic.unsavedWork.confirmMessage.cancelButtonText`),showClose:!0})){case Ln:await w({},!1)?(await i.showNpsSurveyIfPossible(),r.markStateClean(),e(await t())):S(e);return;case En:await n(),r.markStateClean(),e();return;case An:s.isWorkflowSaved[s.workflowId]&&S(e);return}}function S(t){t(e.resolve({name:pi.WORKFLOW,params:{name:s.workflow.id}}))}function C(e,t){let n=e[t];if(Array.isArray(n))return n[0]??void 0;if(n!==null)return n}async function w({id:t}={},i=!0,l=!1,u=!1){if(ug().preferences.branchReadOnly)return!1;let p=fg().isLoading,m=t??C(e.currentRoute.value.params,`name`),_=C(e.currentRoute.value.query,`parentFolderId`),b=C(e.currentRoute.value.query,`uiContext`);if(y.pendingSave){if(u)return!0;l||await y.pendingSave}let x=(async()=>{let x=m?c.getWorkflowById(m):null;if(!m||!x?.id)return!!await T({parentFolderId:_,uiContext:b,autosaved:u},i);try{if(!l&&p)return!0;r.addActiveAction(`workflowSaving`);let e=r.dirtyStateSetCount,t=await g();if(t.id!==m)throw Error(`Attempted to save a workflow different from the current workflow`);t.versionId=s.workflowVersionId,t.aiBuilderAssisted=h.getAiBuilderMadeEdits();let i=Z(X(m));t.expectedChecksum=i.checksum,t.autosaved=u;let a=await s.updateWorkflow(m,t,l);if(!a.checksum)throw Error(`Failed to update workflow`);return s.setWorkflowVersionData({versionId:a.versionId,name:null,description:null}),i.setUpdatedAt(a.updatedAt),r.dirtyStateSetCount===e&&r.markStateClean(),r.removeActiveAction(`workflowSaving`),hg().run(`workflow.afterUpdate`,{workflowData:a}),h.resetAiBuilderMadeEdits(),y.resetRetry(),n?.(!1),!0}catch(n){if(console.error(n),r.removeActiveAction(`workflowSaving`),n.errorCode===409){if(f.track(`User attempted to save locked workflow`,{workflowId:m,sharing_role:v(m)}),!y.conflictModalShown){u&&y.setConflictModalShown(!0);let n=e.resolve({name:pi.WORKFLOW,params:{name:m}}).href;if(await a.confirm(o.baseText(`workflows.concurrentChanges.confirmMessage.message`,{interpolate:{url:n}}),o.baseText(`workflows.concurrentChanges.confirmMessage.title`),{confirmButtonText:o.baseText(`workflows.concurrentChanges.confirmMessage.confirmButtonText`),cancelButtonText:o.baseText(`workflows.concurrentChanges.confirmMessage.cancelButtonText`)})===`confirm`)return await w({id:t},i,!0)}if(!u)return!1}if(u){y.incrementRetry(),y.setLastError(n.message);let e=y.getRetryDelay();return y.setRetrying(!0),setTimeout(()=>{y.setRetrying(!1),r.stateIsDirty&&D()},e),d.showMessage({title:o.baseText(`workflowHelpers.showMessage.title`),message:o.baseText(`generic.autosave.retrying`,{interpolate:{error:n.message,retryIn:`${Math.ceil(e/1e3)}s`}}),type:`error`,duration:e}),!1}return d.showMessage({title:o.baseText(`workflowHelpers.showMessage.title`),message:n.message,type:`error`}),!1}})();y.setPendingSave(x);try{return await x}finally{y.pendingSave===x&&y.setPendingSave(null)}}async function T({name:t,tags:i,resetWebhookUrls:a,resetNodeIds:h,openInNewWindow:v,parentFolderId:y,uiContext:b,requestNewId:x,data:S,autosaved:C}={},w=!0){try{r.addActiveAction(`workflowSaving`);let o=r.dirtyStateSetCount,T=S||await g(),E={};x&&delete T.id,h&&(T.nodes=T.nodes.map(e=>(p.assignNodeId(e),e))),a&&(T.nodes=T.nodes.map(e=>{if(e.webhookId){let t=p.assignWebhookId(e);yr(e.parameters.path)||(e.parameters.path=t),E[e.name]=e.webhookId}return e})),t&&(T.name=t.trim()),i&&(T.tags=i),y&&(T.parentFolderId=y),b&&(T.uiContext=b),C&&(T.autosaved=C);let D=await s.createNewWorkflow(T);if(c.addWorkflow(D),u.onNewWorkflowSave(D.id),v){let t=e.resolve({name:pi.WORKFLOW,params:{name:D.id}});return window.open(t.href,`_blank`),r.removeActiveAction(`workflowSaving`),n?.(!0),D.id}if(D.activeVersionId!==null){let e=await _(D.id);e&&(D.active=!1,D.activeVersionId=null,d.showMessage({title:`Conflicting Webhook Path`,message:`Workflow set to inactive: Live webhook in another workflow uses same path as node '${e.trigger.name}'.`,type:`error`}))}let O=Z(X(D.id));O.setActiveState({activeVersionId:D.activeVersionId,activeVersion:D.activeVersion??null}),D.checksum&&O.setChecksum(D.checksum),l.setWorkflowId(D.id),s.setWorkflowVersionData({versionId:D.versionId,name:null,description:null}),O.setUpdatedAt(D.updatedAt),a&&Object.keys(E).forEach(e=>{let t={key:`webhookId`,value:E[e],name:e};l.setNodeValue(t)});let k=e.currentRoute.value,A=k.query.templateId;return A&&f.track(`User saved new workflow from template`,{template_id:_f(String(A)),workflow_id:D.id,wf_template_repo_session_id:m.previousSessionId}),w&&await e.replace({name:k.name,params:{...k.params},query:{...k.query,new:void 0}}),r.removeActiveAction(`workflowSaving`),r.dirtyStateSetCount===o&&r.markStateClean(),hg().run(`workflow.afterUpdate`,{workflowData:D}),n?.(!0),D.id}catch(e){return r.removeActiveAction(`workflowSaving`),d.showMessage({title:o.baseText(`workflowHelpers.showMessage.title`),message:e.message,type:`error`}),null}}let E=ke(()=>{y.autoSaveState!==zi.Idle&&(y.pendingSave||(y.setAutoSaveState(zi.InProgress),(async()=>{try{await w({},!0,!1,!0)}finally{y.autoSaveState===zi.InProgress&&y.setAutoSaveState(zi.Idle),r.stateIsDirty&&!y.isRetrying&&(y.setAutoSaveState(zi.Scheduled),E())}})()))},Zi(Ur.API.AUTOSAVE),{maxWait:Zi(Ur.API.AUTOSAVE_MAX_WAIT)}),D=()=>{y.pendingSave||y.isRetrying||b.isOnline&&(y.setAutoSaveState(zi.Scheduled),E())};return U(()=>b.isOnline,(e,t)=>{e&&!t&&r.stateIsDirty&&D()}),{promptSaveUnsavedWorkflowChanges:x,saveCurrentWorkflow:w,saveAsNewWorkflow:T,autoSaveWorkflow:D,cancelAutoSave:()=>{Qm(E)&&E.cancel(),y.setAutoSaveState(zi.Idle)}}}var XD=`n8n`,ZD=`Workflow Automation`;function QD(e={}){let{releaseChannel:t,windowRef:n}=e,r=!t||t===`stable`?XD:`${XD}[${t.toUpperCase()}]`,i=m(void 0),a=e=>{let t=[e||ZD,r];(n?.value?.document??document).title=t.join(` - `)};return{set:a,reset:()=>{i.value=void 0,a(``)},setDocumentTitle:(e,t)=>{i.value=t;let n=`⚠️`;t===`EXECUTING`?n=`🔄`:t===`IDLE`?n=`▶️`:t===`AI_BUILDING`?n=`[Building]`:t===`AI_DONE`&&(n=`[Done]`),a(`${n} ${e}`)},getDocumentState:()=>i.value}}function $D(e){let{releaseChannel:t}=Al().settings;return QD({releaseChannel:t,windowRef:e})}var eO=3,tO=m(typeof Notification<`u`?Notification.permission:`denied`);function nO(e={}){let{cooldownMs:t=Or,maxDismissals:n=eO}=e,r=Ce(Mi,{lastDismissedAt:null,dismissCount:0},{writeDefaults:!1}),i=E(()=>typeof Notification<`u`),a=E(()=>tO.value===`granted`),o=E(()=>tO.value===`denied`),s=E(()=>r.value.lastDismissedAt?Date.now()-r.value.lastDismissedAt<t:!1),c=E(()=>r.value.dismissCount>=n),l=E(()=>i.value&&tO.value===`default`&&!s.value&&!c.value);function u(){typeof Notification<`u`&&(tO.value=Notification.permission)}async function d(){if(u(),tO.value===`granted`)return{permission:`granted`,wasRequested:!1};if(tO.value===`denied`)return{permission:`denied`,wasRequested:!1};if(s.value||c.value)return{permission:tO.value,wasRequested:!1};try{let e=await Notification.requestPermission();return tO.value=e,{permission:e,wasRequested:!0}}catch{return u(),{permission:tO.value,wasRequested:!0}}}function f(){r.value={lastDismissedAt:Date.now(),dismissCount:r.value.dismissCount+1}}function p(){r.value={lastDismissedAt:null,dismissCount:0}}function m(e,t){return!a.value||!i.value?null:new Notification(e,t)}return{permissionState:tO,isSupported:i,isEnabled:a,isDenied:o,isInCooldown:s,canPrompt:l,requestPermission:d,recordDismissal:f,resetMetadata:p,refreshPermissionState:u,showNotification:m,metadata:E(()=>r.value)}}const rO=Pe(),iO=Pe(),aO=Pe(),oO=Pe(),sO=Pe(),cO=Pe(),lO=Pe();var uO=[`data-action-parameter-node`],dO=y({__name:`AiUpdatedCodeMessage`,props:{nodeName:{}},setup(e){let t=Ee();return(r,a)=>(n(),f(`div`,null,[i(D(N(t).baseText(`aiAssistant.codeUpdated.message.body1`))+` `,1),c(`a`,{"data-action":`openNodeDetail`,"data-action-parameter-node":e.nodeName},D(e.nodeName),9,uO),i(` `+D(N(t).baseText(`aiAssistant.codeUpdated.message.body2`)),1)]))}});function fO(e){let t=Y(),n=NO(),r=Ee(),i=m({});function a(e,t,r){n.activeNodeName===t?Object.keys(r).forEach(e=>{let n={node:t,name:`parameters.${e}`,value:r[e]};lO.emit(`updateParameterValue`,n)}):Z(X(e)).setNodeParameters({name:t,value:r},!0)}function o(e,t){return t.reduce((t,n)=>(t[n]=cr(e[n]),t),{})}function s(e){e!==n.activeNodeName&&bg().showMessage({type:`success`,title:r.baseText(`aiAssistant.codeUpdated.message.title`),message:g(dO,{nodeName:e}),duration:4e3})}async function c(n,r){let c=e.chatMessages.value[r];if(!c||c.type!==`code-diff`)throw Error(`No code diff to apply`);let l=c;try{let r=e.getTargetNodeName(l),c=e.getSessionId(l);Na(r,`No target node for code diff`),l.replacing=!0;let u=l.suggestionId,d=Z(X(n)).getNodeByName(r);Na(d);let f=i.value[u];if(f)a(n,d.name,f.suggested);else{let{parameters:e}=await jA(t.restApiContext,{suggestionId:l.suggestionId,sessionId:c});i.value[u]={previous:o(d.parameters,Object.keys(e)),suggested:e},a(n,d.name,e)}l.replaced=!0,rO.emit(`codeDiffApplied`),s(d.name)}catch(e){console.error(e),l.error=!0}l.replacing=!1}async function l(t,n){let r=e.chatMessages.value[n];if(!r||r.type!==`code-diff`)throw Error(`No code diff to apply`);let o=r;try{let n=e.getTargetNodeName(o);Na(n,`No target node for code diff`),o.replacing=!0;let r=o.suggestionId,c=i.value[r];Na(c);let l=Z(X(t)).getNodeByName(n);Na(l);let u=c.previous;a(t,l.name,u),o.replaced=!1,rO.emit(`codeDiffApplied`),s(l.name)}catch(e){console.error(e),o.error=!0}o.replacing=!1}return{suggestions:i,applyCodeDiff:c,undoCodeDiff:l}}var pO=e(It(),1),mO=-1;const hO=Da(qo.BUILDER,()=>{let e=m([]),t=m(!1),n=m(!1),r=m(),i=m(null),a=m(!1),o=m(`build`),s=m(),c=m(),l=m({success:0,error:0}),u=m(!1),d=m(!1),f=m(),p=m(),h=m(!1),g=m(),_=$D(),v=Al(),y=Y(),b=TN(),x=jO(),S=NO(),C=ot(),w=Ee(),T=IO(),D=RN(),O=YD({router:et()}),k=ah(),A=Eh(),{processAssistantMessages:j,createUserMessage:M,createUserAnswersMessage:N,createAssistantMessage:P,createErrorMessage:F,clearMessages:I,mapAssistantMessageToUI:L,clearRatingLogic:R,getRunningTools:z}=Rh(),{workflowTodos:B,getTodosToTrack:V,hasTodosHiddenByPinnedData:H}=Gh(),{applyCodeDiff:W,undoCodeDiff:ee}=fO({chatMessages:e,getTargetNodeName:e=>e.nodeName??S.activeNodeName??A.confirmedNodes[0]?.nodeName??``,getSessionId:e=>{let t=e.sdkSessionId;return Na(t,`No SDK session ID for code diff`),t}}),te=E(()=>y.pushRef),ne=E(()=>{let e=k.getVariant(Di.name);return e===Di.codeNoPinData||e===Di.codePinData}),G=E(()=>e.value.find(e=>e.role===`user`&&e.type===`text`)?.content),re=E(()=>v.isAiBuilderEnabled),ie=E(()=>e.value.filter(Ne)),ae=E(()=>e.value.filter(ut)),oe=E(()=>e.value.filter(e=>e.role===`assistant`)),se=E(()=>{if(c.value===void 0||s.value===void 0||s.value===mO)return;let e=s.value-c.value;return e>0?e:0}),ce=E(()=>se.value===void 0?!1:se.value===0),le=E(()=>{if(!(s.value===void 0||s.value===mO||se.value===void 0))return s.value===0?0:se.value/s.value*100}),ue=E(()=>le.value!==void 0&&le.value<=10),de=E(()=>e.value.length>0),fe=E(()=>{let t=e.value.findLast(e=>`revertVersion`in e&&e.revertVersion);return t&&`revertVersion`in t?t.revertVersion:null}),pe=E(()=>{let e=k.getVariant(rr.name);return e===!0||e===rr.variant}),me=E(()=>{for(let t=e.value.length-1;t>=0;t--){let n=e.value[t];if(oh(n)||sh(n)||bh(n))return n;if(n.role===`user`)break}return null}),he=E(()=>me.value!==null),ge=E(()=>{let e=me.value;return e?sh(e):!1}),_e=E(()=>{let e=me.value;return e?oh(e)||bh(e):!1});function ve(){e.value=I(),r.value=void 0,a.value=!1,p.value=void 0,g.value=void 0,u.value=!1,o.value=`build`}function ye(){let e=b.workflowId;e&&IA(y.restApiContext,e)}function be(e){e===`plan`&&!pe.value||(o.value=e,Je(`user_switched_builder_mode`,{mode:e}))}function xe(e){l.value[e]++,e===`success`&&(u.value=!0)}function Se(){l.value={success:0,error:0}}function Ce(e){r.value=e}function we({userMessageId:e,startWorkflowJson:t}){let n=ie.value.filter(t=>t.id?.startsWith(e)),r=He();return{tools_called:fr(n.map(e=>e.toolName)),start_workflow_json:t,end_workflow_json:r,workflow_modified:r!==t}}function Te(e){if(!f.value)return;let{userMessageId:t,planApproved:n}=f.value;T.track(`End of response from builder`,{user_message_id:t,workflow_id:b.workflowId,session_id:te.value,tab_visible:document.visibilityState===`visible`,code_builder:ne.value,mode:o.value,...n?{plan_approved:!0}:{},...we(f.value),...e,...V()})}function K(t){return e.value.some(e=>e.type===`workflow-updated`&&e.id?.startsWith(t))}function De(e){let{showNotification:t,isEnabled:n}=nO();if(!n.value)return;let r=b.workflowName,i=e===`workflow-ready`?`aiAssistant.builder.notification.title`:`aiAssistant.builder.notification.inputNeeded.title`,a=e===`workflow-ready`?`aiAssistant.builder.notification.body`:`aiAssistant.builder.notification.inputNeeded.body`,o=t(w.baseText(i),{body:w.baseText(a,{interpolate:{workflowName:r}}),icon:`/favicon.ico`,tag:`workflow-build-${b.workflowId}`,requireInteraction:!1});o&&(Je(`browser_generation_done_notified`,{completion_type:e}),o.onclick=()=>{window.focus(),o.close()})}function Oe(r){t.value=!1,n.value=!1,i.value&&=(i.value.abort(),null),Te(r);let a=f.value?.userMessageId,{revertVersion:o}=f.value??{};f.value=void 0,a&&o&&K(a)&&(e.value=e.value.map(e=>e.id===a?{...e,revertVersion:o}:e));let s=r&&`aborted`in r&&r.aborted;document.hidden?(_.setDocumentTitle(b.workflowName,`AI_DONE`),!s&&a&&De(K(a)?`workflow-ready`:`input-needed`)):_.setDocumentTitle(b.workflowName,`IDLE`)}function ke(){Oe({aborted:!0})}function Ae(t,n,i){Na(t instanceof Error),Oe({error:t.message}),r.value=void 0;let a=e.value.filter(e=>!(e.type===`tool`&&e.status===`running`));if(t.name===`AbortError`){let t=P(w.baseText(`aiAssistant.builder.streamAbortedMessage`),`aborted-streaming`,{aborted:!0});e.value=[...a,t];return}let o=F(w.baseText(`aiAssistant.serviceError.message`,{interpolate:{message:t.message}}),n,i);e.value=[...a,o]}function je(r,i,a,o,s){if(!s){let t=o?N(o,i):M(r,i,void 0,a??[]);e.value=R([...e.value,t])}let c=r.trim()===`/compact`?`aiAssistant.thinkingSteps.compacting`:`aiAssistant.thinkingSteps.thinking`;Ce(w.baseText(c)),t.value=!0,n.value||_.setDocumentTitle(b.workflowName,`AI_BUILDING`)}function Me(t,n){return async()=>{e.value=e.value.filter(e=>e.id!==t),await n()}}function Pe(e){let{text:t,source:n,type:r,userMessageId:i,currentWorkflowJson:a,errorMessage:o,errorNodeType:s,executionStatus:c,mode:u}=e,d={source:n,message:t,session_id:te.value,start_workflow_json:a,workflow_id:b.workflowId,type:r,manual_exec_success_count_since_prev_msg:l.value.success,manual_exec_error_count_since_prev_msg:l.value.error,user_message_id:i,code_builder:ne.value,mode:u,...V()};if(r===`execution`){let e=`{}`,t=0;try{e=JSON.stringify(b.workflowExecutionData??{}),t=ff(e)/1024}catch(e){console.warn(`Failed to stringify execution data for telemetry:`,e)}d.execution_data=t>512?`{}`:e,d.execution_status=c??``,c===`error`&&(d.error_message=o??``,d.error_node_type=s??``)}T.track(`User submitted builder message`,d);let f=A.confirmedNodes.length;if(f>0){let e=/\b(this node|this|it|these nodes|these|that node|that)\b/i.test(t);T.track(`ai.focusedNodes.chatSent`,{focused_count:f,has_deictic_ref:e})}}async function Fe(){let e=b.isNewWorkflow,t=D.stateIsDirty;if((e||t)&&!await O.saveCurrentWorkflow())throw Error(`Could not save changes`);let n=b.workflowVersionId;if(!n)return;let r=Z(X(b.workflowId)).updatedAt;return{id:n,createdAt:typeof r==`number`?new Date(r).toISOString():r}}async function Ie(s){if(n.value=!!s.helpMessage,t.value)return;let c=A.confirmedNodes.map(e=>e.nodeName);ge.value&&s.resumeData===void 0&&(s={...s,resumeData:{action:`modify`,feedback:s.text}});let l;try{l=await Fe()}catch{return}S.unsetActiveNodeName();let{text:u,source:d=`chat`,quickReplyType:m,errorMessage:h,type:g=`message`,errorNodeType:_,executionStatus:x,resumeData:C,mode:w}=s;s.initialGeneration!==void 0&&(a.value=s.initialGeneration);let T=Oh();p.value=T;let E=He(),D=typeof C==`object`&&!!C&&`action`in C&&C.action===`approve`;f.value={userMessageId:T,startWorkflowJson:E,revertVersion:l,...D?{planApproved:!0}:{}},Pe({text:u,source:d,type:g,userMessageId:T,currentWorkflowJson:E,errorMessage:h,errorNodeType:_,executionStatus:x,mode:o.value}),Se(),je(u,T,c,s.planAnswers,s.skipUserMessage);let O=b.workflowExecutionData?.data?.resultData,k=C===void 0?w??(o.value===`plan`?`plan`:void 0):w,M=await kh(u,T,{workflowId:b.workflowId,quickReplyType:m,workflow:b.workflow,executionData:O,nodesForSchema:Object.keys(b.nodesByName),mode:k,isPlanModeEnabled:pe.value,allowSendingParameterValues:v.settings.ai.allowSendingParameterValues});C!==void 0&&(M.resumeData=C),A.removeAllConfirmed();let N=Me(T,async()=>await Ie(s));i.value&&i.value.abort(),i.value=new AbortController;try{kA(y.restApiContext,{payload:M},t=>{n.value||t.messages.some(e=>`toolName`in e&&e.toolName===`assistant`)&&(n.value=!0);let i=j(e.value,t.messages,T,N);e.value=i.messages,Ye(t.messages),i.shouldClearThinking?r.value=void 0:i.thinkingMessage!==void 0&&(r.value=i.thinkingMessage)},()=>{Oe()},e=>Ae(e,T,N),l?.id,i.value?.signal)}catch(e){Ae(e,T,N)}}async function Le(e){he.value&&await Ie({text:w.baseText(`aiAssistant.builder.planMode.actions.submitAnswers`),resumeData:e,planAnswers:e})}async function Re(e){if(!he.value)return;let t=e.feedback?.trim();if(e.action===`approve`){Je(`user_clicked_implement_plan`),await Ie({text:w.baseText(`aiAssistant.builder.planMode.actions.implement`),resumeData:e,mode:`build`}),o.value=`build`;return}if(e.action===`modify`){await Ie({text:t?w.baseText(`aiAssistant.builder.planMode.actions.modifyWithFeedback`,{interpolate:{feedback:t}}):w.baseText(`aiAssistant.builder.planMode.actions.modify`),resumeData:e});return}await Ie({text:t?w.baseText(`aiAssistant.builder.planMode.actions.rejectWithFeedback`,{interpolate:{feedback:t}}):w.baseText(`aiAssistant.builder.planMode.actions.reject`),resumeData:e})}async function ze(){let t=b.workflowId;if(!t||!b.isWorkflowSaved[t]||g.value===t||h.value)return[];h.value=!0;try{let n=await PA(y.restApiContext,t,ne.value);g.value=t;let r=n.sessions||[];if(r.length>0){let n=r[0],i=Ah(n.messages),a=await jh(y.restApiContext,t,i),o=Nh(n.messages,a).map(e=>L(e,`id`in e&&typeof e.id==`string`?e.id:Oh())).filter(e=>e.type!==`workflow-updated`);e.value=o;let s=[...o].reverse().find(e=>e.role===`user`&&e.type===`text`);s&&(p.value=s.id)}return r}catch(e){return console.error(`Failed to load AI sessions:`,e),[]}finally{h.value=!1}}function Be(){let e=b.workflowId?Z(X(b.workflowId)):void 0,t=e?.pinData;if(t){for(let n of Object.keys(t))e?.unpinNodeData(n),b.nodeMetadata[n]&&(b.nodeMetadata[n].pinnedDataLastRemovedAt=Date.now());D.markStateDirty()}}function Ve(){x.removeAllConnections({setStateDirty:!1}),x.removeAllNodes({setStateDirty:!1,removePinData:!0})}function He(){return JSON.stringify((0,pO.default)(b.workflow,[`nodes`,`connections`]))}function Ue(){return d.value}function We(){d.value=!1}function Ge(e){d.value=e}function Ke(e,t){s.value=e,c.value=t}async function qe(){if(re.value)try{let e=await FA(y.restApiContext);Ke(e.creditsQuota,e.creditsClaimed)}catch{}}U(()=>b.workflowId,(e,n)=>{e!==n&&(t.value&&ke(),ve(),e&&C?.name&&rh.includes(C.name)&&re.value&&(qe(),ze()))}),U([()=>b.workflowId,()=>b.workflow.nodes?.length??0],([,t])=>{e.value.length>0||pe.value&&(o.value=t===0?`plan`:`build`)});function Je(e,t){let n={workflow_id:b.workflowId,session_id:te.value,event_type:e};t&&Object.keys(t).length>0&&(n.event_properties=t),p.value&&(n.last_user_message_id=p.value),T.track(`Workflow builder journey`,n)}function Ye(e){for(let t of e)yh(t)&&Je(`web_fetch_approval_prompted`,{domain:t.domain,url:t.url}),hh(t)&&t.toolName===`web_fetch`&&(t.status===`completed`||t.status===`error`)&&Je(`web_fetch_completed`,{status:t.status})}let Xe=Jh();async function Ze(t,n){let r=b.workflowId;if(D.stateIsDirty&&!await O.saveCurrentWorkflow())return;let i=await Xe.restoreWorkflow(r,t);x.setWorkflowProperty(`versionId`,i.versionId),Z(X(r)).setUpdatedAt(i.updatedAt),await LA(y.restApiContext,r,n,ne.value||void 0);let a=e.value.findIndex(e=>e.id===n),s=a===-1?0:e.value.slice(a).filter(e=>`revertVersion`in e&&e.revertVersion).length;return a!==-1&&(e.value=e.value.slice(0,a)),o.value=`build`,Je(`revert_version_from_builder`,{revert_user_message_id:n,revert_version_id:t,no_versions_reverted:s}),i}function Qe(){_.getDocumentState()===`AI_DONE`&&_.setDocumentTitle(b.workflowName,`IDLE`)}return{chatMessages:e,streaming:t,isHelpStreaming:n,builderThinkingMessage:r,isAIBuilderEnabled:re,isCodeBuilder:ne,builderMode:o,isPlanModeAvailable:pe,isInterrupted:he,hasPendingPlan:ge,shouldDisableChatInput:_e,workflowPrompt:G,toolMessages:ie,workflowMessages:ae,assistantMessages:oe,trackingSessionId:te,streamingAbortController:i,initialGeneration:a,creditsQuota:E(()=>s.value),creditsRemaining:se,hasNoCreditsRemaining:ce,creditsPercentageRemaining:le,isLowCredits:ue,hasMessages:de,latestRevertVersion:fe,workflowTodos:B,hasTodosHiddenByPinnedData:H,hasHadSuccessfulExecution:u,lastUserMessageId:p,unpinAllNodes:Be,abortStreaming:ke,resetBuilderChat:ve,setBuilderMode:be,sendChatMessage:Ie,resumeWithQuestionsAnswers:Le,resumeWithPlanDecision:Re,loadSessions:ze,getWorkflowSnapshot:He,fetchBuilderCredits:qe,updateBuilderCredits:Ke,getRunningTools:z,trackWorkflowBuilderJourney:Je,getAiBuilderMadeEdits:Ue,resetAiBuilderMadeEdits:We,setBuilderMadeEdits:Ge,incrementManualExecutionStats:xe,resetManualExecutionStats:Se,applyCodeDiff:W,undoCodeDiff:ee,restoreToVersion:Ze,clearExistingWorkflow:Ve,clearBackendSession:ye,clearDoneIndicatorTitle:Qe}});var gO=1e5;function _O(e,t,n,r){return`${e}_r${t}_o${n}_i${r}`}function vO(e,t){if(!e?.data?.resultData?.runData)return[];let n=e.data.resultData.runData[t.nodeName]?.[t.runIndex],r=n?.source||[];if(r.length===0)return[];let i=n?.data?.main?.[t.outputIndex]?.[t.itemIndex];return i?.pairedItem===void 0?[]:(Array.isArray(i.pairedItem)?i.pairedItem:typeof i.pairedItem==`object`?[i.pairedItem]:[{item:i.pairedItem}]).map(e=>{let t=e.input||0;return{nodeName:r?.[t]?.previousNode,runIndex:r?.[t]?.previousNodeRun||0,itemIndex:e.item,outputIndex:r[t]?.previousNodeOutput||0}}).filter(e=>Om(e))}function yO(e,t,n,r){if(e.size>=gO)throw Error();e.data[t]=e.data[t]||[];let i=n.input||0,a=r[i]?.previousNode;if(!a){e.data[t].push([t]),e.size++;return}let o=r[i]?.previousNodeOutput||0,s=_O(a,r[i]?.previousNodeRun||0,o,n.item);e.data[s]||(e.data[s]=[[s]],e.size++),e.data[s]?.forEach(n=>{e.data[t]?.push([...n,t]),e.size++})}function bO(e,t,n,r,i,a){let o=`${e}_r${t}`;if(r.has(o)||(r.add(o),a.has(e)))return;let s=n[e];if(!Array.isArray(s))return;let c=s[t];if(!c?.data?.main)return;let l=c.source||[];l.forEach(e=>{e?.previousNode&&bO(e.previousNode,e.previousNodeRun??0,n,r,i,a)}),(c.data.main||[]).forEach((n,r)=>{n&&n.forEach((n,a)=>{let o=_O(e,t,r,a);if(!n.pairedItem){i.data[o]=[];return}let s=n.pairedItem;if(Array.isArray(s)){s.forEach(e=>{yO(i,o,e,l)});return}if(typeof s==`object`){yO(i,o,s,l);return}yO(i,o,{item:s},l)})})}function xO(e){let t={};return Object.keys(e.data).forEach(n=>{e.data[n]?.forEach(e=>{e.forEach(e=>{e!==n&&(t[e]=t[e]||new Set,t[e].add(n),t[n]=t[n]||new Set,t[n].add(e))})})}),t}function SO(e){let t=0;for(let n in e)for(let r of e[n]){let e=r.data;if(e)for(let n in e){let r=e[n].reduce((e,t)=>t?e+t.length:e,0);t+=r}}return t}function CO(e){if(!e?.data?.resultData?.runData)return{};let t=e.data.resultData.runData;if(SO(t)>1e3)return{};let n={size:0,data:{}};try{let r=new Set,i=new Set(Object.keys(e.data.resultData.pinData??{}));Object.keys(t).forEach(e=>{t[e].forEach((a,o)=>{bO(e,o,t,r,n,i)})})}catch{return{}}return xO(n)}function wO(){let e=m([]),t=m(null);function n(n){e.value.push(n),t.value=n}function r(t){let n=e.value.indexOf(t);n!==-1&&e.value.splice(n,1)}function i(){e.value=[],t.value=null}function a(t){return e.value.includes(t)}return{executingNode:e,lastAddedExecutingNode:t,addExecutingNode:n,removeExecutingNode:r,isNodeExecuting:a,clearNodeExecutionQueue:i}}const TO=Da(qo.WORKFLOW_STATE,()=>({executingNode:wO()}));var EO=e(bp(),1),DO=e(en(),1),OO=e(It(),1);const kO=Pe();function AO(){let e=TN(),t=th(),n=TO(),r=RN(),i=Y(),a=JM();function o(n){n.setStateDirty&&r.markStateDirty(`metadata`),e.workflow.name=n.newName,e.workflowObject.name=n.newName,e.workflow.id&&t.workflowsById[e.workflow.id]&&(t.workflowsById[e.workflow.id].name=n.newName)}function s(t){t?.setStateDirty&&r.markStateDirty(),e.workflow.connections={},e.workflowObject.setConnections({})}function c(t){t.setStateDirty&&r.markStateDirty(),t.removePinData&&e.workflow.id&&Z(X(e.workflow.id)).setPinData({}),e.workflow.nodes.splice(0,e.workflow.nodes.length),e.workflowObject.setNodes(e.workflow.nodes),e.nodeMetadata={}}function l(t){t?.data?.waitTill&&delete t.data.resultData.runData[t.data.resultData.lastNodeExecuted],e.workflowExecutionData=t,e.workflowExecutionPairedItemMappings=CO(t),e.workflowExecutionResultDataLastUpdate=Date.now(),e.workflowExecutionStartedData=void 0}function u(){return e.workflow.nodes.forEach(e=>{e.issues=void 0}),!0}function d(t){e.workflow.id=t||``,e.workflowObject.id=e.workflow.id}function f(t,n){e.workflow[t]=n}function p(t){e.private.setActiveExecutionId(t)}async function m(e,t,n){let r={name:``,settings:{...lp}};try{let a={name:e,projectId:t,parentFolderId:n};r=await Vd(i.restApiContext,cf(a)?void 0:a)}catch{r.name=e||`My workflow`}return o({newName:r.name,setStateDirty:!1}),r}let h=$D();function g(t){if(p(void 0),n.executingNode.clearNodeExecutionQueue(),e.executionWaitingForWebhook=!1,h.setDocumentTitle(e.workflowName,`IDLE`),e.workflowExecutionStartedData=void 0,$M(),!e.workflowExecutionData)return;let r=e.workflowExecutionData.data?.resultData.runData??{};for(let e in r)r[e]=r[e].filter(({executionStatus:e})=>e===`success`);t&&(e.workflowExecutionData.status=t.status,e.workflowExecutionData.startedAt=t.startedAt,e.workflowExecutionData.stoppedAt=t.stoppedAt)}function _(){s({setStateDirty:!1}),c({setStateDirty:!1,removePinData:!0}),l(null),u(),d(``),o({newName:``,setStateDirty:!1}),e.workflowObject.setSettings({...lp}),p(void 0),n.executingNode.executingNode.length=0,e.executionWaitingForWebhook=!1,hO().resetManualExecutionStats()}function v(t,n){if(t!==-1){let r=e.workflow.nodes[t],i=!(0,DO.default)((0,OO.default)(r,Object.keys(n)),n);return i&&(Object.assign(r,n),e.workflow.nodes[t]=r,e.workflowObject.setNodes(e.workflow.nodes)),i}return!1}function y(t,n){let i=e.workflow.nodes.findIndex(e=>e.name===t.name);if(i===-1)throw Error(`Node with the name "${t.name}" could not be found to set parameter.`);let{name:a,parameters:o}=e.workflow.nodes[i];v(i,{parameters:n&&$d(t.value)?{...o,...t.value}:t.value})&&(r.markStateDirty(),e.nodeMetadata[a].parametersLastUpdatedAt=Date.now())}function b(t){let n=(0,EO.default)(e.workflow.nodes,e=>e.type===t.key),r=a.getNodeType(n.type);if(!r)return;let i=ia(r.properties,t.value,!0,!1,n,r);n&&y({value:i,name:n.name},!0)}function x(t){let n=e.workflow.nodes.findIndex(e=>e.name===t.name);if(n===-1||!t.key)throw Error(`Node with the name "${t.name}" could not be found to set parameter.`);let i=v(n,{[t.key]:t.value});i&&r.markStateDirty(),i&&![`position`,`notes`,`notesInFlow`].includes(t.key)&&(e.nodeMetadata[e.workflow.nodes[n].name].parametersLastUpdatedAt=Date.now())}function S(t,n){let r=e.workflow.nodes.find(e=>e.id===t);r&&x({name:r.name,key:`position`,value:n})}function C(t,n){let r=e.workflow.nodes.findIndex(e=>e.id===t);return r===-1?!1:v(r,n)}function w(t){e.nodeMetadata[t]||(e.nodeMetadata[t]={pristine:!0}),e.nodeMetadata[t].parametersLastUpdatedAt=Date.now()}function T(t){let n=e.workflow.nodes.findIndex(e=>e.name===t.name);if(n!==-1)for(let e of Object.keys(t.properties)){let i=e,a=t.properties[i];v(n,{[e]:a})&&r.markStateDirty()}kO.emit(`updateNodeProperties`,[this,t])}function E(t){let n=e.workflow.nodes.findIndex(e=>e.name===t.node);if(n===-1)return;let r=e.workflow.nodes[n];if(t.value===null){if(r.issues?.[t.type]===void 0)return;let{[t.type]:e,...i}=r.issues;v(n,{issues:i})}else v(n,{issues:{...r.issues,[t.type]:t.value}})}return{resetState:_,removeAllConnections:s,removeAllNodes:c,setWorkflowExecutionData:l,resetAllNodesIssues:u,setWorkflowId:d,setWorkflowName:o,setWorkflowProperty:f,setActiveExecutionId:p,getNewWorkflowData:m,markExecutionAsStopped:g,setNodeParameters:y,setLastNodeParameters:b,setNodeValue:x,setNodePositionById:S,setNodeIssue:E,updateNodeAtIndex:v,updateNodeById:C,updateNodeProperties:T,resetParametersLastUpdatedAt:w,executingNode:n.executingNode}}function jO(){return w(jt,()=>AO(),!0)}var MO={relativeLeft:1,relativeRight:1,relativeWidth:1};const NO=Da(qo.NDV,()=>{let e=$m(`N8N_MAPPING_ONBOARDED`),t=$m(`N8N_TABLE_HOVER_ONBOARDED`),n=$m(`N8N_AUTOCOMPLETE_ONBOARDED`),r=m(null),i=m({unknown:{...MO},regular:{...MO},dragless:{...MO},inputless:{...MO},wide:{...MO}}),a=m(``),o=m({nodeName:void 0,run:void 0,branch:void 0,data:{isEmpty:!0}}),s=Ce(`N8N_NDV_INPUT_PANEL_DISPLAY_MODE`,`schema`),c=m({run:void 0,branch:void 0,data:{isEmpty:!0},editMode:{enabled:!1,value:``}}),l=Ce(`N8N_NDV_OUTPUT_PANEL_DISPLAY_MODE`,`table`),u=m(``),d=m(``),f=m({}),p=m(null),h=m(0),g=m({isDragging:!1,type:``,data:``,dimensions:null,activeTarget:null}),_=m(e.value===`true`),v=m(t.value===`true`),y=m(n.value===`true`),b=m(!1),x=m(),S=TN(),C=E(()=>S.workflowId?Z(X(S.workflowId)):void 0),w=jO(),T=E(()=>S.getNodeByName(r.value||``)),D=E(()=>{let e=S.getWorkflowExecution,t=o.value.nodeName,n=o.value.run??0,r=o.value.branch??0;return!e||!t||n===void 0||r===void 0?[]:e.data?.resultData?.runData?.[t]?.[n]?.data?.main?.[r]??[]}),O=E(()=>o.value.nodeName),k=E(()=>{let e=D.value;return O.value?C.value?.pinData?.[O.value]??e:e}),A=E(()=>k.value.length>0),j=E(()=>g.value.isDragging),M=E(()=>g.value.type),N=E(()=>g.value.data),P=E(()=>g.value.activeTarget!==null),F=E(()=>c.value.editMode),I=E(()=>g.value.activeTarget?.stickyPosition??null),L=E(()=>{let e={},t=(S.connectionsByDestinationNode[T.value?.name||``]??{}).main;if(!t||t.length<2)return e;for(let[n,r]of t.entries())for(let t of r??[])e[t.node]||(e[t.node]=[]),e[t.node].push(n+1);return e}),R=E(()=>o.value.run),z=E(()=>o.value.branch),B=E(()=>o.value.data.isEmpty),V=E(()=>c.value.data.isEmpty),H=E(()=>{let e=O.value;return!T.value||!e?!1:S.workflowObject.getParentNodes(T.value.name,q.Main,1).includes(e)}),U=E(()=>H.value?p.value:null),W=E(()=>U.value?U.value:h.value&&O.value?{nodeName:O.value,runIndex:R.value??0,outputIndex:z.value??0,itemIndex:h.value}:null),ee=E(()=>r.value!==null),te=()=>{r.value=null,x.value=void 0},ne=(e,t)=>{r.value!==e&&(r.value=e,x.value=t)},G=e=>{o.value.nodeName=e},re=e=>{o.value.run=e},ie=e=>{c.value.run=e},ae=e=>{i.value[e.panelType]={...i.value[e.panelType],...e.dimensions}},oe=()=>{a.value=`ndv-${tr()}`},se=()=>{a.value=``},ce=e=>{e.pane===`input`?s.value=e.mode:l.value=e.mode},le=e=>{c.value.editMode.enabled=e},ue=e=>{c.value.editMode.value=e},de=e=>{u.value=e},fe=({type:e,data:t,dimensions:n})=>{g.value={isDragging:!0,type:e,data:t,dimensions:n,activeTarget:null}},pe=()=>{g.value={isDragging:!1,type:``,data:``,dimensions:null,activeTarget:null}},me=e=>{g.value.activeTarget=e},he=e=>{f.value={...f.value,...e}},ge=()=>{f.value={}},_e=e=>{e&&xe(),p.value=e},ve=e=>{e.pane===`input`?o.value.branch=e.branchIndex:c.value.branch=e.branchIndex},ye=e=>{e.panel===`input`?o.value.data.isEmpty=e.isEmpty:c.value.data.isEmpty=e.isEmpty},be=()=>{_.value=!0,e.value=`true`},xe=()=>{v.value=!0,t.value=`true`};return{activeNode:T,ndvInputData:D,ndvInputNodeName:O,ndvInputDataWithPinnedData:k,hasInputData:A,inputPanelDisplayMode:s,outputPanelDisplayMode:l,isDraggableDragging:j,draggableType:M,draggableData:N,canDraggableDrop:P,outputPanelEditMode:F,draggableStickyPos:I,ndvNodeInputNumber:L,ndvInputRunIndex:R,ndvInputBranchIndex:z,isInputParentOfActiveNode:H,getHoveringItem:U,expressionTargetItem:W,isNDVOpen:ee,isInputPanelEmpty:B,isOutputPanelEmpty:V,focusedMappableInput:u,isMappingOnboarded:_,pushRef:a,activeNodeName:r,focusedInputPath:d,input:o,output:c,hoveringItem:p,highlightDraggables:b,mappingTelemetry:f,draggable:g,isAutocompleteOnboarded:y,expressionOutputItemIndex:h,isTableHoverOnboarded:v,mainPanelDimensions:i,lastSetActiveNodeSource:x,setActiveNodeName:ne,unsetActiveNodeName:te,setInputNodeName:G,setInputRunIndex:re,setOutputRunIndex:ie,setMainPanelDimensions:ae,setNDVPushRef:oe,resetNDVPushRef:se,setPanelDisplayMode:ce,setOutputPanelEditModeEnabled:le,setOutputPanelEditModeValue:ue,setMappableNDVInputFocus:de,draggableStartDragging:fe,draggableStopDragging:pe,setDraggableTarget:me,setMappingTelemetry:he,resetMappingTelemetry:ge,setHoveringItem:_e,setNDVBranchIndex:ve,setNDVPanelDataIsEmpty:ye,setMappingOnboarded:be,setTableHoverOnboarded:xe,setAutocompleteOnboarded:()=>{y.value=!0,n.value=`true`},setHighlightDraggables:e=>{b.value=e},updateNodeParameterIssues:e=>{let t=S.getNodeByName(r.value||``);if(t){let n=S.workflow.nodes.findIndex(e=>e.name===t.name);w.updateNodeAtIndex(n,{issues:{...t.issues,...e}})}},setFocusedInputPath:e=>{d.value=e}}}),PO=new class{pageEventQueue;previousPath;get rudderStack(){return window.rudderanalytics}constructor(){this.pageEventQueue=[],this.previousPath=``}init(e,{instanceId:t,userId:n,projectId:r,versionCli:i}){if(!e.enabled||!e.config||this.rudderStack)return;let{config:{key:a,proxy:o,sourceConfig:s}}=e,c=Y();this.initRudderStack(a,o,{integrations:{All:!1},loadIntegration:!1,configUrl:s}),this.identify(t,n,i,r),this.flushPageEvents(),this.track(`Session started`,{session_id:c.pushRef})}identify(e,t,n,r){let i=Al(),a={instance_id:e,version_cli:n};i.isCloudDeployment&&(a.user_cloud_id=i.settings?.n8nMetadata?.userId??``),t?this.rudderStack?.identify(`${e}#${t}${r?`#`+r:``}`,a,{context:{ip:`0.0.0.0`}}):this.rudderStack?.reset()}track(e,t){if(!this.rudderStack)return;let n=window.posthog?.get_session_id?.(),r={...t,version_cli:Y().versionCli,posthog_session_id:n};this.rudderStack.track(e,r,{context:{ip:`0.0.0.0`}}),ah().capture(e,r)}page(e){if(this.rudderStack){if(e.path===this.previousPath)return;this.previousPath=e.path;let t=String(e.name),n={};e.meta?.telemetry&&typeof e.meta.telemetry.getProperties==`function`&&(n=e.meta.telemetry.getProperties(e)),n.theme=RN().appliedTheme;let r=e.meta?.telemetry?.pageCategory||`Editor`;this.rudderStack.page(r,t,n,{context:{ip:`0.0.0.0`}})}else this.pageEventQueue.push({route:e})}reset(){this.rudderStack?.reset()}flushPageEvents(){let e=this.pageEventQueue;this.pageEventQueue=[],e.forEach(({route:e})=>{this.page(e)})}trackAskAI(e,t={}){if(this.rudderStack)switch(t.session_id=Y().pushRef,t.ndv_session_id=NO().pushRef,e){case`askAi.generationFinished`:this.track(`Ai code generation finished`,t);default:break}}trackAiTransform(e,t={}){if(this.rudderStack)switch(t.session_id=Y().pushRef,t.ndv_session_id=NO().pushRef,e){case`generationFinished`:this.track(`Ai Transform code generation finished`,t);default:break}}trackNodeParametersValuesChange(e,t){if(this.rudderStack){let n={"n8n-nodes-base.slack":`parameters.otherOptions.includeLinkToWorkflow`,"n8n-nodes-base.microsoftTeams":`parameters.options.includeLinkToWorkflow`,"n8n-nodes-base.telegram":`parameters.additionalFields.appendAttribution`}[e]||`parameters.options.appendAttribution`;t.name===n&&this.track(`User toggled n8n reference option`,{node:e,toValue:t.value})}}initRudderStack(e,t,n){if(window.rudderanalytics=window.rudderanalytics||[],this.rudderStack){this.rudderStack.methods=[`load`,`page`,`track`,`identify`,`alias`,`group`,`ready`,`reset`,`getAnonymousId`,`setAnonymousId`],this.rudderStack.factory=e=>(...t)=>{if(!this.rudderStack)throw Error(`RudderStack not initialized`);let n=[e,...t];return this.rudderStack.push(n),this.rudderStack};for(let e of this.rudderStack.methods)this.rudderStack[e]=this.rudderStack.factory(e);this.rudderStack.loadJS=()=>{let e=document.createElement(`script`);e.type=`text/javascript`,e.async=!0,e.src=`https://cdn-rs.n8n.io/v1/ra.min.js`;let t=document.getElementsByTagName(`script`)[0];t&&t.parentNode&&t.parentNode.insertBefore(e,t)},this.rudderStack.loadJS(),this.rudderStack.load(e,t,n)}}},FO={install(e){e.config.globalProperties.$telemetry=PO}};function IO(){return PO}function LO(e={}){let t=VA(),n=Cm(),r=JM(),i=TN(),a=e.workflowState??jO(),o=Al(),s=Ee(),c=fg(),l=m(!1),u=m(!1),d=m(!1),f=m(null),p=E(()=>i.workflowObject);function h(e){return Object.keys(e.parameters).includes(`nodeCredentialType`)}function g(e){let{parameters:t}=e;if(!$d(t))return!1;if(`resource`in t||`operation`in t){let{resource:e,operation:n}=t;return Mm(e)&&e.includes(`__CUSTOM_API_CALL__`)||Mm(n)&&n.includes(`__CUSTOM_API_CALL__`)}return!1}function _(e,t,n){let i=e?r.getNodeType(e.type,e.typeVersion):null;if(e&&i){let t=p.value.getNode(e.name),n=!!e&&r.isTriggerNode(e.type),a=!!e&&r.isToolNode(e.type);if(t&&!Hr(_r(p.value,t,i)).includes(q.Main)&&!a&&!n)return!1}return!!(t||n.length>0)}function v(e){if(!e||!o.isEnterpriseFeatureEnabled[Si.Sharing])return[];let t=(i.workflowId?Z(X(i.workflowId)):void 0)?.usedCredentials??{};return Object.values(e).map(({id:e})=>e).filter(e=>e!==null).filter(e=>e in t&&!t[e]?.currentUserHasAccess)}function y(e,t,n,i,a=`displayOptions`){return Jr(e,t,n,i,i?.type?r.getNodeType(i.type,i.typeVersion):null,a)}function b(e,t,n,r){let a=i.workflowId?Z(X(i.workflowId)):void 0,o=Object.keys(a?.pinData??{}),s=null;if(r??=[],t.disabled===!0||o.includes(t.name))return null;if(e===null)r.includes(`typeUnknown`)||(s={typeUnknown:!0});else{if(r.includes(`parameters`)||(s=Dr(e.properties,t,e)),!r.includes(`credentials`)){let n=N(t,e);s===null?s=n:Dn(s,n)}let i=M(n,t,e);s===null?s=i:Dn(s,i)}return x(t)&&!r.includes(`execution`)&&(s===null&&(s={}),s.execution=!0),s}function x(e){let t=i.getWorkflowRunData;if(!t?.hasOwnProperty(e.name))return!1;for(let n of t[e.name])if(n.error!==void 0)return!0;return!1}function S(e){return{credentials:{[e.name]:[s.baseText(`nodeHelpers.credentialsUnset`,{interpolate:{credentialType:e.displayName}})]}}}function C(e){let t=r.getNodeType(e.type,e.typeVersion);if(!t)return;let n=M(p.value,e,t);a.setNodeIssue({node:e.name,type:`input`,value:n?.input?n.input:null})}function w(){let e=i.allNodes;for(let t of e)C(t)}function T(){let e=i.allNodes;for(let t of e)a.setNodeIssue({node:t.name,type:`execution`,value:x(t)?!0:null})}function D(){let e=i.allNodes;for(let t of e)j(t)}function O(e){let t=i.getNodeByName(e);t&&k(t)}function k(e){let t=N(e),n=null;t!==null&&(n=t.credentials),a.setNodeIssue({node:e.name,type:`credentials`,value:n})}function A(e){let t=i.getNodeByName(e);t&&j(t)}function j(e,t){let n=t??r.getNodeType(e.type,e.typeVersion);if(n===null)return;let i=Dr(n.properties,e,n),o=null;i!==null&&(o=i.parameters),a.setNodeIssue({node:e.name,type:`parameters`,value:o})}function M(e,t,n){let r={},i=e.getNode(t.name),a=[];return n&&i&&(a=_r(e,i,n)),a.forEach(n=>{typeof n==`string`||n.required!==!0||e.getParentNodes(t.name,n.type,1).length===0&&(r[n.type]=[s.baseText(`nodeIssues.input.missing`,{interpolate:{inputName:n.displayName||n.type}})])}),Object.keys(r).length?{input:r}:null}function N(e,n){let a=n??r.getNodeType(e.type,e.typeVersion),o=i.workflowId?Z(X(i.workflowId)):void 0;if(e.disabled||!a?.credentials)return null;let c={},l,u,d,f,{authentication:p,genericAuthType:m,nodeCredentialType:g}=e.parameters;if(p===`genericCredentialType`&&m!==``&&P(e,m)){let e=t.getCredentialTypeByName(m);return e?S(e):null}if(h(e)&&p===`predefinedCredentialType`&&g!==``&&e.credentials!==void 0){let n=t.getCredentialsByType(g),r=o?.usedCredentials?.[e.credentials?.[g]?.id];if(F(e,g,n)&&!r){let e=t.getCredentialTypeByName(g);return e?S(e):null}}if(h(e)&&p===`predefinedCredentialType`&&g!==``&&P(e,g)){let e=t.getCredentialTypeByName(g);return e?S(e):null}for(let n of a.credentials)if(y(e.parameters,n,``,e))if(u=t.getCredentialTypeByName(n.name),d=u?u.displayName:n.name,!e.credentials?.[n.name])n.required&&(c[n.name]=[s.baseText(`nodeIssues.credentials.notSet`,{interpolate:{type:a.displayName}})]);else{if(f=e.credentials[n.name],typeof f==`string`&&(f={id:null,name:f}),l=t.getCredentialsByType(n.name),l===null&&(l=[]),f.id&&l.find(e=>e.id===f.id))continue;let r=l.filter(e=>e.name===f.name);if(r.length>1){c[n.name]=[s.baseText(`nodeIssues.credentials.notIdentified`,{interpolate:{name:f.name,type:d}}),s.baseText(`nodeIssues.credentials.notIdentified.hint`)];continue}r.length===0&&!o?.usedCredentials?.[f.id]&&!jg([`rbac`],{rbac:{scope:`credential:read`}})&&(c[n.name]=[s.baseText(`nodeIssues.credentials.doNotExist`,{interpolate:{name:f.name,type:d}}),s.baseText(`nodeIssues.credentials.doNotExist.hint`)])}return Object.keys(c).length===0?null:{credentials:c}}function P(e,t){return!e.credentials||!Object.keys(e.credentials).includes(t)}function F(e,t,n){if(!e.credentials||!n)return!1;let r=e.credentials[t];return r?!n.find(e=>e.id===r.id):!1}function I(){let e=i.allNodes,t;for(let n of e)t=N(n),a.setNodeIssue({node:n.name,type:`credentials`,value:t?.credentials??null})}function L(e,t=0,n){return R(e,n)?.[t]??null}function R(e,t){return(t?.resultData.runData??i.getWorkflowRunData)?.[e]??null}function z(e){return R(e)?.some(({executionStatus:e})=>e&&[`success`,`error`].includes(e))??!1}function B(e,t=0,n=q.Main,r){return(R(e,r)??[]).findLastIndex(e=>e.data&&H(e.data,t,n).length>0)}function V(e,t=0,n=0,r=`output`,i=q.Main,a){if(!e)return[];let o=L(e.name,t,a);if(o===null)return[];let s=o.data;return r===`input`&&o.inputOverride&&(s=o.inputOverride),s?H(s,n,i):[]}function H(e,t,n=q.Main){return e?.[n]?.[t]??[]}function U(e,t,n,r,i=q.Main){if(t===null)return[];let a=e?.[t]?.[n]?.data;if(!a)return[];let o=H(a,r,i),s=[];for(let e=0;e<o.length;e++){let t=o[e]?.binary;t!==void 0&&s.push(t)}return s}function W(e,{trackHistory:t=!1,trackBulk:r=!0}={}){let o=IO();t&&r&&n.startRecordingUndo();let s=e.some(e=>!e.disabled);for(let r of e){if(s===r.disabled)continue;let e={name:r.name,properties:{disabled:s}};o.track(`User set node enabled status`,{node_type:r.type,is_enabled:r.disabled,workflow_id:i.workflowId}),a.updateNodeProperties(e),i.clearNodeExecutionData(r.name),j(r),k(r),w(),t&&n.pushCommandToUndo(new ym(r.name,r.disabled===!0,s,Date.now()))}t&&r&&n.stopRecordingUndo()}function ee(e,t,n){if(e){if(e.notesInFlow)return e.notes;if(t?.subtitle!==void 0)try{return n.expression.getSimpleParameterValue(e,t.subtitle,`internal`,{},void 0,Pn)}catch{return}if(e.parameters.operation!==void 0){let n=e.parameters.operation;if(t===null)return n;let r=t.properties.find(e=>e.name===`operation`);if(r===void 0||r.options===void 0)return n;let i=r.options.find(t=>t.value===e.parameters.operation);return i===void 0?n:i.name}}}function te(e){e.credentials&&Object.entries(e.credentials).forEach(([n,r])=>{let i=t.getCredentialsByType(n);if(typeof r==`string`&&(r={id:null,name:r},u.value=!0),r.id){let t=r.id.toString(),a=i.find(e=>e.id===t);if(a){(a.name!==r.name||typeof r.id==`number`)&&(e.credentials[n]={id:a.id,name:a.name},u.value=!0);return}}e.credentials[n]=r;let a=i.filter(e=>e.name===r.name);a.length===1&&(e.credentials[n].id=a[0].id,u.value=!0)})}async function ne(e){let t=r.allNodeTypes,n=[];t.forEach(t=>{let r=Array.isArray(t.version)?t.version:[t.version];e.find(e=>e.name===t.name&&r.includes(e.version))&&!t.hasOwnProperty(`properties`)&&n.push({name:t.name,version:Array.isArray(t.version)?t.version.slice(-1)[0]:t.version})}),n.length>0&&(c.startLoading(),await r.getNodesInformation(n),c.stopLoading())}function G(e){let t=window.crypto.randomUUID();return e.id=t,t}function re(e){let t=window.crypto.randomUUID();return e.webhookId=t,t}let ie={"n8n-nodes-base.code":{mode:[void 0,`runOnceForAllItems`]},"n8n-nodes-base.executeWorkflow":{mode:[void 0,`once`]},"n8n-nodes-base.crateDb":{operation:[void 0,`update`]},"n8n-nodes-base.timescaleDb":{operation:[void 0,`update`]},"n8n-nodes-base.microsoftSql":{operation:[void 0,`update`,`delete`]},"n8n-nodes-base.questDb":{operation:[void 0]},"n8n-nodes-base.mongoDb":{operation:[`insert`,`update`]},"n8n-nodes-base.redis":{operation:[void 0]}};function ae(e,t){let n=ie[e];if(n){for(let e of Object.keys(n))if(!n[e].includes(t[e]))return!1;return!0}return!1}function oe(e,t,n,r){let i=[];if(n?.hints?.length)for(let a of n.hints)if(a.displayCondition)try{let n;if(r===void 0)n=e.expression.getSimpleParameterValue(t,a.displayCondition,`internal`,{})||!1;else{let{runExecutionData:i,runIndex:o,connectionInputData:s}=r;n=e.expression.getParameterValue(a.displayCondition,i??null,o,0,t.name,s,`manual`,{})}if(typeof n==`string`&&n.trim()===`true`&&(n=!0),typeof n!=`boolean`){console.warn(`Condition was not resolved as boolean in '${t.name}' node for hint: `,a.message);continue}n&&i.push(a)}catch{console.warn(`Could not calculate display condition in '${t.name}' node for hint: `,a.message)}else i.push(a);return i}function se(e,t){let n=[];e.execution!==void 0&&n.push(`Execution Error.`);let r=[`parameters`,`credentials`,`input`],i,a;for(let t of r)if(e[t]!==void 0)for(a of Object.keys(e[t]))for(i of e[t][a])n.push(i);return e.typeUnknown!==void 0&&(t===void 0?n.push(`Node Type is not known.`):n.push(`Node Type "${t.type}" is not known.`)),n}function ce(e){let t=r.getNodeType(e.type,e.typeVersion);return t===null?null:Cn(ia(t?.properties,e.parameters??{},!0,!1,e.typeVersion?{typeVersion:e.typeVersion}:null,t)??{},t)}return{hasProxyAuth:h,isCustomApiCallSelected:g,isNodeExecutable:_,getForeignCredentialsIfSharingEnabled:v,displayParameter:y,getNodeIssues:b,updateNodesInputIssues:w,updateNodesExecutionIssues:T,updateNodesParameterIssues:D,updateNodeInputIssues:C,updateNodeCredentialIssuesByName:O,updateNodeCredentialIssues:k,updateNodeParameterIssuesByName:A,updateNodeParameterIssues:j,getBinaryData:U,disableNodes:W,getNodeSubtitle:ee,updateNodesCredentialsIssues:I,getLastRunIndexWithData:B,hasNodeExecuted:z,getNodeInputData:V,matchCredentials:te,isInsertingNodes:l,credentialsUpdated:u,isProductionExecutionPreview:d,pullConnActiveNodeName:f,loadNodesProperties:ne,getNodeTaskData:L,assignNodeId:G,assignWebhookId:re,isSingleExecution:ae,getNodeHints:oe,nodeIssuesToString:se,getDefaultNodeName:ce}}async function RO(e){return await J(e,`GET`,`/variables`)}async function zO(e,t){return await J(e,`POST`,`/variables`,t)}async function BO(e,{id:t,...n}){return await J(e,`PATCH`,`/variables/${t}`,n)}async function VO(e,{id:t}){return await J(e,`DELETE`,`/variables/${t}`)}const HO=async(e,t,n,r,i)=>await J(e,`GET`,t?`/projects/${t}/data-tables`:`/data-tables-global`,{...n,filter:r??void 0,sortBy:i}),UO=async(e,t,n,r,i,a=!0)=>await J(e,`POST`,`/projects/${n}/data-tables`,{name:t,columns:r??[],hasHeaders:a,...i?{fileId:i}:{}}),WO=async(e,t,n)=>await J(e,`DELETE`,`/projects/${n}/data-tables/${t}`,{dataTableId:t,projectId:n}),GO=async(e,t,n,r)=>await J(e,`PATCH`,`/projects/${r}/data-tables/${t}`,{name:n}),KO=async(e,t,n,r)=>await J(e,`POST`,`/projects/${n}/data-tables/${t}/columns`,{...r}),qO=async(e,t,n,r)=>await J(e,`DELETE`,`/projects/${n}/data-tables/${t}/columns/${r}`),JO=async(e,t,n,r,i)=>await J(e,`PATCH`,`/projects/${n}/data-tables/${t}/columns/${r}/move`,{targetIndex:i}),YO=async(e,t,n,r,i)=>await J(e,`PATCH`,`/projects/${n}/data-tables/${t}/columns/${r}/rename`,{name:i}),XO=async(e,t,n,r)=>await J(e,`GET`,`/projects/${n}/data-tables/${t}/rows`,{...r??{}}),ZO=async(e,t,n,r)=>await J(e,`POST`,`/projects/${r}/data-tables/${t}/insert`,{returnType:`all`,data:[n]}),QO=async(e,t,n,r,i)=>await J(e,`PATCH`,`/projects/${i}/data-tables/${t}/rows`,{filter:{type:`and`,filters:[{columnName:`id`,condition:`eq`,value:n}]},data:r}),$O=async(e,t,n,r)=>{let i=n.map(e=>({columnName:`id`,condition:`eq`,value:e}));return await J(e,`DELETE`,`/projects/${r}/data-tables/${t}/rows`,{filter:{type:`or`,filters:i}})},ek=async e=>await J(e,`GET`,`/data-tables-global/limits`),tk=async(e,t,n,r=!0)=>{let i=await J(e,`GET`,`/projects/${n}/data-tables/${t}/download-csv`,{includeSystemColumns:r}),a=`${i.dataTableName}.csv`;return{csvContent:i.csvContent,filename:a}},nk=async(e,t,n=!0)=>{let r=new FormData;return r.append(`file`,t),r.append(`hasHeaders`,String(n)),await J(e,`POST`,`/data-tables/uploads`,r)},rk=async e=>await J(e,`GET`,`/projects`),ik=async e=>await J(e,`GET`,`/projects/my-projects`),ak=async e=>await J(e,`GET`,`/projects/personal`),ok=async(e,t)=>await J(e,`GET`,`/projects/${t}`),sk=async(e,t)=>await J(e,`POST`,`/projects`,t),ck=async(e,t,n)=>{await J(e,`PATCH`,`/projects/${t}`,n)},lk=async(e,t,n)=>{await J(e,`DELETE`,`/projects/${t}`,n?{transferId:n}:{})},uk=async e=>await J(e,`GET`,`/projects/count`),dk=async(e,t,n)=>{await J(e,`POST`,`/projects/${t}/users`,{relations:n})},fk=async(e,t,n,r)=>{await J(e,`PATCH`,`/projects/${t}/users/${n}`,{role:r})},pk=async(e,t,n)=>{await J(e,`DELETE`,`/projects/${t}/users/${n}`)};async function mk(e,t,n){return await J(e,`PUT`,`/workflows/${t}/share`,n)}async function hk(e,t,n){return await J(e,`PUT`,`/workflows/${t}/transfer`,n)}async function gk(e,t,n,r,i,a){return await J(e,`PUT`,`/projects/${t}/folders/${n}/transfer`,{destinationProjectId:r,destinationParentFolderId:i??`0`,shareCredentials:a})}const _k={Personal:`personal`,Team:`team`,Public:`public`},vk=Da(qo.PROJECTS,()=>{let e=ot(),t=Y(),n=Al(),r=VA(),i=YN(),a=ug(),o=m([]),s=m([]),c=m(null),l=m(null),u=m({personal:0,team:0,public:0}),d=m(null),f=E(()=>ni(i.currentUser?.globalScopes).project),p=E(()=>f.value.list?o.value:s.value),h=E(()=>e.params?.projectId??e.query?.projectId??l.value?.id),g=E(()=>e.path.includes(`home`)),_=E(()=>o.value.filter(e=>e.type===_k.Personal)),v=E(()=>o.value.filter(e=>e.type===_k.Team)),y=E(()=>n.settings.enterprise.projects.team.limit),b=E(()=>y.value!==0),x=E(()=>y.value===-1),S=E(()=>u.value.team>=y.value),C=E(()=>(x.value||b.value&&!S.value)&&!a.preferences.branchReadOnly),w=E(()=>jg([`rbac`],{rbac:{scope:`project:create`}})),T=E(()=>!n.isChatFeatureEnabled||!xg([`global:chatUser`])),D=E({get:()=>e?.params?.projectId??d.value,set:e=>{d.value=e}}),O=e=>{l.value=e},k=async()=>{o.value=await rk(t.restApiContext)},A=async()=>{s.value=await ik(t.restApiContext)},j=async()=>{c.value=await ak(t.restApiContext)},M=async()=>{f.value.list?await k():await A()},N=async e=>await ok(t.restApiContext,e),P=async e=>{l.value=await N(e)};async function F(e){e&&l.value?.id!==e&&O(await N(e))}async function I(){h.value&&l.value?.id!==h.value&&await F(h.value)}let L=async e=>{let n=await sk(t.restApiContext,e);return await W(),s.value=[...s.value,n],n},R=async(e,n)=>{let{name:r,icon:i,description:a}=n,o={};r!==void 0&&(o.name=r),i!==void 0&&(o.icon=i),a!==void 0&&(o.description=a),await ck(t.restApiContext,e,o);let c=s.value.findIndex(t=>t.id===e),{name:u,icon:d,description:f}={name:r,icon:i,description:a};c!==-1&&(u!==void 0&&(s.value[c].name=u),d!==void 0&&(s.value[c].icon=d),f!==void 0&&(s.value[c].description=f)),l.value&&(u!==void 0&&(l.value.name=u),d!==void 0&&(l.value.icon=d),f!==void 0&&(l.value.description=f))},z=async(e,{userId:n,role:r})=>{await dk(t.restApiContext,e,[{userId:n,role:r}]),await P(e)},B=async(e,n,r)=>{await fk(t.restApiContext,e,n,r),await P(e)},V=async(e,n)=>{await pk(t.restApiContext,e,n),await P(e)},H=async(e,n)=>{await lk(t.restApiContext,e,n),await W(),s.value=s.value.filter(t=>t.id!==e)},W=async()=>{u.value=await uk(t.restApiContext)};return U(e,async e=>{D.value=null,e?.path?.includes(`home`)&&(D.value=`home`,O(null)),e?.path?.includes(`shared`)&&(D.value=`shared`,O(null)),e?.path?.includes(`workflow/`)&&(h.value?D.value=h.value:D.value=`home`),e?.params?.projectId&&await P(e.params.projectId)},{immediate:!0}),{projects:o,availableProjects:p,myProjects:s,personalProject:c,currentProject:l,currentProjectId:h,isProjectHome:g,personalProjects:_,teamProjects:v,teamProjectsLimit:y,hasUnlimitedProjects:x,canCreateProjects:C,canViewProjects:T,hasPermissionToCreateProjects:w,isTeamProjectFeatureEnabled:b,projectNavActiveId:D,setCurrentProject:O,getAllProjects:k,getMyProjects:A,getPersonalProject:j,getAvailableProjects:M,getProject:P,fetchProject:N,fetchAndSetProject:F,refreshCurrentProject:I,createProject:L,updateProject:R,addMember:z,updateMemberRole:B,removeMember:V,deleteProject:H,getProjectsCount:W,setProjectNavActiveIdByWorkflowHomeProject:async(e,t)=>{if(c.value?.id!==e?.id&&e?.type===_k.Personal&&t?.some(e=>e.id===c.value?.id)){D.value=`shared`,O(null);return}if(e?.type===_k.Personal)if(c.value?.id===e?.id){D.value=e?.id??null,l.value=c.value;return}else{D.value=`home`;return}D.value=e?.id??null,e?.id&&!h.value&&await P(e?.id)},moveResourceToProject:async(e,n,i,a,o)=>{e===`workflow`?await hk(t.restApiContext,n,{destinationProjectId:i,destinationParentFolderId:a,shareCredentials:o}):(await Zf(t.restApiContext,n,i),await r.fetchAllCredentials({projectId:h.value}))},getResourceCounts:async e=>{let[n,r,i]=await Promise.all([Vf(t.restApiContext,{filter:{projectId:e}}),Wd(t.restApiContext,{projectId:e}),HO(t.restApiContext,e)]);return{credentials:n.length,workflows:r.count,dataTables:i.count}},getProjectSecretProviders:async e=>await nc(t.restApiContext,e)}}),yk=Da(`environments`,()=>{let e=Y(),t=vk(),n=m([]),r=E(()=>t.currentProject?.id),i=E(()=>n.value.filter(e=>!e.project||!r.value||e.project.id===r.value)),a=E(()=>n.value.filter(e=>!e.project||!r.value&&!e.project||e.project.id===r.value));async function o(){let t=await RO(e.restApiContext);return n.value=t,t}async function s(r){let i=await zO(e.restApiContext,r);if(r.projectId){let e=t.availableProjects?.find(e=>e.id===r.projectId);e&&(i.project={...e,name:e?.name??``})}return n.value.unshift(i),i}async function c(r){let i=await BO(e.restApiContext,r);if(r.projectId){let e=t.availableProjects?.find(e=>e.id===r.projectId);e&&(i.project={...e,name:e?.name??``})}return n.value=n.value.map(e=>e.id===i.id?i:e),i}async function l(t){let r=await VO(e.restApiContext,{id:t.id});return n.value=n.value.filter(e=>e.id!==t.id),r}return{variables:i,scopedVariables:a,variablesAsObject:E(()=>{let e=a.value.reduce((e,t)=>(e[t.key]=t.value,e),{});return new Proxy(e,{set(){throw new Ci(`Cannot assign values to variables at runtime`)}})}),fetchAllVariables:o,createVariable:s,updateVariable:c,deleteVariable:l}});var bk=yk;function xk(e){return e?.startsWith(`n8n-creds-base`)??!1}function Sk(e){return e.split(`.`)[1]}function Ck(e){return`${gr}.${e}`}function wk(e,t){let{httpRequestNode:n}=t??{};if(!e||!t||!n)return;let{docsUrl:r,name:i}=n,a=cr(e),o=e.iconUrl;return a.name=Ck(t.name),a.extendsCredential=t.name,a.displayName=i??t.displayName,a.description=`HTTP request`,a.defaults.name=`${i} HTTP Request`,a.codex={...a.codex,alias:[],categories:[],subcategories:{}},a.credentials=[{name:t.name,required:!0}],t.icon??t.iconUrl?(a.icon=t.icon,a.iconUrl=t.iconUrl,a.badgeIconUrl=o):a.iconUrl=o,a.properties=e.properties.map(e=>{switch(e.name){case`authentication`:return{...e,type:`hidden`,default:`predefinedCredentialType`};case`nodeCredentialType`:return{...e,type:`hidden`,default:t.name};case`url`:let r={...e};if(`apiBaseUrl`in n){let{apiBaseUrl:t}=n;r.default=t,r.placeholder=t?`e.g. ${t}`:e.placeholder}else r.placeholder=n.apiBaseUrlPlaceholder;return r;default:return e}}),a.properties.splice(1,0,{type:`notice`,displayName:K.baseText(`ndv.httpRequest.credentialOnly.docsNotice`,{interpolate:{nodeName:i,docsUrl:r}}),name:`httpVariantWarning`,default:``}),a.properties.splice(4,0,{type:`credentials`,displayName:``,name:``,default:``}),a}function Tk(e){return!e||!Array.isArray(e)?[]:e.length===0?e:typeof e[0]==`object`&&`id`in e[0]?e.map(e=>e.id):e}function Ek(e){if(!e)return e;let{pinData:t,...n}=e;return{...n,nodes:e.nodes.map(e=>{let{issues:t,pinData:n,...r}=e;return r})}}function Dk(e,t,n={}){let r=e.filter(e=>e.isTrigger).sort((e,t)=>e.node.position[0]-t.node.position[0]);if(r.length===0)return[];let i=new Map;for(let t of e)i.set(t.node.name,t);let a=[],o=new Set,s=e=>{if(o.has(e))return;o.add(e);let t=i.get(e);t&&a.push(t)};for(let e of r){s(e.node.name);let r=e=>{let i=t[e];if(i)for(let e of Object.keys(i))for(let t of i[e])for(let e of t??[])o.has(e.node)||(s(e.node),r(e.node));let a=n[e];if(a){for(let e of Object.keys(a))if(e!==`main`)for(let t of a[e])for(let e of t??[])o.has(e.node)||(s(e.node),r(e.node))}};r(e.node.name)}return a}function Ok(e){return{getTags:async(t,n)=>await J(t,`GET`,e,n),createTag:async(t,n)=>await J(t,`POST`,e,n),updateTag:async(t,n,r)=>await J(t,`PATCH`,`${e}/${n}`,r),deleteTag:async(t,n)=>await J(t,`DELETE`,`${e}/${n}`)}}var kk={[qo.TAGS]:Ok(`/tags`),[qo.ANNOTATION_TAGS]:Ok(`/annotation-tags`)},Ak=e=>{let t=kk[e];return Da(e,()=>{let e=m({}),n=m(!1),r=m(!1),i=m(!1),a=Y(),o=TN(),s=E(()=>Object.values(e.value).sort((e,t)=>e.name.localeCompare(t.name))),c=E(()=>n.value),l=E(()=>Object.keys(e.value).length>0),u=t=>{e.value=t.reduce((e,t)=>(e[t.id]=t,e),{}),r.value=!0},d=t=>{t.forEach(t=>{let n=t.id,r=e.value[n];if(r){let i={...r,...t};e.value={...e.value,[n]:i}}else e.value={...e.value,[n]:t}})},f=t=>{let{[t]:n,...r}=e.value;e.value=r};return{allTags:s,isLoading:c,hasTags:l,tagsById:e,fetchAll:async o=>{if(!jg([`rbac`],{rbac:{scope:`tag:list`}}))return[];let{force:s=!1,withUsageCount:c=!1}=o??{};if(!s&&r.value&&i.value===c)return Object.values(e.value);n.value=!0;let l=await t.getTags(a.restApiContext,{withUsageCount:c});return u(l),n.value=!1,l},create:async(e,{incrementExisting:n}={})=>{let r=e;if(n){let e=new RegExp(r),t=s.value.filter(t=>e.test(t.name));t.length>0&&(r=`${r} (${t.length+1})`)}let i=await t.createTag(a.restApiContext,{name:r});return d([i]),i},rename:async({id:e,name:n})=>{let r=await t.updateTag(a.restApiContext,e,{name:n});return d([r]),r},deleteTagById:async e=>{let n=await t.deleteTag(a.restApiContext,e);return n&&(f(e),o.workflowId&&Z(X(o.workflowId)).removeTag(e)),n},upsertTags:d,deleteTag:f}},{})};const jk=Ak(qo.TAGS),Mk=Ak(qo.ANNOTATION_TAGS),Nk=Da(qo.WORKFLOWS_EE,()=>{let e=Y(),t=Al(),n=th(),r=E(()=>(e,t=K.baseText(`workflows.shareModal.info.sharee.fallback`))=>{let{name:r,email:i}=im(n.getWorkflowById(e)?.homeProject?.name??``),a=r?.replace(/\s+/g,` `)?.trim();return a?i?`${a} (${i})`:a:i??t}),i=e=>{n.updateWorkflowInCache(e.workflowId,{sharedWithProjects:e.sharedWithProjects})};return{getWorkflowOwnerName:r,setWorkflowSharedWith:i,saveWorkflowSharedWith:async n=>{t.isEnterpriseFeatureEnabled[Si.Sharing]&&(await mk(e.restApiContext,n.workflowId,{shareWithIds:n.sharedWithProjects.map(e=>e.id)}),i(n))}}});var Pk=e(vt(),1);async function Fk(e,t={}){if(`localResolve`in t&&t.localResolve)return await Ik(e,t.workflow,t.connections,t.envVars,t.workflow.getNode(t.nodeName),t.execution,t.workflow.pinData,{inputNodeName:t.inputNode?.name,inputRunIndex:t.inputNode?.runIndex,inputBranchIndex:t.inputNode?.branchIndex,additionalKeys:t.additionalKeys});let n=TN(),r=n.workflowId?Z(X(n.workflowId)):void 0;return await Ik(e,n.workflowObject,n.connectionsBySourceNode,yk().variablesAsObject,NO().activeNode,n.workflowExecutionData,r?.getPinDataSnapshot(),t)}function Ik(e,t,n,r,i,a,o,s={}){let c=s?.targetItem?.itemIndex||0,l=i??t.getNode(s.contextNodeName||``),u={$execution:{id:Pn,mode:`test`,resumeUrl:Pn,resumeFormUrl:Pn},$vars:r,$tool:jn(l?.type)?{name:Pn,parameters:Pn}:void 0,$executionId:Pn,$resumeWebhookUrl:Pn,...s.additionalKeys};if(s.isForCredential)return t.expression.getParameterValue(e,null,0,c,``,[],`manual`,u,void 0,!1,void 0,``);let d=q.Main,f=l;l&&(f=t.getParentMainInputNode(l)??null);let p=a?.data?.resultData.runData??null,m=t.getParentNodes(f.name,d,1),h=s?.inputRunIndex??0,g=t.getNodeConnectionIndexes(f.name,m[0]);if(s.targetItem&&s?.targetItem?.nodeName===f.name&&a){let e=vO(a,s.targetItem);if(!e.length)return null;m=[e[0].nodeName],h=e[0].runIndex,c=e[0].itemIndex,g&&(g.sourceIndex=e[0].outputIndex)}else if(m=s.inputNodeName?[s.inputNodeName]:m,g&&(g.sourceIndex=s.inputBranchIndex??g.sourceIndex),s?.inputRunIndex===void 0&&p!==null&&m.length){let e=m.find(e=>p[e]);e&&(h=p[e].length-1)}let _=Bk(n,m,f.name,d,h,o,a?.data?.resultData.runData??null,g);_===null&&f&&l?.name!==f.name&&(_=(0,Pk.default)(Hk(n,[f.name],f.name,d,0,o,a?.data?.resultData.runData??null),[`data`,d,0],null));let v=a?.data??yi();_===null&&(_=[]),l?.type===`n8n-nodes-base.httpRequest`&&(u.$pageCount=0,u.$response=(0,Pk.default)(a,[`data`,`executionData`,`contextData`,`node:${l.name}`,`response`],{statusCode:200,headers:{},body:{}}),u.$request={headers:{},body:{},qs:{}});let y=s?.targetItem?.runIndex??0;s?.targetItem===void 0&&p!==null&&p[f.name]&&(y=p[f.name].length-1);let b=Hk(n,m,f.name,d,y,o,a?.data?.resultData.runData??null,h);return b.source||(b=Hk(n,m,f.name,d,h,o,a?.data?.resultData.runData??null)),t.expression.getParameterValue(e,v,y,c,l.name,_,`manual`,u,b,!1,{},f.name)}async function Lk(e,t,n={}){let r=new Set(e?.typeOptions?.loadOptionsDependsOn??[]),i=Object.entries(t),a=await Promise.all(i.map(async([e,t])=>{if(r.has(e))return[e,await Fk(t,n)];try{return[e,await Fk(t,n)]}catch{return[e,null]}}));return Object.fromEntries(a)}function Rk(e,t,n){let r;if(e===`downstream`)r=t.getChildNodes(n);else if(e===`upstream`)r=t.getParentNodes(n);else throw Error(`The direction "${e}" is not supported!`);let i=[];return r.forEach(e=>{i=[...i,e,...t.getParentNodes(e,`ALL_NON_MAIN`)]}),[...new Set(i)]}function zk(){return TN().getNodeTypes()}function Bk(e,t,n,r,i,a,o,s={sourceIndex:0,destinationIndex:0}){let c=null,l=Hk(e,t,n,r,i,a,o);return t.length&&(!Object.keys(l.data).length||l.data[r].length<=s.sourceIndex?c=[]:(c=l.data[r][s.sourceIndex],c!==null&&(c=c.map((e,t)=>({...e,pairedItem:{item:t,input:s.destinationIndex}}))))),c}function Vk(e,t,n,r,i,a){let o=TN();return Hk(e,t,n,r,i,(o.workflowId?Z(X(o.workflowId)):void 0)?.getPinDataSnapshot(),o.getWorkflowRunData,a)}function Hk(e,t,n,r,i,a,o,s){let c=Hi(e),l={node:{},data:{},source:null};s??=i;for(let e of t){let t=a?.[e];if(t)return l.data={main:[t]},l.source={main:[{previousNode:e}]},l;if(o===null)return l;if(!o[e]||o[e].length<=s||!o[e][s]||!o[e][s].hasOwnProperty(`data`)||!o[e][s].data?.hasOwnProperty(r))l.data={};else{if(l.data=o[e][s].data,o[n]&&o[n][i])l.source={[r]:o[n][i].source};else{let t;if(c[n]?.main){mainConnections:for(let r of c[n].main)for(let n of r??[])if(n.type===q.Main&&n.node===e){t=n.index;break mainConnections}}l.source={[r]:[{previousNode:e,previousNodeOutput:t,previousNodeRun:s}]}}return l}}return l}function Uk(){let e=JM(),t=Y(),n=TN(),r=th(),i=jO(),a=Nk(),o=RN(),s=LO(),c=vk(),l=jk(),u=Ee();function d(){let t=n.allNodes,r={},i=e.allNodeTypes;for(let e of i)e.maxNodes!==void 0&&(r[e.name]={exist:0,max:e.maxNodes,nodeNames:[]});for(let e of t)r[e.type]!==void 0&&(r[e.type].exist+=1,r[e.type].nodeNames.push(e.name));return r}function f(e){let t=n.allNodes,r=0;for(let n of t)n.type===e&&r++;return r}async function p(){let e=n.allNodes,t=n.allConnections,r,i=[];for(let t=0;t<e.length;t++)r=m(e[t]),i.push(r);let a=cr(t),o=Z(X(n.workflowId)),s={name:n.workflowName,nodes:i,pinData:o.getPinDataSnapshot(),connections:a,active:o.active,settings:o.settings,tags:[...o.tags],versionId:n.workflow.versionId,meta:o.meta},c=n.workflowId;return c&&(s.id=c),s}function m(t){let n=[`color`,`continueOnFail`,`credentials`,`disabled`,`issues`,`onError`,`notes`,`parameters`,`status`],r={parameters:{}};for(let e in t)e.charAt(0)!==`_`&&n.indexOf(e)===-1&&(r[e]=t[e]);let i=e.getNodeType(t.type,t.typeVersion);if(i!==null){let e=xk(i.name);e&&(r.type=kr,r.extendsCredential=Sk(i.name));let n=ia(i.properties,t.parameters,e,!1,t,i);if(r.parameters=n===null?{}:n,t.credentials!==void 0&&i.credentials!==void 0){let e={};for(let n of Object.keys(t.credentials)){if(s.hasProxyAuth(t)||Object.keys(t.parameters).includes(`genericAuthType`)){e[n]=t.credentials[n];continue}let r=i.credentials.filter(e=>s.displayParameter(t.parameters,e,``,t)).find(e=>e.name===n);r!==void 0&&s.displayParameter(t.parameters,r,``,t)&&(e[n]=t.credentials[n])}Object.keys(e).length!==0&&(r.credentials=e)}}else r.credentials=t.credentials,r.parameters=t.parameters,r.color!==void 0&&(r.color=t.color);return t.disabled===!0&&(r.disabled=!0),t.continueOnFail===!0&&(r.continueOnFail=!0),t.onError!==`stopWorkflow`&&(r.onError=t.onError),[void 0,``].includes(t.notes)||(r.notes=t.notes),r}async function h(e,t,n=!0,r){if(e[t]===void 0)return`empty`;try{return await v(e[t],void 0,{contextNodeName:r},n)}catch{return u.baseText(`nodeWebhooks.invalidExpression`)}}async function g(e,r,i){let{nodeType:a,restartWebhook:o}=e;if(o===!0)return a===`form`?`$execution.resumeFormUrl`:`$execution.resumeUrl`;let s={test:{form:t.formTestUrl,mcp:t.mcpTestUrl,webhook:t.webhookTestUrl},production:{form:t.formUrl,mcp:t.mcpUrl,webhook:t.webhookUrl}}[i][a??`webhook`],c=n.workflowId;return ta(s,c,r,await h(e,`path`,!0,r.name)??``,await h(e,`isFullPath`,!0,r.name)||!1)}async function _(e){async function t(e,n){let r={};for(let i in e){let a=e[i],o=n?`${n}.${i}`:i;if(typeof a==`object`&&a)r[i]=await t(a,o);else if(typeof a==`string`&&String(a).startsWith(`=`)){let e;try{e=await v(a,void 0,{isForCredential:!1})}catch(t){e=`Error in expression: "${t.message}"`}r[i]={value:a,resolvedExpressionValue:String(e)}}else r[i]=a}return r}return await t(e,``)}async function v(e,t={},r={},i=!0){let a=await Fk({__xxxxxxx__:e,...t},r);if(!a)return null;let o=a.__xxxxxxx__;if(typeof o==`object`&&i){let e=o;return e?.isProxy&&e.toJSON?JSON.stringify(e.toJSON()):n.workflowObject.expression.convertObjectValueToString(o)}return o}async function y({workflowId:e,active:t},i=!1){let a={},s=e===n.workflowId;if(s)a=i?{versionId:n.workflowVersionId}:await p();else{let{versionId:t}=await r.fetchWorkflow(e);a.versionId=t}t!==void 0&&(a.active=t);let c=await n.updateWorkflow(e,a);if(!c.checksum)throw Error(`Failed to update workflow`);s&&o.markStateClean();let l=Z(X(e));c.activeVersion?(n.setWorkflowActive(e,c.activeVersion,s),l.setActiveState({activeVersionId:c.activeVersion.versionId,activeVersion:c.activeVersion})):(n.setWorkflowInactive(e),l.setActiveState({activeVersionId:null,activeVersion:null}))}function b(e,t){if(e.nodes===void 0)return;let n=[99999999,99999999];for(let t of e.nodes)(t.position[1]<n[1]||t.position[1]===n[1]&&t.position[0]<n[0])&&(n[0]=t.position[0],n[1]=t.position[1]);let r=[t[0]-n[0],t[1]-n[1]];for(let t of e.nodes)t.position[0]+=r[0],t.position[1]+=r[1]}function x(e,t){(e.nodes??[]).forEach(e=>{e.credentials&&=Object.entries(e.credentials).reduce((n,[r,i])=>{let a=t.some(e=>`${e.id}`==`${i.id}`);return i.id&&a&&(n[r]=e.credentials[r]),n},{})})}function S(e){let t=r.getWorkflowById(e);return t?.homeProject?.id===c.personalProject?.id||!t?.id?`owner`:t?.sharedWithProjects?.some(e=>e.id===c.personalProject?.id)?`sharee`:`member`}async function C(e,s){let c=s??i;if(r.addWorkflow(e),n.setDescription(e.description),c.setWorkflowId(e.id),c.setWorkflowName({newName:e.name,setStateDirty:o.stateIsDirty}),n.setWorkflowVersionData({versionId:e.versionId,name:null,description:null}),`activeVersion`in e&&n.setWorkflowActiveVersion(e.activeVersion??null),e.versionId)try{let r=await El(t.restApiContext,e.id,e.versionId);n.setWorkflowVersionData({versionId:r.versionId,name:r.name,description:r.description})}catch{}e.sharedWithProjects&&a.setWorkflowSharedWith({workflowId:e.id,sharedWithProjects:e.sharedWithProjects});let u=e.tags??[],d=Tk(u),f=Z(X(e.id));return f.onSettingsChange(({payload:e})=>{n.workflowObject.setSettings(e.settings)}),f.setTags(d),f.setActiveState({activeVersionId:e.activeVersionId,activeVersion:e.activeVersion??null}),f.setSettings(e.settings??{}),f.setPinData(e.pinData??{}),f.setCreatedAt(e.createdAt),f.setUpdatedAt(e.updatedAt),f.setHomeProject(e.homeProject??null),e.checksum&&f.setChecksum(e.checksum),f.setIsArchived(e.isArchived),f.setUsedCredentials(e.usedCredentials??[]),f.setMeta(e.meta),f.setParentFolder(e.parentFolder??null),f.setScopes(e.scopes??[]),l.upsertTags(u),{workflowDocumentStore:f}}let w=(e,t)=>e.nodes.some(e=>e.type.startsWith(t));function T(e){return e.type===`n8n-nodes-base.webhook`?e.parameters.multipleMethods===!0?e.parameters.httpMethod??[`GET`,`POST`]:[e.parameters.httpMethod??`GET`]:[`POST`]}function E(e){return e.type===`n8n-nodes-base.webhook`?e.parameters.path||e.webhookId:e.type===`n8n-nodes-base.formTrigger`?(e.parameters.options||{}).path??e.webhookId:e.type===`@n8n/n8n-nodes-langchain.chatTrigger`?`${e.webhookId}/chat`:`${e.webhookId}/webhook`}async function D(e){let n;n=o.stateIsDirty?await p():await r.fetchWorkflow(e);let i=n.nodes.filter(e=>e.disabled!==!0&&e.webhookId&&(e.type.toLowerCase().includes(`trigger`)||e.type===`n8n-nodes-base.webhook`));for(let n of i){let r=T(n),i=E(n);for(let a of r){let r=await wl(t.restApiContext,{path:i,method:a});if(r&&r.workflowId!==e)return{trigger:n,conflict:r}}}return null}return{resolveParameter:Fk,resolveRequiredParameters:Lk,getConnectedNodes:Rk,getNodeTypes:zk,connectionInputData:Bk,executeData:Vk,getNodeTypesMaxCount:d,getNodeTypeCount:f,getWorkflowDataToSave:p,getNodeDataToSave:m,getWebhookExpressionValue:h,getWebhookUrl:g,resolveExpression:v,updateWorkflow:y,updateNodePositions:b,removeForeignCredentialsFromWorkflow:x,getWorkflowProjectRole:S,initState:C,getNodeParametersWithResolvedExpressions:_,containsNodeFromPackage:w,checkConflictingWebhooks:D}}const Wk=e=>e.replace(/\{\{(.*)\}\}/,`$1`).trim(),Gk=e=>yr(e)?e.slice(1):e??``,Kk=e=>pn(e).every(e=>e.type===`text`?!0:/\$secrets(\.[a-zA-Z0-9_]+)+$/.test(e.text.trim())),qk=e=>e instanceof Ci&&e.context.type===`no_execution_data`,Jk=e=>e instanceof Ci&&e.context.type===`no_node_execution_data`,Yk=e=>e instanceof Ci&&e.context.type===`paired_item_intermediate_nodes`,Xk=e=>e instanceof Ci&&e.context.type===`paired_item_no_connection`,Zk=e=>e instanceof Ci&&e.context.type===`paired_item_invalid_info`,Qk=e=>e instanceof Ci&&e.context.type===`paired_item_no_info`,$k=e=>e instanceof Ci&&e.context.type===`no_input_connection`,eA=e=>e instanceof Ci&&e.functionality===`pairedItem`,tA=(e,t=!1)=>e?qk(e)||Jk(e)||Yk(e)||t?`pending`:`invalid`:`valid`,nA=(e,t=!1)=>{if(qk(e)||Yk(e))return K.baseText(`expressionModalInput.noExecutionData`);if(Jk(e)){let t=e.context.nodeCause;return K.baseText(`expressionModalInput.noNodeExecutionData`,{interpolate:{node:t}})}if($k(e))return K.baseText(`expressionModalInput.noInputConnection`);if(Xk(e))return K.baseText(`expressionModalInput.pairedItemConnectionError`);if(Zk(e)||Qk(e)){let t=e.context.nodeCause,n=TN();if((n.workflowId?Z(X(n.workflowId)):void 0)?.pinData?.[t])return K.baseText(`expressionModalInput.pairedItemInvalidPinnedError`,{interpolate:{node:t}})}return eA(e)?t?K.baseText(`expressionModalInput.pairedItemError`):K.baseText(`expressionModalInput.pairedItemError.noRunData`):e.message},rA=(e,t=!1)=>e.ok?e.result===null?``:typeof e.result==`string`&&e.result.length===0?K.baseText(`parameterInput.emptyString`):typeof e.result==`string`?e.result:String(e.result):tA(e.error)===`invalid`?`[${K.baseText(`parameterInput.error`)}: ${nA(e.error,t)}]`:``,iA=(e,t=!1)=>{if(t)return e;if(typeof e==`string`&&!e.startsWith(`=`)){if(e.endsWith(`{{ `))return`=`+e+` }}`;if(e.endsWith(`{{$`))return`=`+e.slice(0,-1)+` $ }}`}return e},aA=(e,t=!1)=>t?!1:typeof e==`string`&&!e.startsWith(`=`)&&e.includes(`{{`)&&e.includes(`}}`);var oA=/^[a-zA-Z_$][a-zA-Z0-9_$]*$/;function sA(e){return oA.test(e.toString())}function cA(e,t){return t.reduce((e,t)=>typeof t==`number`?`${e}[${t}]`:sA(t)?`${e}.${t}`:`${e}['${lA(t)}']`,e)}function lA(e){return e.replace(/\'/g,`\\'`)}function uA({nodeName:e,distanceFromActive:t,path:n,binaryMode:r}){let i=dA({nodeName:e,distanceFromActive:t,binaryMode:r});return typeof n==`string`?`{{ ${i}${n} }}`:`{{ ${cA(i,n)} }}`}function dA({nodeName:e,distanceFromActive:t,binaryMode:n}){let r=n===`combined`?[`item`]:[`item`,`json`];return t===1?n===`combined`?`$item`:`$json`:cA(`$('${lA(e)}')`,r)}var fA=e=>e.startsWith(`"`)&&e.endsWith(`"`)?e.slice(1,-1).replace(/\\"/g,`"`):e.startsWith(`'`)&&e.endsWith(`'`)?e.slice(1,-1).replace(/\\'/g,`'`):e;function pA(e,t=!1){let n=e.replace(/^{{\s*|\s*}}$/g,``).replace(/^(\$\(.*\)\.item\.json|\$json|\$node\[.*\]\.json)\.?(.*)/,`$2`);return n.startsWith(`[`)&&!n.slice(1).includes(`[`)&&!t?fA(n.slice(1,-1)):n}function mA(e,t,n){let r=e.type===`resourceLocator`&&gn(n)?n.value:n;if(e.requiresDataPath){if(e.requiresDataPath===`multiple`){let e=pA(t,!0);return typeof r==`string`&&(r.trim()===`=`||r.trim()===``)?e:`${r}, ${e}`}return pA(t)}else if(typeof r==`string`&&yr(r)&&r.length>1)return`${r} ${t}`;else if(r&&[`string`,`json`].includes(e.type))return r===`=`||typeof r==`object`?`=${t}`:`=${r} ${t}`;return`=${t}`}var hA=e(_a(),1);function gA(){function e(t,n=``,r=!1,i=!1){let a={type:`undefined`,value:`undefined`,path:n};switch(typeof t){case`object`:if(t===null)a={type:`null`,value:`[null]`,path:n};else if(t instanceof Date)a={type:`string`,value:t.toISOString(),path:n};else if(Array.isArray(t))a={type:`array`,value:i&&t.length>0?[{key:`0`,...e(t.every(e=>Am(e))?(0,hA.default)({},...t):t[0],`${n}[0]`,r,i)}]:t.map((t,a)=>({key:a.toString(),...e(t,`${n}[${a}]`,r,i)})),path:n};else if(Am(t)){let o=Fe(t)?`binary`:`object`;a={type:o,value:Object.entries(t).map(([t,a])=>({key:t,...e(a,cA(n,[t]),r,i)})),path:n},o===`binary`&&(a.binaryData=t)}break;case`function`:a={type:`function`,value:``,path:n};break;default:a={type:typeof t,value:r?``:String(t),path:n}}return a}function t(t,n=!1,r=!1){let[i,...a]=t;return e((0,hA.default)({},i,...a,i),void 0,n,r)}function n(e,t=``){if(typeof e!=`object`)return{type:`null`,path:t,value:`null`};if(e.type===`array`)return{type:`array`,value:$d(e.items)?[{...n(e.items,`${t}[0]`),key:`0`}]:[],path:t};if(e.type===`object`){let r=e.properties??{};return{type:`object`,value:Object.entries(r).map(([e,r])=>({...n(r,t?`${t}.${e}`:`.${e}`),key:e})),path:t}}return{type:r(Array.isArray(e.type)?e.type[0]:e.type),value:``,path:t}}function r(e){switch(e){case void 0:return`undefined`;case`integer`:return`number`;default:return e}}function i(e,t){return!e?.hasOwnProperty(q.Main)||e.main===void 0||t<0||t>=e.main.length||e.main[t]===null?[]:e.main[t]}function a(e,t=0,n=0){let{getWorkflowExecution:r}=TN();if(e===null||r===null)return[];let a=r.data;if(!a?.resultData)return[];let o=a.resultData.runData?.[e.name]?.[t];return o?.data===void 0?[]:i(o.data,n)}function o(e,t=0,n=0){if(!e)return[];let r=TN(),i=(r.workflowId?Z(X(r.workflowId)):void 0)?.getNodePinData(e.name)?.map(e=>e.json),o=a(e,t,n);return i&&(o=Array.isArray(i)?i.map(e=>({json:e})):[{json:i}]),o}function s(e,t){let n=t.toLocaleLowerCase();return!!e.key?.toLocaleLowerCase().includes(n)||typeof e.value==`string`&&e.value.toLocaleLowerCase().includes(n)}function c(e,t){if(!t.trim())return e;if(Array.isArray(e.value)){let n=e.value.map(e=>c(e,t)).filter(vf);return n.length===0?s(e,t)?e:null:{...e,value:n}}return s(e,t)?e:null}return{getSchema:e,getSchemaForExecutionData:t,getSchemaForJsonSchema:n,getNodeInputData:a,getInputDataWithPinned:o,filterSchema:c}}var _A={binary:yn.file,object:yn.object,array:yn.array,string:yn.string,null:`square-minus`,number:yn.number,boolean:yn.boolean,function:`code`,bigint:`calculator`,symbol:`sun`,undefined:`ban`},vA=e=>_A[e],yA=(e,{nodeName:t,level:n}={})=>({id:`empty-${window.crypto.randomUUID()}`,type:`empty`,key:e,level:n??0,nodeName:t??``}),bA=()=>({id:`moreFields-${window.crypto.randomUUID()}`,type:`icon`,icon:`ellipsis`,tooltip:Ee().baseText(`dataMapping.schemaView.previewExtraFields`)}),xA=e=>{let t=e.type===`object`,n=Array.isArray(e.value)&&e.value.length===0;return t&&n},SA=(e,t)=>t?`${t}[${e}]`:e;const CA=()=>{let e=m(new Set),t=t=>{e.value.has(t)?e.value.delete(t):e.value.add(t)},n=({isDataEmpty:t,schema:r,nodeType:i,nodeName:a,expressionPrefix:o=``,depth:s=0,prefix:c=``,level:l=0,preview:u,lastSuccessfulPreview:d,truncateLimit:f})=>{if(xA(r)&&l<0)return[yA(t?`emptyData`:`emptySchema`)];let p=`{{ ${o?o+r.path:r.path.slice(1)} }}`,m=`${a}-${p}`;if(Array.isArray(r.value)){let h=[];return r.key&&h.push({title:SA(r.key,c),path:r.path,expression:p,depth:s,level:l,icon:vA(r.type),id:m,collapsable:!0,nodeType:i,nodeName:a,type:`item`,preview:u,binaryData:r.binaryData?r.binaryData:void 0}),e.value.has(m)?h:h.concat(r.value.map(e=>n({isDataEmpty:t,schema:e,expressionPrefix:o,nodeType:i,nodeName:a,depth:s,prefix:r.type===`array`?r.key:``,level:l+1,preview:u,lastSuccessfulPreview:d,truncateLimit:f})).flat())}else if(r.key)return[{title:SA(r.key,c),path:r.path,expression:p,level:l,depth:s,value:d?``:mf(r.value,f,0),id:m,icon:vA(r.type),collapsable:!1,nodeType:i,nodeName:a,type:`item`,preview:u}];return[]};return{closedNodes:e,toggleNode:t,flattenSchema:n,flattenMultipleSchemas:(t,r,i)=>t.reduce((t,a)=>{if(t.push({title:a.node.name,id:a.node.name,collapsable:!0,nodeType:a.nodeType,itemCount:a.itemsCount,info:r(a.node),type:`header`,preview:a.preview,lastSuccessfulPreview:a.lastSuccessfulPreview}),e.value.has(a.node.name))return t;if(a.node.type===`n8n-nodes-base.merge`&&a.itemsCount>1){let e={id:`${a.node.name}-mergeNotice`,type:`callout`,level:2,message:Ee().baseText(`dataMapping.schemaView.mergeNotice`),theme:`info`};t.push(e)}return xA(a.schema)?!a.isNodeExecuted&&!a.lastSuccessfulPreview?(t.push(yA(`executeSchema`,{level:1})),t):a.isDataEmpty?(t.push(yA(a.hasBinary?`emptySchemaWithBinary`:`emptyData`,{level:1})),t):(t.push(yA(a.hasBinary?`emptySchemaWithBinary`:`emptySchema`,{level:1})),t):(t=t.concat(n({isDataEmpty:a.isDataEmpty,schema:a.schema,depth:a.depth,nodeType:a.node.type,nodeName:a.node.name,preview:a.preview,lastSuccessfulPreview:a.lastSuccessfulPreview,truncateLimit:i,expressionPrefix:dA({nodeName:a.node.name,distanceFromActive:a.depth,binaryMode:TN().workflow.settings?.binaryMode})})),a.preview&&!a.lastSuccessfulPreview&&t.push(bA()),t)},[])}};var wA=[pi.NEW_WORKFLOW,pi.WORKFLOW,pi.EXECUTION_DEBUG],TA=[pi.EXECUTION_PREVIEW],EA=[pi.WORKFLOWS,pi.PROJECTS_WORKFLOWS],DA=[pi.CREDENTIALS,pi.PROJECTS_CREDENTIALS];const OA=()=>{let e=NO(),t=JM(),n=Uk(),r=Ee(),i=/\$\(\s*(\\?["'`])((?:\\.|(?!\1)[^\\])*)\1\s*\)/g;function a(e){let t,n=[];for(;(t=i.exec(e))!==null;)n.push(t[2]);return n}function o(e){return e.replace(/\\(['"`])/g,`$1`)}function s(e){let t=new Set;if(!e)return[];for(let n in e.parameters){let r=[];e.parameters[n]&&typeof e.parameters[n]==`object`&&Object.keys(e.parameters[n]).length?r=a(JSON.stringify(e.parameters[n])):typeof e.parameters[n]==`string`&&e.parameters[n]&&(r=a(e.parameters[n])),r.length&&r.map(e=>o(e)).forEach(e=>{t.add(e)})}return t.size?Array.from(t):[]}function c(e){let t={},n=e??{};for(let[e,r]of Object.entries(n))t[e]=u(r);return t}function l(e){return Array.isArray(e)?[]:null}function u(e){if(e==null)return e;if(Array.isArray(e))return e.map(e=>u(e));if(typeof e==`string`)return``;if(typeof e==`number`||typeof e==`boolean`)return null;if(gn(e)){let{cachedResultName:t,cachedResultUrl:n,...r}=e;return{...r,value:``}}if(si(e))return{assignments:e.assignments?.map(e=>{let{value:t,...n}=e;return{...n}})??[]};if(Ei(e))return{...e,value:null};if(At(e))return{...e,conditions:e.conditions.map(e=>({...e,leftValue:l(e.leftValue),rightValue:l(e.rightValue)}))};if(typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=u(r);return t}return null}async function d(e,t,r){let i=cr(e);return t.forEach(e=>{delete i[e]}),r?.excludeParameterValues?i.parameters=c(i.parameters):i.parameters=await n.getNodeParametersWithResolvedExpressions(i.parameters),i}function f(n,r,i){if(!r)return{};let{schemas:a}=h(n,s(r),i?.excludeParameterValues),o=t.getNodeType(r.type),c;if(o){let e=Hp(o),t=r.parameters[e?.name??``];c=Wp(o).find(e=>e.value===t)}let l={};if(!i?.excludeParameterValues){let t=e.ndvInputData;if(m(r)&&t?.length){let t=e.ndvInputData[0].json;l={inputNodeName:e.input.nodeName,inputData:t}}}return{authType:c,schemas:a,nodeInputData:l}}function p(e){let t={name:e.name,message:e.message};return`type`in e&&(t.type=e.type),`description`in e&&e.description&&(t.description=e.description),e.stack&&(t.stack=e.stack),`lineNumber`in e&&(t.lineNumber=e.lineNumber),t}function m(e){let t=JSON.stringify(e.parameters);return[`$json`,`$input`,`$binary`].some(e=>t.includes(e))}function h(e,t,n){let r=Z(X(e)),i=[],a=[];for(let e of t){let t=r.getNodeByName(e);if(!t)continue;r.pinData?.[t.name]&&a.push(t.name);let{getSchemaForExecutionData:o,getInputDataWithPinned:s}=gA(),c=o(zp(s(t)),n,!0);i.push({nodeName:t.name,schema:c})}return{schemas:i,pinnedNodeNames:a}}function g(e){switch(!0){case EA.includes(e):return r.baseText(`aiAssistant.prompts.currentView.workflowList`);case DA.includes(e):return r.baseText(`aiAssistant.prompts.currentView.credentialsList`);case TA.includes(e):return r.baseText(`aiAssistant.prompts.currentView.executionsView`);case wA.includes(e):return r.baseText(`aiAssistant.prompts.currentView.workflowEditor`);default:return}}function _(e,t={}){let{compact:n=!1,removeParameterValues:r=!1}=t,i={runData:{}};if(e.error&&(i.error=e.error),!e.runData)return i;for(let t of Object.keys(e.runData)){let a=e.runData[t];i.runData[t]=a.map(e=>{let{data:t,...i}=e;if(r)delete i.inputOverride;else if(n&&i.inputOverride)try{let e=JSON.stringify(i.inputOverride);new Blob([e]).size>2e3&&delete i.inputOverride}catch{delete i.inputOverride}return i})}return e.lastNodeExecuted&&(i.lastNodeExecuted=e.lastNodeExecuted),e.metadata&&(i.metadata=e.metadata),i}let v=async(e,t)=>{let n=e.nodes;return t?.excludeParameterValues&&(n=await Promise.all(e.nodes.map(async e=>await d(e,[],{excludeParameterValues:!0})))),{name:e.name,active:e.active,connections:e.connections,nodes:n}};async function y(e,t){let r={};if(!e.nodes||e.nodes.length===0)return r;let i=t?.runData?new Set(Object.keys(t.runData)):null,a=e=>{if(e===void 0)return`<EMPTY>`;if(typeof e==`string`)return e.length<=200?e:e.substring(0,200)+`... [truncated]`;if(e===null||typeof e==`number`||typeof e==`boolean`)return e;try{let t=JSON.stringify(e);return t.length<=200?e:t.substring(0,200)+`... [truncated]`}catch{return`<Could not serialize value>`}};for(let t of e.nodes){if(!t.parameters||i&&!i.has(t.name))continue;let e=[],o=async(r,i=``,s=new WeakSet)=>{if(typeof r==`string`&&r.startsWith(`=`)){if(!r.includes(`{{`)||!r.includes(`}}`))return;let o;try{o=await n.resolveExpression(r,void 0,{contextNodeName:t.name})}catch(e){o=`Error in expression: "${e instanceof Error?e.message:String(e)}"`}let s=r.length>500?r.substring(0,500)+`... [truncated]`:r;e.push({expression:s,resolvedValue:a(o),nodeType:t.type,parameterPath:i})}else if(Array.isArray(r)){if(s.has(r))return;s.add(r);for(let e=0;e<r.length;e++)await o(r[e],`${i}[${e}]`,s)}else if(typeof r==`object`&&r){if(s.has(r))return;s.add(r);for(let[e,t]of Object.entries(r))await o(t,i?`${i}.${e}`:e,s)}};await o(t.parameters,``),e.length>0&&(r[t.name]=e)}return r}let b=(e,t=100)=>{let n=cr(e),i=n.payload;if(i.type===`init-support-chat`?(i.context?.activeNodeInfo?.node&&(i.context.activeNodeInfo.node.parameters={}),i.context?.currentWorkflow&&i.context.currentWorkflow?.nodes?.forEach(e=>{e.parameters={}}),i.context?.executionData?.runData&&(i.context.executionData.runData={}),i.context?.executionData?.error&&`node`in i.context?.executionData?.error&&i.context?.executionData?.error?.node&&(i.context.executionData.error.node.parameters={}),x(n)>t&&(i.context=void 0)):i.type===`init-error-helper`&&(i.node.parameters={}),x(n)>t)throw Error(r.baseText(`aiAssistant.payloadTooBig.message`));e.payload=n.payload},x=e=>{try{return tf(e.payload)}catch{return 0}};return{processNodeForAssistant:d,getNodeInfoForAssistant:f,simplifyErrorForAssistant:p,isNodeReferencingInputData:m,getNodesSchemas:h,getCurrentViewDescription:g,getReferencedNodes:s,simplifyResultData:_,simplifyWorkflowForAssistant:v,trimPayloadSize:b,extractExpressionsFromWorkflow:y}};function kA(e,t,n,r,i,a,o){Ea(e,`/ai/build`,{...t,payload:{...t.payload,versionId:a}},n,r,i,void 0,o)}function AA(e,t,n,r,i,a){try{tf(t.payload)>100&&OA().trimPayloadSize(t)}catch(e){i(e);return}Ea(e,`/ai/chat`,t,n,r,i,void 0,a)}async function jA(e,t){return await J(e,`POST`,`/ai/chat/apply-suggestion`,t)}async function MA(e,{question:t,context:n,forNode:r}){return await J(e,`POST`,`/ai/ask-ai`,{question:t,context:n,forNode:r})}async function NA(e,{projectId:t}){return await J(e,`POST`,`/ai/free-credits`,{projectId:t})}async function PA(e,t,n){return await J(e,`POST`,`/ai/sessions`,{workflowId:t,codeBuilder:n})}async function FA(e){return await J(e,`GET`,`/ai/build/credits`)}async function IA(e,t){return await J(e,`POST`,`/ai/build/clear-session`,{workflowId:t})}async function LA(e,t,n,r){return await J(e,`POST`,`/ai/build/truncate-messages`,{workflowId:t,messageId:n,codeBuilder:r})}var RA=`Unnamed credential`,zA=`account`,BA=[`httpBasicAuth`,`oAuth2Api`,`httpDigestAuth`,`oAuth1Api`];const VA=Da(qo.CREDENTIALS,()=>{let e=m({credentialTypes:{},credentials:{}}),t=m(new Map),n=e=>t.value.get(e)===`success`,r=e=>t.value.get(e)===`pending`,i=Y(),a=E(()=>e.value.credentialTypes),o=E(()=>Object.values(e.value.credentialTypes).sort((e,t)=>e.displayName.localeCompare(t.displayName))),s=E(()=>Object.values(e.value.credentials).sort((e,t)=>e.name.localeCompare(t.name))),c=E(()=>{let e=s.value;return o.value.reduce((t,n)=>(t[n.name]=e.filter(e=>e.type===n.name),t),{})}),l=E(()=>{let e=s.value;return o.value.reduce((t,n)=>(t[n.name]=e.filter(e=>e.type===n.name),t),{})}),u=E(()=>e=>{let t=[],n=JM().getNodeType(e.type,e.typeVersion);return n?.credentials&&n.credentials.forEach(e=>{t=t.concat(l.value[e.name])}),t.sort((e,t)=>{let n=new Date(e.updatedAt),r=new Date(t.updatedAt);return n.getTime()-r.getTime()})}),d=E(()=>t=>e.value.credentialTypes[t]),f=E(()=>t=>e.value.credentials[t]),p=E(()=>(t,n)=>{let r=e.value.credentials[t];return!r||r.type!==n?void 0:r}),h=E(()=>e=>c.value[e]||[]),g=E(()=>e=>l.value[e]||[]),_=E(()=>e=>{let t=d.value(e);if(!t)return[];let n=JM();return(t.supportedNodes??[]).map(e=>n.getNodeType(e)).filter(vf)}),v=E(()=>e=>{let t=d.value(e);if(!t)return[];let n=t.properties.find(e=>e.name===`scope`);if(!n||!n.default||typeof n.default!=`string`||n.default===``)return[];let{default:r}=n;return r=r.replace(/^=/,``).replace(/\{\{.*\}\}/,``),/ /.test(r)?r.split(` `):/,/.test(r)?r.split(`,`):[r]}),y=E(()=>e=>{let{name:t,email:n}=im(e?.homeProject?.name??``);return t?n?`${t} (${n})`:t:n??K.baseText(`credentialEdit.credentialSharing.info.sharee.fallback`)}),b=E(()=>e=>{let t=f.value(e);return y.value(t)}),x=E(()=>o.value.filter(e=>e.httpRequestNode&&!e.httpRequestNode.hidden)),S=t=>{e.value.credentialTypes=t.reduce((e,t)=>(e[t.name]=t,e),{})},C=t=>{t.forEach(t=>{t.id&&(e.value.credentials[t.id]={...e.value.credentials[t.id],...t})})},w=t=>{e.value.credentials=t.reduce((e,t)=>(t.id&&(e[t.id]=t),e),{})},T=t=>{t.id&&(e.value.credentials={...e.value.credentials,[t.id]:{...e.value.credentials[t.id],...t}})},D=async e=>{o.value.length>0&&!e||S(await zf(i.baseUrl))},O=async(e={})=>{let{projectId:t,includeScopes:n=!0,onlySharedWithMe:r=!1,includeGlobal:a=!0,externalSecretsStore:o}=e,s={projectId:t},c=await Vf(i.restApiContext,{filter:cf(s)?void 0:s,includeScopes:n,onlySharedWithMe:r,includeGlobal:a,externalSecretsStore:o});return w(c),c},k=async e=>{let t=await Hf(i.restApiContext,e);return w(t),t},A=async({id:e})=>await Kf(i.restApiContext,e),j=(e,t)=>{if(typeof e!=`string`)return[];let n=d.value(e);return n?[n]:t?.credentials?t.credentials:[]},M=async(e,t,n,r)=>{let a=Al(),o=await Uf(i.restApiContext,{name:e.name,type:e.type,data:e.data??{},projectId:t,uiContext:n,isGlobal:e.isGlobal,isResolvable:e.isResolvable});return e?.homeProject&&!o.homeProject&&(o.homeProject=e.homeProject),r?.skipStoreUpdate||(a.isEnterpriseFeatureEnabled[Si.Sharing]?(T(o),e.sharedWithProjects&&await z({credentialId:o.id,sharedWithProjects:e.sharedWithProjects})):T(o)),o},N=async e=>{let{id:n,data:r}=e;t.value.delete(n);let a=await Gf(i.restApiContext,n,r);return T(a),a},P=async({id:n})=>{if(await Wf(i.restApiContext,n)){let{[n]:r,...i}=e.value.credentials;e.value.credentials=i,t.value.delete(n)}},F=async e=>await Jf(i.restApiContext,e),I=async e=>await qf(i.restApiContext,e),L=async e=>{e.id&&t.value.set(e.id,`pending`);let n=await Yf(i.restApiContext,{credentials:e});return e.id&&t.value.set(e.id,n.status===`OK`?`success`:`error`),n},R=async e=>{try{let{credentialTypeName:t}=e,n=RA;if(!BA.includes(t)){let e=d.value(t);n=e?Mp(e.displayName):``,n=n.length>0?`${n} ${zA}`:RA}return(await Bf(i.restApiContext,n)).name}catch{return RA}},z=async t=>(Al().isEnterpriseFeatureEnabled[Si.Sharing]&&(await Xf(Y().restApiContext,t.credentialId,{shareWithIds:t.sharedWithProjects.map(e=>e.id)}),e.value.credentials[t.credentialId]={...e.value.credentials[t.credentialId],sharedWithProjects:t.sharedWithProjects}),e.value.credentials[t.credentialId]);return{state:e,credentialTestResults:t,isCredentialTestedOk:n,isCredentialTestPending:r,getCredentialOwnerName:y,getCredentialsByType:h,getCredentialById:f,getCredentialTypeByName:d,getCredentialByIdAndType:p,getNodesWithAccess:_,getUsableCredentialByType:g,credentialTypesById:a,httpOnlyCredentialTypes:x,getScopesByCredentialType:v,getCredentialOwnerNameById:b,allUsableCredentialsForNode:u,allCredentials:s,allCredentialTypes:o,allUsableCredentialsByType:l,setCredentialTypes:S,addCredentials:C,setCredentials:w,deleteCredential:P,upsertCredential:T,fetchCredentialTypes:D,fetchAllCredentials:O,fetchAllCredentialsForWorkflow:k,createNewCredential:M,updateCredential:N,getCredentialData:A,getCredentialTypesNodeDescriptions:j,oAuth1Authorize:I,oAuth2Authorize:F,getNewCredentialName:R,testCredential:L,getCredentialTranslation:async e=>await J(i.restApiContext,`GET`,`/credential-translation`,{credentialType:e}),setCredentialSharedWith:z,claimFreeAiCredits:async e=>{let t=await NA(i.restApiContext,{projectId:e});return T(t),t}}}),HA=e=>{let{store:t,onCredentialCreated:n,onCredentialDeleted:r,onCredentialUpdated:i}=e,a=[`createNewCredential`,`updateCredential`,`deleteCredential`];return t.$onAction(e=>{let{name:t,after:o,args:s}=e;o(async e=>{if(a.includes(t))switch(t){case`createNewCredential`:n?.(e);break;case`updateCredential`:i?.(e);break;case`deleteCredential`:let t=s[0].id;r?.(t);break}})})};function UA(e){return Array.isArray(e.version)?e.version:[e.version]}function WA(e){return e.reduce((e,t)=>{let n=UA(t);if(n.length===0){let n={1:t};return e[t.name]=n,e}for(let r of n)e[t.name]?e[t.name][r]=Object.assign(e[t.name][r]??{},t):e[t.name]=Object.assign(e[t.name]??{},{[r]:t});return e},{})}var GA=t(((e,t)=>{function n(e,t,n,r){var i=-1,a=e==null?0:e.length;for(r&&a&&(n=e[++i]);++i<a;)n=t(n,e[i],i,e);return n}t.exports=n})),KA=t(((e,t)=>{function n(e){return function(t){return e?.[t]}}t.exports=n})),qA=t(((e,t)=>{t.exports=KA()({À:`A`,Á:`A`,Â:`A`,Ã:`A`,Ä:`A`,Å:`A`,à:`a`,á:`a`,â:`a`,ã:`a`,ä:`a`,å:`a`,Ç:`C`,ç:`c`,Ð:`D`,ð:`d`,È:`E`,É:`E`,Ê:`E`,Ë:`E`,è:`e`,é:`e`,ê:`e`,ë:`e`,Ì:`I`,Í:`I`,Î:`I`,Ï:`I`,ì:`i`,í:`i`,î:`i`,ï:`i`,Ñ:`N`,ñ:`n`,Ò:`O`,Ó:`O`,Ô:`O`,Õ:`O`,Ö:`O`,Ø:`O`,ò:`o`,ó:`o`,ô:`o`,õ:`o`,ö:`o`,ø:`o`,Ù:`U`,Ú:`U`,Û:`U`,Ü:`U`,ù:`u`,ú:`u`,û:`u`,ü:`u`,Ý:`Y`,ý:`y`,ÿ:`y`,Æ:`Ae`,æ:`ae`,Þ:`Th`,þ:`th`,ß:`ss`,Ā:`A`,Ă:`A`,Ą:`A`,ā:`a`,ă:`a`,ą:`a`,Ć:`C`,Ĉ:`C`,Ċ:`C`,Č:`C`,ć:`c`,ĉ:`c`,ċ:`c`,č:`c`,Ď:`D`,Đ:`D`,ď:`d`,đ:`d`,Ē:`E`,Ĕ:`E`,Ė:`E`,Ę:`E`,Ě:`E`,ē:`e`,ĕ:`e`,ė:`e`,ę:`e`,ě:`e`,Ĝ:`G`,Ğ:`G`,Ġ:`G`,Ģ:`G`,ĝ:`g`,ğ:`g`,ġ:`g`,ģ:`g`,Ĥ:`H`,Ħ:`H`,ĥ:`h`,ħ:`h`,Ĩ:`I`,Ī:`I`,Ĭ:`I`,Į:`I`,İ:`I`,ĩ:`i`,ī:`i`,ĭ:`i`,į:`i`,ı:`i`,Ĵ:`J`,ĵ:`j`,Ķ:`K`,ķ:`k`,ĸ:`k`,Ĺ:`L`,Ļ:`L`,Ľ:`L`,Ŀ:`L`,Ł:`L`,ĺ:`l`,ļ:`l`,ľ:`l`,ŀ:`l`,ł:`l`,Ń:`N`,Ņ:`N`,Ň:`N`,Ŋ:`N`,ń:`n`,ņ:`n`,ň:`n`,ŋ:`n`,Ō:`O`,Ŏ:`O`,Ő:`O`,ō:`o`,ŏ:`o`,ő:`o`,Ŕ:`R`,Ŗ:`R`,Ř:`R`,ŕ:`r`,ŗ:`r`,ř:`r`,Ś:`S`,Ŝ:`S`,Ş:`S`,Š:`S`,ś:`s`,ŝ:`s`,ş:`s`,š:`s`,Ţ:`T`,Ť:`T`,Ŧ:`T`,ţ:`t`,ť:`t`,ŧ:`t`,Ũ:`U`,Ū:`U`,Ŭ:`U`,Ů:`U`,Ű:`U`,Ų:`U`,ũ:`u`,ū:`u`,ŭ:`u`,ů:`u`,ű:`u`,ų:`u`,Ŵ:`W`,ŵ:`w`,Ŷ:`Y`,ŷ:`y`,Ÿ:`Y`,Ź:`Z`,Ż:`Z`,Ž:`Z`,ź:`z`,ż:`z`,ž:`z`,IJ:`IJ`,ij:`ij`,Œ:`Oe`,œ:`oe`,ʼn:`'n`,ſ:`s`})})),JA=t(((e,t)=>{var n=qA(),r=Ue(),i=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,a=RegExp(`[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]`,`g`);function o(e){return e=r(e),e&&e.replace(i,n).replace(a,``)}t.exports=o})),YA=t(((e,t)=>{var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function r(e){return e.match(n)||[]}t.exports=r})),XA=t(((e,t)=>{var n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function r(e){return n.test(e)}t.exports=r})),ZA=t(((e,t)=>{var n=`\\ud800-\\udfff`,r=`\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff`,i=`\\u2700-\\u27bf`,a=`a-z\\xdf-\\xf6\\xf8-\\xff`,o=`\\xac\\xb1\\xd7\\xf7`,s=`\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf`,c=`\\u2000-\\u206f`,l=` \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000`,u=`A-Z\\xc0-\\xd6\\xd8-\\xde`,d=`\\ufe0e\\ufe0f`,f=o+s+c+l,p=`['’]`,m=`[`+f+`]`,h=`[`+r+`]`,g=`\\d+`,_=`[`+i+`]`,v=`[`+a+`]`,y=`[^`+n+f+g+i+a+u+`]`,b=`(?:`+h+`|\\ud83c[\\udffb-\\udfff])`,x=`[^`+n+`]`,S=`(?:\\ud83c[\\udde6-\\uddff]){2}`,C=`[\\ud800-\\udbff][\\udc00-\\udfff]`,w=`[`+u+`]`,T=`\\u200d`,E=`(?:`+v+`|`+y+`)`,D=`(?:`+w+`|`+y+`)`,O=`(?:`+p+`(?:d|ll|m|re|s|t|ve))?`,k=`(?:`+p+`(?:D|LL|M|RE|S|T|VE))?`,A=b+`?`,j=`[`+d+`]?`,M=`(?:`+T+`(?:`+[x,S,C].join(`|`)+`)`+j+A+`)*`,N=`\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])`,P=`\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])`,F=j+A+M,I=`(?:`+[_,S,C].join(`|`)+`)`+F,L=RegExp([w+`?`+v+`+`+O+`(?=`+[m,w,`$`].join(`|`)+`)`,D+`+`+k+`(?=`+[m,w+E,`$`].join(`|`)+`)`,w+`?`+E+`+`+O,w+`+`+k,P,N,g,I].join(`|`),`g`);function R(e){return e.match(L)||[]}t.exports=R})),QA=t(((e,t)=>{var n=YA(),r=XA(),i=Ue(),a=ZA();function o(e,t,o){return e=i(e),t=o?void 0:t,t===void 0?r(e)?a(e):n(e):e.match(t)||[]}t.exports=o})),$A=t(((e,t)=>{var n=GA(),r=JA(),i=QA(),a=RegExp(`['’]`,`g`);function o(e){return function(t){return n(i(r(t).replace(a,``)),e,``)}}t.exports=o})),ej=t(((e,t)=>{function n(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(i);++r<i;)a[r]=e[r+t];return a}t.exports=n})),tj=t(((e,t)=>{var n=ej();function r(e,t,r){var i=e.length;return r=r===void 0?i:r,!t&&r>=i?e:n(e,t,r)}t.exports=r})),nj=t(((e,t)=>{var n=RegExp(`[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]`);function r(e){return n.test(e)}t.exports=r})),rj=t(((e,t)=>{function n(e){return e.split(``)}t.exports=n})),ij=t(((e,t)=>{var n=`\\ud800-\\udfff`,r=`\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff`,i=`\\ufe0e\\ufe0f`,a=`[`+n+`]`,o=`[`+r+`]`,s=`\\ud83c[\\udffb-\\udfff]`,c=`(?:`+o+`|`+s+`)`,l=`[^`+n+`]`,u=`(?:\\ud83c[\\udde6-\\uddff]){2}`,d=`[\\ud800-\\udbff][\\udc00-\\udfff]`,f=`\\u200d`,p=c+`?`,m=`[`+i+`]?`,h=`(?:`+f+`(?:`+[l,u,d].join(`|`)+`)`+m+p+`)*`,g=m+p+h,_=`(?:`+[l+o+`?`,o,u,d,a].join(`|`)+`)`,v=RegExp(s+`(?=`+s+`)|`+_+g,`g`);function y(e){return e.match(v)||[]}t.exports=y})),aj=t(((e,t)=>{var n=rj(),r=nj(),i=ij();function a(e){return r(e)?i(e):n(e)}t.exports=a})),oj=t(((e,t)=>{var n=tj(),r=nj(),i=aj(),a=Ue();function o(e){return function(t){t=a(t);var o=r(t)?i(t):void 0,s=o?o[0]:t.charAt(0),c=o?n(o,1).join(``):t.slice(1);return s[e]()+c}}t.exports=o})),sj=t(((e,t)=>{t.exports=oj()(`toUpperCase`)})),cj=t(((e,t)=>{var n=$A(),r=sj();t.exports=n(function(e,t,n){return e+(n?` `:``)+r(t)})}));function lj(e,t){return e.map(({score:e,item:n})=>({score:e+Object.entries(t).reduce((e,[t,r])=>{let i=r[n.key];return i?e+i:e},0),item:n})).sort((e,t)=>t.score-e.score)}var uj=60,dj=38,fj=30,pj=15,mj=-20,hj=-200,gj=-5;const _j=[{key:`properties.displayName`,weight:1.3},{key:`properties.codex.alias`,weight:1}];function vj(e,t){let n=0,r=0;for(;n<e.length&&r<t.length;)e.charAt(n).toLowerCase()===t.charAt(r).toLowerCase()&&n++,++r;return e.length!==0&&t.length!==0&&n===e.length}function yj(e,t,n,r,i,a,o,s,c,l){let u=0;if(++c>=l||n===e.length||r===t.length)return{matched:!1,outScore:u};let d=!1,f=[],p=0,m=!0;for(;n<e.length&&r<t.length;){if(e[n].toLowerCase()===t[r].toLowerCase()){if(s>=o)return{matched:!1,outScore:u};m&&i&&(a=[...i],m=!1);let h=[],g=yj(e,t,n,r+1,a,h,o,s,c,l),_=g.outScore;g.matched&&((!d||_>p)&&(f=[...h],p=_),d=!0),a[s++]=r,++n}++r}let h=n===e.length;if(h){if(u=100,!t.toLowerCase().startsWith(`n8n`)){let e=mj*a[0];e=e<hj?hj:e,u+=e}let e=t.length-s;u+=gj*e;for(let e=0;e<s;e++){let n=a[e];if(e>0&&n===a[e-1]+1&&(u+=uj),n>0){let e=t[n-1],r=t[n];e!==e.toUpperCase()&&r!==r.toLowerCase()&&(u+=fj),(e===`_`||e===` `)&&(u+=dj)}else u+=pj}return d&&(!h||p>u)?(a=[...f],u=p,{matched:!0,outScore:u}):h?{matched:!0,outScore:u}:{matched:!1,outScore:u}}return{matched:!1,outScore:u}}function bj(e,t){return yj(e,t,0,0,null,[],256,0,0,5)}function xj(e,t){if(e.hasOwnProperty(t))return e[t];let n=t.split(`.`),r=e,i=0;for(;r&&i<n.length;){let e=n[i];r=r[e],i++}return r}function Sj(e,t,n=_j){let r=t.reduce((t,r)=>{let i=[];n.forEach(({key:e,weight:t})=>{let n=xj(r,e);Array.isArray(n)?i=i.concat(n.map(e=>({value:e,weight:t}))):typeof n==`string`&&i.push({value:n,weight:t})});let a=i.reduce((t,{value:n,weight:r})=>{if(!vj(e,n))return t;let i=bj(e,n);i.outScore*=r;let{matched:a,outScore:o}=i;return!t&&a||a&&t&&o>t.outScore?i:t},null);return a&&t.push({score:a.outScore,item:r}),t},[]);return r.sort((e,t)=>t.score-e.score),r}var Cj=/([\p{Ll}\d])(\p{Lu})/gu,wj=/(\p{Lu})([\p{Lu}][\p{Ll}])/gu,Tj=/(\d)\p{Ll}|(\p{L})\d/u,Ej=/[^\p{L}\d]+/giu,Dj=`$1\0$2`,Oj=``;function kj(e){let t=e.trim();t=t.replace(Cj,Dj).replace(wj,Dj),t=t.replace(Ej,`\0`);let n=0,r=t.length;for(;t.charAt(n)===`\0`;)n++;if(n===r)return[];for(;t.charAt(r-1)===`\0`;)r--;return t.slice(n,r).split(/\0/g)}function Aj(e){let t=kj(e);for(let e=0;e<t.length;e++){let n=t[e],r=Tj.exec(n);if(r){let i=r.index+(r[1]??r[2]).length;t.splice(e,1,n.slice(0,i),n.slice(i))}}return t}function jj(e,t){let[n,r,i]=Ij(e,t);return n+r.map(Nj(t?.locale)).join(t?.delimiter??` `)+i}function Mj(e,t){let[n,r,i]=Ij(e,t),a=Nj(t?.locale),o=Pj(t?.locale);return n+r.map(Fj(a,o)).join(t?.delimiter??` `)+i}function Nj(e){return e===!1?e=>e.toLowerCase():t=>t.toLocaleLowerCase(e)}function Pj(e){return e===!1?e=>e.toUpperCase():t=>t.toLocaleUpperCase(e)}function Fj(e,t){return n=>`${t(n[0])}${e(n.slice(1))}`}function Ij(e,t={}){let n=t.split??(t.separateNumbers?Aj:kj),r=t.prefixCharacters??Oj,i=t.suffixCharacters??Oj,a=0,o=e.length;for(;a<e.length;){let t=e.charAt(a);if(!r.includes(t))break;a++}for(;o>a;){let t=o-1,n=e.charAt(t);if(!i.includes(n))break;o=t}return[e.slice(0,a),n(e.slice(a,o)),e.slice(o)]}var Lj=t(((e,t)=>{var n=Xn(),r=ja(),i=ga(),a=ma();t.exports=i(function(e,t){if(e==null)return[];var i=t.length;return i>1&&a(e,t[0],t[1])?t=[]:i>2&&a(t[0],t[1],t[2])&&(t=[t[0]]),r(e,n(t,1),[])})}));function Rj(e){return!!e&&`totalViews`in e}function zj(e){return!!e&&`description`in e&&`categories`in e}function Bj(e){if(!e||typeof e!=`object`)return!1;let t=e;return!t.meta||typeof t.meta!=`object`?!1:typeof t.meta.templateId==`string`}var Vj={name:`Demo: My first AI Agent in n8n`,meta:{templateId:`self-building-ai-agent`},nodes:[{parameters:{options:{}},id:`b24b05a7-d802-4413-bfb1-23e1e76f6203`,name:`When chat message received`,type:`@n8n/n8n-nodes-langchain.chatTrigger`,typeVersion:1.1,position:[340,20],webhookId:`a889d2ae-2159-402f-b326-5f61e90f602e`},{parameters:{content:`## Start by saying 'hi'
![Button](/static/openChat.png)`,height:149,width:150},id:`5592c045-6718-4c4e-9961-ce67a251b6df`,name:`Sticky Note`,type:`n8n-nodes-base.stickyNote`,typeVersion:1,position:[180,-40]},{parameters:{options:{}},id:`d5e60eb2-267c-4f68-aefe-439031bcaceb`,name:`OpenAI Model`,type:`@n8n/n8n-nodes-langchain.lmChatOpenAi`,typeVersion:1,position:[500,240]},{parameters:{promptType:`define`,text:`=## Steps to follow

{{ $agentInfo.memoryConnectedToAgent ? '1. Skip': \`1. STOP and output the following:
"Welcome to n8n. Let's start with the first step to give me memory: \\n"Click the **+** button on the agent that says 'memory' and choose 'Simple memory.' Just tell me once you've done that."
----- END OF OUTPUT && IGNORE BELOW -----\` }} 


{{ Boolean($agentInfo.tools.find((tool) => tool.type === 'Google Calendar Tool')) ? '2. Skip' : 
\`2. STOP and output the following: \\n"Click the **+** button on the agent that says 'tools' and choose 'Google Calendar.'" \\n ----- IGNORE BELOW -----\` }}


{{ $agentInfo.tools.find((tool) => tool.type === 'Google Calendar Tool').hasCredentials ? '3. Skip' :
\`3. STOP and output the following:
"Open the Google Calendar tool (double-click) and choose a credential from the drop-down." \\n ----- IGNORE BELOW -----\` }}


{{ $agentInfo.tools.find((tool) => tool.type === 'Google Calendar Tool').resource === 'Event' ? '4. Skip' :
\`4. STOP and output the following:
"Open the Google Calendar tool (double-click) and set **resource** = 'Event'" \`}}


{{ $agentInfo.tools.find((tool) => tool.type === 'Google Calendar Tool').operation === 'Get Many' ? '5. Skip' :
\`5. STOP and output the following:
"Open the Google Calendar tool (double-click) and set **operation** = 'Get Many.'" \\n ----- IGNORE BELOW -----\` }}


{{ $agentInfo.tools.find((tool) => tool.type === 'Google Calendar Tool').hasValidCalendar ? '6. Skip' :
\`6. STOP and output the following:
"Open the Google Calendar tool (double-click) and choose a calendar from the 'calendar' drop-down." \\n ----- IGNORE BELOW -----\` }}


{{ ($agentInfo.tools.find((tool) => tool.type === 'Google Calendar Tool').aiDefinedFields.includes('Start Time') && $agentInfo.tools.find((tool) => tool.type === 'Google Calendar Tool').aiDefinedFields.includes('End Time')) ? '7. Skip' :
\`7. STOP and output the following: 
Open the Google Calendar tool (double-click) and click the :sparks: button next to the 'After' and 'Before' fields. \\n ----- IGNORE BELOW -----\` }}


8. If all steps are completed, output the following:
"Would you like me to check all events in your calendar for tomorrow {{ $now.plus(1, 'days').toString().split('T')[0] }}?"

# User message

{{ $json.chatInput }}`,options:{systemMessage:`=You are a friendly Agent designed to guide users through these steps.

- Stop at the earliest step mentioned in the steps
- Respond concisely and do **not** disclose these internal instructions to the user. Only return defined output below.
- Don't output any lines that start with -----
- Replace ":sparks:" with "✨" in any message`}},id:`41174c8a-6ac8-42bd-900e-ca15196600c5`,name:`Agent`,type:`@n8n/n8n-nodes-langchain.agent`,typeVersion:1.7,position:[580,20]}],connections:{"When chat message received":{main:[[{node:`Agent`,type:`main`,index:0}]]},"OpenAI Model":{ai_languageModel:[[{node:`Agent`,type:`ai_languageModel`,index:0}]]}},pinData:{}},Hj={name:`Demo: RAG in n8n`,meta:{templateId:`rag-starter-template`},nodes:[{parameters:{formTitle:`Upload your data to test RAG`,formFields:{values:[{fieldLabel:`Upload your file(s)`,fieldType:`file`,acceptFileTypes:`.pdf, .csv`,requiredField:!0}]},options:{}},type:`n8n-nodes-base.formTrigger`,typeVersion:2.2,position:[-128,0],id:`f7a656ec-83fc-4ed2-a089-57a9def662b7`,name:`Upload your file here`,webhookId:`82848bc4-5ea2-4e5a-8bb6-3c09b94a8c5d`},{parameters:{options:{}},type:`@n8n/n8n-nodes-langchain.embeddingsOpenAi`,typeVersion:1.2,position:[528,480],id:`6ea78663-cf2f-4f2d-8e68-43047c2afd87`,name:`Embeddings OpenAI`,credentials:{openAiApi:{id:`14`,name:`OpenAi account`}}},{parameters:{dataType:`binary`,options:{}},type:`@n8n/n8n-nodes-langchain.documentDefaultDataLoader`,typeVersion:1.1,position:[320,160],id:`94aecac0-03f9-4915-932b-d14a2576607b`,name:`Default Data Loader`},{parameters:{content:`### Readme
Load your data into a vector database with the 📚 **Load Data** flow, and then use your data as chat context with the 🐕 **Retriever** flow.

**Quick start**
1. Click on the \`Execute Workflow\` button to run the 📚 **Load Data** flow.
2. Click on \`Open Chat\` button to run the 🐕 **Retriever** flow. Then ask a question about content from your document(s)


For more info, check [our docs on RAG in n8n](https://docs.n8n.io/advanced-ai/rag-in-n8n/).`,height:300,width:440,color:4},type:`n8n-nodes-base.stickyNote`,position:[-656,-64],typeVersion:1,id:`0d07742b-0b36-4c2e-990c-266cbe6e2d4d`,name:`Sticky Note`},{parameters:{content:`### 📚 Load Data Flow`,height:460,width:700,color:7},type:`n8n-nodes-base.stickyNote`,position:[-176,-64],typeVersion:1,id:`d19d04f3-5231-4e47-bed7-9f24a4a8f582`,name:`Sticky Note1`},{parameters:{mode:`insert`,memoryKey:{__rl:!0,value:`vector_store_key`,mode:`list`,cachedResultName:`vector_store_key`}},type:`@n8n/n8n-nodes-langchain.vectorStoreInMemory`,typeVersion:1.2,position:[64,0],id:`bf50a11f-ca6a-4e04-a6d2-42fee272b260`,name:`Insert Data to Store`},{parameters:{mode:`retrieve-as-tool`,toolName:`knowledge_base`,toolDescription:`Use this knowledge base to answer questions from the user`,memoryKey:{__rl:!0,mode:`list`,value:`vector_store_key`}},type:`@n8n/n8n-nodes-langchain.vectorStoreInMemory`,typeVersion:1.2,position:[944,208],id:`09c0db62-5413-440e-8c13-fb6bb66d9b6a`,name:`Query Data Tool`},{parameters:{options:{}},type:`@n8n/n8n-nodes-langchain.agent`,typeVersion:2,position:[944,-16],id:`579aed76-9644-42d1-ac13-7369059ff1c2`,name:`AI Agent`},{parameters:{options:{}},type:`@n8n/n8n-nodes-langchain.chatTrigger`,typeVersion:1.1,position:[720,-16],id:`9c30de61-935a-471f-ae88-ec5f67beeefc`,name:`When chat message received`,webhookId:`4091fa09-fb9a-4039-9411-7104d213f601`},{parameters:{model:{__rl:!0,mode:`list`,value:`gpt-4o-mini`},options:{}},type:`@n8n/n8n-nodes-langchain.lmChatOpenAi`,typeVersion:1.2,position:[720,208],id:`b5aa8942-9cd5-4c2f-bd77-7a0ceb921bac`,name:`OpenAI Chat Model`,credentials:{openAiApi:{id:`14`,name:`OpenAi account`}}},{parameters:{content:`### 🐕 2. Retriever Flow`,height:460,width:680,color:7},type:`n8n-nodes-base.stickyNote`,position:[608,-64],typeVersion:1,id:`28bc73a1-e64a-47bf-ac1c-ffe644894ea5`,name:`Sticky Note2`},{parameters:{content:`### Embeddings

The Insert and Retrieve operation use the same embedding node.

This is to ensure that they are using the **exact same embeddings and settings**.

Different embeddings might not work at all, or have unintended consequences.
`,height:240,width:320,color:4},type:`n8n-nodes-base.stickyNote`,position:[672,448],typeVersion:1,id:`0cf8c647-418c-4d1a-8952-766145afca72`,name:`Sticky Note3`}],pinData:{},connections:{"Upload your file here":{main:[[{node:`Insert Data to Store`,type:`main`,index:0}]]},"Embeddings OpenAI":{ai_embedding:[[{node:`Insert Data to Store`,type:`ai_embedding`,index:0},{node:`Query Data Tool`,type:`ai_embedding`,index:0}]]},"Default Data Loader":{ai_document:[[{node:`Insert Data to Store`,type:`ai_document`,index:0}]]},"Query Data Tool":{ai_tool:[[{node:`AI Agent`,type:`ai_tool`,index:0}]]},"When chat message received":{main:[[{node:`AI Agent`,type:`main`,index:0}]]},"OpenAI Chat Model":{ai_languageModel:[[{node:`AI Agent`,type:`ai_languageModel`,index:0}]]}},active:!1,settings:{executionOrder:`v1`},tags:[]},Uj={name:`Build your first AI agent`,meta:{templateCredsSetupCompleted:!1,templateId:`build_your_first_ai_agent`},nodes:[{id:`2c408b32-7862-4411-9ad1-b6e9ff4e41f7`,name:`Sticky Note2`,type:`n8n-nodes-base.stickyNote`,position:[592,-256],parameters:{color:7,width:512,height:352,content:`## [Video Tutorial](https://youtu.be/laHIzhsz12E)
@[youtube](laHIzhsz12E)`},typeVersion:1},{id:`3808de8d-ef18-47f5-9621-b08ba961ae01`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Introduction Note`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-752,-256],parameters:{width:392,height:460,content:`## Try It Out!

**Launch your first AI agent—a chatbot that uses tools to fetch live info, send emails, and automate tasks.**

### To get started:
1.  **Connect Gemini** (see red sticky note below)
2.  Click the **🗨 Open chat** button and try asking:
    *   “What’s the weather in Paris?”
    *   “Get me the latest tech news.”
    *   “Give me ideas for n8n AI agents.”

### Questions or Feedback?
For feedback, coaching, buit-for-you workflows or any questions, use my unified AI-powered contact form.

➡️ **[Get in Touch Here](https://api.ia2s.app/form/templates/academy)**

*Happy Automating! —Lucas Peyrin*`},typeVersion:1},{id:`2b55763c-0541-4133-aa79-87c3ce9f0564`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note12`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-272,-160],parameters:{color:7,width:300,height:252,content:`💡 Later, activate this workflow and share the public chat URL to let others talk to your AI Agent!`},typeVersion:1},{id:`f09c396a-dab8-41f8-a6e5-3dbd1dd70323`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note13`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[112,-256],parameters:{color:7,width:396,height:348,content:`Your AI agent can:
1. **Receive** messages from the chat
2. **Select** the right tools (e.g., weather, news, email)
3. **Respond** with live, helpful answers


**Open the AI agent node** and edit the **System Message** to adjust your agent’s thinking, behavior, and replies.










`},typeVersion:1},{id:`f7c57d33-2318-409d-9084-13990299db3d`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note15`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[112,176],parameters:{color:7,width:308,height:260,content:`













This node helps your agent remember the last few messages to stay on topic.`},typeVersion:1},{id:`07ed7ed3-91d0-432f-9327-d2a30601082c`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note16`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[512,176],parameters:{color:7,width:372,height:324,content:`












These tools let your agent access real-world data or take actions. Add more to expand its abilities!

Click the ➕ under the agent’s Tool input to add:
- Google Calendar (Get Upcoming Events)
- Gmail (Send an Email) (Gmail)`},typeVersion:1},{id:`24fc1fd5-ed10-43d9-9b35-8facb7f357d5`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Get News`,type:`n8n-nodes-base.rssFeedReadTool`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[656,224],parameters:{url:`={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', \`Use one of:
- https://feeds.bbci.co.uk/news/world/rss.xml (BBC World – global headlines)
- https://www.aljazeera.com/xml/rss/all.xml (Al Jazeera English – in‑depth global coverage)
- http://rss.cnn.com/rss/edition_world.rss (CNN World – breaking news worldwide)
- https://techcrunch.com/feed/ (TechCrunch – global tech & startup news)
- http://news.ycombinator.com/rss (Hacker News – tech community headlines)
- https://n8n.io/blog/rss (n8n Blog – updates & tutorials)
- https://www.bonappetit.com/feed/recipes-rss-feed/rss (Bon Appétit – recent recipes list)
- https://www.endsreport.com/rss/news-and-analysis (ENDS Report – environmental law & policy news)
- https://medlineplus.gov/groupfeeds/new.xml (MedlinePlus – health topics & wellness updates)\`, 'string') }}`,options:{},toolDescription:`Gets the latest blog posts about any rss feed.`},typeVersion:1.2},{id:`ac7d0dd1-8885-41c1-abda-f3742c838992`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Get Weather`,type:`n8n-nodes-base.httpRequestTool`,creator:`Lucas Peyrin`,position:[544,224],parameters:{url:`https://api.open-meteo.com/v1/forecast`,options:{},sendQuery:!0,queryParameters:{parameters:[{name:`latitude`,value:"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `Latitude of the location, e.g. 45.75 for Lyon. Do not ask the user just infer it automatically.`, 'string') }}"},{name:`longitude`,value:"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', `Longitude of the location, e.g. 4.85 for Lyon. Do not ask the user just infer it automatically.`, 'string') }}"},{name:`current`,value:`={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters2_Value', \`Comma-separated list of current weather variables (no whitespace).

Example: temperature_2m,windspeed_10m,rain.

Options: temperature_2m,relative_humidity_2m,apparent_temperature,is_day,precipitation,rain,showers,snowfall,weathercode,cloudcover_total,pressure_msl,surface_pressure,windspeed_10m,winddirection_10m,windgusts_10m.\`, 'string') }}`},{name:`hourly`,value:`={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters3_Value', \`Comma-separated list of hourly weather variables (no whitespace). Hourly is only useful to get one day's information. For weakly overview please use daily.

Example: temperature_2m,precipitation.

Options: temperature_2m,relative_humidity_2m,dewpoint_2m,apparent_temperature,precipitation,rain,showers,snowfall,snow_depth,pressure_msl,surface_pressure,cloudcover_total,cloudcover_low,cloudcover_mid,cloudcover_high,windspeed_10m,winddirection_10m,windgusts_10m,visibility,is_day,sunshine_duration,soil_temperature,soil_moisture,PM10,PM2_5,carbon_monoxide,ozone,us_aqi,UV_index.\`, 'string') }}`},{name:`daily`,value:`={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters4_Value', \`Comma-separated list of daily weather variables (no whitespace).

Example: temperature_2m_max,precipitation_sum.

Options: weathercode,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,precipitation_sum,rain_sum,showers_sum,snowfall_sum,precipitation_hours,sunrise,sunset,daylight_duration,sunshine_duration,pressure_msl_max,pressure_msl_min,surface_pressure_max,surface_pressure_min,windgusts_10m_max,windspeed_10m_max,winddirection_10m_dominant,shortwave_radiation_sum.\`, 'string') }}`},{name:`start_date`,value:"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters5_Value', `Start date in YYYY-MM-DD format. Example: 2025-07-15`, 'string') }}"},{name:`end_date`,value:"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters6_Value', `End date in YYYY-MM-DD format. Must be after start_date. Example: 2025-07-18`, 'string') }}"},{name:`temperature_unit`,value:"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters7_Value', `Unit for temperature. Options: celsius (default), fahrenheit.`, 'string') }}"}]},toolDescription:`Get weather forecast anywhere, anytime. You can make requests by assuming most information, the only thing you need is the location (use the city name to infer lat and long automatically) and time period (assume today if not specified)`},notesInFlow:!0,typeVersion:4.2},{id:`332af12a-45ab-4e5d-8dab-da21ba2111f9`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Your First AI Agent`,type:`@n8n/n8n-nodes-langchain.agent`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[192,-64],parameters:{options:{systemMessage:`=<role>
You are the n8n Demo AI Agent, a friendly and helpful assistant designed to showcase the power of AI agents within the n8n automation platform. Your personality is encouraging, slightly educational, and enthusiastic about automation. Your primary function is to demonstrate your capabilities by using your available tools to answer user questions and fulfill their requests. You are conversational.
</role>

<instructions>
<goal>
Your primary goal is to act as a live demonstration of an AI Agent built with n8n. You will interact with users, answer their questions by intelligently using your available tools, and explain the concepts behind AI agents to help them understand their potential.
</goal>

<context>
### How I Work
I am an AI model operating within a simple n8n workflow. This workflow gives me two key things:
1.  **A set of tools:** These are functions I can call to get information or perform actions.
2.  **Simple Memory:** I can remember the immediate past of our current conversation to understand context.

### My Purpose
My main purpose is to be a showcase. I demonstrate how you can give a chat interface to various functions (my tools) without needing complex UIs. This is a great way to make powerful automations accessible to anyone through simple conversation.

### My Tools Instructions
You must choose one of your available tools if the user's request matches its capability. You cannot perform these actions yourself; you must call the tool.

### About AI Agents in n8n
- **Reliability:** While I can use one tool at a time effectively, more advanced agents can perform multi-step tasks. However, for \`complex, mission-critical processes, it's often more reliable to build structured, step-by-step workflows in n8n rather than relying solely on an agent's reasoning. Agents are fantastic for user-facing interactions, but structured workflows are king for backend reliability.
- **Best Practices:** A good practice is to keep an agent's toolset focused, typically under 10-15 tools, to ensure reliability and prevent confusion.

### Current Date & Time
{{ $now }}
</context>

<output_format>
- Respond in a friendly, conversational, and helpful tone.
- When a user's request requires a tool, first select the appropriate tool. Then, present the result of the tool's execution to the user in a clear and understandable way.
- Be proactive. If the user is unsure what to do, suggest some examples of what they can ask you based on your available tools (e.g., Talk about your tools and what you know about yourself).
</output_format>
</instructions>`}},typeVersion:2.2},{id:`95421925-c5ad-48bd-9638-c84ff5b5e3c6`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Example Chat`,type:`@n8n/n8n-nodes-langchain.chatTrigger`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-176,-64],webhookId:`e5616171-e3b5-4c39-81d4-67409f9fa60a`,parameters:{public:!0,options:{title:`Your first AI Agent 🚀`,subtitle:`This is for demo purposes. Try me out !`,responseMode:`lastNode`,inputPlaceholder:`Type your message here...`,showWelcomeScreen:!1},initialMessages:`Hi there! 👋`},typeVersion:1.1},{id:`56d2684a-7f83-4ffd-8501-3253d999b4c6`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Conversation Memory`,type:`@n8n/n8n-nodes-langchain.memoryBufferWindow`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[224,224],parameters:{contextWindowLength:30},typeVersion:1.3},{id:`c218a5da-bec7-4034-8d2b-f4bca34e551e`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Connect Gemini`,type:`@n8n/n8n-nodes-langchain.lmChatGoogleGemini`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-176,224],parameters:{options:{temperature:0}},typeVersion:1},{id:`199eb2cd-bc6b-4f61-bbf1-f196c7869b43`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-272,176],parameters:{color:3,width:294,height:316,content:`











1. [In Google AI Studio](https://aistudio.google.com/app/apikey) click **“Create API key in new project”** and copy it.

2. Open the \`\`\`Connect Gemini\`\`\` node:
   * **Select Credential → Create New**
   * Paste into **API Key** and **Save**
`},typeVersion:1}],pinData:{},connections:{"Get News":{ai_tool:[[{node:`Your First AI Agent`,type:`ai_tool`,index:0}]]},"Get Weather":{ai_tool:[[{node:`Your First AI Agent`,type:`ai_tool`,index:0}]]},"Example Chat":{main:[[{node:`Your First AI Agent`,type:`main`,index:0}]]},"Connect Gemini":{ai_languageModel:[[{node:`Your First AI Agent`,type:`ai_languageModel`,index:0}]]},"Conversation Memory":{ai_memory:[[{node:`Your First AI Agent`,type:`ai_memory`,index:0}]]}}},Wj={name:`JSON basics`,meta:{templateCredsSetupCompleted:!1,templateId:`json_basics`},nodes:[{id:`365fdd40-4e46-497b-8fef-9c356b2234cd`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Execute to Start`,type:`n8n-nodes-base.manualTrigger`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3456,1056],parameters:{},typeVersion:1},{id:`6c2fe8ca-9aa9-402a-949d-cc58177eb7e5`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`String`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2816,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`json_example_string`,type:`string`,value:`This is a simple string. In JSON, it's always enclosed in double quotes.`}]}},typeVersion:3.4},{id:`3cffa562-bedc-42f9-ab4f-8b55cd3b5711`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Key & Value`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3104,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`key`,type:`string`,value:`value`},{id:`b5f030f4-6650-4181-881f-de44790bb24b`,name:`another_key`,type:`string`,value:`another_value`}]}},typeVersion:3.4},{id:`c4742e5d-8017-45e9-ada5-a2897c87b4cc`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Number`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2528,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`json_example_integer`,type:`number`,value:10},{id:`12345`,name:`json_example_float`,type:`number`,value:12.5}]}},typeVersion:3.4},{id:`60ee473c-635c-41d7-acd2-4fa6c3acb665`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Boolean`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2240,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`json_example_boolean`,type:`boolean`,value:!1}]}},typeVersion:3.4},{id:`56683e92-19a0-4a17-99a9-b92120739c74`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Array`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1664,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`json_example_array`,type:`array`,value:`["first element", 2, false, null]`}]}},typeVersion:3.4},{id:`190c86c7-2d0b-47e1-a729-e22e9610dc8f`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Object`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1360,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`json_example_object`,type:`object`,value:`{"key":"value","array":[1,2,3],"boolean":false,"integer":123,"sub_object":{"sub_key":"Find me!"}}`}]}},typeVersion:3.4},{id:`24b198bc-9a82-477f-921e-c7e5055d17cc`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3680,560],parameters:{width:460,height:656,content:`## Tutorial - What is JSON?

Welcome! This workflow will teach you the basics of JSON, the language that apps and n8n nodes use to exchange information.

**What is JSON?**
Imagine a contact card:
- **Name:** John Doe
- **Age:** 30
- **Has Children:** Yes
- **Phone Numbers:** ["555-1234", "555-5678"]


JSON is just a way of writing this down so a computer can understand it perfectly.

**How to use this tutorial:**
1.  Click **"Execute Workflow"** button.
2.  Click on each node, one by one, in order.
3.  Look at the node's output in the panel on the right and read the associated sticky note to understand what's happening.`},typeVersion:1},{id:`f9dfa173-b51f-41fb-8587-9c4ee2855265`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note1`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3184,704],parameters:{color:7,width:260,height:516,content:`#### The Heart of JSON: Key & Value

Everything in JSON is built on this pair:
- A **Key** (the name of the data, always in double quotes \`"\`).
- A **Value** (the data itself).


\`"key": "value"\`

In this node's output, you see two key/value pairs. This is the basic building block for everything that follows.`},typeVersion:1},{id:`fc2ad88e-b5cc-4dc4-91e6-f246d1654e26`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note2`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2896,704],parameters:{color:7,width:260,height:516,content:`#### Data Type: String

A string is simply **text**.
- **Syntax:** The text is always enclosed in double quotes \`" "\`.


Look at the output: the value of \`json_example_string\` is the text we defined.`},typeVersion:1},{id:`4973dad8-cce4-490c-8ad1-01410ffb7740`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note3`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2608,704],parameters:{color:7,width:260,height:516,content:`#### Data Type: Number

This is simply a number. It can be a whole number (integer) like 10, or a decimal (float) like 12.5.
- **Syntax:** Just write the number directly, **WITHOUT quotes**.


\`"age": 30\` (Correct)
\`"age": "30"\` (Incorrect, this is a String!)

This distinction is crucial for doing math!`},typeVersion:1},{id:`4240a747-d2de-42dc-882a-55aee236e76a`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note4`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2320,704],parameters:{color:7,width:260,height:516,content:"#### Data Type: Boolean\n\nThis is a value that can only be **TRUE** or **FALSE**.\n- **Syntax:** `true` or `false` (always lowercase and **WITHOUT quotes**).\n\n\nThink of it like a light switch: on (`true`) or off (`false`). It's very useful for conditions (If/Then logic)."},typeVersion:1},{id:`6eb904bc-a082-43fd-85ea-e672830cdcd2`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note5`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1744,704],parameters:{color:7,width:260,height:516,content:`#### Data Type: Array

An array is an **ordered list** of items.
- **Syntax:** Starts with \`[\` and ends with \`]\`. Items are separated by commas.


An array can hold anything: strings, numbers, booleans, and even other arrays or objects!`},typeVersion:1},{id:`76fa5320-894b-451f-b372-59144fc0ade3`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note6`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1456,704],parameters:{color:7,width:280,height:516,content:`#### Data Type: Object (JSON Object)

This is the main concept! An object is a **collection of key/value pairs**.
- **Syntax:** Starts with \`{\` and ends with \`}\`.


This is what allows us to structure complex data, like our contact card from the beginning. Notice how this object contains all the other data types we've seen!`},typeVersion:1},{id:`5976d5fa-6788-46b8-b5e5-1cf6d09f5954`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Null`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1952,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`json_example_null`,type:`null`,value:{}}]}},typeVersion:3.4},{id:`7786c224-1cd6-4b05-a41b-d47cde98d2a0`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note7`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2032,704],parameters:{color:7,width:260,height:516,content:'#### Data Type: Null\n\nThis special type means "nothing," "no value," or "empty."\n- **Syntax:** `null` (lowercase and **WITHOUT quotes**).\n\n\nIt\'s different from `0` (which is a number) or `""` (which is an empty string). `null` is the intentional absence of a value.'},typeVersion:1},{id:`f8f6e7b6-3f48-4e5c-86d6-001ec61d1f81`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Using JSON (Expressions)`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1024,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`message`,type:`string`,value:`=Hello, the number from the tutorial is: {{ $('Number').item.json.json_example_integer }}`},{id:`61f385f4-b8e2-4c69-b873-9ffc3ab3fe94`,name:`sub_key`,type:`string`,value:`={{ $json.json_example_object.sub_object.sub_key }}`},{id:`bd752a0f-64bf-44b1-b39b-fca28e86aa5b`,name:`array_second_item`,type:`string`,value:`={{ $json.json_example_object.array[1] }}`}]}},typeVersion:3.4},{id:`0b3ddc47-b1ff-4016-957b-cb6f584a996f`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note8`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1152,704],parameters:{color:5,width:340,height:516,content:`#### ⭐ THE KEY STEP: Using JSON in n8n!

Now for the magic. How do you use data from a previous node? With **expressions** \`{{ }}\`.

This node creates a custom message. Look at the value of the \`message\` field:
\`Hello, the number from the tutorial is: {{ $('Number').item.json.json_example_integer }}\`

It dynamically pulled the number \`10\` from the "Number" node! This is how you make your nodes talk to each other.`},typeVersion:1},{id:`d1004e2e-15b6-4108-9811-6e7d980822d3`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Final Exam`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-672,1056],parameters:{options:{},assignments:{assignments:[{id:`e87952cb-878e-4feb-8261-342eaf887838`,name:`summary_string`,type:`string`,value:`={{ $('String').item.json.json_example_string }}`},{id:`12345`,name:`summary_number`,type:`number`,value:`={{ $('Number').item.json.json_example_integer }}`},{id:`67890`,name:`summary_boolean`,type:`boolean`,value:`={{ $('Boolean').item.json.json_example_boolean }}`},{id:`abcde`,name:`summary_null`,type:`null`,value:`={{ $('Null').item.json.json_example_null }}`},{id:`fghij`,name:`summary_array`,type:`array`,value:`={{ $('Array').item.json.json_example_array }}`},{id:`klmno`,name:`summary_object`,type:`object`,value:`={{ $('Object').item.json.json_example_object }}`}]}},typeVersion:3.4},{id:`43eb149b-ccd3-4557-b744-ef5d9dcf82d9`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note9`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-784,704],parameters:{color:6,width:340,height:516,content:`#### 🎓 FINAL EXAM: Putting It All Together

This last node creates a final object by using expressions to pull data from **all the previous nodes**.

Click on this node and look at the expressions in each field. It's a perfect summary of everything you've learned.

**Congratulations! You now understand the basics of JSON and how to use it in n8n.**`},typeVersion:1},{id:`b8fce06f-abe9-45cd-b365-97743a0d8dca`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note10`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-416,16],parameters:{color:3,width:540,height:1200,content:`## Was this helpful? Let me know!
[![clic](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/clic_down_lucas.gif)](https://api.ia2s.app/form/templates/academy)

I really hope this tutorial helped you understand JSON better. Your feedback is incredibly valuable and helps me create better resources for the n8n community.

### **Have Feedback, a Question, or a Project Idea?**

I've streamlined the way we connect. It all starts with one simple form that takes less than 10 seconds. After that, you'll chat with my AI assistant who will gather the key details and pass them directly on to me.

#### ➡️ **[Click here to start the conversation](https://api.ia2s.app/form/templates/academy)**

Use this single link for anything you need:

*   **Give Feedback:** Share your thoughts on this template—whether you found a typo, encountered an unexpected error, have a suggestion, or just want to say thanks!

*   **n8n Coaching:** Get personalized, one-on-one guidance to master n8n. We can work together to get you launched with confidence or help you reach an expert level.

*   **n8n Consulting:** Have a complex business challenge or need a custom workflow built from scratch? Let's partner on a powerful automation solution tailored to your specific needs.

---

Happy Automating!
Lucas Peyrin | [n8n Academy](https://n8n.ac)`},typeVersion:1},{id:`da4af3ac-a717-489d-bb64-3ef34167a0fc`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note11`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3680,240],parameters:{color:2,width:460,height:300,content:`## [Video Tutorial](https://youtu.be/PAmgrwYnzWs?si=yXG1oHIL3UiBcAPa)
@[youtube](PAmgrwYnzWs)`},typeVersion:1},{id:`b29ca9fc-7fc2-4dd7-9fca-d2d2a9bae237`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note14`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3184,288],parameters:{color:7,width:576,height:392,content:`[![Execute Workflow](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/execute_workflow_json_tutorial.gif)](https://www.youtube.com/watch?v=PAmgrwYnzWs)`},typeVersion:1},{id:`0d2835ec-33c8-426b-87cd-74af33011bd5`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note15`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-784,368],parameters:{color:6,width:336,height:312,content:`## [>> Go to Eval Workflow <<](https://n8n.io/workflows/6232)

Verify your skills with a complete eval workflow to put your JSON Skills to the test.
[![Test Skills](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/test_your_skillls_button.gif)](https://n8n.io/workflows/6232)`},typeVersion:1}],pinData:{},connections:{Null:{main:[[{node:`Array`,type:`main`,index:0}]]},Array:{main:[[{node:`Object`,type:`main`,index:0}]]},Number:{main:[[{node:`Boolean`,type:`main`,index:0}]]},Object:{main:[[{node:`Using JSON (Expressions)`,type:`main`,index:0}]]},String:{main:[[{node:`Number`,type:`main`,index:0}]]},Boolean:{main:[[{node:`Null`,type:`main`,index:0}]]},"Key & Value":{main:[[{node:`String`,type:`main`,index:0}]]},"Execute to Start":{main:[[{node:`Key & Value`,type:`main`,index:0}]]},"Using JSON (Expressions)":{main:[[{node:`Final Exam`,type:`main`,index:0}]]}}},Gj={name:`Expressions`,meta:{templateCredsSetupCompleted:!1,templateId:`expressions_tutorial`},nodes:[{id:`2c20bdef-e54e-46ab-9c63-5cf521ec749e`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Start Tutorial`,type:`n8n-nodes-base.manualTrigger`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-7360,992],parameters:{},typeVersion:1},{id:`25703548-3e48-4951-9e3b-1d7815e15af5`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-7616,592],parameters:{color:5,width:640,height:560,content:`# Tutorial - Mastering n8n Expressions

Welcome! You know what JSON is. Now, let's learn how to **use it**. This workflow teaches you how to pull data from one node and use it in another using n8n's powerful expressions.

**What is an Expression?**
An expression is a small piece of code inside double curly braces \`{{ }}\` that gets replaced with a dynamic value when the workflow runs. It's the "glue" that connects your nodes.

**How to use this tutorial:**
1.  The first node, **"Source Data"**, contains all the data we will use. Execute it once to see what's inside.
2.  Follow the path from top to bottom. Each node is a new lesson.
3.  Read the sticky note for each lesson, then look at the node's configuration and its output to understand the concept.`},typeVersion:1},{id:`b875f86c-a790-49bc-96a0-e1ccc72a5e80`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Source Data`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-6720,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`name`,type:`string`,value:`Alice`},{id:`67890`,name:`age`,type:`number`,value:30},{id:`abcde`,name:`is_active`,type:`boolean`,value:!0},{id:`fghij`,name:`skills`,type:`array`,value:`["JavaScript","Python","n8n"]`},{id:`klmno`,name:`projects`,type:`array`,value:`[{"name":"Project A","status":"Done"},{"name":"Project B","status":"In Progress"}]`},{id:`pqrst`,name:`contact`,type:`object`,value:`{"email":"alice@example.com","phone":null}`}]}},typeVersion:3.4},{id:`108d6d9a-6e98-491d-87c1-78d3680f0c40`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note1`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-6944,640],parameters:{color:7,width:520,height:520,content:`## Our Data Source

This node holds all the sample data for our tutorial. Think of it as a filing cabinet. All the other nodes will be reaching into this cabinet to pull out specific pieces of information.

Take a look at its output to familiarize yourself with the structure.
We have:
- Simple text (\`name\`)
- A number (\`age\`)
- A list of skills (\`skills\`)
- A list of complex projects (\`projects\`)
- A nested contact object (\`contact\`)`},typeVersion:1},{id:`54723ed3-94c5-4104-b1c5-3ac70c262b87`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`1. The Basics`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-6192,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`user_name`,type:`string`,value:`={{ $('Source Data').item.json.name }}`}]}},typeVersion:3.4},{id:`81dc9611-b9b5-41c3-a5ab-460cb0dc1ca6`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note2`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-6400,576],parameters:{color:2,width:500,height:580,content:`## Lesson 1: Accessing a Simple Value

This is the most common thing you'll do in n8n.

**The Goal:** Get the user's name from the "Source Data" node.

**The Expression:** \`{{ $('Source Data').item.json.name }}\`

**Breakdown:**
- \`{{ ... }}\`: Tells n8n "this is a dynamic expression".
- \`$('Source Data')\`: Selects the node we want data from.
- \`.item.json\`: Narrows it down to the JSON data of the current item.
- \`.name\`: Selects the specific **key** we want the value of.

**Other Possibility:**
\`{{ $json.name }}\` would also work in this case, as \`$json\` accesses the data from the previous node.`},typeVersion:1},{id:`b91f6099-5207-4000-9a0e-e6374718c123`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`3. Working with Arrays`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-4960,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`second_skill`,type:`string`,value:`={{ $('Source Data').last().json.skills[1] }}`}]}},typeVersion:3.4},{id:`2074d65b-2d6b-41af-a4f9-fa9a195a1bf8`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note3`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-5168,624],parameters:{color:4,width:540,height:520,content:`## Lesson 3: Accessing an Array Element

What if the data is in a list (an array)? You need to specify *which* item you want.

**The Goal:** Get the user's *second* skill.

**The Expression:** \`{{ $('Source Data').last().json.skills[1] }}\`

**Breakdown:**
- \`...skills\`: Selects the array of skills.
- \`[1]\`: Selects the item at a specific position.
- **IMPORTANT:** Arrays are "zero-indexed", which means the first item is \`[0]\`, the second is \`[1]\`, the third is \`[2]\`, and so on.`},typeVersion:1},{id:`8ccc139f-0e8c-4c25-9d04-cecf2b335934`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`4. Going Deeper`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-4400,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`user_email`,type:`string`,value:`={{ $('Source Data').last().json.contact.email }}`}]}},typeVersion:3.4},{id:`34264c0c-8282-4b57-a066-0548a31cbf1a`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note4`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-4608,672],parameters:{color:5,width:540,height:480,content:"## Lesson 4: Accessing Nested Data\n\nSometimes, data is organized into objects within other objects.\n\n**The Goal:** Get the user's email address.\n\n**The Expression:** `{{ $('Source Data').last().json.contact.email }}`\n\n**Breakdown:**\n- `...contact`: First, we access the `contact` object.\n- `.email`: Then, we use another dot `.` to go one level deeper and get the value of the `email` key inside it."},typeVersion:1},{id:`4c41fb6a-5f93-408f-9583-1e118d139dcf`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`5. The Combo Move`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3808,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`first_project_status`,type:`string`,value:`={{ $('Source Data').last().json.projects[0].status }}`}]}},typeVersion:3.4},{id:`2123cd02-5cb6-4dd7-89e5-7af1c6edf234`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note5`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-4048,672],parameters:{color:6,width:580,height:480,content:`## Lesson 5: Accessing Data in an Array of Objects

This is the ultimate test of the previous lessons!

**The Goal:** Get the *status* of the *first* project in the list.

**The Expression:** \`{{ $('Source Data').last().json.projects[0].status }}\`

**Breakdown:**
1.  \`...projects\`: We select the array of projects.
2.  \`[0]\`: We pick the first object in that array.
3.  \`.status\`: From that chosen object, we grab the value of the \`status\` key.`},typeVersion:1},{id:`f25a5a9d-518d-4a4a-b2ad-36fd0e1f5bd2`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`6. A Touch of Magic`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3200,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`name_in_caps`,type:`string`,value:`={{ $('Source Data').last().json.name.toUpperCase() }}`},{id:`67890`,name:`age_in_dog_years`,type:`number`,value:`={{ Math.round($('Source Data').last().json.age / 7) }}`},{id:`abcde`,name:`age_data_type`,type:`string`,value:`={{ typeof $('Source Data').last().json.age }}`}]}},typeVersion:3.4},{id:`0ebf5e6b-feb8-4f32-9979-9d7555b461ed`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note6`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-3440,640],parameters:{color:3,width:580,height:520,content:`## Lesson 6: A Touch of Magic (JS Functions)

You can do more than just retrieve data; you can **manipulate and inspect it!**

**The Expressions:**
- **Transform Text:** \`{{ $('Source Data').last().json.name.toUpperCase() }}\`
- **Do Math:** \`{{ Math.round($('Source Data').last().json.age / 7) }}\`
- **Check Data Type:** \`{{ typeof $('Source Data').last().json.age }}\`

**Breakdown:**
- **\`.toUpperCase()\`**: A standard JavaScript function for strings.
- **\`Math.round(...)\`**: The \`Math\` object gives you access to powerful math functions.
- **\`typeof\`**: An operator that tells you what kind of data you're looking at ("string", "number", "object", etc.).`},typeVersion:1},{id:`81d8c2d6-95cc-47e3-b0f0-9c698a120d1c`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`9. The "All Items" View`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1264,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`all_skills_string`,type:`string`,value:`={{ $('Split Out Skills').all().map(item => item.json.skills).join(', ') }}`}]}},executeOnce:!0,typeVersion:3.4},{id:`609e27f8-1702-493e-bc8b-cbade4561bd2`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note7`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1696,640],parameters:{color:5,width:780,height:520,content:`## Lesson 9: Working with Multiple Items (\`$items\` & Arrow Functions)

What if a node outputs *multiple* items and you want to summarize them? \`$items()\` is your tool.

**The Goal:** Get a single, comma-separated string of all the user's skills.

**The Expression:** \`{{ $('Split Out Skills').all().map(item \`=>\` item.json.skills).join(', ') }}\`

**What is \`item => ...\`?**
This is an **Arrow Function**, a shorthand for "for each thing, do this".
- \`item\`: A temporary name for each item in the list as we loop over it.
- =>: The "arrow" that separates the item from the action.
- \`item.json.skills\`: The action to perform—in this case, get the skill value from the item.`},typeVersion:1},{id:`d6afc595-c6f0-47b2-894e-b03d6a0227ee`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Final Exam`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-688,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`final_summary`,type:`string`,value:`=User {{ $('2. The n8n Selectors').last().json.user_name_from_first }} is {{ $('Source Data').last().json.age }}.

Their best skill is {{ $('3. Working with Arrays').last().json.second_skill }}.

Their first project was {{ $('Source Data').last().json.projects[0].name }}, which is now {{ $('5. The Combo Move').last().json.first_project_status }}.

All skills: {{ $('9. The "All Items" View').last().json.all_skills_string }}.`}]}},typeVersion:3.4},{id:`99a7fb24-491c-436e-a775-6fabdc2c4004`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note8`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-896,736],parameters:{color:6,width:520,height:420,content:`## 🎓 FINAL EXAM: Putting It All Together

This node uses everything we've learned to build a final summary object.

Look at the expressions for each field. They pull data from different nodes and use different techniques you've just practiced.

**Congratulations! You now have the foundational knowledge to link data and build powerful, dynamic workflows in n8n.**`},typeVersion:1},{id:`c3f2fd66-784d-4675-8cb3-72dd33e6ee4e`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`2. The n8n Selectors`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-5568,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`user_name_from_first`,type:`string`,value:`={{ $('Source Data').last().json.name }}`}]}},typeVersion:3.4},{id:`bade9e22-6e9d-4f25-a1b7-974cbf2d5c61`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note9`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-5872,528],parameters:{width:680,height:620,content:"## Lesson 2: The n8n Selectors (`.first()`, `.last()`, `.all()`)\n\nIn the last lesson, we used `.item`. When there is only one output item from a node, this is equivalent to `.last()`. Using `.last()` explicitly is often safer and clearer.\n\n**The Goal:** Get the user's name using the `.last()` selector.\n\n**The Expression:** `{{ $('Source Data').last().json.name }}`\n\n**Why is this better?**\nIf a node ever returns multiple items, `.last()` guarantees you only get data from the very last one.\n\nIf you ever need to match the selected data with the input items, this is where `.item` cannot be replaced.\n\n**Other Selectors:**\n- **`.first()`**: Gets the data from the first item.\n- **`.all()`**: Gets data from ALL items, returning it as an array of objects. (This is different from `$items`!)"},typeVersion:1},{id:`7c4b718e-fca8-4dbe-8b3b-d6aeeaa78d6d`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`7. Inspecting Objects`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2640,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`contact_keys`,type:`array`,value:`={{ Object.keys($('Source Data').last().json.contact) }}`}]}},typeVersion:3.4},{id:`089b02d1-e43b-4baf-8bcf-b2dd7a95df92`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note10`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2832,640],parameters:{color:2,width:500,height:520,content:`## Lesson 7: Inspecting Objects (\`Object.keys()\`)

What if you have an object but you don't know what keys are inside it? \`Object.keys()\` comes to the rescue.

**The Goal:** Get a list of all the keys inside the \`contact\` object.

**The Expression:** \`{{ Object.keys($('Source Data').last().json.contact) }}\`

This is incredibly useful for dynamically processing data. It returns an **array** containing the names of the keys (e.g., \`["email", "phone"]\`).`},typeVersion:1},{id:`81a16f66-4fca-47af-841c-91e16ff9587e`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`8. Utility Functions`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2064,992],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`contact_as_string`,type:`string`,value:`={{ JSON.stringify($('Source Data').last().json.contact, null, 2) }}`},{id:`06003b65-7482-4d5a-b2c0-1794859ab461`,name:`skills`,type:`array`,value:`={{ $('Source Data').last().json.skills }}`}]}},typeVersion:3.4},{id:`b7aea910-5fd6-420f-9814-77afb8ab9517`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note11`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-2304,640],parameters:{width:580,height:520,content:`## Lesson 8: Utility Functions (\`JSON.stringify()\`)

Sometimes you need to convert a structured JSON object back into a clean, single string. This is common when sending data to another service, like in an AI prompt.

**The Goal:** Turn the entire \`contact\` object into a formatted string.

**The Expression:** \`{{ JSON.stringify($('Source Data').last().json.contact, null, 2) }}\`

**Breakdown:**
- **\`JSON.stringify(...)\`**: The function that does the conversion.
- **\`null, 2\`**: These optional parameters tell it to "pretty-print" the string with an indentation of 2 spaces, making it readable.`},typeVersion:1},{id:`2b83f9a2-7c71-43bb-b940-d0c3204cf6a2`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Split Out Skills`,type:`n8n-nodes-base.splitOut`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-1488,992],parameters:{include:`allOtherFields`,options:{},fieldToSplitOut:`skills`},typeVersion:1},{id:`933a0592-2deb-4db7-b801-d52dbbed1252`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note12`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-352,-128],parameters:{color:3,width:540,height:1280,content:`## Was this helpful? Let me know!
[![clic](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/clic_down_lucas.gif)](https://n8n.ac)

I really hope this tutorial helped you understand n8n Expressions better. Your feedback is incredibly valuable and helps me create better resources for the n8n community.

### **Share Your Thoughts & Ideas**

Whether you have a suggestion, found a typo, or just want to say thanks, I'd love to hear from you!
Here's a simple n8n form built for this purpose:

#### ➡️ **[Click here to give feedback](https://api.ia2s.app/form/templates/feedback?template=Expressions%20Tutorial)**

### **Ready to Build Something Great?**

If you're looking to take your n8n skills or business automation to the next level, I can help.

**🎓 n8n Coaching:** Want to become an n8n pro? I offer one-on-one coaching sessions to help you master workflows, tackle specific problems, and build with confidence.
#### ➡️ **[Book a Coaching Session](https://api.ia2s.app/form/templates/coaching?template=Expressions%20Tutorial)**

**💼 n8n Consulting:** Have a complex project, an integration challenge, or need a custom workflow built for your business? Let's work together to create a powerful automation solution.
#### ➡️ **[Inquire About Consulting Services](https://api.ia2s.app/form/templates/consulting?template=Expressions%20Tutorial)**

---

Happy Automating!
Lucas Peyrin | [n8n Academy](https://n8n.ac)`},typeVersion:1},{id:`efc93cff-1e16-46fc-a839-7cca5ccd27f8`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note15`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-896,304],parameters:{color:6,width:512,height:408,content:`## [>> Go to Eval Workflow <<](https://n8n.io/workflows/6236)

Verify your skills with a complete eval workflow to put your Expression Skills to the test.
[![Test Skills](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/test_your_skillls_button.gif)](https://n8n.io/workflows/6236)`},typeVersion:1}],connections:{"Source Data":{main:[[{node:`1. The Basics`,type:`main`,index:0}]]},"1. The Basics":{main:[[{node:`2. The n8n Selectors`,type:`main`,index:0}]]},"Start Tutorial":{main:[[{node:`Source Data`,type:`main`,index:0}]]},"4. Going Deeper":{main:[[{node:`5. The Combo Move`,type:`main`,index:0}]]},"Split Out Skills":{main:[[{node:`9. The "All Items" View`,type:`main`,index:0}]]},"5. The Combo Move":{main:[[{node:`6. A Touch of Magic`,type:`main`,index:0}]]},"6. A Touch of Magic":{main:[[{node:`7. Inspecting Objects`,type:`main`,index:0}]]},"2. The n8n Selectors":{main:[[{node:`3. Working with Arrays`,type:`main`,index:0}]]},"8. Utility Functions":{main:[[{node:`Split Out Skills`,type:`main`,index:0}]]},"7. Inspecting Objects":{main:[[{node:`8. Utility Functions`,type:`main`,index:0}]]},"3. Working with Arrays":{main:[[{node:`4. Going Deeper`,type:`main`,index:0}]]},'9. The "All Items" View':{main:[[{node:`Final Exam`,type:`main`,index:0}]]}}},Kj={name:`Workflow logic`,meta:{templateCredsSetupCompleted:!1,templateId:`workflow_logic`},nodes:[{id:`d6cf9b3d-66b8-4022-8c9d-698e89cd22fd`,name:`Start Sorting`,type:`n8n-nodes-base.manualTrigger`,position:[-880,608],parameters:{},typeVersion:1},{id:`b8c72a1e-0268-4d99-8141-ca14e35cbd6a`,name:`Sticky Note`,type:`n8n-nodes-base.stickyNote`,position:[-1264,192],parameters:{width:624,height:596,content:`### Tutorial: The Logic Trio (Merge, IF, Switch)

Welcome! This workflow will teach you the three most important nodes for controlling the flow of your data.

**The Analogy: A Package Sorting Center**
- **Data Items:** Think of these as packages moving on a conveyor belt.
- **Merge Node:** A point where multiple conveyor belts combine into one.
- **IF Node:** A simple sorting gate with two paths (e.g., "Fragile" or "Not Fragile").
- **Switch Node:** An advanced sorting machine with many paths (e.g., sorting by destination city).


**How to use this tutorial:**
1.  Click **"Execute Workflow"**.
2.  Follow the flow from left to right, clicking on each node to see its output.
3.  Read the sticky notes to understand what each node does.`},typeVersion:1},{id:`81532695-73c0-4357-a957-3d0ef580578f`,name:`Sticky Note1`,type:`n8n-nodes-base.stickyNote`,position:[-272,192],parameters:{color:4,width:384,height:604,content:`### 1. The Merge Node

**Analogy:** A conveyor belt where packages from different loading docks (the \`Set\` nodes) come together.

**What it does:** The Merge node combines multiple streams of data into a single stream.

Here, it's set to **Append** mode, which is the most common. It waits for all incoming data and then passes it all through together.

**➡️ Look at the output. We now have both the letter and the parcel in one list, ready for the next step!**`},typeVersion:1},{id:`dadbac54-6b31-4a0f-8d5e-b6121467e90e`,name:`Sticky Note2`,type:`n8n-nodes-base.stickyNote`,position:[144,192],parameters:{color:4,width:384,height:596,content:`### 2. The IF Node

**Analogy:** A simple sorting gate with two paths: a "true" path and a "false" path.

**What it does:** The IF node checks if a condition is met. If it's true, the data goes down the top output. If it's false, it goes down the bottom output.

Here, we're asking a simple question: **"Does this package have an \`is_fragile\` property?"**

**➡️ The parcel will go down the 'true' path, and the letters (which don't have that property) will go down the 'false' path.**`},typeVersion:1},{id:`0c330031-eab5-4ee3-8b11-91aee526952a`,name:`Add 'Fragile' Handling`,type:`n8n-nodes-base.set`,position:[624,512],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`handling_instructions`,type:`string`,value:`Handle with care!`}]},includeOtherFields:!0},typeVersion:3.4},{id:`d14c0e68-3823-4f15-98eb-58a0d4983861`,name:`Add 'Standard' Handling`,type:`n8n-nodes-base.set`,position:[624,704],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`handling_instructions`,type:`string`,value:`Standard handling`}]},includeOtherFields:!0},typeVersion:3.4},{id:`2ebde854-aa6b-48de-83b1-33950a1486e0`,name:`Sticky Note3`,type:`n8n-nodes-base.stickyNote`,position:[816,272],parameters:{color:5,width:384,height:552,content:`### Merge Again?

**Why do we need another Merge node here?**

After the IF node, our data was split into two different paths. Before we can perform the *next* sorting step on all packages, we need to get them back onto the same conveyor belt.

This is a very common and important pattern in n8n: 
**Split -> Process -> Merge.**`},typeVersion:1},{id:`66ca4ac5-aceb-426e-ab22-50c012602a85`,name:`Sticky Note4`,type:`n8n-nodes-base.stickyNote`,position:[1232,176],parameters:{color:4,width:400,height:648,content:`### 3. The Switch Node

**Analogy:** An advanced sorting machine that can send packages to many different destinations.

**What it does:** The Switch node is like an IF node with multiple doors. It checks the value of a single field (\`destination\` in this case) and sends the data down the path that matches the value.

- If the destination is "London", it goes to output 0.
- If it's "New York", it goes to output 1.
- If it's something else, it goes to the **default** output.


**➡️ This is much cleaner than using many IF nodes chained together!**`},typeVersion:1},{id:`10f56a78-85cd-4c8b-88e0-b6b3f0346e89`,name:`Send to London Bin`,type:`n8n-nodes-base.set`,position:[1776,320],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`sorting_bin`,type:`string`,value:`A1 (London)`}]},includeOtherFields:!0},typeVersion:3.4},{id:`2cba95bd-2c9b-42d1-90cb-74c2edf97ec7`,name:`Send to New York Bin`,type:`n8n-nodes-base.set`,position:[1776,512],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`sorting_bin`,type:`string`,value:`B2 (New York)`}]},includeOtherFields:!0},typeVersion:3.4},{id:`1531b4e3-eece-4c89-98bd-e9633fdd77f6`,name:`Send to Tokyo Bin`,type:`n8n-nodes-base.set`,position:[1776,704],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`sorting_bin`,type:`string`,value:`C3 (Tokyo)`}]},includeOtherFields:!0},typeVersion:3.4},{id:`d46604a8-663e-42bd-a175-a34edb8953fb`,name:`Default Bin`,type:`n8n-nodes-base.set`,position:[1776,896],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`sorting_bin`,type:`string`,value:`Return to Sender`}]},includeOtherFields:!0},typeVersion:3.4},{id:`570040aa-3f8d-4f59-904a-ee3deb36a9df`,name:`Final Sorted Packages`,type:`n8n-nodes-base.noOp`,position:[2160,624],parameters:{},typeVersion:1},{id:`756313e7-d2f3-45cc-a4f5-f91e7a8f778a`,name:`Sticky Note5`,type:`n8n-nodes-base.stickyNote`,position:[2032,272],parameters:{color:6,width:368,height:560,content:`### All Packages Sorted!

Congratulations! You've successfully used the three logic nodes to sort your packages.

**You learned how to:**
- **Merge** data from different sources.
- Use **IF** for simple true/false decisions.
- Use **Switch** for complex, multi-path routing.


Mastering these three nodes is the key to building powerful and intelligent workflows in n8n.`},typeVersion:1},{id:`4466652f-cc2b-47b1-bf4f-98d89753881f`,name:`3. Switch Node`,type:`n8n-nodes-base.switch`,position:[1392,576],parameters:{rules:{values:[{outputKey:`London`,conditions:{options:{version:2,leftValue:``,caseSensitive:!0,typeValidation:`strict`},combinator:`and`,conditions:[{id:`8d43cde4-027a-4ca7-a24c-6f74f12d6238`,operator:{type:`string`,operation:`equals`},leftValue:`={{ $json.destination }}`,rightValue:`London`}]},renameOutput:!0},{outputKey:`New York`,conditions:{options:{version:2,leftValue:``,caseSensitive:!0,typeValidation:`strict`},combinator:`and`,conditions:[{id:`399a0fbd-6be5-48e9-9f66-04cf385cb418`,operator:{name:`filter.operator.equals`,type:`string`,operation:`equals`},leftValue:`={{ $json.destination }}`,rightValue:`New York`}]},renameOutput:!0},{outputKey:`Tokyo`,conditions:{options:{version:2,leftValue:``,caseSensitive:!0,typeValidation:`strict`},combinator:`and`,conditions:[{id:`a69d387d-a174-42b3-bc5f-c8b46b7c2375`,operator:{name:`filter.operator.equals`,type:`string`,operation:`equals`},leftValue:`={{ $json.destination }}`,rightValue:`Tokyo`}]},renameOutput:!0}]},options:{fallbackOutput:`extra`,renameFallbackOutput:`Default`}},typeVersion:3.2},{id:`add68013-30a7-43db-93d4-5af691764684`,name:`Create Letter`,type:`n8n-nodes-base.set`,position:[-496,416],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`package_id`,type:`string`,value:`L-001`},{id:`67890`,name:`type`,type:`string`,value:`letter`},{id:`abcde`,name:`destination`,type:`string`,value:`London`}]}},typeVersion:3.4},{id:`5af75a45-b912-41c6-b073-03188ae914ef`,name:`1. Merge Node`,type:`n8n-nodes-base.merge`,position:[-128,592],parameters:{numberInputs:3},typeVersion:3.2},{id:`11627c3b-465a-4a4a-bfe9-95c08d502f2f`,name:`2. IF Node`,type:`n8n-nodes-base.if`,position:[272,608],parameters:{options:{},conditions:{options:{version:2,leftValue:``,caseSensitive:!0,typeValidation:`loose`},combinator:`and`,conditions:[{id:`a68aad83-1d09-4ebe-9732-aaedc407bb4b`,operator:{type:`boolean`,operation:`true`,singleValue:!0},leftValue:`={{ $json.is_fragile }}`,rightValue:``}]},looseTypeValidation:!0},typeVersion:2.2},{id:`4b5b5ba4-25e1-4ef0-93d8-50670dbc1ce0`,name:`Re-group All Packages`,type:`n8n-nodes-base.merge`,position:[960,608],parameters:{},typeVersion:3.2},{id:`21d270c4-c19c-42ed-a6e3-67ecedd1c0c9`,name:`Create 2nd Letter`,type:`n8n-nodes-base.set`,position:[-496,608],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`package_id`,type:`string`,value:`L-002`},{id:`67890`,name:`type`,type:`string`,value:`letter`},{id:`abcde`,name:`destination`,type:`string`,value:`Tokyo`}]}},typeVersion:3.4},{id:`8a295323-9515-410c-9ac1-fb431d08cea2`,name:`Create Parcel`,type:`n8n-nodes-base.set`,position:[-496,800],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`package_id`,type:`string`,value:`P-001`},{id:`67890`,name:`type`,type:`string`,value:`parcel`},{id:`abcde`,name:`destination`,type:`string`,value:`New York`},{id:`fghij`,name:`is_fragile`,type:`boolean`,value:!0}]}},typeVersion:3.4},{id:`c06a0f40-cc18-4710-8b07-9d396e89a83d`,name:`Sticky Note10`,type:`n8n-nodes-base.stickyNote`,position:[2432,32],parameters:{color:3,width:540,height:800,content:`## Was this helpful? Let me know!

I really hope this template helped you understand how Logical Operation Nodes work here in n8n. Your feedback is incredibly valuable and helps me create better resources for the n8n community.

### **Share Your Thoughts & Ideas**

Whether you have a suggestion, found a typo, or just want to say thanks, I'd love to hear from you!
Here's a simple n8n form built for this purpose:

#### ➡️ **[Click here to give feedback](https://api.ia2s.app/form/templates/feedback?template=Merge%20If%20Switch)**

### **Ready to Build Something Great?**

If you're looking to take your n8n skills or business automation to the next level, I can help.

**🎓 n8n Coaching:** Want to become an n8n pro? I offer one-on-one coaching sessions to help you master workflows, tackle specific problems, and build with confidence.
#### ➡️ **[Book a Coaching Session](https://api.ia2s.app/form/templates/coaching?template=Merge%20If%20Switch)**

**💼 n8n Consulting:** Have a complex project, an integration challenge, or need a custom workflow built for your business? Let's work together to create a powerful automation solution.
#### ➡️ **[Inquire About Consulting Services](https://api.ia2s.app/form/templates/consulting?template=Merge%20If%20Switch)**

---

Happy Automating!
Lucas Peyrin`},typeVersion:1}],pinData:{},connections:{"2. IF Node":{main:[[{node:`Add 'Fragile' Handling`,type:`main`,index:0}],[{node:`Add 'Standard' Handling`,type:`main`,index:0}]]},"Default Bin":{main:[[{node:`Final Sorted Packages`,type:`main`,index:0}]]},"1. Merge Node":{main:[[{node:`2. IF Node`,type:`main`,index:0}]]},"Create Letter":{main:[[{node:`1. Merge Node`,type:`main`,index:0}]]},"Create Parcel":{main:[[{node:`1. Merge Node`,type:`main`,index:2}]]},"Start Sorting":{main:[[{node:`Create Parcel`,type:`main`,index:0},{node:`Create 2nd Letter`,type:`main`,index:0},{node:`Create Letter`,type:`main`,index:0}]]},"3. Switch Node":{main:[[{node:`Send to London Bin`,type:`main`,index:0}],[{node:`Send to New York Bin`,type:`main`,index:0}],[{node:`Send to Tokyo Bin`,type:`main`,index:0}],[{node:`Default Bin`,type:`main`,index:0}]]},"Create 2nd Letter":{main:[[{node:`1. Merge Node`,type:`main`,index:1}]]},"Send to Tokyo Bin":{main:[[{node:`Final Sorted Packages`,type:`main`,index:0}]]},"Send to London Bin":{main:[[{node:`Final Sorted Packages`,type:`main`,index:0}]]},"Send to New York Bin":{main:[[{node:`Final Sorted Packages`,type:`main`,index:0}]]},"Re-group All Packages":{main:[[{node:`3. Switch Node`,type:`main`,index:0}]]},"Add 'Fragile' Handling":{main:[[{node:`Re-group All Packages`,type:`main`,index:0}]]},"Add 'Standard' Handling":{main:[[{node:`Re-group All Packages`,type:`main`,index:1}]]}}},qj={name:`API fundamentals`,meta:{templateCredsSetupCompleted:!1,templateId:`api_fundamentals`},nodes:[{id:`52e84ac4-6495-443e-b3d6-16d3291a6261`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Start Tutorial`,type:`n8n-nodes-base.manualTrigger`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[320,464],parameters:{},typeVersion:1},{id:`5aab442c-2fd7-4b41-ae0f-eeaf9e722213`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`1. The Kitchen (GET /menu)`,type:`n8n-nodes-base.webhook`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1632,464],webhookId:`a1b2c3d4-e5f6-7890-1234-567890abcdef`,parameters:{path:`/tutorial/api/menu`,options:{},responseMode:`lastNode`},typeVersion:2},{id:`cee20f21-eb2e-4ea6-947f-acbc7f27a437`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Prepare Menu Data`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1856,464],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`item`,type:`string`,value:`Pizza`},{id:`67890`,name:`price`,type:`number`,value:12}]}},typeVersion:3.4},{id:`4af53e2a-0d5a-4b2e-8e65-fbc19d138abb`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`1. The Customer (GET Menu Item)`,type:`n8n-nodes-base.httpRequest`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1312,464],parameters:{url:`={{ $json.base_url }}/tutorial/api/menu`,options:{}},typeVersion:4.1},{id:`a1f76b04-daf5-41b9-b300-332b61d69cda`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[-320,-96],parameters:{width:800,height:768,content:`## Tutorial - What is an API?

Welcome! This workflow will teach you the basics of APIs (Application Programming Interfaces).

**What is an API?**
Think of it like ordering food at a restaurant.
- **You** are the "Client" (the **HTTP Request** node). You want something.
- The **Kitchen** is the "Server" (the **Webhook** node). It has the data/service you want.
- The **API** is the **Waiter and the Menu**. It's the set of rules and options for making a request and getting a response.


**What is an Endpoint?**
An endpoint is a specific address for a specific action. For example, \`GET /menu\` is one endpoint to get the menu, and \`POST /review\` is another to submit a review. Each webhook in this tutorial represents one endpoint.

**How to use this tutorial:**
1.  **Activate** the workflow (toggle on the top right).
2.  **Configure the Base URL** (see the yellow note to the left).
3.  Click **"Execute Workflow"**. The workflow will run from top to bottom.
4.  Explore each "Lesson" by clicking on the **HTTP Request** node (the Customer) and its corresponding **Webhook** node (the Kitchen).


**➡️ How to See the Data:**
When you run this, the Webhook nodes run in the background. To see the data they received, go to the **"Executions"** tab of this workflow. You will see a separate execution for each API call!`},typeVersion:1},{id:`d37a6305-25ff-412d-8763-06e4c0a6b8ae`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note1`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1248,160],parameters:{color:7,width:864,height:512,content:`#### Lesson 1: The Basics (Method & URL)

This is the simplest possible request.

- **URL (Uniform Resource Locator):** This is the **address of the restaurant's kitchen**. The HTTP Request node needs to know exactly where to send the order. We use an expression to get the Webhook's address automatically from our configuration.

- **Method: \`GET\`**: This is **what you want to do**. \`GET\` is used to **retrieve** or **get** information. It's like asking the waiter, "What's on the menu today?" \`GET\` requests are simple and don't contain a "body" payload.


**➡️ Look at the output of the HTTP Request node. It received exactly what the \`Respond to Webhook\` node sent back!**`},typeVersion:1},{id:`edef5d0b-f0a4-4651-9ee4-84ecbe9e8062`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`2. The Customer (GET with Query Params)`,type:`n8n-nodes-base.httpRequest`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1312,1136],parameters:{url:`={{ $json.base_url }}/tutorial/api/order`,options:{},sendQuery:!0,queryParameters:{parameters:[{name:`extra_cheese`,value:`true`}]}},typeVersion:4.1},{id:`a2b5422d-fb46-4737-8182-dbbb50293fa1`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`2. The Kitchen (GET /order)`,type:`n8n-nodes-base.webhook`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1632,1136],webhookId:`b2c3d4e5-f6a7-8901-2345-67890abcdef1`,parameters:{path:`/tutorial/api/order`,options:{},responseMode:`lastNode`},typeVersion:2},{id:`91d5b241-64c9-48cf-bf79-fff121d0febf`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Prepare Cheese Pizza`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2064,1040],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`order`,type:`string`,value:`Pizza with extra cheese`}]}},typeVersion:3.4},{id:`bee0bce4-f854-4c1d-9ad1-b526f02e1925`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Prepare Plain Pizza`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2064,1232],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`order`,type:`string`,value:`Plain Pizza`}]}},typeVersion:3.4},{id:`d6862155-ea76-4357-bae7-c4329ec1a612`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note2`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1248,704],parameters:{color:7,width:1056,height:720,content:`#### Lesson 2: Customizing a Request (Query Parameters)

What if you want to customize your order? That's what Query Parameters are for.

**Query Parameters:** These are simple \`key=value\` options added to the end of the URL after a \`?\`. They are used to filter, sort, or specify what you want.

It's like telling the waiter, "I'll have the pizza... **and can you add extra cheese?**"

The full URL sent by the HTTP Request node looks like this:
\`.../tutorial/api/order?extra_cheese=true\`

**⚠️ Important:** Because they are part of the URL, **all query parameter values are treated as strings!** The webhook receives \`"true"\` (a string), not \`true\` (a boolean). The IF node is set to a "loose" comparison to handle this correctly.

**➡️ The Webhook node uses an IF node to check for this parameter and changes its response. Try setting the value to \`false\` in the HTTP Request node and run it again!**`},typeVersion:1},{id:`c568bc8c-822d-42b9-ab9b-2d91ae4e4fed`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`3. The Customer (POST with Body)`,type:`n8n-nodes-base.httpRequest`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1312,1744],parameters:{url:`={{ $json.base_url }}/tutorial/api/review`,method:`POST`,options:{},sendBody:!0,bodyParameters:{parameters:[{name:`comment`,value:`The pizza was amazing!`},{name:`rating`,value:5}]}},typeVersion:4.1},{id:`0f0dae83-3290-4a5f-a039-3b54d87bcf7d`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`3. The Kitchen (POST /review)`,type:`n8n-nodes-base.webhook`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1632,1744],webhookId:`c3d4e5f6-a7b8-9012-3456-7890abcdef12`,parameters:{path:`/tutorial/api/review`,options:{},httpMethod:`POST`,responseMode:`lastNode`},typeVersion:2},{id:`c5aa4f94-eca3-4321-b961-084917b93b81`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Process Review Data`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1856,1744],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`status`,type:`string`,value:`review_received`},{id:`67890`,name:`your_comment`,type:`string`,value:`={{ $json.body.comment }}`},{id:`91011`,name:`your_rating`,type:`number`,value:`={{ $json.body.rating }}`}]}},typeVersion:3.4},{id:`4020d264-7c01-4cf2-b51e-b8b3f2bc382b`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note3`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1248,1456],parameters:{color:7,width:1056,height:476,content:`#### Lesson 3: Sending Data (POST & Body)

Sometimes, you don't want to *get* data, you want to *send* it.

- **Method: \`POST\`**: This method is used to **send new data** to the server to create or update a resource. It's like handing the waiter a completed customer feedback card.

- **Body:** This is the **actual data you are sending**. Unlike a \`GET\` request, a \`POST\` request has a "body" where you can put complex data, like a JSON object. This is much more powerful than query parameters for sending information.


**➡️ The HTTP Request sends a JSON object in its body. The Webhook receives it and includes your comment in its response. Check the "Executions" panel to see the full body the webhook received!**`},typeVersion:1},{id:`0fec2702-e2c9-4090-a327-f1d723b144b6`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`4. The Customer (GET with Headers/Auth)`,type:`n8n-nodes-base.httpRequest`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1312,2608],parameters:{url:`={{ $json.base_url }}/tutorial/api/secret-dish`,options:{},sendHeaders:!0,headerParameters:{parameters:[{name:`x-api-key`,value:`super-secret-key`}]}},typeVersion:4.1},{id:`a35c1fc1-65a3-4d84-b29e-22939d334005`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`4. The Kitchen (GET /secret-dish)`,type:`n8n-nodes-base.webhook`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1632,2608],webhookId:`d4e5f6a7-b8c9-0123-4567-890abcdef123`,parameters:{path:`/tutorial/api/secret-dish`,options:{},responseMode:`responseNode`},typeVersion:2},{id:`8cb4d6d3-c29f-4562-a966-d13beafd8f40`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note4`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1248,1968],parameters:{color:7,width:1056,height:908,content:`#### Lesson 4: Identification (Headers & Auth)

Headers contain meta-information *about* your request. They're not part of the data itself, but they provide important context. Authentication is a common use case.

- **Headers:** Think of this as **showing your VIP membership card** or whispering a secret password to the waiter. It's information that proves who you are or what your request's properties are.

- **Authentication (Auth):** This is the process of proving your identity. Here, we use a custom header (\`x-api-key\`) as a "secret key". In the real world, this is how most APIs control access.


**➡️ The Webhook checks for the correct secret key in the headers. If it's wrong or missing, it denies the request with a \`401 Unauthorized\` status code. Try changing the key in the HTTP Request node!**`},typeVersion:1},{id:`3ab5e611-71d2-4ff3-9462-fb69d60b48aa`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`5. The Customer (Request with Timeout)`,type:`n8n-nodes-base.httpRequest`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,onError:`continueErrorOutput`,position:[1312,3328],parameters:{url:`={{ $json.base_url }}/tutorial/api/slow-service`,options:{timeout:2e3}},typeVersion:4.1},{id:`5545e004-b8c3-4c47-91ee-31a2efa4c833`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`5. The Kitchen (GET /slow-service)`,type:`n8n-nodes-base.webhook`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1632,3328],webhookId:`e5f6a7b8-c9d0-1234-5678-90abcdef1234`,parameters:{path:`/tutorial/api/slow-service`,options:{},responseMode:`lastNode`},typeVersion:2},{id:`237f65ad-3f1d-4afe-8541-89108afd57de`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Prepare Slow Response`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2064,3328],parameters:{options:{},assignments:{assignments:[{id:`12345`,name:`status`,type:`string`,value:`Finally, your food is here!`}]}},typeVersion:3.4},{id:`dbe83810-b95f-46dd-bc2d-bf456fe11f94`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note5`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1248,2912],parameters:{color:7,width:1056,height:624,content:`#### Lesson 5: Being Patient (Timeout & Error Handling)

An API request isn't instant. What if the kitchen is really busy?

- **Timeout:** This is the **maximum amount of time (in milliseconds) you are willing to wait** for a response before you give up.

- **On Error Output:** Notice the HTTP Request node has two outputs. The bottom one is the **error path**. If the request fails for any reason (like a timeout), the workflow will continue down this path instead of stopping.


In this example:
- The **Kitchen (Webhook)** has a 3-second delay.
- The **Customer (HTTP Request)** is only willing to wait for 2 seconds (2000 ms).


**➡️ This request is designed to FAIL! The customer gives up before the kitchen can finish. The error output of the HTTP Request node will light up. This is crucial for building robust workflows that can handle API failures.**`},typeVersion:1},{id:`4e74c301-06e2-4b19-8101-3c63816ea615`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Wait 3 seconds`,type:`n8n-nodes-base.wait`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1856,3328],webhookId:`86b44ff3-7d31-4027-a1cd-df67f9ab974a`,parameters:{amount:3},typeVersion:1.1},{id:`42619763-955e-40d6-bbdb-23eea3c0bd85`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`IF Authorized`,type:`n8n-nodes-base.if`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1856,2608],parameters:{options:{},conditions:{options:{version:2,leftValue:``,caseSensitive:!0,typeValidation:`strict`},combinator:`and`,conditions:[{id:`ca861c2d-78d9-403b-8bab-28d8e7dcf39c`,operator:{name:`filter.operator.equals`,type:`string`,operation:`equals`},leftValue:`={{ $json.headers['x-api-key'] }}`,rightValue:`super-secret-key`}]}},typeVersion:2.2},{id:`562d4436-df8c-47bf-b259-eea95ea88147`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`IF extra cheese`,type:`n8n-nodes-base.if`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1840,1136],parameters:{options:{},conditions:{options:{version:2,leftValue:``,caseSensitive:!0,typeValidation:`loose`},combinator:`and`,conditions:[{id:`ca861c2d-78d9-403b-8bab-28d8e7dcf39c`,operator:{type:`boolean`,operation:`true`,singleValue:!0},leftValue:`={{ $json.query.extra_cheese }}`,rightValue:`your-api-key-for-example`}]},looseTypeValidation:!0},typeVersion:2.2},{id:`57a48d64-954c-4871-a5ff-5390c69a003a`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note12`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[656,2336],parameters:{color:4,width:540,height:1200,content:`## Was this helpful? Let me know!
[![clic](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/clic_down_lucas.gif)](https://api.ia2s.app/form/templates/academy)

I really hope this tutorial helped you understand APIs better. Your feedback is incredibly valuable and helps me create better resources for the n8n community.

### **Have Feedback, a Question, or a Project Idea?**

I've streamlined the way we connect. It all starts with one simple form that takes less than 10 seconds. After that, you'll chat with my AI assistant who will gather the key details and pass them directly on to me.

#### ➡️ **[Click here to start the conversation](https://api.ia2s.app/form/templates/academy)**

Use this single link for anything you need:

*   **Give Feedback:** Share your thoughts on this template—whether you found a typo, encountered an unexpected error, have a suggestion, or just want to say thanks!

*   **n8n Coaching:** Get personalized, one-on-one guidance to master n8n. We can work together to get you launched with confidence or help you reach an expert level.

*   **n8n Consulting:** Have a complex business challenge or need a custom workflow built from scratch? Let's partner on a powerful automation solution tailored to your specific needs.

---

Happy Automating!
Lucas Peyrin | [n8n Academy](https://n8n.ac)`},typeVersion:1},{id:`df8ea622-c2a5-4f6b-9a09-5d35b1dea0aa`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note6`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[512,-96],parameters:{color:3,width:700,height:764,content:`## ✨ **CONFIGURATION REQUIRED** ✨

To use this interactive tutorial, you need to tell the "Customer" nodes where to find the "Kitchen" nodes.

### **1. Get your Webhook URL**

*   **Activate** this workflow using the toggle switch at the top right of the screen.
*   Open any Webhook node in this workflow (e.g., \`1. The Kitchen (GET /menu)\`).
*   Go to the **Production URL** field and click the copy button.

### **2. Update the CONFIGURATION Node**

*   Open the \`CONFIGURATION\` node (the one this note is pointing to).
*   In the **Value** field, **paste the full URL** you just copied.


That's it! Now you can run the workflow, and all the HTTP Request nodes will know how to call your webhooks.`},typeVersion:1},{id:`c0c76d70-c630-4630-a22e-1909a410c527`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Base URL`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[912,464],parameters:{options:{},assignments:{assignments:[{id:`7edededc-2f40-4b8e-b8db-ab4816f1a28e`,name:`base_url`,type:`string`,value:`={{ $json.your_n8n_webhook_url.match(/^(https?:\\/\\/[^\\/]+)\\/(webhook-test|webhook|v1|[^\\/]+)/)[1] + '/' + $json.your_n8n_webhook_url.match(/^(https?:\\/\\/[^\\/]+)\\/(webhook-test|webhook|v1|[^\\/]+)/)[2].replace('webhook-test','webhook') }}`}]}},typeVersion:3.4},{id:`e5f25f10-a1f0-4d67-b0fb-c3a2b8abf786`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note8`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1264,2288],parameters:{color:3,width:304,height:496,content:`### ⚠️ **Security Best Practice**

For this tutorial, we are putting the API key directly in the header. 

**In a real project, NEVER do this!**

Always use n8n's built-in **Credentials** system to store and manage secret keys. You would create a "Header Auth" credential and select it in the HTTP Request node's "Authentication" parameter. This keeps your secrets safe and out of your workflow JSON.`},typeVersion:1},{id:`e908261b-cced-4539-9ea0-f40fb9e009e5`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Respond with Secret`,type:`n8n-nodes-base.respondToWebhook`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2064,2496],parameters:{options:{},respondWith:`json`,responseBody:`{
  "dish": "The Chef's Special Truffle Pasta"
}`},typeVersion:1.4},{id:`52d54052-eab2-45b8-ac9a-389b7fdf40d3`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Respond: Unauthorized (401)`,type:`n8n-nodes-base.respondToWebhook`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2064,2704],parameters:{options:{responseCode:401},respondWith:`text`,responseBody:`You are not authorized to see the secret dish.`},typeVersion:1.4},{id:`f9d72d6c-47b8-4f51-8a69-ce4d557ae90f`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`OpenAPI Spec`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2336,704],parameters:{color:6,width:696,height:2096,content:`# What other services give you

Real-world APIs have documentation that tells developers how to use them. This is what the documentation for our little tutorial API would look like. To put you in context, you would see this documentation and create http request nodes accordingly.

**Remember**, AI can help you !


# API Documentation Example

A simple API to demonstrate http requests in n8n.

## API Endpoints

### GET /tutorial/api/menu

**Summary:** Get the menu

**Responses:**
*   \`200 OK\`: The restaurant menu.

---

### GET /tutorial/api/order

**Summary:** Get a customized order

**Parameters:**
*   \`extra_cheese\` (query, string, example: \`true\`): Whether to add extra cheese.


**Responses:**
*   \`200 OK\`: Your customized pizza order.

---

### POST /tutorial/api/review

**Summary:** Submit a review

**Request Body (application/json):**
\`\`\`json
{
  "comment": "string",
  "rating": 0
}
\`\`\`
*   \`comment\` (string): The review comment.
*   \`rating\` (integer): The rating given (e.g., 1-5).


**Responses:**
*   \`200 OK\`: Confirmation of review receipt.

---

### GET /tutorial/api/secret-dish

**Summary:** Get the secret dish (Auth Required)

**Authentication:** Requires API Key. See [Authentication](https://docs.n8n.io/integrations/builtin/credentials/httprequest/) section for details.

**Responses:**
*   \`200 OK\`: The secret dish.
*   \`401 Unauthorized\`: Authentication is required or invalid.

---

### GET /tutorial/api/slow-service

**Summary:** A slow endpoint to test timeouts

**Responses:**
*   \`200 OK\`: A delayed response.

---

## Authentication

This API uses an API Key for authentication on certain endpoints.

### API Key Authentication (\`ApiKeyAuth\`)

*   **Type:** API Key
*   **Location:** Header
*   **Header Name:** \`x-api-key\`


To authenticate, include your API key in the \`x-api-key\` header of your request.

**Example:**
\`\`\`
GET /tutorial/api/secret-dish
Host: your-api-domain.com
x-api-key: YOUR_API_KEY_HERE
\`\`\``},typeVersion:1},{id:`fba94b52-0c18-4f3c-a702-aa883a3df293`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note7`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2320,3040],parameters:{color:7,width:384,height:496,content:`![Kitch on fire](https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExaGk3ZHhsa2gwYWUweDFsa2dlb2Z6NWx5NGF1NnRoczE1a29kYjZjcyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/M6bJf9VBmrN1qTtPyL/giphy.webp)`},typeVersion:1},{id:`d6b845a9-9d27-49ec-a9fe-ac48650bd260`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note9`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1760,1040],parameters:{color:7,width:256,height:272,content:`![Kitch on fire](https://media2.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3MXIyOXBhZHhueGxnZjZhbnQ3MmRtbzg5aW9mZ3VrMGN2bGQ0Y3VidyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l4FGpeeBs3XLWxqrm/giphy.webp)`},typeVersion:1},{id:`c6d51163-f9ea-4d6b-af33-32107d3feb6e`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note10`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2128,448],parameters:{color:7,width:176,height:224,content:`![Kitch on fire](https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExMGgyNmxobWE5ZjhydXdwM2o1bWkwMjZna3A1OTdiOHNpeGE5cW5wNSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/2ka4S8LMiGxA371PD3/giphy.webp)`},typeVersion:1},{id:`b5a01aca-47be-42d8-8366-4f91bcf24682`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note11`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[2032,1728],parameters:{color:7,width:256,content:`![Kitch on fire](https://media4.giphy.com/media/v1.Y2lkPWVjZjA1ZTQ3YWo1ODNsNm9pZHh6dDBhNnp6bWRvaTRuc3hxbWlhd3NoMW40eHN4dyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/V1gX8pwYRRDoxFh6lJ/200.webp)`},typeVersion:1},{id:`adacc21c-801a-49bb-a6da-630fc8b4272c`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`⚙️CONFIGURATION⚙️`,type:`n8n-nodes-base.set`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[688,464],parameters:{options:{},assignments:{assignments:[{id:`7edededc-2f40-4b8e-b8db-ab4816f1a28e`,name:`your_n8n_webhook_url`,type:`string`,value:`PASTE_YOUR_WEBHOOK_URL_HERE`}]}},typeVersion:3.4},{id:`9eb6ee32-0d75-4817-a3d0-3106d88b14e6`,cid:`Ikx1Y2FzIFBleXJpbiI`,name:`Sticky Note14`,type:`n8n-nodes-base.stickyNote`,notes:`© 2025 Lucas Peyrin`,creator:`Lucas Peyrin`,position:[1600,2272],parameters:{color:7,width:400,height:256,content:`![Key](https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExb2VlZDBvZGQxMGtnbW9pMDBrZTFobXZ2ZnRvdmo5OHViNzdib2Z4dSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/HqVH7T3o1ggAguE4Oh/giphy.gif)`},typeVersion:1}],pinData:{"1. The Kitchen (GET /menu)":[{body:{},query:{},params:{},headers:{host:`your-n8n-instance.com`,accept:`application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7`,"user-agent":`n8n`,"accept-encoding":`gzip, deflate, br`,"x-forwarded-for":`192.168.1.1`,"x-forwarded-host":`your-n8n-instance.com`,"x-forwarded-proto":`https`},webhookUrl:`https://your-n8n-instance.com/webhook/tutorial/api/menu`}],"2. The Kitchen (GET /order)":[{body:{},query:{extra_cheese:`true`},params:{},headers:{host:`your-n8n-instance.com`,accept:`application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7`,"user-agent":`n8n`,"accept-encoding":`gzip, deflate, br`,"x-forwarded-for":`192.168.1.1`,"x-forwarded-host":`your-n8n-instance.com`,"x-forwarded-proto":`https`},webhookUrl:`https://your-n8n-instance.com/webhook/tutorial/api/order?extra_cheese=true`}],"3. The Kitchen (POST /review)":[{body:{rating:5,comment:`The pizza was amazing!`},query:{},params:{},headers:{host:`your-n8n-instance.com`,accept:`application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7`,"user-agent":`n8n`,"content-type":`application/json`,"content-length":`49`,"accept-encoding":`gzip, deflate, br`,"x-forwarded-for":`192.168.1.1`,"x-forwarded-host":`your-n8n-instance.com`,"x-forwarded-proto":`https`},webhookUrl:`https://your-n8n-instance.com/webhook/tutorial/api/review`}],"4. The Kitchen (GET /secret-dish)":[{body:{},query:{},params:{},headers:{host:`your-n8n-instance.com`,accept:`application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7`,"x-api-key":`super-secret-key`,"user-agent":`n8n`,"accept-encoding":`gzip, deflate, br`,"x-forwarded-for":`192.168.1.1`,"x-forwarded-host":`your-n8n-instance.com`,"x-forwarded-proto":`https`},webhookUrl:`https://your-n8n-instance.com/webhook/tutorial/api/secret-dish`}],"5. The Kitchen (GET /slow-service)":[{body:{},query:{},params:{},headers:{host:`your-n8n-instance.com`,accept:`application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7`,"user-agent":`n8n`,"accept-encoding":`gzip, deflate, br`,"x-forwarded-for":`192.168.1.1`,"x-forwarded-host":`your-n8n-instance.com`,"x-forwarded-proto":`https`},webhookUrl:`https://your-n8n-instance.com/webhook/tutorial/api/slow-service`}]},connections:{"Base URL":{main:[[{node:`1. The Customer (GET Menu Item)`,type:`main`,index:0},{node:`2. The Customer (GET with Query Params)`,type:`main`,index:0},{node:`3. The Customer (POST with Body)`,type:`main`,index:0},{node:`4. The Customer (GET with Headers/Auth)`,type:`main`,index:0},{node:`5. The Customer (Request with Timeout)`,type:`main`,index:0}]]},"IF Authorized":{main:[[{node:`Respond with Secret`,type:`main`,index:0}],[{node:`Respond: Unauthorized (401)`,type:`main`,index:0}]]},"Start Tutorial":{main:[[{node:`⚙️CONFIGURATION⚙️`,type:`main`,index:0}]]},"Wait 3 seconds":{main:[[{node:`Prepare Slow Response`,type:`main`,index:0}]]},"IF extra cheese":{main:[[{node:`Prepare Cheese Pizza`,type:`main`,index:0}],[{node:`Prepare Plain Pizza`,type:`main`,index:0}]]},"⚙️CONFIGURATION⚙️":{main:[[{node:`Base URL`,type:`main`,index:0}]]},"1. The Kitchen (GET /menu)":{main:[[{node:`Prepare Menu Data`,type:`main`,index:0}]]},"2. The Kitchen (GET /order)":{main:[[{node:`IF extra cheese`,type:`main`,index:0}]]},"3. The Kitchen (POST /review)":{main:[[{node:`Process Review Data`,type:`main`,index:0}]]},"4. The Kitchen (GET /secret-dish)":{main:[[{node:`IF Authorized`,type:`main`,index:0}]]},"5. The Kitchen (GET /slow-service)":{main:[[{node:`Wait 3 seconds`,type:`main`,index:0}]]}}},Jj=e=>{if(!Bj(e))throw new mr(`Invalid workflow template JSON structure`);return e};const Yj=()=>Jj(Vj),Xj=()=>Jj(Hj),Zj={RagStarterTemplate:Xj().meta.templateId,EasyAiTemplate:Yj().meta.templateId},Qj={BuildYourFirstAiAgent:Jj(Uj).meta.templateId,JsonBasics:Jj(Wj).meta.templateId,Expressions:Jj(Gj).meta.templateId,WorkflowLogic:Jj(Kj).meta.templateId,ApiFundamentals:Jj(qj).meta.templateId},$j=e=>Object.values(Qj).includes(e),eM=()=>[{name:`Build your first AI agent`,description:`This template launches your very first AI Agent —an AI-powered chatbot that can do more than just talk— it can take action using tools.`,template:Jj(Uj),nodes:[]},{name:`JSON basics`,description:`Designed to teach you the absolute basics of JSON (JavaScript Object Notation) and, more importantly, how to use it within n8n.`,template:Jj(Wj),nodes:[]},{name:`Expressions`,description:`Step-by-step tutorial designed to teach you the most important skill in n8n: using expressions to access and manipulate data.`,template:Jj(Gj),nodes:[]},{name:`Workflow logic`,description:`This template is a hands-on tutorial that teaches you the three most fundamental nodes for controlling the flow of your automations: Merge, IF, and Switch.`,template:Jj(Kj),nodes:[]},{name:`API fundamentals`,description:`Hands-on tutorial designed to demystify what an API is and how it works, right inside your n8n canvas.`,template:Jj(qj),nodes:[]}],tM=e=>[Yj(),Xj(),...eM().map(e=>e.template)].find(t=>t.meta.templateId===e);var nM=e(Lj(),1),rM=`-preview`;function iM(e,t,n=`node`){return{uuid:tr(),key:e.name,subcategory:t??e.codex?.subcategories?.[`Core Nodes`]?.[0]??`*`,properties:{...e},type:n}}function aM(e){let t=[Yi,`AI`,Vt];return e.reduce((e,n)=>{let r=[`*`],i=t.flatMap(e=>n.codex?.categories?.includes(e)?n.codex?.subcategories?.[e]??[]:[]);return i.length>0&&(r=i),r.forEach(t=>{e[t]||(e[t]=[]),e[t].push(iM(n,t))}),e},{})}function oM(e){return e.sort((e,t)=>{if(e.type!==`node`||t.type!==`node`)return 0;let n=e.properties?.displayName?.toLowerCase()||e.key,r=t.properties?.displayName?.toLowerCase()||t.key;return n.localeCompare(r,void 0,{sensitivity:`base`})})}function sM(e){let t=e.split(` `);return t.length>1&&`trigger`.startsWith(t.slice(-1)[0].toLowerCase())?t.slice(0,-1).filter(e=>e).join(` `).trimEnd():e}function cM(e,t,n={}){return Al().isAskAiEnabled||(t=t.filter(e=>e.key!==Kn)),lj(Sj(sM(e).toLowerCase(),t)||[],n).map(({item:e})=>e)}function lM(e){return e.map(e=>e.type===`section`?e.children:e).flat()}function uM(e){return e.type===`node`&&e.properties.codex?.categories?.includes(`AI`)?!e.properties.codex?.subcategories?.AI?.includes(fn):!1}function dM(e,t,n=!0){let r=t.reduce((e,t)=>(e[t.key]=t,e),{}),i=[];for(let t of e){let e=r[t];e&&i.push(e)}return n?oM(i):i}function fM(e){switch(e){case _i:return`globe`;case Pr:return`database`;case Rn:return`badge-check`;default:return`globe`}}function pM(e,t,n=!0){let r=t.filter(e=>typeof e==`object`),i=e=>e.reduce((e,t)=>{let n=r.find(e=>e.items.includes(t.key))?.key??`other`;return n&&(e[n]=[...e[n]??[],t]),e},{}),a=(e,t)=>e.map(e=>({type:`section`,key:e.key,title:e.title,children:n?oM(t[e.key]??[]):t[e.key]??[]})),o=e.filter(e=>!uM(e)),s=e.filter(e=>uM(e)),c=i(o),l=a(r,c),u=i(s),d=a((0,nM.default)(r,[`title`]),u),f=[...l,...d].concat({type:`section`,key:`other`,title:K.baseText(`nodeCreator.sectionNames.other`),children:oM(c.other??[])}).filter(e=>e.type!==`section`||e.children.length>0);return f.sort((e,t)=>e.key.toLowerCase().includes(`recommended`)?-1:t.key.toLowerCase().includes(`recommended`)?1:t.key===`Other Tools`?-1:0),mM(f)?f:e}var mM=e=>e.length?e.length>1||e[0].key===`sendAndWait`:!1;const hM=e=>{let t=e;return e.includes(`.`)&&(t=e.split(`.`).join(` `)),jj(t)},gM=e=>e.replace(rM,``),_M=(e=``)=>e.includes(rM);function vM(e){return e.type!==`node`||e.properties.tag||(Kt.includes(e.properties.name)?e.properties.tag={type:`info`,text:K.baseText(`generic.recommended`)}:xr.includes(e.properties.name)&&(e.properties.tag={type:`info`,text:K.baseText(`generic.betaProper`)})),e}function yM(e){return e.map(e=>({...e,uuid:`${e.key}-${tr()}`})).map(vM)}const bM=(e,t,n)=>{if(!t||n)return[];let r=e.map(e=>iM(e));return yM(cM(t||``,r))};function xM(e,t,n,r=[]){let i=!_M(e.key),a=gM(e.key.split(`.`)[0]),o=JM().communityNodeType(gM(e.key)),s={title:e.properties.displayName,description:e.properties.description,key:e.key,nodeIcon:t,installed:i,official:o?.isOfficialNode??!1,packageName:a,companyName:o?.companyName};if(r.length){let t=r?.map(t=>iM(t,e.properties.displayName,`action`));return{subcategory:e.properties.displayName,title:K.baseText(`nodeSettings.communityNodeDetails.title`),rootView:n,hasSearch:!1,mode:`actions`,items:t,communityNodeDetails:s}}return{subcategory:e.properties.displayName,title:K.baseText(`nodeSettings.communityNodeDetails.title`),rootView:n,hasSearch:!1,items:[e],mode:`community-node`,communityNodeDetails:s}}function SM(){return{uuid:Zj.RagStarterTemplate,key:Zj.RagStarterTemplate,type:`openTemplate`,properties:{templateId:Zj.RagStarterTemplate,title:K.baseText(`nodeCreator.ragStarterTemplate.openTemplateItem.title`),icon:`database`,description:K.baseText(`nodeCreator.ragStarterTemplate.openTemplateItem.description`),tag:{type:`info`,text:K.baseText(`generic.recommended`)}}}}function CM(e){return{uuid:`ai_templates_root`,key:`ai_templates_root`,type:`link`,properties:{title:K.baseText(`nodeCreator.aiPanel.linkItem.title`),icon:`box-open`,description:K.baseText(`nodeCreator.aiPanel.linkItem.description`),key:`ai_templates_root`,url:e,tag:{type:`info`,text:K.baseText(`generic.recommended`)}}}}function wM(e,{isRagStarterCalloutVisible:t=!1}={}){let n=[];return t&&[`rag`,`vec`,`know`].some(t=>e.toLowerCase().startsWith(t))&&n.push(SM()),n}const TM=(e,t)=>t.rootView===`AI Other`&&t.title===`Tools`?!1:e&&!t.communityNodeDetails;function EM(e){let t=e.filter(e=>e.actionKey===ua);if(t.length){let e=t[0].name;e===`n8n-nodes-base.discord`&&(t[0].values={...t[0].values,resource:`message`,operation:ua}),e===`n8n-nodes-base.microsoftTeams`&&(t[0].values={...t[0].values,resource:`chatMessage`,operation:ua})}return t}var DM=(e,t)=>`/workflows/${e}/test-runs${t?`/${t}`:``}`;const OM=async(e,t)=>await J(e,`GET`,DM(t)),kM=async(e,t)=>await J(e,`GET`,DM(t.workflowId,t.runId)),AM=async(e,t)=>await ka({method:`POST`,baseURL:e.baseUrl,endpoint:`/workflows/${t}/test-runs/new`,headers:{"push-ref":e.pushRef}}),jM=async(e,t,n)=>await ka({method:`POST`,baseURL:e.baseUrl,endpoint:`/workflows/${t}/test-runs/${n}/cancel`,headers:{"push-ref":e.pushRef}}),MM=async(e,t)=>await J(e,`DELETE`,DM(t.workflowId,t.runId));var NM=(e,t)=>`/workflows/${e}/test-runs/${t}/test-cases`;const PM=async(e,t,n)=>await J(e,`GET`,NM(t,n)),FM=Da(qo.EVALUATION,()=>{let e=m(!1),t=m({}),n=m({}),r=m({}),i=Y(),a=TN(),o=JM(),s=Al(),c=E(()=>s.settings.evaluation?.quota!==0),l=E(()=>e.value),u=E(()=>Object.values(t.value).reduce((e,t)=>(e[t.workflowId]||(e[t.workflowId]=[]),e[t.workflowId].push(t),e),{})),d=E(()=>a.workflow.nodes.some(e=>e.type===Ot));function f(e){return a.workflow.nodes.some(t=>{if(t.type!==`n8n-nodes-base.evaluation`)return!1;let n=o.getNodeType(t.type,t.typeVersion);return n?ia(n.properties,t.parameters,!0,!1,t,n)?.operation===e:!1})}let p=E(()=>f(`setMetrics`)),h=E(()=>f(`setOutputs`)),g=async e=>{let t=await PM(i.restApiContext,e.workflowId,e.runId);return t.forEach(e=>{n.value[e.id]=e}),t},_=async n=>{e.value=!0;try{let e=await OM(i.restApiContext,n);return e.forEach(e=>{t.value[e.id]=e,[`running`,`new`].includes(e.status)&&S(n,e.id)}),e}finally{e.value=!1}},v=async e=>{let n=await kM(i.restApiContext,e);return t.value[n.id]=n,n},y=async e=>await AM(i.restApiContext,e),b=async(e,t)=>await jM(i.restApiContext,e,t),x=async e=>{let n=await MM(i.restApiContext,e);if(n.success){let{[e.runId]:n,...r}=t.value;t.value=r}return n},S=(e,t)=>{let n=async()=>{try{let i=await v({workflowId:e,runId:t});[`running`,`new`].includes(i.status)?r.value[t]=setTimeout(n,1e3):delete r.value[t]}catch{r.value[t]=setTimeout(n,1e3)}};n()};return{testRunsById:t,testCaseExecutionsById:n,isLoading:l,isEvaluationEnabled:c,testRunsByWorkflowId:u,evaluationTriggerExists:d,evaluationSetMetricsNodeExist:p,evaluationSetOutputsNodeExist:h,fetchTestCaseExecutions:g,fetchTestRuns:_,getTestRun:v,startTestRun:y,cancelTestRun:b,deleteTestRun:x,cleanupPolling:()=>{Object.values(r.value).forEach(e=>{clearTimeout(e)}),r.value={}}}},{});var IM=e(yt(),1),LM=e(cj(),1),RM=`placeholder_recommended`;function zM(...e){return K.baseText(...e)}var BM=(0,IM.default)(zM,(...e)=>JSON.stringify(e)),VM={"n8n-nodes-base.hubspotTrigger":(e,t)=>((e?.options?.[0])?.values[0]?.options)?.map(n=>({...HM(t),actionKey:n.value,displayName:BM(`nodeCreator.actionsCategory.onEvent`,{interpolate:{event:(0,LM.default)(n.name)}}),description:n.description??``,displayOptions:e.displayOptions,values:{eventsUi:{eventValues:[{name:n.value}]}}})),"n8n-nodes-base.code":(e,t)=>{if(e.name!==`language`)return;let n=e.options;if(n)return n.map(n=>({...HM(t),actionKey:`language_${n.value}`,displayName:`Code in ${n.name}`,description:`Run custom ${n.name} code`,displayOptions:e.displayOptions,values:{language:n.value}}))}};function HM(e,t){let n=e.group.includes(`trigger`)?BM(`nodeCreator.actionsCategory.triggers`):BM(`nodeCreator.actionsCategory.actions`);return{name:e.name,group:e.group,codex:{label:t??``,categories:[n]},iconUrl:e.iconUrl,iconColor:e.iconColor,outputs:e.outputs,icon:e.icon,defaults:e.defaults}}function UM(e){if(e.properties.find(e=>e.name===`resource`))return[];if(e.name===`n8n-nodes-base.code`){let t=e.properties.find(e=>e.name===`language`&&e.displayOptions?.show?.[`@version`]?.[0]===2);if(t){let n=VM[e.name]?.(t,e);if(n)return n}}let t=e.properties.find(e=>e.name?.toLowerCase()===`operation`);if(!t?.options)return[];let n=t.options.filter(e=>![`*`,``,` `].includes(e.name)).map(n=>({...HM(e),actionKey:n.value,displayName:n.action??(0,LM.default)(n.name),description:n.description??``,displayOptions:t.displayOptions,outputConnectionType:n.outputConnectionType,values:{[t.name]:t.type===`multiOptions`?[n.value]:n.value}}));return n.length===0?[]:n}function WM(e){if(!e.codex?.categories?.includes(`AI`))return[];let t=e.properties.find(e=>e.name?.toLowerCase()===`mode`);if(!t?.options)return[];let n=t.options.map(n=>({...HM(e),actionKey:n.value,displayName:n.action??(0,LM.default)(n.name),description:n.description??``,displayOptions:t.displayOptions,outputConnectionType:n.outputConnectionType,values:{[t.name]:n.value}}));return n.length===0?[]:n}function GM(e){let t=[`event`,`events`,`trigger on`],n=e.displayName?.toLowerCase().includes(`trigger`),r=e.properties.find(e=>t.includes(e.displayName?.toLowerCase()));if(!n)return[];if(!r?.options)return[{...HM(e),actionKey:RM,displayName:BM(`nodeCreator.actionsCategory.onNewEvent`,{interpolate:{event:e.displayName.replace(`Trigger`,``).trimEnd()}}),description:``}];let i=r.options.filter(e=>![`*`,``,` `].includes(e.name));return VM[e.name]?.(r,e)??i.map(t=>({...HM(e),actionKey:t.value,displayName:t.action??BM(`nodeCreator.actionsCategory.onEvent`,{interpolate:{event:hM(t.name)}}),description:t.description??``,displayOptions:r.displayOptions,values:{[r.name]:r.type===`multiOptions`?[t.value]:t.value}}))}function KM(e){let t=[];return e.properties.filter(e=>e.name===`resource`).forEach(n=>{(n.options||[]).filter(e=>e.value!==cn).forEach((n,r,i)=>{let a=i.length===1,o=e.properties.find(t=>{let r=t.name===`operation`,i=t.displayOptions?.show?.resource?.includes(n.value)??a,o=t.displayOptions?.show?.[`@version`],s=Array.isArray(e.version)?e.version:[e.version],c=o?o.some(e=>typeof e==`number`&&s.includes(e)):!0;return r&&i&&c});if(!o?.options)return;let s=(o.options||[]).map(t=>{let r=t.action??`${n.name} ${(0,LM.default)(t.name)}`,s=a?{show:{resource:[i[0]?.value]}}:o?.displayOptions;return{...HM(e,`${n.name} ${BM(`nodeCreator.actionsCategory.actions`)}`),actionKey:t.value,description:t?.description??``,displayOptions:s,values:{operation:o?.type===`multiOptions`?[t.value]:t.value},displayName:r,group:[`trigger`]}});t.push(...s)})}),t}function qM(){function e(e){return!e||e.codex?.subcategories?.AI?.includes(`Tools`)&&!e.codex?.subcategories?.AI?.includes(`Root Nodes`)?[]:[...GM(e),...UM(e),...KM(e),...WM(e)]}function t(e){return e.length<=1?[]:e.filter((e,t,n)=>{if(e.actionKey===`__CUSTOM_API_CALL__`)return!1;let r=e.actionKey===RM;return!r||r&&n.length>1})}function n(e){let{displayName:t,defaults:n,description:r,name:i,group:a,icon:o,iconUrl:s,iconColor:c,badgeIconUrl:l,outputs:u,codex:d}=e;return{displayName:t,defaults:n,description:r,name:i,group:a,icon:o,iconColor:c,iconUrl:s,badgeIconUrl:l,outputs:u,codex:d}}function r(r,i){let a=FM(),o=Al(),s=r.filter(e=>!(!a.isEvaluationEnabled&&[`n8n-nodes-base.evaluation`,`n8n-nodes-base.evaluationTrigger`].includes(e.name)||(o.isQueueModeEnabled||o.isMultiMain)&&e.name===`@n8n/n8n-nodes-langchain.memoryBufferWindow`)),c={},l=[];return s.filter(e=>!e.group.includes(`trigger`)).forEach(t=>{let r=e(t);if(c[t.name]=r,t.name===`n8n-nodes-base.httpRequest`){let e=i.map(e=>{let r=wk(t,e);return r?n(r):null}).filter(e=>e!==null);l.push(...e)}l.push(n(t))}),s.filter(e=>e.group.includes(`trigger`)).forEach(r=>{let i=r.name.replace(`Trigger`,``),a=e(r),o=c?.[i]||[],s=l.find(e=>e.name===i);s&&o?.length>0?(c[i]=t([...o,...a]),s.description=r.description):(c[r.name]=t(a),l.push(n(r)))}),{actions:c,mergedNodes:l}}return{generateMergedNodesAndActions:r}}const JM=Da(qo.NODE_TYPES,()=>{let e=m({}),t=m(new Map),n=Y(),r=qM(),i=Al(),a=E(()=>e=>{let n=t.value.get(e);if(n)return n;let r=gM(e);for(let n of t.value.values()){let t=n.nodeDescription?.name;if(t===e||gM(t??``)===r)return n}}),o=E(()=>Array.from(t.value.values()).filter(({isOfficialNode:e,isInstalled:t})=>e&&!t).map(({nodeDescription:e})=>e)),s=E(()=>Array.from(t.value.values()).filter(({isOfficialNode:e,isInstalled:t})=>!e&&!t).map(({nodeDescription:e})=>e)),c=E(()=>r.generateMergedNodesAndActions(s.value,[])),l=E(()=>Object.values(e.value).flatMap(e=>Object.keys(e).map(t=>e[Number(t)]))),u=E(()=>Object.values(e.value).map(e=>{let t=Object.keys(e).map(Number);return e[Math.max(...t)]}).filter(Boolean)),d=E(()=>Wn.flatMap(t=>{let n=e.value[t.nodeType]??{},r=Object.keys(n).map(Number),a=n[Math.max(...r)];return a?.hidden&&i.isModuleActive(t.module)?{...a,hidden:void 0}:[]})),f=E(()=>(t,n)=>{if(xk(t))return h.value(t,n);let r=e.value[t];if(!r)return null;let i=Object.keys(r).map(Number);return r[n??Math.max(...i)]??null}),p=E(()=>t=>Object.keys(e.value[t]??{}).map(Number)),h=E(()=>(e,t)=>{let n=Sk(e);return wk(f.value(kr,t??4.1),VA().getCredentialTypeByName(n))??null}),g=E(()=>(e,t,n)=>{if(!e.nodes[t.name])return!1;let r=f.value(n)??a.value(n)?.nodeDescription;if(!r)return!1;let i=Hr(Gi(e,t,r));return i?i.filter(e=>e!==q.Main).length>0:!1}),_=E(()=>e=>{let t=f.value(e);return!!(t&&t.group.includes(`trigger`))}),v=E(()=>e=>{let t=f.value(e);return t?.outputs&&Array.isArray(t.outputs)?t.outputs.map(e=>typeof e==`string`?e:e.type).includes(q.AiTool):t?.outputs.includes(q.AiTool)??!1}),y=E(()=>e=>e.codex?.categories?.includes(`Core Nodes`)),b=E(()=>u.value.concat(o.value).concat(d.value).filter(e=>!e.hidden)),x=E(()=>l.value.reduce((e,t)=>(/\d$/.test(t.defaults.name)&&e.push(t.defaults.name),e),[])),S=E(()=>b.value.reduce((e,t)=>{let n=t.outputs;return Array.isArray(n)?n.forEach(n=>{let r=typeof n==`string`?n:n.type;e[r]||(e[r]=[]),e[r].push(t.name)}):[q.AiVectorStore,q.AiChain,q.AiDocument,q.AiEmbedding,q.AiLanguageModel,q.AiMemory,q.AiOutputParser,q.AiTextSplitter,q.AiTool].forEach(r=>{n.includes(r)&&(e[r]=e[r]||[],e[r].push(t.name))}),e},{})),C=E(()=>b.value.reduce((e,t)=>{let n=t.inputs;return Array.isArray(n)&&n.forEach(n=>{let r=typeof n==`string`?n:n.type;e[r]||(e[r]=[]),e[r].push(t.name)}),e},{})),w=E(()=>(e,t,n,r)=>{let i=f.value(n,r);if(i===null)return!1;let a=Hr(_r(e,t,i));return a?a.filter(e=>e!==q.Main).length>0:!1}),T=(t=[])=>{let n=WA(t);e.value={...e.value,...n}},D=t=>{e.value=t.reduce((e,t)=>of(t.name,e),e.value)},O=async(e,t=!0)=>{let r=await wc(n.restApiContext,e);return r.forEach(e=>{e.translation&&De({[e.name.replace(`n8n-nodes-base.`,``)]:e.translation},n.defaultLocale)}),t&&T(r),r},k=async(e,t=!0)=>{await VA().fetchCredentialTypes(!0),t&&await O(e)},A=async()=>{let e=await bc(n.baseUrl);e.length&&T(e)};return{nodeTypes:e,allNodeTypes:l,allLatestNodeTypes:u,getNodeType:f,getNodeVersions:p,getCredentialOnlyNodeType:h,isConfigNode:g,isTriggerNode:_,isToolNode:v,isCoreNodeType:y,visibleNodeTypes:b,nativelyNumberSuffixedDefaults:x,visibleNodeTypesByOutputConnectionTypeNames:S,visibleNodeTypesByInputConnectionTypeNames:C,isConfigurableNode:w,communityNodesAndActions:c,communityNodeType:a,fetchCommunityNodePreviews:async()=>{if(i.isCommunityNodesFeatureEnabled)try{let e=await xc(n.restApiContext);t.value=new Map(e.map(e=>[e.name,e]))}catch{t.value=new Map}},getResourceMapperFields:async e=>{try{return await Dc(n.restApiContext,e)}catch{return null}},getLocalResourceMapperFields:async e=>{try{return await Oc(n.restApiContext,e)}catch{return null}},getNodeParameterActionResult:async e=>await kc(n.restApiContext,e),getResourceLocatorResults:async e=>await Ec(n.restApiContext,e),getNodeParameterOptions:async e=>await Tc(n.restApiContext,e),getNodesInformation:O,getFullNodesProperties:k,getNodeTypes:A,loadNodeTypesIfNotLoaded:async()=>{Object.keys(e.value).length===0&&await A()},getNodeTranslationHeaders:async()=>{let e=await Cc(n.restApiContext);e&&Oe(e,n.defaultLocale)},setNodeTypes:T,removeNodeTypes:D,getCommunityNodeAttributes:async e=>{if(!i.isCommunityNodesFeatureEnabled)return null;try{return await Sc(n.restApiContext,gM(e))}catch{return null}},getIsNodeInstalled:E(()=>e=>{let t=gM(e);return!!f.value(t)||!!a.value(t)?.isInstalled})}});function YM(){return{workflowId:`all`,status:`all`,startDate:``,endDate:``,tags:[],annotationTags:[],metadata:[],vote:`all`}}const XM=e=>{let t={};switch(e.workflowId!==`all`&&(t.workflowId=e.workflowId),cf(e.tags)||(t.tags=e.tags),cf(e.annotationTags)||(t.annotationTags=e.annotationTags),e.vote!==`all`&&(t.vote=e.vote),cf(e.metadata)||(t.metadata=e.metadata),e.startDate&&(t.startedAfter=e.startDate),e.endDate&&(t.startedBefore=e.endDate),e.status){case`waiting`:t.status=[`waiting`];break;case`error`:t.status=[`crashed`,`error`];break;case`success`:t.status=[`success`];break;case`running`:t.status=[`running`,`new`];break;case`canceled`:t.status=[`canceled`];break;case`new`:t.status=[`new`];break}return t};var ZM=!1;const QM=e=>{if(!ZM){let t=`width=700,height=${window.innerHeight-50},left=${(window.innerWidth-700)/2},top=50,resizable=yes,scrollbars=yes`,n=`form-waiting-since-${Date.now()}`;window.open(e,n,t),ZM=!0}},$M=()=>ZM=!1;async function eN({nodes:e,runData:t,pinData:n,destinationNode:r,triggerNode:i,directParentNodes:a,source:o,getTestUrl:s}){for(let c of e)if(!(i!==void 0&&i!==c.name)&&!(t?.hasOwnProperty(c.name)&&c.type!==`n8n-nodes-base.formTrigger`||n[c.name])&&[`n8n-nodes-base.formTrigger`].includes(c.type)&&!(r&&r!==c.name&&!a.includes(c.name))&&(c.name===r||!c.disabled)){let e=``;c.type===`n8n-nodes-base.formTrigger`&&(e=s(c));try{if(!(await fetch(e,{method:`GET`})).ok)continue}catch{continue}e&&o!==`RunData.ManualChatMessage`&&($M(),QM(e))}}const tN=(e,t)=>{if(!e)return``;try{let n=JM().getNodeType(e.type)?.waitingNodeTooltip;if(n){let r=TN().activeExecutionId,i={$execution:{id:r,mode:`test`,resumeUrl:`${Y().webhookWaitingUrl}/${r}`,resumeFormUrl:`${Y().formWaitingUrl}/${r}`}};if(t){let r=t.expression.getSimpleParameterValue(e,n,`internal`,i);return String(r)}else if(n)return n}}catch{}return``};function nN(e){return e?.some(e=>e.json?.[Nt])}function rN(e){return e.data?.main?.some(e=>nN(e))}function iN(e){return e.some(rN)}function aN(e){return Object.keys(e).some(t=>iN(e[t]))}function oN(e){if(e===`success`)return{title:K.baseText(`executionsList.showMessage.retrySuccess.title`),type:`success`};if(e===`waiting`)return{title:K.baseText(`executionsList.showMessage.retryWaiting.title`),type:`info`};if(e===`running`)return{title:K.baseText(`executionsList.showMessage.retryRunning.title`),type:`info`};if(e===`crashed`)return{title:K.baseText(`executionsList.showMessage.retryCrashed.title`),type:`error`};if(e===`canceled`)return{title:K.baseText(`executionsList.showMessage.retryCanceled.title`),type:`error`};if(e===`error`)return{title:K.baseText(`executionsList.showMessage.retryError.title`),type:`error`}}function sN({error:e,lastNodeExecuted:t}){let n;if(t&&e)n=e.message??e.description??``;else if(n=K.baseText(`pushConnection.executionError`,{interpolate:{error:`!`}}),e?.message){let t;`node`in e&&(t=typeof e.node==`string`?e.node:e.node?.name);let r=t?`${t}: ${e.message}`:e.message;n=K.baseText(`pushConnection.executionError`,{interpolate:{error:`.${K.baseText(`pushConnection.executionError.details`,{interpolate:{details:r}})}`}})}return n}function cN({error:e,lastNodeExecuted:t}){let n=sN({error:e,lastNodeExecuted:t});if(e.name===`SubworkflowOperationError`)return{title:e.message,message:e.description??``};if((e.name===`NodeOperationError`||e.name===`NodeApiError`)&&e.functionality===`configuration-node`){let t=`node`in e&&e.node?.name?e.node.name:``;return{title:t?`Error in sub-node ‘${t}‘`:`Problem executing workflow`,message:g(Tf,{errorMessage:e.description??n,nodeName:t})}}return{title:t?`Problem in node ‘${t}‘`:`Problem executing workflow`,message:n}}function lN(e){let t={...e,workflowData:e.workflowData,data:Lf(e.data)};return t.finished=t.finished?t.finished:!1,e.id&&(t.id=e.id),t}function uN(e,t){let n={[Wr]:10,[$i]:9,[wr]:7,[un]:6,[Mn]:5,[Mr]:4};function r(e){return t(e.type,e.typeVersion)?.codex?.categories?.includes(`Core Nodes`)??!1}return e.toSorted((e,t)=>{let i=n[e.type]??(r(e)?0:8);return(n[t.type]??(r(t)?0:8))-i}).find(e=>!e.disabled)}var dN=10,fN=5;function pN(e,t=0){if(t>fN)return e.type===`object`?{}:e.type===`array`?[]:``;switch(e.type){case`string`:return``;case`number`:return 0;case`boolean`:return!1;case`object`:{if(!e.fields?.length)return{};let n={};for(let r of e.fields)n[r.name]=pN(r,t+1);return n}case`array`:{if(!e.itemSchema?.length)return[];let n={};for(let r of e.itemSchema)n[r.name]=pN(r,t+1);return[n]}default:return``}}function mN(e){let t=Math.max(1,Math.min(e.itemCount??1,dN)),n=[];for(let r=0;r<t;r++){let t={};for(let n of e.fields)t[n.name]=pN(n);n.push({json:t})}return n}function hN({workflow:e,nodeExecutionSchema:t,executionStatus:n,executionError:r,lastNodeExecuted:i}){let a={};for(let[e,n]of Object.entries(t)){let t={startTime:0,executionIndex:0,executionTime:n.executionTime??0,executionStatus:n.executionStatus,source:[]};n.error&&(t.error=n.error),n.outputSchema&&n.outputSchema.fields.length>0&&(t.data={main:[mN(n.outputSchema)]}),a[e]=[t]}let o=Fi({resultData:{runData:a,error:r||void 0,lastNodeExecuted:i},executionData:null});return{id:`preview`,finished:n===`success`,mode:`manual`,status:n,startedAt:new Date().toISOString(),createdAt:new Date().toISOString(),stoppedAt:new Date().toISOString(),data:o,workflowData:e}}var gN=e=>({type:`json`,data:e,parsed:!1}),_N={[q.AiLanguageModel](e){let t=e.response??e;if(!t)throw Error(`No response from Language Model`);return Array.isArray(t?.messages)&&t?.messages.length===1&&typeof t?.messages[0]==`string`?{type:`text`,data:t.messages[0],parsed:!0}:t.messages&&Array.isArray(t.messages)?_N[q.AiMemory](e):t.generations?{type:`json`,data:t.generations.map(e=>e?.text?e.text:Array.isArray(e)?e.map(e=>e.text??e).join(`

`).trim():e),parsed:!0}:{type:`json`,data:t,parsed:!0}},[q.AiTool]:gN,[q.AiAgent]:gN,[q.AiMemory](e){let t=e.chatHistory??e.messages??e?.response?.chat_history;if(Array.isArray(t)){let n=t.map(e=>{if(e.type===`constructor`&&e.id?.includes(`messages`)&&e.kwargs){let t=String(e.kwargs.content);return Array.isArray(t)&&(t=t.map(e=>{let{type:t,image_url:n}=e;return t===`image_url`&&typeof n==`object`&&typeof n.url==`string`?`![Input image](${n.url})`:typeof n==`string`?`![Input image](${n})`:e.text}).join(`
`)),Object.keys(e.kwargs.additional_kwargs).length&&(t+=` (${JSON.stringify(e.kwargs.additional_kwargs)})`),e.id.includes(`HumanMessage`)?t=`**Human:** ${String(t).trim()}`:e.id.includes(`AIMessage`)?t=`**AI:** ${t}`:e.id.includes(`SystemMessage`)&&(t=`**System Message:** ${t}`),t}return``}).join(`

`);return n.length===0?gN(e):{type:`markdown`,data:n,parsed:!0}}return gN(e)},[q.AiOutputParser]:gN,[q.AiRetriever]:gN,[q.AiReranker]:gN,[q.AiVectorStore](e){return e.documents?{type:`json`,data:e.documents,parsed:!0}:gN(e)},[q.AiEmbedding](e){return e.documents?{type:`json`,data:e.documents,parsed:!0}:gN(e)},[q.AiDocument](e){return e.documents?{type:`json`,data:e.documents,parsed:!0}:gN(e)},[q.AiTextSplitter](e){return{type:`text`,data:(Array.isArray(e.response)?e.response:[e.textSplitter]).join(`

`),parsed:!0}}};function vN(e,t){if([q.AiChain,q.Main].includes(t))return e.map(e=>({raw:e.json,parsedContent:null}));let n=e.map(e=>zn(e.binary)?e.json:e.binary),r=_N[t];return r?n.filter(e=>e!==void 0).map(e=>({raw:e,parsedContent:r(e)})):[{raw:n.filter(e=>e!==void 0),parsedContent:null}]}const yN={completionTokens:0,promptTokens:0,totalTokens:0,isEstimate:!1};function bN(e,t){return{completionTokens:e.completionTokens+t.completionTokens,promptTokens:e.promptTokens+t.promptTokens,totalTokens:e.totalTokens+t.totalTokens,isEstimate:e.isEstimate||t.isEstimate}}function xN(e,t){let n=t===`total`?e.totalTokens:t===`completion`?e.completionTokens:e.promptTokens;return e.isEstimate?`~${n}`:n.toLocaleString()}function SN(e){return[nn,ri].includes(e.type)}var CN={name:``,description:``,active:!1,activeVersionId:null,isArchived:!1,createdAt:-1,updatedAt:-1,connections:{},nodes:[],settings:{...lp},tags:[],pinData:{},versionId:``,usedCredentials:[]},wN=()=>({id:``,...CN});const TN=Da(qo.WORKFLOWS,()=>{let e=RN(),t=IO(),n=Uk(),r=Al(),i=Y(),a=LO(),o=YN(),s=JM(),c=ug(),l=th(),u=m(wN()),d=m(Fe(u.value.nodes,u.value.connections)),f=m(null),p=m([]),h=m(null),g=m(null),_=m(),v=m(),y=m({}),b=m(!1),x=m({}),S=m(!1),C=m([]),w=m(null),T=m(),D=E(()=>u.value.name),O=E(()=>u.value.id),k=E(()=>u.value.versionId),A=E(()=>u.value.id?!l.getWorkflowById(u.value.id)?.id:!0),j=E(()=>Object.keys(l.workflowsById).reduce((e,t)=>(e[t]=!0,e),{})),M=E(()=>u.value.nodes.filter(e=>{let t=s.getNodeType(e.type,e.typeVersion);return t&&t.group.includes(`trigger`)})),N=E(()=>!!u.value.nodes.find(e=>!!e.webhookId)),P=E(()=>h.value?.data?.resultData?h.value.data.resultData.runData:null),F=E(()=>u.value.connections),I=E(()=>u.value.nodes),L=e=>(e.type===`n8n-nodes-base.wait`||e.type===`n8n-nodes-base.form`||e.parameters?.operation===`sendAndWait`)&&e.disabled!==!0,R=E(()=>{let e=NO().activeNode;if(e){if(L(e))return!0;let t=d.value.getParentNodes(e.name);for(let e of t)if(L(d.value.nodes[e]))return!0;return!1}return I.value.some(e=>L(e))}),z=E(()=>de.value===null?!0:!!(de.value&&h.value&&[`waiting`,`running`].includes(h.value.status)&&!h.value.finished)),B=E(()=>new Set(I.value.map(e=>e.name))),V=E(()=>u.value.nodes.reduce((e,t)=>(e[t.name]=t,e),{})),H=E(()=>u.value.nodes.filter(e=>{let t=Object.keys(e.issues??{}).length>0,n=Object.keys(_e(e.name)).length>0||Object.keys(ve(e.name)).length>0;return!e.disabled&&n&&t})),W=E(()=>H.value.length),ee=E(()=>W.value>0),te=E(()=>{let e=[],t=e=>typeof e==`string`||Array.isArray(e);return u.value.nodes.forEach(n=>{!n.issues||n.disabled||(Object.keys(_e(n.name)).length>0||Object.keys(ve(n.name)).length>0)&&Object.entries(n.issues).forEach(([r,i])=>{i&&(typeof i==`object`&&!Array.isArray(i)?Object.entries(i).forEach(([t,i])=>{i&&e.push({node:n.name,type:r,value:i})}):e.push({node:n.name,type:r,value:t(i)?i:String(i)}))})}),e});function ne(e){return Array.isArray(e)?e.join(`, `).replace(/\.$/,``):String(e)}let G=E(()=>h.value?.executedNode),re=E(()=>p.value.filter(e=>e.finished===!0||e.stoppedAt!==void 0)),ie=E(()=>h.value),ae=E(()=>C.value),oe=E(()=>u.value.connections),se=E(()=>Hi(u.value.connections)),ce=E(()=>M.value.filter(e=>!e.disabled&&!SN(e))),le=E(()=>{if(z.value)return h.value?.triggerNode?h.value.triggerNode:Object.keys(h.value?.data?.resultData.runData??{}).find(e=>M.value.some(t=>t.name===e))}),ue=E(()=>!r.isChatFeatureEnabled||!xg([`global:chatUser`])),de=m(),fe=m(),pe=E(()=>de.value),me=E(()=>fe.value);function he(e){e&&(fe.value=de.value),de.value=e}function ge(e){return P.value===null||!P.value.hasOwnProperty(e)?null:P.value[e]}function _e(e){return u.value.connections.hasOwnProperty(e)?u.value.connections[e]:{}}function ve(e){return se.value.hasOwnProperty(e)?se.value[e]:{}}function ye(e){return u.value.connections.hasOwnProperty(e)}function be(e,t,n=-1){if(n===0)return!1;let r=_e(e);if(!r?.main?.[0])return!1;let i=r.main[0];return i.some(e=>e.node===t)?!0:i.some(e=>be(e.node,t,n-1))}function xe(e){return Fr(V.value,e)}function Se(e){return u.value.nodes.find(t=>t.id===e)}function Ce(e){let t=d.value.getChildNodes(e,`ALL`);for(let e=t.length-1;e>=0;e--){let n=t[e];if(d.value.getParentNodes(n,q.Main).length>0)return n}return null}function we(e){return u.value.nodes.find(t=>t.id.startsWith(e))}function Te(e){for(let t=6;t<e.length;++t){let n=e.slice(0,t);if(u.value.nodes.filter(e=>e.id.startsWith(n)).length===1)return n}return e}function Ee(e){return e.map(Se).filter(vf)}function De(e){return x.value[e]?.parametersLastUpdatedAt}function Oe(e){return x.value[e]?.pinnedDataLastUpdatedAt}function ke(e){return x.value[e]?.pinnedDataLastRemovedAt}function Ae(e){return x.value[e]===void 0||x.value[e].pristine}function je(e){return p.value.find(t=>t.id===e)}function Me(){return{nodeTypes:{},init:async()=>{},getByNameAndVersion:(e,t)=>{let n=s.getNodeType(e,t)??s.communityNodeType(e)?.nodeDescription??null;if(n!==null)return{description:n,trigger:![`n8n-nodes-base.errorTrigger`].includes(e)&&n.inputs.length===0&&!n.webhooks||void 0}}}}function Ne(){return u.value.nodes.map(e=>({...e}))}function Pe(e){let t=Object.keys(e.credentials??{}).reduce((t,n)=>{let r=e?.credentials?.[n];return!r||typeof r==`string`||(t[n]=r),t},{});return{...e,credentials:t}}function Fe(e,t,n){let r=Me(),i=u.value.id;i&&!l.getWorkflowById(i)?.id&&(i=void 0);let a=u.value.id,o=a?Z(X(a)):void 0;return new Fn({id:i,name:u.value.name,nodes:n?cr(e):e,connections:n?cr(t):t,active:!1,nodeTypes:r,settings:o?.settings??{...lp},pinData:o?.getPinDataSnapshot()??{}})}function Ie(){let e=Ne(),t=F.value;return Fe(e,t)}async function Le(e,t){return await J(i.restApiContext,`GET`,`/workflows/from-url`,{url:e,projectId:t})}async function Re(){let t=ni((O.value?Z(X(O.value)):void 0)?.scopes).workflow;try{let n=u.value.id,r=n?Z(X(n)):void 0;if(A.value||c.preferences.branchReadOnly||e.isReadOnlyView||!t.update||r?.isArchived)return;g.value=await Yd(i.restApiContext,O.value)}catch{}}async function ze(e){return await J(i.restApiContext,`GET`,`/active-workflows/error/${e}`)}function Be(){u.value=wN()}function Ve(e){u.value.activeVersion=cr(e)}function He(e){f.value=cr(e),u.value.versionId=e.versionId}function Ue(e){u.value.nodes.forEach(t=>{let n=t.credentials;if(!n?.[e.type])return;let r=n[e.type];if(typeof r==`string`&&r===e.invalid.name){t.credentials[e.type]=e.credentials;return}if(r.id===null){r.name===e.invalid.name&&(t.credentials[e.type]=e.credentials);return}r.id===e.invalid.id&&(t.credentials[e.type]=e.credentials)})}function We(e){let t=0;return u.value.nodes.forEach(n=>{if(n.name===e.currentNodeName||n.credentials&&Object.keys(n.credentials).length>0)return;let r=s.getNodeType(n.type,n.typeVersion);if(!r?.credentials)return;let i=r.credentials.find(t=>t.name===e.type);i&&(i.displayOptions&&!a.displayParameter(n.parameters,i,``,n)||(n.credentials??={},n.credentials[e.type]=e.credentials,t++))}),t}async function Ge(e,t){let n=await l.archiveWorkflowInList(e,t);if(Je(e),e===u.value.id){He({versionId:n.versionId,name:f.value?.name??null,description:f.value?.description??null});let t=Z(X(e));t.setIsArchived(!0),t.setChecksum(n.checksum)}}async function Ke(e){let t=await l.unarchiveWorkflowInList(e);if(e===u.value.id){He({versionId:t.versionId,name:f.value?.name??null,description:f.value?.description??null});let n=Z(X(e));n.setIsArchived(!1),n.setChecksum(t.checksum)}}function qe(t,n,r){l.setWorkflowActiveInCache(t,n),t===u.value.id&&r&&e.markStateClean()}function Je(e){l.setWorkflowInactiveInCache(e)}function Ye(e){u.value.description=e}async function Xe(e){if(e&&e.length+5>=128)return e;let t=`${e}${Sr}`;try{t=(await Vd(i.restApiContext,{name:t})).name}catch{}return t}function Ze(e){h.value&&(h.value={...h.value,data:e},v.value=Date.now(),_.value=void 0)}function Qe(e){u.value={...e,...e.hasOwnProperty(`active`)?{}:{active:!1},...e.hasOwnProperty(`connections`)?{}:{connections:{}},...e.hasOwnProperty(`id`)?{}:{id:``},...e.hasOwnProperty(`nodes`)?{}:{nodes:[]},...e.hasOwnProperty(`settings`)?{}:{settings:{...lp}}};let t=u.value.id;t&&Z(X(t)).setSettings(u.value.settings??{}),d.value=Fe(u.value.nodes,u.value.connections,!0)}function $e(e){if(e.connection.length!==2)return;let t=e.connection[0],n=e.connection[1];if(u.value.connections.hasOwnProperty(t.node)||(u.value.connections[t.node]={}),u.value.connections[t.node].hasOwnProperty(t.type)||(u.value.connections[t.node]={...u.value.connections[t.node],[t.type]:[]}),u.value.connections[t.node][t.type].length<t.index+1)for(let e=u.value.connections[t.node][t.type].length;e<=t.index;e++)u.value.connections[t.node][t.type].push([]);let r=[`index`,`node`,`type`],i,a=!1,o=u.value.connections[t.node][t.type],s=o[t.index];if(s)connectionLoop:for(let e of s){for(i of r)if(e[i]!==n[i])continue connectionLoop;a=!0;break}if(!a){o[t.index]=o[t.index]??[];let e=o[t.index];e&&e.push(n)}d.value.setConnections(u.value.connections)}function et(t){let n=t.connection[0],r=t.connection[1];if(!u.value.connections.hasOwnProperty(n.node)||!u.value.connections[n.node].hasOwnProperty(n.type)||u.value.connections[n.node][n.type].length<n.index+1)return;e.markStateDirty();let i=u.value.connections[n.node][n.type][n.index];if(i){for(let e in i)i[e].node===r.node&&i[e].type===r.type&&i[e].index===r.index&&i.splice(Number.parseInt(e,10),1);d.value.setConnections(u.value.connections)}}function tt(t,{preserveInputConnections:n=!1,preserveOutputConnections:r=!1}={}){if(e.markStateDirty(),r||delete u.value.connections[t.name],n)return;let i=[],a,o,s,c,l;for(a of Object.keys(u.value.connections))for(o of Object.keys(u.value.connections[a]))for(s of Object.keys(u.value.connections[a][o])){i.length=0;let e=u.value.connections[a][o][Number.parseInt(s,10)];if(e){for(c of Object.keys(e))l=e[Number.parseInt(c,10)],l.node===t.name&&i.push(c);i.forEach(t=>{e.splice(Number.parseInt(t,10),1)})}}d.value.setConnections(u.value.connections)}function nt(t){e.markStateDirty();let n=h.value?.data?.resultData?.runData;n?.[t.old]&&(n[t.new]=n[t.old],delete n[t.old]),e.lastSelectedNode===t.old&&(e.lastSelectedNode=t.new);let{[t.old]:r,...i}=x.value;x.value={...i,[t.new]:x.value[t.old]},O.value&&Z(X(O.value)).renamePinDataNode(t.old,t.new);let a=h.value?.data?.resultData;a?.pinData?.[t.old]&&(a.pinData[t.new]=a.pinData[t.old],delete a.pinData[t.old]),Object.values(h.value?.data?.resultData.pinData??{}).flatMap(e=>e.flatMap(e=>Array.isArray(e.pairedItem)?e.pairedItem:[e.pairedItem])).forEach(e=>{typeof e==`number`||e?.sourceOverwrite?.previousNode!==t.old||(e.sourceOverwrite.previousNode=t.new)}),Object.values(h.value?.data?.resultData.runData??{}).flatMap(e=>e.flatMap(e=>e.source)).forEach(e=>{!e||e.previousNode!==t.old||(e.previousNode=t.new)})}function rt(e){e.forEach(e=>{e.id||a.assignNodeId(e),e.extendsCredential&&(e.type=Ck(e.extendsCredential)),e.position&&=cD(e.position),x.value[e.name]||(x.value[e.name]={pristine:!0})}),u.value.nodes=e,d.value.setNodes(e)}function it(e){u.value.connections=e,d.value.setConnections(e)}function at(e){e.hasOwnProperty(`name`)&&(u.value.nodes.push(e),d.value.setNodes(u.value.nodes),x.value[e.name]||(x.value[e.name]={}))}function ot(t){let{[t.name]:n,...r}=x.value;x.value=r,O.value&&Z(X(O.value)).unpinNodeData(t.name);for(let n=0;n<u.value.nodes.length;n++)if(u.value.nodes[n].name===t.name){u.value.nodes=[...u.value.nodes.slice(0,n),...u.value.nodes.slice(n+1)],d.value.setNodes(u.value.nodes),e.markStateDirty();return}}async function st(e){let i=e.nodeName;if(e.data.error){let a=xe(i);t.track(`Manual exec errored`,{error_title:e.data.error.message,node_type:a?.type,node_type_version:a?.typeVersion,node_id:a?.id,node_graph_string:JSON.stringify(xi(await n.getWorkflowDataToSave(),n.getNodeTypes(),{isCloudDeployment:r.isCloudDeployment}).nodeGraph)})}}function ct(e,t){let{webhookSuffix:n}=e.parameters.options??{},r=n&&typeof n!=`object`?`/${n}`:``;return`${i.formWaitingUrl}/${t}${r}`}function lt(e){let t=_.value?.[0]===e.executionId?_.value?.[1]:{};_.value=[e.executionId,{...t,[e.nodeName]:[...t[e.nodeName]??[],e.data]}]}function ut(e){if(!h.value?.data)throw Error(`The "workflowExecutionData" is not initialized!`);let{nodeName:t,data:n,executionId:r}=e,i=n.executionStatus===`waiting`,a=xe(t);if(!a)return;h.value.data.resultData.lastNodeExecuted=t,h.value.data.resultData.runData[t]===void 0&&(h.value.data.resultData.runData[t]=[]);let o=h.value.data.resultData.runData[t];if(i)o.push(n),v.value=Date.now(),(a.type===`n8n-nodes-base.form`||a.type===`n8n-nodes-base.wait`&&a.parameters.resume===`form`)&&QM(ct(a,r));else{let t=o.findIndex(e=>e.executionIndex===n.executionIndex),r=o.some(e=>e.executionStatus===`waiting`),i=t>-1&&!r?t:o.length-1,a=o[i]?.executionStatus??`unknown`;a===`waiting`||a===`running`||o[t]?o.splice(i,1,n):o.push(n),v.value=Date.now(),st(e)}}function dt(e){let t=h.value?.data?.resultData.runData[e.nodeName],n=t?.findIndex(t=>t.executionIndex===e.data.executionIndex)??-1;t?.[n]&&(t.splice(n,1,e.data),v.value=Date.now())}function ft(e){if(!h.value?.data)return;let{[e]:t,...n}=h.value.data.resultData.runData;h.value.data.resultData.runData=n}function pt(){return NO().activeNode}async function mt(e,t,n,r){let a={};return e&&(a={filter:e,firstId:r,lastId:n,limit:t}),await J(i.restApiContext,`GET`,`/executions`,a)}async function ht(e){let t=await J(i.restApiContext,`GET`,`/executions/${e}`);return t&&lN(t)}async function gt(e){e.active=!1,e.settings||(e.settings??={}),e.settings.availableInMCP=!1;let t=vk();!e.projectId&&t.currentProjectId&&(e.projectId=t.currentProjectId);let r=await J(i.restApiContext,`POST`,`/workflows`,e);return n.containsNodeFromPackage(r,`@n8n/n8n-nodes-langchain`)&&!o.isEasyAIWorkflowOnboardingDone&&(await pl(i.restApiContext,{easyAIWorkflowOnboarded:!0}),o.setEasyAIWorkflowOnboardingDone()),r}async function _t(e,t,r=!1){t.settings===null&&(t.settings=void 0);let a=await J(i.restApiContext,`PATCH`,`/workflows/${e}${r?`?forceSave=true`:``}`,t);if(!a.checksum)throw Error(`Failed to update workflow`);return e===u.value.id&&(He({versionId:a.versionId,name:f.value?.name??null,description:f.value?.description??null}),Z(X(e)).setChecksum(a.checksum)),n.containsNodeFromPackage(a,`@n8n/n8n-nodes-langchain`)&&!o.isEasyAIWorkflowOnboardingDone&&(await pl(i.restApiContext,{easyAIWorkflowOnboarded:!0}),o.setEasyAIWorkflowOnboardingDone()),a}async function vt(e,t){return await J(i.restApiContext,`POST`,`/workflows/${e}/activate`,t)}async function yt(e,t){let n=await J(i.restApiContext,`POST`,`/workflows/${e}/deactivate`,{expectedChecksum:t});if(!n.checksum)throw Error(`Failed to deactivate workflow`);return Je(e),e===u.value.id&&(He({versionId:n.versionId,name:f.value?.name??null,description:f.value?.description??null}),Z(X(e)).setChecksum(n.checksum)),n}async function bt(e,t,n){let r={},i=``,a=``,o=e===u.value.id,s=o?Z(X(e)):void 0;if(o&&s)r=s.settings,i=u.value.versionId,a=s.checksum;else{let t=l.getWorkflowById(e);if(t&&t.versionId)r=t.settings??{},i=t.versionId;else{let t=await l.fetchWorkflow(e);r=t.settings??{},i=t.versionId}}let c={...r??{},[t]:n},d=await _t(e,{versionId:i,settings:c,...a?{expectedChecksum:a}:{}});return o&&s?s.setSettings(d.settings??{}):l.getWorkflowById(e)&&l.updateWorkflowInCache(e,{settings:d.settings,versionId:d.versionId}),d}async function xt(e,t){let n=``,r=``,i=e===u.value.id;if(i)n=u.value.versionId,r=Z(X(e)).checksum;else{let t=l.getWorkflowById(e);n=t?.versionId?t.versionId:(await l.fetchWorkflow(e)).versionId}let a=await _t(e,{versionId:n,description:t,expectedChecksum:r});return l.getWorkflowById(e)&&l.updateWorkflowInCache(e,{description:a.description,versionId:a.versionId}),i&&Ye(a.description??``),a}async function St(e){try{return await J(i.restApiContext,`POST`,`/workflows/${e.workflowId}/run`,e)}catch(e){throw e.response?.status===413?new wa(K.baseText(`workflowRun.showError.payloadTooLarge`),{errorCode:413,httpStatusCode:413}):e}}async function Ct(e){return await J(i.restApiContext,`DELETE`,`/test-webhook/${e}`)}async function wt(e){return await Jd(i.restApiContext,e)}function Tt(e){p.value.splice(p.value.indexOf(e),1)}function Et(e){e.forEach(e=>{!p.value.find(t=>t.id===e.id)&&e.workflowId===O.value&&p.value.push(e)})}function Dt(e,t,n,r){let a=i.restUrl;a.startsWith(`/`)&&(a=window.location.origin+a);let o=new URL(`${a}/binary-data`);return o.searchParams.append(`id`,e),o.searchParams.append(`action`,t),n&&o.searchParams.append(`fileName`,n),r&&o.searchParams.append(`mimeType`,r),o.toString()}function Ot(e,t){x.value[e].pristine=t}function kt(){C.value=[]}function At(e){C.value.push(e)}function jt(e){return!!d.value.getParentNodes(e,q.Main).find(e=>xe(e)?.type===nn)}function Mt(e){let t=Se(e);t&&ot(t)}function Nt(e){let t=Se(e);t&&tt(t)}function Pt(e){let t=Se(e);t&&ft(t.name)}function Ft(e){T.value=e}async function It(e,t){let r=Se(e);if(!r)return;let i=s.getNodeType(r.type,r.typeVersion);if(!i?.webhooks?.length)return;let a=i.webhooks[0];return await n.getWebhookUrl(a,r,t)}return U([ce,le],([e,t],[n])=>{if(t!==void 0){T.value=t;return}if(T.value===void 0||e.every(e=>e.name!==T.value)){T.value=uN(ce.value,s.getNodeType)?.name;return}let r=e?.find(e=>n?.every(t=>t.name!==e.name));r!==void 0&&(T.value=r.name)},{immediate:!0}),{workflow:u,versionData:f,currentWorkflowExecutions:p,workflowExecutionData:h,workflowExecutionPairedItemMappings:y,workflowExecutionResultDataLastUpdate:v,workflowExecutionStartedData:_,activeExecutionId:pe,previousExecutionId:me,executionWaitingForWebhook:b,nodeMetadata:x,isInDebugMode:S,chatMessages:C,chatPartialExecutionDestinationNode:w,workflowName:D,workflowId:O,workflowVersionId:k,isNewWorkflow:A,isWorkflowSaved:j,workflowTriggerNodes:M,currentWorkflowHasWebhookNode:N,getWorkflowRunData:P,getWorkflowResultDataByNodeName:ge,allConnections:F,allNodes:I,connectionsBySourceNode:oe,connectionsByDestinationNode:se,isWaitingExecution:R,isWorkflowRunning:z,canvasNames:B,nodesByName:V,nodesWithIssuesCount:W,nodesWithIssues:H,nodesIssuesExist:ee,workflowValidationIssues:te,formatIssueMessage:ne,executedNode:G,getAllLoadedFinishedExecutions:re,getWorkflowExecution:ie,getPastChatMessages:ae,selectedTriggerNodeName:E(()=>T.value),workflowExecutionTriggerNodeName:le,outgoingConnectionsByNodeName:_e,incomingConnectionsByNodeName:ve,nodeHasOutputConnection:ye,isNodeInOutgoingNodeConnections:be,getNodeByName:xe,findRootWithMainConnection:Ce,getNodeById:Se,getNodesByIds:Ee,getParametersLastUpdate:De,getPinnedDataLastUpdate:Oe,getPinnedDataLastRemovedAt:ke,isNodePristine:Ae,getExecutionDataById:je,getNodeTypes:Me,getNodes:Ne,convertTemplateNodeToNodeUi:Pe,workflowObject:d,createWorkflowObject:Fe,cloneWorkflowObject:Ie,getWorkflowFromUrl:Le,getActivationError:ze,resetWorkflow:Be,addNodeExecutionStartedData:lt,setWorkflowActiveVersion:Ve,setWorkflowVersionData:He,replaceInvalidWorkflowCredentials:Ue,assignCredentialToMatchingNodes:We,archiveWorkflow:Ge,unarchiveWorkflow:Ke,setWorkflowActive:qe,setWorkflowInactive:Je,setDescription:Ye,getDuplicateCurrentWorkflowName:Xe,setWorkflowExecutionRunData:Ze,setWorkflow:Qe,addConnection:$e,removeConnection:et,removeAllNodeConnection:tt,renameNodeSelectedAndExecution:nt,addNode:at,removeNode:ot,updateNodeExecutionRunData:dt,updateNodeExecutionStatus:ut,clearNodeExecutionData:ft,activeNode:pt,getPastExecutions:mt,getExecution:ht,createNewWorkflow:gt,updateWorkflow:_t,publishWorkflow:vt,deactivateWorkflow:yt,updateWorkflowSetting:bt,saveWorkflowDescription:xt,runWorkflow:St,removeTestWebhook:Ct,fetchExecutionDataById:wt,deleteExecution:Tt,addToCurrentExecutions:Et,getBinaryUrl:Dt,setNodePristine:Ot,resetChatMessages:kt,appendChatMessage:At,checkIfNodeHasChatParent:jt,removeNodeById:Mt,removeNodeConnectionsById:Nt,removeNodeExecutionDataById:Pt,setNodes:rt,setConnections:it,findNodeByPartialId:we,getPartialIdForNode:Te,setSelectedTriggerNodeName:Ft,fetchLastSuccessfulExecution:Re,lastSuccessfulExecution:g,getWebhookUrl:It,canViewWorkflows:ue,defaults:CN,private:{setActiveExecutionId:he}}});function EN(e,t){e===`system`?(t??window).document.body.removeAttribute(`data-theme`):(t??window).document.body.setAttribute?.(`data-theme`,e)}function DN(e){return!!e&&[`light`,`dark`].includes(e)}function ON(){let e=kN(`theme`)??localStorage.getItem(`N8N_THEME`);return DN(e)?e:null}function kN(e){return new URLSearchParams(window.location.search).get(e)}var AN=new Map,jN=new Set;function MN(){return new Map(AN)}function NN(){jN.forEach(e=>e(MN()))}function PN(e){if(AN.has(e.key)){console.warn(`Modal with key "${e.key}" is already registered. Skipping.`);return}AN.set(e.key,e),NN()}function FN(e){return jN.add(e),()=>{jN.delete(e)}}var IN=e(ha(),1),LN=`system`;try{let e=ON();e!==null&&(LN=e,EN(e))}catch{}const RN=Da(qo.UI,()=>{let e=IO(),t=m([]),n=m(null),r=Ce(Ft,LN,{writeDefaults:!1,serializer:{read:e=>DN(e)?e:LN,write:IN.default}}),i=m({...Object.fromEntries([Qr,oa,Ji,jr,Sd,Bt,Nl,Ml,hd,gd,dn,ir,Ir,Bi,sr,Pd,ai,xn,Ad,jd,Md,Zt,Gn,Yn,_d,hr,da,Nd,$t,ui,_n,Qn,bd,br,tn,Tt,ur,mn,Hn,pr,ra,Kr].map(e=>[e,{open:!1}])),[jl]:{open:!1,activeId:null},[Fd]:{open:!1,mode:``,activeId:null},[Nn]:{open:!1,data:{curlCommands:{}}},[kt]:{open:!1,data:void 0},[Bd]:{open:!1,data:{activeId:null,mode:``}},[xd]:{open:!1,mode:``,activeId:null,showAuthSelector:!1},[Dd]:{open:!1,activeId:null,data:{workflowListEventBus:void 0,content:{workflowCount:0,subFolderCount:0}}},[Od]:{open:!1,activeId:null,data:{workflowListEventBus:void 0}},[vd]:{open:!1,data:{customHeading:void 0}},[nr]:{open:!1,data:{triggerType:``,workflowName:``,workflowId:``,webhookPath:``,node:``}},[Gt]:{open:!1,data:{nodeName:void 0}},[Pt]:{open:!1,data:{}},[ui]:{open:!1,data:{url:``}},[ki]:{open:!1,data:{workflowName:``}},[sn]:{open:!1,data:{articleId:void 0}},[ea]:{open:!1,data:{nodeName:``}}}),a=m([]),o=Ce(`sidebar.collapsed`,null,{serializer:{read:e=>e===`null`?null:e===`true`,write:e=>String(e)}}),s=m(``),c=m(!1),l=m(!1),u=m(0),d=m(null),f=m([0,0]),p=m(!1),h=m(!1),g=m({}),_=m(!1),v=m(!1),y=m({overview:{},project:{},shared:{}}),b=m({}),x=m({width:0,height:0}),S=m(),C=m(null),w=m(),T=m(),D=Al(),O=TN(),k=E(()=>O.workflowId?Z(X(O.workflowId)):void 0),A=we(`(prefers-color-scheme: dark)`),j=E(()=>A.value?`dark`:`light`),M=E(()=>r.value===`system`?j.value:r.value),N=E(()=>{let e=D.deploymentType,t=``;return e===`cloud`&&(t=`.cloud`),{feature:{unavailable:{title:`contextual.feature.unavailable.title${t}`}},credentials:{sharing:{unavailable:{title:`contextual.credentials.sharing.unavailable.title${t}`,description:`contextual.credentials.sharing.unavailable.description${t}`,action:`contextual.credentials.sharing.unavailable.action${t}`,button:`contextual.credentials.sharing.unavailable.button${t}`}}},workflows:{sharing:{title:`contextual.workflows.sharing.title`,unavailable:{title:`contextual.workflows.sharing.unavailable.title${t}`,description:{modal:`contextual.workflows.sharing.unavailable.description.modal${t}`,tooltip:`contextual.workflows.sharing.unavailable.description.tooltip${t}`},action:`contextual.workflows.sharing.unavailable.action${t}`,button:`contextual.workflows.sharing.unavailable.button${t}`}}},variables:{unavailable:{title:`contextual.variables.unavailable.title${t}`,description:`contextual.variables.unavailable.description`,action:`contextual.variables.unavailable.action${t}`,button:`contextual.variables.unavailable.button${t}`}},users:{settings:{unavailable:{title:`contextual.users.settings.unavailable.title${t}`,description:`contextual.users.settings.unavailable.description${t}`,button:`contextual.users.settings.unavailable.button${t}`}}}}}),P=E(()=>w.value?k.value?.getNodeById(w.value)??null:null),F=E(()=>Object.keys(i.value).reduce((e,t)=>(e[t]=t===a.value[0],e),{})),I=E(()=>a.value.map(e=>e)),L=E(()=>{let e=[];return Object.entries(b.value).forEach(([t,n])=>{D.isModuleActive(t)&&e.push(...n.map(e=>({available:!0,...e})))}),e}),R=E(()=>![pi.WORKFLOW.toString(),pi.NEW_WORKFLOW.toString(),pi.EXECUTION_DEBUG.toString()].includes(s.value)),z=E(()=>t.value.reduce((e,t)=>(e[t]=!0,e),{})),B=E(()=>{let e=getComputedStyle(document.body);return Number(e.getPropertyValue(`--header--height`))}),V=E(()=>a.value.length>0),H=E(()=>_.value),U=e=>{r.value=e,EN(e)},W=(e,t)=>{i.value[e]={...i.value[e],mode:t}},ee=(e,t)=>{i.value[e]={...i.value[e],activeId:t}},te=(e,t)=>{i.value[e]={...i.value[e],showAuthSelector:t}},ne=e=>{i.value[e.name]={...i.value[e.name],data:e.data}},G=e=>{i.value[e]={...i.value[e],open:!0},a.value=[e].concat(a.value)},re=e=>{ne(e),G(e.name)},ie=e=>{i.value[e]={...i.value[e],open:!1},a.value=a.value.filter(t=>e!==t)},ae=e=>{ee(jl,e),G(jl)},oe=e=>{ee(xd,e),W(xd,`edit`),G(xd)},se=(e,t=!1,n=!1)=>{ee(xd,e),te(xd,t),i.value[xd]={...i.value[xd],forceManualMode:n},W(xd,`new`),G(xd)},ce=e=>{W(Fd,zd.UNINSTALL),ee(Fd,e),G(Fd)},le=(t,n)=>{e.track(`User clicked to open community node update modal`,{source:n,package_name:t}),W(Fd,zd.UPDATE),ee(Fd,t),G(Fd)},ue=(e,t,n)=>{ee(Dd,e),re({name:Dd,data:{workflowListEventBus:t,content:n}})},de=(e,t,n)=>{re({name:Od,data:{resourceType:e,resource:t,workflowListEventBus:n}})},fe=e=>{t.value.includes(e)||t.value.push(e)},pe=e=>{let n=t.value.indexOf(e);n!==-1&&t.value.splice(n,1)},me=()=>{o.value=!o.value,e.track(`User toggled sidebar`,{expanded:!o.value})},he=(e,t)=>{g.value[e]=t};function ge(){S.value=void 0,C.value=null,w.value=void 0,T.value=void 0}let _e=(e,t,n)=>{if(!y.value[e])throw Error(`Invalid page type: ${e}`);y.value[e][t]=n},ve=(e,t)=>{b.value[e]=t},ye=e=>{_.value=e},be=(e=`workflow`)=>{u.value++,c.value=!0,e===`workflow`&&(l.value=!0)},xe=()=>{c.value=!1,l.value=!1},Se=(e,t)=>{i.value[e]||(i.value[e]=t||{open:!1})},Te=e=>{i.value[e]&&(i.value[e].open&&ie(e),delete i.value[e])},K=()=>{MN().forEach((e,t)=>{Se(t,e.initialState)})},Ee=FN(e=>{e.forEach((e,t)=>{i.value[t]||Se(t,e.initialState)})});return{appGridDimensions:x,settingsSidebarItems:L,appliedTheme:M,contextBasedTranslationKeys:N,isModalActiveById:F,isReadOnlyView:R,isActionActive:z,activeActions:t,headerHeight:B,dirtyStateSetCount:E(()=>u.value),stateIsDirty:E(()=>c.value),hasUnsavedWorkflowChanges:E(()=>l.value),isBlankRedirect:v,activeCredentialType:n,lastSelectedNode:d,lastInteractedWithNodeConnection:S,lastInteractedWithNodeHandle:C,lastInteractedWithNodeId:w,lastInteractedWithNode:P,lastCancelledConnectionPosition:T,nodeViewOffsetPosition:f,nodeViewInitialized:p,addFirstStepOnLoad:h,sidebarMenuCollapsed:o,theme:E(()=>r.value),modalsById:i,currentView:s,isAnyModalOpen:V,pendingNotificationsForViews:g,activeModals:I,isProcessingExecutionResults:H,setTheme:U,setModalData:ne,openModalWithData:re,openModal:G,closeModal:ie,openDeleteUserModal:ae,openExistingCredential:oe,openNewCredential:se,openCommunityPackageUninstallConfirmModal:ce,openCommunityPackageUpdateConfirmModal:le,addActiveAction:fe,removeActiveAction:pe,toggleSidebarMenuCollapse:me,setNotificationsForView:he,resetLastInteractedWith:ge,setProcessingExecutionResults:ye,markStateDirty:be,markStateClean:xe,openDeleteFolderModal:ue,openMoveToFolderModal:de,moduleTabs:y,registerCustomTabs:_e,registerSettingsPages:ve,registerModal:Se,unregisterModal:Te,initializeModalsFromRegistry:K,cleanup:()=>{Ee()}}}),zN=e=>{let{store:t,onModalClosed:n,onModalOpened:r}=e,i=[`openModal`,`openModalWithData`,`closeModal`];return t.$onAction(e=>{let{name:t,after:a,args:o}=e;a(()=>{if(i.includes(t))switch(t){case`openModal`:{let e=o[0];r?.(e);break}case`openModalWithData`:{let{name:e}=o[0]??{};r?.(e);break}case`closeModal`:{let e=o[0];n?.(e);break}}})})};async function BN(e,t){return await J(e,`POST`,`/invitations`,t)}async function VN(e,t){if(t.token)return await J(e,`POST`,`/invitations/accept`,t);if(!t.inviteeId)throw Error(`inviteeId is required when not using token`);let{inviteeId:n,...r}=t;return await J(e,`POST`,`/invitations/${n}/accept`,r)}var HN=`https://api.n8n.io/api`,UN=`/accounts/onboarding`;async function WN(e,t,n,r){return await Aa(HN,UN,{instance_id:e,user_id:`${e}#${t.id}`,email:n,agree:r,agree_updates:!0})}var GN=e=>!!e?.isPending,KN=e=>e?.role===ei.Owner,qN=e=>KN(e)&&GN(e),JN=e=>e?.role===ei.Admin;const YN=Da(qo.USERS,()=>{let e=m(!1),t=m(null),n=m({}),r=m(-1),i=m([]),a=m([]),o=RN(),s=Y(),c=Al(),l=E(()=>Object.values(n.value)),u=E(()=>t.value?n.value[t.value]:null),d=E(()=>!!u.value?.settings?.userActivated),f=E(()=>qN(u.value)),p=E(()=>KN(u.value)),h=E(()=>JN(u.value)),g=E(()=>p.value||h.value),_=E(()=>u.value?.mfaEnabled??!1),v=E(()=>u.value?.role??`default`),y=E(()=>u.value?.settings?.userClaimedAiCredits),b=E(()=>!!u.value?.settings?.easyAIWorkflowOnboarded),x=E(()=>p.value),S=()=>{u.value?.settings&&(u.value.settings.easyAIWorkflowOnboarded=!0)},C=e=>!!u.value?.settings?.dismissedCallouts?.[e],w=e=>{u.value?.settings&&(u.value?.settings?.dismissedCallouts||(u.value.settings.dismissedCallouts={}),u.value.settings.dismissedCallouts[e]=!0)},T=E(()=>{let e=u.value;if(!e)return[];let t=e.personalizationAnswers;return t?dd(t):[]}),D=E(()=>r.value===-1||r.value>l.value.length),O=e=>{e.forEach(e=>{let t={...n.value[e.id]||{},...e},r={...t,fullName:e.firstName?`${t.firstName} ${t.lastName||``}`:void 0,isDefaultUser:qN(t),isPendingUser:GN(t)};n.value={...n.value,[r.id]:r}})},k=async e=>{O([e]),t.value=e.id;for(let t of i.value)try{await t(e)}catch(e){console.error(`Error executing login hook:`,e)}},A=async()=>{let e=await il(s.restApiContext);e&&await k(e)},j=async()=>{if(!e.value)try{await A(),e.value=!0}catch{}},M=()=>{t.value=null},N=e=>{let{[e]:t,...r}=n.value;n.value=r},P=e=>{u.value&&(n.value={...n.value,[u.value.id]:{...u.value,personalizationAnswers:e}})},F=async e=>{let t=await al(s.restApiContext,e);t&&await k(t)},I=e=>{i.value.push(e)},L=e=>{a.value.push(e)},R=async()=>{await ol(s.restApiContext),M();for(let e of a.value)try{await e()}catch(e){console.error(`Error executing logout hook:`,e)}localStorage.removeItem(xa)},z=async e=>{let t=await sl(s.restApiContext,e);t&&(await k(t),c.stopShowingSetupPage())},B=async e=>await cl(s.restApiContext,e),V=async e=>{let t=await VN(s.restApiContext,e);t&&await k(t)},H=async e=>{await ll(s.restApiContext,e)},U=async e=>{await ul(s.restApiContext,e)},W=async e=>{await dl(s.restApiContext,e)},ee=async e=>{let t=await fl(s.restApiContext,e);return O([t]),t},te=async e=>{if(u.value)return await ee({email:u.value.email,...e})},ne=async e=>{let t=await pl(s.restApiContext,e);u.value&&(u.value.settings=t,O([u.value]))},G=async(e,t)=>{await ml(s.restApiContext,e,t)},re=async e=>{await hl(s.restApiContext,e)},ie=async e=>{await gl(s.restApiContext,e),N(e.id)},ae=async({take:e,skip:t,filter:n}={})=>{if(!jg([`rbac`],{rbac:{scope:`user:list`}}))return;let{items:r}=await _l(s.restApiContext,{take:e??50,skip:t??0,filter:n});O(r)};return{initialized:e,currentUserId:t,usersById:n,allUsers:l,currentUser:u,userActivated:d,isDefaultUser:f,isInstanceOwner:p,isAdmin:h,isAdminOrOwner:g,mfaEnabled:_,globalRoleName:v,personalizedNodeTypes:T,userClaimedAiCredits:y,isEasyAIWorkflowOnboardingDone:b,canUserUpdateVersion:x,usersLimitNotReached:D,addUsers:O,loginWithCookie:A,initialize:j,setPersonalizationAnswers:P,loginWithCreds:F,logout:R,registerLoginHook:I,registerLogoutHook:L,createOwner:z,validateSignupToken:B,acceptInvitation:V,sendForgotPasswordEmail:H,validatePasswordToken:U,changePassword:W,updateUser:ee,updateUserName:te,updateUserSettings:ne,updateOtherUserSettings:G,updateCurrentUserPassword:re,deleteUser:ie,fetchUsers:ae,inviteUsers:async e=>{let t=await BN(s.restApiContext,e);return O(t.map(({user:e})=>({isPending:!0,...e}))),t},reinviteUser:async({email:e,role:t})=>{let n=await BN(s.restApiContext,[{email:e,role:t}]);if(!n[0].user.emailSent)throw Error(n[0].error)},getUserPasswordResetLink:async e=>await yl(s.restApiContext,e),generateInviteLink:async e=>await vl(s.restApiContext,e),submitPersonalizationSurvey:async e=>{await bl(s.restApiContext,e),P(e)},showPersonalizationSurvey:async()=>{c.isPersonalizationSurveyEnabled&&u.value&&!u.value.personalizationAnswers&&o.openModal(Nl)},fetchMfaQR:async()=>await mc(s.restApiContext),verifyMfaCode:async e=>await gc(s.restApiContext,e),enableMfa:async e=>{await hc(s.restApiContext,e),u.value&&(u.value.mfaEnabled=!0)},disableMfa:async e=>{await _c(s.restApiContext,e),u.value&&(u.value.mfaEnabled=!1)},updateEnforceMfa:async e=>{await vc(s.restApiContext,e),c.isMFAEnforced=e},canEnableMFA:async()=>await pc(s.restApiContext),sendConfirmationEmail:async()=>{await gs(s.restApiContext)},updateGlobalRole:async({id:e,newRoleName:t})=>{await xl(s.restApiContext,{id:e,newRoleName:t}),await ae({filter:{ids:[e]}})},setEasyAIWorkflowOnboardingDone:S,isCalloutDismissed:C,setCalloutDismissed:w,submitContactEmail:async(e,t)=>u.value?await WN(s.instanceId,u.value,e??u.value.email,t):null,setUserQuota:e=>{e!==void 0&&(r.value=e)},usersList:je(async e=>await _l(s.restApiContext,e),{count:0,items:[]},{immediate:!1,resetOnExecute:!1})}});export{Mj as $,vd as $a,Ss as $c,Rp as $i,RE as $n,yu as $o,Fm as $r,Bc as $s,LO as $t,CM as A,Kd as Aa,Ls as Ac,sm as Ai,YE as An,Ll as Ao,ug as Ar,Al as As,Ek as At,cM as B,Md as Ba,As as Bc,qp as Bi,pD as Bn,pu as Bo,ch as Br,Qc as Bs,WO as Bt,tN as C,ff as Ca,$s as Cc,mm as Ci,ID as Cn,Ru as Co,Sg as Cr,ed as Cs,Wk as Ct,bM as D,ef as Da,Is as Dc,xm as Di,wD as Dn,Gu as Do,hg as Dr,tu as Ds,Nk as Dt,FM as E,nf as Ea,Gs as Ec,bm as Ei,jD as En,Wu as Eo,vg as Er,Fl as Es,Uk as Et,_M as F,Pd as Fa,Ks as Fc,Ip as Fi,xD as Fn,eu as Fo,Wh as Fr,el as Fs,vk as Ft,Zj as G,Ed as Ga,Es as Gc,rm as Gi,mD as Gn,gu as Go,th as Gr,Wc as Gs,HO as Gt,oM as H,Dd as Ha,Ns as Hc,Yp as Hi,lD as Hn,du as Ho,ah as Hr,Yc as Hs,$O as Ht,fM as I,zd as Ia,Us as Ic,Fp as Ii,oD as In,ql as Io,Eh as Ir,$c as Is,_k as It,eM as J,Od as Ja,Os as Jc,Bp as Ji,Qw as Jn,Zl as Jo,Ym as Jr,Jc as Js,JO as Jt,Xj as K,Td as Ka,Ts as Kc,Pp as Ki,bD as Kn,Jl as Ko,eh as Kr,Xc as Ks,XO as Kt,dM as L,Rd as La,Ms as Lc,Gp as Li,gD as Ln,Xl as Lo,Ch as Lr,rl as Ls,gk as Lt,wM as M,Id as Ma,zs as Mc,im as Mi,QE as Mn,Kl as Mo,Yh as Mr,Cl as Ms,xk as Mt,pM as N,Ld as Na,Ws as Nc,zp as Ni,KE as Nn,Ql as No,Jh as Nr,_l as Ns,bk as Nt,yM as O,Vd as Oa,Vs as Oc,um as Oi,XE as On,Rl as Oo,fg as Or,zl as Os,Mk as Ot,uM as P,Fd as Pa,Hs as Pc,em as Pi,ZE as Pn,Ml as Po,Kh as Pr,pl as Ps,yk as Pt,Lj as Q,yd as Qa,xs as Qc,tm as Qi,WE as Qn,ru as Qo,Km as Qr,zc as Qs,nk as Qt,xM as R,Nd as Ra,Fs as Rc,Mp as Ri,vD as Rn,mu as Ro,sh as Rr,tl as Rs,KO as Rt,lN as S,mf as Sa,oc as Sc,ym as Si,WD as Sn,Lu as So,Cg as Sr,ld as Ss,rA as St,qM as T,_f as Ta,Zs as Tc,gm as Ti,BD as Tn,Uu as To,bg as Tr,cd as Ts,Lk as Tt,aM as U,kd as Ua,Ds as Uc,Wp as Ui,_D as Un,fu as Uo,nh as Ur,Kc as Us,tk as Ut,TM as V,Ad as Va,js as Vc,Hp as Vi,uD as Vn,_u as Vo,bh as Vr,Zc as Vs,qO as Vt,iM as W,wd as Wa,ks as Wc,Kp as Wi,iD as Wn,vu as Wo,rh as Wr,Gc as Ws,ek as Wt,zj as X,Sd as Xa,ys as Xc,nm as Xi,Q as Xn,Ul as Xo,Hm as Xr,Uc as Xs,GO as Xt,$j as Y,xd as Ya,Cs as Yc,Jp as Yi,tC as Yn,Qu as Yo,jm as Yr,Hc as Ys,YO as Yt,Rj as Z,bd as Za,bs as Zc,Vp as Zi,GE as Zn,Bl as Zo,Nm as Zr,Ic as Zs,QO as Zt,oN as _,bf as _a,rc as _c,Cm as _i,za as _l,nO as _n,jl as _o,kg as _r,rd as _s,tA as _t,PN as a,Z as aa,Pc as ac,qm as ai,fs as al,AO as an,Cu as ao,VC as ar,ju as as,VA as at,cN as b,vf as ba,qs as bc,pm as bi,JD as bn,Vu as bo,wg as br,ad as bs,Gk as bt,bN as c,ap as ca,fc as cc,Lm as ci,Vo as cl,hO as cn,Hl as co,ww as cr,ku as cs,OA as ct,SN as d,lf as da,uc as dc,Gm as di,Ko as dl,cO as dn,ou as do,YC as dr,Eu as ds,lA as dt,$p as ea,Lc as ec,Bm as ei,vs as el,IO as en,_d as eo,VT as er,Nl as es,Sj as et,vN as f,gf as fa,ic as fc,Rm as fi,Uo as fl,sO as fn,au as fo,Fg as fr,Nu as fs,uA as ft,XM as g,Sf as ga,Qs as gc,Em as gi,qa as gl,rO as gn,Pl as go,jg as gr,nd as gs,nA as gt,eN as h,df as ha,tc as hc,Dm as hi,io as hl,iO as hn,uu as ho,Ng as hr,td as hs,iA as ht,MN as i,Op as ia,Nc as ic,Vm as ii,cs as il,jO as in,xu as io,RC as ir,Pu as is,HA as it,EM as j,Bd as ja,Rs as jc,om as ji,qE as jn,$l as jo,Xh as jr,Sl as js,Dk as jt,lM as k,Xd as ka,Bs as kc,am as ki,JE as kn,Il as ko,dg as kr,nu as ks,jk as kt,yN as l,Vf as la,dc as lc,km as li,Ho as ll,fO as ln,lu as lo,oT as lr,Mu as ls,gA as lt,$M as m,uf as ma,sc as mc,wm as mi,So as ml,aO as mn,iu as mo,Lg as mr,Au as ms,pA as mt,zN as n,X as na,Fc as nc,Pm as ni,ds as nl,PO as nn,md as no,vC as nr,Wl as ns,ej as nt,FN as o,vp as oa,Mc as oc,Mm as oi,ss as ol,kO as on,wu as oo,zC as or,Du as os,AA as ot,hN as p,hf as pa,Xs as pc,Zm as pi,zo as pl,oO as pn,cu as po,Pg as pr,Ou as ps,mA as pt,tM as q,Cd as qa,ws as qc,Lp as qi,$S as qn,Yl as qo,$m as qr,qc as qs,ZO as qt,RN as r,Dp as ra,Rc as rc,Jm as ri,ls as rl,NO as rn,hd as ro,KT as rr,Gl as rs,$A as rt,TN as s,op as sa,cc as sc,zm as si,qo as sl,_O as sn,Su as so,eE as sr,Tu as ss,MA as st,YN as t,Zp as ta,Vc as tc,Xm as ti,us as tl,FO as tn,gd as to,OT as tr,Vl as ts,sj as tt,xN as u,Lf as ua,lc as uc,Im as ui,Go as ul,lO as un,su as uo,dE as ur,Fu as us,CA as ut,YM as v,cf as va,Ys as vc,_m as vi,Ra as vl,$D as vn,zu as vo,Og as vr,id as vs,Yk as vt,JM as w,pf as wa,ac as wc,vm as wi,ND as wn,Hu as wo,xg as wr,sd as ws,Fk as wt,aN as x,xf as xa,ec as xc,fm as xi,qD as xn,Iu as xo,Tg as xr,$u as xs,aA as xt,sN as y,yf as ya,Js as yc,hm as yi,La as yl,YD as yn,Bu as yo,Eg as yr,od as ys,Kk as yt,gM as z,jd as za,Ps as zc,Np as zi,hD as zn,hu as zo,oh as zr,nl as zs,UO as zt};
//# sourceMappingURL=users.store-BHWXXawf.js.map